1. DES 심화 및 작동 모드 (Operation Modes)
① DES 라운드 키 생성 및 S-Box/순열 리뷰
- S-Box (Substitution Box): 6비트 입력을 4비트로 변환하는 비선형 치환 단계입니다.
- 순열 (Permutation, P): 비트의 위치(순서)만 뒤섞는 과정입니다.
- 라운드 키($K_1 \sim K_{16}$) 생성 과정:
- PC-1 (Permuted Choice 1): 입력된 64비트 키에서 패리티 체크 비트(8비트)를 제외한 56비트를 선택합니다. (9의 배수 위치 비트 등이 제어용/관행상 제외됨)
- 좌측 순환 이동 (Left Circular Shift): 56비트를 좌/우 28비트씩 나누고 라운드별 정해진 횟수만큼 좌측 시프트합니다.
- PC-2 (Permuted Choice 2): 56비트 중 48비트를 추출하여 각 라운드의 서브키($K_i$)로 사용합니다.
- 복호화: 암호화와 동일한 구조를 가지며, 서브키 적용 순서를 역순($K_{16} \rightarrow K_1$)으로 진행합니다.
② DES 블록 암호 운영 모드
동일한 평문 블록이 동일한 암호문으로 변환되는 것을 방지하기 위해 다양한 운영 모드를 사용합니다.
[운영 모드 분류]
│
┌──────────┴──────────┐
[블록 단위] [스트림/비트 단위]
├── ECB (전자 코드북) ├── CFB (암호 피드백)
└── CBC (암호 블록 체이닝) └── OFB (출력 피드백)
| 운영 모드 | 설명 및 특징 | 주요 활용/비고 |
| ECB (Electronic Codebook) | 평문 블록을 각각 독립적으로 암호화하는 가장 기본 모드. 동일 평문에 대해 동일 암호문이 생성되어 패턴 노출 위험 존재. | 단순 데이터 전송 |
| CBC (Cipher Block Chaining) | 이전 단계의 암호문($C_{n-1}$)과 현재 평문($P_n$)을 XOR한 뒤 암호화 수행. 동일 평문이라도 매번 다른 암호문 생성. | 일반적인 파일/통신 암호화 |
| CFB (Cipher Feedback) | 암호문 피드백 구조. 64비트 미만(예: 8비트, $j$비트) 단위 전송 시 사용. | 링크 암호화, 인공위성 통신 등 |
| OFB (Output Feedback) | 암호화 블록의 출력을 다음 단계의 입력으로 피드백. 전송 오류가 다음 블록으로 전파되지 않음. | 무선 통신, 위성 데이터 전송 |
③ 대칭키 암호의 발전 및 확장
- 3중 DES (Triple DES, 3DES):
- DES의 전사적 공격(Brute-force) 취약성을 보완하기 위해 키 2개(또는 3개)를 사용하여 암호화 $\rightarrow$ 복호화 $\rightarrow$ 암호화 (EDE) 순으로 진행.
- AES (Advanced Encryption Standard):
- DES를 대체하기 위해 2000년 10월 표준으로 선정된 Rijndael(리인델) 알고리즘.
- 128/192/256비트 키 사용, 알려진 모든 공격에 대해 높은 안전성 제공.
- 기타 대칭키 알고리즘:
- IDEA: 유럽 중심 개발, 64비트 블록/128비트 키, 8라운드, PGP 메일 시스템 적용.
- RC5: 블록/라운드/키 크기를가변적으로 설정 가능.
- SEED: 1999년 한국정보보호진흥원(KISA) 개발, 128비트 블록/키, 16라운드.
2. 공개키 암호시스템 (Public-Key Cryptography)
① 대칭키 vs 공개키 비교
[대칭키 방식] 평문 ──▶ [ 암호화 (K) ] ──▶ [ 복호화 (K) ] ──▶ 평문
(동일한 키 공유, 속도 빠름, 부인방지 불가)
[공개키 방식] 평문 ──▶ [ 암호화 (KU_B) ] ──▶ [ 복호화 (KR_B) ] ──▶ 평문
(쌍을 이루는 키 사용, 기밀성 및 디지털 서명 구현 가능)
② 공개키 암호의 수학적 원리와 서비스
- 수학적 기반: 소인수분해 난제(RSA) 및 이산대수 난제(ElGamal, Diffie-Hellman, ECC) 이용.
- 합여계와 곱셈 역원 (Multiplicative Inverse):
- $a \times b \equiv 1 \pmod n$ 관계를 활용하여 공개키와 개인키 쌍을 생성.
- 제공 기능:
- 기밀 통신 (Confidentiality): 수신자의 공개키($KU_B$)로 암호화 $\rightarrow$ 수신자의 개인키($KR_B$)로만 복호화.
- 디지털 서명 / 근원지 증명 (Non-repudiation): 송신자의 개인키($KR_A$)로 암호화/서명 $\rightarrow$ 송신자의 공개키($KU_A$)로 누구나 검증 가능.
3. 키 관리 및 세션키 분배 프로토콜 (Kerberos & SESAME)
① 대칭키 기반 키 분배: Kerberos (커베로스)
KDC(Key Distribution Center / 키분배센터)를 중앙에 두고 가입자 간 세션키($SK$)를 안전하게 할당하는 SSO(Single Sign-On) 기반 인증 프로토콜입니다.
[클라이언트 A] ──── (1) Request [ID_A, ID_B] ────▶ [ KDC ]
◀── (2) E_KA[SK, T] / E_KB[SK, T] ──┘
(A와 B의 마스터키로 각각 암호화)
│
└───────── (3) E_SK[T] ─────────▶ [ 서버 B ]
◀───────── (4) E_SK[T 연산] ─────┘ (상호 인증 완료 후 세션키 통신)
- 클라이언트 A가 KDC에 서버 B와의 통신을 위한 세션키를 요청합니다.
- KDC는 $A$의 마스터키($K_A$)로 암호화된 세션키 정보와, $B$의 마스터키($K_B$)로 암호화된 세션키 정보(난수 $T$ 포함)를 전달합니다.
- $A$와 $B$는 각각 마스터키로 복호화하여 세션키($SK$)와 난수 $T$를 획득하고, 상호 인증 후 안전한 통신을 진행합니다.
② 공개키 기반 키 분배: SESAME (세사미)
공개키 인증기관(CA / Public Key Directory)을 통해 서로의 신뢰된 공개키를 교환한 후, 안전하게 대칭 세션키($KS$)를 공유하는 방식입니다.
[시행자 A] ── (1) Request ──▶ [공개키 기관] ── (2) E_KR_AU[KU_B] ──▶ [시행자 A]
── (3) E_KU_B[ID_A, N1] ────────────────────────────▶ [대응자 B]
[공개키 기관] ◀─ (4) Request ─ [대응자 B]
[공개키 기관] ── (5) E_KR_AU[KU_A] ─▶ [대응자 B]
[시행자 A] ◀─ (6) E_KU_A[N1, N2] ───────────────────────────── [대응자 B]
── (7) E_KU_B[N2] ─────────────────────────────────▶ [대응자 B]
── (8) E_KU_B[E_KR_A[KS]] (세션키 전달) ─────────────▶ [대응자 B]
- 송신자 $A$는 CA로부터 $B$의 공개키($KU_B$)를 발급받습니다.
- $A$가 $B$에게 인증 요청($N_1$)을 보내면, $B$ 역시 CA로부터 $A$의 공개키($KU_A$)를 발급받아 검증합니다.
- 난수 $N_1, N_2$ 교환을 통해 상호 인증을 완료합니다.
- $A$는 최종 세션키($KS$)를 자신의 개인키($KR_A$)로 서명하고 $B$의 공개키($KU_B$)로 암호화하여 $B$에게 전달한 뒤, 세션키 기반 통신을 시작합니다.