2014-06-18
Персональний сайт В'ячеслава Горчіліна
Всі статті
Опис Hash-Mask алгоритму для секретного обміну даними

1. Загальний підхід
Алгоритм заснований на методі маскування і демаскирования даних (ВД) за хеш-масці (ХМС). ХМС — це хеш одержуваний з випадкового ключа (СКЛ), кодового слова (КС) і номера групи (НГР).

Криптостійкість Алгоритму визначається конкретною його реалізацією і повністю залежить від криптостійкості методу хешування для створення ХМС. Наприклад, якщо буде використаний метод MD5, то криптостійкість вийде близько 3.4*1038. Причому недоліки MD5, начебто передачі двох повідомлень з однаковою хеш-сумою, повністю усуваються Алгоритмом. Навіть при однакових вхідних даних отримана на виході Алгоритму зашифрований рядок (ЗСТР), буде кожен раз абсолютно різна.

Для методу хешування SHA-2 (SHA-256/224) криптостійкість Алгоритму зростає до 1077.

ЗСТР може передаватися по відкритих каналах зв'язку і не вимагає додаткових секретних протоколів.

2. Терміни та визначення
СКЛ — складається з набору шістнадцяткових чисел і формується передавальною стороною для кожного повідомлення випадковим чином. Довжина СКЛ залежить від конкретної реалізації Алгоритму і встановлюється тільки виходячи з розумних припущень. Наприклад, якщо далі буде використано MD5 хешування, то СКЛ менше 16-ти символів може позначитися на криптостійкості, а більше 32-х символів — вже недоцільно.

КС — кодове слово, яке відомо лише приймаючої і передавальної стороні. Головна його особливість — воно повинно передаватися по незалежним (іншим) каналами зв'язку. Наприклад, якщо для передачі даних використовується мережа Інтернет, то КС передаємо через GSM-канал.

НГР — номер групи. Дані (ВД) розбиваються на групи по довжині хеш-маски. Наприклад, якщо далі буде використано MD5 хешування, то довжина групи буде дорівнює 32 байтам. Вважаємо, що ВД представлені в шістнадцятковому вигляді, тоді загальне число груп можна отримати розділивши довжину ВД на 32 і округливши отримане число. Першій групі присвоюємо номер «0», другий — «1» і т. д.

3. Опис алгоритму шифрування даних
3.1 Формуємо СКЛ — набір випадкових шістнадцяткових чисел.

3.2 Для першої групи ВД отримуємо хеш склеюючи СКЛ, КС і «0» — номер групи. Маскуємо дані цієї групи методом [1]. Аналогічно, для другої групи отримуємо хеш склеюючи СКЛ, КС і «1», маскуємо дані. І т. д.

3.3 Склеюємо СКЛ і замасковані дані всіх груп в рядок (ЗСТР), яку вже можемо передавати по відкритих каналах зв'язку.

4. Опис алгоритму дешифрування даних
4.1 З отриманої ЗСТР відокремлюємо СКЛ довжина якого відома. Інші дані розбиваємо на групи.

4.2 Для першої групи даних отримуємо хеш склеюючи СКЛ, КС і «0» — номер групи. Демаскируем дані цієї групи методом [2]. Аналогічно, для другої групи отримуємо хеш склеюючи СКЛ, КС і «1», демаскируем дані. І т. д.

4.3 Склеюємо демаскированные дані всіх груп і отримуємо початкові ВД з п. 3.

Реалізація алгоритму | Ще одна реалізація алгоритму

[1] Ми будемо використовувати досить простий і швидкий алгоритм маскування. Він заснований на додаванні двох шестнадцатиразрядных чисел після якого залишається один наймолодший розряд, наприклад: A+5=F C+6=2. В результаті перетворення отримуємо Рядок FA2E9, довжина якої дорівнює довжині ВД. Приклад алгебраїчного перетворення наведено на рис.1, де ВД рівні ABCDE, а ХМС дорівнює 5F61B.

Пример алгебраического преобразования
Рис.1

[2] Всі операції обратны дій у прикладі [1]. Потрібно із значення елемента даних відняти значення елемента ХМС методом доповнення. Тобто якщо перше число менше іншого, то до одержуваної різниці додається число, відповідне системі числення (наприклад для шістнадцятковій системи числення — це 16).

Пример обратного алгебраического преобразования
Рис.2

Горчилин В'ячеслав, 2014 р.
* Передрук статті або реалізація алгоритму можливі за умови встановлення посилання на сайт і дотриманням авторських прав

« Назад
2009-2017 © Vyacheslav Gorchilin