CS/Network

11_Security

@~@ 2024. 7. 24. 00:44

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

  1. SubBytes
  2. ShiftRows
  3. MixColumns: 행렬 곱셈
  4. 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)

  1. 메시지 생성: 송신자는 전송하려는 메시지를 준비합니다.
  2. 공유된 키 사용: 송신자와 수신자 사이에 미리 공유된 비밀 키를 사용합니다.
  3. 해시 함수 적용: 송신자는 메시지와 비밀 키를 사용하여 해시 값을 생성합니다. 이 해시 값이 바로 MAC입니다.
  4. 메시지와 MAC 전송: 송신자는 생성한 메시지와 MAC를 함께 수신자에게 보냅니다.

수신자 측 (Receiver)

  1. 메시지 및 MAC 수신: 수신자는 송신자로부터 메시지와 MAC를 받습니다.
  2. 해시 함수 적용: 수신자는 자신이 받은 메시지와 미리 공유된 비밀 키를 사용하여 해시 값을 다시 생성합니다.
  3. MAC 비교: 수신자는 자신이 생성한 해시 값(MAC)과 송신자로부터 받은 MAC를 비교합니다.
    • 일치: 두 값이 일치하면, 메시지가 전송 중에 변조되지 않았으며, 신뢰할 수 있는 송신자로부터 왔음을 확인할 수 있습니다.
    • 불일치: 두 값이 일치하지 않으면, 메시지가 변조되었거나, 신뢰할 수 없는 출처에서 왔음을 의미합니다.

 

전자 서명

  • 공개키, 개인키를 RSA와 반대로 사용함

전자 서명의 동작 방식

서명 생성 (Signer)

  1. 해시 함수 적용: 서명자는 서명할 메시지의 해시 값을 생성합니다. 해시 함수는 메시지의 고정 길이 해시 값을 만들어내는 일방향 함수입니다.
  2. 개인 키 사용: 서명자는 자신의 개인 키를 사용하여 생성된 해시 값을 암호화합니다. 이 암호화된 해시 값이 디지털 서명이 됩니다.
  3. 서명 전송: 서명자는 원본 메시지와 디지털 서명을 수신자에게 전송합니다.

서명 검증 (Receiver)

  1. 메시지 및 서명 수신: 수신자는 서명자로부터 원본 메시지와 디지털 서명을 받습니다.
  2. 해시 함수 적용: 수신자는 받은 원본 메시지의 해시 값을 생성합니다.
  3. 공개 키 사용: 수신자는 서명자의 공개 키를 사용하여 디지털 서명을 복호화합니다. 복호화된 값은 서명자가 메시지를 해시할 때 사용한 해시 값과 동일해야 합니다.
  4. 해시 값 비교: 수신자는 복호화된 해시 값과 자신이 생성한 해시 값을 비교합니다.
    • 일치: 두 값이 일치하면, 메시지가 전송 중에 변조되지 않았으며, 신뢰할 수 있는 서명자로부터 왔음을 확인할 수 있습니다.
    • 불일치: 두 값이 일치하지 않으면, 메시지가 변조되었거나, 신뢰할 수 없는 출처에서 왔음을 의미합니다.

 

다이제스트 서명 과정

  • 다이제스트: 메시지보다 훨씬 더 길이가 짧은 거

1. 서명자 (Sender)

  1. 해시 함수 적용: 서명자는 원본 메시지에 해시 함수를 적용하여 메시지 다이제스트를 생성합니다. 해시 함수는 SHA-256, SHA-3 등의 알고리즘을 사용합니다.
  2. 다이제스트 서명: 생성된 메시지 다이제스트를 서명자의 개인 키로 암호화합니다. 이 암호화된 값이 디지털 서명입니다.
  3. 서명 전송: 서명자는 원본 메시지와 디지털 서명을 수신자에게 전송합니다.

2. 수신자 (Receiver)

  1. 메시지 및 서명 수신: 수신자는 서명자로부터 원본 메시지와 디지털 서명을 받습니다.
  2. 해시 함수 적용: 수신자는 받은 원본 메시지에 동일한 해시 함수를 적용하여 메시지 다이제스트를 생성합니다.
  3. 서명 검증: 수신자는 서명자의 공개 키를 사용하여 디지털 서명을 복호화합니다. 복호화된 값은 서명자가 생성한 메시지 다이제스트와 동일해야 합니다.
  4. 다이제스트 비교: 수신자는 복호화된 다이제스트와 자신이 생성한 다이제스트를 비교합니다.
    • 일치: 두 값이 일치하면 메시지가 전송 중에 변조되지 않았으며, 신뢰할 수 있는 서명자로부터 왔음을 확인할 수 있습니다.
    • 불일치: 두 값이 일치하지 않으면 메시지가 변조되었거나, 신뢰할 수 없는 출처에서 왔음을 의미합니다.

'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