👋 Hello, I am Seung-ho Ham

🧑🏻‍💻 A Developers who create code that changes the world

카테고리 없음

[암호화] 단방향 암호화

Potato_H 2021. 5. 3. 19:51
반응형

html 에디터 사용 중 에디터 도구 기능에 MD5와 SHA-256기능이 있었는데 무슨 용도이고 어떻게 사용하는 것인지 궁금하여 이 둘에 대해서 알아보게 되었다.

 

MD5(Message Digest)와 SHA-256(Secure Hash Algorithm)은 암호화를 하는 알고리즘인데 그 중에서도 암호화는 가능하지만 복호화는 불가능한 단방향 알고리즘 이다. 이 알고리즘들을 해시(hash) 알고리즘 이라고 부른다.

 

먼저 MD5의 원문 입력란에 숫자 1을 입력해보았다.

MD5 알고리즘으로 숫자 1을 암호화 한 결과값은 c4ca4238a0b923820dcc509a6f75849b 이 나왔다.

근데 1다음 숫자인 2를 암호화했을 때는 전혀 다른 값인 c81e728d9d4c2f636f067f89cc14862c 가 나왔다.

1 두개를 입력했을 때도 전혀 다른 값으로 암호화가 되었다.

아무리 비슷한 값이나 간단한 값을 넣어도 완전 같은 값이 아니면 128비트의 전혀 다른 값으로 암호화하여 준다는 것이다. 즉, 암호화 된 값으로 원문을 예측할 수 없다는 것이 된다.

 

이 같은 해시함수들은 낮은 확률로 원문은 다르지만 결과 값이 같아버리는 충돌현상이 일어나게 되는데 충돌 현상이 적어야 좋은 해시 함수로 많이 쓰인다.

 

1996년 MD5 암호화 알고리즘은 전문가들에 의해 결함이 발견되고 다른 암호화 알고리즘 사용을 권장하게 된다.

(MD5 알고리즘은 안전 문제로 무결성 검증용 으로만 사용하게 된다.)

 

이후 사용하게된 알고리즘은 sha(secure hash algorithm)인데 그 중에서 sha-256을 비교적 많이 사용한다.

 

sha-256은 MD5 알고리즘과 마찬가지로 단방향 암호화 알고리즘인데 MD5는 128비트로 암호화 시켜주었다먼 sha-256은 256비트로 암호화를 시켜준다. 아무리 충돌 사례를 찾으려해도 매우 오랜시간이 걸린다는 계산이 나오 때문에 현재로선 비교적 안전한 알고리즘이 가장 많이 사용하고 있다.

 

단방향 알고리즘은 암호화만 되기 때문에 비밀번호 같은 개인정보를 보호할 때 사용한다. 비밀번호를 잊어버렸을 때 비밀번호를 찾는 것이 아니라 변경할 수 밖에 없는 이유가 암호화된 값을 복호화 할 수 없기 때문일 것이다.