(2021.12.01)
이번에 정리할 부분 목차
12.1 개요
12.1.1 반복 해시 함수
12.1.2 압축 함수의 두가지 유형
12.2 SHA-512
12.2.1 개요
12.2.2 압축 함수
12.2.3 분석
12.3 WHIRLPOOL
12.3.1 Whirlpool 암호
12.3.2 요약
12.3.3 분석
이전 단원들 내용이 나와서 더 헷갈리고 어려웠다..
이해하기 위해 이전 단원들을 여러 번 읽어봄
그나마 이번 단원은 짧다..
암호학적 해시 함수
해시함수: 입력되는 메시지의 크기에 상관없이 일정한 크기의 출력 생성
압축함수: 입력되는 메시지의 크기 고정, 일정한 크기의 출력 생성
--> 압축함수는 (n>m) n-비트 스트링을 m-비트 스트링으로 만든다. 이 구조를 반복 암호학적 해시 함수라고 한다.
압축함수의 반복 사용에는 두가지 유형이 있다
- 새로운 압축 함수 개발 (MD, SHA)
- 블록 암호의 암호화 과정 활용 (Whirlpool) --> 여러가지 구조가 제안됨
1. 새로운 압축 함수 개발
> MD : Message Digest의 줄임말로 MD5가 128 메시지 다이제스트를 출력하는데 충돌내성을 갖기에는 짧다고 알려져있다
> SHA : Secure Hash Algorithm
SHA(Secure Hash Algorithm):NIST FIPS 180, 180-1, 180-2
: 블록 크기에 관계없이 메시지 다이제스트의 크기는 고정된다.
이 중에서 SHA-512를 살펴보았다.
입력 메시지의 길이는 2^128bit 이하고, 출력되는 메시지 다이제스트는 512 bit 이다.
최종 정리하면,
메시지 다이제스트는 8개의 초기화된 A~E의 워드로 구성됨 (64 bits 씩 총 512 bits)
메시지 블록은 패딩을 거쳐 16개워드로 구성됨 (64 bits 씩 총 1024 bits)
메시지 블록의 16개의 워드에 워드 확장을 하여 총 80개의 워드가 됨.
이제 메시지 다이제스트(8개의 워드)와 확장된 메시지 블록(80개의 워드)를 통해서 압축함수 진행
압축함수는 80번의 라운드가 진행되는데
8개의 워드로 구성된 메시지 다이제스트와 메시지 블록을 워드 확장한 80개의 워드 중 앞순서로 하나를 한 라운드로 이용한다.(+ 64bits 상수 Ki과 함께)
2. 블록 암호의 암호화 과정 활용
Merkle-Damgard 구조
> 압축함수가 충돌 내성을 가지고 있으며, 해시 함수 또한 충돌 내성을 가지고 있다.
1. 메시지에 메시지 길이와 패딩을 붙여 n 비트 블록으로 만든다.
2. 메시지는 길이 n비트인 t개의 블록으로 구성된다. 각 블록을 M1,M2,...,Mi라고하고, t번 동안 반복해서 생성되는 다이제스트를 H0,H1,...,Ht라고 한다.
3. 반복하기 전에 다이제스트 H0은 고정된 값을 갖도록 설정하는데 이를 초기벡터 IV라고 부른다.
4. 매 반복 과정에서 압축 함수는 H_i-1과 Mi를 이용해서 Hi를 생성한다. 즉, Hi=f(H_i-1,Mi) (f는 압축함수)
5. Hi는 원래 메시지로부터 생성되는 암호학적 해시 함수의 해시 값이다. 즉, Ht=h(M)이다.
- Rabin 구조
- Davies-Meyer 구조
- Matyas-Meyer-Oseas 구조
- Miyaguchi-Preneel 구조
> Rabin 구조
- 블록암호의 암호화 기능만을 사용하는 해시함수
- 메시지 블록이 키로 사용, 메시지 다이제스트가 평문으로 사용
- 메시지 다이제스트 크기 = 데이터 블록 암호의 크기
- 복호화 알고리즘을 사용하는 중간자 공격에 취약
> Davies-Mayer 구조
- Rabin 구조에 기반을 두고 있음
- 중간자 공격에 대응하기 위해 forward feed 기능을 사용함
> Matyas-Meyer-Oseas 구조
- Davies-Mayer 구조에서 K와 P의 역할을 바꾼 것
- 메시지 블록의 크기 = 암호 키의 길이
> Miyaguchi-Preneel 구조
- 평문, 암호문, 암호 키 모두를 XOR 연산에 적용하여 메시지 다이제스트를 생성함
- Whirlpool 해시 함수에 적용
Whrilpool
입력 메시지의 길이는 2^256비트 이하이고, 출력되는 메시지 다이제스트는 512 비트이다.
블록암호는 AES암호를 수정하여 사용된다.
> 10번의 라운드로 구성됨
> 512 bits 블록 사용
> 512 bits 라운드 키 사용
> 11개의 라운드 키 확장 필요
AES의 라운드 구조: subBytes->shirftRows->Mixcolumns->Addroundkey
Whirlpool 라운드 구조: subBytes->shiftcolumn->MixRows->Addroundkey
AES의 state는 열(columns)기준이고, Whirlpool의 state는 행(rows)기준임
Whirlpool에서 사용되는 압축 함수가 암호에 기반하기 때문에 SHA-512만큼 효율적이지는 못할 수 있음
'Security > 현대 암호학' 카테고리의 다른 글
[현대 암호학] 제 13장 - 디지털 서명 (0) | 2021.12.03 |
---|---|
[현대 암호학] 제 11장 - 메시지 무결성과 메시지 인증 (0) | 2021.11.21 |
[현대암호학] 제 10장 - 비대칭 키 암호 (0) | 2021.11.14 |
[현대암호학] 제 9장 - 비대칭 키 암호수학 (2) (0) | 2021.11.14 |
[현대암호학] 제 9장 - 비대칭 키 암호수학 (1) (0) | 2021.11.06 |