파이스텔 암호
(파이스텔 네트워크에서 넘어옴)
파이스텔 암호(Feistel cipher)는 블록 암호의 일종으로, 암호화 방식이 특정 계산 함수의 반복으로 이루어진다. 이 때, 각 과정에 사용되는 함수는 라운드 함수(round function)이라고 부른다.
![](http://upload.wikimedia.org/wikipedia/commons/thumb/f/fa/Feistel_cipher_diagram_en.svg/220px-Feistel_cipher_diagram_en.svg.png)
많은 블록 암호가 파이스텔 구조를 가지고 있다. 예를 들어, DES, 블로피시, SEED 등이 파이스텔 구조를 가진다. 하지만 AES와 같이 파이스텔 구조가 아닌 블록 암호도 존재한다.
방식
편집먼저 암호화하려는 정보를 길이가 같은 두 개의 정보로 쪼갠다. 이를 이라고 하고, 라운드 에서 사용되는 키를 , 그리고 라운드 함수를 로 놓는다.
암호화 과정에서는 각 라운드에서는 다음과 같은 연산이 이루어진다.
모든 라운드가 끝난 후, 최종적으로 가 암호화된 값이 된다.
복호화 과정에서는 반대의 연산이 이루어진다. 가 주어졌을 때, 각 복호화 라운드에서는 다음과 같은 연산이 이루어진다.
최종적으로 원래 값 를 얻는다.
이 모델의 장점 중 하나는 암호화 과정과 복호화 과정이 키 순서를 제외한 전체가 같은 계산을 반복한다는 것이다. 또한 라운드 함수가 역연산이 존재해야 할 필요성이 없다.