Security 此XOR加密系统在哪些方面易受攻击?

Security 此XOR加密系统在哪些方面易受攻击?,security,encryption,xor,password-encryption,Security,Encryption,Xor,Password Encryption,我正在寻找简单的方法来保护我的在线帐户的许多密码。经过一番思考,我想出了这个主意: 将我的所有当前密码更改为ASCII字符的随机流 使用存储的主密钥,使用简单的XOR(password^ key)加密每个密码 将加密结果存储在某个地方(攻击者可能可以访问) 当我想要检索密码时,用我的主密钥重复XOR操作 我想知道这个系统是否有漏洞。主密钥长度至少为最长随机密码的长度,因此在单个密码中不会重复密钥,但每个加密密码的密钥相同。本质上,这是一种反向Vernam密码;密钥不是随机的,但“明文”(密码)是

我正在寻找简单的方法来保护我的在线帐户的许多密码。经过一番思考,我想出了这个主意:

  • 将我的所有当前密码更改为ASCII字符的随机流
  • 使用存储的主密钥,使用简单的XOR(password^ key)加密每个密码
  • 将加密结果存储在某个地方(攻击者可能可以访问)
  • 当我想要检索密码时,用我的主密钥重复XOR操作

  • 我想知道这个系统是否有漏洞。主密钥长度至少为最长随机密码的长度,因此在单个密码中不会重复密钥,但每个加密密码的密钥相同。本质上,这是一种反向Vernam密码;密钥不是随机的,但“明文”(密码)是随机的。攻击者如何利用此系统进行攻击?有可能打破吗?

    这几乎是无用的。攻击者所要做的就是获取您的一个密码,并且他拥有您的所有密码。因此,您与使用此方案的最不安全系统一样安全。只需从没有SSL的公共WiFi网络登录一次,您就完成了。

    这几乎是无用的。攻击者所要做的就是获取您的一个密码,并且他拥有您的所有密码。因此,您与使用此方案的最不安全系统一样安全。从没有SSL的公共WiFi网络登录一次,您就完成了。

    不要发明您自己的加密功能……密码存储问题并不新鲜

    XOR加密很容易被破坏,请检查此项

    这里有一个更好的选择:

    保护密码最著名的方法是使用盐渍密码哈希。我建议您使用SHA256函数,这是在大多数现代编程语言中实现的

    哈希算法是单向函数。这意味着您无法解密存储的密码

    在基于哈希的系统中,帐户注册和身份验证的一般工作流程如下:

  • 用户创建一个帐户
  • 将密码+salt散列并将结果存储在数据库中
  • 在nextLogin尝试时,将输入的密码+salt散列,并将其与数据库中的值进行比较
  • 现在我们唯一需要做的就是定义盐:

  • 盐不一定是秘密!它只是为了防止彩虹攻击
  • salt需要每个用户每个密码都是唯一的。一个足够长的随机生成的字符串将完成这项工作
  • 每次用户创建帐户或更改密码时,都应该使用新的随机salt对密码进行哈希处理
    salt可以与散列一起存储在用户帐户表中。

    不要发明自己的加密函数……密码存储问题不是新问题

    XOR加密很容易被破坏,请检查此项

    这里有一个更好的选择:

    保护密码最著名的方法是使用盐渍密码哈希。我建议您使用SHA256函数,这是在大多数现代编程语言中实现的

    哈希算法是单向函数。这意味着您无法解密存储的密码

    在基于哈希的系统中,帐户注册和身份验证的一般工作流程如下:

  • 用户创建一个帐户
  • 将密码+salt散列并将结果存储在数据库中
  • 在nextLogin尝试时,将输入的密码+salt散列,并将其与数据库中的值进行比较
  • 现在我们唯一需要做的就是定义盐:

  • 盐不一定是秘密!它只是为了防止彩虹攻击
  • salt需要每个用户每个密码都是唯一的。一个足够长的随机生成的字符串将完成这项工作
  • 每次用户创建帐户或更改密码时,都应该使用新的随机salt对密码进行哈希处理
    salt可以与散列一起存储在用户帐户表中。

    这被称为OTP方案,其中密钥被重用。这些方案很容易被破解:将两个加密密码异或,得到P1^P2。现在,如果P1或P2的字符相同,则输出为0。如果它们几乎相同,则得到的是只有一个位集的内容(等等)。一旦你猜到一个密码,你就可以用加密的密码对它进行异或运算来获得密钥。唯一安全的位是最长密码末尾的字符(如果密钥未重复)


    这种密码分析是大多数教科书中新密码学家的第一次实践。这是完全不安全的。

    这被称为OTP方案,其中密钥被重用。这些方案很容易被破解:将两个加密密码异或,得到P1^P2。现在,如果P1或P2的字符相同,则输出为0。如果它们几乎相同,则得到的是只有一个位集的内容(等等)。一旦你猜到一个密码,你就可以用加密的密码对它进行异或运算来获得密钥。唯一安全的位是最长密码末尾的字符(如果密钥未重复)


    这种密码分析是大多数教科书中新密码学家的第一次实践。这是完全不安全的。

    对每个系统使用相同的密码有什么好处?现在我了解了攻击者如何在仅获取一个密码后获取我的所有密码,好处非常有限。一个好处是只需记住一个密码,因为并非所有系统都接受所有密码(例如,一个系统的密码可能至少需要一个非字母数字字符,而另一个系统可能只允许字母数字字符),因此,可能不可能对每个系统使用相同的密码。对每个系统使用相同的密码有什么好处?现在我