해시 및 디지털 서명(Windows 스토어 앱)
해시
암호화 해시 함수는 데이터의 임의 크기 블록을 가져가서 고정 크기 비트 문자열로 반환합니다. 해시 함수는 일반적으로 데이터에 서명할 때 사용됩니다. 대부분의 공개 키 서명 작업은 집중적인 계산이 필요하므로 주로 원본 메시지에 서명하는 것보다 메시지 해시에 서명(암호화)하는 것이 보다 효과적입니다. 다음 과정은 간소화되기는 했지만 일반적인 시나리오를 나타냅니다.
- Alice는 키 쌍을 만들어 자신의 개인 키를 비밀 상태로 유지하고, 신뢰할 수 있는 인증 기관을 사용하여 공개 키를 게시합니다.
- Alice는 메시지를 만들고, 해시하고, 자신의 개인 키를 사용하여 해시에 서명한 후 이 (암호화되지 않은) 메시지와 서명을 Bob에게 보냅니다.
- Bob은 Alice의 공개 키를 검색하고 서명을 암호 해독하여 Alice의 해시를 검색합니다.
- Bob은 Alice에게 받은 메시지를 해시하고 암호 해독된 해시로 계산한 해시와 비교합니다. 해시가 동일하면 Bob은 Aiice가 보낸 메시지가 변경되지 않았음을 확신합니다.
Alice는 암호화되지 않은 메시지를 보냈고, 해시만 암호화되었다는 점에 유의하세요. 이 절차는 원래 메시지가 변경되지 않았고, Alice의 공개 키가 사용되었고, Alice의 개인 키에 액세스할 수 있는 누군가(아마도 Alice)가 메시지 해시에 서명했다는 점만 보장합니다.
HashAlgorithmProvider 클래스를 사용하여 사용 가능한 해시 알고리즘을 열거하고 CryptographicHash 값을 만들 수 있습니다.
디지털 서명은 개인 키 MAC(메시지 인증 코드)와 동일한 공개 키입니다. MAC는 메시지 수신자가 해당 메시지가 전송 중에 변경되지 않았음을 확인하는 데 개인 키를 사용하는 반면, 서명은 개인/공개 키 쌍을 사용합니다.
디지털 서명
디지털 서명은 개인 키 MAC(메시지 인증 코드)와 동일한 공개 키입니다. MAC는 메시지 수신자가 해당 메시지가 전송 중에 변경되지 않았음을 확인하는 데 개인 키를 사용하는 반면, 서명은 개인/공개 키 쌍을 사용합니다.
대부분의 공개 키 서명 작업은 집중적인 계산이 필요하므로 주로 원본 메시지에 서명하는 것보다 메시지 해시에 서명(암호화)하는 것이 보다 효과적입니다. 발신자는 메시지 해시를 만들고, 해시에 서명하고, 서명과 (암호화되지 않은) 메시지 둘 다를 보냅니다. 수신자는 메시지의 해시를 계산하고, 서명을 암호 해독하고, 암호 해독한 서명을 해시 값과 비교합니다. 그 둘이 일치하면 수신자는 발신자가 보낸 메시지가 전송 중에 변경되지 않았음을 확신할 수 있습니다.
서명은 원래 메시지가 변경되지 않았고, 발신자의 공개 키가 사용되었고, 개인 키에 액세스할 수 있는 누군가가 메시지 해시에 서명했다는 점만 보장합니다.
AsymmetricKeyAlgorithmProvider 개체를 사용하면 사용 가능한 서명 알고리즘을 열거하고 키 쌍을 생성하거나 가져올 수 있습니다. CryptographicHash 클래스에서 정적 메서드를 사용하면 메시지에 서명하거나 서명을 확인할 수 있습니다.