如何使用python建立安全的endtoend连接

2024-05-23 16:01:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我想建立一个安全的国家安全局证明两个同行之间的联系,完全向前保密和其他任何人会期待。在

在python中实现这一点的最佳方法是什么,这样它的标准就可以与用另一种语言重新实现的对等方轻松地进行通信。在

可以假设对等方事先知道彼此的ip/端口,也知道彼此的secp256k1 ECDSA公钥,一旦建立连接就可以用来进行身份验证。在

为了清楚起见,我需要双方的联系。等待连接的对等方和发起连接的对等方的代码。在


Tags: 方法端口代码ip证明身份验证语言标准
1条回答
网友
1楼 · 发布于 2024-05-23 16:01:05

我会在技术上尽可能正确地回答这个问题,但我对所有加密字母组合的术语和记忆都很模糊,即使我研究了多年(缺乏长期记忆导致了这种情况)。在

首先,这是一个多部分的问题,并不是Python特有的问题。因此,我在上面发表了评论。在

你有数据链,最好的沟通方式是什么?在

插座是最基本的方法。
现在有了websockets、sockets和各种高级通信工具,但它们都依赖于一个基本的socket(很可能是通过IP+TCP包)。在

所以我建议你坚持使用套接字,除非你知道你正在交谈的同龄人使用某种特定的东西,然后坚持下去。在

如何保护数据链路

在大多数情况下,您希望在不降低安全性的情况下尽可能保留传统。这可能意味着你必须坚持。。不是。。我重复一遍,不要使用SSLv*。除非你知道你为什么要这样做,否则不要

Python(和其他语言)对此有很好的包装器。
其中一个例子是:

import socket, ssl

context = ssl.SSLContext(ssl.PROTOCOL_TLSv1)
context.verify_mode = ssl.CERT_REQUIRED
context.check_hostname = True
context.load_default_certs()

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
ssl_sock = context.wrap_socket(s, server_hostname='www.verisign.com')
ssl_sock.connect(('www.verisign.com', 443))

这会在您和启用HTTPS的web服务器之间的TLSv1外壳中包装普通的无保护套接字。这是保护数据层的最常见和最安全的方法之一。在

微调安全数据链路

在Python中,向套接字添加附加安全性的方法是将特定的cipher组合传递给包装器。是这样的:

^{pr2}$

例如,... ciphers=TLS_RSA_WITH_AES_256_CBC_SHA|TLS_RSA_WITH_AES_128_CBC_SHA)如果您只想在通信中允许RSA AES 256和{}。所有其他密码都将被丢弃,连接将断开。在

当定义密码时,你会立即缩小交流的范围。
许多软件仍然使用旧密码,有些软件已经过时,甚至还没有更新到TLSv1,甚至没有意识到某些密码的存在。在

结论:这一切都归结为你想与什么交流,他们使用什么软件。在

关于国家安全局

老实说,没有真正的方法知道它们能破译或破译什么。
如果你想百分之百安全,要么你是个数学天才,然后你发明了你自己的算法/密码,你确信他们不知道。。但是。。你不断地改变它以保持领先一步。在

最安全的算法是br/> 如果我是你的话,我会用google搜索one time pad,并尝试按照这些思路实现一些东西。这是你最好的选择,远离渗透者使用的标准过滤技术(NSA算一个)。在

相关问题 更多 >