컴퓨터보안#6

LeeMir, 31 March 2021

DES(이어서)


DES(Data Encryption Standard)
  • Block Cipher의 대표적인 방식
    • 64-bit의 평문 블록을 64-bit의 암호문 블록으로 만듦
  • 64-bit의 block과 56-bit의 key로 이루어짐
    • 최초의 key는 64-bit인데 8-bit마다 Parity Bits(오류 검출용 비트)가 있어 그를 제외하면 56-bit
    • Key Permutation Table이 64-bit를 56-bit로 만들어줌(8의 배수가 빠져있음)
  • 16번의 Round를 진행해 암호화함
  • Initial Permutation과 Final Permutation이 존재(서로 Inverse 관계)
  • Key Generation
    • Key Permutation 64 => 56
    • 반반 나눔 28 / 28
    • Left Shift(s)를 진행, s는 라운드마다 1 또는 2로 정해져있음
    • Key Permutation and Compression 56 => 48
    • Swap 없이 Compression의 28 / 28이 그대로 다음 라운드로 넘어감
  • Text Generation
    • Initial Permutation
    • 반반 나눔 32 / 32
    • 오른쪽 Block에 Expansion Permutation 적용 32 => 48
      • Expansion Permutation Table은 고정
    • Expansion된 오른쪽 Block과 Key를 XOR (둘 다 48-bit)
    • S-box Substitution 48 => 32
      • 8개의 S-box가 존재해 6-bit씩 입력하면 각각 4-bit씩 출력됨
  • Avalanche Effect
    • 눈사태 효과
    • 원문에서 1개의 비트만 바뀌어도 결과값의 절반이 변함 => 좋은 암호화
    • 따라서 DES는 좋은 암호화라고 할 수 있음
  • Weak Keys
    • Initial Key가 모든 Bit가 0 또는 1이거나 절반 한쪽이 0 또는 1이면 Key의 안전성이 매우 떨어짐
    • Weak Key는 따로 걸러주는 기능 필요
  • 컴퓨터의 성능 발전에 따라, DES는 안전성이 떨어짐
    • 그에 대한 대책으로, Multiple DES가 나옴
      • 서로 다른 Key로 암호화를 두번(Double) 또는 세번(Triple) 진행
      • Triple DES의 경우, K1으로 암호화 => K2로 복호화 => K1으로 암호화 과정으로 Key 두 개로 세 번의 암호화를 진행함
        • 이를 복호화하려면 K1으로 복호화 => K2로 암호화 => K1으로 복호화 하면 됨