현대 암호학

[현대 암호학] 08-2. 일방향 해시 함수의 응용 예 / 3. 일방향 해시 함수의 예

Uggjjini 2021. 6. 30. 11:01

2. 일방향 해시 함수의 응용 예

 

소프트웨어의 변경 검출

 

자신이 입수한 소프트웨어가 변경 되었는지를 확인하기 위해 일방향 해시 함수를 사용

 

소프트웨어 변경 검출을 위해 일방향 해시 함수를 사용

 

() md5sum, sha512sum, ...

() httpd.apache.org/download

() 포렌식에서 파일 무결성 확인

* 포렌식 보고서 내용 중 일부 내용(구글 검색: "포렌식 보고서")

 

 

 

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

 

패스워드를 기초로 한 암호화(Password based Encryption, PBE)에서 사용

  • PBE에서는 패스워드와 솔트(salt)를 섞은 결과의 해시 값을 구해 그것을 암호화 키로 사용
  • 패스워드 사전공격(Dictionary attack) 방어

 

() 리눅스(SHA512)/윈도우 시스템(NTLM)encrypted password

() 패스워드 크랙

  • john the ripper
  • 카인과 아벨

 

 

 

메시지 인증 코드(MAC, Message Authetication Code)

  • "송신자와 수신자만이 공유하고 있는 키"와 "메시지"를 혼합해서 그 해시 값을 계산한 값
  • 통신 중의 오류나 수정 그리고 "가장(spoofing)"을 검출 가능
  • SSL/TLS에서 이용

 

() ssh 통신 중의 MAC

() https 통신 중의 MAC

() IPsec 기반 VPN의 통신 중의 MAC

 

 

 

디지털 서명

  • 현실 사회의 서명(사인)이나 날인에 해당하는 온라인 상의 서명
  • 처리시간 단축을 위해 일방향 해시 함수를 사용해서 메시지의 해시 값을 일단 구하고, 그 해시 값에 대해 디지털 서명을 수행

 

() 메일 서명(GPG )

() 패키지 서명(GPG )

 

 

의사난수 생성기(PRNG)

암호 기술에 필요한 난수

  • "과거의 난수열로부터 미래의 난수열을 예측하는 것은 사실상 불가능"이라는 성질이 필요
  • 그 예측 불가능성을 보증하기 위해 일방향 해시 함수의 일방향성을 이용

 

 

일회용 패스워드

일회용 패스워드, 원타임 패스워드(One-Time Password)

  • 정당한 클라이언트인지 아닌지를 서버가 인증할 때에 사용
  • 일방향 해시 함수를 써서 통신 경로 상에 흐르는 패스워드를 1호(one-time)만 사용하도록 고안
  • 패스워드가 도청되어도 악용될 위험성이 없다.

 

() 은행에서 발급하는 암호카드를 대신할 수 있는 OTP

  •  금융거래(ex: 이체) => 개인 인증서(인증서암호), 암호카드(OTP)

 

 


3. 일방향 해시 함수의 예

 

MD4, MD5

 

MD4

  • Rivest가 1990년에 만든 일방향 해시 함수
  • 128비트의 해시 값
  • Dobbertin에 의해 충돌 발견 방법이 고안
  • 현재는 안전하지 않다.

 

MD5

  • Rivest가 1991년에 만든 일방향 해시 함수
  • 128비트의 해시 값
  • 암호해독에 취약함을 보여주는 여러가지 암호 해독 방법들이 개발
  • MD5가 완전히 뚫린 것은 아니지만, MD5 내부 구조의 일부에 대한 공격 방법이 몇 개 발견
  • 사용을 권장하지 않는다.

 

 

 

SHA(Secure Hash Algorithm)

  • 미국 국가안보국(NSA)이 1993년에 처음으로 설계했으며 미국 국가 표준으로 지정되었다. SHA 함수군에 속하는 최초의 함수는 공식적으로 SHA이지만 SHA-0라고도 불린다.
  • SHA-0는 얼마지나지 않아 표준이 폐기되었고, 1995년에 SHA-1이 새로 출판된다. SHA-1은 SHA-0의 압축 함수에 비트 회전 연산을 추가한 것이다. NSA에 따르면, 암호학적 보안을 감소시키는 문제점을 고쳤다고 한다.(실제 문제점을 공개하진 않음)
  • SHA-0와 SHA-1은 최대 264비트의 메시지로부터 160비트의 해시값을 만들어 낸다. 로널드 라이베스트가 만든 MD4와 MD5 해시함수에서 사용했던 것과 비슷한 방법에 기초한다.
  • ​이후, 4종류의 변형, 즉 SHA-224, SHA-256, SHA-384, SHA-512가 더 발표되었다. 이들을 통칭해서 SHA-2라고 하기도 한다. 2002년에 SHA-1과 함께 정식표준으로 지정되었다.
  • SHA2부터 뒤에 비트수가 붙는데, 주로 이렇게 다양한 비트들은 암호연산의 키 길이와 비례한다.

 

[표] SHA 알고리즘 비교

 

알고리즘 해시값
크기
내부상태
크기
블록 크기 길이 한계 워드 크기 과정 수 사용되는
연산
충돌
SHA-0 160 160 512 64 32 80 +,and,or,xor,rotl 발견됨
SHA-1 160 160 512 64 32 80 +,and,or,xor,rotl 발견됨
SHA-224
/256
224/256 256 512 64 32 64 +,and,or,xor,shr,rotl
SHA-384
/512
384/512 512 1024 128 64 80 +,and,or,xor,shr,rotl

(출처) 위키백과

 

 

 

SHA-1

  • NIST(National Institute of Standards and Technology)에서 제작
  • 160비트의 해시 값

 

SHA(Advanced Hash Standard)

  • 1993년에 미국의 연방정보처리표준

 

 

 

SHA-1

  • 1995년에 발표된 개정판
  • 입력: 메시지 길이 상한 264bits 미만
  • 출력: 160 bits 해시값
  • 블록크기: 512 bits

 

 

 

SHA-2

 

SHA-256

  • 입력: 메시지의 길이 상한 2^64 bits 미만
  • 출력: 256 bits 해시 값(32 bytes)

 

SHA-384

  • 입력: 메시지의 길이 상한 2^128 bits 미만
  • 출력: 384 bits 해시 값(48 bytes)

 

SHA-512

  • 입력: 메시지의 길이 상한 2^128 bits 미만
  • 출력: 512 bits 해시 값(64 bytes)

 

 

 

SHA(Advanced Hash Standard)SHA-3

  • SHA-1의 강한 충돌 내성 침해
  • NIST는 SHA-1을 대체하는 차세대 일방향 해시함수로 2007년에 "SHA-3" 선정 시작
  • AES와 같은 경쟁 방식으로 표준화
  • 2012년 선정 완료
  • - KECCAK(케챡)을 표준으로 선정
  • - 이것이 SHA-3

 

 

RIPEMD-160

  • 1996년에 Hans Dobbertin, Antoon Bosselears, Bart Preneel이 제작
  • 160비트의 해시 값
  • European Union RIPE 프로젝트로 만들어진 RIPEMD 함수의 개정판

 

 

 

LSH(Lightweight Secure Hash)

 

해시함수 LSH

  • TTA(한국정보통신기술협회)에 NSR에서 제안한 국내표준 해시함수(2015.12)

 

주요 특성

  • 개발연도: 2014년
  • 알고리즘 구분: 해시 함수
  • 출력 길이: 224비트, 256비트, 384비트 또는 512비트
  • 구조: Wide-pipe Merkle Damgaard 구조

 

성능/활용

  • 다양한 SW 환경에서 국제 표준(SHA2/3) 대비 2배 이상 성능
  • 메시지 인증, 사용자 인증, 전자서명 등 다양한 암호 응용 분야