-
-
Save CatDany/13f482a50a3dc72e7482 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Цель: обе стороны должны иметь одно и то же значение - секрет. Это может быть что угодно (обычно массив байтов) | |
Условие: | |
Существует способ асимметрической криптографии (публичный ключ используется для зашифровки, секретный ключ используется для расшифровки). Используя этот способ никто не может узнать второй ключ, зная один из пары. | |
Решение: | |
1. Сервер создает случайную пару ключей. | |
2. Сервер передает публичный ключ клиенту (третья сторона имеет доступ к публичному ключу) | |
3. Клиент получает публичный ключ. | |
4. Клиент создает секрет. | |
5. Клиент шифрует этот секрет с помощью публичного ключа, полученного с сервера. | |
6. Клиент передает зашифрованный секрет серверу (третья сторона имеет доступ к зашифрованному секрету) | |
7. Сервер получает зашифрованный секрет. | |
8. Сервер расшифровывает секрет, полученный от клиента, с помощью секретного ключа ранее созданной пары. | |
9. Сервер получает секрет. | |
Таким образом клиент имеет секрет, потому что он его создал, а,сервер имеет секрет, потому что получил его в зашифрованном виде от клиента. Задача решена. | |
Третьи стороны имеют: | |
- Публичный ключ для одноразового шифрования секрета | |
- Зашифрованный секрет | |
Любые изменения информации приведут к ошибке обмена секретом. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment