공개키 지문

Public key fingerprint

공개키 암호학에서 공개키 핑거프린트는 긴 공개키를 식별하기 위해 사용되는 바이트의 짧은 시퀀스입니다.지문은 공용 키에 암호화 해시 함수를 적용하여 생성됩니다.지문은 지문이 참조하는 키보다 짧기 때문에 특정 키 관리 작업을 단순화하는 데 사용할 수 있습니다.마이크로소프트 소프트웨어에서는 "지문" 대신 "썸프린트"가 사용됩니다.

공개 키 지문 생성

공개 키 핑거 프린트는, 통상, 다음의 순서로 작성됩니다.

  1. 공개 키(및 일부 추가 데이터)는 바이트 시퀀스로 인코딩됩니다.나중에 동일한 지문을 다시 작성하려면 인코딩이 결정론적이어야 하며 추가 데이터를 공용 키와 함께 교환 및 저장해야 합니다.추가 데이터는 일반적으로 공개 키를 사용하는 모든 사용자가 알아야 하는 정보입니다.추가 데이터의 예로는 키를 사용하는 프로토콜 버전(PGP 핑거 프린트의 경우) 및 키 홀더의 이름(X.509 신뢰 앵커 핑거 프린트의 경우 추가 데이터가 X.509 자기 서명 증명서로 구성됩니다).
  2. 이전 단계에서 생성된 데이터는 SHA-1이나 SHA-2와 같은 암호화 해시 함수로 해시됩니다.
  3. 필요에 따라서, 해시 함수 출력을 잘라내, 보다 짧고 편리한 핑거 프린트를 제공할 수 있습니다.

이 프로세스에서는 훨씬 더 큰 공용 키를 인증하는 데 사용할 수 있는 짧은 지문이 생성됩니다.예를 들어, 일반적인 RSA 공개 키의 길이는 2048비트 이상이지만, 일반적인 MD5 또는 SHA-1 핑거 프린트의 길이는 128비트 또는 160비트밖에 되지 않습니다.

사람의 검사를 위해 표시되는 경우 지문은 보통 16진수 문자열로 인코딩됩니다.그런 다음 이러한 문자열은 읽기 쉽도록 문자 그룹으로 포맷됩니다.예를 들어 SSH용 128비트 MD5 핑거 프린트는 다음과 같이 표시됩니다.

43:51:43:a1:b5:fc:8b:b7:0a:3a:a9:b1:0f:66:73:a8

키 인증에 공용 키 지문 사용

인터넷 등 신뢰할 수 없는 채널을 통해 공용 키가 수신되면 수신자는 공용 키를 인증하려고 하는 경우가 많습니다.지문 크기가 작기 때문에 공용 키가 쉽게 들어가지 않는 신뢰할 수 있는 채널을 통해 지문을 전달할 수 있기 때문에 이 작업을 수행하는 데 도움이 됩니다.

예를 들어, 앨리스가 공개 키가 밥의 것임을 인증하고 싶다면, 전화나 직접 밥에게 연락하여 지문을 읽어달라고 요청하거나 지문이 적힌 종이를 줄 수 있습니다.그러면 Alice는 이 신뢰할 수 있는 지문이 공용 키의 지문과 일치하는지 확인할 수 있습니다.이와 같은 값은 긴 공개 키가 아닌 짧은 지문일 경우 교환 및 비교가 훨씬 쉬워집니다.

지문은 키 인증 데이터의 교환 또는 저장을 자동화할 때도 유용합니다.예를 들어, 키 인증 데이터를 프로토콜을 통해 전송하거나 전체 공개 키의 크기가 문제가 되는 데이터베이스에 저장해야 하는 경우 지문을 교환하거나 저장하는 것이 보다 실행 가능한 해결책이 될 수 있습니다.

또한 사용자가 방금 다운로드한 공용 키를 서드파티 검색 엔진에서 볼 수 있도록 검색 엔진에서 지문을 조회할 수 있습니다.검색 엔진이 적절한 사이트에 링크된 지문을 참조하는 히트를 반환하면 중간자 공격과 같은 공격자에 의해 키가 삽입되지 않았음을 더욱 확신할 수 있습니다.

PGP는 음성 채널을 통한 공개 키 핑거 프린트의 교환을 용이하게 하기 위해 PGP 워드 리스트를 개발했습니다.

공개 키 지문 사용 중

SSH와 같은 시스템에서는 사용자가 수동으로 지문을 교환하고 검사하여 키 인증을 수행할 수 있습니다.사용자가 다른 사용자의 지문을 승인하면 해당 지문(또는 해당 지문에서 참조하는 키)이 다른 사용자의 이름 또는 주소 기록과 함께 로컬에 저장되므로 이후 해당 사용자와의 통신이 자동으로 인증됩니다.

X.509 기반 PKI 등의 시스템에서는 주로 핑거 프린트가 루트 키 인증에 사용됩니다.이러한 루트 키는 사용자 키 인증에 사용할 수 있는 인증서를 발급합니다.이 증명서를 사용하면 사용자 간에 수동으로 지문을 확인할 필요가 없어집니다.

PGP나 Groove 등의 시스템에서는 핑거 프린트를 사용하여 다른 사용자에 속하는 키 또는 증명서 발행 기관에 속하는 키를 인증할 수 있습니다.PGP 에서는, 통상의 유저가 서로 증명서를 발행해, 신뢰의 Web을 형성할 수 있습니다.또, 이 프로세스(키 서명 파티등)를 지원하기 위해서 핑거 프린트가 자주 사용됩니다.

CGASFS 등의 시스템이나 대부분의 암호화 피어피어 네트워크에서는, 지문은 기존의 주소 형식이나 이름 형식(IPv6 주소, 파일명, 그 외의 식별 문자열 등)에 짜넣어져 있습니다.이미 신뢰할 수 있는 채널을 통해 주소 및 이름을 교환하고 있는 경우, 이 방법을 사용하면 핑거 프린트를 그 [1]위에 피기백할 수 있습니다.

PGP에서는, 대부분의 키는, 「키 ID」라고 불리는 것이, 각각 키 핑거 프린트의 하위 32비트 또는 64비트와 같도록 작성됩니다.PGP는 다양한 목적으로 공개 키를 참조하기 위해 키 ID를 사용합니다.이들 지문은 길이가 짧기 때문에 공개 키를 안전하게 인증할 수 없기 때문에 적절하게 말하면 지문이라고 할 수 없습니다.현재 하드웨어에서는 충돌하는 32비트 키 ID를 4초 [2]만에 생성할 수 있으므로 32비트 키 ID를 사용하지 마십시오.

공개 키 지문 보안

지문 보안에 대한 일차적인 위협은 두 번째 프리이미지 공격입니다. 공격자는 이 공격에서 공용 키가 피해자의 지문과 일치하는 지문과 해시되는 키 쌍을 구성합니다.그런 다음 공격자는 피해자의 공개 키 대신 자신의 공개 키를 제시하여 피해자로 위장할 수 있습니다.

시스템에 따라서는 두 번째 위협은 충돌 공격입니다.이 공격에서는 공격자가 자신의 지문을 해시하는 여러 키쌍을 구축합니다.이로 인해 공격자가 작성한 시그니처를 거부하거나 기타 혼란을 일으킬 수 있습니다.

프리이미지 공격을 방지하기 위해 핑거프린트에 사용되는 암호화 해시 함수는 두 번째 프리이미지 저항 속성을 가져야 합니다.충돌 공격이 위협적인 경우 해시 함수도 충돌 방지 속성을 가져야 합니다.짧고 사용 가능한 지문을 위해 해시 함수 출력을 잘라내는 것은 허용되지만 잘린 지문은 브루트 포스 검색 공격에 대해 해시 함수의 관련 속성을 보존할 수 있을 만큼 충분히 길어야 합니다.

실제로 오늘날 일반적으로 사용되는 대부분의 지문은 절단되지 않은 MD5 또는 SHA-1 해시를 기반으로 합니다.2017년 현재 MD5 및 SHA-1에서 사전 이미지가 아닌 충돌을 확인할 수 있습니다.따라서 미래에는 SHA-256과 같은 새로운 해시 함수의 사용이 증가할 것으로 예상됩니다.단, SHA-256에 기반한 핑거프린트 및 출력 길이가 긴 기타 해시함수는 MD5 또는 SHA-1 핑거프린트보다 잘릴 가능성이 높습니다.

반드시 지문 길이를 최소화해야 하는 상황에서는 지문 계산 비용을 증가시킴으로써 지문 보안을 강화할 수 있습니다.예를 들어 암호로 생성된 주소의 컨텍스트에서는 이를 "해시 확장"이라고 하며, 지문을 계산하고 있는 모든 사용자가 고정 개수의 [3]0으로 시작하는 해시섬을 검색해야 하므로 비용이 많이 드는 작업으로 간주됩니다.

「 」를 참조해 주세요.

참조

  1. ^ David Mazières; M. Frans Kaashoek (September 1998). Escaping the Evils of Centralized Control with self-certifying pathnames (PostScript). Proceedings of the 8th ACM SIGOPS European workshop: Support for composing distributed applications. Sintra, Portugal: MIT. Retrieved 2006-12-23.
  2. ^ Evil 32: GPG 지문 확인
  3. ^ Aura, Tumas (March 2005). "Hash Extension". Cryptographically Generated Addresses (CGA). IETF. sec. 7.2. doi:10.17487/RFC3972. RFC 3972. Retrieved January 2, 2018.