1

Тема: Алгоритм шифрування QKGV.

Виставляю свою розробку QKGV.
Симетричний блочний алгоритм. (Хоча не зовсім симетричний, є деякі відмінності між шифруванням і розшифруванням)
Сучасний варіант одноразового блокнота.
Написано на с++ з використанням Qt.

Для роботи потрібно мати плагіни:
QKGVKey - файл з попередньо записаними реально випадковими даними (не з генератора псевдовипадкових чисел).
QKGVLib - набір формул виду "double fx(double)". Необхідна умова - неперервність на всій області визначення.
QKGVHash - хеш функція. Від розміру дайджеста залежить максимальний розмір даних, що можуть опрацьовуватися. 128-бітний MD5 дозволяє опрацьовувати до 4 Гб. Можна використовувати як уже написаний, та і свій авторський.
Ну і пароль само собою.
Плагіни зберігаються в обох сторін і використовуються багаторазово. Передаються лише зашифровані дані.
Передавальна сторона повинна також мати генератор випадкових чисел (його параметри для приймаючої сторони абсолютно неважливі). Для 99,9% користувачів достатньо буде дефолтьної реалізації псевдовипадкового генератора.
Шифротекст в кожному сеансі буде абсолютно іншим, навіть при аналогічному шифруванні (всі вхідні параметри і дані одинакові).
Власне ключ, який і накладається на відкритий текст створюється по ходу процесу і ніде не зберігається.
Реалізовано в 2 варіантах: самостійної exe консольки і dll'ки.
http://crprogram.16mb.com/download/file.php?id=124

Post's attachments

Source code of QKGV.rar 334.09 kb, 170 downloads since 2015-03-10 

Qt 5.4.0
Подякували: 0xDADA11C7, leofun01, Chemist-i, olmovc4

2

Re: Алгоритм шифрування QKGV.

По коду буде важкувато розібратись, ще й у рарі, який не в усіх є. Може б ви виклали кілька діаграм з поясненням як працює? Дякую.

ukrainian.stackexchange.com - це питання-відповіді з української мови

3

Re: Алгоритм шифрування QKGV.

Срачик на крипто-форумі

Говорила баба діду: «Я поїду к Білодіду, Ізучу двомовну мову І вернусь обратно знову». А дід бабі: «Не *изди, К Білодіду нєт їзди, — Туди не ходять поїзди»

4

Re: Алгоритм шифрування QKGV.

Але я не бачу де перевага вашого алгоритму над XTEA, наприклад? В закритості (частини) алгоритму? Цього нізя робить, самі знаєте. У випадковому ключі? ХТЕА не гірше з цими даними впорається.

Говорила баба діду: «Я поїду к Білодіду, Ізучу двомовну мову І вернусь обратно знову». А дід бабі: «Не *изди, К Білодіду нєт їзди, — Туди не ходять поїзди»
Подякували: leofun011

5 Востаннє редагувалося yarko (16.03.2015 12:02:28)

Re: Алгоритм шифрування QKGV.

Yola написав:

ще й у рарі, який не в усіх є.

:o

Незмінну частину алгоритму пише автор, вона відома всім. Змінну частину (в архіві це реалізовано у вигляді QKGVKey1, QKGVLib1, QKGVMD5) пише кінцевий користувач, вона відома лише йому, та приятелю, з яким ведеться переписка. Для кожного приятеля змінна частина може бути своя.

Назва розшифровується як "Вернам з генерованим ключем". В алгоритмі Вернама ключ відомий до моменту шифрування/дешифрування і повинен передаватися адресату. В мене до моменту шифрування обом сторонам відома змінна, незмінна частина і пароль само собою. Ключ формується по ходу процесу і не зберігається.

В XTEA який буде шифротекст при декількох аналогічних сеансах (аналогічні всі вхідні дані)?
В мене шифротекст завжди зовсім інший. Це досягається завдяки додаванню на початок і в кінець допоміжних даних, випадковість яких залежить від характеристик генератора випадкових чисел (вбудованого дефолтного або якогось зовнішнього).

Qt 5.4.0

6 Востаннє редагувалося yarko (16.03.2015 13:28:28)

Re: Алгоритм шифрування QKGV.

Робочий приклад в архіві.

Можливо теоретично він і не виглядає аж таким стійким, але практично дешифрувати його, не знаючи змінної частини не вийде.
Погоджуюсь, що алгоритм непридатний в умовах, коли криптоаналітику достатньо просто отримати доступ до комп'ютера "жертви" і банально вкрасти. Але в подібних випадках ніщо не заважає взяти "жертву" за яйця і витягнути ключ більш традиційного "теоретично стійкішого" алгоритму.  :)

Post's attachments

qkgv_example2.rar 638.82 kb, 176 downloads since 2015-03-16 

Qt 5.4.0

7

Re: Алгоритм шифрування QKGV.

Змінну частину (в архіві це реалізовано у вигляді QKGVKey1, QKGVLib1, QKGVMD5) пише кінцевий користувач, вона відома лише йому, та приятелю, з яким ведеться переписка. Для кожного приятеля змінна частина може бути своя.

Я гадаю ви самі розумієте, що це є частиною ключа, яка керує вибором алгоритму. Від того, що ви реалізуєте це в якості констант і додасте байт на початку ключа, який визначатиме алгоритм чи перепишете геш функцію на папірець і надішлете поштовим голубом, нічого не зміниться. Це все одно залишиться частиною ключа, який обирає частину алгоритма, що необхідно передати надійним каналом інформації.

В мене шифротекст завжди зовсім інший. Це досягається завдяки додаванню на початок і в кінець допоміжних даних, випадковість яких залежить від характеристик генератора випадкових чисел

Се сіллю зветься
В будь-якому разі я вдячний вам за підняття теми криптографії на цьому форумі.

Говорила баба діду: «Я поїду к Білодіду, Ізучу двомовну мову І вернусь обратно знову». А дід бабі: «Не *изди, К Білодіду нєт їзди, — Туди не ходять поїзди»

8 Востаннє редагувалося yarko (16.03.2015 13:37:02)

Re: Алгоритм шифрування QKGV.

Якщо з точки зору теорії, то так - змінна частина виглядає як багаторазовий ключ, який не можливо просто запам'ятати, а необхідно зберігати на якомусь носії.

Qt 5.4.0

9

Re: Алгоритм шифрування QKGV.

Якщо з точки зору теорії, то так - змінна частина виглядає як багаторазовий ключ, який не можливо просто запам'ятати, а необхідно зберігати на якомусь носії.

Здається це називається станом скінченого автомату а як це ви реалізуєте на практиці -- створите криптографічний мережевий протокол з "привітанням", в якому ви передаваимете захищеним каналом алгоритм (як це робить HTTPS) чи просто на флешці зберігатимете ключі для криптосесії значення не має.

Говорила баба діду: «Я поїду к Білодіду, Ізучу двомовну мову І вернусь обратно знову». А дід бабі: «Не *изди, К Білодіду нєт їзди, — Туди не ходять поїзди»