我正在设计一个Point2Point加密系统。我查过WhatsApp的协议了。但是我们的设备是Raspberry Pi,所以WhatsApp的协议太重了。我们想要使用PSK (预共享密钥)方法。我检查了TLS,它提供了许多密件,也提供PSK一个。
但是在编程中,我需要同时将每个设备配置为服务器和客户端*(因为我不知道哪个设备将调用通信)。这是一个可能的方法吗?
或者我需要用更低层次的方式来做?比如首先,交换公钥,然后生成共享的secrect,然后生成共享密钥等等.
发布于 2017-07-24 22:04:02
TLS只是两个通信对等点之间的一个受保护的通道,通常位于TCP之上。如果这样的对等点同时是客户端、服务器甚至两者(但不是同一个对等点),这并不重要。在建立TCP连接方向的TLS握手中,角色也不重要。
例如,在FTPS中,数据传输的TCP连接可以从客户端创建到FTP服务器(被动模式)或FTP服务器到客户端(活动模式),而TCP连接上的TLS握手总是由客户端发起的,因此服务器证书可以用于身份验证,以防止中间人参与。也就是说,有时它与TCP连接(被动)方向相同,有时不(主动模式)。
另一个例子是SIPS (VoIP),其中SIP设备既是客户端(用于发起呼叫),也是服务器(用于接收呼叫)。在SIPS情况下,TCP连接方向与TLS握手匹配。身份验证通常同时针对客户端和服务器(即相互的)进行,其中每个服务器都提供与设备匹配的证书。如果角色切换,将使用相同的证书:如果A调用B,则B的证书用作服务器证书,A的证书用作客户端证书。如果B调用A,则A的证书用作服务器证书,B的证书用作客户端证书。而且,在SIP代理的情况下,同一个系统甚至可以同时向某些服务器端和向某些客户端同时发送SIP服务器。
因此,将P2P体系结构与TLS结合使用(如SIPS )是没有问题的。而且,只要每个节点具有清晰的地址或其他标识符,可以用作证书的主体,然后在证书验证期间检查,则也可以在这样的设置中使用证书。这样,与PSK或SRP相比,PKI可以用于更可扩展的信任模型。
https://security.stackexchange.com/questions/165949
复制相似问题