Вчера весь день распространялись дикие слухи, про "отлетевшую аутентификацию" Парлера. "Миллионы админских аккаунтов" и 70 терабайт, выкачанных на флешку омномнимными хакерами. На самом деле это были не хакеры, а Archive Team. Получили урли через API, написали код для выкачки (лежит на гитхабе) и запрягли волонтеров, чтобы ускорить процесс. Библиотекари - страшные люди 😊
Иногда по нескольку раз возвращаюсь к какой-нибудь теме, даже самой пустяковой, потому что меня что-то беспокоит. В этот раз вспомнил об испорченном RC4 в Black Energy (та самая мальварь, которой валили электро-подстанции). Я напомню, что RC4 - потоковый шифр. Его внутреннее состояние - перестановка (задаваемая ключом) чисел от 0 до 255. for i in 0 .. 255: S[i] = i; for i in 0 .. 255: j = j + s[i] + k[i % keylen], swap(s[i], s[j]) Внутреннее состояние S, потом используется как генератор псевдослучайной последовательности: i++, j += s[i], swap(s[i], s[j]), return s[s[i] + s[j]]
У RC4 есть неприятная особенность - bias (перекос) во втором байте (и не только). Но во втором байте ноль встречается в два раза чаще, чем остальные значения. Кстати, если использовать алгоритм Фишера-Йейтса на полноразмерном двухкилобитном ключе или полностью случайную перестановку bias сохраняется. Что делает возможным целый ряд атак. Включая атаки на TLS и WPA. И хотя, соблюдая определенные меры предосторожности, из RC4 можно выжать капельку безопасности, делать этого не стоит.
RC4 уже сломан, он был сломан на следующий день после публикации реверса в cypherpunks, но по-прежнему завораживает кодеров своей простотой. Попытки изменить PRG приводят к тому, что новые фичи маскируют проблему, а не устраняют её полностью. Как сказал Мэт Грин, если вы будете бегать с ножницами вокруг бассейна, то может вы и не выколете себе глаз, но все-равно стоит напомнить о том, что беготня с ножницами не благословляется.
В Black Energy 2 генерация ключа испорчена весьма своеобразным способом. S[i] = i ⊕ key[i % keylen]. И я был немного невнимателен. Если бы эти "гении" использовали однобайтовый ключ, то i ⊕ const, выдал бы новую перестановку, похожий фокус вместе с циклической группой, afair, как-то использовал Mental Driller для псевдо-случайного (но при этом однократного) доступа к памяти в полиморфном расшифровщике. Смесь LCG и перестановки (для увеличения количества вариантов, не для "безопасности"). Но в BE ключ длинный. Я обратил внимание на то, что энтропия PRG упала, а все еще смешнее.
Сохранился и оригинальный bias во втором байте, и, что еще занятнее, состояние перестало быть перестановкой и мало того, что появились дополнительные перекосы, ослабляя шифр, так еще и нулевые байты в S, приводят к тому, что изрядная часть открытого текста остается незашифрованной, что вместе с key reuse (на это не обратил внимание только ленивый) приведёт к тому, что можно фигачить сигнатуры сразу на траффик.
В очередной раз, с грустью вынужден отметить, что высокое искусство вирусописательства в упадке. Люди, которые атакуют SCADA и занимаются международным терроризмом не в состоянии разобраться в том, как работает один из самых простых потоковых шифров и как правильно им пользоваться. Однако, если вместо Джеймса Бонда к вам вломился медведь размахивающий балалайкой, аки Пересвет копьем, это не делает его менее опасным. В критической инфраструктуре у нас уже мамаево поёбище, даже без медведей.
У RC4 есть неприятная особенность - bias (перекос) во втором байте (и не только). Но во втором байте ноль встречается в два раза чаще, чем остальные значения. Кстати, если использовать алгоритм Фишера-Йейтса на полноразмерном двухкилобитном ключе или полностью случайную перестановку bias сохраняется. Что делает возможным целый ряд атак. Включая атаки на TLS и WPA. И хотя, соблюдая определенные меры предосторожности, из RC4 можно выжать капельку безопасности, делать этого не стоит.
RC4 уже сломан, он был сломан на следующий день после публикации реверса в cypherpunks, но по-прежнему завораживает кодеров своей простотой. Попытки изменить PRG приводят к тому, что новые фичи маскируют проблему, а не устраняют её полностью. Как сказал Мэт Грин, если вы будете бегать с ножницами вокруг бассейна, то может вы и не выколете себе глаз, но все-равно стоит напомнить о том, что беготня с ножницами не благословляется.
В Black Energy 2 генерация ключа испорчена весьма своеобразным способом. S[i] = i ⊕ key[i % keylen]. И я был немного невнимателен. Если бы эти "гении" использовали однобайтовый ключ, то i ⊕ const, выдал бы новую перестановку, похожий фокус вместе с циклической группой, afair, как-то использовал Mental Driller для псевдо-случайного (но при этом однократного) доступа к памяти в полиморфном расшифровщике. Смесь LCG и перестановки (для увеличения количества вариантов, не для "безопасности"). Но в BE ключ длинный. Я обратил внимание на то, что энтропия PRG упала, а все еще смешнее.
Сохранился и оригинальный bias во втором байте, и, что еще занятнее, состояние перестало быть перестановкой и мало того, что появились дополнительные перекосы, ослабляя шифр, так еще и нулевые байты в S, приводят к тому, что изрядная часть открытого текста остается незашифрованной, что вместе с key reuse (на это не обратил внимание только ленивый) приведёт к тому, что можно фигачить сигнатуры сразу на траффик.
В очередной раз, с грустью вынужден отметить, что высокое искусство вирусописательства в упадке. Люди, которые атакуют SCADA и занимаются международным терроризмом не в состоянии разобраться в том, как работает один из самых простых потоковых шифров и как правильно им пользоваться. Однако, если вместо Джеймса Бонда к вам вломился медведь размахивающий балалайкой, аки Пересвет копьем, это не делает его менее опасным. В критической инфраструктуре у нас уже мамаево поёбище, даже без медведей.
Раз уж я в понедельник утром вспомнил про RC4, то есть еще одна занятная штука. Двадцать лет назад равноапостольный гуру криптографии Брюс Шнайер придумал современный шифр Solitaire, который не требует ничего кроме ручки, бумаги и колоды карт. Собственно, похожими средствами людям приходилось обходиться тысячи лет, и многие, из-за недостатка воображения, поплатились за свои криптологические опыты головой. Как известно, каждый может придумать шифр, который сам не сможет взломать. Взрослые дяди и тёти редко уделяют внимание таким штукам, но так как автор Шнайер и шифр описан в Криптономиконе, то его испытывали на прочность, и да, в нем нашлись уязвимости. Пару дней назад у меня спросили, что я думаю о LC4, еще одна попытка в области "низко-технологичных" шифров, и что будет, если увеличить размер внутреннего состояния?
Алан Каминский, автор шифра, попытался упростить RC4 до "бумажного" вида и исправить несколько известных уязвимостей. Сильный перекос в начальных байтах ключевого потока и отсутствие аутентификации. "Бумажным" шифр можно назвать довольно условно, потому что фаза генерации ключа отсутствует, и вам придётся изрядно потрудиться, чтобы выбрать начальную перестановку случайно и равномерно, и при этом не накосячить. RC4 до сих пор иногда используется, как тяжкое наследие, и чтобы избавиться от уязвимых начальных последовательностей его "проматывают" вперёд на пару сотен байт, а Алан использует шестибуквенные nonces (передаются вместе с шифротекстом в открытом виде). Так же nonces защищают от повторного использования ключа. И, чтобы жизнь медом не казалась, в состояние непрерывно "домешивается" открытый текст. Называется автоключ, и если мне не изменяет память, впервые такой фокус использовал Виженер (то что сейчас называется "Виженером" - упрощенная версия). Не смотря на то, что это значительно усложняет расшифровку, люди очень долго не хотели пользоваться шифрами с обратной связью из-за того, что ошибка в одном символе превращает весь последующий текст в мусор.
На первый взгляд шифр выглядит неплохо. В случае идеальной PRP-функции можно расчитывать на 36! вариантов (~ 2^138, даже все вычисления, проведенные всеми майнерами биткоина и близко не могут подойти к подобному числу). Однако, именно потому что сообщение смешивается с внутренним состоянием, возможна plaintext-атака. Если у нас есть открытое и зашифрованное сообщение, то можно попытаться восстановить внутреннее состояние. Автор шифра оценил сложность атаки в 2^58, что всего в четыре раза больше, чем урезанный DES. "Взрослый" шифр уже отправился бы на помойку. Но, где взять открытый текст, если шифрование проводится вручную? (если вы не Никсон и у вас нет бригады "водопроводчиков") Тут как раз и пригодятся nonces. Закрыли две известные атаки, но открыли возможность для третьей. Но для "бумажного" шифра с короткими сообщениями всё, ну, какбы, приемлемо, хотя уже хуже, чем в "Пасьянсе". Как оценить стойкость, не сильно выжигая себе мозг? На статистических тестах шифр ведёт себя прилично. А давайте, просто превратим его в псевдослучайный генератор и посмотрим, что он нам выдаст? 138 бит состояния - не хухры-мухры. И вот тут сразу становятся видны короткие циклы (вплоть до нескольких десятков символов), в которые шифр сваливается с пугающей скоростью. Именно благодаря петле обратной связи. Хорошая попытка, автору респект и уважуха, но нет.
Я это к чему. Если у вас где-то завалялся RC4 - выкиньте его нахуй, и не пытайтесь изобретать велосипеды с квадратными колесами. Таких попыток было много и ошибаются чуть менее, чем все.
Алан Каминский, автор шифра, попытался упростить RC4 до "бумажного" вида и исправить несколько известных уязвимостей. Сильный перекос в начальных байтах ключевого потока и отсутствие аутентификации. "Бумажным" шифр можно назвать довольно условно, потому что фаза генерации ключа отсутствует, и вам придётся изрядно потрудиться, чтобы выбрать начальную перестановку случайно и равномерно, и при этом не накосячить. RC4 до сих пор иногда используется, как тяжкое наследие, и чтобы избавиться от уязвимых начальных последовательностей его "проматывают" вперёд на пару сотен байт, а Алан использует шестибуквенные nonces (передаются вместе с шифротекстом в открытом виде). Так же nonces защищают от повторного использования ключа. И, чтобы жизнь медом не казалась, в состояние непрерывно "домешивается" открытый текст. Называется автоключ, и если мне не изменяет память, впервые такой фокус использовал Виженер (то что сейчас называется "Виженером" - упрощенная версия). Не смотря на то, что это значительно усложняет расшифровку, люди очень долго не хотели пользоваться шифрами с обратной связью из-за того, что ошибка в одном символе превращает весь последующий текст в мусор.
На первый взгляд шифр выглядит неплохо. В случае идеальной PRP-функции можно расчитывать на 36! вариантов (~ 2^138, даже все вычисления, проведенные всеми майнерами биткоина и близко не могут подойти к подобному числу). Однако, именно потому что сообщение смешивается с внутренним состоянием, возможна plaintext-атака. Если у нас есть открытое и зашифрованное сообщение, то можно попытаться восстановить внутреннее состояние. Автор шифра оценил сложность атаки в 2^58, что всего в четыре раза больше, чем урезанный DES. "Взрослый" шифр уже отправился бы на помойку. Но, где взять открытый текст, если шифрование проводится вручную? (если вы не Никсон и у вас нет бригады "водопроводчиков") Тут как раз и пригодятся nonces. Закрыли две известные атаки, но открыли возможность для третьей. Но для "бумажного" шифра с короткими сообщениями всё, ну, какбы, приемлемо, хотя уже хуже, чем в "Пасьянсе". Как оценить стойкость, не сильно выжигая себе мозг? На статистических тестах шифр ведёт себя прилично. А давайте, просто превратим его в псевдослучайный генератор и посмотрим, что он нам выдаст? 138 бит состояния - не хухры-мухры. И вот тут сразу становятся видны короткие циклы (вплоть до нескольких десятков символов), в которые шифр сваливается с пугающей скоростью. Именно благодаря петле обратной связи. Хорошая попытка, автору респект и уважуха, но нет.
Я это к чему. Если у вас где-то завалялся RC4 - выкиньте его нахуй, и не пытайтесь изобретать велосипеды с квадратными колесами. Таких попыток было много и ошибаются чуть менее, чем все.
"Новый регуляторный орган должен защищать права пользователей в интернете, иметь полномочия и возможности внедрять свои решения относительно блокирования и удаления контента" Рагуляйтеров им, пидорам, мало. Как и везде гнусные хуепидрильные опездолы из минцифры, решили под пандемичный шумок прикрутить эти наши интернетики. Ссыте на них, бейте их ногами по наглому выскубленному ебалу, унижайте в собственном доме. А что сделать с тупой пиздой Гульсаной Мамедиевой подсказывает контекстная реклама, только вариантов маловато. Из неё получилась бы пиздатая пиньята.
"To that end, CRDF Global is currently accepting proposals from joint teams of U.S. and Ukrainian researchers focusing on cybersecurity research including, but not limited to big data, machine learning (ML), artificial intelligence (AI), 5G networks, security as a service (SECaaS), and others" Че-т ржу. У нас системного администратора или джуна кодера не всегда получается найти. AI. ML. Ну-ну...
Кто бы мог подумать! Кто мог предугадать! А куда им было еще идти? В Германию, которую поносит от слов "far right" или во Францию, которая ссыт кипятком? Может быть в центральную африку, знаменитую своей инфраструктурой или, может, в Китай? Не, ну серьёзно, десять миллионов пользователей должны были просто сказать: "ну, раз Гугл и Амазон - частные компании, то всё, пацаны, расходимся". Вьебите еще немного цензуры и чатики уйдут не только в парашку, но и на черные bulletproof хостинги, даркнет и мешсети. #смешное
И немного партийной агитации. Да. Партии нужны деньги, чтобы сопротивляться тому печальному катаклизму, который происходит вокруг https://sokyra.space?p=tosscointosean
Недавно нашел отличную коллекцию декомпрессоров, спасенных хорошими людьми с восьмибиток. https://modexp.wordpress.com/2020/05/27/komposite-shellcode/ В основном разновидности Lempel-Ziv. Для того, чтобы поиграться пришлось от души полазить по ссылкам из поста и гитхабу, чтобы подобрать соответствующие программки для сжатия, после чего, я проникся глубоким уважением к программистам древности и ненавистью к современной системе образования. Всё еще хуже, чем с криптографией, там школота хотя бы подозревает, что их выебут титановым ломом.
99% всех алгоритмов сжатия сводятся к тому, чтобы заменить повторяющуюся последовательность символов, ссылкой или индексом в словаре (LZ и LZW), и энтропийному кодированию того, что получилось (как правило, Huffman или AC/ANS). С кодированием интереснее. В конце сороковых годов, семьдесят лет уже этим алгоритмам, после того как св. Шеннон, отец теории информации, сформулировал основы, Шеннон и Фано попытались придумать оптимальный код. Получился субоптимальный, и Роберт Фано предложил своим студентам альтернативу - или сдавать экзамен или найти оптимальный код. О том, что он сам вместе с Шенноном такой код не нашли он им конечно не сказал.
Все сводится к тому, что для того, чтобы представить символ, который встречается в тексте с вероятностью P, потребуется ceil(-log2(P)) бит. Не бином Ньютона. Вероятность выпадения "орла" или "решки" 1/2, -log2(1/2) = 1 бит на каждый бросок монеты. Или орел или решка. Шеннон считал количество бит напрямую, вот прямо по формуле. Фано отсортировал символы в порядке убывания вероятности, затем список режется пополам (по "весу", не по количеству) и левая часть становится левой веткой дерева, а правая - правой. Потом процесс повторяется и все левые ветки - ноль, а правые - один. Проходим из корня дереву к листу, записывая "сено-солома" - получаем код. Не идеальный, но не хуже, чем +1 бит на символ.
С экзаменом на носу, Хаффман уже собрался выкинуть все свои черновики и приступить к зубрежке, и только тогда его осенило, что если начать строить дерево не сверху вниз, а снизу вверх, то получится оптимальный код (с целым количеством битов). Так вот к чему это я. То что я понаходил на гитхабе - или лютая дичь написанная безмозглой школотой, или уже взрослые продукты, которые настолько оптимизированы, что в них уже не видно, как работает алгоритм. При этом люди смотрят на всё это, и копируют, не глядя, самые распространенные и криво портированные с доисторических компьютеров решения (привет, многострадальный Йошизаки и Окумура).
А всё просто на самом деле. Проще некуда.
Все сводится к тому, что для того, чтобы представить символ, который встречается в тексте с вероятностью P, потребуется ceil(-log2(P)) бит. Не бином Ньютона. Вероятность выпадения "орла" или "решки" 1/2, -log2(1/2) = 1 бит на каждый бросок монеты. Или орел или решка. Шеннон считал количество бит напрямую, вот прямо по формуле. Фано отсортировал символы в порядке убывания вероятности, затем список режется пополам (по "весу", не по количеству) и левая часть становится левой веткой дерева, а правая - правой. Потом процесс повторяется и все левые ветки - ноль, а правые - один. Проходим из корня дереву к листу, записывая "сено-солома" - получаем код. Не идеальный, но не хуже, чем +1 бит на символ.
С экзаменом на носу, Хаффман уже собрался выкинуть все свои черновики и приступить к зубрежке, и только тогда его осенило, что если начать строить дерево не сверху вниз, а снизу вверх, то получится оптимальный код (с целым количеством битов). Так вот к чему это я. То что я понаходил на гитхабе - или лютая дичь написанная безмозглой школотой, или уже взрослые продукты, которые настолько оптимизированы, что в них уже не видно, как работает алгоритм. При этом люди смотрят на всё это, и копируют, не глядя, самые распространенные и криво портированные с доисторических компьютеров решения (привет, многострадальный Йошизаки и Окумура).
А всё просто на самом деле. Проще некуда.
VICE пишет: "Former LulzSec Hacker Releases VPN Zero-Day Used to Hack Hacking Team". Дорогие мои, шеллшоку уже шесть лет. А езиносу "Hackback", в котором Финеас указал и путь к уязвимому скрипту, и то что уязвимость срабатывает в User-agent уже больше года. Если это называется "zero day", то у вас подозрительно долгие дни. Уёбываёте назад на Венеру.
Полдня потратил на CVE-2021-3156, понял как работает unlink, но я, по-прежнему, can't mind our fds & bks, одна надежда на доброго sd... 😃 Qualys красавы.
С большим интересом прочитал российский лонгрид на тему кибербезопасности и войны в Украине. Думаю, что текст вы найдете без труда. Естественно, как и во всей подобной стратегической продукции, я вижу огромное количество искажений. Некоторые сделаны совершенно сознательно, признать, незыблемый факт того, что Россия подло начала войну против Украины, или что “КиберБеркут” не “пророссийская группа”, а фронт для российских спец. Служб - равносильно политическому самоубийству. Гораздо интереснее наблюдать за тем, как привычные для раков пропагандистские нарративы разъедают мозг им самим. Любая дезинформация всегда возвращается и бьет по своим же.
Я не буду разбирать подробно нагромождение нелепостей и откровенной лжи. Есть правильные вопросы: “кто?” и “зачем?” РСМД (как и Фонд Горчакова) был создан по прямому распоряжению Медведева и МИД РФ. Такая себе попытка осовременить российские практики, состоящие из political warfare (вместо политики) и безбашенных активных мероприятий (вместо сбора и анализа информации). В руководство “совета” входят, как ельцинские министры Игорь Иванов и Петр Авен (сейчас Альфа-Групп), так и путинский спикер Песков. Цель “совета” - soft power. Он настолько “soft”, что чуть менее, чем все получатели грантов от “Горчакова” сейчас в розыске по обвинению в терроризме, сепаратизме и массовым беспорядкам. Русская “культура” она такая, вслед за любителями Пушкина и Лермонтова неизменно появляются кибер-медведи всех расцветок и немытые буряты на танках.
Сам автор аналитики, Артур Хетагуров, который представляется “независимым аналитиком рынков вооружений”, работал директором в части ржавеющего советского ВПК - АО НПО Бином в Северной Осетии. Затем заводы вошли в Ростех, туда же перешел и Хетагуров. Мое внимание привлекло то, что в огромном тексте (подготовлен в июне 2020, опубликован в декабре) Зеленский упоминается один раз (в связи с продлением “санкций”), Федоров - один раз, c чудесной цитатой, о которой ему стоило бы напомнить: «существующая практика создания КСЗИ является открытой торговлей красивыми бумажками и не имеет ничего общего с кибербезопасностью». И все. Ни Баканова, ни Данилова, ни "слуг", ни "турборежимных" законов, только : “быр, мыр, Турчинов, фыр, пыр, Тымчук”. Миротворец скромненько обошли вниманием. При этом на ИнформНапалм и UCA на РФ всегда стоял новостной блок. Настолько плотный, что новости не попадали даже в профильные отчеты. А тут прямо-таки аттракцион “невиданной щедрости”... .
Я не буду разбирать подробно нагромождение нелепостей и откровенной лжи. Есть правильные вопросы: “кто?” и “зачем?” РСМД (как и Фонд Горчакова) был создан по прямому распоряжению Медведева и МИД РФ. Такая себе попытка осовременить российские практики, состоящие из political warfare (вместо политики) и безбашенных активных мероприятий (вместо сбора и анализа информации). В руководство “совета” входят, как ельцинские министры Игорь Иванов и Петр Авен (сейчас Альфа-Групп), так и путинский спикер Песков. Цель “совета” - soft power. Он настолько “soft”, что чуть менее, чем все получатели грантов от “Горчакова” сейчас в розыске по обвинению в терроризме, сепаратизме и массовым беспорядкам. Русская “культура” она такая, вслед за любителями Пушкина и Лермонтова неизменно появляются кибер-медведи всех расцветок и немытые буряты на танках.
Сам автор аналитики, Артур Хетагуров, который представляется “независимым аналитиком рынков вооружений”, работал директором в части ржавеющего советского ВПК - АО НПО Бином в Северной Осетии. Затем заводы вошли в Ростех, туда же перешел и Хетагуров. Мое внимание привлекло то, что в огромном тексте (подготовлен в июне 2020, опубликован в декабре) Зеленский упоминается один раз (в связи с продлением “санкций”), Федоров - один раз, c чудесной цитатой, о которой ему стоило бы напомнить: «существующая практика создания КСЗИ является открытой торговлей красивыми бумажками и не имеет ничего общего с кибербезопасностью». И все. Ни Баканова, ни Данилова, ни "слуг", ни "турборежимных" законов, только : “быр, мыр, Турчинов, фыр, пыр, Тымчук”. Миротворец скромненько обошли вниманием. При этом на ИнформНапалм и UCA на РФ всегда стоял новостной блок. Настолько плотный, что новости не попадали даже в профильные отчеты. А тут прямо-таки аттракцион “невиданной щедрости”... .
Немного компьютерной археологии вам в ленту. Вчера мне понадобился алгоритм для детектирования циклов (пожалуйста, не спрашивайте зачем) и я взял алгоритм Флойда из Википедии, а заодно прошвырнулся по ссылкам. Меня заинтересовала статья Ричарда Брента (изобретателя похожего алгоритма, который он использовал для факторизации методом Полларда). Brent, R. P., "An improved Monte Carlo factorization algorithm", 1980. В статье, помимо прочего, он отмечает, что LCG в калькуляторах TI-58 (что-то вроде советской программируемой "Электроники", только раньше и мощнее) выдаёт куда более меньший период, чем обещано.
Параметры LCG: m, a, c = 199017, 24298, 99991. Проверил Флойдом. И действительно. Плохой, негодный генератор. С очень короткими циклами. Казалось бы, что тут еще можно добавить? Брент молодец, нашел "уязвимость" в TI. Только есть одно "но". Точность TI-58 десять десятичных разрядов. log2(10^10) = 33.21, длина в битах максимального значение генератора log2(199016*24298+99991) = 32.17. Брент пропустил integer overflow в собственной программе. Если на 64-битном компьютере заменить int на long, то период генератора 199017, как и было обещано. Параметры подобраны так, чтобы период был полным и не было переполнения на калькуляторе. TI - молодцы.
P.S. Это поучительная история, из которой стоит извлечь урок. Ричард Брент - прекрасный ученый, специалист по алгоритмам, и тем не менее, попытка портировать хрень со сраного калькулятора на комп привела к неверным результатам.
Параметры LCG: m, a, c = 199017, 24298, 99991. Проверил Флойдом. И действительно. Плохой, негодный генератор. С очень короткими циклами. Казалось бы, что тут еще можно добавить? Брент молодец, нашел "уязвимость" в TI. Только есть одно "но". Точность TI-58 десять десятичных разрядов. log2(10^10) = 33.21, длина в битах максимального значение генератора log2(199016*24298+99991) = 32.17. Брент пропустил integer overflow в собственной программе. Если на 64-битном компьютере заменить int на long, то период генератора 199017, как и было обещано. Параметры подобраны так, чтобы период был полным и не было переполнения на калькуляторе. TI - молодцы.
P.S. Это поучительная история, из которой стоит извлечь урок. Ричард Брент - прекрасный ученый, специалист по алгоритмам, и тем не менее, попытка портировать хрень со сраного калькулятора на комп привела к неверным результатам.