2023학년도 2학기 충남대학교 이영석 교수님의 컴퓨터네트워크 수업 정리자료입니다.
📁 디지털 서명
디지털 서명이란 네트워크에서 송신자의 신원을 증명하는 방법으로, 송신자가 자신의 비밀키로 암호화한 메시지를 수신자가 송신자의 공용키로 해독하는 과정을 말한다.

Bob이 본인의 개인키 K(B)- 로 메세지 m을 암호화하여 Alice에게 전달하면, 이 암호화된 메세지를 디지털 서명된 메세지라고 하며, Alice는 Bob의 공개키를 사용해서 복호화할 수 있다.
수신자인 Alice는 송신자인 Bob 외에 그 누구도 이 문서에 서명하지 않았음을 타인에게 증명할 수 있으며, 이런 점에서 검증 가능(verifiable)하고 위조 불가능(nonforgeable)한 특징을 지닌다.

이때, 메세지의 길이가 긴 경우 공개키로 암호화하는데 계산 비용이 많이 든다. 암호화의 목표는 길이를 고정하고, "지문"을 계산하기 쉽게 만드는 것이므로, 메세지 m을 해싱하여 고정 크기 메시지 H(m)을 얻는 방법을 사용한다.
메세지를 해싱하기 위해 사용하는 Hash function의 결과값은 해시값, 해시코드, 해시체크섬, 해시라고 부르며, Hash function은 다음과 같은 속성을 가진다.
- many-to-1 : 서로 다른 값이 같은 해시값을 가질 수 없다.
- 고정크기의 메세지 해시값, 즉 digest(지문)을 생성한다.
- 메세지 digest x가 주어졌다고 가정할 때, x를 해싱하기 이전 값인 m을 구하는것은 계산상 불가능하다.
🌙 Internet Checksum

인터넷 체크섬에도 해시함수의 일부 속성이 존재한다.
- 고정 길이의 digest를 생성한다.
- many-to-1
하지만 해시함수와 다르게, 해시값이 해시값과 그에 해당하는 메세지가 주어지면, 같은 해시값을 갖는 다른 메세지를 쉽게 구할 수 있다.

해시함수를 적용하여 메세지를 주고받는 과정은 다음과 같다.
- Bob이 메세지 m을 해싱하여 H(m)이라는 값을 얻었고, 이를 Bob의 개인키로 암호화한 Kb(H(m))과 원본 데이터 m을 Alice에게 전송한다.
- 앨리스는 전달받은 원본 데이터 m에 해시함수를 사용한 H(m)과, 전달받은 Kb(H(m))을 Bob의 공개키로 복호화한 값을 서로 비교한다.
Hash function algorithms
해시 함수를 이용하는 알고리즘 중에는 MD5, SHA-1 등이 있다.
- MD5 : 4단계에 걸쳐 128비트 크기의 digest를 생성한다.
- SHA-1 : 160비트 크기의 digest를 생성한다.
📁 인증서
이때 디지털 서명만으로는 송신자의 신원을 확인할 수 없으므로 인증서를 사용한다.
예를 들어 Bob이 아닌 제3자 Trudy가 Alice에게 메세지 m을 본인의 개인키로 암호화하여 전달하고, Alice에게 본인의 공개키를 Bob의 공개키라고 하고 알려준다.
Alice는 암호화된 메세지를 전달받은 공개키로 복호화할 수 있으므로 이상이 없다고 생각한다.
위 경우와 같이 공개키가 검증되지 않으면 공개키와 개인키 소유자의 신원 확인이 불가능하다. 때문에 공개키를 검증하기 위해 CA라는 인증기관의 도움을 받는다.
CA는 송신자의 개인정보와 그 사람의 공개키를 서로 묶어 저장해두고, 이를 기반으로 인증서(certificate)를 만든다.

인증서란 사용자의 개인 정보와 공개키를 CA의 개인키로 암호화한 것을 말한다. 즉 CA가 해당 인증서의 공개키가 개인정보 당사자의 공개키가 맞다고 보장해주는 것이다.
인증서에는 신원정보, 공개키, 유효기관, 인증기관정보, 인증기관의 전자서명이 들어있다.
X.509
인증서의 표준.

