Ice-Graphics.com пишет о том, что изобрел симметричный алгоритм "нового поколения" ICESafe, в котором длина блока равна длине файла. Файл загружается в память целиком, потом оригинальный файл затирается шифротекстом, что снимает проблему атаки на удаленные данные. Как и полагается, один измененный байт или бит шифротекста дает трек ошибки на целый блок, но в данном случае на целый файл! То есть при изменении одного байта вся расшифровка большого файла невозможна. На лицо какая-то быстрая трансформация, однако автор отрицает связь и наследие с обычными симметричными алгоритмами. что бы это такое могло быть?
Хотите повторить вот это обсуждение ? http://www.pgpru.com/biblioteka/statji/hanaanskijjbaljzam?show_comments=1&p=1#Comment9415 вот очень хорошее резюме оттуда :
Насчет конкретно алгоритма ICESafe все очевидно, при всех своих достоинствах ведущего программера планеты, ICEGraphics не является специалистом в области криптографии и криптоанализа, ему и невдомек, какие изощренные методы и секретные теоремы могут в принципе быть применены к его алгоритму. Но для этого нужно, чтобы зашифрованная им информация представляла особую ценность. Однако, простые обыватели могут преспокойно пользовать этот алгортм для защиты неособо ценной информации от себе подобных граждан... Вопрос в другом, в самой идеологии такого подхода. Есть ли похожие алгоритмы? что такое там ICE смог "изобрести". В принципе, мне идея отказа от мелких блоков представляется интересной, поскольку ресурсов у современных ПК много, нечего им больше эмулировать и копировать обычные стандартные алгоритмы, рассчитанные на несколько сдвиговых регистров... Главный интерес состоит в том, что в файле независимо от его размера, скажем на 100М, каждый бит должен зависить от каждого другого бита!!! Один измененный бит должен приводить к порче всего огромного файла!!! А CRC достаточно держать одно для всего файла. Так что взлом может быть нетривиальной задачей. На ум приходят сцепленные мелкие блоки. Или, как вариант, небольшие прогонки типа a1 xor a2 xor a3 xor a4 a2 xor a3 xor a4 xor a5 a3 xor a4 xor a6 xor a6... Ну в общем это еще вопрос, как у файла на 100М за быстрое линейное время сделать полную функциональную зависимость всех битов от всех других. Какие идеи, кто пытался ковырять алгоритм?
Ну так можно сделать шифр с болшими блоками на основе обычной SP-сети. Делить на кусочки, прогонять через например AES S-box, затем перемешивать биты по всему блоку и складывать с ключом. Да и раундов побольше. Практическая безопасность будет ничем не лучше, чем у того же AES, но работать будет медленнее.
К сожалению, я не спец в крипто и в конкретных критоалгоритмах. Но знаю, что там есть такая вот трансформация: a -> b a xor b -> a Точно не знаю, но вроде это и есть "раунд". Раз так, то не будет большой разницы если делать фиксированное число раундов, скажем 17, для обычного блока или для гигантского. Время будет линейно расти с размером блока.
1. Проще всего зашифровать текст блочным шифром в режиме СВС, затем перевернуть (последний байт зашифрованных данных станет первым, первый последним и т.д.) и снова зашифровать в режиме СВС. 2 .Если немного усложнить: приведенный выше метод, только использовать 2 разных шифра, 2 разных ВИ, 2 разных ключа. 3. Есть более сложные и более изощренные схемы, но не думаю что кому-то они тут будут интересны.