Cryptography

廉价GPU时代的密码策略

(最后修改: Security #password #GPU cracking #Cryptography

很久以前我曾经建议过别人使用足够长的一大串英文单词作为密码,现时这样做已经完全不能保障安全了。

Colin Percival最近在 一篇文章 中提到了这样的数据:使用价值 $10k 的 GPU 破解使用MD5的34位英文密码(例如"You will never guess this password")所需要的时间仅为两小时(如果使用专用的硬件,以$1M投资的ASIC可以在一秒之内完成破解)。如果密码长度不够长的话,采用了特殊符号的帮助也不大。足够复杂的8位密码,例如"6,uh3y[a"使用 $10k 的 GPU 破解只需10个小时。

阅读全文… ( 本文约 457 字,阅读大致需要 1 分钟 )

tarsnap修正了一个重大安全漏洞

(最后修改: Security #Tarsnap #Vulnerability #Cryptography #Backup

今天 Colin 在blog上介绍说 他刚刚修正了一个 TarSnap 重大安全漏洞。简单地说,用来加密密钥文件的AES-CTR实现时,计数器没有增加(正确的实现中计数器应该每次递增),导致在已知明文时能够通过加密块推算出一块数据使用的密钥,并用它来解密余下的数据。

阅读全文… ( 本文约 272 字,阅读大致需要 1 分钟 )

为什么要用公钥/私钥而不是密码去做SSH身份验证

(最后修改: Security #SSH #public key authentication #Cryptography

SSH提供了很多种不同的身份验证,其中最常用的两种便是密码验证和基于公钥/私钥的身份验证。

基于公钥/私钥的身份验证有非常多的优点。

首先,公钥/私钥可以从根本上挫败监听来截取验证信息的企图。

阅读全文… ( 本文约 705 字,阅读大致需要 2 分钟 )

用户口令的验证问题

(最后修改: Security #password #hashing #salting #Cryptography

📜 历史文件已不具备现实意义

本文中的原则尽管依然成立,但采用的具体算法可坑已经过时或即将过时。

口令是许多系统中用于判断用户身份的重要手段。当然,使用口令作为身份验证方法是很不靠谱的(例如,许多用户会使用弱口令,或者在多个系统中使用同样的口令,以及它存在对称失密问题,等等),不过因为口令便于携带(相对于私钥)和实现,因此仍然被广泛使用。

验证用户口令有很多种不同的方法。最原始的方法,就是将用户输入的口令与我们保存的口令相比较,如果相同,就认为是验证通过。但是这样一来,我们就必须保存用户的口令,而保存用户的口令会导致很多问题,例如,假如系统用于保存口令的数据库被攻陷,直接泄露用户的明文口令肯定不是一件好事。

于是,我们可以对前面的方法进行改进,即,只保存用户口令的散列(hash)字符串,而不是口令的明文。散列算法是一种单向的计算,即散列函数 H 对明文信息 p 计算出的结果 h:

H(p)=hH(p) = h
阅读全文… ( 本文约 1782 字,阅读大致需要 4 分钟 )

关于密码验证的一些问题

(最后修改: Security #Cryptography

前几天 hzqbbc 兄 [blog]在blog上留言中提及此事,正好就这个话题说两句。

通常我们在设计安全系统的时候,会希望在满足功能的前提下为每个用户授予最少的权限。对一个数据元而言,假如我们限定允许的权限包含:写、读(获取其内容)、验证(判断给定值是否有很大概率与其相等)、判断其是否存在、完全没有这5类时,通常我们会发现,比较靠前的权限会包含(或暗含)靠后的权限,或者说,靠前的授权要比靠后的授权来的大。(注意,此处我们并不考虑拥有写权限,而没有读权限这种情形,这种授权通常见于文件系统)。

阅读全文… ( 本文约 1067 字,阅读大致需要 3 分钟 )