Шифрование Личной Переписки. Пятничный Пост

Привет, Хабра! Тема шифрования личной переписки обсуждалась неоднократно.

Но на самом деле я не нашел ничего менее вменяемого, что можно было бы использовать без геморроя.

Именно поэтому я написал собственное расширение для социальных сетей.

сети с покером и куртизанками.

Поскольку сегодня пятница, первая половина поста состоит из веселых историй с картинками.

Вторая часть содержит несколько проблем и способов их решения.



Шифрование Личной Переписки. Пятничный Пост

Пятничный пост" 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 #шифрование #парсинг контента #занимаюсь пиаром

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2020-04-23 02:37:21
Баллов опыта: 625
Всего постов на сайте: 6
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.