본문 바로가기
컴퓨터학개론

해쉬함수별 특징 알아보기

by yurieee 2022. 2. 2.

해쉬 함수는 임의의 입력 비트열에 대하여 일정한 길이의 안전한 출력 비트열을 내는 것으로, 정보통신 보호의 여러 메커니즘에서 활발히 이용되는 요소 기술 중 하나입니다. 오늘은 해쉬함수별 특징에 대해 알아보도록 하겠습니다.

해쉬함수의 매커니즘

해쉬함수란 무엇인가?

해쉬함수란 입력 데이터 스트링을 고정된 길이의 출력인 해쉬코드로 대응시키는 함수로서 첫째, 주어진 해쉬코드에 대하여 이 해쉬 코드를 생성하는 데이터 스트링을 찾아내는 것은 계산상 실행 불가능하며, 둘째 주어진 데이터 스트링에 대하여 같은 해쉬 코드를 생성하는 또 다른 데이터 스트링을 찾아내는 것은 계산상 실행 불가능하다는 두 가지 성질을 만족하는 함수를 말합니다. 여기서 계산상의 실행 가능성의 여부는 사용자의 특정한 보안 요구와 환경에 영향을 받게 됩니다. 

전자서명에 많이 사용되는 해쉬함수

해쉬함수는 전자서명에 많이 사용되고 있습니다. 해쉬함수는 정보의 무결성(Integrity)에도 활용될 수 있습니다. 무결성 검증을 원하는 정보의 해쉬 코드를 계산하여 안전하게 보관하다가 무결성 검증이 필요할 때 다시 해쉬코드를 계산하여 보관한 해쉬 코드의 값과 비교함으로써 정보의 무결성을 확인할 수 있습니다.

해쉬함수별 특징

해쉬함수는 크게 4가지의 특징이 있습니다. 아래 내용에서 좀 더 구체적으로 다뤄보겠습니다.

1) SNEFRU

SNEFRU 함수는 1990년 R.C. Merkle에 의하여 32비트 프로세스에서 구현을 용이하게 할 목적으로 제안된 해쉬함수로써 128 비트 또는 256 비트 해쉬코드를 생성합니다. 이 SNEFRU의 핵심은 512비트의 압력을 m비트 해쉬코드로 하는 함수로써 이 함수를 사용하게 됩니다.

2) N-HASH 

1989년 FEAL을 개발했던 일본 NTT의 Miyaguchi 등이 발표한 것으로 128비트의 입력에 대한 출력 해쉬코드를 128비트 생성합니다. 그러나 N-HASH는 Bert Bore에 의하여 1993년 해독된 것으로 보고되었으며 1991년, 1993년 Biham과 Shamir에 의한 DC에 의하여 6라운드까지 해독되었습니다. 이 공격에 안전하려면 15라운드의 N-HASH를 사용하여야 한다고 알려지고 있으며, 이는 272의 복잡도를 가지고 있어야 합니다.

3) MD4와 MD5 

1990년 10월 Ron Rivest에 의하여 개발된 MD4는 다음과 안전성, 효율성, 단순성 등의 특징을 갖고 있습니다. MD4와 MD5는 통상적인 해쉬함수의 안전성을 확보하고 있습니다. 또한, 32비트의 기반 구조를 가진 빠른 알고리즘으로 구성하여 실행 속도에 효율성을 확보하고 있습니다. 마지막으로 알고리즘은 일반적으로 많은 양의 프로그램이나 치환 표의 요구 없이 프로그램과 표현이 단순하여야 하며 이는 안전성의 관점에서도 중요한 것입니다. 이러한 특징에도 불구하고 1992년 마지막 두 라운드가 Bertden Boer 등에 의하여 해독되었고, 사전 공격에 의해서도 해독되기에 이르렀습니다.

4) SHA 

SHA(Secure Hash Algorithm, 표준 해쉬 알고리즘)은 1993년 미국 NIST에서 개발하여 미국 표준 FIPS PUB 180으로 공포되었고, 160비트의 해쉬 코드를 출력하며, MD4 알고리즘에 기반을 둔 해쉬 함수입니다.

SHA와 MD5의 차이점

SHA와 MD5의 비교하자면 양쪽 다 MD4로부터 나왔기 때문에 SHA와 MD5는 서로 유사합니다. 물론 안전성이나 속도 단순성에는 약간 차이가 있습니다. 가장 명료하고 가장 중요한 차이는 SHA에 의한 해쉬 코드가 MD5에 의한 해쉬 코드보다 32비트 더 길다는 것입니다. 타당한 가정과는 거리가 있지만, 만일 어느 알고리즘도 암호 해독의 공격에 취약한 어떤 구조적 결점을 가지고 있지 않다면 SHA가 더 강한 알고리즘입니다. 두 알고리즘의 법 232 상에서의 덧셈에 의존해 있기 때문에 둘 다 32비트 구조로 수행됩니다. SHA는 더 많은 단계(80 대 64)를 포함하고, MD5보다 약 25% 느리게 실행됩니다. 마지막으로 두 알고리즘은 큰 프로그램이나 대치 표 등을 요구하지 않기 때문에 표현하기와 실현하기가 간단하다는 장점이 있습니다. 

요약

여기까지 해쉬함수가 응용되는 부분과 해쉬함수별 특징에 대해 알아보았습니다. 해쉬함수는 컴퓨터구조나 자료구조 혹은 알고리즘을 공부하신 분들에게는 익숙한 용어지만 이를 제대로 설명할 줄 아는 분들은 그리 많지 않습니다. 정보보안에 있어 해쉬함수 응용을 필수적이기 때문에 꼭 내용을 잘 숙지하시길 바랍니다.

댓글