Kerckoff’s 원리
암호 시스템의 안정성은 key의 안정성에만 의존해야 한다.
암호 알고리즘은 공개되어도 괜찮음. key만 지키면 됨
Passive Attack
Active Attack
공격 모델 4가지
Ciphertext Only Attack
공격자가 중간에서 암호문 갈취하는 거
암호 알고리즘 알아내거나 로그 분석, 정보 수집, 키 알아내기 등
Known Plaintext Attack
bob alice가 과거에 사용했던 text 쌍을 사용하는 것
Chosen Plaintext Attack
공격자가 plaintext를 선택해서 bob한테 보내고 ciphertext 얻어냄. plaintext를 마음대로 조작하는 것
공격자가 원하는 평문을 선택할 수 있음,
Chosen Ciphertext Attack
공격자가 ciphertext를 선택해서 alice한테 보내고 plaintext 얻어냄. cipertext를 마음대로 조작하는 것
AES
1 block: 128 bits
- SubBytes
- ShiftRows
- MixColumns: 행렬 곱셈
- AddRoundKey: XOR
Round 10에서는 MixColumns 수행 X
Trapdoor One-Way Function
Trapdoor(secret) 정보 알고 있다 → inverse(f) 가능
one way function은 inverse(f) 불가능
RSA
- n이 커야함 → n이 작으면 p, q를 알기 쉽기 때문에 d를 알 수 있게 됨
Hash function
- integrity를 제공하기 위함
- 임의의 길이를 입력받아서 고정된 size로 매핑(hash, digest)하여 출력함
- one way function
- 충돌 쌍을 찾기 어려워야 함
- 충돌 쌍: 다른 메시지를 가지고 똑같은 해시값을 만드는!
- Preimage Resistance:
- h가 주어질 때, H(x) = h를 만족하는 x를 찾는 것이 어려운
- Second Preimage Resistance
- x가 주어질 때, H(y) = H(x)를 만족하는 y를 찾는 것이 어려운
- Collision Resistance
- H(y) = H(x)를 만족하는 (x, y) 쌍을 찾는 것이 어려운
MAC (Message Authentication Code)
- 메시지와 같이 돌아다님
MAC의 동작 방식
송신자 측 (Sender)
- 메시지 생성: 송신자는 전송하려는 메시지를 준비합니다.
- 공유된 키 사용: 송신자와 수신자 사이에 미리 공유된 비밀 키를 사용합니다.
- 해시 함수 적용: 송신자는 메시지와 비밀 키를 사용하여 해시 값을 생성합니다. 이 해시 값이 바로 MAC입니다.
- 메시지와 MAC 전송: 송신자는 생성한 메시지와 MAC를 함께 수신자에게 보냅니다.
수신자 측 (Receiver)
- 메시지 및 MAC 수신: 수신자는 송신자로부터 메시지와 MAC를 받습니다.
- 해시 함수 적용: 수신자는 자신이 받은 메시지와 미리 공유된 비밀 키를 사용하여 해시 값을 다시 생성합니다.
- MAC 비교: 수신자는 자신이 생성한 해시 값(MAC)과 송신자로부터 받은 MAC를 비교합니다.
- 일치: 두 값이 일치하면, 메시지가 전송 중에 변조되지 않았으며, 신뢰할 수 있는 송신자로부터 왔음을 확인할 수 있습니다.
- 불일치: 두 값이 일치하지 않으면, 메시지가 변조되었거나, 신뢰할 수 없는 출처에서 왔음을 의미합니다.
전자 서명
- 공개키, 개인키를 RSA와 반대로 사용함
전자 서명의 동작 방식
서명 생성 (Signer)
- 해시 함수 적용: 서명자는 서명할 메시지의 해시 값을 생성합니다. 해시 함수는 메시지의 고정 길이 해시 값을 만들어내는 일방향 함수입니다.
- 개인 키 사용: 서명자는 자신의 개인 키를 사용하여 생성된 해시 값을 암호화합니다. 이 암호화된 해시 값이 디지털 서명이 됩니다.
- 서명 전송: 서명자는 원본 메시지와 디지털 서명을 수신자에게 전송합니다.
서명 검증 (Receiver)
- 메시지 및 서명 수신: 수신자는 서명자로부터 원본 메시지와 디지털 서명을 받습니다.
- 해시 함수 적용: 수신자는 받은 원본 메시지의 해시 값을 생성합니다.
- 공개 키 사용: 수신자는 서명자의 공개 키를 사용하여 디지털 서명을 복호화합니다. 복호화된 값은 서명자가 메시지를 해시할 때 사용한 해시 값과 동일해야 합니다.
- 해시 값 비교: 수신자는 복호화된 해시 값과 자신이 생성한 해시 값을 비교합니다.
- 일치: 두 값이 일치하면, 메시지가 전송 중에 변조되지 않았으며, 신뢰할 수 있는 서명자로부터 왔음을 확인할 수 있습니다.
- 불일치: 두 값이 일치하지 않으면, 메시지가 변조되었거나, 신뢰할 수 없는 출처에서 왔음을 의미합니다.
다이제스트 서명 과정
- 다이제스트: 메시지보다 훨씬 더 길이가 짧은 거
1. 서명자 (Sender)
- 해시 함수 적용: 서명자는 원본 메시지에 해시 함수를 적용하여 메시지 다이제스트를 생성합니다. 해시 함수는 SHA-256, SHA-3 등의 알고리즘을 사용합니다.
- 다이제스트 서명: 생성된 메시지 다이제스트를 서명자의 개인 키로 암호화합니다. 이 암호화된 값이 디지털 서명입니다.
- 서명 전송: 서명자는 원본 메시지와 디지털 서명을 수신자에게 전송합니다.
2. 수신자 (Receiver)
- 메시지 및 서명 수신: 수신자는 서명자로부터 원본 메시지와 디지털 서명을 받습니다.
- 해시 함수 적용: 수신자는 받은 원본 메시지에 동일한 해시 함수를 적용하여 메시지 다이제스트를 생성합니다.
- 서명 검증: 수신자는 서명자의 공개 키를 사용하여 디지털 서명을 복호화합니다. 복호화된 값은 서명자가 생성한 메시지 다이제스트와 동일해야 합니다.
- 다이제스트 비교: 수신자는 복호화된 다이제스트와 자신이 생성한 다이제스트를 비교합니다.
- 일치: 두 값이 일치하면 메시지가 전송 중에 변조되지 않았으며, 신뢰할 수 있는 서명자로부터 왔음을 확인할 수 있습니다.
- 불일치: 두 값이 일치하지 않으면 메시지가 변조되었거나, 신뢰할 수 없는 출처에서 왔음을 의미합니다.
'CS > Network' 카테고리의 다른 글
06_Multiplexing (1) | 2024.07.24 |
---|---|
05_Thread (12) | 2024.07.24 |
04_Multiprocess (2) | 2024.07.24 |
03_TCP Connections (0) | 2024.07.24 |
02_Socket_IO (2) | 2024.07.23 |