본문으로 바로가기

블록암호(Block Cipher) #페이스텔(Feistel)

category Study/crypto 2018. 4. 22. 23:10


블록암호(Block Cipher)란?


정보를 정해진 블록 단위로 암호화 하는 대칭키 암호체계이다. 





블록암호 표기


- P

평문 블록

- C

암호문 블록

- K

- C = E(P,K) 

암호화

- P = D(C,K)

복호화





반복되는 블록 암호의 특징


- 평문과 암호문이 고정된 크기의 블록으로 구성

- 암호문은 평문의 반복되는 회전 함수로 생산

- 회전 함수 입력은 '키'와 '전번 회전 출력'으로 구성

- 주로 소프트웨어로 구축




페이스텔 암호(Feistel Cipher)


페이스텔 암호란 블록 암호 설계 방법으로 특정 암호를 지칭하는 것이 아니다. 이 설계방법은 특정한 계산함수의 반복으로 이루어지는데 이러한 함수를 라운드 함수(Round function)이라고 한다. DES, SEED 등 파이스텔 구조를 가지는 암호체계가 많다.




암호화 알고리즘


- 평문의 좌/우를 같은 크기로 나눈다 = 

- n번의 회전동안 다음과 같은 연산을 진행한다 ( : 라운드 함수,    : 보조키)

- 최종적으로 암호화된 가 암호문이 된다.




복호화 알고리즘


- 암호문으로 다음과 같은 연산을 진행한다

- 최종적으로 복호화된 가 평문이 된다




페이스텔 암호는 라운드 함수가 역연산이 존재해야 할 필요성이 없다. XOR연산으로 해결되기 때문이다. 페이스텔 암호 공식은 어떤 함수 F에 대해서도 성립하지만 특정 함수 F에 대해서만 안전하다. 라운드 함수의 반환값이 0인 경우를 상상해보면 쉽게 이해할 수 있다.

'Study > crypto' 카테고리의 다른 글

블록암호(Block Cipher) #AES  (0) 2018.04.25
블록암호(Block Cipher) #DES  (4) 2018.04.23
스트림 암호(Stream Cipher) #RC4  (2) 2018.04.22
스트림 암호(Stream Cipher) #A5/1  (0) 2018.04.22
암호분석(Crytanalysis)  (0) 2018.04.22