현재 웹 API를 만들고 있습니다. 나는 클라이언트에서 서버로 보낸 메시지가 충분히 보안이되어 있는지 확인해야한다 (공격자가 읽을 수 있고 클라이언트를 식별 할 수 없다).내 메시지 암호화 설계가 안전합니까?
여기에 예비 설계가 있습니다. 충분히 안전합니까?
나는 PKI를 사용하기로 결정했습니다. 즉, 서버와 클라이언트 모두 RSA 공개 키와 개인 키가 있습니다. 서버에는 클라이언트 ID와 공개 키를 저장하는 데이터베이스도 있습니다.
클라이언트와 서버는 통신하기 전에 diffie-hellman 키 교환을 사용하여 세션 키를 설정합니다. diffle-hellman에서 사용되는 "비밀"은 개인 키입니다. 보낸 메시지는 보낸 사람의 개인 키로 암호화됩니다. 따라서 수신자는 발신자의 공개 키를 사용하여 발신자를 식별 할 수 있으며 중간자 (man-in-the-middle) 공격은 차단됩니다. 그런 다음 세션 키 K가 설정됩니다.
다음 클라이언트가 서버로 메시지를 보내 클라이언트 보내기 : 클라이언트 ID, E H()는 SHA256의 해시 함수 (K, 메시지), H (K, E (메시지) 된 ClientID) 한다.서버가 메시지를 수신하면 H (K, E (메시지), ClientID)를 계산하고 수신 된 HMAC와 비교합니다. 동일하면 메시지를 보호해야합니다.
내 디자인이 재생 공격을 막지 못한다는 것을 알고 있습니다. 그러나 나는이 단계에서 그것을 고려하지 않을 것이다. 내 디자인이 충분히 안전합니까? 모든 의견은 크게 감사하겠습니다. 많은 감사합니다!
왜 여기 바퀴를 재발 명하고 있습니까?여기 SSL/TLS와 같은 표준 메커니즘이 충분하지 않습니까? –
난 그냥 일을하고 내부의 것들을 배우려고. – KenLai
http://crypto.stackexchange.com –