ps on Nostr: 最近摸鱼时间去了解下了和聊天加密相关的协议。 ...
最近摸鱼时间去了解下了和聊天加密相关的协议。
能用的nostr网友应该知道端对端加密(e2ee),也就是只有聊天双方才能解密消息内容,应用服务器管理员也解密不了。能够做到端对端加密的聊天app已经做的不错了,尤其是和国内的聊天app比起来。但是端对端加密也并不是安全性的全部内容。
主要经历了上世纪九十年的PGP (Pretty Good Privacy)协议,本世纪初的OTR (off the record)协议,到201x年的Signal协议。
PGP协议主要用在邮件加密上,但是并没有被大规模使用起来,主要被一群技术极客使用。PGP通过公钥加密,实现了消息的保密性和Authentication(可认证性?,也就是你可以判断对方是你要聊天的人)。PGP也实现了端对端加密,但是它的问题也很明显,当一切没有问题的时候,PGP很不错,一旦出现问题,比如私钥泄漏,过往的历史消息都会被解密出来(也就是没有前向保密),而且这些消息都有数字签名(也就是没有可否认性)。在PGP协议中,身份key和加密key是合二为一的,它既作为身份,有用它来加密消息。它作为身份key就决定了它是一个长期key,一旦时间拉长,私钥被暴露的概率就加大。
后面的OTR协议实现了前向保密,解决了PGP历史消息一直处于危险之中的问题。它的做法很简单,把身份key和加密key做分离,为每一段对话单独生成加密key,而且用完就删掉。
OTR协议也实现了可否认性。比如A使用PGP协议发消息告诉B他做过一些“不合法”事情,如果后面他的私钥泄漏,或者B去举报A,就会出现大麻烦。因为消息有A的数字签名。OTR通过一些密码学设计很不错地解决了这个问题。具有可否认性是OTR协议最大的特色。
一些XMPP的客户端实现了PGP和OTR协议。
Published at
2023-05-17 15:10:39Event JSON
{
"id": "ab0d509226c07d0511b27bd784bf9b5a50a51f917060e0d3020c31b7826d6342",
"pubkey": "7cf68b47a2b243d06322bfdb6a1c2422fb8b3a18d18a5c90c27b59e8f612553e",
"created_at": 1684336239,
"kind": 1,
"tags": [],
"content": "最近摸鱼时间去了解下了和聊天加密相关的协议。\n\n能用的nostr网友应该知道端对端加密(e2ee),也就是只有聊天双方才能解密消息内容,应用服务器管理员也解密不了。能够做到端对端加密的聊天app已经做的不错了,尤其是和国内的聊天app比起来。但是端对端加密也并不是安全性的全部内容。\n\n主要经历了上世纪九十年的PGP (Pretty Good Privacy)协议,本世纪初的OTR (off the record)协议,到201x年的Signal协议。\n\nPGP协议主要用在邮件加密上,但是并没有被大规模使用起来,主要被一群技术极客使用。PGP通过公钥加密,实现了消息的保密性和Authentication(可认证性?,也就是你可以判断对方是你要聊天的人)。PGP也实现了端对端加密,但是它的问题也很明显,当一切没有问题的时候,PGP很不错,一旦出现问题,比如私钥泄漏,过往的历史消息都会被解密出来(也就是没有前向保密),而且这些消息都有数字签名(也就是没有可否认性)。在PGP协议中,身份key和加密key是合二为一的,它既作为身份,有用它来加密消息。它作为身份key就决定了它是一个长期key,一旦时间拉长,私钥被暴露的概率就加大。\n\n后面的OTR协议实现了前向保密,解决了PGP历史消息一直处于危险之中的问题。它的做法很简单,把身份key和加密key做分离,为每一段对话单独生成加密key,而且用完就删掉。\n\nOTR协议也实现了可否认性。比如A使用PGP协议发消息告诉B他做过一些“不合法”事情,如果后面他的私钥泄漏,或者B去举报A,就会出现大麻烦。因为消息有A的数字签名。OTR通过一些密码学设计很不错地解决了这个问题。具有可否认性是OTR协议最大的特色。\n\n一些XMPP的客户端实现了PGP和OTR协议。",
"sig": "9d251a22d8e74e7a2c58e23a18416936268f2bb32923341bee9ee52cce965fd110b7e705afce1d99be4b2c3d8ffe723371d0a3e85c43486288fe93db365074c3"
}