https://www.youtube.com/watch?v=I7TLqQ3RrrI
스트림 암호 vs 블록 암호
스트림 암호는 메세지 내용 정보를 bit 단위로 암호화
블록 암호는 일전 길이의 bit (block) 단위로 암호화
결국 암호는 confusion (혼란) 과 diffusion(발산) 이라는 특징을 기초로 만들어진다.
→ 그래서 평문의 bit 를 혼합하는(섞는) 함수를 반복해서 수행한다.
block cipher 의 특징
- 평문과 암호문은 고정된 길이의 블록으로 구성된다.
- 암호문은 평문의 블록에 bit 를 혼합하는 함수를 반복하여 (round function) 구한다.
- 반복해서 수행하는 round 함수의 입력값은 키 와 이전 함수의 출력값으로 구성된다.
- 이런 혼합과 반복의 절차를 잘 보여주는 블록암호의 틀(framework) 가 페이스텔(feistel cipher) 암호가 있다.
Feistel Cipher
- feistel 암호는 블록 암호를 설계하는 틀(구조)이지, 암호 방식 자체는 아니다.
- 많은 블록암호가 페이스텔 암호 구조를 가지고 있다.
- 방법
- 평문의 블록을 반으로 나눈다(= 좌우 양분한다) → 입력 평문 블록 = (L_0, R_0)
- 각 단계에서 (i=1,2,…,n) 다음과 같이 계산한다.
- $L_i = R_{i-1}$
- $R_i = L_{i-1} \oplus F(R_{i-1}, K_i)$
- 이 때, F : round function, K=subkey
- 최종 암호문 블록 = (L_n, R_n)
- key 는 각 단계마다 값을 바꿔서 사용할 수 있다. 이를 subkey 라고 한다.
블록 암호의 안전성
- 알고리즘이 충분한 confusion 과 diffusion 을 가지고 있을 때,
- 수학적으로 brute force 공격 이외에는 암호문을 해독할 수 없다.
- 블록 암호의 안전성은 키의 길이에 달려 있다.
- 키의 길이가 브루트 포스 공격을 할 경우의 수를 결정한다.
** 2진수를 10진수로 대충 쉽게 바꿀 수 있는 방법
$2^n = 10^m$
$n := (n/10)*3$ , $n := (m/3)*10$
대칭키 블록 암호
- Data Encryption.Standard (DES)
- Triple DES
- Advanced Encryption Standard (AES) ← 현재 (미국정부표준) 사용하고 있는, 128bits block length, key length.
우리나라에서 사용하는 암호
- SEED : 128bit 길이
- ARIA : 블록 크기 128bits, 키 길이 128, 192, 156, 라운드 수 12,14,16(키 길이에 따라 다름)
'암호학' 카테고리의 다른 글
전자 서명 : 정보 보안 - 암호학 (0) | 2024.09.30 |
---|---|
메시지 인증 코드 (MAC); 키 해시 (HMAC) : 정보 보안 - 암호학 (0) | 2024.09.29 |
암호 해시 함수 : 정보 보안 - 암호학 (0) | 2024.09.29 |
AES ; 블록 암호 : 정보 보안 - 암호학 (0) | 2024.09.27 |
암호 기초 : 정보 보안 - 암호학 (0) | 2023.09.11 |