Action disabled: source

Hash

해쉬함수(hash function)는 임의의 길이에 이진 문자열을 고정된 길이의 이진 문자열로 매 핑하여 주는 함수를 말하며, 해쉬함수의 결과를 해쉬값, 메시지 다이제스트, 메시지 지문이 라 한다. 해쉬함수는 메시지 다이제스트, 메시지 지문과 같은 이름에서 알 수 있듯이 임의 의 길이의 메시지를 대신 대표할 수 있는 고정된 길이의 값을 계산하여 주는 함수를 말한 다.

일방향 해시 함수의 예

345689 를 23으로 나누어보자. 그러면 몫은 15029.95652173913043…… 이 된다. 그래서 소숫점 이하 7자리부터 10자리의 수는 7391이 되고 이 4자리 수가 입력 345689에 대한 출력이 된다. 예로 들은 이 함수는 일방향 함수가 분명하다. 다시 말해서 7391로부터 345689를 계산하고, 6521로부터 87967654를 역으로 계산해낼 함수를 찾을 수 없기 때문이다.

충돌(collision) 2개의 다른 메시지가 같은 해시 값을 갖는 것을 충돌(collision)이라고 한다. 일방향 해시 함수를 무결성 확인에 사용하기 위해서는 충돌이 발견되어서는 안 된다.

메시지가 1비트만 달라도 다른 해시 값이 된다

응용 예

소프트웨어의 변경 검출

어떤 사람이 특정 웹 사이트에서 소프트웨어를 다운로드 받는다고 했을 때 자신이 다운받아 입수한 소프트웨어가 원래 웹 사이트 주인이 올려놓은 소프트웨어와 동일한 것인지 아니면 어떤 공격자나 악의를 가진 사람에 의해서 수정된 내용의 소프트웨어인지 확인하기 위해 일방향 해시 함수가 사용된다

패스워드를 기초로 한 암호화

일방향 해시 함수는 패스워드를 기초로 한 암호화(password based encryption; PBE)에서 사용되는 일이 있다. PBE에서는 패스워드와 솔트(의사난수 생성기로 생성한 랜덤 값,salt)를 섞은 결과의 해시 값을 구해 그것을 암호화 키로 사용한다. 이 방법으로 패스워드에 대한 사전 공격을 막을 수 있다.

디지털 서명

디지털 서명에 일방향 해시 함수가 사용된다. 디지털 서명의 처리에는 시간이 많이 걸리기 때문에 디지털 서명을 메시지 전체에 직접 행하는 일은 별로 없다. 일방향 해시 함수를 사용해서 메시지의 해시 값을 일단 구하고, 그 해시 값에 대해 디지털 서명을 행한다.

MD5 MD4를 만든 Rivest가 1991년에 만든 일방향 해시 함수로 128비트의 해시 값을 갖는다 여기서 입력은 512-비트 블록들로 처리된다. 전수공격과 암호해독에 대한 우려가 심각해진 최근 몇 년을 제외하면 MD5 는 가장 널리 사용되던 안전한 해시 함수이었다.

SHA-1, SHA-256, SHA-384, SHA-512

SHA(Secure Hash Algorithm)은 NIST(National Institute of Standards and Technology)에서 만들어진, 160비트의 해시 값을 갖는 일방향 해시 함수이다. 1993년에 미국의 연방정보처리표준규격(FIPS PUB 180)으로서 발표된 것을 SHA라 부른다 1995년에 발표된 개정판 FIPS PUB 180-1을 SHA-1이라 부른다. SHA-1의 메시지의 길이에는 상한이 있지만, 264비트 미만이라는 대단히 큰 값이므로 사실상 현실적인 적용에는 문제가 없다.

역링크