블록 암호 기법
큰 데이터를 블록 단위로 나누어 블록별로 암호화를 한다.
블록 암호와 스트림 암호의 비교
블록 암호
N비트 평문 입력으로 N비트의 암호문을 출력한다.
역으로 N비트의 암호문으로 N비트의 평문을 출력한다.
총 2^n 가지의 서로 다른 블록이 존재할 수 있다.
N이 4일때의 블록치환. 4비트의 입력으로 16개의 값 중 하나를 선택하고, 내부 치환에 의해 16개의 값중 하나에 대응한 4비트를 출력하게 된다.
ex) 1111(입력) = 15 -> 7 = 0111(출력)
블록이 작으면 취약. 크면 클수록 암호화 강도는 높하짐. 그러나 작은 블록이 구현과 성능면에서 유리하다. 적당한 크기의 N을 설정해야 한다.
Feistel 암호방식
Feistel 암호 방식은 현재 사용하고 있는 대부분의 중요한 대칭 블록 암호 의 기본구조이다. 치환과 순열을 번갈아 가면서 수행하는 암호방식으로 혼돈(confusion) 과 확산(diffusion)이 적용된다. 확산은 각 평문의 숫자가 다수의 암호문 숫자 값에 영향을 주는 것을 말하고, 혼돈은 암호문의 통계적 구조와 암호 키 값 사이의 관계를 복잡하게 만드는 것을 말한다.
암호화 반복구조
복호화 반복구조
평문 블록(W)을 L0(W/2)와 R0(W/2) 로 분할처리한다. K로 부터 유도된 n개의 키(K0~Kn)를 사용한다. n회의 동일한 반복구조를 실행한다.
각 반복구조는 오른쪽 R0에 함수 F를 적용하고, 왼쪽의 L0와 XOR(이때 치환작용이 적용) 을 한다. 좌우 양쪽 결과를 교환(순열작용 적용)한다.
'좌뇌 > 보안' 카테고리의 다른 글
DES(데이터 암호화 표준) (0) | 2018.04.09 |
---|---|
AES(고급 암호화 표준) (0) | 2018.04.09 |