단방향 암호화는 암호화만 지원하고 복호화는 지원하지 않는 암호화 방식을 일컫는다.
다른 말로 **hash(다지다)**라고도 하는데, 무언가를 다지면 원형을 알아볼 수 없는 것을 암호화에 빗댄 것이다.
단방향 암호화는 무결성 특성을 극대화하는 방식이다.
복호화를 할 수 없는데 어떻게 원본과 암호화된 내용이 동일함을 확인할 수 있을까? 다음과 같은 상황을 가정해보자.
A라는 사람이 B라는 사람에게 특정한 파일을 전송받기로 했다. A는 B를 신뢰하지만, 전송되는 과정에서 파일이 조작되었을 가능성을 배제할 수 없다.
따라서 B는 A에게 파일을 전송하는 동시에 파일에 hash 알고리즘을 적용하여 얻은 문자열을 같이 보낸다. md5를 이용하여 hash 했다고 가정하자.
A는 파일을 전송받은 후, 해당 파일을 md5로 hash한 뒤 그 값을 B가 보낸 문자열과 비교한다. 문자열이 같다면 B가 보낸 파일과 A가 보낸 파일이 동일함을 알 수 있다.
hash는 또한 다음과 같은 목적을 위해 사용된다.
- 무결성 검증 Verifying the integrity of messages and files
- 전자 서명을 하는 경우 Signature generation and verification
- 파일 또는 데이터의 신뢰할만한 식별자가 필요할 때 File or data identifier
- 사용자의 비밀번호를 서버에 안전하게 저장할 때 Password verification
- 암호 화폐 채굴 시 작업 증명을 위하여 Proof-of-work
참고자료