블록암호(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 |