Digital Signatures
앞 포스트에서 언급했듯이 사용자를 증명하기 위해 전자서명이 사용된다.
그런데, 전자서명으로 인증할 때에 일부 데이터를 해싱하여 사용한다고 언급하였다.
일부 데이터를 해싱 함수에 넣은 결과값을 digest(다이제스트)라고 한다.
디지털 서명을 송신하기 위한 간단한 방법은 아래와 같다.
이 결과값이 수신자와 동일하면 데이터가 손상이 되지 않았다는 의미로 무결성이 보장됐다는 의미이다.
서명된 디지털 문서는 검증이 가능하고, 위조 불가능하다는 특징을 갖고 있다.
서명된 문서를 받은 수신자는 송신자 제외 그 누구로 디지털 문서에 서명하지 않았음을 증명할 수 있다.
메세지 m에 대한 디지털 서명은 송신자의 개인키 암호화가 진행되는데, 송신자의 개인키로 암호화를 진행하는 것이 디지털 문서에 대한 서명이라고 할 수 있다.
Message digests
앞서 공개키 알고리즘을 통해 암호화를 진행하는 것은 암호화/복호화 키가 비대칭적이므로 시간이 오래 소요된다고 하였다. 이때, 디지털 문서의 길이가 긴 경우 긴 문서 전체를 암호화하는 것은 복잡도가 높고 비용이 많이 소요되는 일이다. 따라서 우리는 Message digests 방법을 도입하였다.
Message digests 방법은 임의의 길이를 갖는 메세지를 입력으로 받고 고정된 길이의 메세지를 결과값으로 갖는다.
이때 해싱된 값은 디지털 "지문"과도 같다.
송신자는 메세지의 일부를 해싱한 값을 암호화한다. 암호화된 메세지를 전송한 후 수신자는 메세지를 복호화하여 마찬가지로 해싱 함수에 넣어 원래의 데이터에서 변경되지 않았는지를 확인한다.
아래는 Message digests의 특징이다.
- many-to-1
서로 다른 값이 같은 해시 값을 가질 수 있다. 입력으로 들어올 수 있는 데이터의 길이는 무한한데, 출력으로 가질 수 있는 데이터의 길이가 유한하기 때문이다.
이를 중복 충돌이라고도 하는데, 이러한 충돌은 굉장히 낮은 확률로 발생하도록 설계되어 있어 암호학적으로 안전하다고 한다.
- fixed-size msg digest (fingerprint)
항상 고정된 길이의 메세지를 출력한다.
- 해싱된 결과 값으로 해싱 이전의 값을 찾을 수 없다.
Message digest를 x라고 하고, 해싱 함수를 H라고 했을 때 x = H(m)이다.
이때, x로 m을 구할 수 없다.
Internet checksum: poor crypto hash function
오류를 검출하기 위한 checksum은 해시함수의 특징을 가지고 있다.
1. 고정된 길이의 메세지 다이제스트를 생성한다. (16비트)
2. many to one
그런데, 체크섬은 오류 검출이 어렵고 동일한 해시값을 갖는 메세지의 개수가 많다.
따라서 체크섬 방법은 불안전하다.
이는 Parity bit도 마찬가지다. 따라서 암호학적인 체크섬이나 패리티 비트를 사용해야 하는데, 사실 이 마저도 불안전하다.
Digital signature = signed message digest
위 사진은 해시 함수를 통해 메세지의 무결성을 확인하는 과정을 도식화한 것이다.
송신자는 원본 데이터 m과 m을 해시 함수에 넣은 결과값을 송신자의 개인키로 암호화한 데이터를 모두 전송한다.
수신자는 원본 데이터 m과 암호화된 데이터를 송신자의 공개키로 복호화한 후 서로 비교한다. 이때 두 값이 서로 같으면 데이터의 무결성이 보장된 것이다.
Hash function algorithms
MD5
RFC 1321 표준으로 대표적으로 인터넷에서 가장 많이 사용되고 있다.
4단계 프로세스로 128비트 메시지 다이제스트를 계산한다.
SHA-1
미국 표준 [NIST, FIPS PUB 180-1]
160비트의 메세지 다이제스트를 생성한다.
참고 및 출처
https://conkjh032.tistory.com/239
https://slidesplayer.org/slide/11334771/
https://velog.io/@dltmdrl1244/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-8-3.-Digital-Signiture
'Computer Science > 컴퓨터네트워크(ComNet)' 카테고리의 다른 글
[컴네/CN] 암호통신: IPSec (0) | 2023.12.09 |
---|---|
[컴네/CN] 암호통신: 이메일 (0) | 2023.12.09 |
[컴네/CN] 암호통신: 대칭키, 공개키 (1) | 2023.12.09 |
[컴네/CN] 전송 계층 보안, TLS (1) | 2023.12.07 |
[컴네/CN] IP Routing: BGP (2) | 2023.12.07 |