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배 이상 성능
- 메시지 인증, 사용자 인증, 전자서명 등 다양한 암호 응용 분야
'현대 암호학' 카테고리의 다른 글
[현대 암호학] 08-5. 일방향 해시 함수의 SHA-512 (0) | 2021.06.30 |
---|---|
[현대 암호학] 08-4. 일방향 해시 함수의 SHA-1 (0) | 2021.06.30 |
[현대 암호학] 08-1.일방향 해시 함수 (0) | 2021.06.30 |
[현대 암호학] 07-4. 기타암호 - 동형 암호 (0) | 2021.06.29 |
[현대 암호학] 07-2. 강한 하이브리드 암호 시스템이란 / 3. 암호 기술의 조합 (0) | 2021.06.29 |