Search
Duplicate

Chapter3. 암호 해싱과 메시지 인증

작성일시
2022/03/23 03:38
강의 번호
유형
암호
자료
복습
속성
속성 1

암호 해싱과 메시지 인증

메시지 무결성

메시지가 불법적으로 수정되지 않았음을 보장 (즉, 원본과 동일함을 보장한다)
아날로그 문서 → 지문, 도장으로 무결성 보장
디지털 문서 → Message Digest 으로 무결성 보장

메시지 다이제스트 (Message Digest)

// ex) func Hash(message) => fingerprint // 메시지에 암호 해싱을 적용하여 생성
JavaScript
복사

무결성 점검 과정

현재 메시지가 수정되었는지 판단하기 위해
기존에 저장된 Message Digest와
현재 메시지에서 생성된 Message Digest를 비교
두가지 Message Digest를 비교해보고 같다면 무결성 검증된 것이다.
만약 다르다면 메시지가 수정되었다는 것이다.

암호 해시 함수의 정의

암호 해시 함수란 반대 방향으로의 복원이 거의 불가능한 해시 함수이다.
입력된 데이터를 고정된 길이의 데이터로 변환한다.

암호 해시 함수의 조건

1. Preimage Resistance (단방향성)

y = Hash(M) 일 때, 공격자가 (y, H)에서 M을 발견하는 것이 매우 어려워야 한다.
공격자가 암호 해시 함수를 적용한 결과를 안다고 해서, 역으로 해시 함수를 풀어서 메시지를 발견하는 것이 불가능 해야한다.

2. Second Presage Resistance (약한 충돌 저항성)

M과 H(M)이 주어질 때, M’ ≠ M 이면서 H(M’) = H(M) 인 M’ 를 찾기가 어려워야 한다.
즉, M과 H(M)을 안다고 했을 때, 완전 탐색으로 가능한 모든 M’을 넣었을 때 H(M)과 같은 H(M’)이 나오는 경우가 없어야한다.

3. Collision Resistance (강한 충돌 저항성)

H(M) == H(M’) 인 서로 다른 메시지 M과 M’ 를 찾기 어려워야 한다.
2번은 M과 H(M)이 주어진 상태에서 하나의 메시지를 고르지만, Collision Resistance는 M과 M’을 모두 공격자가 임의로 고를 수 있다.

각 공격의 유형별 난이도

해시 함수의 결과 → n-비트, 50% 이상의 성공 확률을 위하여 k번의 시도가 필요
해시 함수의 결과로 나오는 비트의 길이가 길어질수록 안전하지만, 그만큼 용량, 데이터의 부담은 늘어난다.

상용 암호 해시 알고리즘

암호 해시 알고리즘의 배경에 깔린 아이디어 : 반복 해싱 (Iterative Hashing)

암호 해시 알고리즘의 종류

MD5
1991년에 만들어진 128비트 알고리즘
충돌 저항성이 약하다
SHA-1
1995년에 미국 NIST에서 만들어진 160비트 알고리즘
충돌 저항성이 약하다
SHA-1
2002년에 미국 NIST에서 만들어진 알고리즘
해시값의 크기에 따라 SHA-256, SHA-384, SHA-512 등 6개의 해시함수로 구성한다
충돌 저항성이 높다
SHA-3
2012년 미국 NIST에 의해 선정된 알고리즘
SHA3-224, SHA3-256, SHA3-384, SHA3-512
Keccack-256 : Ethereum에서 사용
RIPEMD160
1996년에 만들어진 160비트 알고리즘

SHA-512

Message Digest 생성 과정
Digest의 길이 = 512비트
Message 블록 =. 024비트
Message 길이 < 21282^{128}
길이 필드와 패딩
Message의 길이 필드 : 128비트
1024 비트의 정수 배를 맞추기 위하여 “100..00” 형식의 패딩 추가
(메시지 길이 + 패딩 길이 + 128)
= 0 mod 1024
ex) 메시지의 원래 길이가 2590비트일 경우, 패딩 비트의 길이?
패딩 길이 = (-2590 - 128) mod 1024 = 354
64비트의 word 단위로 계산이 진행
Message Digest = 512비트 = 8개의 word로 구성
Block = 1024비트 = 16개의 word로 구성