群里有人推了个项目TgWechat,微信端对端加密插件,还特意 @了我表示感谢,受宠若惊。
隐私问题其实说了很久,有人说微信其实一直看着我们聊天,具体是怎么样的,咱也不知道,咱也不敢问吖...
谁没个秘密呢,或者和朋友开个玩笑,或者和伴侣聊点"家常",如果这些内容暴露在别人眼中,确实有点尴尬,但毕竟咱也没乱说啥吖...
不过加密聊天也可有能会给某些人提供某些庇护,导致出现一些安全问题,这也是一个大问题...
所以你让我说微信到底要不要、能不能看我们聊天内容,我确实也说不好...
所以这里不讨论这种问题,我只聊技术。
端对端加密( end-to-end encryption ),按我的简单理解就是 A 和 B 聊天,A 说出去的话加密后,只有 B 能够解开密文,拿到明文,这个过程中网络传输过程全是加密的。
2017 年 8 月,WhatsApp 宣布对所有通讯信息进行端到端加密,WhatsApp 超过 10 亿用户的所有信息(包括文字、照片、视频、文件和语音信息)在默认下都会进行端到端加密,包括群聊。
“我们的想法很简单:当你发送一条消息,只有接收你消息的人或群组可以读取,”WhatsApp 创始人 Jan Koum 和 Brian Acton 表示,“没有人可以看到这些消息,网络罪犯、黑客、政府人员甚至我们都不能看到这些消息。端到端加密可确保 WhatsApp 通讯的隐私性,这有点像面对面的谈话。”
看了这个新闻,知道我没理解错。
其实我很早就写了个小工具,就实现了端对端加密,而且还是对聊天工具透明的,也就是说任何工具都能用。
哈哈,有点吹了...
小工具叫做Chisechat,slogn 是“独属于你和我的心灵密令”,本来是我自用的小玩意,后来改了几版之后才分享出来的。
功能很简单,A 和 B 都用 Chisechat 设置一个一样的密码(私下协商,打电话或者当面定好),A 把要发的内容放到 Chisechat 加密,再用聊天工具把加密内容发给 B,B 拿到密文在 Chisechat 中解密查看。
看起来操作是不是挺麻烦,其实还好,因为我针对操作做了优化,基本不影响聊天体验,具体不说了,感兴趣的自行下载试用,地址:https://anhkgg.com/Chisechat/。
唯一让我拿出来分享的原因是,我觉得自己做的挺好玩,让我啰嗦说道一下。
Chisechat 刚开始加密就是简单的 xx 算法+base64,然后 base64 的内容特征太明显,也不好看,我就开始想怎么弄得更自然一点,后来增加了两种模式。
具体如何你们自行鉴赏一下:
OK,扯得有点多了,我的 Chisechat 其实一种粗糙且粗暴的一种解决方案,但够用了。
那 WhatsApp 是如何做的呢?不知道。
但是搜索的时候,看到了这个必须拥有姓名的软件 Telegram,也就是 TgWechat 参考的。
Telegram 中文名好像叫做“电报”,很安全的感觉。Telegram 号称"这个世界上没人能监控我"。
Telegram 为一对一的聊天提供端对端加密,加密模式是基于 256 位对称 AES 加密,RSA 2048 的加密和 Diffie-Hellman 的安全密钥交换协议。协议极其优秀,兼具数学和工程之美,不仅加密基础非常完善,在工程上也很出色,Telegram 传递的消息为函数,可扩展性相当强。
Telegram 用的是 RSA-dh+AES 来完成的端对端加密。
按我一个密码学渣的粗浅理解就是:
具体算法大家自行查看其他更详细的分享,比如对抗中间人攻击( RSA 签名),爆破( p、q 很大)。
看一下这个实例更好理解:
//https://blog.csdn.net/andylau00j/article/details/82178351
1.爱丽丝与鲍伯协定使用 p=23 以及 g=5.
2.爱丽丝选择一个秘密整数 a=6, 计算 A = g^a mod p 并发送给鲍伯。
A = 5^6 mod 23 = 8.
3.鲍伯选择一个秘密整数 b=15, 计算 B = g^b mod p 并发送给爱丽丝。
B = 5^15 mod 23 = 19.
4.爱丽丝计算 s = B a mod p
19^6 mod 23 = 2.
5.鲍伯计算 s = A b mod p
8^15 mod 23 = 2.
总的来说,Telegram 通过很牛逼的密钥交换算法让两方拥有了一样的密码,然后别人不知道,也找不到,这样子聊天内容一加密,就只有对方能够看到,如此完成了一个端对端加密的安全聊天通道。
再扯一句,Telegram 是通过协议和算法来完成协商密钥,而我的 Chisechat 是人工通过其他通道协商的密钥,殊途同归,嘎嘎。
理论搞明白了,现在想想 TgWechat 是怎么做的呢(这玩意加的 vm 太多了...别想逆了)?
其实也有两种方式,一种类似于 Chisechat 的思路,自行设置密码,然后加密聊天,一种就是像 Telegram 一样通过协议和算法完成。
这前面密码的事都没啥好说的,关键在 Wechat 不是你自己的软件,要怎么插入一些自己的东西进去。
这里我也只是给出思路,猜测 TgWechat 是这么做的。
OK,基本就是这样了。
点击原文体验 Chisechat: https://anhkgg.com/Chisechat/
参考:
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.