당신이 말하는 것은 매우 매우 느슨하게 .Net 프레임 워크에서 발견되는 비대칭 암호화 알고리즘의 다른 구현처럼 보입니다.
.Net은 비대칭 암호화를 위해 두 개의 분기를 사용합니다.
- RSA ** 모든 비대칭 엔코더에 사용되는 그랜드 맥 아빠.
- DSA ** 저자를 확인하기 위해 디지털 서명을 사용하고 생성하는 것과 관련이 있습니다.
모두
모두가 어떻게 작동하는지에 대한 방법과 개발자가이를 구현하지만, 아래에 내가 매우 다른 두 가지 알고리즘이 존재 함을 읽고으로 서로 매우 비슷 추상이다. 당신은 옵션을 이야기
2.
닷넷은 일반적으로 서명으로 불린다 값으로 데이터를 태그 할 수 있습니다 DSACryptoServiceProvider라는 클래스를 제공합니다.
MS 공식 과정 교과서에 따르면 대략 어떻게 작동하는지 heres.
데이터 >>> 해시 Δ1g의 >>> 해시 값 >>>>>>>>> Asymm 'Δ1g의 >>>> 보낸 사람의 PVT.KEY >>> 아래
밥 확인하는 방법을 보여줍니다 서명 Alice가 실제로 발신자인지 확인합니다.
데이터 >>> 해시 알 >>> 해시 값 || 해독 서명 < < < Asymm 'Δ1g의 < < < 서명 < < < 보낸 사람의 PUB.KEY ? ==?
보시다시피 Bob은 Alice가 발신자인지 확인하기 위해 생성 된 해시 및 해독 된 서명 을 비교해야합니다. DSACrypto '클래스에는 여기에 을 사용할 수있는 4 가지 방법이 있지만 상황에 맞는 두 가지 방법 만 사용할 수 있습니다. 이 시점에서 Bob이 할 수있는 모든 것입니다. 공개 키가 alice의 공개 키가 아니라면 본질적으로 소프트웨어 응용 프로그램은 Bob이 궤도에서 더 이상 진행하지 못하게해야합니다. Bob은 밥이 가짜 공개 키를 사용하려고 할 때 앨리스와 의사 소통하려고합니다. 이것은 부과 된 관계이며 공개 키의 중요성을 강조합니다. 서명을 사용하면 공개 키 소유자를 확인할 수 있습니다.
여기 왜? ::
Bob이 Alice의 공개 키를 가지고 있다면 .VerifyHash 또는 VerifyData 메서드를 사용하여 암호화 된 데이터를 다시 해독하기 위해 동일한 알고리즘을 사용할 수 있습니다. 이 상황에서 그들이하는 일을 솔직하게해야합니다. 이것은 Alice의 공개 키를 사용하여 모두 완료됩니다. Alice만이 Alice의 개인 키가 필요하므로 SignHash 및 SignData 메서드를 사용할 수 있습니다.
위에서 알 수 있듯이 특정 수준의 기능이 이미 DSA 및 RSA CryptoServiceProvider 클래스에 캡슐화되어 있습니다. DSA 알고리즘으로 생성 된 결과를 일치시켜 보낸 사람을 인증 할 수 있으므로 매번 Alice를 보낸 사람으로 확인하기 위해 구현하는 방법이 무엇인지 파악해야합니다. 본질적으로 DSA가 Bob과 Alice 사이에 일정 수준의 기밀을 부여한 경우 특정 서명과 해시가 일치해야합니다.
공개 키의 모든 바이트를 확인해야합니까? 당신이 볼 수있는 열쇠의 특정 부분이 당신 사이의 실제인지 확인합니까? 지문이 일치 할만큼 충분한가요? – tbarbe
아니요, 공개 키를 사용하여 메시지의 해시 (서명)를 해독 한 다음 메시지를 직접 수신자로 해시합니다. 해시가 일치하면 Alice가 보낸 해시를 알 수 있습니다. http://en.wikipedia.org/wiki/Digital_signature – Nathan
아, 예 ... md5 또는 SHA-1 - 예? 그래서 일단 인증서가 목적지에 도착하면 - 그 모든 것을 확인하는 방법은 md5와 SHA-1을 비교하는 것입니다 .... 제가 가지고있는 인증서는 -이 두 가지를 모두 보여줍니다 ...그리고 나는 이것이 '밴드 밖에서 그들을 비교하는 것'에 대해 읽고있는 것을 짐작할 수 있습니다 - 의미는 불안정한 환경에서 그것을하지 않습니까? – tbarbe