#boot #access-control #cold #control-system #crypto

hotboot

使用弱密钥保护私有数据,利用系统访问控制和针对冷启动攻击特别设计的防御措施

2个版本

使用旧的Rust 2015

0.1.1 2020年4月11日
0.1.0 2017年3月5日

#622 in 加密学

MIT/Apache

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