오래 못 할 짓 하지 않기

[ 컴퓨터 보안 ] 9. Cryptography ( 이외 유닛 + DES ) 본문

3학년 2학기/컴퓨터 보안(Computer Security)

[ 컴퓨터 보안 ] 9. Cryptography ( 이외 유닛 + DES )

쫑알bot 2024. 10. 22. 12:38
728x90

Product Cipher

= Substitution + Permutation + other component

- Diffusion :      Ciphertext ↔️ Plaintext 의 관계를 감추어 유추하지 못하게

- Confusion :   Ciphertext ↔️ Key 의 관계를 감추어 유추하지 못하게

- Rounds.    :   Diffusion 과 Confusion을 여러 번 돌리기 (S-box,P-box,other component 를 사용)

 

 

📌Diffusion

: 알리바이(영향력)를 엄청 꼬아서 유추하지 못하게 

 

- 8번째 비트는 S-box 04에 들어간다.

- S-Box의 결과가 P box 안에서 섞이다가 2,4번째 비트에 영향을 준다.

 

[ 1라운드 끝 ]

 

- 그럼 2번째 비트에 들어갔던 게 S-box 01에 들어가고

- 그 결과가 1번 비트 , 6번 비트에 영향을 준다.

 

4번쨰 비트도 그렇게..

 

 

📌Confusion

 

 

- Plaintext 에 있는 8번 비트가 S box에 들어가서 2비트의 값을 낸다.

- 그 값이 P box에 들어가서 섞이다가 Middle text 2,4번째 비트에 영향을 준다.

 

[ 1라운드 끝 ] 

 

- 그 2,4번째 비트가 각각 다른 Sbox에 들어간다.

- 그 결과가 또 다른 것에 영향을 준다.

 


Product Cipher는 두 가지 Class로 나뉜다.

 

- Feistel Ciphers = Self-invertible + Invertible + Non-invertible

- Non-Feistel Ciphers

 

 

 

📌Feistel Ciphers (DES)

 

K라는 Key를 가지고, Non-invertible한 함수 f(K)를 만든다.

 

[ Encryption ] P1 이 Mixer를 통해 XOR 연산을 거쳐 C1이란 암호로 바뀐다.

                        P1 ➡️ XOR ➡️ C1

 

[ Decryption ] C1 이 Mixer를 통해 XOR 연산을 거쳐 P1이란 암호로 바뀐다.

                        C1 ➡️ XOR ➡️ P1

 


 

발전된 형태

문제점 : 모든 R은 같다 = 절반은 다 알고 갈 수 있다.

 


최종 형태

 

➡️ L, R 한 번씩 돌아가면서 XOR를 거친다.

+ Encryption Key 사용 순서 : K1 > K2

+ Decryption Key 사용 순서 : K2 > K1

 

📌 Feistel Cipher 요약

1. 두 개의 Block으로 쪼갠다.

2. 연산을 계속 돌린다.

 

3. 너무 많이 돌리면 Time Complexity가 커질 수가 있다.

 

 

 

 


Non - Feistel Cipher
(AES)

: Invertible한 Components만 사용한다.

 

 


https://skogkatt.tistory.com/entry/DESData-Encryption-Standard

정리 잘 되어있음

 

Data Encryption Standard
(DES)

: 64비트 Data를 / 56비트 Key로  Encrypts 한다.

* 하나의 파일이 64비트보다 크다면?
    > 64비트 단위로 쪼개면서 Encrypts

 

 

작동 방식은 다음과 같다.

 

1. 처음 들어온 Plaintext에 대해서 Permutation 을 한 번 한다.

2. 56bit Key를 통해 48bit Key를 받는다.

3. 각각의 Round마다 48bit Key를 받으면서 Round를 돌린다.

    x16 반복

 

4. 마지막으로 Permutation 한 번 더 돌리고 Ciphertext 내놓음.

 

 

 

 

Expansion P-box는 32bits ➡️  48bits 이므로, 1:1 매핑이 되지 않는다.

따라서 Non Invertible

 

 

 

-Key Generation ( Parity 관련 설명 찾기 )

- Parity bit = 매 8번째 비트를 키의 무결성 검증용으로 쓴다.

 

1) 64bits 키로 시작.

2) Parity bits 제거 = 56bits

3) 28bits 두 부분으로 나눔

 

4) 각 Round에서 Shift + Compression P-box 진행하여 Key 1개 생성

    * 1,2,9,16 round에서는 1비트씩만, 나머지는 2비트씩 Shift한다.

 

5) 16번 반복하여 48bits Round Key 를 생성한다.

 

 

DES 취약점 ( GPT 한테 물어봤음 참고하셈 )

1. S-Box의 취약점

➡️ 일부 S-Box들은 보안적으로 취약하다.

 

 

2. Key의 취약점

➡️ 일부 Key의 패턴은 값이 섞이지 않을 수도 있음 + Key size가 너무 작다.

 

 

3. Differential and Linear Cryptoanalysis

➡️ 평문과 암호문을 잘 때려 맞춰서 Key를 유추해낼 수 있다. 

 

 

4. Timing attack

➡️ 복호화 할 때, 현재 시간을 알고리즘의 Key로 쓰기도 하는데, 시간을 안다면 바로 뚫릴 수 있음

 

대안책 )

- AES

- 서로 다른 Key 2개로 DES를 2번 돌린다.

- 서로 다른 Key 2,3개를 가지고 DES를 3번 돌린다.

 

 

 

2번 DES 돌리는 건 meet-in-the-middle 문제가 생긴다.

 

Middle이 서로 같으므로, 그걸 가지고 Key를 구할 수 있다.

 

ex) Plain Text를 K1으로 한 번 Encryption 한 값

    = Cipher Text를 K2로 Decryption 한 값은 같다. 

이를 이용하여 P 를 모든 Key1으로 Encryption 해보고

                      C를  모든 Key2로 Decryption 했을 때, 같은 한 쌍이 있을 것이다.

 

 

따라서 사실 single DES 에 비해 예상한 것보다 복잡하지 않다.

 

 

 

 

 

 

얘도 중간 단계에서 데이터를 채가려면 채갈 수 있다.

 

하지만 DES 연산을 3번을 하기 때문에 쉽진 않음

 

Encryption - Decryption - Encryption 순서로 진행하여 더 복잡한 암호화 과정을 거칠 수 있다.

➡️ K1,K2를 쓰는데 이 둘이 같으면 곤란... 근데 암-복-암으로 하면 한 번은 암호화가 되니까 문제없다...(이해해내기)

key가 달라서 괜찮음

 

 

- Encryption : 왼쪽에서 오른쪽

- Decryption : 오른쪽에서 왼쪽

 

 

 

 

(출처)

한동대학교 고윤민교수님 - 컴퓨터 보안