본문 바로가기

Programming

암호화 알고리즘(MD5, SHA)

 

회원가입 기능을 구현할 때 사용자의 PW를 평문으로 저장한다면 보안상 큰 문제가 발생한다. 이를 막기 위해서는 사용자의 PW를 암호화해 저장해야만 한다.

 

오늘은 프로그램을 짤 때 필수적으로 사용되는 암호화 알고리즘에 대해 간단히 알아보고자 한다.

 


단방향 해시 함수

 

 

해시 함수는 입력 값을 문자와 숫자를 임의로 나열한 일정한 길이의 다이제스트(Digest)형태로 변환시킨다. 여기서 다이제스트란, 해시함수를 통해 생성된 해시 값을 의미한다. 해시 함수는 단방향 알고리즘 이므로 암호화는 가능하지만 복호화는 불가능하여 원본을 알 수 없다. 이와 같은 이유로 패스워드를 바로 데이터베이스에 저장하지 않고 단방향 암호화된 다이제스트를 저장하는 방식이 보편화되었다. 대표적인 단방향 해시 함수로는 MD5와 SHA가 있다.

 


MD5(Deprecated)

 

MD5(Message-Digest algorithm 5)는 128비트의 해시 값을 생성하는 해시 함수이다. 주로 프로그램이나 파일이 원본 그대로인지를 확인하는 무결성 검사 등에 사용된다. 1991년에 이전에 사용되던 MD4를 대체하기 위해 만들어졌다.

 

그러나 1996년에 설계상 결함을 발견되어 SHA-1과 같은 다른 알고리즘이 권장되기 시작했고 2004년에는 심각한 결함이 발견되었다. 현재는 MD5 알고리즘을 보안 관련 용도로 쓰는 것은 권장하지 않는다. 하지만 앞서 언급했듯 파일의 무결성 검사에서는 유용하게 사용된다.

 


SHA

 

SHA(Secure Hash Algorithm) 함수들은 서로 관련된 암호학적 해시 함수들의 모음이다. 이 함수들은 미국 국가안보국(NSA)이 1993년에 처음으로 설계했으며 미국 국가 표준으로 지정되었다. 종류는 크게 SHA-0, SHA-1, SHA-2, SHA-3 로 나뉜다. SHA-0과 SHA-1은 160bit 크기의 해시 값을 도출하는 반면 SHA-2와 SHA-3 은 사용하는 알고리즘에 따라 다른 크기의 해시 값을 도출한다.  

우리가 일반적으로 알고 있는 SHA-256, SHA-512 알고리즘은 SHA-2 에 속한다.

 

알고리즘 해시 값 크기(bit)
MD5 128
SHA-0 160
SHA-1 160
SHA-2 SHA-224 224
SHA-256 256
SHA-384 384
SHA-512 512
SHA-512/224 224
SHA-215/256 256
SHA-3 SHA3-224 224
SHA3-256 256
SHA3-384 384
SHA3-512 512
SHAKE128 가변
SHAKE128 가변

 

SHA-1은 한때 TLS, SSL, PGP, SSH, IPSec과 같이 여러 방면에서 사용되었으나 현재는 공격으로부터 안전하지 않은 것으로 판명되어 폐기 수순을 밟고 있다. (모든 주요 웹 브라우저 벤더들은 2017년 SHA-1 SSL 인증서의 수용을 중단했다.)

 

현재는 보안상 SHA-256 이상을 권장하는 경우가 많다.

 


출처 : 
https://ko.wikipedia.org/wiki/MD5
https://velog.io/@nameunzz/%EB%8B%A8%EB%B0%A9%ED%96%A5-%ED%95%B4%EC%8B%9C-%ED%95%A8%EC%88%98
https://bimmm.tistory.com/55
https://ko.wikipedia.org/wiki/SHA
https://ko.wikipedia.org/wiki/SHA-1
https://www.itworld.co.kr/news/108321
https://www.sharedit.co.kr/posts/21620

'Programming' 카테고리의 다른 글

Forward Proxy, Reverse Proxy  (0) 2024.07.12
CSRF(Cross-Site Request Forgery)  (0) 2024.07.11
XSS(Cross-Site Scripting)  (0) 2024.07.11
CORS(Cross Origin Resource Sharing)  (0) 2024.07.10
가상화(Virtualization)  (0) 2024.02.25