본문 바로가기

Convergence Security/Applied Cryptography

Symmetric Key

[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

https://youtu.be/rjQSiC01Q6k?si=LFQTob9-yvgsy16b

'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