我正在寻找一个可交换的密码 - 即
E(K₁,E(K₂,P)) = E(K₂,E(K₁,P))
但不是关联的 - 即
E(K,P) ≠ E(P,K)
排除XOR,否则本来可以。
对称密码更可取,但非对称密码也可以使用。
我想实现的基本协议是:
有人可以建议我可以使用的密码并指出我对该密码的实现吗?
我对加密协议和应用程序有所了解,但我并没有真正理解大多数密码的数学。虽然分步数学指南也可以。
我计划在Clojure中实现它,所以任何Java库也都很好。但是,任何代码都是好的,因为我理解代码。
答案 0 :(得分:4)
听起来你正在尝试实施“精神扑克”(或者如果没有,你应该查看它的研究,因为它与你的问题相似)。
SRA算法具有您需要的属性。查找信息有点难,但它基本上只是RSA,除了 e
和d
指数都保密。平凡:
(P e1 ) e2 ==(P e2 ) e1
答案 1 :(得分:1)
我知道这个问题是很久以前问过的,但是似乎没人建议梅西-大村,所以就这样。它完全满足原始要求。最初的描述(也在Wikipedia中采用)使用了GF(2 ^ m)的乘法组,但是任何安全组(如椭圆曲线)都可以。
答案 2 :(得分:0)
指的是我在C#中使用自己的密码程序的最讨人喜欢的解决方案。程序和来源是免费的。
还记得在现在的安全播客上播放的“锁定的盒子拼图”吗?
这是剧集...... 第33集| 2006年3月30日| 43分钟 对称分组密码
https://www.grc.com/sn/sn-033.txt
史蒂夫说...... ...... Leo和我上周回答了Puzzler / BrainTeaser,探讨了这个想法 使用两个私人 一次性垫“钥匙”,如两个挂锁,以安全地传递信息 两方都没有 谁拥有对方的钥匙。然后我们继续我们正在进行的巡演 基本的加密技术 描述Symmetric Block Ciphers的操作...... Steve和Leo同意窃听者之前看过ALICE的密文 加密后可以 将两者合并并获得她的秘密密钥。 但是,如果一个复杂的,可交换的密码不使用简单的XORing 加密然后使用我 认为密钥交换是安全的,密钥交换会起作用。例如...... BOB用他的密钥加密msg。 ALICE用她的密钥加密BOB加密的以上msg。 ALICE将以上加密的消息发送回BOB。 BOB用他的密钥解密ALICE的上述消息。 BOB上面发送给ALICE。 ALICE用她的钥匙解密上面。 ALICE现在可以读取BOB的原始解密密文,但他们不需要 交换钥匙。 如果算法不简单,窃听者攻击将不起作用 'xor'ing的纯文本和密钥。
这个密码是一种可交换的复杂算法。
从包含一个字符的记事本文本文件开始,为'm'。 m是hex 6d 01101101。 Â是十六进制c2 11000010被'bo'加密后被发送给爱丽丝。 ø是十六进制d8 11011000是爱丽丝对'''的加密,bob解密为'£' 并发送给爱丽丝。 £是hex a3 10100011,alice用她的密钥解密为'm'。 m是alice解密结果 窃听者在加密之前会看到爱丽丝的消息。 窃听者在加密后看到øalice的消息。 窃听者xors和ø。 11000010'' 11011000'ø' 00011010窃听者的xor结果=以十六进制表示的1a。 如果窃听者攻击有效,他会发现'E'hex hex 01 01001001
的第一个字母 爱丽丝的钥匙。这似乎比PGP等更简单的密钥交换。所需要的只是 双方都使用相同的 加密程序并同意验证者。
我承认自己是一个爱好者。如果有人想要WINDOWS C#.NET程序 和/或密码的源代码 可能有它/他们。
下面的是更长的随机密钥的示例。
PLAIN TEXT 这是一个考验。
BOB'S KEY kZtOfS0kKqcRLjTNPh7OjcJKZZFLjmm5OVm02YlrBQN0zI9SxOD1zJjQcpetUbX
BOB'给COICE写信。 1IÎ.8Ío#“ëìAùJ'
爱丽丝的钥匙 O1yfuV7MpX3n4wtefUhr6YctRaeCcrrzH7LqLNRUQCMVZuL5Mr0Bw3qMeIT92hg
爱丽丝给BOB写了一篇文章 μRÖ³#100,fzkÆaå
BOB DECODES ALICE'S以上=以下。 øqqøð<ª指p&安培; @&LT ;, 并且在上面回到爱丽丝驴友解雇产生的... 这是一个考验。
答案 3 :(得分:0)
我做了类似的事情,我在OFB(输出反馈)模式下使用AES。在该模式中,使用一些密钥用AES加密IV(公知的随机值)。然后将其输出与您的数据进行异或。然后再次对输出(在与数据进行异或之前)进行加密,以获得具有更多数据的另一个输出到XOR。在加密和解密算法相同的意义上,这不仅是可交换的而且是互惠的。 http://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Output_Feedback_.28OFB.29