![][1] Долго мучился с [PyCrypto][2], в итоге получилась эта статья и полная реализация следующего [протокола][3]: Этап отправки: 1. Алиса подписывает сообщение своей [цифровой подписью][4] и шифрует ее [открытым ключом][5] Боба ([асимметричным алгоритмом][6]). 2. Алиса генерирует случайный сеансовый ключ и шифрует этим ключом сообщение (с помощью [симметричного алгоритма][7]). 3. Сеансовый ключ шифруется открытым ключом Боба (асимметричным алгоритмом). Алиса посылает Бобу зашифрованное сообщение, подпись и зашифрованный сеансовый ключ. Этап приёма: Боб получает зашифрованное сообщение Алисы, подпись и зашифрованный сеансовый ключ. 4. Боб расшифровывает сеансовый ключ своим закрытым ключом. 5. При помощи полученного, таким образом, сеансового ключа Боб расшифровывает зашифрованное сообщение Алисы. 6. Боб расшифровывает и проверяет подпись Алисы. [Читать дальше →][8]
[1]:
https://habrastorage.org/files/972/ff9/1f1/972ff91f120740f4b86aafc1867c35c3.jpg
[2]:
https://www.dlitz.net/software/pycrypto/api/current/
[3]:
https://ru.wikipedia.org/wiki/Криптографический_протокол
[4]:
https://ru.wikipedia.org/wiki/Электронная_подпись
[5]:
https://ru.wikipedia.org/wiki/Ключ_(криптография)
[6]:
https://ru.wikipedia.org/wiki/Криптосистема_с_открытым_ключом
[7]:
https://ru.wikipedia.org/wiki/Симметричные_криптосистемы
[8]:
http://habrahabr.ru/post/265309/#habracut