키 교환에 관한 작은 보고서를 작성하고 있으며이 시나리오가 안전한지 묻고 싶습니다.C# AES 키 교환 시나리오 : 안전할까요?
먼저, 간단한 서버 클라이언트 기반 채팅 소스를 만듭니다.
두 개의 필드 (송신자 ID, 메시지)로 구성된 클래스를 서버로 보내면 AES로 암호화됩니다. 서버는 다른 클라이언트에 메시지를 알립니다.
각 클라이언트는 Diffie-Hellman 키 교환을 사용하여 서버와 키를 공유합니다.
모든 단일 클라이언트가 다른 클라이언트에 비해 다른 키가되고, 키 값은
각 클라이언트에 저장되며, 서버 (서버는 모든 클라이언트에 대한 모든 키를 유지합니다.)
내가 물어보고 싶은 첫 번째 일은 이것이 가능한가?
둘째로, 안전할까요?
셋째, 더 똑똑한 방법으로 비슷한 효과를 낼 것입니까?
인증 기관에서 키를 가져 오는 것 외에는 중간 공격자를 피할 수있는 다른 방법이 있습니까? – March3
공개 CA가 필요하지 않은 클라이언트와 서버를 모두 제어 할 수 있습니다. 자신의 개인 CA가되어 서버에 대한 인증서를 서명하고 CA에 대한 공개 인증서를 클라이언트에 제공하면 클라이언트는 서버가 자신에게 전송 한 인증서가 서버가 " 진짜 "서버가 아닌 다른 사람이 서버를 사칭하는 것은 아닙니다. CA를 안전하게 유지하고 배포하는 모든 서버에 새 인증서를 사용한다고 가정하면 서버 소프트웨어 복사본을 디 컴파일 할 수 있으며 가짜 서버에서 실제 서버). –