DES (Data Encryption Standard)

Seungyun Lee·2026년 1월 30일

Cybersecurity

목록 보기
4/13
[암호학 (Cryptography)]
   ↓
[대칭키 암호 (Symmetric Encryption)]
   ↓
   ├─ 1. 스트림 암호 (Stream Cipher): 비트 단위로 실시간 암호화 (예: 지난주 배운 LCG 기반 암호)
   └─ 2. 블록 암호 (Block Cipher): 덩어리 단위로 암호화 (★ 지금 배우는 DES, AES)
            ↓
         [DES의 내부 설계]
            ├─ 구조: Feistel Network
            ├─ 엔진: F-함수 (S-Box, P-Box)
            └─ 열쇠 공급: Key Scheduling

Block Cipher

인풋 비트 하나 변경으로 output bit가 많이 변경된다

  • Avalanche Effect (쇄도 효과): 단 1비트의 변화가 결과값의 절반 이상의 변화를 일으키는 현상.

Q) How do we build a block cipher
Confusion 과 Diffusion 두 가지 원칙을 여러 번 반복(Product Cipher)합니다.

    1. Confusion: 평문과 암호문 사이의 상관관계를 숨김. 주로 S-Box를 통해 구현.
    1. Diffusion: 평문의 비트 하나를 바꾸면 암호문의 여러 비트가 바뀌게 함. 주로 P-Box를 통해 구현.

DES란?

(Data Encryption Standard)
구조: 64비트 블록 암호 (입력 64bit -> 출력 64bit).

  • 키 길이: 총 64비트이나 실제 유효 키는 56비트 (8비트는 패리티 비트로 사용).
  • 현재 상태: 56비트 키는 현대 컴퓨팅 성능으로 Brute-force(무차별 대입) 공격에 취약함(오늘날 수 시간 내 해독 가능). Key 가 너무 짧다

DES 계층별 설명

0: 건물입구 Initial Permutation, IP


IP (Initial Permutation, 초기 순열):
단계: 64비트 평문이 들어오자마자 가장 먼저 수행됩니다.
하는 일: 64비트의 순서를 표에 따라 마구 섞습니다.
다음 단계: 섞인 결과물을 반으로 나눠(L0,R0L_0, R_0) 드디어 1라운드(Feistel Network)로 보냅니다.

1: 전체 건물 (DES 구조 = Feistel Network)

DES는 동일한 구조를 16번 반복하는 페이스텔 네트워크 방식을 사용합니다.
블록 암호의 선구자인 호스트 페이스텔의 이름을 빌어 명명한 페이스텔 암호는 특정한 암호 체계를 지칭하는 것이 아니라 일반적인 암호의 설계 원리를 의미한다

DES라는 암호화 건물 전체가 Feistel Network라는 설계도로 지어졌습니다. 이 구조의 핵심은 "똑같은 일을 하는 층(Round)을 여러 개 쌓는다"는 것입니다.

  • 구조: 64비트 평문을 왼쪽(LL) 32비트, 오른쪽(RR) 32비트로 나눕니다.

  • 작동: 오른쪽 값(RR)은 그대로 다음 층의 왼쪽(LL)으로 내려가고, 오른쪽 값(RR)을 재료로 요리한 결과(F-함수)를 왼쪽(LL)과 XOR 합니다.
    Li+1=RiL_{i+1} = R_i
    Ri+1=LiF(Ri,Ki)R_{i+1} = L_i \oplus F(R_i, K_i)
    오른쪽 32비트만 FF 함수와 키를 거쳐 왼쪽과 XOR됨

  • 반복: 이 과정을 DES에서는 16번(16 Rounds) 반복합니다.

2: 각 층 (Round Function = F-함수)

질문하신 Round Function이 바로 F-함수가 맞습니다. 매 라운드마다 오른쪽 32비트 데이터를 '변형'시키는 핵심 엔진이죠. 말씀하신 S-Box와 P-Box는 모두 이 F-함수 내부의 부품들입니다.


#F-함수(Round Function) 내부의 요리 순서:
A. Expansion (E-Box): 32비트 데이터를 48비트로 뻥튀기합니다.
B. Key Mixing: 뻥튀기된 데이터와 키 스케줄링에서 만들어준 48비트 라운드 키(KiK_i)를 XOR 합니다.
C. Substitution (S-Box): 48비트를 다시 32비트로 줄입니다. (여기서 데이터가 비선형적으로 확 바뀝니다. 가장 중요한 보안 장치!)
D. Permutation (P-Box): 32비트 비트들의 위치를 마지막으로 한 번 더 섞습니다.

sbox는 시험이든 과제든 제공되니 외울필요는 없지만
sbox rule 은 기억해야한다, 어떤 SBOX를 쓰는지도 주의해라
1992년에는 2power 47이 그때당시 컴퓨터 성능이 안좋아 안전했지만 이제는 아니다

3: 전력 공급 장치 (Key Scheduling)

키 스케줄링은 Feistel Network가 여러 번 있는 것을 말하는 게 아니라, 각 층(Round)마다 필요한 "서로 다른 열쇠"를 공급해 주는 과정입니다.
64비트 원본 키에서 각 라운드에 사용할 48비트 키 16개를 만드는 과정입니다.

[키 생성 순서]

  1. PC-1 (Permuted Choice 1): 64비트 중 패리티 비트(8, 16, 24...) 8개를 버리고
    56비트만 선택하여 C0, D0(각 28비트)로 나눔.
  2. LS: Left Shift rotation: 각 라운드마다 C와 D를 왼쪽으로 회전 이동(Rotation) 시킴.
    • 1, 2, 9, 16 라운드: 1비트 이동
    • 나머지 라운드: 2비트 이동
    • 총 28비트를 이동하게 되어 16라운드가 끝나면 다시 원래 상태(C16=C0)가 됨.

  3. PC-2 (Permuted Choice 2): 이동된 56비트 중 48비트만 선택하여 라운드 키(Ki) 생성.

DES의 PC-2(Permuted Choice 2)는 키 스케줄링의 최종 단계로, 56비트로 확장/이동된 키 데이터를 실제 라운드에서 사용할 48비트 라운드 키(K1K16K_1 \sim K_{16})로 압축하고 섞는 역할을 합니다.

[ PC-2 작동 요약 ]

입력: 56-bit (Left Shift를 마친 Ci, Di 합계)
  ↓
과정: 
  1. 56비트 중 8개 비트를 탈락시킴 (Compression)
  2. 남은 48비트의 위치를 마구 섞음 (Permutation)
  ↓
출력: 48-bit 라운드 키 (Ki)

핵심 데이터:
- Ki는 원본 키의 재배열된 형태임.
- 라운드마다 48비트 조합이 계속 바뀜.
- 모든 비트는 16라운드 중 평균 14번 참여함.

4. 건물출구: IP1IP^{-1}

(Inverse Initial Permutation, 역 초기 순열):
단계: 16라운드가 모두 끝나고 난 맨 마지막에 수행됩니다.하는 일: IP에서 섞었던 비트 위치를 다시 원래 규칙대로 되돌려 놓습니다.결과: 이 단계를 거치면 최종 암호문(64비트)이 완성되어 공장 밖으로 나갑니다.

5. Decryption

5.1 DES 복호화의 대원칙

DES는 페이스텔 네트워크(Feistel Network) 구조를 사용하기 때문에, 암호화할 때 사용했던 하드웨어와 알고리즘을 그대로 복호화에 사용할 수 있습니다. 유일하게 다른 점은 "라운드 키(KiK_i)를 넣는 순서만 반대"라는 것입니다.

  • 암호화 순서: K1K2K16K_1 \rightarrow K_2 \rightarrow \dots \rightarrow K_{16}
  • 복호화 순서: K16K15K1K_{16} \rightarrow K_{15} \rightarrow \dots \rightarrow K_1

5.2왜 키 순서만 바꾸면 복호화가 되나요?

이것은 XOR 연산의 특성 때문입니다. 같은 값을 두 번 XOR하면 원래대로 돌아오는 성질(ABB=AA \oplus B \oplus B = A)을 이용하는 것이죠.
1. 암호화 마지막 단계: 16라운드에서 오른쪽 데이터(R15R_{15})에 F(R15,K16)F(R_{15}, K_{16})를 계산한 뒤 왼쪽 데이터(L15L_{15})와 XOR 하여 R16R_{16}을 만듭니다.
2. 복호화 첫 단계: 암호문이 들어오면 가장 먼저 K16K_{16}을 적용합니다. 그러면 암호화 마지막 단계에서 섞였던 K16K_{16}의 영향이 XOR 연산에 의해 상쇄(Cancel out)되어 다시 L15L_{15} 상태로 돌아갑니다.

[ DES 복호화 과정 ]

1. [입구] 암호문 (64-bit) 도착
2. [전처리] 초기 순열 (IP): 암호문 비트 위치 섞기
3. [본 공정] 16 라운드 페이스텔 네트워크 (암호화와 동일한 엔진)
   - 1라운드: 역순으로 생성된 키 K16 사용
   - 2라운드: K15 사용
   ...
   - 16라운드: K1 사용
4. [마무리] 역 초기 순열 (IP-1): 초기 순열에서 섞인 위치 복구
5. [출구] 평문 (64-bit) 복원 완료

DES의 대안 (DES Alternatives)

3DES (Triple DES): * DES를 세 번 연속 사용하는 방식입니다.

  • 여전히 안전하다고 간주되며, 특히 금융권에서 오래 사용되었습니다.

AES (Advanced Encryption Standard): * 현재의 표준입니다.

  • DES보다 훨씬 빠르고 강력하며(128/192/256비트 키 사용), 전 세계적으로 가장 많이 쓰입니다.

요약하자면: DES는 키 길이가 너무 짧아서(56비트) 현대 컴퓨터로는 금방 뚫립니다. 그래서 키 길이를 대폭 늘린 3DES나 아예 새로운 표준인 AES로 세대교체가 되었습니다.

profile
RTL, FPGA Engineer

0개의 댓글