Cryptography 交换密码?

Cryptography 交换密码?,cryptography,Cryptography,我正在寻找一个交换密码-即 E(K₁,E(K₂,P)) = E(K₂,E(K₁,P)) E(K,P) ≠ E(P,K) 但它不是关联的——也就是说 E(K₁,E(K₂,P)) = E(K₂,E(K₁,P)) E(K,P) ≠ E(P,K) 这就排除了XOR,否则就没问题了 对称密码更可取,但非对称密码也适用 我想要实现的基本协议是: Alice有一个令牌列表(32位整数),她用相同的密钥(K0)加密每个令牌 Alice将加密令牌列表发送给Bob Bob随机化列表,用单独的密钥(K1-Kn

我正在寻找一个交换密码-即

E(K₁,E(K₂,P)) = E(K₂,E(K₁,P))
E(K,P) ≠ E(P,K)
但它不是关联的——也就是说

E(K₁,E(K₂,P)) = E(K₂,E(K₁,P))
E(K,P) ≠ E(P,K)
这就排除了XOR,否则就没问题了

对称密码更可取,但非对称密码也适用

我想要实现的基本协议是:

  • Alice有一个令牌列表(32位整数),她用相同的密钥(K0)加密每个令牌
  • Alice将加密令牌列表发送给Bob
  • Bob随机化列表,用单独的密钥(K1-Kn)加密每个令牌,标记每个令牌并将列表返回给Alice
  • Alice用K0解密每个令牌,给她留下一个令牌列表,每个令牌都用一个单独的密钥(K1-Kn)加密
  • 稍后,Bob向Alice发送特定标签(Kx)的密钥
  • Alice使用Kx解密令牌,并为其提供标记为x的令牌的明文
  • Bob可能会看到纯文本,因此,鉴于他之前获得的信息,他一定无法从中推导出K0
  • 有人能推荐一个我可以使用的密码,并给我指出该密码的实现吗

    我对密码协议和应用程序有一定的了解,但我并不真正了解大多数密码的数学知识。不过,一步一步的数学指导是可以的


    我计划在Clojure中实现这一点,因此任何Java库都是好的。然而,任何代码都是好的,因为我理解代码。

    听起来你好像在尝试实现“心理扑克”(或者如果没有,你应该查看它的研究,因为它对你的问题很有帮助)

    SRA算法具有您想要的特性。查找有关的信息有点困难,但它本质上只是RSA,只是
    e
    d
    指数都是保密的。琐碎地:


    (Pe1)e2==(Pe2)e1

    下面是我用自己的密码程序在C#中得到的最有希望的解决方案。程序和源代码是免费的

    还记得《现在安全》播客上重述的“锁盒之谜”吗

    这是一集。。。 第33集| 2006年3月30日| 43分钟。 对称分组密码

    史蒂夫说。。。 …利奥和我回答了上周的谜题/脑筋急转弯,探讨了这个想法 使用两个私人 一次性键盘“钥匙”,就像两个挂锁一样,在两个键盘之间安全地传递信息 两个政党,都不是 谁会拥有对方的钥匙。然后我们继续我们正在进行的 基本密码技术 描述对称分组密码的操作

    史蒂夫和利奥一致认为窃听者以前看到过爱丽丝的密文 加密后可以 XOR将两者结合在一起并派生出她的密钥。 然而,如果一个复杂的、可交换的密码不使用简单的XORing 如果使用加密,那么我 我认为密钥交换是安全的,并且密钥交换可以工作

    例如。。。 鲍勃用他的钥匙加密味精。 ALICE用她的密钥加密BOB的加密邮件。 ALICE将上述加密消息发送回BOB。 鲍勃用他的钥匙解密爱丽丝上面的信息。 鲍勃把上面的信寄给爱丽丝。 爱丽丝用她的钥匙解密上面的内容。 ALICE现在可以读取BOB原来解密的密码文本,而他们不需要 交换钥匙。 如果算法不简单,则窃听攻击将不起作用 纯文本和键的“xor”运算

    该密码是一种可交换的复杂算法

    从记事本文本文件开始,包含一个字符“m”。 m是十六进制6d 01101101。 is hex c2 11000010由bob加密,然后发送给alice。 øis hex d8 11011000是alice对“of”的加密,bob将其解密为“of” 然后寄给爱丽丝。 是十六进制a3 10100011,alice用她的密钥将其解密为“m”。 m是alice解密结果 窃听者在爱丽丝加密之前看到了她的味精。 窃听者在爱丽丝加密后看到了她的消息。 窃听者XOR和ø。 11000010 'Â' 11011000 'ø' 0001010窃听者的异或结果=1a(十六进制)。 如果窃听者攻击奏效,他会找到“E”hex 45 01001 哪一个是第一个字母

    爱丽丝的钥匙

    这似乎是一个比PGP等更简单的密钥交换 双方使用相同的 加密程序,并同意使用验证器

    我承认自己是个最霍布斯的人。如果有人想要WINDOWS C#.NET程序 和/或他们使用的密码的源代码 我可能有它/它们

    下面是使用更长的随机键的示例

    纯文本 这是一个测试

    鲍勃的钥匙 KZTOFS0KQCRLJTNPH7OJCJKZZFLJMM5OVM02YLRBQN0ZI9SxOD1ZJQCPETUBX

    鲍勃给爱丽丝的密文。 1.8Îo#AùJ'

    爱丽丝的钥匙 O1yfuV7MpX3n4wtefUhr6YctRaeCcrrzH7LqLNRUQCMVZuL5Mr0Bw3qMeIT92hg

    爱丽丝给鲍勃的密文 µRÖ³#ÓO,fzkÆaå

    鲍勃解码艾丽丝的上面=下面。
    øqqðP¸&@

    我正在做类似的事情,我在OFB(输出反馈)模式下使用AES。在这种模式下,使用一些密钥用AES加密IV(公共已知的随机值)。然后,该值的输出与数据异或。输出(在与数据异或之前)然后再次加密,以获得另一个输出到具有更多数据的XOR。这不仅是可交换的,而且在加密和解密算法相同的意义上是相互的。


    我知道这个问题很久以前就被问到了,但似乎没有人建议Massey Omura,所以就这样。它完全满足了最初的要求。最初的描述(在维基百科中也被采用)使用了GF的乘法组(2^m),但使用了任何安全组(如椭圆曲线)可以。

    我读过很多关于心理扑克的资料,但都假设所有玩家都知道标准的52/54牌组。我使用的是任意大小的未知牌组(未知的意思是所有可用的牌都已知,但非所有者不知道牌组中的特定牌).不幸的是,我的数学技能没有达到我所能适应的心理扑克的水平。谢谢你参考SRA-我会查的。我