前向安全性,也称为完美前向保密( Perfect Forward Secrecy, PFS ),是指即使长期密钥在未来被破解或泄露,也不会危及过去的通信内容,从而保护过去的通信内容不被破解。 具体来说,如果一个密码系统具有前向安全性,那么在某个时刻之后泄露的密钥将无法解密在此之前加密的数据
做了一款辅助加密聊天 app(能在 QQ 微信等 app 中发送加密信息),想做到消息在一定时间后无法解密
刚开始是搞了个时间锁的功能,就是在当前密钥的后方加上日期作为密钥进行加密
然后解密的时候使用相同操作即可,但是这样直接把设备的日期改了就可以解密之前的内容了
然后想出了轮换密钥功能
https://gitlab.com/ivgeek/MixMessage/-/wikis/%E8%BD%AE%E6%8D%A2%E5%AF%86%E9%92%A5原理就是利用哈希算法使用当前的密钥计算出下一轮使用的密钥,然后销毁上一轮密钥
这样即使修改日期,由于哈希算法的不可逆性,也无法逆向推断出之前的密钥
可自定义轮换的时间(小时),例如 1 小时轮换一次,2 小时后,发送的信息就永远无法解密了
功能已经全部实现,顺便还会缓存一轮密钥和推断下一次密钥来进行解密(防止存在时间差导致信息无法解密)
只要 2 台设备的时间差不小于轮换一轮的时间,不需要网络就可进行动态的轮换密钥同步
而且轮换密钥不需要一直运行 app,例如 1 小时轮换一次,10 天再之后再开机 app 也会自动计算轮换差值立马将密钥轮换到当前日期的正确值
不过目前的缺点就是没有办法在不需要通信的情况下实现向后安全性(当前密钥泄漏,以后的信息就都能解密了)
感觉也不可能实现
项目地址:
https://gitlab.com/ivgeek/MixMessage
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://www.v2ex.com/t/1065872
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.