일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- frequency-domain spectrum analysis
- Double free
- 유니티
- Frequency Response
- MLFQ
- TSet
- 배경 그림
- DP
- 운영체제
- stride
- Security
- DSP
- pdlc
- 유스케이스
- RBAC
- 언리얼엔진
- Rr
- linear difference equation
- 게임 개발
- STCF
- 게임개발
- AINCAA
- dirty cow
- 메카님
- dtft
- Race condition
- ret2libc
- MAC
- Unity #Indie Game
- sampling theory
- Today
- Total
다양한 기록
블록 암호 알고리즘, DES / AES 본문
평문과 암호문이 고정된 크기의 블록으로 구성
- 평문을 일정한 크기의 블록으로 나누고, 고정된 크기를 가지는 블록 단위 암호문 생성
블록 암호는 혼돈(Confusion)과 확산(Diffusion) 둘 다 적용됨
- P-box(permutation box), S-box(Substitution box), XOR, Shift, Swap 등을 결합하여 설계
- 여러 라운드를 반복
혼돈(Confusion)
- 키와 암호문과의 관계를 감추는 성질, 키의 변화가 암호문에 미치는 영향을 감춰야 함
- 치환(substitution)을 이용, S-box
확산(Diffusion)
- 평문과 암호문과의 관계를 감추는 성질, 평문 한 비트의 변화가 암호문의 모든 비트에 확산되어야 함
- 순열(Permutation)을 이용, P-box
P-box
입력 비트와 출력 비트 사이즈에 따라 세 종류로 나뉨
- 단순(Straight) P-box
- 축소 (Compression) P-box
- 확장 (Expansion) P-box
S-box
00 | 01 | 10 | 11 | |
0 | 00 | 10 | 01 | 11 |
1 | 10 | 00 | 11 | 01 |
입력 비트와 출력 비트 개수가 달라도 상관없는데,
역함수가 존재하기 위해서는 입력 비트와 출력 비트의 개수가 같아야 함
라운드(round)
- 확산과 혼돈은 S-box, P-box, 기타 구성 요소들이 결합된 합성 암호(product cipher)를 반복적으로 사용하여 얻어짐
- 합성 암호가 반복적으로 사용되는 것을 라운드라 함
DES (Data Encription Standard)
- 대칭키 블록 암호
- 64비트 블록 암호, 56비트 키, 16라운드
Li = Ri-1
Ri = Li-1 XOR f(Ri-1, ki)
반 잘라서 오른쪽은 다음 라운드의 왼쪽으로 사용
다음 라운드의 오른쪽? (f?)
1. 이전 라운드의 오른쪽 32비트가 expansion P-box 통과 => 48비트
2. 키와 XOR
3. S-box 통과 => 32 비트
4. Straight P-box 통과
이후 이전 라운드의 왼쪽과 XOR 되면 다음 라운드의 오른쪽이 됨
- 1970년대에 개발됨
- IBM의 Lucifer 암호
- 64비트 키를 사용하여 64비트 데이터를 암호화함
- 64비트 키는 패리티 비트 제거 후 56비트 키로 변환, 각 라운드마다 48비트 키로 생성되어 사용됨
- 복호화 알고리즘은 암호화 알고리즘과 동일(Feistel 구조), 키만 reverse order
병렬처리 및 DES 암호 깨기 전용 칩 => 22시간 내에.. 더 빠르게도 키 분석 가능
* 대칭키 암호화는 양자컴퓨터에 은근히 강함. 키 사이즈 늘리면 됨
* 공개키 암호화는 수학적인 원리 기반이라 양자 컴퓨터에 양함
이중 DES(Double DES)
- DES를 두 번 사용
키가 112비트니까 안전성도 그만큼 증가?
=> X
Meet-in-the-Middle Attack
* 가정 상황: 공격자가 플레인 텍스트와 사이퍼 텍스트 쌍을 찾은 경우
양쪽 브루트 포스하고 정렬: 2*2^56 + O(nlogn) .. 2^63
대략 63비트 키 정도의 안정성밖에 안됨
삼중 DES (Trpple DES)
2^168? 아님
실제로는 112비트 키 사용
E-E-E 가 아니라 E-D-E 사용 (복호화는 D-E-D)
E-D-E 사용 시 DES와 호환 가능
그냥 키 세개 다 똑같은 걸로 하면 DES 한 번이랑 같음
그리고 MITM 공격에 당해도 112비트 안정성 보장 가능함
한 방향에서 뚫고 중간에서 만나려고 시도해야 하기 때문에 어쩄든 2^112만큼의 시도는 필요
그러나 AES 등장으로 점점 사라지는 추세
* DES의 키 사이즈
64, 56, 48이라는 많은 이야기가 있으나 다 맞는 말임
기본 64비트에 각 8비트마다 끝에 패리티비트 제거 시 56비트
각 라운드마다는 48비트 사용
AES (Advanced Encryption Standard)
- DES의 키 사이즈(56비트)는 현재 컴퓨팅 파워에서는 전수조사에 취약
- 라인댈(Rijndael) 알고리즘
- 여러 라운드 반복
- Feistel 구조가 아님니라 암호화 알고리즘과 복호화 알고리즘이 다름 (역함수를 이용)
라운드 수 | 키 사이즈 |
10 | 128 |
12 | 192 |
14 | 256 |
안전성 제공을 위해 4 종류의 구성 요소 사용
- SubBytes
- ShiftRow
- MixColumns
- AddRoundKey
SubBytes => ShiftRow => MixColumns => AddRoundKey
AddRoundKey가 1라운드 전에 한번 수행됨
마지막 라운드에서는 MixColumns가 수행되지 않음
블록이 상태(State)로 표현
- 상태는 원소가 한 바이트인 4*4 행렬 .. 열 기준으로 왼쪽부터 채움
SubBytes (Substitute Bytes)
상위 4 비트가 행, 하위 4비트가 열을 결정
치환 표가 있으면 C6 에서 C는 행, 6은 열로 지정되어 치환
ShiftRows
제일 위의 행은 그대로 두고 그 밑부터 n+1씩 왼쪽으로 밀어버림
복호화는 n+1씩 오른쪽으로 밀면 됨
MixColumns
상태값을 행렬곱하여 비트 단위로 섞음
이로써 평문이 가지던 특징이 비트 단위로 깨짐
복호화를 위한 역함수 존재
AddRoundKey
상태에 키 더해주는 거
XOR
AES의 모든 구성 요소는 invertible함
- 복호화 알고리즘에서는 모든 구성요소들이 inverse 형태로 수행됨
- round key는 reverse order로 사용해야 함
국내 블록 암호
SEED, ARIA, HIGHT,
'정보보호이론' 카테고리의 다른 글
해시 함수, 공격, 응용, MAC (0) | 2024.10.28 |
---|---|
블록 암호 - 운용모드 (0) | 2024.10.28 |
암호 기초, 역사 (0) | 2024.10.27 |
대칭키 암호, 공개키 암호, 해시 함수와 MACs (0) | 2024.10.27 |
암호 프로토콜, 암호 기본 원칙 (0) | 2024.10.27 |