CS

TLS (2) : 디지털 서명

pggggggggh 2025. 11. 26. 18:53

암호학적 해시 함수

암호학적 해시 함수(cryptographic hash function)는 일반적인 해시 함수처럼 임의의 입력을 범위 안의 수로 변환하는 함수이지만, 몇 가지 특징이 더 요구된다.

  • 단방향 함수(one-way function) : 입력에서 해시값을 만들어내기는 쉬워도, 해시에서 입력을 만들어내는 것이 불가능하거나 매우 어려워야 한다.
  • 쇄도 효과(avalanche effect) : 차이가 조금 있는 여러 입력 데이터에 대한 해시 결과값은 서로 연관관계가 있어서는 안 된다.

두 번째 성질이 없다면, 공격자는 사진의 1,4번째 HINT와 같이 입력을 조금씩 변화시키며 규칙을 찾는 '차분 공격(diffrential cryptanalysis)'를 시도하여 내부 동작을 파악할 수 있다. (출처 : tvN)

디지털 서명

디지털 서명(digital signature)은 네트워크에서 송신자의 신원을 증명하는 방법이다. 디지털 서명은 송신자가 자신이 보내려는 데이터의 암호학적 해시값을 계산한 뒤, 그 해시된 값을 자신의 개인키로 암호화서명(signature)을 데이터 뒤에 첨부함으로서 이뤄진다. 수신자는 받은 서명을 공개키로 복호화하여 해시값이 올바른지 확인한다.

디지털 서명은 다음과 같은 세 가지 이점을 제공한다.

  • 정합성 검증(integrity check) : 메시지가 전송 도중에 위조되거나 변조되지 않았음을 보증하는 것이다. 수신자는 송신자의 공개키로 서명을 풀어서 얻은 '원본 해시값'과, 자신이 받은 데이터를 직접 해시한 '계산된 해시값'이 일치하는지 비교함으로써 검증한다.
  • 부인방지(nonrepudiation) : 메시지를 보낸 사람이 '나는 그런 거 보낸 적 없다!'라고 주장할 수 없다는 뜻이다. 개인키로 메시지에 서명을 했고, 그 서명을 복호화한 해시값이 올바르다면 송신자는 자신이 서명했음을 부인하기 어렵다.
  • 인증(authentication) : 발신자가 내가 생각하는 그 발신자가 맞는지를 검증하는 것이다. 수신자가 가진 공개키로 서명이 정상적으로 복호화된다는 것은, 개인키를 가진 사람, 즉 발신자가 이 메시지를 작성했다는 뜻이므로 발신자의 신원을 확실히 믿을 수 있다.

공개키의 신뢰성 문제

디지털 서명은 강력하지만, 한 가지 치명적인 약점이 존재한다. 바로 공개키 자체의 신뢰성 문제인데, 수신자가 받은 공개키가 실제 송신자의 것인지, 아니면 중간에서 해커가 송신자인 척하며 바꿔치기한 가짜 공개키인지 검증할 방법이 없다면 디지털 서명은 무용지물이 된다.

PKI와 CA

오늘날의 웹은 이러한 문제를 해결하기 위해 공개키 인프라스트럭처(PKI, Public Key Infrastructure)를 사용한다. 이 인프라에는 신뢰할 수 있는 제3자인 인증기관(CA, Certificate Authority)가 있어서, 이 키가 어떤 당사자의 것인지 인증해준다. 인증기관은 송신자의 공개키와 신원 정보를 확인한 뒤, 인증기관의 키로 서명된 디지털 인증서(digital certificate)를 발급한다. 대부분의 PC에는 OS나 브라우저에 전 세계 주요 CA들의 공개키가 내장되어 있어, CA가 발급한 인증서의 서명을 받아서 복호화할 수 있다. 정상적으로 복호화된다면 송신자의 공개키가 진본임을 확인하게 된다.

일례로,  https://naver.com 은 DigiCert에서 발급받은 인증서를 통해 자신의 진본성을 검증한다.


출처

<한 권으로 읽는 컴퓨터 구조와 프로그래밍>, 13장

https://www.youtube.com/watch?v=NCJfgyH7roc&t=786s

https://ko.wikipedia.org/wiki/%EB%94%94%EC%A7%80%ED%84%B8_%EC%84%9C%EB%AA%85

'CS' 카테고리의 다른 글

TLS (1) : 암호화 메커니즘  (0) 2025.11.24