본문 바로가기

암호학

[암호학] DES란?

지난 시간에 알아본 DES에 대해서 조금 더 자세히 알아보자.

 

DES의 구조

 

구조는 우리가 전에 알아본 Feistel 구조이지만 특별하게 permutation이 처음에 한번 마지막에 한번 들어가 있다. 

 

또한 처음과 마지막에 있는 permutation은 서로 역연산 관계이다.

 

>>그래야 이 결과를 다시 넣을 때 원래 값이 나오기 때문

 

DES의 특징

  • 64의 평문을 64비트의 암호문으로 만드는 블록 암호시스템으로 64비트의 키를 사용한다.
  • 이때 64비트의 키 중 56비트는 실제 키가 되고 나머지 8비트는 검사 용 비트로 사용된다
  • 16라운드를 반복한다(1라운드당 L과 R 값이 바뀜)
  • 복호화 과정은 암호화 과정과 동일하지만 키만 역순으로 사용함.

 

DES의 4가지 모드

1.ECB(Electronic Code Block) 방식

 

앞에서 알아본 대로 메시지를 블록 단위로 나누어 각각을 암호화하는 모드.

 

동일한 크기의 평문 블록은 동일한 크기의 암호 블록이 됨(64비트 블록을 암호화하면 암호화된 블록도 64비트)

 

하지만 치명적인 단점이 존재한다.

 

 

만약 이런 블록들이 있다고 하자

 

첫 번째에 있는 블록을 암호화한 것을 C1, 세 번째에 있는 블록을 암호화한 것을 C3라고 하면

 

C1 = C3이 된다(원래 평문이 같기 때문)

 

암호화가 이미 되었는데 무슨 문제인가라는 생각을 할 수 있다.

 

만약 이렇게 겹치는 암호문이 생긴다면 해커들한테 엄청난 힌트가 된다.

 

빈도분석

 

이 사진은 영어 단어에서 어떤 알파벳이 많이 나오는지 퍼센트로 변환한 것이다.

 

보면 e가 제일 많이 쓰이고 다음으로 t, a 인 것을 알 수 있다.

 

그렇다면 이 사진이 위에서 암호문이 겹치는 거랑 무슨 상관이 있을까?

 

정답은 암호문에 나온 알파벳들을 분석하여 많이 나온 알파벳들이 저기 위에 있는 e, t 또는 a일 가능성이 높은 것이다.

 

해커들은 어떤 알파벳이 무엇인지 유추를 할 수 있게 된다.

 

또한 a, i 이외에 단독으로 쓰이는 알파벳이 없으므로 이것으로도 유추를 할 수 있다.

 

이 빈도분석은 알파벳만 가능한 것이 아닌 단어, 문장단위로도 가능하기 때문에 동일한 암호문이 동일하게 암호화되면

위험하다는 것이다.

 

2. CBC(Cipher Block Chaing) 방식

 

CBC모드에선 Ciphertext0가 추가된 것을 볼 수 있다. 이는 seed 또는 IV(initialization Vector)이라고도 부르는데,

 

그냥 단순한 초기값이다(항상 다르게 들어감).

 

이를 블록 1과 XOR 연산을 하는데 여기서 중요한 것은 연산을 해서 나온 암호문을 다음 블록과 XOR연산을 하는 것이다.

 

이렇게 하면 똑같은 단어라도 새로운 암호 블록이랑 XOR연산을 하기 때문에 값이 계속 달라진다.

 

이러한 과정이 체인과 비슷하게 생겨서 CBC라 불린다(복호화 알고리즘은 암호화 알고리즘의 반대)

 

3. CFB(Cipher Feed Back) 방식

CFB 방식은 CBC 방식과 유사하지만 Seed 값을 암호화해 XOR연산을 하고 그 값을 다시 암호화하여 XOR연산을 하는 데 있어서 차이점이 있다.

 

특별한 응용인 경우, n 비트보다 작은 r 비트 단위로 암호화해야 할 때 사용한다.

 

4.OFB(Output Feed Back) 방식

3번과 유사하지만 XOR 연산을 하여 나온 결과를 다음 블록과 연산하는 것이 아니라 암호화한 Seed값을 블록마다 XOR 연산을 한다.

 

CFB 방식은 암호화 블록이 나와야 다음 연산이 가능하지만(순차적)

OFB 방식은 동시에 처리할 수 있는 것이 장점이다(병렬적).

 

Double/Triple DES

컴퓨터가 나날이 발전하고 있어 DES가 언제까지나 안전하다고는 할 수 없어졌다

 

그래서 생각해 낸 것이 Double DES이다.

Double DES

Double DES란 말 그대로 DES를 서로 다른 키로 두 번 돌리는 것을 뜻한다.

 

이때 키 값은 사실상 2^112 이 되는데 당연히 키 값이 클수록 해킹하기 어려워진다.

 

근데 이를 누군가가 수학적 원리에 기반하여 공격해 보니(Meet-in-the-Middle, 중간과정공격)

 

실제로는 2^57 인 것으로 밝혀졌다(사실상 안전성이 향상되지 않음)

 

Triple DES

그래서 이번엔 사람들이 DES를 3번 적용해 보았는데 Double DES처럼 쉽게 뚫리지는 않았다.

 

기타 대칭키 암호 방식

IDEA

SEED

Skipjack

RC5

AES

...