오래 못 할 짓 하지 않기
[ 컴퓨터 보안 ] 9. Cryptography ( 이외 유닛 + DES ) 본문
[ 컴퓨터 보안 ] 9. Cryptography ( 이외 유닛 + DES )
쫑알bot 2024. 10. 22. 12:38Product 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 : 오른쪽에서 왼쪽
(출처)
한동대학교 고윤민교수님 - 컴퓨터 보안
'3학년 2학기 > 컴퓨터 보안(Computer Security)' 카테고리의 다른 글
[ 컴퓨터 보안 ] 11. Cryptography : AES 2 (0) | 2024.10.29 |
---|---|
[ 컴퓨터 보안 ] 10. Cryptography : AES (0) | 2024.10.26 |
[ 컴퓨터 보안 ] 8. Cryptography 대칭키 ( + 비대칭키 ) (0) | 2024.10.15 |
[ 컴퓨터 보안 ] 7. Cryptography - 치환 / 재배열 / 암.복호화 (0) | 2024.10.15 |
[ 컴퓨터 보안 ] 6. Race Condition (0) | 2024.10.06 |