A vot i nepravda. Na perviy vzgliad trivialno lomayetsa ne zavisimo ot kolichestva krugov pri pomoschi slide attacks blagodaria self-similarity yego round function. Dazhe takoi: Код (Text): void encrypt(unsigned *a, unsigned *b) { unsigned v0, v1, t; int n; v0 = *a; v1 = *b; for (n = 0; n < 1024; n++) { v0 += (v1 >> 3) + k0; v1 += (v0 << 5) + k1; t = v0, v0 = v1, v1 = t; } *a = v0; *b = v1; } Kstati, dazhe yesli dobavit + n chtobi ubrat self-similarity, to etomu shifru nado 20 krugov tolko chtobi perestat zavalivat moi testi - 2^16 chosen plaintexts trivialno otlichayutsa ot random yesli menshe 20 krugov. Tak zhe legko s temi zhe chosen plaintexts vosstanavlivayetsa kluch yesli menshe 60 krugov pri pomoschi linear ili differential attacks. 60 i bolshe - eto uzhe tolko adaptive attacks. Eto znachit chto menshe 80 krugov luchshe dazhe ne nadeyatsa na security protiv adaptive attacks. Vobschem, vot ispravlenniy cipher: Код (Text): void encrypt(unsigned *a, unsigned *b) { unsigned v0, v1, t; int n; v0 = *a; v1 = *b; for (n = 0; n < 68; n++) { v0 += (v1 >> 8) + k0 + n; v1 += (v0 << 6) + k1; t = v0, v0 = v1, v1 = t; } *a = v0; *b = v1; } Vot eto uzhe ne lomayetsa bistreye chem parallel brute-force nikak. Chem-to napominayet moi RTEA. S etimi sdvigami (>> 8 i << 6) yemu nado 17 krugov chtobi moi testi proiti - eto na tri kruga bistreye chem >> 3 i << 5. Poetomu 68 krugov dostatochno. No 64-bit keys - eto vsio ravno malovato... Ruptor PS: ispravil opechatku
Ruptor А что скажешь о таком варианте TEA с 128 битным блоком и ключем? Код (Text): for (i = 0; i < 64; i++) { sm += 0x4F1BBCDC; v0 += ((v1 << 4) + k0) ^ (v2 + sm) ^ ((v1 >> 5) + k1); v1 += ((v0 << 4) + k2) ^ (v3 + sm) ^ ((v0 >> 5) + k3); v2 += ((v3 << 4) + k0) ^ (v0 + sm) ^ ((v3 >> 5) + k3); v3 += ((v2 << 4) + k2) ^ (v1 + sm) ^ ((v2 >> 5) + k1); }
hwegh я тоже ламер........ насчёт твоего алгоса (первого) есть идея: v0[3]-v0[1]==delta1 v0[3]-v0[1]==delta2 v0[3]-v[2]==delta3 решив эту систему мы получим значения: v0[3]-k0; v0[2]-k0; v0[1]-k0. по сути дела мы имеем дело с системой линейных модульных уравнений. и ключ легко находится без плейнтекста. насчёт своего алгоса: его и врямь можно сломать без плейнтекста. подбираем k2 и на каждой итерации обрабатываем цепочку как обычный ксор.
21 rounds prohodiat vse moi testi. Eto znachit chto menshe 63 krugov slomayut obichnimi chosen plaintext atakami, a menshe 84 - s pomoschyu adaptive attacks (i v dannom sluchaye menshe 80 krugov dazhe ne budut ispolzovat related keys). V tvoyom variante 256 krugov. Eto slishkom mnogo. Net smisla. Yesli pomeniayesh sdvigi s 4-5 na 6-9, togda stoikost povishayetsa i mozhno 76 krugov togda recomendovat. Function silnaya, ne sipetsa, oshibok net. Hotia ya bi predlozhil takoye besplatnoye uskoreniye diffusion: Код (Text): for (i = 0; i < 15; i++) { sm += 0x4F1BBCDC; v0 += ((v1 << 6) + k0) ^ (v2 + sm) ^ ((v3 >> 9) + k1); v1 += ((v0 << 6) + k2) ^ (v3 + sm) ^ ((v2 >> 9) + k3); v2 += ((v3 << 6) + k0) ^ (v0 + sm) ^ ((v1 >> 9) + k3); v3 += ((v2 << 6) + k2) ^ (v1 + sm) ^ ((v0 >> 9) + k1); } 15*4=60 krugov togda vpolne hvatayet. Ruptor PS: Etot zhe cipher v odnu stroku: Код (Text): for (r=0,s=0;r<60;r++) s=((r&3)==0)?s+0x4F1BBCDC:s,x[r&3]+=((x[(r^1)&3]<<6)+k[(r&1)*2])^(x[(r+2)&3]+s)^((x[(r^3)&3]>>9)+k[(((r&1)*2)^(r&2))+1]); (ispravil opechatki)
Vot vse samiye stoikiye varianti sdvigov dlia etogo shifra: 5-8, 5-10, 5-11, 6-9, 6-10, 6-11, 6-12, 7-10. Iz nih samiye samiye stoikiye - 6-9, 6-10, 6-11. Iz nih 6-10 samiy samiy samiy stoikiy (neznachitelno luchshe chem 6-9), no 6-9 krasiveye i legche zapominayetsa, a kolichestvo krugov vsio ravno odinakovoye. Ruptor
вообще, мой алгос и первый алгос hwegh относятся к одному классу, они могут быть взломаны без плейнтекста, даже если исх. данные - это массив случайных чисел........)
Чистый и не омраченный искрой разума бред. Ни один симметрик (если он не содержит избыточности) не может быть взломан без плейнтекста при случайных числах на входе. Даже простой ксор с байтом не может быть взломан при таких условиях.
flankerx hwegh с чего это вдруг такое недоверие, ребята)) класс, о коем я говорю: c=f(...)+key, f(...) - любая функа преобразования. заметим, что её результат=< модуля, надеюсь, чему равен модуль, в данном случае, вам объяснять не надо. итак, отвлечёмся от нашей первоначальной цели получить текст - в итоге шифровка выглядит так: c=x+key; едем дальше: x[2]-x[1]==delta1 x[2]+key==c[2] (c[2]+N) x[1]+key==c[1] (c[1]+N) одна из четырёх возможных систем урав даст нам ключ - это очевидно даже для такого ламера, как я......) flankerx почему ты не следуешь своим советам, Гуру: ".......ключ /brain: on"???)) hwegh прально: твой алгос хуже ксора) а для случайного массива нам нужен будет тока его хэш или немного плейнтекста), а так в верности дешифровки можно быть уверенным на 25%)
UbIvItS Ацки жжошь! [утирая слезу] С времен твоих фантазий касательно изобретения нового "алгоса" факторизации ничего не изменилось - ты все так же отжигаешь...
Ладно, давай я выкладываю 100кб шифртекста и плейнтекста, и ты мне получишь ключ. Либо не..й п..деть.
Да чего мелочиться - твой алгоритм, наравне с признанными криптографическим сообщесивом алгоритмами, отностися к классу c = f (p, k) Если про данные что-то известно - не стоит использовать слово "случайный". А так же, если не хочется, чтобы тебя окончательно перестали воспринимать всерьез, не стоит использовать классические приемы полемики: - переходить на личности; - отвечать не на поставленный вопрос а на тот, ответ на который даст тебе преимущества, или вообще игнорировать вопросы, на которые не можешь ответить; - давать неполную информацию, оставляя себе пространство для маневра; - подменять свои же ранние утверждения или условия задачи, не заботясь о том, что они в корне меняют суть проблемы; и т.п.
CreatorCray докажи......... ты немного искажаешь историю.......) A. я не говорил, что метода ломает всё. Б. я просил объяснить классы уязвимых для дипа чисел. и, вообще (возвращаясь к шифру hwegh) ты что не согласен с равенством (a+b) mod N-(a+c) mod N== (b-c) mod N)??? hwegh дафай мне шифротекст и прогу криптор/декриптор) хотя, забавно: ты читаешь мои топики или занимаешься тренировкой чтения с закрытыми глазами - сам мог бы попробовать)
Dmit Боюсь полезные советы малось припоздали... Впрочем все равно не помогли бы UbIvItS Доказать что? Что ты аццки жжошь? )) Пока ты сам не поймешь что писал ахинею, тебе что либо доказать невозможно.
UbIvItS Держи файл с кодом криптора и 100кб шифртекста. Так как ты удтверждаешь что для вскрытия достаточно хеша плейнтекста, то я дам тебе только его. MD5 от плейнтекста = 6e2cfed8adef17b28b35f1b161e25f62 Для особо непонятливых разьясню, что для дешифрования вызов encrypt надо поменять на decrypt, а ключ прописать в k0 и k1, а то вдруг ты сам не догадаешся. Ждем от тебя код находящий ключ, либо иным образом восстанавливающий плейнтекст. Полный брутфорс 64х бит за решение не принимается. Я считаю что с тобой неочем говорить пока ты не подтвердишь свои слова делом. http://rapidshare.com/files/63205213/crypt.rar.html
CreatorCray мда...... мог бы не стебаться), а сразу сказать, что матрица вырожденная)) =========>> метода слома дауновая.......
ftre экий ты вежливый чел, однако). поиск новых идей связан с перебором мегатон ереси, ну, случилась ошибка у меня) - не ошибается тот, кто ничего не делает) а ты ошибаешься......???)) короче, удачи тебе неизвестный критик) hwegh твой алгос всё же можно подвздеть: статистика строк в восемь байт остаётся той же самой - для текстов на евро языках -это плохо. но эта беда просто решается, если внедрить динамику ключа. я рабочие алгосы только с динамикой пишу. тогда даже шифр: c=t+key становится устойчивым.