Просто знаю, что у Ruptora идеи намного надежнее, нежели у кого-либо другого. Взять, хотябы, его EnRupt. Интересуюсь алгоритмами, собираю, так сказать, коллекционирую реализации - не для внедрения в какой-либо коммерческий продукт и защиты информации с их помощью. А стойкость RTEA намного выше чем у TEA и даже XTEA, что подтверждают тесты.
alexanderwm Ruptor на этом форуме пробегал - поищи в списке пользователей и пошли ему личное сообщение или на мыло напиши если оно там указано. ИМХО, алгоритм, полученный от автора, будет самым лучшим для тебя вариантом. defectoscopy.com кстати это его сайт. Так что контакты можешь еще и там поискать. Там кстати про RTEA есть чуток: http://defectoscopy.com/forum/viewtopic.php?t=21 Впрочем, основываться на тестах алгоритма, сделанных только его автором как то гхм... ненадежно. Кто нибудь еще проводил подобные исследования?
Ты прям словами Руптора говоришь... Наверно и раунды кругами называешь? Strong в контексте криптографии переводится как "стойкий" И с чего ты взял про сойкость RTEA и EnRupt? Только на основании каких-то статистических тестов с http://defectoscopy.com лично я не стал бы делать далеко идущие выводы. Стойкость алгоритма доказывается годами его исследований крипто-коммунити.
Ну, мне ведь исключительно для познавательных целей , поэтому фактическая стойкость совсем некритична (даже если таковая вдруг окажется под вопросом) Спасибо, сообщение отправил (пока в личку).
I must apologise for correcting this post incorrectly... I got confused by my own implementation of my own cipher. What a joke! for (r=0;r<kw*4+32;r++) c=b,b+=a+((b<<6)^(b>>8))+key[r%kw]+r,a=c; is the same as: for (r=0;r<kw*4+32;r++) a+=b+((b<<6)^(b>>8))+key[r%kw]+r,r++,b+=a+((a<<6)^(a>>8))+key[r%kw]+r; Therefore to decrypt: for (r=kw*4+31;r!=-1;r--) b-=a+((a<<6)^(a>>8))+key[r%kw]+r,r--,a-=b+((b<<6)^(b>>8))+key[r%kw]+r; which is the same as: for (r=kw*4+31;r!=-1;r--) c=a,a=b-=a+((a<<6)^(a>>8))+key[r%kw]+r,b=c;
Огромное спасибо! Корректен ли нижеуказанный код? Проверить вышеуказанный мне не удалось, но после небольшой перестановки получилось добиться дешифровки (CRC32 полностью совпадает): Видимо, в код закралась ошибочка при перепечатке. Код (Text): #define u32 unsigned long u32 key[8] = {1,1,1,1,1,1,1,1}; int __stdcall __export crypt (u32 *ap, u32 *bp) { u32 a=*ap; u32 b=*bp; u32 r; for (r=0;r<64;r++) { b+=a+((a<<6)^(a>>8))+ (key[r%8]+r); r++; a+=b+((b<<6)^(b>>8))+ (key[r%8]+r); } *ap= a; *bp= b; return 0; } int __stdcall __export decrypt (u32 *ap, u32 *bp) { u32 a=*ap; u32 b=*bp; long r; for (r=63;r>=0;r--) { a-=b+((b<<6)^(b>>8))+ (key[r%8]+r); r--; b-=a+((a<<6)^(a>>8))+ (key[r%8]+r); } *ap= a; *bp= b; return 0; }
The code in my previous post was incorrect. I have just fixed it, both variants, the half-round and the full round unrolled.
Хотелось бы поднять такой вопрос. Насколько уместным придется RTEA (уж больно подкупает он своей простотой) для следующей задачи: Клиентам, использующим смарткарты с прошитыми в них ключами, передается некий информационный поток, зашифрованный на 64 битном ключе K (генерируется железкой и по идее должен быть действительно случайным). В этом потоке присутствует тот самый ключ K, зашифрованный на индивидуальных ключах абонентов. Клиент из всего потока шифрованных ключей выбирает по идентификатору свой и расшифровывает его, получая ключ K, которым расшифровывает информационный поток. Проблема состоит в выборе наиболее подходящего алгоритма шифрования. Алгоритм должен быть устойчив к атакам на основе открытого шифртекста, поскольку не исключена ситуация, что ключ смогут "достать" из смарткарты. В случае раскрытия одного или нескольких ключей, остальные не должны быть скомпрометированы. И еще, не понятно для чего в подобных системах ключ K меняется достаточно часто раз в 10-15 сек. Неужели его смена раз в несколько часов заметно увеличит возможность дешифровки?
Меня попросили прокомментировать, но я должен воздержаться. Бесполезно спрашивать автора о криптостойкости его алгоритма. С 64-битовыми ключами в карточках особой криптостойкости не будет, даже самый стойкий алгоритм мало чем поможет – ломать его будут просто полным перебором. Поэтому я надеюсь что в карточках 128-256-битовые ключи, а 64-битовые используются только для самого потока... Тогда можете спать спокойно и RTEA не подведёт. А ключ меняется раз в несколько секунд чтобы затруднить его публикацию в интернете, иначе было бы очень легко каждые несколько часов новый ключ расшифрованный одним из известных ключей всем раздавать через сервер.