群聊加密方案


#1

公共聊天室: 本身是具备av地址的 聊天地址背后有聊天机器人, 所有向此地址发送的消息,聊天机器人会查找此频道的所有成员, 进行转发, 并将消息记录下来 生成群聊记录。因此群内成员发送消息的时候,只需要拿到机器人的公钥就可以了。另外, 群聊机器人可以与服务器是独立的。不必是同一台。

JACK: 群聊就是建立一个可信任的机器人, 后通过bot转发, 但若bot干坏事, 把消息泄露了, 这比较难办 即群聊机器人是知道啊聊天内容的, 会存在泄露聊天内容的风险。

Dr:群聊加密无法再客户端做。 可以发明一种算法,任何加到群里的人都能解密, 没加到群里的人无法解密 jack: 和所有人建立一个秘钥 dr: 一对多的非对称加密。。。 jack:你发的消息,我用你的秘钥来解密, 所有人都产生和其他人的秘钥, 这样谁发消息,我都使用对应的秘钥解密 dr : 但这样会不会太复杂 jack: 使用对称加密,不会太复杂 多多: 要做双向认证 jack: 如果用户数为3, 那么每个人手里有两个秘钥, 无论b 或者c发消息, a都可以使用对应的秘钥解密 hyq: 那混进来奸细怎么办 jack: 群聊无法避免奸细,即使是rsa, bot也无法避免, 技术上避免不了 dr: 我觉得发明一种一对多的密室交换算法 hyq: 那就是私钥加密, 公钥解密 ywk: 公钥解密,会被截走的 dr: 生成一个群里头成员都知道, 但不在这个群里的,连机器人都不知道的一种密码。 然后用这个密码进行对称加密。 因为机器人没有密码也无法解密。但整个群里的人都有密码, 可以解密 jack: 我刚才说的dh算法就是这样的 dr: 但如果一个新的成员进来之后, 就必须保证所有的成员都在线, 然后交换秘钥 jack: 新成员就得再和所有旧成员生成一遍秘钥 dr: 其实也不用,只要管理员知道秘钥就可以了, 管理员将加密用的密码发给每个成员就可以了,使用对称加密 但密码由管理员生成, 然后使用非对称加密发给每个成员。 jack 这样最好, 但若管理员不在呢 dr: 管理员不在,新人也无法加入 jack: 这办法可以, 由群管理员陈胜秘钥,通过rsa转发, 所有新成员领取这个秘钥 dr: 群管理员可以决定什么时候换秘钥, 换之后重新下发就可以了 jack: 换秘钥有点麻烦,如果成员不在呢 dr: 离线消息,上线就收到了 jack: 就这种办法吧 dr: dh是在不可信任的通道中交换密码, 现在我们已经有可信任通道了,自然可以下发密码。 而且管理员不给bot发。 bot记录加密后的聊天记录, 而记录只有群里的人可以打开。 jack: 这里还有个问题是, 更新秘钥之后,原来的聊天记录还得用就秘钥解密 dr:管理员保留历史秘钥 jack: 秘钥弄成git, 使用git管理起来 dr: 获取历史上的秘钥和git差不多, 因为你要先用当前的秘钥解密历史记录, 就能获取上一个秘钥 然后用上一个秘钥解密更早的记录 jack: 保存在历史记录里,秘钥也被新秘钥加密了

下面是吹捧git牛逼闪闪光芒的讨论了


#2

相关协议及加解密部分详述, 参考 https://www.avboost.com/t/av/584