1

クライアントはサーバーによって認証される必要があるため、資格情報を送信する必要があります。資格情報は、暗号化された形式でクライアント データベースに格納できます。サーバーの証明書は既知であるため、最高のセキュリティを提供するために、クライアントはサーバーの公開鍵を使用してパスワードを暗号化できます。しかし、問題は、二重暗号化なしでパスワードを送信する方法です。

たとえば、サーバーの認証 URL が「https://example.com/a?u=user&p=password」の場合、クライアントはこの文字列の SSL 暗号化データをサーバーに送信する必要があります。クライアントは暗号化されたパスワードのみを保存するためssl_encrypt("https://example.com/a?u=user&p=")+pre_encrypted_password、全体をサーバーに送信する方法を見つける必要があります。

クライアントは WinHTTP API を使用していますが、これを実現する方法はありますか?

4

2 に答える 2

4

いいえ。SSL はそのようには機能しません。SSL 接続を介して送信されるデータは、最初の SSL ハンドシェイク時に確立されたキーを使用して、対称暗号化アルゴリズム (通常は AES、RC4、または類似のもの) を使用して暗号化されます。サーバーの公開/秘密鍵は、最初のハンドシェイク中にのみ使用されます。その後、それらは使用されません。

とにかく、この方法でパスワードを保存しても、安全性が向上するわけではありません。サーバーに送信できる暗号化された形式で保存されている場合、それを取得できた人は誰でもそのように使用できます。その暗号化された形式はパスワードと同等であるため、パスワードを保存するだけに勝るものはありません!

于 2013-05-28T23:42:36.587 に答える