Мне было интересно, возможно ли следующее.
При обмене паролями с сервером пароль должен быть защищен. Поэтому пользователь может зашифровать пароль сгенерированным ключом kUser. Encrypt(m, kUser)
в результате зашифрованное сообщение eU(m)
. Теперь пользователь отправляет эту информацию на сервер. Сервер теперь шифрует сообщение своим собственным ключом kServer. Encrypt(eU(m), kServer)
в результате eS(eU(m))
. Теперь сервер отправляет эту информацию обратно, где пользователь теперь расшифровывает сообщение своим ранее использованным ключом. Decrypt(eS(eU(m), kUser)
приведет ли это к eS(m)
? Будет ли это возможно?
Это похоже на изображение чемодана с информацией, хранящейся внутри. Пользователь кладет свой замок A на чемодан и отправляет его на сервер. Никто не может получить доступ к информации, кроме той, которая имеет ключ для блокировки А. Теперь сервер устанавливает второй замок B, кроме замка A на чемодане, и отправляет его обратно пользователю. Теперь чемодан заперт двумя замками A и B. Затем пользователь использует свой ключ A, чтобы снять свой замок A, и отправляет чемодан с оставшимся замком B на сервер. Сервер теперь удаляет блокировку B своим ключом B и может получить доступ к информации.
Как реализовать такую систему (если это возможно)?