DES

블록암호의 일종으로, 미국 NBS (National Bureau of Standards, 현재  NIST)에서 국가 표준으로 정한 암호이다. DES는 대칭키암호이며, 56비트의 키를 사용한다.

64비트 블럭 암호 알고리즘. 56비트 키를 사용(64비트 중 8비트는 parity check로 사용)

라운드 수 : 16


DES 심플버전

IP(Initial Permutation) : 초기 전치

fk : 전위나 전치, 치환 (키 의존적)

SW : 데이터의 두 절반을 상호 교환하는 함수

암호화와 복호화 프로세스는 아래와 같다.




키생성 과정



가운데 키 생성과정 보자. 예를들어 여기서 1 0 0 1 0 0 1 1 1 0 의 10bit 키 입력이 들어가게 되면,


P10


P10에 의해서 0 0 0 1 1  0 1 1 1 0 가 출력된다. 이를 반씩 나누어 0 0 0 1 1 / 0 1 1 1 0 가 되고

P8

P8을 통해 1 1 1 1 1 0 0 0 의 8bit 키 K1이 생성된다.

K2 생성도 이와 같다.

8bit의 평문은 IP를 거치게되는데,



IP



이 과정을 예를 들면, 1 0 1 0 1 1 0 0 이 입력 0 1 1 1 0 0 1 0 가 출력되는 것이다.

fk의 내부는 아래와 같다.




E/P에서는 4bit입력에 대한 8bit출력으로  확장과 치환이 일어난다.

 

여기까지 DES의 심플 버전이었다.

DES의 심플버전은 8비트로 2단계처리 밖에 안하지만, 실제 DES는 64비트, 16단계 처리를 한다. F함수또한 4비트가아닌 32비트연산이다.

'좌뇌 > 보안' 카테고리의 다른 글

블록 암호 기법(Block cipher)  (0) 2018.04.09
AES(고급 암호화 표준)  (0) 2018.04.09



블록 암호 기법

 큰 데이터를 블록 단위로 나누어 블록별로 암호화를 한다.


블록 암호와 스트림 암호의 비교


블록 암호

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

+ Recent posts