본문 바로가기

정보보호/정보보호론(박승철)

정보보호론-(11) 대칭키 블록 암호화, 스트림 암호화

정보보호론-(11) 대칭키 블록 암호화, 스트림 암호화

DES(Data Encryption Standard)
- IBM에 의해 고안되고 1976년 미국 표준으로 채택된 대칭키 블록 암호화 기법
- 1998년 해독되어 취약한 암호화 기법으로 알려짐

DES의 구조
- 64bit 블록
- 56bit 키(Key space size = 2^56)
- 16 Round
- 페이스텔 네트워크(Feistel Network) 구조
- 16 라운드(마지막 라운드)는 좌,우 32bit swap과정이 없음(2차 전치 과정에 위임)

<그림 1: DES 구조>

DES 전치표(1차, 3차 전치에 적용)

<그림 2: DES 전치표>

 

DES 라운드 구조
- 페이스텔 네트워크(Feistel Network) 구조
- L(x) = R(x-1)
- R(x) = L(x-1) ⊕ F(R(x-1), K(x))
- K(x) 는 라운드 x의 서브키를 의미함.

<그림 3: DES 페이스텔 네트워크 라운드 구조>

라운드 함수, F(x)

<그림 4: 라운드 함수>

(1) R(x-1)은 32bit이므로 라운드 x의 서브키 48bit와 XOR 연산을 하기 위해 48 bit로 확장되어야 한다.
(2) 따라서, R(x-1)은 P-Box 확장 전치로 32bit -> 48bit으로 확장된다.
(3) 이후 확장된 R(x-1) ⊕ 라운드 x 서브키 의 결과를 얻는다.
(4) 얻어진 결과(48bit)는 8 S-Box 치환과 축소 전치과정을 거친다. (32bit)
(5) 마지막으로 P-Box에 의한 전치과정을 거쳐 끝난다.

DES 복호화
# 15라운드 암호화 결과
- R(15) = L(14) ⊕ F(R(14), K(15))
- L(15) = R(14)

# 15라운드 복호화 결과
- R(14) = L(15)
- L(14) = R(15) ⊕ F(L(15), K(15))

<그림 5: DES 복호화>

L(14) = R(15) ⊕ F(L(15), K(15)) 의 증명과정
R(15) ⊕ F(L(15), K(15))
=> 15라운드 암호화 과정에 의해 R(15) = L(14) ⊕ F(R(14), K(15)) 식이 성립되므로,
=> L(14) ⊕ F(R(14), K(15)) ) ⊕ F(L(15), K(15))
=> 15라운드 암호화 과정에 의해 L(15) = R(14) 식이 성립되므로,
=> ( L(14) ⊕ F(R(14), K(15)) ) ⊕ F(R(14), K(15))
=> ⊕(XOR 연산)은 결합 법칙, 교환 법칙을 만족하므로,
=> L(14) ⊕ ( F(R(14), K(15)) ⊕ F(R(14), K(15)) )
=> 그런데, XOR연산은 A ⊕ A = 0으로써 XOR의 연산의 역원(연산결과 항등원이 나오게 하는 피연산자)은 자기 자신이다. 또한, XOR 연산의 항등원은 A ⊕ 0 = A으로써 0을 항등원으로 갖는다.
=> L(14) ⊕ 0
=> L(14)

DES의 장점
- 키의 작은 변화가 암호문에 큰 변화를 만드는 쇄도효과(Avalanche Effect)가 큼 -> 암호문으로부터 키를 유추하기 힘듦
- 암호문의 각 비트가 평문의 많은 비트들에 의존하는 완비성(completeness)이 높음 -> 암호문으로부터 평문을 유추하기 힘듦.

DES의 단점
- 키의 길이가 56bit로 짧아 Key space size가 2^56으로 상당히 적어 전사 공격(Brute Force)에 취약하다
- 결과적으로, 1998년 해독되어 암호화로써 신뢰성을 상실함.

2DES
- DES 암호화의 단점을 극복하고자 고안되었으나 Key space size가 2*2^56 = 2^57으로 DES와 마찬가지로 전사 공격에 취약함.

3DES
- DES에 비해 강력한 암호화 기능을 지원
- DES의 3배에 이르는 처리속도 문제(성능저하)로 사용범위가 축소됨
- 최근, NIST로부터 3DES 또한 DES와 마찬가지로 신뢰성을 상실했다고 발표됨.
- 암호화 과정에 DES 복호화가, 복호화 과정에 DES 암호화 과정이 섞여있음

<그림 6: 3DES 절차>

AES(Advanced Encryption Standard)
- 2001년 미국 표준화 기구인 NIST(National Institute of Standard and Technology)에 의해 표준화되어 공표
Rijndael(레인달) 알고리즘이 채택됨.
- 128비트 블록 암호
- 128비트, 192비트, 256비트 키 사용
- SPN(Substitution-Permutation Network) 구조 채택
- 간편성과 우수한 성능 등으로 다양한 영역에서 광범위하게 사용됨

SEED 암호
- 우리나라에서 개발한 대칭키 암호화 알고리즘
- 국내에선 인터넷 뱅킹, 인터넷 통신 보안 부분에 SEED 암호화가 사용됐음
- 128비트 블록 암호
- 128비트, 256비트 키 사용
- 페이스텔 네트워크(Feistel Netwrok) 구조

대칭키 스트림 암호
- 입력 정보 요소(바이트)를 연속적으로 처리하여 암호화된 정보 요소들을 연속적으로 생성
- 절차가 간단하여 정보 요소를 즉시에 암호화할 필요가 있는 경우 적합함

스트림 암호 구조
- 키(Key)가 키 스트림 생성기(Key Stream Generator)에 입력되어 연속적인 8비트 키 스트림을 생성함
- 생성된 키 스트림과 입력된 평문간 XOR 연산을 수행함으로써 암호문을 만듦
- 대표적인 예 : RC4, SEAL

<그림 7: 스트림 암호화 절차>

Reference
1. 

제11강+대칭키암호화.pdf
0.60MB

2. https://www.youtube.com/watch?v=dFb2ezWDO38