Ресурсы: техническое описание TLS, LaTeX - в картинки (img), криптографическая библиотека Arduino, шифр "Кузнечик" на ассемблере AMD64/AVX и ARM64
В современном английском предложения “the bumblebee chased the ball” и “the ball chased the bumblebee” диаметрально переставляют преследующего и преследуемого только потому, что переставлены слова. Есть занятная гипотеза, почему так получилось. Если люди разговаривают на двух относительно близких языках, которые, тем не менее, имеют разные схемы словоизменения, разную морфологию, то получается, что при общении на языковой границе удобно просто отрезать от слов изменяемые элементы, оставляя только какой-то базовый вариант, фактически – корень. Ведь корни в этих языках часто одинаковые, поэтому и основное значение фразы из урезанных слов “без падежей” слушатель может понять.
“Я картошка взять. Ты деньга получь”. А вот если слова начинают изменяться по разным законам конкретного языка, да ещё и корни “перепрыгивают”, то понимать фразы становится сильно труднее: “я возьму картошку, ты получишь деньги”. Сложности добавляет и то, что при обычном говорении – речь слитная, а разделять слова слушающий может только по пограничным сочетаниям фонем (формант, если точнее): то есть, какие-то сочетания звуков не встречаются внутри слов, а только между словами – это одна из основ парсинга речи (звуковой). Но словоизменение как раз может проходить по границам слов (не всегда, не во всех языках, но довольно часто это так: “взял”, “возьмут”). Если же проговаривать лишь основную форму корня слова, да ещё и разделяя слова паузами, то эффект совсем другой.
Получается, что в результате такого пограничного перемешивания начинает “отваливаться” изменчивость отдельных слов, получается новый язык, в котором грамматическая роль задаётся относительным порядком слов и словосочетаний. Контактирующие языки обмениваются неизменяемыми частями слов, а развитое словообразование – заменяется на использование нескольких слов для уточнения значения (как “chase out the hippopotamus” – “выгони бегемота”). Естественно, один из языков будет больше подвержен влиянию другого.
И в английском сходный механизм сработал для древне-, среднеанглийского против древнескандинавских и старофранцузских диалектов. В последнем случае, со старофранцузским, потому, что схема работает и тогда, когда одна из сторон просто плохо владеет языком другой стороны. Такая вот “факторизация” языков по сумме схем словоизменения.
Комментарии (2) »
Опубликовал на “Хабре” небольшой текст про рекурсивное “центральное встраивание” (center embedding), которое доступно в английском языке, и его связь с восприятием языков и их грамматик. Речь про фразы вроде “The chap the cat the girl owned scratched screamed” – это как раз основной пример из статьи на “Хабре”. В разговорном языке, понятно, такое не встречается, но так-то у меня есть и вариант с вложенностью уровня пять (нетрудно строить по шаблону, конечно):
The ship the crocodile the chap the cat the girl owned scratched gnawed submerged resurfaced.
Годится для тестирования LLM/GPT.
The ship {
the crocodile {
the chap {
the cat {
the girl owned
} scratched
} gnawed
} submerged
} resurfaced.
Комментировать »
Интересная тенденция, прямо связанная с централизацией и сегментацией Интернета. Всё больше стали замечать глобальные проблемы, которые вызваны локальными техническими ошибками крупнейших провайдеров. Казалось бы, сети, похожие на глобальный Интернет, можно выстраивать таким образом, чтобы даже в случае серёзных локальных проблем, происходила плавная деградация глобального сервиса (graceful degradation), а не внезапное падение всего и вся на таком уровне, что даже дежурные инженеры не могут получить доступы, управление и что-то сделать для восстановления.
То есть, с одной стороны – всё больше и больше критических интернет-сервисов заводится во всё меньшее количество провайдеров; с другой стороны – у этих провайдеров не получается обеспечить внутри своих систем ни надёжность, ни плавную деградацию при проблемах. Несомненно, всё ещё много где и надёжность, и схемы деградации, и даже схемы восстановления – выстроены хорошо, поэтому соответствующие локальные аварии так и остаются локальными, они просто не заметны, о них не шумят в СМИ (после того, как восстановят доступ к “облачным” сайтам этих СМИ из редакции, конечно). Однако тенденция другая: потенциально локальные аварии всё чаще архитектурно масштабируются в обратную сторону – в сторону их “глобализации”.
Комментировать »
В прикладной криптографии измерение времени проявляется сразу в нескольких вариантах. Так, самое очевидное проявление – это различные сроки действия ключей. Наример, срок действия TLS-сертификата: указано, что факту соответствия открытого ключа и сетевого имени, подтверждённому при помощи цифровой подписи, нужно верить только в заданном интервале времени “не раньше – не позже” (период валидности сертификата).
Чуть менее очевидный эффект времени состоит в том, что каждой криптографической операции, связанной с использованием секретного ключа, обычно соспоставлено некоторое ожидаемое “время стойкости”: то есть, предположим, есть секретный ключ протокола Диффи-Хеллмана, он использовался один раз, соответствующий открытый параметр известен третьей стороне, примем, что эта третья сторона может вычислить секретный ключ по открытому за сто лет (тут это условное значение, но есть и куда более строгие оценки стойкости). Параметр вполне себе практический: например, уязвимые реализации ECDSA могут позволять вычислить секретный ключ по нескольким значениям подписи, но чем меньше значений – тем больше вариантов перебирать. И всякий процесс перебора тут эквивалентен указанию времени. Более того, время возникает и в момент сбора значений подписей, которые нужны для успешного подбора: предположим, что уязвимая реализация выпускает одну подпись в месяц, а собрать нужно две сотни значений.
Всё то же самое применимо и к симметричным алгоритмам: можно построить некоторое ожидание стойкости – например, 64-битный симметричный ключ для какого-то алгоритма можно считать стойким в течение недели. Опять же, условная оценка – многое как раз зависит от алгоритма, от доступных оптимизаций. 2^64 это не так мало, как может показаться: представьте, что специализированный вычислитель проверяет 1000 значений за один такт и работает на тактовой частоте 5 ГГц (зедесь и 1000, и гигагерцы – это всё время), тогда для перебора 2^64 значений потребуется полтора месяца. (А если проверка одного значения занимает много тактов, то и полный перебор сильно затянется для 2^64.)
Есть и другой аспект: утечки информации о внутреннем состоянии реализации той или иной криптосистемы, связанные с различным временем выполнения криптографических операций. Критически важные операции стараются реализовать так, чтобы они выполнялись за фиксированное время, вне зависимости от входных данных. Это требует специальных алгоритмов.
В качестве илллюстрации годится хрестоматийный случай, с которого сейчас начинаются курсы по разработке прикладных криптографических программ – утечка секретов при неверной реализации операции сравнения битовых (или байтовых) строк, когда сравнение прекращается в момент обнаружения первого расхождения. Здесь время (точнее – количество тактов), требуемое для вывода результата сравнения с секретным значением, зависит от входных данных. Если атакующая сторона может направлять произвольные данные в систему и измерять время обработки, то атакующая сторона может раскрыть секрет. Пусть секрет имеет длину 128 бит. Может показаться, что для полного перебора с гарантированным нахождением секрета нужно выполнить 2^128 запросов, то есть, потратить очень много времени. Но если реализация уязвима, имеет утчеки “по каналам времени” исполнения с разрешением в один бит, то перебрать гарантированно 128 бит побитно – можно за 128 запросов.
Но всё это – время, и в случае утечек оно играет даже две роли одновременно: утечка “по каналу времени” позволяет сократить время перебора.
Комментировать »
В продолжение предыдущей записки, про LLM и математические задачи. Google пока тоже не публикует технических подробностей о том, кто там и как перебирал и форматировал решения задач Международной математической олимпиады, чтобы получилась “золотая медаль”, однако, в отличие от OpenAI, в официальном новостном сообщении, есть, хотя бы, небольшие и довольно занятные намёки.
Во-первых, пишут, что использовалась некоторая “параллельная обработка” (parallel thinking) внутри модели, но, насколько можно понять, для подбора готовых решений. Цитата: “Эта конфигурация позволяет модели одновременно рассматривать и комбинировать многие возможные решения до выдачи окончательного ответа, вместо того, чтобы действовать по единственной, линейной цепочке рассуждений”. (This setup enables the model to simultaneously explore and combine multiple possible solutions before giving a final answer, rather than pursuing a single, linear chain of thought.)
Во-вторых, для получения решений провели “дополнительное обучение”, подстроенное для подходящих типов задач, и ввели инструкции, подобранные конкретно под задачи ММО (видимо, этого года – иначе нет смысла уточнять дважды). Цитата: “Мы также предоставили Gemini доступ к корпусу специально отобранных высококачественных решений математических задач и добавили в инструкции некоторые подсказки и советы общего характера о том, как решать задачи ММО”. (We also provided Gemini with access to a curated corpus of high-quality solutions to mathematics problems, and added some general hints and tips on how to approach IMO problems to its instructions.) Это самый интересный кусок из официального сообщения. Его можно понимать и так, что добавили базу с содержанием решений задач именно такого типа, как потом спрашивали, а позже ввели “советы” с ответами конкретных задач. А можно понять и так, что в процессе “настройки” корректировали входные данные, направляя вывод генерации к текстам верных доказательств (перечитайте в исходнике: a curated corpus of high-quality solutions).
Проще говоря, подробного описания процесса нет, а так – это уж слишком сильно напоминает улучшенный вариант традиционного уже упражения “ИИ сдаёт ЕГЭ” – выбираем тот сгенерированный текст из десятков выданных LLM вариантов, который набирает больше баллов.
Комментировать »
Оказывается, история с “экспериментом” LLM OpenAI на IMO 2025 гораздо проще: это просто агрессивный маркетинговый выход, чтобы опередить заявление от Google о том же самом – о получении “золотой медали” на IMO 2025 силами ИИ/LLM DeepMind. Но зато у Google есть подтверждение от оргкомитета олимпиады, а у OpenAI – нет.
Не привязывать хотя бы Международную математическую олимпиаду к ИИ/LLM, сами понимаете, сейчас нельзя – это будет превратно понято, это вам не шахматные компьютеры отключать от шахматных турниров между человеками. Похоже, что вопрос-то был лишь в том, чтобы ИИ-корпорации хотя бы не объявляли о “золотых медалях” раньше, чем завершится само мероприятие для людей и некоторый период “охлаждения”, дабы не перехватывать небольшое внимание прессы. Но OpenAI – заявили раньше всех, что, конечно, тут же перехватило фокус медиа. И пусть достижение OpenAI не “официальное”, насколько можно судить, но зато и Google явно опередили, и внимание от конкурса среди человеков переключили. Такая вот маректинговая действительность, да.
Комментировать »
Нередко попадаются сообщения про “новые, самые точные часы”, и речь там не про наручный хронометр с “фазами созвездий”, да по цене Чугунного моста, а про сложные физические эксперименты с “ионными оптическими часами” и тому подобными объектами, которые обходятся даже дороже. Традиционно пишут, что эти часы – позволяют очень точно измерять время. Время, согласно действующей системе единиц СИ, измеряется в секундах. Но что такое “секунда”?
Раньше секунду определяли асторономическими методами, на основе наблюдений вращения звёзд и Солнца вокруг Земли (тут нет ошибки: именно вокруг Земли). Этот вариант определения, фактически, базировался на предположении о точности и стабильности угловых измерений. В 1960 году от астрономического определения секунды отказались, как раз по причине непредсказуемых, – но наблюдаемых, – флуктуаций земного движения. Секунду привязали к атомным процессам.
Современное определение секунды базируется на предсказаниях Стандартной модели, а именно, на том, что, согласно этой модели, частоты внутриатомных процессов стабильны и универсальны, как “во времени”, так и в пространстве. Причём, “время” – означает лишь некий порядок подсчёта количества событий: что после чего произошло, в том смысле, что есть аппаратная реализация функции, различающей события, а раз события различаются, то, зафиксировав очередной переход между отдельными событиями, можно к их количеству прибавить ещё одно. Досчитали до заранее заданного количества, до 9192631770, как сейчас, – получили одну единицу измерения: секунду. Аппаратная реализация функции – это и есть сверхточные часы. А уж атомные они или оптические, не так важно. Важно, что тут нет “времени”, в том “научпоп” смысле, который в это понятие усиленно вкладывают.
Обобщённое “время”, из новостных публикаций про сверхточные часы, – лишь популярное упрощение. Есть рекурсивный термин – “интервал времени”. Рекурсия тут начинается с применения данного термина к определению секунды. Однако в физике вообще нет “времени”. Эксперименты со соверхточными часами, будь то лазеры с ионными ловушками или более привычные атомные часы, это всё наблюдение над различными “осцилляторами”. Подсчёт некоторых периодических физических событий, например, переходов между “состояниями”. Это означает, что увеличивать точность относительно имеющегося эталона можно без наличия доступа к неким “абсолютным часам”, несмотря на то, что “абсолютное время” то и дело упоминают: если вы подсчитываете наблюдаемае изменения состояния некоторого прибора, то вот этот процесс подсчёта, основанный на упорядочивании отметок о событиях – он и есть “время”, в каком-то смысле – “абсолютное”.
Подсчитываемые события – дискретные по определению, так что нельзя увидеть, что там внутри одного такта. Грубо говоря, пусть у нас есть некий механический маятник, который спрятан в ящик и поэтому его не видно, однако в крайних положениях он замыкает электрические контакты, провода от которых выведены наружу ящика, поэтому можно считать импульсы, соответствующие крайним положениям, но нельзя достоверно определить, насколько маятник в своём движении близок к тому или иному контакту, пока этот контакт не сработал. Маятник может сколько угодно “долго” зависать в своём очередном интервале, между контактами, однако узнать о том, насколько долгим было это “долго” – не получится: на подсчёт тактов задержка никак не повлияет, поэтому она останется виртуальной.
Можно строить “рекурсивные маятники”, один за другим, соединяя их ящики таким образом, что для каждого следующего маятника выбранная теоретическая модель предсказывает, что за один такт маятника из предыдущего шага этот новый маятник – выдаёт несколько тактов, повышая разрешение. Вот только как понять, что очередной источник тактов подключился именно к основному тактовому генератору симулятора вселенных? Можно ли локально тактировать устройство с более высокой частотой, чем у основного “вселенского генератора”? Это всё сложные вопросы. К физическому измерению осцилляторов они не относятся. Так что эталон времени – это просто эталон частоты. Но этот эталон важен для процесса интерпретации действительности.
Зато к секунде, получаемой путём подсчёта переключений осцилляторов, привязано много других единиц СИ. Собственно, все, кроме моля. Так что косвенно секунда влияет на всё калибровочное оборудование, даже на оборудование для калибровки термометров. Кочнено, точность там не та, чтобы увидеть даже микросекунду, но связь всё равно есть. (В этом контексте корректировки определений занятно выглядит широко используемая сейчас при оценке изменения климата “точность” в десятые доли градуса, на интервале в полтора столетия.)
С эталонными источниками частоты/времени связана одна большая проблема: как их синхронизировать между собой? Аппаратура, на которой ведут сверхточные подсчёты эталонной частоты, очень чувствительна. Настолько чувствительна, что для конкретной локации, в которой работают такие часы, требуется учитывать гравитационный потенциал, задающий локальную практическую систему отсчёта. Что уж там говорить про колебания почвы, вызванные проезжающим мимо трамваем. Для дистанционной синхронизации таких часов сейчас используют спутниковые радиосигналы, а также и опотоволоконные линии связи. Оптоволокно в чём-то даже лучше.
Погрешность синхронизации – как раз задаёт разумный предел точности определения секунды. Скажем, если не получается синхронизировать часы с точностью лучше, условно, чем одна миллионная, то какой смысл вводить стандартное определение на уровне одной миллиардной? Ведь даже если один эталон удастся признать стабилизированным на нужной частоте, то как передать такое точное время на другие устройства? Никак. Естественно, одна миллиардная – условное число, современные эталоны точнее. Но смысл – имено такой.
Секунду в стандарте собираются переопределять. Возможно, это сделают уже в 2030 году (популярная дата). И тут прямо учитываются возможности трансляции эталонной частоты другим участникам обмена временем: если точность передачи не превышает имеющееся определение секунды, то нет причин и для переопределения. Речь тут идёт о величинах порядка 10^(-18). А помимо точных методов синхронизации по оптоволокну, разрабатывают и специальные оптические часы-эталоны, которые можно физически перевозить с места на место, сохраняя высокую точность (очевидно, с коррекцией по траектории, в том числе, гравитационной).
Новое определение секунды, в теории, может получить и полностью новый физический смысл: скажем, могут зафиксировать значение массы электрона, что позволит строго привязать секунду к прочим константам. Есть и другие варианты: например, поменяют точное значение количества импульсов, взяв за основу более высокочастотный осциллятор.
Конечно, тут наиболее интересен вариант с привязкой к фундаментальным константам, ведь именно он очередной раз подчёркивает, что, с точки зрения торетического аппарата современной физики, масса, энергия – это всё просто математические параметры: то есть, буквально, “значения переменных”. Только такая трактовка и позволяет записывать полезные “законы физики”, например, второй закон Ньютона. А времени там тем более нет.
Комментировать »
В продолжение предыдущей записки, про решение задач с Международной олимпиады средствами LLM: самое забавное, что, например, решение для первой задачи ММО-2025, которое сгенерировала “экспериментальная модель”, почему-то содержит ответ в самом начале – то есть, буквально, написано: смысл решения – доказать, что правильный ответ – правильный. Вот этот фрагмент, в виде скриншота (потому что там нужно “рендерить” LaTeX и Markdown):

Далее там идёт очень большой и не очень внятный сгенерированный текст доказательства, перегруженный отступлениями, понимать который довольно сложно, но не потому, что задача сложная, а потому, что много лишнего в “рассуждениях”. Сомневаюсь, что полезно делать его полный разбор. (Нет, сама исходная задача не требует таких больших объёмов для записи решения.)
Небольшое техническое пояснение: первая задача IMO 2025 это комбинаторная геометрия, нужно посчитать возможные варианты покрытия целых точек на решётке прямыми – это один из самых популяных “сеттингов” для олимпиадных задач; соответственно, набор возможных вариантов – {0, 1, 3} – появляется в процессе решения, поскольку составляет основную содержательную часть этого решения: надо понять, что других чисел (это количество подходящих прямых) там не может появиться; и то, что отсутствует 2, это, вообще говоря, не самый тривиальный момент (но и не самый сложный). Так что то, что решение от LLM OpenAI построено на доказательстве верности состава ответа, без указания на то, как этот состав получен, – почему, хотя бы, там не {1, 2, 3}, – выглядит весьма странно.
Комментировать »
Сообщают (осторожно, ссылка на Twitter), что некая “внутренняя”, экспериментальная модель от OpenAI продемонстрировала уровень “золотой медали” при решении задач Международной математической олимпиады (ММО) 2025 года. Подробностей, как обычно, нет, но опубликованы решения, которые сгенерировала та модель. Всё это занятно. Поделюсь ниже скриншотом по этой же теме, он из недавней выдачи “общедоступной” LLM той же корпорации – ChatGPT 4o.

“Нет, 205 не делится на 5” – считает данная LLM. Сам транскрипт относится к “обобщённой” задаче про набор воды вёдрами – там было три ведра огромного объёма и решать нужно было, понимая общие принципы обратимости/делимости. Откуда, собственно, и взялся НОД (gcd). Так что количество шагов и пр. – это более или менее близко к задаче, вот только использовать три ведра LLM не “догадалась”, без подсказки. Но это детали. Главное – это вывод про то, что “205 не делится на 5”.
Но, предположим, экспериментальная модель для ММО – существенно лучше, конечно. Хотя, и уровень золотой медали ММО, как бы, существенно выше.
Забавная история.
Комментарии (1) »
Занятная схема “навязанной” mesh-геолокации: представьте, что устройства-наблюдатели (смартфоны, скорее всего) просто периодически записывают все доступные им в радиоэфире сигналы, вычисляют для каждого короткий идентификатор (“хеш-сумму”, полученную по особому алгоритму сжатия, учитывающему физические характеристики сигнала – это важно, см. ниже), прикрепляют метку времени, накапливают эти идентификаторы, а накопленное выдают в эфир заранее согласованным способом, тоже периодически, но относительно редко, если сранивать с прослушиванием. Например, запись – десять раз в секунду, выдача – один раз в секунду. Заметьте, что тут нигде не требовалось, чтобы устройства приписывали геолокацию к записанным идентификаторам – это как раз не обязательно.
Слушать эфир можно как каким-то одним из имеющихся радиотрактов (WiFi, Bluetooth/BLE, GNSS, GSM и т.д.) или всеми сразу. Современные радиомодули очень чувствительные и избирательные. Если использовать непосредственно функции прошивки радиомодуля, то, вообще говоря, принимать можно далеко не только “логический WiFi”, но и разнообразные другие сигналы, в том числе, сигналы радаров, спутниковых передачиков (подтверждается Starlink) и т.д., и т.п. Да, приниматься могут быть гармоники побочных утечек, но для данной задачи это не важно. Если сомневаетесь, то вспомните историю появления такого направления, как RTL-SDR – там аппаратной основной вообще послужил бюджетный ТВ-тюнер. (Замечу, в скобках, что даже если в пользовательском интерфейсе смартфона указано, что соответствующие радиомодули “отключены”, это не означает, что они реально отключены – реально отключить можно было бы только в специальной архитектуре, аппаратной кнопкой, но таким практически никто не пользуется, да и кнопка не даёт полной гарантии.)
Устройства-наблюдатели по данной теме больше ничего не делают, поэтому их активность снаружи выглядит вполне себе обычно (это, собственно, просто логика протоколов класса LTE). Однако собранные сведения из эфира принимает какое-нибудь внешнее устройство-монитор, специально предназначенное для этого. Принимает тогда, когда удалось что-то принять. Монитором может быть и другой, скомпрометированный, смартфон, и штатно подготовленный приёмник “базовой станции” с нужной прошивкой – не так важно, но возможности, конечно, различаются. Монитор знает собственное местоположение, может знать направление, с которого получен очередной блок данных (это больше относится к “базовым станциям”). Полученные от наблюдателей данные монитор передаёт на удалённый центральный сервер. Этот сервер агрегирует данные от многих мониторов.
Теперь на сервере, зная возможности приёма и принципы распространения радиоволн, можно вычислять где какие метки в эфире были видны – то есть, выполнять геолокацию идентификаторов. Устройства-наблюдатели ведь будут видеть и друг друга, и базовые станции сетей мобильной связи. Сопоставляя данные от разных мониторов, географические координаты которых известны точно, получится определить, где находились и устройства-наблюдатели, и источники радиосигналов, которые эти наблюдатели обнаружили в эфире. Метод основан на переборе конфигураций, в которых многие наблюдатели могли принимать одни и те же сигналы, чтобы в итоге получилась такая же картина, как та, что поступила с нескольких мониторов.
Да, такая задача сопоставления меток времени и возможностей приёма – вычислительно сложная, но и компьютеры сейчас мощные. Алгоритмы вычисления идентификаторов сигналов (специализированные “хеш-функции”, упомянутые в самом начале) должны быть так устроены, чтобы близкие по физическим характеристикам радиосигналы получали близкие по значению идентификаторы. Это и позволит найти следы одного и того же источника в массивах идентификаторов, полученных от разных мониторов. Результат не самый точный, но, во-первых, чем больше источников данных, тем выше точность; во-вторых, других вариантов сбора данных может и не быть, однако если они есть, то накопленный по описанной схеме массив идентификаторов позволяет эти другие данные подтвердить или опровергнуть с очень высокой степенью достоверности.
Теперь представьте, что в схеме участвует спутниковая группировка на низкой орбите, которая может принимать сигналы смартфонов, находящихся на земле. Конечно, не только принимать, но и выдавать синхроимпульсы, которые уже примут устройства-наблюдатели, чтобы вернуть через мониторы обратно, на обработку. Тут спектр возможностей становится удивительно широким.
Комментировать »
Новый