Крипто-форум crprogram.16mb.com

Програмування на Object Pascal, Lazarus, криптографія, криптоаналіз, шифри, вихідні коди, вирішення задач, приклади програм

Часовий пояс: UTC десь + 2 години




Розпочати нову тему Відповісти  [ 53 повідомлень ]  На сторінку Попередню.  1, 2, 3  Наст.
Автор Повідомлення
 Заголовок повідомлення: Re: KGV
СообщениеДодано: 11 бер 2015, 16:44 
Не в мережі

Повідомлень: 6
З телефону не відкривається rar-файл. :(


Повернутися наверх
  
 
 Заголовок повідомлення: Re: KGV
СообщениеДодано: 11 бер 2015, 18:53 
Не в мережі

Повідомлень: 282
Для тих хто не може завантажити файл:

Код:
текст "Test file for QKGV."


шифртекст №1:
Код:
ыNо_ХНд|atюн_«cІ’рёГю?шсАDжv1
Њґwя"_†/Q`»я#›Т¤е% .‰НЩ<VвiЮ   |’}й…0ЦБ4ыЅsїoчЧ]Ие&R»*ИЯћk6gв AлiЗ6ф

шифртекст №2:
Код:
Вt%м)В(І__—_t+cЙcА+Ыaґ2_t__gЋR‹С.qjsЃж^оi.__yO:GЙ]ЎuM6*ЯБЫ_€:ПЄwЕnRъ8%5і1]Ь‰_M°c_Ћ†Ю1_їеѓы(X_HIR

шифртекст №3:
Код:
5dЎgьМЉЁс {_ЬѕІ_!ёГю?шсФЬѕ_2_Лъсt_QМZА|*µ^¦§я=eh†ОО<aЖ\Ёv=—Яј&иХ·ѓѕJ>_&_fћQG5¦K;Сnk6gв AлiЗ6ф

шифртекст №4:
Код:
etћРИћ`Ѓб“фТћьvbрёЧм_ии9ђоЈ_A—ОУ7w]ЃгcЩ^¶D_гбр>rh±кыJ‡   Ы
IE_"п„_›uwГ%\YJ_СТ‹'н

шифртекст №5:
Код:
4№,ШЉTf•Ѕу¬Тћьvbр¬Ђж_X_шГњµ_N
се__:irрН*µ^¦§я=eh†ОО<aЖ\Ёv=–3Ў_,_јTЄѓ
МІЈmџJ_B®

(деякі не друковані знаки можуть бути втрачені)

Код:
Значення змінних symbless, symbgre, symbslash, tagkgv, tagsize, tagdata унікальні для кожного сеансу шифрування.
Перші три мають фіксований розмір 1 байт з міняють лише значення. Інші три міняють свій розмір від 2 до 12 і також значення.
Залежать лише від параметрів генератора випадкових чисел (дефолтного псевдовипадкового, вбудованого в комп'ютер або якогось зовнішнього - неважливо який використано).

symbless   = 8c
symbgre      = f0
symbslash   = 1a
tagkgv  7byte   = 6e 01 bf 1c b6 22 0e
tagsize 6byte   = 80 41 da 35 9f c4
tagdata 8byte   = 02 53 a9 41 cd c5 2f 0e
fileSize = 20
resultSize = 85
.kgv size = 96
blockSize = 16 - залежить лише від розміру відкритого тексту
subBlockCount = 1
кількість блоків для даного сеансу = 6

відкритий текст (наприклад 1.txt) //вже з доданими псевдовипадковими даними
<               tagkgv  >  <           tagsize      "текстове" представлення
8c 6e 01 bf 1c b6 22 0e f0 8c 80 41 da 35 9f c4      16кове представлення по 16 байт
>                  20byte  <  /          tagsi
f0 00 00 00 00 00 00 00 14 8c 1a 80 41 da 35 9f
ze  >  <                 tagdata  >  T  e  s  t
c4 f0 8c 02 53 a9 41 cd c5 2f 0e f0 54 65 73 74
''  f  i  l  e ''  f  o  r ''  Q  K  G  V  . \n
20 66 69 6c 65 20 66 6f 72 20 51 4b 47 56 2e 0a
<  /                 tagdata  >  <  /
8c 1a 02 53 a9 41 cd c5 2f 0e f0 8c 1a 6e 01 bf
     tagkgv  > "хвіст" з нулів до кінця блоку
1c b6 22 0e f0 00 00 00 00 00 00 00 00 00 00 00

шифротекст
fb 4e ee 07 d5 cd e4 7c 61 74 fe ed 08 ab 63 b2
92 f0 b8 c3 fe 3f f8 f1 c0 44 e6 76 31 0b 8c b4
77 ff 22 07 86 2f 51 60 bb ff 23 9b d2 a4 e5 25
20 2e 89 cd d9 3c 56 e2 69 de 09 7c 92 7d e9 85
30 d6 c1 34 fb bd 73 bf 6f f7 d7 5d c8 e5 26 52
bb 2a c8 df 9e 6b 36 67 e2 20 41 eb 69 c7 36 f4

i = 0 перший блок
8c 6e 01 bf 1c b6 22 0e f0 8c 80 41 da 35 9f c4 - block (до виклику encrypt містить кусок відкритого тексту)
a6 3a f6 f0 d7 5b 86 8f 73 8d 99 e6 d3 24 dd 8f 69 cb 9b 63 1d 98 46 70 93 f4 4d b7 f6 b2 25 1c - tables
7b ce 16 ff 1b 61 1e c1 1c a3 cf 41 cd 29 1a fc - text
fb 4e ee 07 d5 cd e4 7c 61 74 fe ed 08 ab 63 b2 - block (після виклику encrypt містить кусок шифротексту)

i = 1 другий
f0 00 00 00 00 00 00 00 14 8c 1a 80 41 da 35 9f
1a 04 69 bb 69 68 52 8d 5e 9e ba 9b 55 42 65 83 59 2a 52 4c 9b df d5 bc 15 03 d1 01 66 f1 b4 f7
e4 f5 a1 c0 dc 7a 0a 56 dc 6e e3 61 89 00 36 76
92 f0 b8 c3 fe 3f f8 f1 c0 44 e6 76 31 0b 8c b4

i = 2 третій
c4 f0 8c 02 53 a9 41 cd c5 2f 0e f0 54 65 73 74
c6 05 00 9d ae d4 f0 29 9a e9 82 d6 0b ce 66 79 e9 a4 f2 0b 0c 6d 14 ce 62 14 6c ad 4a ae bd 3d
1d ed 87 dc 9d 88 4e 08 fe 19 56 51 07 e2 54 26
77 ff 22 07 86 2f 51 60 bb ff 23 9b d2 a4 e5 25

i = 3 четвертий
20 66 69 6c 65 20 66 6f 72 20 51 4b 47 56 2e 0a
a0 00 a8 4c 67 08 76 09 c5 62 ae 6b 05 b0 4e ae c3 65 d6 af 11 ca 8e fa 91 d1 ee 8e e8 15 4b ba
1f 4e 79 61 5c 35 14 af a9 1d f0 5b 8c 89 40 5b
20 2e 89 cd d9 3c 56 e2 69 de 09 7c 92 7d e9 85

i = 4 п'ятий
8c 1a 02 53 a9 41 cd c5 2f 0e f0 8c 1a 6e 01 bf
4a 60 50 5e 6c a7 1e 9d a3 0a 65 5c e7 d6 2d 7b 12 08 6a c9 e4 de 63 2e 59 06 b8 7d c4 2e 6b 5b
3e f6 e2 c0 42 5e 22 df 01 70 a9 cb 86 c5 cd f4
30 d6 c1 34 fb bd 73 bf 6f f7 d7 5d c8 e5 26 52

i = 5 шостий
1c b6 22 0e f0 00 00 00 00 00 00 00 00 00 00 00
cf 9e a3 7c 97 67 ee 02 e7 64 2c 77 87 24 df b5 f8 28 af 8c 9c e1 56 7f dc c1 6a 19 09 34 57 eb
51 a2 9b 75 f4 de 24 91 23 12 28 cc c2 c2 78 ad
bb 2a c8 df 9e 6b 36 67 e2 20 41 eb 69 c7 36 f4



Повернутися наверх
  
 
 Заголовок повідомлення: Re: KGV
СообщениеДодано: 12 бер 2015, 08:45 
Не в мережі

Повідомлень: 24
Також прошу зауважити, що відкритого тексту у "вільному вигляді" може і не бути. Оскільки алгоритм може читати/писати в потік, то є можливість додати його в якості посередника при збереженні. Тобто текстовий процесор виконує завдання "записати на диск", але насправді він написує в потік, який зв'язаний з файлом. Вбудований в такий текстовий процесор QKGV приймає цей потік, шифрує і записує на диск. При відкритті навпаки.


Повернутися наверх
  
 
 Заголовок повідомлення: Re: KGV
СообщениеДодано: 12 бер 2015, 10:54 
Не в мережі

Повідомлень: 24
Схема ітерації як куркою нашкрябана, але можливо допоможе.
Зображення
Значення T[] i K[] для наступної ітерації обчислюються після виклику encrypt поточної ітерації.


p.s. Що за...? Навіщо заборонено додавати *.png? Це ж звичайна картинка (лише без втрат якості як jpg).


Вкладення:
schema.jpg [81.14 KiB]
Скачали: 0
Повернутися наверх
  
 
 Заголовок повідомлення: Re: KGV
СообщениеДодано: 12 бер 2015, 11:00 
Не в мережі

Повідомлень: 282
У прикладі вище чомусь відсутній файл з випадковими числами.

п.с.:
yarko писал(а):
p.s. Що за...? Навіщо заборонено додавати *.png? Це ж звичайна картинка (лише без втрат якості як jpg).

Адмін з'явиться - виправить. Дякую за зауваження.


Повернутися наверх
  
 
 Заголовок повідомлення: QKGV
СообщениеДодано: 12 бер 2015, 12:01 
Не в мережі

Повідомлень: 24
Файл з випадковими даними названий на малюнку як QKGVKey.
Не показано QKGVHash(хеш) i QKGVLib(набір формул), бо я поки не уявляю, як це показати :(


Повернутися наверх
  
 
 Заголовок повідомлення: Re: KGV
СообщениеДодано: 12 бер 2015, 18:45 
Не в мережі

Повідомлень: 282
Судячи по
Код:
i = 0 перший блок
8c 6e 01 bf 1c b6 22 0e f0 8c 80 41 da 35 9f c4 - block (до виклику encrypt містить кусок відкритого тексту)
a6 3a f6 f0 d7 5b 86 8f 73 8d 99 e6 d3 24 dd 8f 69 cb 9b 63 1d 98 46 70 93 f4 4d b7 f6 b2 25 1c - tables
7b ce 16 ff 1b 61 1e c1 1c a3 cf 41 cd 29 1a fc - text
fb 4e ee 07 d5 cd e4 7c 61 74 fe ed 08 ab 63 b2 - block (після виклику encrypt містить кусок шифротексту)


та схеми,
та з умови що для аналізу відомий файл QKGVKey:

з файлу QKGVKey, дані якого у нас є, беремо tables і text, а також "block (після виклику encrypt містить кусок шифротексту)", і знаходимо відкритий текст "block (до виклику encrypt містить кусок відкритого тексту)".

У чому тоді полягає захист?(якщо ключ, який має вводити користувач з клавіатури, ви не використовуюєте)
У невідомому алгоритму вибору tables і text з QKGVKey?


Повернутися наверх
  
 
 Заголовок повідомлення: Re: KGV
СообщениеДодано: 13 бер 2015, 09:24 
Не в мережі

Повідомлень: 24
Olgerd писал(а):
з файлу QKGVKey, дані якого у нас є, , а також "block (після виклику encrypt містить кусок шифротексту)", і знаходимо відкритий текст "block (до виклику encrypt містить кусок відкритого тексту)".
У чому тоді полягає захист?(якщо ключ, який має вводити користувач з клавіатури, ви не використовуюєте)
У невідомому алгоритму вибору tables і text з QKGVKey?

Ви явно не читали сорці. І малюнок схоже не зовсім зрозуміли.

Так, tables і text містять частину даних з припустимо відомого QKGVKey.
Але якщо ви хочете з 80к файлу витягнути чотири суцільниз куски по 32байти (по малюнку), то скільки різних варіантів ви отримаєте? В мене вийшло 79968 в четвертому степені. Плюс те саме для змінної text (4 куски по 16 байт). А якщо QKGVKey розміром так 500к? Тоді це буде приблизно 10^22 варіантів (і це лише для змінної tables)

В цього алгоритму є незмінна частина (реалізовано в файлі qkgv.cpp) і змінна частина (три зовнішні плагіни). Для криптоаналітика відома лише незмінна частина, бо змінну частину створює не автор алгоритму, а кінцеві користувачі на свій розсуд. Для того, щоб криптоаналітик міг отримати весь алгоритм повністю - йому доведеться отримувати доступ до комп'ютера однієї з сторін, листування яких він хоче зламати, і викрадати ці самі три зовнішні плагіни (QKGVKey, QKGVLib, QKGVHash).
Але у випадку банальної непомітної крадіжки навіть Вернам безсилий, чи не так? ;)
Чи не простіше стукнути в аську і запитати порядково незрозумілі моменти, якщо с++ така складна мова.
Бо тут вже друга сторінка скоро закінчиться...


Повернутися наверх
  
 
 Заголовок повідомлення: Re: KGV
СообщениеДодано: 13 бер 2015, 18:04 
Не в мережі

Повідомлень: 282
Отже ми з'ясували що криптостійкість вашого алгоритму ґрунтується на алгоритму вибору масивів tables і text з файла розміром скажімо 80кБ.

Це вже непогано.

Далі залишилось з'ясувати: який алгоритм вибору?

Який алгоритм вибору 8 шматків по 32 байта з файлу 80кБ?

Краще так:
Яким чином ви вибираєте перший шматок 32 байт з файла 80кБ?


Повернутися наверх
  
 
 Заголовок повідомлення: Re: KGV
СообщениеДодано: 16 бер 2015, 09:49 
Не в мережі

Повідомлень: 24
Для першої ітерації:
Хеш(<пароль>). У випадку MD5 отримаємо 32шістнадцяткових числа, наприклад 3f7dc902a11...
функція(номер в наборі=3)(аргумент=f). Результат зберегти як T[0]. Далі округлити до цілого. Взяти модуль. Поділити на дозмір QKGVKey. Остача від ділення це і буде позиція, звідки брати шматок в 32 байти. Для T[1] номер функції в наборі буде 7, аргумент - d. Відповідно для T[2] номер в наборі с, аргумент 9...

Для K[] так само, лише Хеш(<пароль><пароль>).
Отримані остачі - номери позицій для шматків по 16 байт.

Для наступних ітерацій:
Хеш(<нешифрований блок відкритого тексту>). Результат напр. 56fac83bd...
T[0]=функція(номер в наборі 5)(аргумент=T[0]). Округлити, модуль, остача.
T[1]=функція(номер в наборі f)(аргумент=T[1] ). Округлити, модуль, остача.
....
Хеш(<шифрований блок>). Подібно обчислюємо K[]


Повернутися наверх
  
 
 Заголовок повідомлення: Re: KGV
СообщениеДодано: 16 бер 2015, 10:22 
Не в мережі

Повідомлень: 6
Які функціі ви пропонуєте для набору? Синус, косинус, х^2? Чи інтеграли?


Повернутися наверх
  
 
 Заголовок повідомлення: Re: KGV
СообщениеДодано: 16 бер 2015, 10:23 
Не в мережі

Повідомлень: 6
Напишіть приклад набору функцій , які ви ввадаєте найбільш доцільними для вашого алгоритму.


Повернутися наверх
  
 
 Заголовок повідомлення: Re: KGV
СообщениеДодано: 16 бер 2015, 10:47 
Не в мережі

Повідомлень: 282
Якщо пофантазувати:
Код:
   №фун.   sin(x)   cos(x)   x^2   x^3   x*8   x+10   x/2   x-123

      0   1   2   3   4   5   6   7

0   00   0   1   0   0   0   10   0   123
1   01   1   1   1   1   8   11   1   122
2   02   1   0   4   8   16   12   1   121
3   03   0   1   9   27   24   13   2   120
4   04   1   1   16   64   32   14   2   119
5   05   1   0   25   125   40   15   3   118
6   06   0   1   36   216   48   16   3   117
7   07   1   1   49   343   56   17   4   116
8   08   1   0   64   512   64   18   4   115
9   09   0   1   81   729   72   19   5   114
A   10   1   1   100   1000   80   20   5   113
B   11   1   0   121   1331   88   21   6   112
C   12   1   1   144   1728   96   22   6   111
D   13   0   1   169   2197   104   23   7   110
E   14   1   0   196   2744   112   24   7   109
F   15   1   1   225   3375   120   25   8   108


Я правий?
Чи функції мають бути складніші?


Повернутися наверх
  
 
 Заголовок повідомлення: Re: KGV
СообщениеДодано: 16 бер 2015, 11:03 
Не в мережі

Повідомлень: 282
Фантазуємо далі:

3f 7d c9 02 a1
(номер в наборі=3)(аргумент=f)
(номер в наборі=7)(аргумент=d)

81920 - розмір QKGVKey

Код:
      [=(x^2)*9258]    [=((x^2)*9258) mod (81920)]
   №фун.   3   
0   0   0   0
1   1   9258   9258
2   2   37032   37032
3   3   83322   1402
4   4   148128   66208
5   5   231450   67610
6   6   333288   5608
7   7   453642   44042
8   8   592512   19072
9   9   749898   12618
A   10   925800   24680
B   11   1120218   55258
C   12   1333152   22432
D   13   1564602   8122
E   14   1814568   12328
F   15   2083050   35050


Код:
      [=(x^3)*8564]    [=  ((x^3)*8564) mod (81920)]
   №фун.   7   
0   0   0   0
1   1   8564   8564
2   2   68512   68512
3   3   231228   67388
4   4   548096   56576
5   5   1070500   5540
6   6   1849824   47584
7   7   2937452   70252
8   8   4384768   43008
9   9   6243156   17236
A   10   8564000   44320
B   11   11398684   11804
C   12   14798592   52992
D   13   18815108   55428
E   14   23499616   70496
F   15   28903500   67660



(x^2)*9258 - функція №3, число 9258 - вибрав перше що прийшло на думку.
(x^3)*8564 - функція №7, число 8564 -аналогічно.


Повернутися наверх
  
 
 Заголовок повідомлення: Re: KGV
СообщениеДодано: 16 бер 2015, 12:48 
Не в мережі

Повідомлень: 24
Ні, простого косинуса недостатньо :)
В прикладі я використовую як функції суму/різницю 5-ти косинусів і/або сінусів з різними частотами, амплітудами і початковими фазами.
Тобто графік типової функції виглядає якось так
Зображення
Звичайно, за це доводиться платити велику ціну в продуктивності.


Повернутися наверх
  
 
 Заголовок повідомлення: Re: KGV
СообщениеДодано: 16 бер 2015, 12:56 
Не в мережі

Повідомлень: 282
Графік який ви показали - це білий шум.
Як поводяться ваші функції?

Напишіть приклад хоча би однієї функції з набору.
Чи це секрет?


Повернутися наверх
  
 
 Заголовок повідомлення: Re: KGV
СообщениеДодано: 16 бер 2015, 13:20 
Не в мережі

Повідомлень: 24
У викладених сорціях є.
Наприклад така.
A0 = 12 << 24; //201326592 в 10вій системі
Зображення
Якщо побудувати графік цієї функції, то для "ненабитого" ока він буде мало чим відрізнятись від графіку білого шуму


Вкладення:
img4.JPG [11.2 KiB]
Скачали: 0
Повернутися наверх
  
 
 Заголовок повідомлення: Re: KGV
СообщениеДодано: 16 бер 2015, 18:48 
Не в мережі

Повідомлень: 282
Нарешті спільними зусиллями отримали опис який можна більш менш аналізувати.

З опису залишу тут "останній штрих":
Цитата:
Отже всі вхідні параметри задано, розглянемо процес шифрування:
До файлу додається невелика кількість псевдовипадкових даних (щоб шифротекст був зовсім іншим для кожного сеансу). За таким принципом: <kgv><size>ssssssss</size><data>ddddd</data></kgv>. Вбудований на комп’ютері генератор випадкових чисел ініціалізується в поточному варіанті від часу.
– ssssssss – 8 байт для запису розміру даних (наприклад 20 байт буде записано як 00000014).
– ddddd – власне дані в 16му представлені (наприклад речення «Test file of QKGV.» буде записане як 546573742066696c6520666f7220514b47562e. по 2 16ві символи на кожну букву).
– символи «<», «>», «/» заміняються на інші (псевдовипадкові символи).
– теги «kgv», «size», «data» також заміняються на набір псевдовипадкових символів, довжиною [2, 11]. Виходить щось подібне до kgv=36971ef1981812067811, size=87ba, data=759a4a2354.


Буду намагатись на днях провести аналіз.

Сьогодні і завтра, на жаль я зайнятий, а от з середи 18 березня почну.

Якщо у когось є ідеї, думки, зауваження, побажання - пишіть. Все може допомогти.

p.s.:
щодо кількості повідомлень в темі - ліміту не існує. Головне знайти істину.


Повернутися наверх
  
 
 Заголовок повідомлення: Re: KGV
СообщениеДодано: 17 бер 2015, 08:51 
Не в мережі

Повідомлень: 24
Погоджуюсь, що алгоритм зовсім не придатний для використання в умовах, коли криптоаналітику легко отримати доступ до комп'ютера або болючих місць одного з учасників листування.
Якщо в когось не скомпілювались сорці -
http://replace.org.ua/misc.php?action=pun_attachment&item=784&download=1
Для запуску необхідні також dll самої бібліотеки Qt (надто великі, щоб додати до повідомлення).


Повернутися наверх
  
 
 Заголовок повідомлення: Re: KGV
СообщениеДодано: 23 бер 2015, 19:04 
Не в мережі

Повідомлень: 282
Життя вносить свої корективи у плани.
Не було часу дивитись алгоритм.
Ось нарешті переглянув.

І так, для початку вхідні дані

Відкритийтий текст. Де х-псевдовипадкові числа.
xxxxxxxxxx00000014xxxxxxxxxxxxxTest file of QKGV.xxxxxxxxxxxxx

Згадаємо опис:
Цитата:
Хеш(<пароль>). У випадку MD5 отримаємо 32шістнадцяткових числа, наприклад 3f7dc902a11...
функція(номер в наборі=3)(аргумент=f). Результат зберегти як T[0]. Далі округлити до цілого. Взяти модуль. Поділити на розмір QKGVKey. Остача від ділення це і буде позиція, звідки брати шматок в 32 байти. Для T[1] номер функції в наборі буде 7, аргумент - d. Відповідно для T[2] номер в наборі с, аргумент 9...

Для K[] так само, лише Хеш(<пароль><пароль>).
Отримані остачі - номери позицій для шматків по 16 байт.

Для наступних ітерацій:
Хеш(<нешифрований блок відкритого тексту>). Результат напр. 56fac83bd...
T[0]=функція(номер в наборі 5)(аргумент=T[0]). Округлити, модуль, остача.
T[1]=функція(номер в наборі f)(аргумент=T[1] ). Округлити, модуль, остача.
....
Хеш(<шифрований блок>). Подібно обчислюємо K[]


Цитата:
а) Копіюємо 4 куски по 32 байти з QKGVKey, починаючи з позицій "модуль від округлити T[j] до цілого", j = від 0 до subBlockCount-1 включно. Отримаємо змінну tables довжиною 128 байт.
Копіюємо інші 4 куски по 16 байт з QKGVKey, починаючи з позицій "модуль від округлити K[j] до цілого", j = від 0 до subBlockCount-1 включно. Отримаємо змінну text довжиною 64 байт.


Якщо перефразувати:

Є хеш("пароль") та хеш("парольпароль") з них
за допомогою супер-пупер функцій вибираємо блоки по 32 байти з файла псевдовипадкових числел QKGVKey

Отримуємо
Цитата:
Отримаємо змінну tables довжиною 128 байт. випадкова
тримаємо змінну text довжиною 64 байт. Випадкова


При чому, ці змінні будуть одні і ті ж, для відповідного пароля.

Йдемо далі,
Цитата:
– шифруємо блок. Лічильник «k» від 0 до blockSize*8-1. Беремо по k-тий біт із змінних tables («v») і text («t»), а також 2 біти, починаючи з k*2 із змінної tables («op»). Отримуємо щось типу v=0, t=1, op=2. Результатом буде
op=0 => v;
op=1 => not(v);
op=2 => v xor t;
op=3 => not(v xor t).


Таким чином на виході отримуємо блок шифротексту.


Розберемо більш детально

Припустімо у нас
tables довжиною 128 байт = 0313020320123…
text довжиною 64 байт = 10100110101001001001….

Блок відкритого тексту = 0101010101010111

тоді

op=0 v=0, біт шифртексту = 0
op=3 v=1, not(1 xor 1), біт шифртексту = 1
op=1 v=0, not(0), біт шифртексту = 1

тобто в результаті 011…….


Як бачимо
tables довжиною 128 байт = 0313020320123…
text довжиною 64 байт = 10100110101001001001….
будуть одні і ті ж для першого блоку і для одного і того ж пароля.

Як уже згадувалось, повторюсь ще раз, знаючи декілька відкритих текстів( принаймі ті частини, які не є випадковими, наприклад, 00000014)
цілком можливо побудувати таблицю правил: (простим перебором - тобто дивлячись на "поведінку" біт відкритого тексту для одного і того ж ключа)
для заданої позицій
номер N: 0=1,1=0;
для номер N+1-ї: 0=>0; 1=>1

відповідно, для всіх текстів які будуть передані з одним і тим же ключем ми за лічені мілісекунди будемо розшифровувати 1-й блок.

І нам навіть не потрібно знати випадковий файл - QKGVKey.

Отже, які б не були супер-складні функції, яким би не був пароль, який би довгий не був супер-випадковий файл - алгоритм не стійкий.


Подібним чином британці свого часу зламали Тунець.

p.s.:

Взагалі, з таким же успіхом ви могли зробити алгоритм:
Код:
Pi xor (MD5(K)) = Ci


Криптостійкість була б та сама, але вас би набагато швидше зрозуміли.


Повернутися наверх
  
 
Показати повідомлення за:  Сортувати по:  
Розпочати нову тему Відповісти  [ 53 повідомлень ]  На сторінку Попередню.  1, 2, 3  Наст.

Часовий пояс: UTC десь + 2 години



cron
Роwеrеd bу рhрВB® аnd Hostinger web hosting