개발관련/암호화 2009. 12. 31. 15:31

일반적인 암호화 알고리즘은 암호화된 데이터는 동일한 KEY로 복호화가 가능하도록 설계되어 있다.

해쉬(Hash)알고리즘은 암호화된 데이터를 복호화를 하지 못하게 하기 위하여 만들어졌다. 암복호화라는 양방향 아니라 암호화만 가능하기 때문에 단방향 암호화 알고리즘이라고 부르기도 한다.

해쉬 알고리즘은 용도는 주로 데이터의 무결성을 검증하는데 유용하게 사용되는데 데이터의 무결성이란 데이터가 정보 유통과정에서 위변조가 없었다는 것을 증명하는 것이다.

일상 생활에서 A B과 중요한 거래가 있을 경우 서명을 비록한 갖은 방법으로 그 계약서의 내용을 바꿀 수 없도록 하는데 해쉬의 특성은 데이터가 단 1byte가 바뀌더라고 그 값이 달리 나타나기 때문에 온라인상의 문서일 경우 이 문서가 바꾸지 않았다는 것을 증명하는데 그 문서 전체를 해쉬한 값을 AB가 서로 보관만 하고 있으면 계약서 사본을 별도로 카피아여 보관하지 않아도 된다.

또한 복호화할 필요가 없는 데이터의 암호화에 활용되기도 하는데 예를 들면 고객비밀번호와 같은 중요 정보는 그 고객만 알고 있으면 되고 설사 고객이 그 정보를 잊어버렸다고 하더라고 본인 확인 과정을 거쳐 다시 만들면 되기 때문에 복호화가 필요 없는 해쉬 알고리즘을 이용하여 안전하게 보관하여 활용하게 된다.

해쉬 알고리즘은 메시지 축약(Message Digest)이라고 불리기도 하는데 1바이트를 암호화하나 수백 수천 바이트를 암호화하는 항상 알고리즘이 지정한 크기로 출력된다. 일반적으로 많이 사용하는 SHA-1 알고리즘은 160비트(20바이트) 그리고 MD5128비트(16바이트)로 출력된다.


posted by 제스트
: