본문 바로가기
야미스터디/Backend

hashsum

by 의정부핵꿀밤 2021. 4. 15.
728x90

산학 연계 client의 요구사항에 다음과 같은 항목이 있다

 

"다운받은 파일의 hashsum (md5, sha128, sha256)을 서버의 값과 비교해서 변조됐는지 확인 가능해야 한다."

 

이는 system 분류의 중요도는 中인 요구사항이다.

 

그럼 hashsum에 대해 리서치를 해보자!

먼저 요구사항에 md5, sha128, sha256 이 3가지가 제시되었는데 여기서 뭘 사용할지 골라보도록 하자ㅏ~

------------------------------------------------------------------------------------------------------------------------

 

암호화 Algorithm은 크게 3가지로 나뉜다. 

1. Hashing : 복호화 불가능. 단방향. 속도가 빠름 
2. Symmetric : 복호화 가능 (private key 사용) 
3. Asymmetric : 복호화 가능 (private, public key 사용) 

1. Hashing Algorithm 

종류 : MD5, SHA1, SHA256, SHA384, SHA512 등 Hash 를 계산할 때 쓰이는 종류이다. 
숫자가 클 수록 Hash 값이 복잡해지므로, 더 안전한 암호화 방법이 된다. 
예전에는 MD5, SHA1 등 16byte 크기의 Hash 값을 사용했지만, 요즘은 SHA512 등 Hash 값 크기가 큰 알고리즘을 추천한다. 

비밀번호등 일치 여부만을 확인하기 위해서 (복호화 불필요) 사용한다. 
전에도 밝혔지만 아주 큰 Data의 Identity 를 나타내는 값으로 쓸 수 있다. 

2. Symmetric Algorithm 

종류 : DES, TripleDES, Rijndael, RC2 
대칭형 암호화를 수행하고, 비밀번호 (private key)를 추가할 수 있다. 
비밀번호를 사용하면 복호화가 가능하므로, 내부통신 또는 같은 도메인에서 사용한다. 
Rijndael이나 RC2를 추천한다. 

3. Asymmetric Algorithm 

종류 : DSA, RSA (요즘은 RSA가 대세) 
공인인증서에서 사용하는 Algorithm으로, private key 뿐 아니라 public key도 있어야 한다. 외부 통신 등에 사용한다.

 

(여기서 나는 hashing algorithm을 사용하면 될 것 같다!)

 

MD5 (Message-Digest algorithm 5) 

MD5는 메세지 축약 알고리즘으로써, 파일 무결성 검사용도로 많이 쓰이고 있다. 

128bit 의 해쉬를 제공하며, 암호와와 복호화를 통하여 보안용도로도 많이 쓰인다. 

하지만 암호화 결함이 발견되어 보안 용도로 사용할때에는 SHA와 같은 다른 알고리즘을 사용하는것이 권장되고 있다고 한다. 

 

SHA (Sechre Hash Standard) 

SHA(Secure Hash Algorithm, 안전한 해시 알고리즘) 함수들은 서로 관련된 암호학적 해시 함수들의 모음이다. 

여러 종류가 존재하며 그중 SHA-1은 SHA 함수들 중 가장 많이 쓰이며, TLS, SSL, PGP, SSH, IPSec 등 많은 보안 프로토콜과 프로그램에서 사용되고 있다. SHA-1은 이전에 널리 사용되던 MD5를 대신해서 쓰이기도 한다. 혹자는 좀 더 중요한 기술에는 SHA-256이나 그 이상의 알고리즘을 사용할 것을 권장한다.

 

(출처 : js2prince.tistory.com/entry/%EC%95%94%ED%98%B8%ED%99%94-MD5-vs-SHA256)

 

 

 

 --------------------------------------------------------------------------------------------------------------------------------

 

현재는 파이썬을 사용하여 해시값을 구하고 있다. 파이썬에는 해시값을 구해주는 라이브러리(import hashlib)가 제공되기 때문에 이를 사용하여 sha-256으로 확인하고 있다!

728x90

댓글