我想知道以下情况是否可能。
与服务器交换密码时,应保护密码。因此,用户可以使用生成的密钥kUser对密码进行加密。 Encrypt(m, kUser)
产生了加密的消息eU(m)
。现在,用户将此信息发送到服务器。服务器现在使用自己的密钥kServer加密消息。 Encrypt(eU(m), kServer)
产生eS(eU(m))
。现在,服务器将这些信息发送回去,在此,用户现在使用其先前使用的密钥解密消息。 Decrypt(eS(eU(m), kUser)
会产生eS(m)
吗?这有可能吗?
这就像是将里面的信息存储在行李箱中。用户将他的锁A放在手提箱上,然后将其发送到服务器。除了拥有锁A的钥匙之外,没有人可以访问该信息。服务器现在将除锁A之外的第二把锁B放在手提箱上,然后将其发送回用户。现在,手提箱被两个锁A和B锁住。然后,用户使用他的钥匙A取下他的锁A,并将仅剩下锁B的手提箱发送给服务器。服务器现在用他的钥匙B移除锁B,并且可以访问该信息。
一个人将如何实施这样的系统(如果可能)?
答案 0 :(得分:4)
该结果是否为eS(m)?
这取决于您的解密/加密功能。
这可能吗?
是的。想象一下简单的Caesar或Vigenérechifre,肯定会起作用。
const keyA = "B";
const keyB = "C";
const text = "AB";
const sent = encrypt(text, keyA); // BC
const sendBack = encrypt(sent, keyB); // DE
const sent2 = decrypt( sendBack, keyA); // CD
decrypt(sent2, keyB); // AB
但是,它不适用于换位和其他更复杂的算法,例如AES。
一个人将如何实施这样的系统(如果可能)?
不要。最弱的加密是您自己发明的。而是使用实现Diffie-Hellmann key exchange protocol的库来实现您所描述的完全一样,但要保证其安全性(到现在为止)。