Ответить в теме

[QUOTE="fxkonferenco, post: 7733, member: 1499"]

Всем привет!


Я переработал вторую страницу, ссылку на которую давал в предыдущем сообщении.


Кроме украшательства, была добавлена возможность генерировать открытый ключ двумя способами на выбор: 1) из парольной фразы или 2) совершенно случайным образом. Это было сделано из-за того, что стандартный генератор "случайных" чисел Math.random инициализируется таймером компьютера, чьей энтропии крайне мало для реального практического применения.


А теперь о том, как это работает. Парольная фраза инициализирует КСГПСЧ потокового шифра RC4, который генерирует гамму определённой в файле consts*.js длинны. Очевидно, что восстановить таким образом свой открытый ключ получится только в том случае, если используется тот же самый файл констант consts*.js. Также для экономии времени в этом же разделе интерфейса предусмотрена возможность восстановить из парольной фразы только секретную степень без дальнейшего подсчёта самого открытого ключа. Восстановление секретной степени из парольной фразы, безусловно, нарушает принцип perfect forward secrecy, однако может быть полезно для согласования общего ключа, когда получатель сообщения в момент его отправки не находится перед компьютером и не может согласовать общий одноразовый ключ. Делается это так: отправитель восстанавливает свою секретную степень (и, соответственно, свой долгосрочный открытый ключ) из своей парольной фразы, а для расчёта общего ключа шифрования использует долгосрочный открытый ключ получателя. В дальнейшем, когда получатель будет за компьютером, он сделает всё то же самое и точно так же посчитает общий ключ шифрования.


Действительно случайный способ генерирования секретной степени позволяет в полной мере использовать perfect forward secrecy, так как случайные числа получаются "оцифровыванием" :) движений курсора мыши, что в дальнейшем никак повторить не удастся.


"Тревожная" кнопка уничтожает все переменные: парольную фразу, общий ключ, секретную степень, а также открытые ключи и затем перезагружает страницу. По сути это аналог Ctrl+F5, но мне так было удобнее, когда я ловил ошибки в своих функциях.


КСГПСЧ из потокового шифра RC4 был взят только потому, что он на мой взгляд самый простой для реализации в коде. Если захотите, можете заменить его любым другим генератором на свой вкус. Только учтите, что парольные фразы в таком случае будут восстанавливать уже другие гаммы и, соответственно, уже другие открытые ключи.


Ссылка на мою переделку: https://drive.google.com/open?id=0B2Mdz6DZW9qQSzNUX19MbUtrdUk Сейчас она настроена на 2048-битный модуль и 384-битную секретную степень. Если вы используете другой файл констант consts*.js, то измените это в своей копии моей переделки. Также даю ссылку на минимальный набор дистрибутива (генератор констант, файл констант, ядро с длинной арифметикой и мой интерфейс): https://drive.google.com/file/d/0B2Mdz6DZW9qQX2pDV1U4STVYLVE/view (дополнительно архив прикреплён к этому сообщению).


Надеюсь моя работа будет вам полезна.

[/QUOTE]

Сверху