WIPIVERSE

파이스텔 암호

파이스텔 암호(Feistel cipher)는 블록 암호의 일종으로, 암호화 방식이 특정 계산 함수의 반복으로 이루어지는 대칭 키 블록 암호 구조이다. 각 반복 과정에 사용되는 함수를 라운드 함수(round function)라고 부른다.

개요

파이스텔 암호는 1970년대 초반 IBM의 암호학자 호르스트 파이스텔(Horst Feistel)이 개발한 구조로, 블록 암호 설계의 중요한 기초를 이룬다. 이 구조는 암호화 과정에서 입력 데이터를 왼쪽과 오른쪽 두 부분으로 나누고, 각 라운드에서 라운드 키가 적용된 함수를 한쪽 부분에 적용한 후 두 부분을 교환하는 방식을 반복한다.

동작 방식

암호화하려는 평문 블록을 길이가 같은 두 개의 정보로 나누어 각각 $L_0$(왼쪽)과 $R_0$(오른쪽)이라고 한다. $n$개의 라운드에 대해 각 라운드에서 사용되는 키를 $K_i$, 라운드 함수를 $F$라고 할 때, 각 라운드에서는 다음과 같은 연산이 수행된다.

$$ L_{i+1} = R_i $$ $$ R_{i+1} = L_i \oplus F(R_i, K_i) $$

모든 라운드가 끝난 후 최종적으로 $(R_{n+1}, L_{n+1})$가 암호문이 된다.

복호화 과정에서는 암호화와 동일한 구조에 키 순서만 반대로 적용하여 원래 평문을 복원한다.

특징

파이스텔 암호 구조의 주요 장점은 다음과 같다.

  • 암호화와 복호화의 대칭성: 암호화 과정과 복호화 과정이 키 순서를 제외하고 동일한 계산을 반복하므로, 하드웨어 및 소프트웨어 구현이 용이하다.
  • 라운드 함수의 역연산 불필요: 라운드 함수 $F$가 일대일 대응(역함수)일 필요가 없으므로, 다양한 비선형 함수를 자유롭게 설계할 수 있다.
  • 라운드 수 조절 가능: 원하는 만큼 라운드를 늘려 암호학적 강도를 높일 수 있다.

대표적인 적용 사례

많은 블록 암호가 파이스텔 구조를 기반으로 설계되었다. 대표적인 예는 다음과 같다.

  • DES(Data Encryption Standard): 가장 널리 알려진 파이스텔 구조 암호로, 16라운드로 구성된다.
  • 블로피시(Blowfish)
  • SEED: 한국에서 개발한 블록 암호
  • FEAL(Fast data Encipherment Algorithm)
  • LOKI
  • KASUMI

다만 AES(Advanced Encryption Standard)와 같이 파이스텔 구조가 아닌 SPN(Substitution-Permutation Network) 구조의 블록 암호도 존재한다.

둘러보기

더 찾아볼 만한 주제

    전체 문서 보기