2个版本
使用旧的Rust 2015
0.1.1 | 2020年4月11日 |
---|---|
0.1.0 | 2017年3月5日 |
#622 in 加密学
14KB
104 行
hotboot
hotboot
允许使用弱密钥保护私有数据,利用系统访问控制和针对冷启动攻击特别设计的防御措施。
使用方法
let data: Vec<u8> = very_private_data();
let secret: Vec<u8> = get_secret_from_user();
let hidden = hotboot::hide(data, secret, 100000);
// `data` and `secret` no longer exist in memory
// A cold boot attack is highly unlikely to succeed in retrieving `data`, even
// if `secret` is known
let secret: Vec<u8> = get_secret_from_user();
let recovered = hotboot::recover(hidden, secret);
// `recovered` is the same as `data` was
威胁模型
威胁模型是针对使用冷启动攻击攻击具有弱密钥保护的物理攻击者。
为此而特别设计的特殊用例是屏幕锁定器:屏幕解锁密码可能不够强大,但存在时间延迟,使得暴力破解不切实际。使用hotboot保护内存中的安全数据和解锁密码,也可以防止冷启动攻击。
设计
在冷启动攻击期间,一些位被损坏。hotboot的目标是最大限度地减少必须损坏的位比率,以使其无法恢复私有数据。
为此,它使用随机密钥加密数据,然后使用另一个随机密钥加密随机密钥,迭代多次,然后使用从密码派生的密钥加密最后一个随机密钥。
如果链中的任何位被损坏,将在末尾找到垃圾数据,而无法确定是哪个位导致了问题。
所选的加密原语是用于加密的AES256-CTR(使用随机的128位IV和随机的256位密钥,总共384位不需要损坏才能解密一步),以及PBKDF2-SHA256和10000次迭代的初始密钥派生。
故障排除
无论是支持请求、错误、文档不足还是任何其他不符合预期的情况,请将其报告为 GitHub问题。
历史
- 2020-04-12: 发布0.1.1版本,使用更新的openssl
- 2017-03-05: 发布0.1.0版本
- 2017-03-04: 项目启动
许可证
hotboot
根据GPLv3许可,请参阅名为 LICENSE.md
的文件。
依赖项
~1.8–2.6MB
~59K SLoC