Кіріспе

Криптографиялық сан генераторы
ISAAC (indirection, shift, accumulate, add, and count) – криптографиялық тұрғыдан қауіпсіз псевдокездейі сан генераторы және 1993 жылы Роберт Дж. Дженкинс-младший жасаған ағын шифрі. Бастапқы код ашық қолжетімділікке берілді. "Мен генераторды бұзу үшін тесттер жасадым, ал генераторды осы тесттерден өтуі үшін құрастырдым. Осы генератор – ISAAC."

Операция

ISAAC алгоритмі RC4 алгоритмімен ұқсастықтарды бөліседі. Ол 256 төрт октеттік бүтін сандар массивін ішкі күй ретінде пайдаланады, нәтижелерді тағы бір 256 төрт октеттік бүтін сандар массивіне жазады, олардан біреуден біреу оқылғанда, массив толық болып бітіп, қайта есептелуге дейін. Есептеу i элементін (i ⊕ 128) элементімен, күй массивінен жанама жолмен табылған екі элементпен, аккумулятормен және сандар санағышпен, i-нің 0-ден 255-ке дейінгі барлық мәндері үшін өзгертуден тұрады. Ол әрбір 32 биттік шығыс сөзі үшін шамамен 19 32 биттік операцияны қажет ететіндіктен, 32 биттік компьютерлерде өте жылдам жұмыс істейді.

Криптоанализ

Криптоанализді Марина Пудовкина (2001) жүргізді. Оның шабуылы бастапқы күйді, барлық мүмкін бастапқы күйлердің квадрат түбірін іздеуге кеткен уақыттан кем күрделілікпен қалпына келтіре алады. Іс жүзінде, бұл шабуылға қажетті ресурстардың орнына, осы нәтиже ISAAC қауіпсіздігіне ешқандай әсер етпеді дегенді білдіреді. 2006 жылы Жан Филипп Аумасон әлсіз күйлердің бірнеше жиынтығын ашты. Төртінші (және ең кіші) әлсіз күйлер жиынтығы ISAAC-тің бірінші раундысы үшін жоғары дәрежеде бұрмаланған шығысқа алып келеді және RC4-тегі әлсіздік сияқты, ішкі күйді алуға мүмкіндік береді. Шабуылшы генератор осы әлсіз күйлердің бірінде екенін тек шығыстан ғана анықтай алатыны белгісіз. Ол сондай-ақ, бұрынғы шабуылдың дұрыс еместігін көрсетті, себебі Пол Пренелдің шабуылы нақты ISAAC емес, бұрыс алгоритмға негізделген. ISAAC-тің жақсартылған нұсқасы ұсынылды, ол ISAAC+ деп аталады. Сонымен қатар, ISAAC алгоритмі Java Apache Commons Math кітапханасында іске асырылған.