Шифрованный тоннель для общения через VK (RSA + GreaseMonkey)
В связи с развитие м событий в мире последним временем пользователи сети всё чаще задумываются о своей безопасности: кто-то отказывается пользоваться рядом web-сервисов, кто-то удаляет личную информацию, фото и другие данные с социальных сетей, а кто-то и вовсе «блокирует» свои учётные записи. Но вот только большинство этих данных удаляются лишь визуально, что, в принципе, общеизвестный факт.
Поскольку значительная часть моих знакомых — это люди, не имеющие достаточных знаний в сфере IT, то приходится изощряться, чтобы заставить их пользоваться непривычными им сервисами либо утилитами, которые я считаю безопасными.
Предлагаю относительно простой способ установки безопасного канала для текстового общения через всеми известную сеть ВКонтакте. Для этого не нужно никакого дополнительного софта либо обширных знаний в сфере информационной безопасности. Всё, что вам нужно иметь — это web-браузер и аддон GreaseMonkey.
:
Исходя из того, на какую аудиторию рассчитана эта статья, я не буду объяснять процесс установки GreaseMonkey и моего скрипт а. Если же вы не знаете, как это сделать — читайте мануал, например,
(спасибо
за эту ссылку).
В качестве механизма шифрования выбран, конечно же, неповторимый RSA в стандартной имплементации. Объяснять этот механизм тоже нет смысла, так как статья не о нем, а об автоматизации сего процесса, но, на всякий случай, двустороннее асимметрическое шифрование выглядит так:
Для реализации алгоритма RSA я использовал его JS-имплементацию, написанную
. Она была одной из первых, что попались на глаза, и отлично оправдала все мои ожидания, поэтому я использовал именно её.
Ближе к делу
Итак, что делает скрипт?
При открытии страницы с чатом в верхнем правом углу должно появиться сообщение «VKSL loaded» (возможно, придется нажать F5, если вы перешли с другой страницы). Нажав CTRL+SHIFT+V на странице с чатом, опять таки получим сообщение об успешной (или же неудачной) инъекции шифратора в код страницы.
После этого каждый из собеседников должен нажать на линк «GENERATE KEYS NOW». Через несколько (возможно, десятков) секунд появится сообщение, что ключ сгенерирован и отправлен. Следовательно, собеседник на другом конце будет тоже уведомлен об этом.
Теперь можно приступать к общению. Для отправки обычного сообщения пользуемся стандартной кнопкой, для отправки шифрованного — нажимаем на «SEND ENCRYPTED». Скрипт на другом конце сам поймёт, что нужно делать, если получено зашифрованное сообщение.
Проблемы, которые до сих пор было лень устранить (а следовало бы)
Спасибо за ваше внимание!
EDIT: Приношу извинения за множество орфографических ошибок, на которые читатели любезно обратили моё внимание. Кажется, всё исправил.
В связи с развитие м событий в мире последним временем пользователи сети всё чаще задумываются о своей безопасности: кто-то отказывается пользоваться рядом web-сервисов, кто-то удаляет личную информацию, фото и другие данные с социальных сетей, а кто-то и вовсе «блокирует» свои учётные записи. Но вот только большинство этих данных удаляются лишь визуально, что, в принципе, общеизвестный факт.
Поскольку значительная часть моих знакомых — это люди, не имеющие достаточных знаний в сфере IT, то приходится изощряться, чтобы заставить их пользоваться непривычными им сервисами либо утилитами, которые я считаю безопасными.
Предлагаю относительно простой способ установки безопасного канала для текстового общения через всеми известную сеть ВКонтакте. Для этого не нужно никакого дополнительного софта либо обширных знаний в сфере информационной безопасности. Всё, что вам нужно иметь — это web-браузер и аддон GreaseMonkey.
У вас нет прав на просмотр ссылок, пожалуйста: Вход или Регистрация
- Большинство знакомых пользуется именно ВКонтакте;
- Довольно просто объяснить процесс разворачивания моего скрипта.
Исходя из того, на какую аудиторию рассчитана эта статья, я не буду объяснять процесс установки GreaseMonkey и моего скрипт а. Если же вы не знаете, как это сделать — читайте мануал, например,
У вас нет прав на просмотр ссылок, пожалуйста: Вход или Регистрация
У вас нет прав на просмотр ссылок, пожалуйста: Вход или Регистрация
В качестве механизма шифрования выбран, конечно же, неповторимый RSA в стандартной имплементации. Объяснять этот механизм тоже нет смысла, так как статья не о нем, а об автоматизации сего процесса, но, на всякий случай, двустороннее асимметрическое шифрование выглядит так:
- Собеседники обмениваются открытыми ключами. Этот процесс автоматизируется нашим скриптом.
- Один из собеседников отправляет сообщение. Это сообщение шифруется публичным (открытым) ключом напарника.
- Другой из них получает это сообщение. Это сообщение расшифровывается его приватным (закрытым) ключом.
Для реализации алгоритма RSA я использовал его JS-имплементацию, написанную
У вас нет прав на просмотр ссылок, пожалуйста: Вход или Регистрация
Ближе к делу
Итак, что делает скрипт?
- Внедряет себя в страницу ВК при её открытии, и патчит документ, добавляя ивент на нажатие CTRL+SHIFT+V;
- По нажатию последней комбинации добавляет кнопки отправки зашифрованных сообщений и генерации публичного ключа для напарника;
- Реагирует на сообщения вида "%n:открытый_ключ_напарника" и"%m:зашифрованное_сообщение", заменяя их нотификациями про факт получения публичного ключа от напарника либо расшифрованным текстом.
- Патчит элементы DOM своими атрибутами с префиксом «vksl-» для сохранения своего состояния.
При открытии страницы с чатом в верхнем правом углу должно появиться сообщение «VKSL loaded» (возможно, придется нажать F5, если вы перешли с другой страницы). Нажав CTRL+SHIFT+V на странице с чатом, опять таки получим сообщение об успешной (или же неудачной) инъекции шифратора в код страницы.
После этого каждый из собеседников должен нажать на линк «GENERATE KEYS NOW». Через несколько (возможно, десятков) секунд появится сообщение, что ключ сгенерирован и отправлен. Следовательно, собеседник на другом конце будет тоже уведомлен об этом.
Теперь можно приступать к общению. Для отправки обычного сообщения пользуемся стандартной кнопкой, для отправки шифрованного — нажимаем на «SEND ENCRYPTED». Скрипт на другом конце сам поймёт, что нужно делать, если получено зашифрованное сообщение.
Проблемы, которые до сих пор было лень устранить (а следовало бы)
- Скрипт не работает в конференциях, а рассчитан лишь на двустороннее общение.
- Максимальная длина сообщения на данный момент лишь 32 байта — нужно шифровать, разбивая текст на блоки, а не так, как там сейчас.
- По нажатию на «Enter» вызывается нативная отправка. Нужно немного больше порыться в коде, чтобы заменить и этот ивент.
- Аттачменты не шифруются, поскольку они фактически не являются частью сообщения.
У вас нет прав на просмотр ссылок, пожалуйста: Вход или Регистрация
Спасибо за ваше внимание!
EDIT: Приношу извинения за множество орфографических ошибок, на которые читатели любезно обратили моё внимание. Кажется, всё исправил.
У вас нет прав на просмотр ссылок, пожалуйста: Вход или Регистрация
Последнее редактирование модератором: