0

Python で認証サーバーを構築していますが、どうすれば 2 つのピア間の接続を完全に保護できるのか疑問に思っていました。悪意のあるユーザーがパケットをコピーして、何がどの順序で来るかを理解していれば、単にそれらを分析できないとは思えません。

クライアント サーバー スキーマの承認。クライアントがアカウントを要求します。SRP であっても、パケットをコピーして後で送信し、ログインを許可できます。

次に、公開鍵と秘密鍵の暗号化を追加すると、暗号化されていないチャネルで公開鍵を渡すことなく、公開鍵を相互に送信するにはどうすればよいですか?

私の質問が初心者のままであるか、質問を気にしていないように見える場合は申し訳ありませんが、いくつかのセキュリティホールなしで認証プロセスを構築する方法を理解するのに本当に苦労しています.

4

2 に答える 2

3

ある種のTransport Layer Securityを使用できます。これは、任意のネットワーク ソケットの単純な TLS/SSL ラッピングです。

すべてのドキュメントはこちら.

ここに示されている単純なクライアント側の SSL 暗号化:

import socket, ssl, pprint

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# require a certificate from the server
ssl_sock = ssl.wrap_socket(s,
                           ca_certs="/etc/ca_certs_file",
                           cert_reqs=ssl.CERT_REQUIRED)

ssl_sock.connect(('www.verisign.com', 443))

print repr(ssl_sock.getpeername())
print ssl_sock.cipher()
print pprint.pformat(ssl_sock.getpeercert())

# Set a simple HTTP request -- use httplib in actual code.
ssl_sock.write("""GET / HTTP/1.0\r
Host: www.verisign.com\r\n\r\n""")

# Read a chunk of data.  Will not necessarily
# read all the data returned by the server.
data = ssl_sock.read()

# note that closing the SSLSocket will also close the underlying socket
ssl_sock.close()

その他の例はこちら。

また、暗号化の安全性を回避するために、最新バージョンのアルゴリズムを使用してください。

次の質問を確認してください。

于 2013-08-05T19:19:08.663 に答える