디지털 서명으로 부인 방지 및 무결성을 달성하는 방법을 이해합니다. 그러나 아직 이해하지 못하는 인증입니다.디지털 서명을 사용하여 서버 인증
저는 C#으로 클라이언트 인증서를 개발 중이며 디지털 인증서와 디지털 서명을 사용하여 인증 할 수 있어야합니다. SignedCms.CheckSignature()를 사용하여 Signature의 유효성과 무결성을 검사하는 방법을 알고 있지만, 관련 부분을 어떻게 인증합니까? 예를 들어
:
- 클라이언트는 디지털 서명을위한 서버를 요청,
- 클라이언트가 서명을 받아 그 유효성을 검사,
- 검증에 성공하면 계속합니다.
클라이언트는 man-in-the middle 공격의 희생양이 될 수 있으며 2 단계에서 유효한 서명을 수신 할 수 있습니다. 유효성 검사는 성공하지만 클라이언트는 올바른 서버와 통신하지 않습니다.
무엇이 누락 되었습니까?
중간에있는 사람이 서버에서 오는 서명을 차단하고 신뢰할 수있는 CA에서 발급 한 완전히 유효한 인증서로 모든 새로운 디지털 서명을 클라이언트에 보내면 어떻게 될까요? –
그게 더 재미 있어요. SSL에서 인증서 이름을 확인하여 연결하려는 주소를 처리하는지 확인해야합니다.SSL CA를 사용하면 해당 FQDN을 소유 한 사람에게 인증서가 발급되었는지 확인할 수 있습니다. 그리고 잘못되었을 경우를 대비하여 게시 된 해지 목록이 있습니다. 다른 시나리오에서는 컴퓨터 이름, 아마도 인증서 지문이 변경되거나 인증서가 다른 CA에서 발급 한 경우와 다를 수있는 전체 체인의 유효성을 검사 할 수 있습니다. 내가 간단히 말해 줬다. :) – blowdart
잘 이해했다면 비 SSL 환경과 관련된 측면은 클라이언트가 이미 서버 (지문, 예를 들어 지문)에 대한 올바른 정보를 가지고 있음을 의미한다. 정확한 지문이 저장됩니다.) 클라이언트가 서버에 처음 연결했을 때 비교할만한 신뢰할 수있는 정보가 없다면 어떻게됩니까? –