[Encryption System]
양방향
- 대칭키: 블록 암호 (데이터 전송/스토리지 저장)/스트림 암호(오디오/비디오 스트리밍)
- 공개키 (안전한 키 배송 용도 - Public/Private-key)
단방향 (Hash 함수)
- MDC 변경감지 코드 (무결성)
- MAC 메시지인증코드 (키이용-무결성+인증)
Information Security (정보 보안성): 이론 상 깰 수 완벽한 안정성 만족, 효율성이 떨어짐
Computational Security (계산 보안성): 합리적인 시간내에 깰 수 없는 정도의 안정성 만족 (보안성의 정량화)
ㄴ ( 𝒕, 𝝐 ) 보안 : t- 공격자가 수행할 수 있는 연산 횟수, e-공격 최대 성공 확률
예시) 128비트의 대칭키 암호는 2의 128승 (t/t/2의 128승) 이상의 공격량 목표
Security parameter - 암호 초기화시 사용, 대칭키 암호에서 키의 길와 대응, Log2 (암호 체계를 깰 수 있는 최소 공격량)
- Probabilistic Polynomial Time (PPT) Attack
*모든 PPT 공격은 주어진 안정성 파라미터에 대해, Negligible Attack 성공 확률을 갖음.
There are two main types of symmetric key cryptography (Block & Stream).
*Use the same secret key for encryption and decryption.
▪︎ Block cipher (블록 단위 암호)
평문 블록 M - (라운드 함수 F) - 비밀 키 K → 암호문 블록 C
* 라운드별로 비밀 키 추출 = 키 스케줄
▫︎ DES (Feistal 구조)
◻︎ 라운드 함수 F
ㄴ(16라운드, 블록 크기-64bit, 비밀 키 크기-64bit, 라운드 키 크기-48bit)
+ 시작/끝부분(Initial Permutation + IP 역함수 추가)
1) Expansion: 메시지 Half Block 32bit를 → 48bit로 확장)
2) 48bit 라운드 키와 XOR 연산
3) 8개의 6-bit 나뉘어서 S 박스 통과 = Confusion(혼돈)
4) 다시 32bit 상태가 되어 Permutation 통과 = Diffusion(확산)
◻︎ 키 스케줄: 64bit-비밀키 ~> 16개의 48-bit 라운드 키 추출 과정
1) Permutation Choice(PC)1에 의해 8-bit 버리고, 56-bit 선택
2) 두 개의 28-bit 블록으로 쪼개짐
3) 28-bit 블록 각각 bit-wise Rotate 연산 거침
4)PC2에 의하여 56-bit에서 다시 48-bit 추출
◻︎ 취약점
1. 키 길이 고정 & 너무 짧음 (전수조사 공격 취약)
2. Differential Cryptanalysis(차분 공격) 가능: 입력끼리의 차분이 출력끼리의 차이에 어떤 영향을 주는지 분석
(2의 47개 CPA 질의 수행 필요)
3. Linear Cryptanalysis(선형 공격): 주어진 암호에 대해 암호문, 평문 관계 - 선형 관계직으로 근사하여 공격
KPA 공격 가능(2의 43개 평문/암호문 쌍필요 & 2의41시간 필요)
▫︎ AES (Substitution-Permutation Network, SPN) - 눈사태 효과
◻︎ 대입: S-box 연산
◻︎ 치환: P-box 연산
* 상태값 128-bit의 한 블록을 16개의 Byte<word>로 쪼갬(4*4 행렬)
◻︎ 라운드 함수 F
1. S-box - confusion: 각각의 바이트에 비선형 연산 (고차 관계식)
2. ShiftRow: 상태값의 각 행을 시프트 시켜주는 연산
3. MixColomn - diffusion 효과: 상태값의 각 열에 4x4 행렬을 곱해주는 연산 (힐 암호와 유사)
4. AddRoundKey: 상태값 행렬의 각 바이트에 라운드 키를 XOR 연산
◻︎ 키 스케줄
128-bit의 키를 4개의 4바이트 word로 분할
첫 라운드는 비밀키가 그대로 사용됨, 두번째 라운드부터는 키 생성(RotWord, SubWord + 라운드 상수)
◻︎ 안전성
모든 출력비트 입력비트에 의존함 - MixColumn(최대 확산 속성 보장) / SuBbyte(높은 비선형성)
- 블록 암호의 공격
◻︎ 슬라이드 공격 (라운드 키가 같은 경우 가능, Birthday Bound - 2의 2분의 n승개의 평문, 암호문 쌍 필요)
◻︎ 중간값 일치 공격 (3DES-168bit로 112bit 안정성)
- 블록 암호 운영모드 (평문의 연속으로 이루어진 메시지의 전체적인 운영 모드)
◻︎ ECB - 같은 평문 같은 결과
◻︎ CBC - 이전 블록 의존 & 체인 이용 (고정된 초기치 주의)
◻︎ OFB - 블록 암호를 스트림 암호 형태로 사용 & 암/복호화 동일
◻︎ CTR - 원하는 부분만 복호화 가능 & 암/복호화 동일
+ Padding (메시지 채우기) 필요 [부족한 마지막 블록을 채우기 위해, 평문에 여분의 바이트 추가]
- Padding Oracle [암호문 복호화시, 패딩 유효성 체크 및 성공/실패를 알려주는 오라클] - Attack 가능
▪︎ Stream cipher (비트 단위 암호)
평문 ⊕ [ 비밀키 x Random nonce → Pseudo Random bits (연속적으로 생성되는 키 스트림) ]
* Do not use same key or nonce (XOR 연산 특성상 같은 키 스트림을 얻게 되기 때문)
- RC4 (Rivest Cipher 4): 1세대 Wi-Fi 표준 WEP 및 HTTPS/TLS 프로토콜 등 에서 사용
◻︎ 작동 방식 (C = P ⊕ KeyStream)
- Key-scheduling algorithm(KSA) -> 임의 배열 S 초기화(256 bytes) x 비밀 키(~256 bytes)
- Pseudo-random generation algorithm (PRGA) -> m 바이트 KeyStream 생성 반복
(주기 - KeyStream 1바이트 추출마다 S 원소 섞음)
◻︎ 안전성 (설계상 취약점으로 인한 지속적인 공격으로 안전성 부족, 현재 사용 권장되지 않음)
- RC4 는 nonce를 사용하지 않음
- WEP 설계자 nonce 편법 사용(실패) - 크기가 작고 하나의 일회용 키 사용 & 키 복원 용이(nonce-key 연결 방식) 때문
+ KPA<헤더 부분을 알 경우 Wi-Fi 프레임에 추가>, CPA<알려진 평문을 대상키로 암호화 프레임 전송> 공격에 취약
즉, 스트림 암호의 경우 같은 키에 nonce를 재 사용하지 말아야 하고(반복적 랜덤 추출 필요), nonce의 길이가 충분한 길어야 함
Use two 'Good Properties' to avoid attacks such as statistical analysis. (by Claude Shannon)
▪︎ Diffusion (확산): Plaintext & Cipertext
평문에서의 한 글자(또는 비트) 변화가 -> 암호문에서 여러 글자(또는 비트)에 변화를 만드는 것
ex: 단순치환암호에서는 적용되지 않음
▪︎ Confusion (혼돈): Cipertext & Key
암호문의 한 글자(또는 비트)는 - 키의 여러 글자(또는 비트)와 관계되어야 한다는 것
ex: 비즈네르 암호에서는 적용되지 않음
[References]
https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation
'Convergence Security > Applied Cryptography' 카테고리의 다른 글
- Hash Function (1) | 2024.06.03 |
---|---|
Public key (Asymmetric key) (1) | 2024.05.07 |
Overview of Applied Cryptography (0) | 2024.04.25 |