После скандала с PRISM вопрос безопасности данных стал еще актуальней чем был, и даже если вы не секретный агент, то ваша личная переписка, должна соответствовать своему названию, и по умолчанию должна быть закрыта от доступа третьих лиц. Взяв это за аксиому это принцип, я занялся разработкой дополнений для браузеров для работы с популярной в странах СНГ социальной сетью вконтакте методом AES.
Небольшая предистория, алгоритм AES (Advanced Encryption Standard) — это симметричный алгоритм шифрования, который на конкурентной основе был принят в качестве стандарта шифрования правительством США по результатам одноимённого конкурса.
Алгоритм подробно описан, и есть его различные реализации под разные платформы и веб интерфейс (например тут). Чобы зашифровать/расшифровать текст нужно сообщение и ключ (и размер блока, по умолчанию 256, но бывает 128, 196). Зашифрованное сообщение можно передавать через любой канал связи, например SMS, IM, почта, социальные сети.
Итак, какоето время я жил с периодически всплывающей мыслью, а почему бы нам не автоматизировать процесс расшифровки-шифровки сообщений для сети vk.com?
Архитектуру процесса я видел следующим образом:
1) гденибудь рядом с формой отправки появляется форма ввода секретного ключа
2) вместо оригинальной формы вконтакта (данные из которой кстати сохраняются и без отправки) рисуется альтернативная текстовая форма, а после нажатия кнопки отправки, данные из этой формы шифруются в соответствии с ключём, и вставляются в обычную форму вконтакта в зашифрованном виде + в начале сообщения задаётся маркер AESSTART.
3) зашифрованное сообщение отправляется как обычное
4) расширение отслеживает открытое окно диалога, сканирует сообщения на наличие маркера AESSTART, и если маркер есть, расшифровывает в соответствии с введённым ключём. + выводит иконку ключик справа от сообщения и меняет фон на зелёный
Трудности с реализацией плагинов были связанны с особенностями разработки под конкретную платформу, и изучение документации.
В итоге получилось вот что:
Chrome: https://chrome.google.com/webstore/detail/vkcrypt/lemdbelcbpfbohjiimbcdhbonmlamdbm/
Mozilla: https://addons.mozilla.org/en–US/firefox/addon/vkcrypt/
Как оказалось версия под Chrome безопаснее, так как в нём скрипты расширения и скрипты сайта выполняются изолированно от друг друга, в разных средах. В Mozilla Firefox теоретически вконтакт может считать массив с ключами получив доступ к window.secureKeys. В хроме введённые ключи существуют только на стороне пользователя, со стороны вконтакта к ним нет никакого доступа.
Краткая инструкция:
Для того чтобы работало шифрование и дешифрование информации, вы должны знать секретный ключ (пароль), который так же должен знать ваш собеседник.
Лучше всего обменяться ключом при личной встрече, это может быть набор букв и цифр.
Установите плагин, войдите в режим диалога с вашим собеседником (в мини чате и в режиме сообщений плагин не работает), если плагин установился, справа от текстовой формы и аватара будет ссылка «ENTER SECRET KEY».
Нажмите эту ссылку, и в появившемся окне введите ваш секретный ключ. Ваш собеседник должен проделать такую–же операцию.
Теперь ваши сообщения будут отправляться зашифрованные, а зашифрованные сообщения собеседника — отображаться в расшифрованном виде.
страница проекта | исходники