我正在寻找简单的方法来保护我在线帐户的许多密码。经过一番思考后,我提出了这个想法:
我想知道这个系统中是否有任何漏洞。主密钥长度至少是最长随机密码的长度,因此在单个密码中不会重复密钥,但每个加密密码的密钥都是相同的。从本质上讲,这是一种反向的Vernam Cipher;关键不是随机的,而是"明文" (密码)是。攻击者如何利用这个系统?有可能打破吗?
答案 0 :(得分:3)
这称为OTP方案,其中密钥被重用。这些方案很容易被破解:XOR两个加密密码相互之间,你得到P1 ^ P2。现在,如果P1或P2的字符相同,则输出为0。如果它们几乎相同,则会得到只有一个位设置的东西(等等)。一旦猜到一个密码,就可以使用加密密码对其进行异或,以获取密钥。唯一安全的位是最长密码末尾的字符(如果不重复密钥)。
这个密码分析是大多数教科书中新密码学家的第一次练习。这完全不安全。
答案 1 :(得分:1)
这是边缘无用的。攻击者必须做的就是获取您的一个密码,并且他拥有您的所有密码。因此,您可以像使用此方案的最不安全的系统一样安全。从没有SSL的公共WiFi网络登录,您已完成 。
答案 2 :(得分:1)
不要发明自己的加密功能......密码存储问题并不新鲜。
XOR加密非常容易破解,请查看SANS blog
这是一个更好的选择:
保护密码的最着名方法是使用salted密码哈希。我建议您使用SHA256函数,这是在大多数现代编程语言中实现的。
散列算法是单向函数。这意味着您无法解密存储的密码。
基于散列的系统中帐户注册和身份验证的一般工作流程如下:
现在我们唯一需要做的就是定义Salt:
salt可以与哈希一起存储在用户帐户表中。