프로그래밍/컴퓨터보안

[컴퓨터보안] 해시 (Hash Function) 함수 보안

Jay22 2018. 12. 8. 13:03
반응형

Hash Function

  • 임의의 긴 입력값을 적절하게 처리하여 짧은 값을 출력하는 함수.
  • 암호학에서 사용하는 해쉬 함수 : 메세지 서명, 인증, 무결성 등에 사용.
  • 디지털 서명과 결합되어 메세지 무결성을 제공하는데 효율적이다.
  • 매핑된 해시 값으로는 원래 값을 알아내기 힘들다는 것에 착안하였다.

생활 속의 Hash function ??

  • 은행 현금인출기, 신용카드 확인, 주민번호, 휴대폰 명의, 생년월일, 성인 인증 등
  • 비밀번호 분실시 휴대폰으로 인증번호를 받는 경우. 인증번호는 항상 다름 (hash function으로 생성)
  • 압축 오류 검사, 파일 다운로드 오류 검사

해쉬 함수 과정





밑에 그림이 전자 서명을 하는 과정을 간략히 나타낸 것이다. 
  1. 메세지를 Hash를 돌려서(무결성, integrity) 저 체크무늬 박스가 되는데 저것을 MAC(Message Authentication Code) 이라 한다. 
  2. 저 MAC을 private key로 잠근다. 
  3. 그것을 보내려는 Message에 붙여서 보낸다. 
  4. 수신자는 저것을 public key로 열고(인증, authentication) 나온 MAC을 확인한다.
  5. Message를 hash를 해서 MAC과 같은지 비교한다.

해쉬함수들에 대한 공격

  • 생일 공격 (aka 생일 패러독스 : 50%의 확률로 생일이 같은 쌍이 나올 집단의 크기는 23명이면 된다. 간단한 수학계산임 검색해보길... 즉 이것은 23이라는 숫자가 365에 비해서 작기 때문에 사람들이 기대하는 것 보다 훨씬 낮은 것에 착안한 관점이다)
ex)
  1. Alice는 Bob을 속이기 위해 정당한 계약서와 변조된 계약서를 가지고 있는다.
  2. Alice는 정당한 계약서를 다양하게 변조하여 해쉬함수값을 모두 가지고 있는다. (변조 방법은 space대신 space space, 줄 바꿈 전에 space 추가 등의 방법이있다. 문서가 총 32줄 일때 2^32 가지 가짓수가 나온다)
  3. Alice는 해쉬함수들의 충돌쌍을 찾는다. (해쉬함수가 64bit라면 2^32개 변조문서를 검사해보면 충분히 찾을 수 있다)
  4. 충돌쌍을 찾고 그 변조문서를 Bob에게 서명해달라고 한다.
  5. 나중에 Bob이 서명하지 않았던 문서를 판사에게 제출해 Bob이 엉뚱한 문서에 서명했음을 보여준다.

MD5

Ronald Rivest가 발명하였고 128비트 암호화 해시 함수이다. 이것은 전자 서명을 위해 개발되었다. 하지만 취약점이 발견되었고 노트북 하나로 1분내로 해시 충돌을 찾는 알고리즘이 나올정도로 취약해졌다. 

SHA (Secure Hash Algorithm)

미국 국가 안전 보장국에서 개발하였다. SHA-1은 SHA 함수들 중 가장 많이 쓰이고, TLS, SSL, PGP, SSH, IPsec등 보안 프로토콜과 같이 쓰인다. SHA1은 이미 뚫린 상태라 더 안전한 해시함수를 사용할 것을 권고하고 있다. (SHA-256, SHA-3 등)


반응형