Привет, Хабра! Тема шифрования личной переписки обсуждалась неоднократно.
Но на самом деле я не нашел ничего менее вменяемого, что можно было бы использовать без геморроя.
Именно поэтому я написал собственное расширение для социальных сетей.
сети с покером и куртизанками.
Поскольку сегодня пятница, первая половина поста состоит из веселых историй с картинками.
Вторая часть содержит несколько проблем и способов их решения.
Пятничный пост" alt="Шифрование личной переписки.
Пятничный пост">
Зачем нужно шифрование
Любовная историяПятничный пост" alt="Шифрование личной переписки.
Пятничный пост">
Миша любит переписываться с Катей на работе.
Они часто пишут друг другу разные неприличные вещи.
Однажды Миша пришел домой и забыл выключить компьютер.
В этот день его коллеги узнали много нового о личной жизни Миши.
Но просто для всего Мише и Кате нужно было использовать шифрование.
История ревнивого мужа
Пятничный пост" alt="Шифрование личной переписки.
Пятничный пост">
Сережа пишет Юле стихи о любви.
Юлия отвечает взаимностью.
Кирилл грустит. Он муж Юлии и что-то подозревает. Вскоре он прочитает переписку Серёжи и Юли, и устроит ББП? для своей жены.
Юля могла бы уйти от темы и избежать BPPE, если бы знала о шифровании больше.
История об алиби
Пятничный пост" alt="Шифрование личной переписки.
Пятничный пост">
У Толика очень насыщенная жизнь.
Однажды в переписке в Интернете Толик похвастался своими приключениями.
Теперь Толику могут предъявить обвинения за эти похождения.
Этого могло бы и не случиться, если бы он зашифровал свои подвиги.
История беспорядков
Пятничный пост" alt="Шифрование личной переписки.
Пятничный пост">
Леша имеет активную гражданскую позицию.
Леша любит собирать друзей и устраивать шумные встречи на городской площади.
Леша приглашает гостей на эти встречи через Интернет. Программист Артём просмотрел всю личную переписку и быстро понял, кто организатор массовых гуляний.
Сейчас у Леши проблемы.
Он мог бы избежать их, если бы зашифровал свои сообщения.
История истеричной женщины
Пятничный пост" alt="Шифрование личной переписки.
Пятничный пост">
Света отправила сообщение Глебу.
Но Глеб встречается с Лидой.
Глеб пошел в туалет и забыл свой мобильный телефон.
Лида прочитала сообщение Светы.
Примерно через минуту Лида закатит скандал.
Как работает шифрование
У Тимура есть чемодан и ключ.Он передает пустой чемодан своему другу Саше.
Пятничный пост" alt="Шифрование личной переписки.
Пятничный пост">
У Саши тоже есть свой чемодан и ключ.
Он снимает с них копию и прячет в чемодан Тимура.
Пятничный пост" alt="Шифрование личной переписки.
Пятничный пост">
Т.
к.
чемодан возвращается закрытым; только Тимур может открыть его.
Ключ от чемодана есть только у Тимура.
Пятничный пост" alt="Шифрование личной переписки.
Пятничный пост">
Тимур открывает чемодан и достает копию Сашиного чемодана и ключ.
Пятничный пост" alt="Шифрование личной переписки.
Пятничный пост">
Теперь Тимуру больше не нужны его чемодан и ключ.
Он может использовать те, которые ему дала Саша.
Пятничный пост" alt="Шифрование личной переписки.
Пятничный пост">
Примерно так работает алгоритм шифрования RSA. А вот так выглядит быстрая расшифровка криптографического алгоритма с помощью терморектального криптоанализатора.
Пятничный пост" alt="Шифрование личной переписки.
Пятничный пост">
Техническая сторона вопроса
В качестве алгоритма шифрования я выбрал RSA. Несмотря на то, что алгоритму около 30 лет, первые попавшиеся JS-библиотеки оказались крайне низкого качества.Такое ощущение, что они писались исключительно для одного проекта.
С трудом и болью мне удалось адаптировать их под нужды моего проекта, хотя задачи были типовые:
- Генерировать ключи
- Зашифровать текст открытым ключом
- Расшифровать текст с помощью закрытого ключа
Проблемы с парсингом социальных сетей
Я начал с ВКонтакте.Первая сложность заключается в том, что каждый диалог имеет свое поле ввода и поле отображения сообщений.
Проблема решилась получением id собеседника.
Далее нам нужно было перехватить нажатие кнопки «Отправить» и кнопки «Ввод».
Проблема в том, что ВКонтакте первым публикует события, и только потом инициализируется плагин.
Чтобы исправить ситуацию, я добавил в document.body свои обработчики, а затем отфильтровал все перехваченные события.
Нужно было получить их первым, чтобы успеть заменить исходное сообщение зашифрованным.
Сайт «Одноклассники» показал, что этого недостаточно.
Максимальная длина их сообщения составляет 3000 символов, а зашифрованная пара ключей имеет длину 3800. Кроме того, обычные сообщения также становятся длиннее из-за преобразования в base64. Мне пришлось написать механизм, который разбивал бы сообщения на части, подписывал их (идентификатор, текущий индекс, общее количество частей), а затем снова соединял.
В результате получилось что-то вроде пакетов в TCP/IP. Далее нам нужно было научиться генерировать событие «Отправить сообщение», поскольку скрипту нужно было отправлять пакеты самостоятельно.
Во ВКонтакте проблема решилась очень просто вызовом глобального метода IM.send().
Чтобы попасть в область сайта из области расширения, мне пришлось добавить тег SCRIPT и написать там вызов метода в виде строки.
Пример:
<script>IM.send()</script>
Здесь следует уточнить, что DOM для сайта и расширения один и тот же, но глобальная область видимости разная.
В Одноклассниках похожего метода я не нашел.
Ребята минимизируют код и не создают глобалы.
Мне пришлось эмулировать событие на кнопке «Отправить»: var event = new Event("click", {
Теги: #JavaScript #vk.com #ok.ru #RSA #шифрование #парсинг контента #занимаюсь пиаром
-
Советы По Покупке Аккумулятора Для Ноутбука
19 Dec, 24 -
Программное Обеспечение Для Умного Дома №2
19 Dec, 24 -
«Вымпелком» И Его 3G (Три G)
19 Dec, 24