Главные отличия от существующих моделей
Практически любой современный протокол обмена данными строится на передающей стороне, сервере-посреднике и стороне принимающей.
Таким образом, каким бы защищённым не был протокол до и после сервера-посредника, проблема утечки данных может быть именно в нём: человеческий фактор, back-doors, атаки хакеров и т.п.
Одно из возможных решений этой проблемы лежит в реализации Hash-Mask алгоритма,
а главное требование — кодирование данных на передающей стороне, декодирование — на принимающей.
Другими словами, на сервере-посреднике будет храниться «абракадабра» принципиально не позволяющая, например, администратору получить доступ к данным.
Также понятно, что для передачи таких данных мы сможем использовать открытые каналы связи.
Браузер + JavaScript
При реализации передающей и приёмной части важна открытость и читаемость криптографических скриптов.
С одной стороны скрипт должен быть написан на открытом и общедоступном языке, с другой — должен быть платформеннонезависимым.
Идеальное решение — браузер и JavaScript.
В современном JavaScript есть все необходимые решения: AJAX + фреймвоки, которые убирают все «подводные камни» в различиях между различными браузерами и ОС. Уникальность фреймвоков ещё и в том, что они упрощают программирование оставаясь при этом совершенно открытыми кодами.
Реализация передающей части
Пользователь в окошке браузера вводит данные для передачи (ВД), например, текстовое сообщение, и кодовое слово (КС).
Вначале скрипт определяет общее число групп (например, по 32 символов в каждой), которое и будет равно числу циклов.
Также, скрипт генерирует СКЛ — набор из 32-х случайных шестнадцатиричных чисел.
В каждом цикле, номер которого (НГР) берется из счетчика, сшиванием СКЛ + КС + НГР генерируется хеш-маска.
Затем, используя полученную хеш-маску производится маскировка данных по алгоритму [1].
Данные предварительно преобразуются в их hex-аналоги.
Эти маскированнные данные мы последовательно добавляем в строку (ЗСТР), сразу после СКЛ.
Таким образом, первые 32 символов — это СКЛ, а все последующие — маскированные данные.
ЗСТР мы передаём с помощью AJAX на сервер по http-протоколу.
Реализация принимающей части
Для раскодирования полученных данных пользователь вводит в окошке браузера кодовое слово (КС).
Скрипт отделяет первые 32 символа и считает их СКЛ.
Остальные разбивает на группы и циклически их декодирует.
В каждом цикле генерируется хеш-маска сшиванием СКЛ + КС + НГР и демаскируется по алгоритму [2].
Полученные на выходе символы преобразуются из hex-аналогов в реальные и последовательно добавляются в строку.
Эта строка и будет раскодированными данными, которые будут представлены пользователю.
А что делает сервер?
Его вообще может не быть, а канал между абонентами будет создаваться средствами самой сети.
Если сервер всё-же будет, то в его функции может входить хранение или даже просто трансляция ЗСТР.
Как вариант, он может генерировать случайный кодовые слова, и отправлять их по запросу приёмной и передающей стороне в sms-сообщении.
Отметим, что кодовое слово — это набор символов любой длины.
Также, это может быть полноценный почтовый сервер с некоторыми отличиями. Например, — полное отсутствие СПАМа, т.к. здесь он принципиально невозможен: для связи двух абонентов необходимо только им известное кодовое слово.
Какие фреймвоки использовать?
Для AJAX, например jQuery,
а для получения хеш-маски - Javascript MD5.