'DES'에 해당되는 글 2건

  1. 2006.04.15 암호알고리즘 - DES (2)
  2. 2006.03.21 XML Security

DES(Data Encryption Standard)는 1974년 컴퓨터 보안의 필요성에 의해 IBM에서 LUCIFER 알고리즘을 수정하여 제안, 1977년에 미 연방 정보처리 표준 46(FIPS PUB46)으로 채택된 대칭키 암호 알고리즘이다. 20세기말까지 ISO의 표준(DEA-1)으로 제정되어 있었으며, 지난 20년 동안 세계적인 표준으로 사용되어 왔다. DES는 길이 64인 비트 문자열 암호문을 만들기 위하여 길이 56비트 문자열인 적당한 키를 사용하여 길이 64인 평문 비트 문자열을 16단계의 단일 반복 과정을 거쳐 암호화한다. 복호화 시에는 동일한 키를 사용하여 암호화의 역순으로 수행된다. DES에서 수행되는 유일한 산술은 비트 문자열의 배타적 OR이기 때문에 하드웨어적으로 또는 소프트웨어적으로 매우 효율적으로 실행할 수 있다. 그림 2-6은 DES 기본 구조를 나타낸 것이다.


그림 2-6 DES의 기본 구조


초기에 128비트의 키 길이로 설계되었던 DES는 NSA에 의해 56비트로 키 길이가 줄어든 이 후 꾸준히 키 길이에 대한 논쟁이 있어 왔으며 컴퓨팅 파워가 증가하고 네트워크 기술이 발달하면서 DES에 대한 다양한 공격이 시도가 되어 왔다. 이에 DES의 대안으로서 안전성이 향상된 3중 DES(Triple DES)가 나오게 되었다. 이 알고리즘은 2개의 키를 사용함으로서 키 길이가 112비트로 늘어나게 되었으며, 이에 따른 안전성의 증가로 인해 키 관리 표준 ANS X9.17과 ISO 8732, 그리고 PEM(Privacy Enhanced Mail) 등에서 채택되어 사용되고 있다. 현재 3중 DES에 대한 실용적인 암호 분석 공격법은 없는 것으로 알려져 있다.


표 2-1 DES에 대한 연혁

분류

내용

1965-1972

. 컴퓨터 보안의 필요성 대두('68)

. NBS는 NSA의 도움을 받아 표준화 작업 착수('72)

1973-l977

. DES 최초 공모 : 지원 없음('73)

. 이차 공모 : IBM 지원('74)

. DES 표준 공표('77)

1978-1989

. 5년마다 안전성 평가 예정

. 80년대 논쟁 사항

-DES의 키 크기 논란,  S-box의 실계 의혹, Trapdoor 가능성

1990-1995

. 5년간 유효 판정

. DC 및 LC 등장

1995-1999

. 3중 DES 사용 권고 ­­> AES 준비



(1) 초기 순열


순열(Initial Permutation : IP)과 그의 역은 표 2-2에 의해 각각 정의된다. 이 두 순열 함수가 실제로 상호 역임을 보기 위하여 다음의 64 비트입력 M을 생각해 보자.



여기서 Mi 는 2진수이다. 그러면 순열 X=IP(M)은 다음과 같다.



따라서, 역순열을 Y= IP-1(X)= IP-1(IP(M)) 로 취하면 결과는 원 순서의 비트 열이 복구됨을 볼 수 있다.


표 2-2 DES를 위한 순열표




(2) 단일 반복 처리 과정


이제 그림 2-7에 도시한 바와 같이 단일 반복 처리 알고리즘을 좀 더 자세히 살펴보기로 한다. 여기서 다시 도표의 왼쪽 편을 주목하여 출발한다. 본질적으로 대치된 64비트 입력은 16 반복 과정을 거치며 매 반복 과정의 결과로 64비트의 중간 값을 생성한다. 각 64비트 중간 값의 좌우 절반은 분리된 32비트 값으로 취급되며 L(왼쪽)과 R(오른쪽)로 분류된다. 각 반복 과정의 전체적인 처리는 다음 공식으로 요약된다.


그림 2-7 DES 알고리즘의 단일 반복 과정



여기서 은 비트 단위 XOR함수를 의미한다.

따라서 반복 과정의 좌측 출력(Li)은 단순히 그 반복 과정의 우측 입력(Ri-1)과 같다. 우측 출력(Ri)은 Li-1을 Ri-1과 Ki의 복합함수 f에 XOR한 결과이다.

함수 f는 그림 2-8에 나타나 있다. 반복 과정의 키 Ki는 48비트이며, R입력은 32비트이다. 이 R입력은 우선 순열을 정의한 표와 R의 16비트 중복을 포함한 확장방법을 이용하여 48비트로 확장된다. 이 과정의 결과인 48비트는 Ki와 XOR된다. 이 48비트 결과는 32비트 출력을 생성하는 치환함수를 통과하고, 그 결과는 다시 표 2-2에 정의된 대로 순열된다.


그림 2-8 함수 f(R, K)의 계산


치환은 8개의 S-box 집합으로 구성되며, 각 S-box는 6비트를 입력으로 받아서 4비트를 출력으로 생성한다. 이들 변환은 표 2-3에 정의되어 있으며 다음과 같이 해석된다. 박스 에 대한 입력의 첫 번째 비트와 마지막 비트는 테이블에서 에 대한 특정 행을 선택하기 위해 2비트 2진수를 형성한다. 중앙의 4비트는 특정 열을 선택한다. 그 행과 열에 의해 선정된 원소의 10진 값은 출력값 생성을 위해 4비트 표현으로 변환된다. 예를 들면, 입력이 011011인 에서 행은 01(1행) 그리고 열은 1101(13열)이 되고, 1행 13열의 값은 5이며 따라서 출력은 0101이 된다.

그림 2-9는 이와 같은 사상관계의 이해에 도움이 되는 S-box의 연산에 대한 상세한 사항을 나타내고 있다. 입력의 첫 번째 비트와 마지막 비트는 S-box 표의 행들에 의해 정의되는 4가지 순열 중에서 하나를 선정한다. 그림은 박스 의 0행에 대한 순열을 보여준다.

S-box들의 구조는 좀 더 살펴볼 필요가 있다. 키의 역할은 잠시 무시한다. 이제 확장 표를 살펴보면 32비트 입력이 4비트의 집단들로 분리되고 나서 양 이웃 집단의 바깥쪽 비트를 위하여 6비트 집단들이 된다. 예를 들어 다음과 같이 4문자 집단들로 구성된 입력 단어의 일부,


... efgh ijkl mnop ...


는 다음과 같이 6문자 집단들이 된다.

... defghi hijklm lmnopq ...


각 집단의 바깥쪽 2비트는 4개의 치환표 중 하나를 선택한다. 그러면 4비트 출력 값은 특정 4비트 입력(입력의 중간 4비트)을 치환한다. 8개의 S-box의 32비트 출력은 다음 반복 과정에서 각 S-box의 출력이 가능한 한 다수의 다른 S-box에 곧바로 영향을 줄 수 있도록 순열된다.


그림 2-9 S-box의 상세 사항(의 0행)


표 2-3 DES S-box의 정의



(3) 키 생성


다시 알고리즘의 입력으로 사용된 56비트 키는 순열선택1로 표시된 표에 의해 순열된다. 이 결과인 56비트 키는 로 표시된 두 개의 28비트 값으로 취급된다. 각 반복 과정에서 C와 D는 별도로 표 2-3에 의해 1 또는 2비트씩 순환 좌측 이동 또는 회전(rotation)하게 된다. 이 이동된 값들은 다음 반복 과정의 입력으로 사용된다. 이들은 또한 순열 선택2의 입력으로 사용되어 함수 f(, )의 입력이 되는 48비트 출력을 생성한다.


표 2-4 DES 키의 단계별 계산표



(4) DES 복호 기법


DES의 복호 과정은 기본적으로 암호 과정과 동일하며 그 규칙은 다음과 같다. 암호문은 DES 알고리즘의 입력으로 사용되지만 키 을 첫 번째 반복 과정에, 를 두 번째 반복 과정에, 등으로 을 마지막 16번째 반복 과정에 사용한다.

동일 알고리즘이 키를 역순으로 사용하여 정확한 결과를 생성하는 것을 보기 위하여 그림 2-10을 살펴보자. 그림 2-10의 왼쪽은 암호 과정이 밑으로, 그리고 오른쪽은 해독 과정이 위로 각각 진행되는 것을 보여주고 있다.

도표는 매 단계에서 복호 과정의 중간 값이 암호화 과정의 해당 값의 비트 열을 이등분한 후 좌우를 교환한 값과 일치함을 보여주고 있다. 이것을 다른 방법으로 표현하기 위하여 i번째 암호화 단계의 출력을 (의 연결)로 표시하자. 그러면 (16-i)번째 복호 단계의 해당 입력은   가 된다.


그림 2-10 DES의 암호 및 복호 과정


(5) DES의 운용 모드


DES 알고리즘은 자료 보안을 위한 기본 구조로서 응용에의 적용을 위하여 4가지 “운용 모드”가 정의되었다(FIPS PUB 74, 81). 이들 4가지 모드는 사실상 DES를 이용할 수 있는 모든 가능한 응용을 망라하기 위한 것이다. 각 모드는 표 2-5에 요약되어 있다.


표 2-5 DES의 작동 모드(DES Modes of Operation)

운용모드

설명

전형적인 응용

전자 코드북(ECB)

(Electronic Codebook)

64 비트의 각 평문 블록이 동일 키를 이용하여 독립적으로 암호화됨.

단일 값의 기밀전송

(예 : 암호키)

암호 블록 체이닝

(CBC)

(Cipher Block Chaining)

암호 알고리즘의 입력이 다음 평문 64비트와 선행 64비트의 XOR의 결과임.

범용 블록형 전송 인증

암호 피드백(CFB)

(Cipher Feedback)

입력은 한번에 j비트씩 처리됨.

선행 암호문 블록이 암호 알고리즘의 입력으로 사용되어 의사 난수 출력(pseudorandom output)을 생성하고, 이것은 다시 평문과 XOR되어 암호 블록을 생성.

범용 스트림형 전송 인증

출력 피드백(OFB)

(Output Feedback)

CFB와 유사한 방식이며, 암호 알고리즘의 입력으로 선행단계의 DES출력을 이용.

잡음있는 채널상의 스트림형 전송

(예 : 위성통신)


Posted by 엔시스
TAG DES

1. 대칭암호: 암호키와 복호화키를 모두 같은 키를 사용하는 알고리즘을 말한다

  - 블록암호: 평문을 정해진 단위로 나눈다음 블록단위로 암호화 한다.

  - 스트림암호:평문과 키스트림 한바이트 마다 XOR 연산을 적용하여 암호문을

               만들어 낸다.

  - XML에서는 블록암호가 흔하고 폭넓게 지원하기 때문에 스트림 암호보다

    널리 사용된다.

2. XML에서 사용하는 블록암호

  1)3DES

       .3DES는 DES를 암호화 , 복호화, 암호화를 3번 반복하는 방식이며 블록

        대칭 암호 알고리즘인 DES를 기반으로 한다.

       .DES는 56비트 키와 8비트의 패리티로 구성된 64비트의 키를 사용한다.

       .3DES는 8블록의 크기는 8바이트이다. 다시말해 8바이트 단위로 암호화

        가 된다.

       .결국 64비트의 DES를 세 번 수행하여 192비트 길이가 나오지만 실질적인

        길이는 168비트만 유용하다.

       . 3DES는 모든 평문에 대해서 3번씩 적용하기 때문에 느린 암호방법이다.

  2)AES

       . DES의 안정성이 문제시 되면서 대신할 암호인 AES 암호가 대두되었다

       . 그중에 Rijndael이 선택되어 키 길이 128,192,256비트를 선택할수 있도록

         하였다.

       . 특히 XML에서는 AES에서도 CBC가 유일한 피드백모드이다

        예)http://www.w3.org/2001/04/xmlenc#128-cbc등이 있다.


'Security Skill&Trend' 카테고리의 다른 글

XML 구조  (0) 2006.03.21
XML에서 패딩과 피드백  (0) 2006.03.21
XML Security  (0) 2006.03.21
IP 스푸핑문서  (0) 2006.03.17
전문가 태부족 … 해킹 바라만 볼 뿐"  (0) 2006.03.16
해커를 추적하는 방법  (0) 2006.03.14
Posted by 엔시스
TAG AES, DES, xml