Можете ли вы зашифровать 1 (м), шифровать 2 (E1 (м), расшифровать 1 (E2 (E1 (м))) и расшифровать 2 (E2 (м))? - PullRequest
0 голосов
/ 06 ноября 2018

Мне было интересно, возможно ли следующее.

При обмене паролями с сервером пароль должен быть защищен. Поэтому пользователь может зашифровать пароль сгенерированным ключом 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 и может получить доступ к информации.

Как реализовать такую ​​систему (если это возможно)?

1 Ответ

0 голосов
/ 06 ноября 2018

приведет ли это к eS (м)?

Это зависит от вашей функции дешифрования / шифрования.

Это было бы возможно?

Да. Вообразите простого Цезаря или Vigenére chifre, который определенно работал бы.

  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.

Как реализовать такую ​​систему (если это возможно)?

Не. Самое слабое шифрование - это то, которое вы изобрели сами. Вместо этого используйте библиотеку, реализующую протокол обмена ключами Диффи-Хеллмана , который делает именно то, что вы описываете, но его пуленепробиваемый (до сих пор).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...