대칭키 암호

 

  1. Block cipher

       블록암호는 암호화와 복호화에 적용되는 키(key)가 동일한지 동일하지 않는지에 따라서

     대칭형 암호와 공개키 암호로 분류 되어진다. 공개키 암호는 암호화를 위해서 공개키가 적용

     되어지고 복호화에서는 개인키가 적용된다. 대칭키 암호는 암호화와 복호화에 적용되는 키가

     동일하게 사용된다.

  2. DES(Dsta Encryption Standard)  anigray05_next.gif Go to the Experiment

    DES는 평문을 64비트로 나눠 56비트의 키를 이용해 다시 64비트의 암호문을 만들어 내는

     알고리즘이다.(대칭형 블럭 암호)

     

P : 평문      C: 암호문    K : 키

 

     DES 알고리즘의 모습은 대체로 다음과 같다.  64비트의 평문이 16라운드를 거쳐 64비트의

    암호문을 나오게 하는 것이다

 

 

   INPUT :  64비트의 평문과 키 스케줄을 거친 64비트의 키가  입력된다.

   OUTPUT : 64비트의 암호문이 나온다.

    1. 먼저 64비트의 평문이 첫 라운드를 거치기 전에 IP(initial permutation)를 거친다.

    2. IP를 거친 뒤 평문은 첫 번째 라운드에 들어가게 되는데, 좌우 각각 32비트(Lo,Ro)로 나뉘어서

        들어간다.

    3. 이제 오른쪽 32비트는 키 스케줄에 의해 나온 첫 번째 48비트 키와 F함수에 들어가고 F함수는

        32비트를 내뱉는다.

    4. F함수에서 나온 32비트는 2번의 왼쪽 32비트와 XOR연산을 거치게 된다.

    5. 첫 라운드의 오른쪽 32비트는 다음 라운드의 왼쪽 32비트로 들어가고, XOR연산을 거친 32비

        트는 다음 라운드의 오른쪽 32비트로 들어가게 된다.

    6. 두 번째 라운드부터 16번째 라운드까지 첫 번째 라운드와 같은 방식으로 이루어 진다.

    7. 마지막 라운드를 거친 뒤 IP-1에 들어가게 되는데 이 때는 좌우가 바뀌어서( R 16,L16)로 들어

        간다.

    8. IP-1를 거친 것이 64비트의 암호문이다.

 

   F함수에는 오른쪽의 32비트 텍스트와 키 스케줄을 거친 키가 들어간다.

    1. 오른쪽 32비트는 E(expansion)를 거치게 되어 48비트가 된다.

    2. 이 48비트는 키(48비트)와 XOR연산을 하게 된다.

    3. XOR연산의 결과로 나온 48비트는 6비트씩 잘려서 8개의 S-box에 들어가게 된다.

    4. 각각의 6비트는 S-box를 거친 뒤 4비트가 되어서 나오게 된다.

    5. 4비트씩 8개가 모여 다시 32비트를 이루게 된다.

    6. 이 32비트는 P(permutation)를 거쳐서 F함수의 결과(32비트)를 내 놓는다.

     <키 스케줄>

    사용자는 56비트의 키를 입력하는데 이것에 8비트의 parity bits가 포함되어 키 스케줄에는 모두

    64비트의 키가 들어간다.  parity bits는 키 사이즈를 64에서 56 비트로 줄여준다.

    키 스케줄을 거친 뒤 16개의 48비트 키가 생성되는데 그 과정은 다음과 같다.

 

    1. 키 스케줄을 하기 전에 쉬프트 횟수를 정의하는데 1, 2, 9, 16번째는 1번, 나머지는 2번씩이다.  

         이것으로 총 28번의 쉬프트가 이루어진다.

    2. 먼저 키는 PC1박스를 거치게 된다.  PC1박스를 거친 후엔 두 부분(각각 28비트)으로 나뉘게

         된다.

    3. 이제 각각의 두 부분은 위에서 정의한 데로 1번째에는 1번의 왼쪽 쉬프트를, 두 번째에는 1번의

        왼쪽 쉬프트를, 세 번째에는 2번의 왼쪽 쉬프트를 .....16번째에는 1번의 왼쪽 쉬프트를 하게

        된다.

    4. 첫 번째 키는 1번째 쉬프트를 했을 때 두 부분을 합쳐서 PC2박스를 통과시켜 나오는 48비트이다.

    5. 두 번째 키는 2번째 쉬프트를 한 후 첫 번째와 같이 두 부분을 합쳐 PC2박스를 통과시켜 나오는

       48비트이다.

    6. 이런 식으로 16번째까지 모두 16개의 키가 생성되게 된다.

   3. 다중 DES

        - Double DES

             DES 알고리즘 자체는 변형시키지 않고 DES의 안전성을 증대시키기 위한 방법 중의 하나로

             2개의 다른키로 2번 암호화를 수행한다.

  2중 DES의 암호화

  2중 DES의 복호화

             2개의 서로 다른 키가 적용되어졌기 때문에 2중 DES의 유효한 키는 56 ×112비트이다.

             이 경우의 모든 가능한 키를 시도해보는 횟수는 2112 번 작업이 소요된다.

            관측된  한 쌍의 평문과 암호문(m,c)가 주어졌을 때

 관계가 성립하며 아래의 관계식을 구할 수가 있다.

                            

             m에 2개의 모든 가능한 k1을 적용하여 암호화시킨 x값을 정렬하여 보관한다.

             다음에는 역시 256 개의 모든 가능한 k2를 c에 적용하여 복호화한다.

             복호화되는 가각의 값을 저장된 테이블에 있는 값과 비교하여 일치하는 항목에 대한 k1

                 과 k2를 선정하여 이것을 하나의 평문과 암호문의 쌍에 적용시켜 검증한다.

             이 암호분석에 소용되는 작업량은 암호화와 복호화에 2·256 그리고 n개의 값을 정렬하는데

 

 의 작업이 요구되어 전반적으로 263 로 정도의 작업이 소요되어 단일

            DES에 비해 크게 증대되지 못했다. 따라서 "중간충돌" 공격을 방지 할 수 있는 Triple

          DES가  제시 되어졌다.

        - Triple DES

             "중간충돌" 공격을 방지할 수 있다.

  3중 DES의 암호화

  3중 DES의 복호화

 

(Triple DES의 암호화와 복호화)

   4. DES 운영방식

       1) ECB(Electronic CodeBook)

  ECB 암호화

  ECB 복호화

           ECB 모드는 DES 암호 방식의 사용 방식 중 가장 간단한 방식으로 평문을 64비트씩 나누어

           암호화하는 방식이다. 평문을 64비트씩 나눌 때 마지막 블록이 64비트가 되지 않을 때는 임

           의의 약속된 비트 모양을 패딩(padding)하게 된다. 64비트 블록의 평문을 그림 4.6과 같이

           암호화한다.

           이 방식은 동일한 평문 블록 모양에 따라 항상 동일한 암호문이 출력되므로 암호 해독자들의

           해독 가능성을 높게 만든다. 즉, 문서의 종류에 따라 동일한 문서 모양을 갖고 있으므로 암호문

           단독 공격의 가능성을 높게 해준다. 따라서 64비트 길이의 평문 암호화에 유용하게 사용될 수

           있으므로 DES 암호 방식의 키 암호화에 사용할 수 있다.

       2) CBC(Cipher Block Chaining)

           DES 암호 방식의 CBC 모드는 출력 암호문이 다음 평문 블록에 영향을 미치게 하여 각 암호문

           블록이 전단의 암호문의 영향을 받도록 만든 방식으로 ECB에서 발생하는 동일한 평문에 의한

           동일한 암호문이 발생하지 않도록 구성한 동작 모드이다. CBC 모드 동작은 아래 그림과 같이

           처음 입력된 평문 블록은 초기 벡터 (initial vector)와 EX-OR되어 DES 암호기에 입력된다.

           암호기 출력 암호문 은 다음 단 평문 블록 와 EX-OR되어 DES 암호기에 입력된다.

           CBC 모드의 수식적인 표현은 다음과 같다.

  CBC 암호화

  CBC 복호화

           CBC 모드 동작 중 발생하는 비트 손실이나 오류에 대한 영향을 검토해보자. 전송 중에 암호문

           블럭 ci 에서 발생하는 한 비트의 오류는 복호화된 해당 평문 블럭 mi 에서는 여러 비트의 영향

           을 주게되며 다음 단의 복호화된 평문 블럭 mi +1 에는 한 비트의 오류를 유발하게 된다.

           물론 그 다음 단의 복호화된 평문 블럭 mi+2 에는 영향을 주지 않는다.

           CBC 방식의 특징은 현 단계에서 생성되는 암호문이 그 다음으로 생성되는 암호문 블럭에

           영향을 미치기 때문에 특정 암호문 블럭이 전달되는 과정에서 발생되는 채널상의 잡음에 의한

           오류는 해당 암호문 뿐만아니라 그 다음 암호문에도 그 효과가 연장된다.

           한편 CBC 모드의 평문 블럭 mi 에서의 오류 발생시 암호문 분석에 미치는 영향을 살펴보자.

           평문 블럭 mi 에서의 한 비트 오류는 그 다음에 출력되는 모든 암호문 블럭 ci  , ci+1 , ci+2…에

           영향을 미치게 된다. 이러한 특징은 메시지 인증에 유용하게 사용될 수 있다. 구체적으로 말하

           면 이러한 특징은 문서 인증 부호 MAC(message authentication code)에 사용될  수 있다.

 

       3) CFB(Cipher FeedBack)

             컴퓨터 및 통신시스템 내에서 데이터는 메시지 전체, 또는 프레임이나 블록단위, 그리고 문자

           나 비트 단위로 취급되어 질 수 있다. 문자나 비트 단위로 취급되어질 경우 CFB 방식에 의해서

           암호화가 수행될 수 있다. 통신 프로토콜의 하위 계층에서는 데이터를 문자나 비트 단위로

           취급한다.

             아래의 그림은 r 비트 단위로 암호화하는 CFB 방식이다. 맨 처음으로 CFB 방식이 기동 될 때

           쉬프트 레지스터 안에 초기화 벡터 Ⅳ를 입력하여 DES 암호화를 수행하고 그 결과의 왼쪽 r 비

           트에 대하여 r 비트 평문과 XOR하여 r 비트의 암호문을 생성하게 된다.  각각의 r 비트에 대하

           여 암호화가 수행된 후 에 그 r 비트의 암호문이 다시 키 수열을 생성하는 알고리즘에 유입된

           다. 유입될 때마다 쉬프트 레지스터는 r 비트씩 왼쪽으로 이동한다. 결국,  이 방식은 블록 암호

           인 DES를 통해서 생성된 키를  이용하여 일종의 스트림 암호이다.

           CFB 방식도 CBC 방식와 마찬가지로 평문 블럭이 동일한 경우 동일한 암호문이 나타나지 않

           도록 전단의 암호문이 다음 단의 평문에 영향을 미치게 구성하는 방식이다.

 

       4) OFB(Output FeedBack)

             OFB 방식은 CFB 방식과 마찬가지로 DES를 이용한 알고리즘에 의해서 생성되는 일종의 키

           수열과 r 비트 단위의 평문이 XOR 되어져 암호화가  이루어진다. r 비트 문자의 암호화에 스

           트림 암호가 적용되다는 측면에서는 CFB 방식과 동일하지만 키 수열은 평문과 무관하게 생성

           되어지기 때문에 현재 생성된 암호문이 그 다음 암호화에는 영향을 미치지 않는다는 차이점을

           가지고 있다.

             맨 처음으로 CFB 방식이 기동 될 때에는 쉬프트 레지스터 안에 초기화 벡터 Ⅳ를 입력하여

           DES 암호화를 수행하고 그 결과의 왼쪽 r 비트를 r 비트 평문과 XOR하여 r 비트의 암호문을

           생성하게 된다. 각각의 r 비트에 대하여 암호화가 수행됨과 동시에 DES 암호화의 결과 출력되

           는 왼쪽의 r 비트가 다시 키 수열을 생성하는 알고리즘에 유입된다. 유입될 때마다 쉬프트 레지

           스터는 r 비트씩 왼쪽으로 이동한다.

             OFB 방식은 키 수열의 생성에 있어서 이전에 생성되었던 암호문이 이용되고 있지 않기 때문

           에 채널상의 잡음에 의한 다른 암호문으로의 오류의 파급효과가 발생되지 않고 단지 해당 암호

           문만이 영향을 받게 된다. 즉, OFB 방식 동작은 평문 블럭이 동일하면 암호문이 같아지는 ECB

           방식의 단점과 오류 전파가  발생하는 CBC 방식와 CFB 방식를 개선한 동작 모드이다.