본문 바로가기
IT/정보보안

해쉬함수(hash function)에 대한 설명

by 미니송 2017. 10. 18.

정보보안 해쉬함수 설명


이번 포스팅은 해쉬함수에 대해 하겠습니다.

 

해쉬함수란?

해쉬함수(Hash Function)는 임의의 길이를 갖는 메시지를 입력하여 고정된 길이의 해쉬값을 출력하는 함수입니다.


현재 사용되고 있는 SHA-1과 같은 표준 해쉬함수들은 160비트 내지 256비트의 해쉬값을 출력합니다. 암호 알고리즘에는 키가 사용되지만, 해쉬함수는 키를 사용하지 않으므로 같은 입력에 대해서는 항상 같은 출력이 나옵니다. 이러한 함수를 사용하는 목적은 입력 메시지에 대한 변경할 수 없는 증거값을 뽑아냄으로써 메시지의 오류나 변조를 탐지할 수 있는 무결성을 제공하기 위해서 입니다.


2017/07/19 - [IT] - 정보보안의 3요소에 대해서


해쉬함수는 전자서명과 함께 사용되어 효율적인 서명 생성을 가능하게 합니다. 긴 메시지에 대해 서명을 하는 경우, 전체 메시지에 대해 직접 서명을 하는 것이 아니고 짧은 해쉬값을 계산해 이것에 대해 서명을 하게 됩니다.


공개키 연산은 많은 계산량을 필요로 하기 때문에 전체 메시지를 공개키 길이의 블록 단위로 나누어 모든 블록에 서명을 하는 것은 매우 비효율적입니다. 그러므로 먼저 메시지를 입력하여 160비트 내지 256비트의 짧은 해쉬값을 계산하고, 이것에 대해 한 번의 서명 연산을 합니다. 이 계산값은 원래의 메시지에 대한 서명으로 인정됩니다.


해쉬값에 대한 서명이 원 메시지에 대한 서명으로 인정되기 위해서는 같은 해쉬값을 갖는 또다른 메시지를 찾아내기가 계산적으로 어려워야 합니다. 해킹을 당할 수 있기 때문입니다. 또한 해쉬 계산이 쉬워 풀어버린다면 그 해쉬함수는 사용할 수 없습니다.


해쉬함수는 임의의 길이의 입력으로부터 짧은 길이의 해쉬값을 출력하므로, 입력은 서로 다르지만 같은 출력을 내는 충돌이 반드시 존재합니다. 만일 같은 해쉬값을 갖는 다른 메시지를 찾아내기가 쉽다면, 서명자는 자신의 서명을 다른 메시지에 대한 서명이라고 우길 수 있을 것입니다. 이렇게 되면 전자서명에 대한 신뢰가 불가능하고 전자거래에 사용할 수 없게 됩니다. 그러므로 안전한 해쉬함수로 사용될 수 있기 위해서는 충돌을 찾아내기 어렵다는 특성을 가져야 합니다.

 

댓글