DES와 3DES의 구조, 취약점, 레거시 암호화 전환

DES와 3DES의 페이스텔 구조, 키 옵션, 알려진 취약점과 금융 레거시 환경에서의 활용 및 전환 배경을 정리합니다.

2026-08-14 · 최초 발행 2025-06-08

표준 블록 암호였던 DES의 위치

DES(Data Encryption Standard)는 1970년대 IBM에서 개발됐고, 1977년 미국 표준인 FIPS 46으로 채택된 대칭키 블록 암호화 알고리즘이다. 56비트 키로 64비트 단위의 데이터를 처리하며, 페이스텔(Feistel) 구조를 기반으로 16라운드 암호화를 수행한다.

키 생성 과정과 암호화 과정은 분리돼 있다. 발표 당시에는 안전성이 인정됐으나, 컴퓨팅 파워가 커지면서 키 길이 제한이 보안상 약점으로 드러났다. DES는 금융 거래와 정부 기관 통신 등에서 20년 이상 표준으로 쓰였고, 이후 더 강한 암호 방식으로 교체되기 시작했다.

전치와 치환을 반복하는 암호화 흐름

DES는 치환(substitution)과 전치(permutation)를 반복해 평문을 암호문으로 변환한다.

64비트 평문초기 전치 IP16라운드 반복최종 전치 IP-164비트 암호문56비트 스케줄링16개 라운드 생성

초기 전치는 입력 비트의 위치를 재배열한다. 이후 데이터는 각각 32비트인 좌우 블록으로 나뉘고, 라운드마다 서로 다른 라운드 키를 사용한다. 페이스텔 구조 덕분에 복호화에도 같은 구조를 활용할 수 있다.

라운드의 핵심은 F 함수다. 이 함수는 32비트를 확장 전치(E-box)로 48비트까지 늘리고, 라운드 키와 XOR 연산을 수행한다. 그 결과는 S-Box 치환과 P-box 전치를 거친다. S-Box는 8개의 6×4 치환 테이블로 구성되며, 48비트 입력을 32비트 출력으로 바꿔 비선형성을 제공한다. 마지막에는 초기 전치의 역연산인 최종 전치가 적용된다.

암호화 과정은 다음과 같이 쓸 수 있다.

  1. 평문 P를 64비트 블록으로 분할
  2. 각 블록에 대해 C = IP(P)로 초기 전치 수행
  3. L₀과 R₀으로 분할 (각 32비트)
  4. 16라운드 반복: Lᵢ = Rᵢ₋₁, Rᵢ = Lᵢ₋₁ ⊕ f(Rᵢ₋₁, Kᵢ)
  5. 최종 출력: 암호문 = IP⁻¹(R₁₆||L₁₆)

F 함수 내부의 변환은 다음 순서다.

  • E(Rᵢ₋₁): 32비트를 48비트로 확장
  • E(Rᵢ₋₁) ⊕ Kᵢ: 라운드 키와 XOR 연산
  • S₁..₈(E(Rᵢ₋₁) ⊕ Kᵢ): S-Box 치환 (48비트→32비트)
  • P(S₁..₈(...)): 32비트 전치

키 길이가 드러낸 DES의 한계

DES의 56비트 키는 2⁵⁶, 약 7.2 × 10¹⁶개의 가능한 조합만 제공한다. 1998년 EFF의 'Deep Crack'은 56시간 내 DES 키 크랙에 성공했고, 현대 컴퓨팅 환경에서는 전수조사가 수 시간 내 가능해졌다.

S-Box 설계에는 NSA의 개입과 백도어 가능성에 관한 의혹도 제기된 바 있다. 이후 이 개입은 차분 암호분석에 대한 방어를 강화하기 위한 것이었다고 확인됐다. Matsui의 선형 암호분석은 2⁴³ 복잡도로 공격할 가능성도 제시했다.

DES를 연속 적용한 3DES

3DES(Triple DES)는 DES의 약점을 보완하려고 동일 알고리즘을 연속으로 적용한 방식이다. 암호화, 복호화, 암호화 순서의 EDE(Encryption-Decryption-Encryption) 방식을 사용한다.

평문DES 암호화 K1DES 복호화 K2DES 암호화 K3암호문

수식으로는 C = E_K3(D_K2(E_K1(P)))로 표현된다. 키 구성에 따라 3개 키 방식은 K1 ≠ K2 ≠ K3이며 유효 키 길이는 168비트다. 2개 키 방식은 K1 ≠ K2 = K3으로 유효 키 길이가 112비트이고, K1 = K2 = K3인 호환성 모드는 DES와 동일하게 동작한다.

기존 DES 구현을 재활용할 수 있고 이론적 보안 강도를 높였다는 점은 장점이었다. FIPS 46-3에서는 2인자와 3인자 방식이 모두 공식 표준화됐다. 반면 처리 속도는 3배 느리고, Meet-in-the-middle 공격 취약성이 존재한다. 2키 방식은 이론적으로 2¹¹² 복잡도로 공격할 수 있다.

금융과 레거시 환경에서 남은 이유

3DES는 EMV(Europay, Mastercard, Visa) 칩 카드 거래, ATM 및 POS 터미널 통신 암호화, SWIFT 금융 메시지 보안에 사용됐다. DES를 사용하던 시스템은 하드웨어를 교체하지 않고 소프트웨어 업데이트만으로 보안을 보완할 수 있었기 때문에 3DES로의 전환이 가능했다.

정부 및 군사 통신에서도 비밀 등급 이하 정보를 보호하는 용도로 활용됐으며, 기존 DES 하드웨어와의 호환성을 유지할 수 있었다.

구현 흐름과 ATM PIN 처리

다음 의사 코드는 DES 암호화와 3DES의 EDE 적용 순서를 보여준다.

function DES_encrypt(plaintext, key):
    subkeys = generate_subkeys(key)
    block = initial_permutation(plaintext)
    L, R = split_block(block)

    for i from 1 to 16:
        temp = R
        R = L XOR f(R, subkeys[i])
        L = temp

    block = combine(R, L)  // 16라운드 후 좌우 교환
    ciphertext = final_permutation(block)
    return ciphertext

function Triple_DES_encrypt(plaintext, key1, key2, key3):
    // EDE 모드 구현
    temp1 = DES_encrypt(plaintext, key1)
    temp2 = DES_decrypt(temp1, key2)
    ciphertext = DES_encrypt(temp2, key3)
    return ciphertext

ATM 거래에서 PIN을 처리할 때는 사용자가 PIN을 입력하고, ATM이 이를 패딩해 64비트 블록을 만든다. 이 블록은 3DES로 암호화돼 은행 서버로 전송되며, 서버는 3DES 복호화 뒤 PIN을 검증한다. 인증에 성공하면 거래가 승인된다. 원본 예시의 PIN 값은 "1234"다.

폐기와 전환의 맥락

DES는 2005년 NIST에 의해 공식 폐기됐다. 3DES는 NIST SP 800-131A에 따라 2023년까지 제한적 용도로 허용됐고, 금융권에는 여전히 3DES를 쓰는 레거시 시스템이 존재한다. 신규 시스템은 대부분 AES로 마이그레이션 중이다.

3DES 역시 점진적으로 완전히 폐기될 예정이며, 양자 컴퓨팅 시대에는 Post-Quantum Cryptography 전환이 필요하다. 블록체인과 IoT 같은 새로운 기술에서는 경량 암호화 알고리즘이 선호된다. DES와 3DES는 현재의 보안 선택지라기보다, 현대 블록 암호의 설계 원리와 암호화 표준의 전환 과정을 이해하게 하는 중요한 학습 대상이다.

DES3DES대칭키 암호블록 암호정보보안