<암호학>
2008.01.23 17:00

[네기] 제 3장 DES 암호

조회 수 2080 추천 수 0 댓글 1
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
공백 5칸




DES(Data Encryption Standard)암호는 암호키와 복호키가 같은 대칭키 암호로 1960년대 말에 IBM에서 개발하여 1977년 미국 표준 암호 알고리즘으로 채택되어 속도가 빠르기 때문에 금융기관 등 여러 분야에서 세계적으로 사용되고 있는 암호이다. DES암호는 대칭 블록암호로서 평문의 각 블록의 길이가 64비트이고 키가 64비트(실제로는 56비트가 키이고 8비트는 검사용)이며 암호문이 64비트인 암호이다.

DES 알고리즘은 64비트의 평문이 16라운드의 Feistel 연산을 거쳐 64비트의 암호문이 나오게 하는 것이다. 전체적인 구성은 아래 그림과 같다.




Feistel 연산이란 각각 t비트인 두 블록 로 이루어진 2t비트 평문 블록이 r라운드를 거쳐 암호문 으로 변환되는 반복 연산을 말한다. 보통 Feistel 연산은 3라운드 이상이며, 짝수 라운드로 구성된다. 이러한 Feistel 연산은

(1) 라운드 함수에 관계없이 역변환이 가능하며(즉, 암·복호화 과정이 같음),
(2) 두 번의 수행으로 블록간의 완전한 diffusion(분산)이 이루어지며,
(3) 알고리즘의 수행속도가 빠르고,
(4) H/W 및 S/W로 구현이 용이하고,
(5) 아직 구조상의 문제점이 발견되고 있지 않다는 장점을 지니고 있다.
DES암호에서의 Feistel 연산은 다음 XOR연산을 이용한다.
XOR연산(eXclusive-OR)은 2진법에서의 다음과 같은 한 자리수끼리의 덧셈의 계산결과가 한 자리수인 연산을 의미한다.

1 + 1 = 0, 0 + 0 = 0, 1 + 0 = 1, 0 + 1 = 1
DES알고리즘은 전수공격에 취약하다. 실제로 컴퓨터의 성능발달과 해독알고리즘의 개량으로, 전수조사에 의한 DES암호 공격이 실행되어 1997년 2월에는 RSA사에서 개최한 DES Challenge I에서 78,000대의 컴퓨터를 이용하여 96일만에, 1998년 7월에는 DES Challenge II에서 250,000달러의 전용칩을 제작하여 56시간만에, 1999년 1월 18일 DES Challenge III에서 1만 여대의 컴퓨터와 전용칩을 이용하여 DES암호를 22시간 15분만에 해독(www.rsasecurity.com)을 하였다.

따라서 DES암호는 더 이상 안전한 암호가 아니다. 하지만 전수조사에 의한 공격은 암호키의 길이를 늘리거나 암호화한 것을 다시 암호화하거나 하면 효과적이지 못하다. DES암호를 보완한 것으로, 2000년 현재 실제로 이용하고 있는 것은 3중 DES암호를 이용하거나 암호키의 비트수를 128비트로 늘린 개량된 DES암호인 IDEA(International Data Encryption Algorithm) 등을 사용하고 있다.

한국에서의 블록암호로는 1998년 10월 한국정보보호센터(KISA,www.kisa.or.kr )에서 128비트 블록암호인 SEED를 개발하여, 1999년 9월에 한국통신기술협회에서 국가 표준안(TTA.KO-12.0004)으로 제정하였다. SEED는 특허가 걸려있지 않으므로, 아무런 제약이 없이 상용화하여 사용할 수 있다. 그 외 고려대와 포항공대 등에서 개발한 블록암호 시스템이 있다.

3중 DES는 56비트인 2개의 서로 다른 암호키 112비트를 사용하여 DES를 3번 중복하여 실행하는 알고리즘으로 암호학적으로 큰 문제점이 없는 것으로 알려져, 2000년 현재 키 관리 표준인 ANSI X9.17, ISO 8732와 PEM(Privacy-Enhanced Mail) 등에서 채택하고 있다.

1990년대 들어 DES암호의 해독의 가능성이 높아지고, 1998년을 기점으로 DES는 표준 기한이 만료됨에 따라, 미국 NIST(National Institute of Standards and Technology: 표준기술연구소)에서 1997년 9월에 암호키의 길이가 128비트 이상인 새로운 블록암호인 AES(Advanced Encryption Standard, www.nist.gov/aes)를 공모하였다.
AES는 정부와 상업계에서 사용할 수 있는 강한 암호화알고리즘 표준으로 다음과 같은 조건을 만족하여야 한다.

(1) 3중 DES보다 더 효율적이어야 하고, 더 안전해야 한다.
      (설계기준 [키 크기 : 128, 192, 256비트], [블록크기 : 128(64, 256 등)비트]로 주어짐)
(2) 로얄티가 없어야 하며, 공개적으로 정의되고 평가되어야 한다.

총 21개가 응모하여 그 중 1998년 8월에 15개의 1차 후보가 올라, 1999년 4윌 5개의 후보로 압축하여, 최종적으로 2000년 10월 2일에 벨기에에서 만든 Rijndael(Rijmen & Daemen)이 AES로 채택되었다고 발표하여, DES암호의 뒤를 이은 블록암호 시스템으로 활용되고 있다.
아래의 연습 프로그램은 평문이 1바이트(8bits) 문자(따라서 한글 제외)일 때, 이들을 암호화/복호화하는 DES 연습프로그램이다.

평문을 8문자씩 읽어들여 아래 표와 같은 아스키코드로 변환한 다음, 64비트 2진수로 변환하고, 비밀키는 8문자로 하였다.

원래의 DES 알고리즘에서의 비밀키는 64비트 중 8번째 비트마다 에러를 체크할 수 있는 비트를 주어 암호알고리즘에서는 56비트를 사용하였지만, 이 프로그램에서는 DES알고리즘을 이해하는데 목적이 있기 때문에, 단지 비밀키 8문자를 2진수 64비트로 변환하고 8의 배수번 째에 있는 비트를 생략하는 DES알고리즘으로 작성을 하였다. 하지만 비밀키전송에러체크를 제외한 실제의 암호화에 이용할 수 있다.

컴퓨터 자판의 아스키코드는 다음과 같다. 단, space=32


      !   "   #   $  %  &  '    (    )  *   +   ,   -    .   /   0   1   2  3   4   5   6  7   8   9   :    ;   < =
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
>  ?
62 63


@   A  B   C   D   E  F   G   H   I   J   K   L   M  N  O   P  Q  R   S   T   U  V  W  X   Y  Z   [       ]    
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
^   _
94 95


`    a    b   c      d    e    f      g    h     i      j     k     l     m    n     o    p    q     r     s    t     u      
96  97  98  99  100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117
w     v     x     y    z     {     |     }     ~
118 119 120 121 122 123 124 125 126



암호할 것

I'M Negi


(1)번째 블럭 평문 ==> I'M Negi



[두먼쨰가 있을시

(2)번쨰 블럭 평문 ==> 입니다.]


(1)번째 블럭 (준비)round 결과
  (L0)11110101000000000111011011100111
  (R0)00000000111010101001010101010010
(1)번째 블럭 (1)round 결과
  (L1)00000000111010101001010101010010
  (R1)10101111001010001010101011001001
(1)번째 블럭 (2)round 결과
  (L2)10101111001010001010101011001001
  (R2)00001000111011010111111011011101
(1)번째 블럭 (3)round 결과
  (L3)00001000111011010111111011011101
  (R3)10111010000011101100000111111011
(1)번째 블럭 (4)round 결과
  (L4)10111010000011101100000111111011
  (R4)01110111000111000110010100101011
(1)번째 블럭 (5)round 결과
  (L5)01110111000111000110010100101011
  (R5)00001100110100100011010011000001
(1)번째 블럭 (6)round 결과
  (L6)00001100110100100011010011000001
  (R6)01010111111101010101010001100100
(1)번째 블럭 (7)round 결과
  (L7)01010111111101010101010001100100
  (R7)01000011010000011100001011100010
(1)번째 블럭 (8)round 결과
  (L8)01000011010000011100001011100010
  (R8)00011111001000111101110101111010
(1)번째 블럭 (9)round 결과
  (L9)00011111001000111101110101111010
  (R9)11011100000000100111010110101000
(1)번째 블럭 (10)round 결과
  (L10)11011100000000100111010110101000
  (R10)00111100011000000000010111110000
(1)번째 블럭 (11)round 결과
  (L11)00111100011000000000010111110000
  (R11)10100100000110001011100000100101
(1)번째 블럭 (12)round 결과
  (L12)10100100000110001011100000100101
  (R12)10010100011101110000100101011010
(1)번째 블럭 (13)round 결과
  (L13)10010100011101110000100101011010
  (R13)00001101111100111011000110100001
(1)번째 블럭 (14)round 결과
  (L14)00001101111100111011000110100001
  (R14)00000101101111001000100111100010
(1)번째 블럭 (15)round 결과
  (L15)00000101101111001000100111100010
  (R15)00001110100100011100110001001100
(1)번째 블럭 (16)round 결과
  (L16)00001110100100011100110001001100
  (R16)01110011000001011010001010101111


블럭별 2진수 암호문

(1)번째 블럭 2진수 암호문
  0111000111000101100110111000101101100000010001010100101000101101


블럭별 16진수 암호문  

(1)번째 블럭 16진수 암호문 ==> 71c59b8b60454a2d

전체 16진수 암호문


71c59b8b60454a2d



암호화문장

71c59b8b60454a2d


해석하기


71c59b8b60454a2d

사용된 비밀키

I'm Negi

(1)번째 블럭 암호문 ==> 71c59b8b60454a2d


(1)번째 블럭 (준비)round 결과
  (L0)01110011000001011010001010101111
  (R0)00001110100100011100110001001100
(1)번째 블럭 (1)round 결과
  (L1)00001110100100011100110001001100
  (R1)00000101101111001000100111100010
(1)번째 블럭 (2)round 결과
  (L2)00000101101111001000100111100010
  (R2)00001101111100111011000110100001
(1)번째 블럭 (3)round 결과
  (L3)00001101111100111011000110100001
  (R3)10010100011101110000100101011010
(1)번째 블럭 (4)round 결과
  (L4)10010100011101110000100101011010
  (R4)10100100000110001011100000100101
(1)번째 블럭 (5)round 결과
  (L5)10100100000110001011100000100101
  (R5)00111100011000000000010111110000
(1)번째 블럭 (6)round 결과
  (L6)00111100011000000000010111110000
  (R6)11011100000000100111010110101000
(1)번째 블럭 (7)round 결과
  (L7)11011100000000100111010110101000
  (R7)00011111001000111101110101111010
(1)번째 블럭 (8)round 결과
  (L8)00011111001000111101110101111010
  (R8)01000011010000011100001011100010
(1)번째 블럭 (9)round 결과
  (L9)01000011010000011100001011100010
  (R9)01010111111101010101010001100100
(1)번째 블럭 (10)round 결과
  (L10)01010111111101010101010001100100
  (R10)00001100110100100011010011000001
(1)번째 블럭 (11)round 결과
  (L11)00001100110100100011010011000001
  (R11)01110111000111000110010100101011
(1)번째 블럭 (12)round 결과
  (L12)01110111000111000110010100101011
  (R12)10111010000011101100000111111011
(1)번째 블럭 (13)round 결과
  (L13)10111010000011101100000111111011
  (R13)00001000111011010111111011011101
(1)번째 블럭 (14)round 결과
  (L14)00001000111011010111111011011101
  (R14)10101111001010001010101011001001
(1)번째 블럭 (15)round 결과
  (L15)10101111001010001010101011001001
  (R15)00000000111010101001010101010010
(1)번째 블럭 (16)round 결과
  (L16)00000000111010101001010101010010
  (R16)11110101000000000111011011100111


블럭별 16진수 복호문  

(1)번째 블럭 16진수 복호문
   49274d204e656769


블럭별 복호문  
(1)번째 블럭 복호문 ==> I'M Negi


전체 복호문


I'M Negi


List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
공지 필독! 분류 정리는 곧 정리하도록.. 합니다. YuRi 2009.08.13 11030
공지 필독! 추리상식 정리 거의 다 되었습니다 (수정.) 2 YuRi 2009.08.02 10306
18 <암호학> 셜록 홈즈 속 춤추는 인형 암호 해독 6 file 빙가 2009.09.22 18881
17 <암호학> 키보드와 키패드 다잉메시지를 풀어보자! file Kudo L 2009.08.04 1887
16 <암호학> 암호의 역사 スナイジン 2008.02.01 2050
15 <암호학> [네기] 제 6장 타원곡선 암호 Negi 2008.02.01 2144
14 <암호학> 암호학 신용카드 속의 암호 Fowl 2008.01.30 1865
13 <암호학> 암호의 역사 - RSA 암호체계 이론 - 키암호 기법 Fowl 2008.01.29 2230
12 <암호학> 암호학 강좌 한글을 암호화 하는 경우 Fowl 2008.01.29 1942
11 <암호학> [네기] 제 5장 - RSA(공개키)암호 Negi 2008.01.29 2098
10 <암호학> [네기] 제 4장 - 일회용 암호 Negi 2008.01.29 1840
9 <암호학> 암호학강좌 고전암호 -3 폴리비우스 암호 Fowl 2008.01.28 3094
8 <암호학> 암호학강좌 001 들어가는말 002 고전 암호이론 Fowl 2008.01.24 2071
» <암호학> [네기] 제 3장 DES 암호 1 Negi 2008.01.23 2080
6 <암호학> [네기] 제 2장 - 단문자암호 Negi 2008.01.23 1885
5 <암호학> [네기] 제 1장 - Hill 암호 Negi 2008.01.23 2068
4 <암호학> 로마시대 카이사르의 암호 표적 k. 2008.01.13 2472
3 <암호학> 아핀암호 Negi 2007.07.22 2594
2 <암호학> 모르스 부호 CONAN21 2006.07.02 2530
1 <암호학> 암호 CONAN21 2006.07.02 2642
Board Pagination Prev 1 Next
/ 1

Information

  • 웹서버상태 정상 llllllllllll 1Gbps Line
  • 코난21닷컴 운영 일째,
    K-COM이후 일째 입니다.
    오늘:
    39
    어제:
    51
    전체:
    1,336,878


    2001년부터 18년째 운영되고 있습니다.
    Copyright© 2006-2016 CONAN21.COM All rights reserved.