3. DES

CA·2025년 4월 11일

컴퓨터 보안

목록 보기
3/10

DES

키의 길이가 56bit이다.
56bit가 짧아서 AES가 나온거다.
Block Cipher: 임의의 길이의 데이터를 고정된 데이터 길이로 바꿔 데이터를 암호함. 56bit -> 64bit block으로 암호함.
Feistel Nework: 여러개의 round들로 구성된다. typically 16 rounds in DES

Confusion: key와 Ciphertext와의 관계를 숨김. (Substitution 방법 사용)
Diffusion: Plantext와 Ciphertext와의 관계를 숨김 (Permutations 방법 사용)

✅ Product Cipher


Round가 여러개 존재하고 하나의 round 안에 Substitution + Permutation이 작동하고 여러번 라운드가 반복할수록 안정성이 올라감.

Feistel Cipher

✅ Encryption


1. DES의 input은 64bit이다. L0 32bit, R0 32bit.
2. F함수에서 Substitution + Permutation이 관련 일을 한다. 해당 F함수에 들어오는 Key의 값은 56bit 아닌 round가 16까지 있으니 안전상의 문제로 여러개의 subkey를 만들어 48bit짜리 key를 사용한다.
3. 마지막 round는 교차하지 않는다.

✅ Decryption


L'0과 R'0에 Encryption의 L2, R2를 각각 넣고 동일하게 진행하되 Key값만 역순으로 들어가면 원래 값을 복원할 수 있다.

Initial/Final Permutation

Initital에 1번째로 58번째 bit가 들어온다면 반대로 final에서는 58번째로 1번째 bit가 들어온다.
+ intital에 40번째로 1번째 bit가 들어온다면 final에서는 1번째로 40번째 bit가 들어온다.

Round Function


input이 32bit이고 key는 48bit이므로 Expansion P-box를 통해 48bit로 확장해주고 XOR연산을 진행한다.
S-boxes : Subtitution 관련 일
Straight P-box: Permutation이 관련 일

Expansion P-box

S-Boxes

48bit니까 각 S1, S2 , .. , S8까지 각 6bit씩 받아서 처리 후 4bit씩 output이 나오니 4 x 8 = 32bit가 최종 리턴된다.

앞뒤 1bit씩을 사용해 RowNo로 만들고 나머지 4개의 bit는 colNum으로 만들어서 계산한다.
‼️ 비선형이다. f(x+y) != f(x) + f(y)
현재 input 110010 XOR 111111와 110010을 S-Box에 넣어 나온 값과 111111과 XOR한 값과 다름.

Straight Permutation

각 block안에서의 섞는 것이 전체적으로 섞음.

전체 흐름


1. 처음 들어온 64bit 중 오른쪽 32bit 값이 들어옴
2. Expansion P-box를 통해 48bit로 만든 후 Round Key와 XOR을 한 뒤 32bit로 output
3. 나온 값을 Straight Permutation을 통해 섞는다.
4. 나온 32bit결과와 왼쪽 32bit의 값을 XOR해서 결과를 얻는다.

Key Generation

  1. 64bit 중 56bit만 사용. (PC1 table)
  2. 56bit를 28bit 2개로 나눈다
  3. 라운드마다 left rotated를 하는데 1번 혹은 2번 (사전에 명시)
  4. 48bit로 만들어주기 위해 PC2 table 사용

    8,16,24,.. 8의 배수의 bit들을 삭제함으로써 64bit -> 56bit로 만듬

    9,18,22,25번째 bit들을 삭제함으로써 56bit -> 48bit

Double DES


앞에서 평문을 k1으로 암호화한 것과 뒤에서 암호문을 k2로 복호화한 값이 동일한 것이 반드시 존재한다.


여기서 만약에 Ek1(P) == Dk2(C) 일 때, k1과 k2의 pair로 Double DES로 사용됐구나 알 수 있다.
그렇기에 각각 Ek1(P)는 2^56이고 Dk2(C)도 2^56이기에 2 x 2^56 = 2^57

Meet-in-the-Middle attack 2^57만 하더라도 뚫림

Triple DES

56bit짜리 key 3개로 168bit이지만 안정성은 Double DES에서 원했던 2^112 이다.

0개의 댓글