이메일을 적으시면 보안관련 소식을 받을수 있습니다.
이메일:









작성자 : 하늘위로
편집자: 엔시스(
sis@sis.pe.kr)




이번 주 암호 관련 포스팅은 블록 암호인 DES입니다.

DES(Data Encryption Standard)는 미국에서 근래까지 표준으로 사용된 암호 알고리즘입니다.(근래라고 하기엔 시간이 좀 지나긴 했습니다만....)

이 DES의 안정성의 우려는 S-box의 설계기준이 모호하기 때문에 생겼습니다. 아직 S-box의 설계기준이 공개된 적이 없기 때문에 아직 까지 S-box의 취약점을 알 수 없기 때문입니다. 또 수년간 DES의 수많은 정규성과 S-box가 예측하지 못하는 동작이 발견되었습니다.

결국 DES를 보완하며 AES나 3중 DES를 개발 그 중 DES를 대체하는 표준으로 사용되게 되었습니다. 한국에서는 블록암호로는 SEED를 개발, 국가 표준안으로 사용되고 있다고 합니다.

그럼 우선 DES에 기반이 되는 Feistel 구조에 대해 알아보겠습니다.

 

<Feistel 암호 구조>

Feistel 암호 구조는 치환과 순열을 번갈아 사용하는 방법입니다. n bit의 평문을 입력으로 했을 때, n bit의 암호문이 나오게 되고, 각각의 평문 블록은 유일한 암호문 블록을 생성하게 됩니다.

블록의 크기는 보통 64bit를 사용하며 Key는 64bit를 Round는 16회를 사용합니다.
복호화는 암호화를 반대로 실행하면 됩니다.

 

평문을 2개로 나누어 사용합니다.

K는 암호에 사용되는 Key입니다.

F는 Key를 사용하는 반복함수입니다.
다음 그림이 F함수의 구조입니다. 

각각의 Round에서 (Roundi)
Input : L(i-1), R(i -1), Ki
output : Li, Ri

L(i-1)에서는 치환을
L(i-1)⊕F(R(i-1), Ki)

결과 값을 사용하여 순열을 하여 나타나게 됩니다.
Li = R(i-1)
Ri = L(i-1)⊕F(R(i-1), Ki)

 

 

 
<F함수의 구조> 입니다.




32bit를 받아서 실행하게 됩니다.

E는 32bit에서 48bit로 확장하는 부분입니다.

S-Box는 48bit를 다시 32bit로 바꾸는 작업을 하는 부분입니다. 8개의 S-box가 사용되어 각 6bit를 4bit으로 바꿉니다. S-box 또한 미리 정해진 표를 사용합니다.

P는 표를 사용한 순열 작업을 합니다.







오늘의 주제인 DES 의 구조입니다.

DES는 64bit의 평문을 사용하며, 56bit의 Key를 사용합니다. 동일반복과정을 16번 사용합니다.
앞에서 살펴보았던 Feistel암호 구조 앞 뒤에 순열 IP가 추가된 형태라고 보시면 됩니다.




64bit의 평문을 입력하게 되면 정해진 순열 표를 사용하여 우선 순서를 바꾸게 됩니다.

그 결과 값이 Round1으로 Round1의 결과 값이 Round2로 계속해서 Round16까지 실행합니다.

각각의 Round에서 실행하는 것은 위에서 알아보았던 Feistel 암호 구조와 같습니다.

 
















각 Round에서 사용되는 Key의 생성 방법입니다.

Key는 64bit를 사용하는데 그중, 8의 배수, 8, 16, 24 등은 패러티 비트라고해서 사용하지 않습니다. 결국 56bit만 사용합니다.


PC1에서는 순열을 하여서 28bit씩 2개로 나눕니다.

LS-1에서는 왼쪽으로 한번 Shift합니다.

PC2에서는 각각 24bit씩 선택해서 총 48bit의 첫 번째 Key를 생성합니다.

LS-2에서 는 왼쪽으로 두 번 Shift합니다.

다시 PC2에서 각각 24bit씩 총 48bit를 선택해 2번째 Key를 생성합니다.

이런 식으로 1 or 2가 shift되는 순서는 이미 정의되어 있어서 그 순서대로 계속해서 Key를 생성해 냅니다.

 



쓰다 보니 조금 길어졌네요. 
아시는 분들은 오히려 읽고 혼동이 생기시는 건 아닌지 모르겠습니다.........




****************************************************************************************************

본 포스팅의 저작권은 보안인닷컴과 작성자에 있으며 상업적 이용을 배제하며 콘텐츠 이용시에는 반드시 출처와 링크를 이용해 주시기 바랍니다. 무단도용은 저작권법에 저촉을 받습니다..

****************************************************************************************************

Posted by 비회원
TAG , ,

댓글을 달아 주세요

  1. Favicon of https://boanin.tistory.com BlogIcon 보안인닷컴 2009.03.31 15:30 신고  댓글주소  수정/삭제  댓글쓰기

    쉽지 않은 접근인데 잘 보았습니다..저도 대학원때 배웠던 암호학 생각이 나네요..

  2. Favicon of https://whoaru.tistory.com BlogIcon 후아유! 2009.03.31 15:58 신고  댓글주소  수정/삭제  댓글쓰기

    흐아.. 역시 암호학은 어렵습니다^^;;
    잘 풀어써주셔서 감사합니다^^
    다시한번 꼼꼼히 읽어봐야겠어요~~^^/

  3. Favicon of https://eva1717.tistory.com BlogIcon eva1717 2009.04.01 18:18 신고  댓글주소  수정/삭제  댓글쓰기

    앜........ 너무 어려워.....................
    암호학....... 제가 발도 담가보지도 못했던 분야...ㅠ_ㅠ
    그래서 더욱 더 멀게만 느껴지네요..하늘위로님 포스팅 보면서 궁금한것도 많이 물어보고
    암호학을 정통해야겠어요..>ㅇ<
    잘 부타드립니다~!

  4. Favicon of http://www.thekimms.pe.kr BlogIcon 미남닷컴 2009.04.01 19:16  댓글주소  수정/삭제  댓글쓰기

    평문을 나눌때 몇비트씩인지 그리고 key생성에서 shift가 라운드마다 틀린데 어느라운드에 몇번 쉬프트 하는지 설명해주시면 좋겠네용 ^^

  5. 장원일 2009.05.25 07:50  댓글주소  수정/삭제  댓글쓰기

    암호학 관련 동영상있는곳입니다. EBS 교육방속인데..

    훨씬 이해하기 편하더군요~ 도움이 되시길~~~~~~

    http://dosan.skku.ac.kr/~sjkim/sjkim_press.html

  6. 김병우 2009.10.10 06:01  댓글주소  수정/삭제  댓글쓰기

    쉬프트 하는거 있잖아요 키 부분에서 만약에 110120304050607021010203040.... 28비트 면 여기서 한칸만 옆으로 쉬프트 해주면 되요? 아님 4비트씩 짤라서 따로 따로 쉬프트 해줘야 하나요?