기본적으로 해시함수는 다음의 세가지 성질을 충족하여야 '암호학적 해시함수'라고 칭합니다.


1) 역상 저항성(Preimage Resistance) : 해시함수의 출력값으로는 입력값을 역계산하여 알아낼 수 없다. 

2) 제 2 역상 저항성(2nd Preimage Resistance) : 주어진 입력에 대한 해시결과값과 동일한 결과를 갖는 또 다른 입력을 찾을 수 없다.

3) 충돌 저항성(Collision Resistance) : 동일한 해쉬값을 같는 입력 쌍을 찾을 수 없다.

*여기에서 '없다'라는 말은 엄밀히 정의하여 '계산상 불가능하다' 또는 '현실적인 시간 안에 효과적으로 풀어낼 수 있는 알고리즙이 없다' 입니다.


이러한 성질을 만족한다면, 메시지의 위변조 탐지를 할 수 있고, 그 밖에 인증 기술 등 다양한 분야에 활용할 수 있습니다.


지금까지 가장 널리 이용되는 해시함수는 MD5이었으며, 2005년에 Wang 교수 등에 의해 MD5의 충돌쌍을 찾는 논문이 발표되었습니다. (How to Break MD5 and Other Hash Functions, Xiaoyun Wang


(2017.3. 추가)

또한, 2017년 2월, 구글과 네덜란드 CWI 연구소에서 SHA-1 해시함수의 충돌쌍을 찾는 방법을 공개함으로써 SHA-1 역시 깨졌습니다. (참고 : Google, SHA-1 해시함수 충돌쌍 공격 발표)


그럼에도 불구하고, 디지털포렌식 분야에서는 이미지의 무결성을 검증할 때 MD5 혹은 SHA1 해시를 사용하고있는데, MD5의 충돌쌍 탐색 공격이 발생함에 따라 안전성에 문제가 제기되고 있습니다. 하지만 아직까지 무결성을 위협하는 제 2역상을 효과적으로 탐색하는 방법이 알려져 있지 않으므로, 아직은 사용에 큰 문제는 없어보입니다. (고려대 디지털포렌식센터장 이상진 교수, 디지털포렌식개론 286~287page) 이러한 주장이 가능한 이유는, "우리가 해쉬 쓰는 이유는 쇄도효과를 보증하기 위함이며, Md5나 sha-1의 충돌저항성 약화와는 별개로 무결성 훼손시 dramatically changes 하는 성질은 여전히 유효하므로 큰 상관없다"라는 견해 때문이며, 이들의 논문이 최근까지도 계속 나오고 있습니다. 사실 뭐 그래도 조심해야된다라는 의견도 양쪽 모두 틀린것은 아니어서... 이러다 거의 이념대립(?)같은 이야기가 되지 않을까싶습니다.


어쨌든, 미국 국가표준기술연구소(NIST)는 새로운 암호학적 해시함수 표준을 공모하였고, 그것을 SHA-3 Project라고 부릅니다. 

요구조건은 기본적으로 위에서 언급한 3가지 조건을 충족하며, 그외에 추가적으로 몇가지 보안 특성이 요구됩니다. 이는 대부분 최근까지 발견된 해쉬함수들에 대한 공격에 대해 안전해야 한다는 것을 전제로 하는 것입니다. 

그렇게해서 선정된 SHA3 는 일명 Keccak이며, AES를 설계했던 벨기에 연구자 Daemen이 포함되어있습니다.

향후에는 SHA-3등의 새로운 해시함수 표준을 사용하는 것이 바람직할 듯합니다. 



한국의 국가보안기술연구소(NSR)에서도 LSH(Lightweight Secure Hash)라는 암호학적 해시함수를 개발하였습니다. LSH는 금융, 클라우드, 빅데이터 등의 분야에서 대용량 데이터의 무결성 검증시 적합하도록 소프트웨어로 구현한 고속 해시함수입니다. 본 함수는 2015년 12월에 정보통신단체(TTA)의 표준으로 지정되었습니다. (관련링크 : TTAK.KO-12.0276

관련자료입니다.


저도 LSH 해시의 전체적인 작동을 아직은 완벽히 이해하진 못했지만, 대략적으로 초기화(Initialization), 압축(Compression), 완료(Finalization) 세 단계를 거치며 고정된 길이의 결과값을 출력합니다.


한국암호포럼KISA 암호이용 활성화 페이지에서 소스코드를 다운받아 사용하실 수 있습니다. 아래는 파이썬 예제입니다. 숫자 0부터 10까지를 입력으로 하여 LSH해쉬 출력값을 CSV파일에 저장해보았습니다.

실제로 내부적으로는 Byte Array 값입니다만, 위에서 보시는바와 같이 고정된 길이(64글자)의 Hex String으로 변환하여 출력했습니다. 



덧) 아주아주 최근인 2016년 7월 4일. Security and Communication Networks 저널에 중국 칭화(Tsinghua)대학 Yonglin Hao라는 분이 LSH 함수에 대한 공격법을 발표하였습니다. (참조 : Cryptanalysis of the LSH hash functions

논문의 결론을 요약하자면 LSH에 대한 부메랑 공격 등을 시도해보았으나 만족할만한 성과를 얻지는 못하였고, 약간의 사소한 빈틈을 찾아 공격할 수 있는 방향을 제시해보았다고 합니다. 물론 이것은 블랙박스 테스트에서는 별로 도움이 되지 못하지만, 어쨌든 이 부분을 주의하여 LSH함수의 악의적인 사용에 대비하여야 한다고 끝맺음을 하고 있습니다. 앞으로도 더 다양한 공격법들이 제시될 것으로 보입니다.


따라서 디지털포렌식 등의 분야에서 사용되는 해시함수도 점차 암호학계의 흐름을 반영하여 새로운 함수를 기본으로 탑재하도록 권고하여야 할 것으로 봅니다.





CPUU님의 창작활동을 응원하고 싶으세요?