한 걸음씩..

[암호학] 대칭 키 암호의 운영모드 본문

잡다한 공부방

[암호학] 대칭 키 암호의 운영모드

반엘 2013. 7. 15. 10:54

1. 2중DES
   1) 다중 암호화 방식 : DES를 여러 번 반복해서 키 길이가 증가하는 효과
   2) 2중 DES : 메시지가 입력이 되면 첫 번째 키K1으로 암호화를 한번 하고 키 K2로 다시 한번 암호화
      -> 결과적으로 56bit + 56bit = 112bit 의 키를 쓴 효과를 내고자 했지만 
         Meet in the middle attack 공격법으로 인해 실제 1bit증가 효과밖에 보지 못함
      ※ Meet in the middle attack : C = EK2[EK1[P]] 이면  X = EK1[P] = DK2[C]

2. 3중DES 1) 3중DES : DES 암호화 알고리즘을 3번 반복 -> 3Key 3중DES(암호화 3번) -> 2key 3중DES(k1암호화 – k2복호화 – k1암호화) : 기존의 Single DES와 호환 2) DES – X : 키k1 XOR – 키k2 DES – 키 k3 XOR -> k1 / k3을 0으로 Setting 하면 기존의 Single DES와 동일한 효과
3. AES 1) 공모 조건 -> 공개검증, 3DES보다 빠를 것, HW/SW모두 구현 가능할 것, 128bit 블록암호방식을 사용 할 것, 128/192/256bit 가변 키 길이를 지원할 것 2) AES 후보 -> MARS(IBM) : 32라운드, DES 기반 -> RC6(RSA) : 20라운드, 수정된 RC5 기반 -> Twofish : 16라운드, Blowfish 기반 -> Serpent : 32라운드, SPN 방식 -> Rijndael(최종) : 10라운드, SPN방식, Square알고리즘 기반 3) SPN구조 : (초기 입력 값을 통째로 환자처리 -> 전치처리) * n 반복 -> 장점 : 빠르고 모든 플랫폼에서 구현 가능한 장점

4. 블록 암호의 운영모드
      -> 서로 순서가 뒤바뀌거나 누락되는 문제에 대비
      -> IV : 최초의 평문블록을 암호화 할 때 1단계 앞의 암호문블록을 대신 할 bit열.
         비밀키와 마찬가지로 송신자와 수신자 간에 미리 약속되어 있어야 하지만 공개된 값을
         사용해도 무방함.
   1) ECB(Electronic CodeBook)
      -> 가장 단순한 방식으로 각 블록을 독립적으로 암 복호화. 이 방식은 동일한 평문 블록은 
         동일한 암호문을 생성하므로 안전하지 않고 각각의 블록들은 개별적으로 존재하므로 블록이 
         바뀌거나 누락되면 메시지를 받는 사람은 확인할 방법이 없다는 단점이 있음.
   2) CBC(Cipher Block Chaining)
      -> 이전 블록의 암호문과 현재의 평문 블록을 XOR한 후 그 결과를 암호화하여 암호문을 생성. 
         맨 처음 블록은 초기값 IV와 XOR하여 사용하며 이때 사용하는 IV는 비밀일 필요는 없지만 
         송수신자가 같은 IV를 사용해야만 올바른 결과를 얻을 수 있다. 단점으로는 현재의 블록이 
         다음의 블록에 영향을 미치므로 블록의 순서가 바뀌거나 오류가 생기면 복호화가 제대로 
         이루어지지 않음. (가장 널리 활용되는 Mode)

   3) OFB(Output FeedBack)
      -> IV를 암호화하고 그 값을 다시 암호화하는 과정을 반복함으로써 생성된 수열과 평문 수열을
         XOR하여 암호문을 생성하는 방식. 주로 블록암호 시스템을 스트림 암호 시스템처럼 사용하고자
         할 때 이용됨. 암호문의 오류는 복호화 과정에서 대응 되는 한 블록에만 영향을 미침. 
         복호화 할 때 IV가 다르면 전혀 다른 평문이 되므로 반드시 초기값을 같게 해야함.

   4) CFB(Cipher FeedBack)
      -> IV를 암호화한 값과 평문 블럭을 XOR 하여 암호문 블럭을 생성하고 그 암호문을 초기치로 
         하여 다시 암호화한 값과 평문 블록을 XOR하여 암호문블록을 반복하여 생성하는 방식. 
         암호화에서는 특정 입력이 이후로 영향을 미치지만, 복호화에서는 특정 암호문의 오류가 
         계속적으로 이후에 영향을 미치지 않는다는 특징이 있음.