[Программа] Шифрование Диффи-Хеллмана на JavaScript

Тема в разделе 'Софт и технологии для обхода цензуры', создана пользователем Алексаня Тюрик, 21 июл 2016.

?

Есть ли смысл дорабатывать программу, или есть готовые решения давно?

  1. Очень интересная работа, только "ВПЕРЁД"!!!

    2 голосов
    100,0%
  2. Есть аналоги, которые давно выручают без этой программы.

    0 голосов
    0,0%
  1. Алексаня Тюрик

    Алексаня Тюрик Ч0ткий!

    Симпатии:
    16
    Репутация:
    0
    Мне удалось реализовать на JavaScript достаточно быструю генерацию закрытых сесионных ключей криптоалгоритма Диффи-Хеллмана (при 2048-битном модуле и 256-битной экспоненте на это требовалось около 10 секунд или менее - на настольном ПК с двухядерным 3 ГГц процессором).
    -
    Рабочую библиотеку функций с сопутствующими файлами я передал в общественное достояние и выложил на Гитхаб:

    https://github.com/michael-hock/skrasite

    Там в файле DHJS_rus.rtf - математические выкладки со всеми формулами, по которым я создавал вычислительный алгоритм, краткое описание функций и файлов. DHJS_eng.rtf - то же самое на английском языке.

    DH_JS_Test.htm - файл для демонстрации возможностей: он работает и за Алису, и за Боба, которые обманиваются открытыми числами и генерят одинаковые сессионные ключи.

    DH.js - самое ядро: библиотека функций, реализующих на JavaScript достаточно быстрое умножение по модулю и возведение в степень по модулю очень больших натуральных чисел.

    consts*.js - файлы с предвычисленными константами, позволяющими в несколько раз ускорить вычисление (2^a) mod P.

    const_gen.htm - генератор таких файлов с константами.

    Пока это открытая библиотека функций.

    Дальнейшее развитие проекта SkraSite мне видится в создании мессенджера, для которого не надо будет специальной программы на клиенте (как для Telegram и WhatsApp), а будет достаточно любого браузера. А серверная часть - PHP-файл, который можно "подкинуть" на любой веб-сайт на хостинге с поддержкой PHP. В отличие от JS, в ядре современного PHP уже есть встроенная математика больших чисел, на сервере с этим будет проще.

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

    Протокол Диффи-Хеллмана, в отличие от RSA, обеспечивает forward secrecy. Если на RSA кому-то удастся похитить или подобрать закрытый ключ - им можно расшифровать сессионные ключи в перехваченном трафике, а сессиоными ключами - и само содержимое сообщений. На DH такое не получится, поскольку никаких постоянных закрытых ключей нет, а сесионные не пересылаются даже в зашифрованном виде и окончательно уничтожаются по завершению сессий.

    Может быть, я напишу такой месенджер - но не уверен. Мне уже вычислительная оптимизация и отладка функций на JavaScript далась на пределе. Там столько проблем было... нет беззнаковых целых чисел, только знаковые 32-битные, на них побитовые операции на старшем бите работают непонятно как, вообще это тормознутая виртуальная машинка...

    Если у меня дальше не получится - надеюсь, другим программистам эта библиотека функций будет полезна.

    Источник (через TOR): lwplxb6ushy6x3yr.onion/viewtopic.php?id=10301
     
    Last edited by a moderator: 17 фев 2017
  2. fxkonferenco

    fxkonferenco New Member

    Симпатии:
    1
    Репутация:
    0
    А можно ли Вас попросить переделать эту программу для практического использования непосредственным пользователем так, чтобы Алиса отправляла свой промежуточный результат Бобу и продолжала вырабатывать общий ключ только после получения от Боба его промежуточного результата? А то сейчас в её нынешнем виде программу можно использовать только для генерации псевдослучайных последовательностей.
    И ещё три необязательные просьбы: 1) было бы неплохо итоговую экспоненту формировать не только из стандартного ГПВЧ, но и просить пользователя дополнить её своими случайными числами, 2) совместить обе html'ки в одну, чтобы пользователю не приходилось переименовывать файл констант из txt в js и прописывать его название во второй html'ке, 3) добавить возможность использовать генератор не только 2, но и ещё несколько других на выбор.
    Спасибо.
     
    Last edited: 26 янв 2017
  3. Roscenzura.com

    Roscenzura.com Администратор Staff Member

    Симпатии:
    182
    Репутация:
    0
    Так это не он сделал, это перекопирование материалов с Тора. Скачайте браузер Тор и перейдите по ссылке.
     
  4. fxkonferenco

    fxkonferenco New Member

    Симпатии:
    1
    Репутация:
    0
    К сожалению, это не возможно, так как в интернет я захожу с рабочего компьютера, а у нас администратор групповыми политиками ограничил права обычных пользователей на установку и выполнение дополнительных программ. Можно ли Вас попросить переслать мой первый комментарий на тот форум разработчику? Спасибо.
     
  5. fxkonferenco

    fxkonferenco New Member

    Симпатии:
    1
    Репутация:
    0
    Я нашёл программиста, который согласился переделать вторую страницу программы, скрипты которой согласовывают общий ключ. В тоже время первую страницу, которая генерирует промежуточные константы на основе выбранного модуля и указанной разрядности закрытого ключа, с библиотекой функций всё же нужно копировать с оригинального хранилища автора.
    Ссылка на переделанную страницу: http://any.clubmeteorology.ru/dh/ (советую её сохранить себе на винчестер, так как автор может в любой момент её оттуда удалить).
     

Поделиться этой страницей