Алгоритм синусоидального шифрования Yozhix-6969 Автор: Артемьев Эдуард Иосифович Посвящается мировым спецслужбам :) КРАТКОЕ ОПИСАНИЕ ПРОГРАММЫ YOZHIX (ДЛЯ ВСЕХ ПОЛЬЗОВАТЕЛЕЙ) Чтобы хоть как-то обезопасить свою переписку по открытым каналам сети Интернет, её надо хорошо шифровать. Программы для шифрования часто бывают недоступны сторонам, ведущим переписку, в таком случае очень может помочь программа Yozhix. http://yozhix.narod.ru/ Yozhix - это браузерная программа, предназначенная для шифрования сообщений прямо в браузере пользователя. Т.е., имея любой популярный интернет-браузер (FireFox, Chrome, Opera, Netscape Navigator, Internet Explorer и др.), Вы можете шифровать свои сообщения и после размещать их на любом открытом сетевом сервисе. Теперь их сможет прочитать только адресат, знающий ключевое слово (пароль), а не агенты матрицы и админы серверов. ВНИМАНИЕ! Yozhix - это алгоритм шифрования с закрытым ключом! Это значит, что ключ ни в коем случае не должен пересылаться по сети, чтоб не стать известным посторонним лицам. Ключ можно заранее шёпотом оговорить при личной встрече или использовать в качестве ключа какие-то секретные факты. Например, "пятое слово из нашего любимого стихотворения", но ни в коем случае "номер моего дома" или "твоя фамилия" - это слишком очевидные ключи. Многие сетевые сервисы не позволяют размещать слишком длинные наборы букв, поэтому в программе предусмотрена возможность разбивки шифровок на короткие строки. Инструмент "Разбить зашифрованный текст на строки" Вы можете найти в боковом выпадающем меню. И ещё, постарайтесь не переусердствовать с излишней конспирацией. Разговоры о погоде или новых веяниях в мире моды вполне можно вести открытым текстом. Yozhix создан для того чтобы обезопасить передачу конфиденциальных данных или скрыть любовную переписку. ;) ПОДРОБНОЕ ОПИСАНИЕ АЛГОРИТМА СИНУСОИДАЛЬНОГО ШИФРОВАНИЯ YOZHIX-6969 (ДЛЯ СПЕЦИАЛИСТОВ) Yozhix-6969 - симметричный метод шифрования, заключающийся в увеличении UTF-кодов шифруемых символов на величины соответствующих значений гармонической функции. Для описания метода шифрования введём обозначения. M — количество символов в шифруемом сообщении. 0, 1, ... , N — нумерация символов в сообщении. Здесь N=M-1. p0, p1, ... , pN — это коды символов исходного текста. r0, r1, ... , rN — это изменённые коды символов, которые будут записаны в шифровке. Вычисление изменённых кодов происходит по формулам: r0=(p0 + round(abs(f(0)))%65536) % 65536, r1=(p1 + round(abs(f(1)))%65536) % 65536, ... rN=(pN + round(abs(f(N)))%65536) % 65536. Здесь "%" — операция арифметическая операция вычисления остатка от целочисленного деления, round(x) — функция вычисления округлённого значения x, abs(x) — вычисление модуля x. Функцию f(x) рассмотрим подробнее, т.к. она является нестандартной жемчужиной всего алгоритма. Функция f(x) — это "высокочастотная" гармоническая функция, состояшая из 8 волновых составляющих: f(x)=A0*sin(B0*x+C0)+A1*sin(B1*x+C1)+...+A7*sin(B7*x+C7). Коэффициенты Ai, Bi, Ci функции f(x) задают её сложность и секретность для оппонента, пытающегося разгадать шифровку. Рассмотрим, каковы значения этих коэффициентов. Bi — частотные коэффициенты. Эти коэфиициенты не являются секретными. В качестве частотных коэффициентов я взял первые 8 простых чисел, которые содержат в своей записи цифровую последовательность "6969" (отсюда и название алгоритма "Yozhix-6969"). Вот эти коэффициенты: B0=69691, B1=69697, B2=86969, B3=116969, B4=169691, B5=169693, B6=296969, B7=356969. Ai — амплитудные коэффициенты. Эти коэффициенты являются секретными, т.к. их значения получаются из ключа (секретного слова). Вкратце о вычислении Ai: 1) Вычисляем MD5-образ ключа. Это 16-байтовая последовательность. 2) Полученный MD5 разбиваем на 8 двубайтовых целых чисел. Это и будут коэффициенты Ai. Таким образом коэффициенты Ai являются целыми числами, изменяющимися в диапазоне от 0 до 65535. Пример вычисления Ai. Пусть ключом является цифровая последовательность "1234". MD5 ключа: 81dc9bdb52d04dc20036dbd8313ed055 Разбиваем на 2-байтовые целые числа: 81dc --> A0=33244 9bdb --> A1=39899 52d0 --> A2=21200 4dc2 --> A3=19906 0036 --> A4=54 dbd8 --> A5=56280 313e --> A6=12606 d055 --> A7=53333 Ci — фазовые коэффициенты. Эти коэффициенты не являются секретными. Они вычисляются аналогично Ai, но на основе MD5-образа исходного текста. К слову, MD5-код исходного текста, открыто записывается в шифровку. Это необходимо для обратной расшифровки и проверки её правильности. Рассмотрим пример формирования шифрованного сообщения. Ключ: "1234" Исходный текст: "Мама мыла раму" (14 символов) Программа создаёт шифровку: 058612fb51737ad91f285e746d1ae5b9 ea3460a778af882f530679621096a459 5f301aa023951aae2385dd7e Рассмотрим шифровку подробнее: 058612fb51737ad91f285e746d1ae5b9 - MD5-образ текста "Мама мыла раму" ea34 - r0 (шестнадцатеричная запись) 60a7 - r1 78af - r2 882f - r3 5306 - r4 7962 - r5 1096 - r6 a459 - r7 5f30 - r8 1aa0 - r9 2395 - r10 1aae - r11 2385 - r12 dd7e - r13 Как видим, первые 32 символа шифровки являются MD5-кодом исходного текста. Остальная часть шифровки отводится под 4-значные 16-теричные записи изменённых кодов. Остаётся добавить, что процесс шифрования обратим. Расшифровка производится следующим обратным преобразованием: p0=(r0 + 65536 -round(abs(f(0)))%65536) % 65536, p1=(r1 + 65536 -round(abs(f(1)))%65536) % 65536, ... pN=(rN + 65536 -round(abs(f(N)))%65536) % 65536. (c)Артемьев Э.И.,2013