포럼
암호에 관한 이해
2012.04.03 17:33
암호에 관한 오해를 하시는 분들이 있으신 것 같아서 암호 방식에 대해서 간략히 말씀드리고자 합니다.
암호화 기술에는 여러가지가 있습니다.
편의상 크게 둘로 나누면 암호문을 역으로 풀어서 원문을 찾을 수 있도록 설계가 된 것과 그렇지 않는 것이 있습니다.
전자의 경우는 해독을 위해서 암호문 속에 본문이 완전하게 포함되어 있지만 후자의 경우는 없습니다.
역으로 풀 수있는 암호화는 키를 이용하여 해독이 가능하며, A 지점에서 B 지점으로 평문을 안전하게
전달하는데 사용합니다.
역으로 풀 수없는 암호화는 해독을 위한 키가 없으며, 보통 해쉬함수라하여 평문을 해독하는데 목적이 있지않고
원문의 훼손 여부를 확인하거나 사용자 비밀번호를 안전하게 저장하는데 많이 이용되고 있습니다.
원문의 훼손 방지를 위해 보내는 측에서 평문을 축약하여 일정 길이(64비트, 128비트 등)의 데이터(해쉬문)를 만든 후
이를 원문에 첨부하여 보내면, 받는 측에서 수신된 평문을 같은 방식으로 해쉬문을 만들어 첨부된 해쉬문과 비교함으로써
원문의 훼손여부를 판단하게 됩니다. 평문이 수정되었다면 첨부한 해쉬문과 다른 결과의 해쉬문이 생성될 것입니다.
해쉬문의 생성은 예를 들면 원문을 완전히 섞어서 각 문자의 첫번째 비트만 추출하는 등의 방법으로 만들기 때문에
사용된 해쉬의 프로토콜을 이해한다고 하여도 해쉬문에서 원문을 추출해 내는 것은 불가능합니다.
그래서 해쉬를 단방향 암호화라고 부르며 원천적으로 역으로 해독이 불가능한 이유가 여기에 있습니다.
그런데 해쉬는 이와 같이 큰 데이터를 축약하여 작은 데이터로 만들기 때문에 필연적으로 동일한 해쉬문이
생성될 수 있습니다. 이것을 충돌이라고 부릅니다.
그러나 우리가 사용하는 비밀번호와 같은 것은 일반적으로 원문의 길이가 짦은데 비하여 해쉬문의 길이는 길기 때문에
이러한 충돌이 생길 가능성은 훨씬 적으며 설령 충돌이 생기더라도 본래의 목적을 달성하는데에는 지장이 없습니다.