Zzangg  

第21章存储秘密

怎样存储像口令和密钥这样的长期秘密呢?

这个秘密应该保持其私密性
丢失这个秘密的风险应该尽可能小

21.1磁盘

直接办法:把秘密存储在计算机的硬盘上或其他永久存储介质上

问题:需确保设备安全、用户可能会用多台设备、秘密不便携

更好的解决方案:让 Alice把密钥存储在她的PDA或智能手机上

21.2人脑记忆

记住口令?

人脑记忆能力差
不存在简单又安全的口令
攻击者用穷举就能攻破
可能只能用单词记忆长字符

好的口令不可预测

好口令应包含大量熵
用户拒绝使用过长至安全性到128位的口令

密码短语的想法

密码短语相对单纯口令可以更长更好记,如句子中每个单词的首字母
要确保句子唯一性
储存128位熵依然困难

加盐

盐就是一个随机数,与加密的口令存放在一起
最好采用256 位的盐

攻击者同时攻击大量口令时。盐能够防止他利用规模扩大而节约计算量

扩展

对口令进行加密的数次长计算
令p是密码口令,s是盐。使用任意保密性强的散列函数h得到密钥K来实际加密数据。参数r是计算迭代的次数,只要实际情况允许,r值应该尽可能大。

攻击者角度

给定盐s和用K加密的数据,你试图通过尝试不同的口令来找到K。选择一个特定的密码口令p,计算相应的K,用它解密数据,检查解密结果是否有意义并且能通过相关的完整性检查。如果不是,则p必定是假的。为了检查单个的p,必须要做r次不同的散列计算。r越大,攻击者做的工作就越多。

21.3便携式存储

在计算机之外存储

最简单的存储方式:把口令写在一页纸上

问题:每次使用口令时仍然需要通过用户的眼睛、大脑和手指来处理。为了把用户的错误限制在一个合理的界限内、这种技术仅仅适用嫡比较低的口令和密码短语。

便携式存储:一张存储芯片卡、一张磁条卡、一个USB 盘或是任何其他种类的数字存储设备

优势:数字存储系统总是能存储至少256位的密钥,因此我们可以排除低熵的口令

特性:非常像一个密钥,无论谁得到它,都能够拥有访问权,因此需要安全地放置。

21.4安全令牌

更好但也更贵的解决方案:使用安全令牌设备。这是 Alice能够随身携带的一个小型计算机。

形态:从智能卡到iButton、USB 加密狗或PC卡。

主要性质:有一个永久性存储器和一个 CPU。

安全性改进:通过口令或类似的方法来限制访问被存储的秘密、 在物理层面上保护了令牌(偷+破解)

需要注意的问题:用户行为,用户应始终把令牌带在身边,通过用户培训或其他方式养成

21.5安全UI

我们并不信任PC

在令牌中内置安全的UI,可以直接输入令牌而不用信任外部设备,防止PIN被攻破

为了防止PIN被PC泄露,我们最好在令牌中也前任密码学过程

最终会发展成一台全功能计算机,最相近的产品是个人数字助理和智能电话

21.6生物识别技术

结合生物识别技术可以把安全做得漂亮些,但安全性不够

方案:将指纹扫描仪或虹膜扫描仪设备嵌入安全令牌

问题:安全性不高,能够简单低成本地被欺骗

不过可以提高攻击成本,提供一点点的安全性

21.7单点登录

用户都有很多口令,因此产生一个单点登录系统就变得很有吸引力。

用给Alice一个的主口令,来给不同应用中的不同口令加密。

准备工作:所有的应用都必须与单点登录系统对话。大规模的工作带来了挑战

简单方法:用一个小程序把口令都存在一个文本文件中,登录时自动读入

21.8丢失的风险

代价:至少是不得不给每个应用注册一个新密钥,严重的话会永远失去访问重要数据的许可权

经验法则:把功能分开。保持密钥的两个副本∶ 一个容易使用,另一个更可靠。如果容易使用的系统忘记了密钥,可以从可靠存储的系统中恢复它

21.9秘密共享

将个秘密分成几个不同的分块(share),其中若干个组合后可恢复

技巧:任意两个人在一起绝对不会知道关于密钥的任何事情。

问题:应用、管理、操作都很复杂,不适用于现实工作

21.10清除秘密

只要秘密不再被需要,它的存储就应该被清除,以免将来被泄露。
21.10.1纸

烧掉后碾成粉末或混成泥浆
21.10.2磁存储介质

反复重写数据,请注意:

每次重写应该使用新的随机数据
一定要在存储秘密的实际位置重写
保证每次重写是写到磁盘上,而不是写到磁盘缓存中
清除自秘密数据之前开始,且到它之后结束一段区域

消磁机或消除介质理论可靠但不现实
21.10.3固态存储

消除非易失性内存(像 EPROM、EEPROM 和闪存)时对旧数据进行重写不能根本地清除旧数据

最好销毁固态存储

21.11习题

1.1 了解登录口令是如何在你的计算机中存储的。试编写程序,根据给定的被存储的口令(经加密或散列后的),对真实口令进行穷举搜索。穷举头一百万个密钥口令需要多长时间?

答:登录口令被存储在C:\WINNT\system32\config目录下的SAM文件中,而微软的服务登录通过微软账户单点登录,使用Advanced Archive Password Recovery穷举十进制口令,平均需要260ms(i7-8750H,60%性能下)

21.3 给定一个24位的盐。64个用户中。两个用户有相同盐值的概率是多少?1024个用户呢?4096个用户呢? 16 777 216 个用户呢?

答:盐值有224个可能,两人中有相同的可能为224/224*2=1/224,64人中有2人相同的概率是C2 64/224=1/219 ,1024人中有2人相同的概率是C2 1024/224=1/215,16777216人中有2人相同的概率是C2 64/224=1/2

21.4 举出一个维护长期秘密的产品或系统。

答:银行保险箱、

posted on 2023-04-28 14:54  Zzangg  阅读(4)  评论(0编辑  收藏  举报