Ресурсы: техническое описание TLS, LaTeX - в картинки (img), криптографическая библиотека Arduino, шифр "Кузнечик" на ассемблере AMD64/AVX и ARM64
Иногда приходится сталкиваться с мнением, что слуховая система человека, как чувство, “выполняет преобразование Фурье”, подобно некоторой машине, сигнальному процессору, предположим. Вообще, из экспериментов известно, что “акустический тракт” слуха человека, как минимум, работает на восприятии спектральной плотности, то есть, не отдельных чистых гармоник, а распределения энергии по пакетам частот и сочетания “пиков” амплитуды (форманты и так далее). Содержательные эффекты слуха связаны с отношением внутри набора частот. Это, конечно, сугубо механистическая точка зрения, но уже здесь алгоритмическое воплощение преобразований Фурье используется только для визуализации спектра в компьютерах исследователей, а не в слуховой системе. Вообще, более интересен другой аспект.
Как и в восприятии цвета, с восприятием на слух связано много неожиданных эффектов и иллюзий. Как и в случае зрения – основная, содержательная часть результатов работы слуховой системы связана с предыдущим опытом. По крайней мере, та часть, процесс осознания которой индивид может попытаться объяснить. При этом, слуховое восприятие “дорисовывается”, в том числе, с опережением по времени. Сложно сказать, чего больше в конкретных слуховых ощущениях – внешних изменений звукового давления или внутренней работы, основанной на психических эффектах и опыте. Сугубо механистическая модель вполне может давать расхождения даже в таких “зашкаливающих” случаях, как рёв двигателя реактивного самолёта. Так что “преобразование Фурье”, трактуемое как алгоритмический способ превращения сигнала в конечный набор гармоник, тут может служить разве что способом записи “принятых” данных, но не механизмом транслирования звуковых колебаний в слышимое. Тем более, вовсе не обязательно приводить сигнал в другой базис строго тем или иным алгоритмом, реализующим преобразование Фурье.
Комментировать »
Большое количество (сотни) низкоорбитальных спутников, действующих в составе единой системы, с синхронным временем и данными о точном местоположении, это весьма мощная платформа, которая предоставляет ранее не доступные возможности. Например, если использовать сенсоры, работающие в инфракрасном диапазоне (такие планирует штатовское агентство SDA).
То есть, получается распределённая система, которая может наблюдать маневрирующие в атмосфере скоростные аппараты (для этого и ИК-диапазон). Так как спутники образуют информационную сеть, можно автоматически сопоставлять данные о движении целей, полученные с разных ракурсов. Соответственно, становится возможным построить точную траекторию в трёхмерном пространстве (так как это пассивная система, то чем больше точек наблюдения, с синхронным временем, тем выше точность, тем больше полезных данных удастся извлечь из сигнала).
Понятно, что и приёмник на одном спутнике, что называется, может синтезировать измеряемый сигнал по данным, полученным из разных точек орбиты этого спутника. Но тут возможности не идут ни в какое сравнение с тем, когда одна и та же цель строго одновременно (а для этого и нужно синхронное время) наблюдается с нескольких ракурсов разными приёмниками. Особенно, если наблюдаемый объект имеет скорость, сравнимую со скоростью спутника. Более того, синтезирование “по пространству” позволит найти и пронаблюдать цели, которые не были бы видны из одной точки. А так как сенсоры точно привязаны к координатам, можно с высокой точностью рассчитывать вероятные продолжения траектории. И всё это в реальном времени, ну, с учётом того, что какие-то задержки, в сотни миллисекунд, всё же будут.
Комментировать »
Кстати, тут заметили, что в русскоязычной “Википедии” в статье про теорему Ферма, кроме прочего, почему-то написано так: “В 1984 году немецкий математик Герхард Фрай доказал, что решение уравнения Ферма, если оно существует, можно включить в некоторое эллиптическое уравнение…”. Занятно, но не верно. При этом со слов “эллиптическое уравнение” ещё и ссылка ведёт на статью про дифференциальные уравнения в частных производных. Естественно, “краевые задачи” математической физики (“эллиптическое уравнение”), так сказать, имеют весьма и весьма отдалённое отношение к вопросу, ведущему свою историю ещё от Диофанта. Степень отношения здесь ограничивается происхождением названия: конечно, в “эллиптическое уравнение” превратилась “эллиптическая кривая”, а правильно было бы написать, что “можно рассмотреть эллиптическую кривую, связанную с решениями уравнения Ферма” и т.д., а также поправить “двойника среди модулярных форм” (далее, в том же абзаце). Да. Вот только править эту статью в “Википедии” не разрешается – она защищена от изменений.
Комментарии (2) »
Теорема Пифагора регулярно упоминается, когда речь заходит о Великой теореме Ферма. Это логично. Понятно, что теорема Пифагора называется так больше по историческим причинам (как и многие другие теоремы), а известна была раньше, но тем занимательнее выглядит тот факт, что математические идеи пифагорейцев можно увидеть и в современном доказательстве теоремы Ферма. Вообще, осознать математическую машинерию, позволяющую получить это доказательство, довольно трудно. Тем не менее, можно проиллюстрировать ситуацию некоторыми примерными построениями. В них видны необычные аспекты.
Так, связь модулярных форм с уравнением Ферма устанавливается через коэффициенты разложения Фурье для формы. Эти коэффициенты – целые числа, имеющие прямое перечислительное воплощение: количество решений уравнения (“в остатках”, или по модулю некоторого (простого) числа). При этом элементы ряда Фурье можно рассматривать как гармоники. Буквально – как некоторые вращающиеся по окружностям точки. Тогда, если хотите, упомянутые целочисленные коэффициенты образуют некоторый “спектр”, последовательно определяющий симметрии, связанные с исходным уравнением. Точнее, конечно, будет использовать термин “мотив” – однако подобные технические детали тут не важны, но обратите всё же внимание на данное название.
Всё это как раз очень напоминает пифагорейские концепции, описывающие конфигурации явлений окружающей действительности через “сочетаемость” натуральных чисел, происходящую из геометрических свойств этих чисел. И вот оказывается, что тройки решений, удовлетворяющие уравнению Ферма, не вкладываются в набор возможных конфигураций симметрий рациональных чисел. На более техничном языке, конечно, всё звучит сильно загадочнее, даже в первом приближении популярного изложения: эллиптическая кривая, соответствующая упомянутой тройке чисел, не может быть модулярной (Рибет); однако, она должна быть модулярной, потому что все такие кривые – модулярны (это доказательство Уайлса); отсюда и выводится нужное противоречие. Периодические функции, окружности (и диски, кстати), а также разнообразные их логические сочетания, постоянно используются в соответствующем математическом аппарате, но на очень высоком уровне абстракции, поэтому и обозначаются другими терминами, которые с одной стороны – точнее, а с другой – шире. Но конкретно суть доказательства теоремы Ферма, в самом первом приближении, можно представить как невозможность уложить числа в геометрические фигуры. А это подход пифагорейцев, пусть и геометрия используется несколько иная.
Комментировать »
Со всем этим принятием решений по данным от ИИ (Искусственного Интеллекта) не радует вот какой момент: та или иная система ИИ – это необозримый набор коэффициентов, с миллиардами связей, который непонятно как устроен внутри. Конечно, уже есть направления исследований, предполагающие изучать “внутреннее распределение” этих коэффициентов, с прицелом на извлечение чего-то содержательного; может быть, даже с выдачей доказательного объяснения того или иного “решения”, сформированного ИИ. Но пока что больше заметен “хайп”, а что касается “доказательного объяснения” – ну, скорее всего, тут всё сведётся к генерированию автоматом очередного текста в ответ на запрос: “подскажи, как это всё мотивировать и объяснить”.
ИИ сидит в компьютере. Широко известно, что “компьютер не может ошибаться”. Инструменты поддержки принятия решений могли бы приводить к тому, что принимающая решение сторона процесса чему-то научится, так как сможет понять, почему именно такое решение принято (сможет – потому что на то и “поддержка принятия решений”, но это детали). Это приведёт к формированию крупицы опыта. Казалось бы. Но не в случае с ИИ: что там внутри набора коэффициентов – непонятно. Почему такие выводы – не известно, но “компьютер так посчитал”. Проблема с “обучением нейронок” и в том, что в результате как бы “обучения”, повышающего внутреннюю сложность “нейросетки”, не возникает нового знания, однако ещё хуже с выдачей, с результатами работы “обученных нейронок”: ИИ принципиально не делится опытом, потому что опыта там нет. А вот центральное управление принимаемыми решениями через бэкдор, заложенный в саму систему, это расклад весьма вероятный. Тем более, особых сомнений в том, что широта практического применения ИИ в условиях Нового средневековья будет увеличиваться – нет.
Комментарии (1) »
Рассказывают, что самоуправляемые автомобили-такси (например, “Яндекса”, но тут это не так важно) не зависят от помех GPS и “не подвержены кибератакам”, так как используют для навигации автономные системы, установленные непосредственно на автомобиль. Под “кибератаками”, судя по всему, имелось в виду дистанционное вмешательство через сети связи. Несомненно, идея обеспечить движение такого автомобиля без использования “внешней” спутниковой навигации – здравая и очень правильная. Инерциальная система и способность привязки к карте по окружающей конфигурации объектов – это гораздо надёжнее, чем спутниковый сигнал, который сегодня ещё есть, но уже в полдень начинает показывать на тыквенные поля, находящиеся далеко за пределами города.
Другое дело, далеко не факт, что конкретный самоуправляемый автомобиль-такси действительно умеет привязываться к карте по данным видеокамер и лидаров. Технически это реализовать можно, но вот на основе спутниковой системы, с минимальной локальной коррекцией по наличию туннелей и эстакад, а также по свежим бордюрам и другим автомобилям, двигаться проще. Однако эта записка о другом аспекте проблемы. Предположим, что самоуправляемый автомобиль-робот всё же имеет автономную навигацию, а кроме того – не подключен к сетям передачи данных общего пользования (типа Интернета). Какие направления кибератак остаются? А остаются самые интересные.
Автомобиль-робот так или иначе вынужден действовать под управлением (с некоторой степенью эффективности) внешних, дистанционных сигналов. Просто, сигналы эти поступают через видеокамеры, лидары/радары и прочие датчики. Так, автомобиль, предположим, использует системы машинного зрения, чтобы определять собственное положение и даже скорость (как вектор), а также и наблюдать окружающую обстановку. Злоумышленник может попытаться эти системы обмануть. Вполне себе кибератака. Описано множество вариантов, начиная от человека в футболке с нарисованным дорожным знаком и вплоть до контрастных рисунков вдоль дороги, которые активируют “недокументированные возможности”. Второй вариант, кстати, вовсе не выглядит фантастичным – скажем, автомобиль, обнаружив соответствующий рисунок на стене дома, начинает двигаться прямо на этот самый рисунок. Естественно, в последний момент его останавливает встроенная аварийная система. Или не останавливает. Впрочем, основным полезным свойством всякого автопилота в автомобиле, действующего в помощь водителю, должно являться противодействие попыткам “врезаться в стену”. Вот только в самоуправляемом автомобиле нет водителя.
Лидары и радары, установленные на самоуправляемом автомобиле, тоже представляют собой канал для внешних кибератак. Помеха для радара (лидара) может быть простой пассивной, например, внезапно раскрываемый на том или ином направлении отражатель необычной конфигурации (в теории, можно имитировать фантомный автомобиль или пешехода). Возможны и хитрые активные помехи, ничуть не хуже случая с GPS. Активные помехи сложнее формировать, однако составляющий их сигнал будет доставляться в системы автомобиля и, сколь бы странным это сейчас ни казалось, не очень-то трудно поверить даже в RCE-атаки (удалённое исполнение кода) на этом направлении в не столь отдалённом будущем (если, конечно, развитие систем продолжится). Кстати, куда более вероятным транспортом для RCE тут являются разнообразные радиосигналы, которые планируется использовать для обмена информацией между самоуправляемыми автомобилями. Само направление кибератак по радиоканалам – ничем не отличается от старинной темы автомобильных сигнализаций и систем “бесключевого” доступа. Впрочем, последние сейчас уже прошли соответствующие этапы эволюции и позволяют организовать взлом через каналы связи, предназначенные для приложений в смартфоне, а значит, не подходят под ограничение, установленное в начале этой заметки – не использовать подключение к Интернету. Если, конечно, “бесключевой” доступ не реализован при помощи bluetooth-соединения. И этот второй аспект приводит нас к очередному направлению кибератак на автомобили-роботы, особенно, на такси.
Сети есть внутри автомобиля. Кто сказал, что взломанный смартфон пассажира не может сыграть роль узла-прокси, открыв доступ “из Интернета”? Никто такого не скажет: вполне возможно, что подобный проксирующий бот, действующий через подключение к системе развлечения (“хочу свою музыку ставить”) внутри автомобиля-робота, как раз и обеспечит нужный канал для злоумышленников. Дальше, конечно, предстоит оценивать возможности по проникновению из “развлекательного” сегмента в сети управления. Согласно различным рекомендациям, сети эти должны быть разделены на физическом уровне. Соблюдается ли данное правило? Не факт.
Комментировать »
Добавили обработку записей с информацией о DMARC и SPF на сервис проверки настроек интернет-узлов audit.statdom.ru (сервис, кстати, называется САБИУ): проверяется наличие соответствующих TXT-записей, для DMARC определяется заявленная политика.
Сам сервис позволяет получить отчёт о настройках интернет-узла, как эти настройки видны снаружи: вводите DNS-имя – получаете сведения о настройках DNS, TLS, HTTP, HTTPS, MX и показатель рейтинга в баллах (максимально – 100). Полезно при оценке того, как настроен ваш веб-узел и параметры почты. Из суперсовременных технологий – audit.statdom.ru умеет определять DNS-over-TLS на авторитативных серверах.
Комментировать »
Воскресное чтение манускриптов. На скриншоте ниже – фрагмент манускрипта Codex Vaticanus из Ватиканской апостольской библиотеки.

Манускрипт датируют четвёртым веком, но запись обновлялась позже, то есть, не только вносились редакторские правки/комментарии, но и буквы обводились новыми чернилами, что нетрудно увидеть на скриншоте. Именно интересный эффект такого обновления тут хорошо заметен: часть записи текста (Второе послание к Коринфянам) предшествующей версии не обновилась. Почему? Видимо, потому что это повтор (диттография): более блеклая часть повторяется далее. Соответствующий повторный фрагмент начинается словами κάλυμμα ἐπὶ τὴν καρδίαν αὐτῶν κεῖται (“покрывало на сердце их лежит”), но при этом κάλυμμα (“покрывало”) встречается ещё раз уже через несколько слов (см. конец третьей снизу строки и начало второй). Это, естественно, широко известный фрагмент (речь про запись). Можно предположить, что служащий скриптория, копировавший текст первоначально, отвлёкся, а потом ошибочно начал с того же слова, но стоявшего чуть раньше (ну или это были разные переписчики, но, как я понимаю, считается, что нет, не разные). В этом же фрагменте ещё отмечают правку “ε” в “αι” (см. между строк, над “περιερειται”), которая внесена дважды – и в “удалённый” фрагмент, и в обновлённый.
Комментировать »
Сообщают, что “Яндекс” в своих навигационных приложениях начал как-то учитывать влияние спуфинга GPS, используя дополнительные данные (WiFi и пр.). Кстати, я в 2018 году писал, что “центральный сервер мог бы определять наличие GPS-спуфинга на основе анализа данных, поступающих от множества устройств”. Вообще, не ясно, занимается ли чем-то таким сервис “Яндекса”, но если у вас есть множество устройств и центральная точка сбора данных, то можно разные интересные вещи измерять.
Так, навигационное поле, формируемое гражданским сигналом GPS, можно достаточно точно рассчитывать для произвольной точки поверхности Земли, в том числе, с опережением или отставанием по времени. Для этого не нужно устанавливать приёмник в той точке, для которой выполняется моделирование. Да, тут необходимо подчеркнуть, что это всё за вычетом искажений, вносимых постройками и пр. – но, собственно, в этом и состоит интересная часть. К сожалению, от обычного смартфона не удастся получить детальной информации о сигнале GPS, как его видит приёмник, но, тем не менее, часть данных, коррелирующих с сигналом, всё же приходит. Смартфон может дополнительно собирать сведения о сигналах WiFi, о GSM, о передатчиках Bluetooh (и не только). Так вот, если у вас есть устройства “на местах”, которые приносят дополнительную информацию, а не только “координатные данные” GPS, то можно на центральном сервере выстраивать динамику изменения реального навигационного поля по сравнению с моделью, учитывающей только положение и состояние спутников. Это позволяет не просто получить корректирующую величину для всех участников системы, но также увидеть возникающие на местах пространственные дефекты и искажения с развёрткой по времени (то есть, не просто спуфинг), что весьма ценно.
Комментировать »
Кстати, метки (“водяные знаки”), которые позволят определять тексты, сгенерированные системами ИИ (LLM), прежде всего полезны самим разработчикам этих систем: так они смогут избежать “обучения” новых “моделей из нейросетей” на текстах, сгенерированных другими системами ИИ (ну, или предыдущими итерациями одной и той же ветки). Подобное “обучение” второго и третьего порядка может привести к нежелательным результатам. Если всё направление раньше не развалится. Естественно, это относится не только к текстам, в традиционном понимании, но и к изображениям, звукам. Однако, с точки зрения такого подхода к обучению ИИ, всё – текст.
Комментарии (3) »
На скриншоте ниже – результат работы нехитрой программы на языке Python, которая вычисляет в точке x == i (мнимая единица) значение функции, известной как j-инвариант – j(x).

j(x) – это модулярная функция, которая важна, например, в теории эллиптических кривых, но в настоящей заметке теоретические детали не играют существенной роли. Значение j(x) для мнимой единицы – это целое число 1728 (в каком-то смысле, по определению). А 1728 == 12^3, что тоже не является простым совпадением, так как 12 == 2^2 * 3. Можно j(x) записать в виде бесконечной суммы (разложение Фурье или q-expansion, если хотите, где q == exp(2*π*i*x)), что и используется в программе: j(x) == q^(-1) + 744*q^(0) + 196884*q^1 + 21493760*q^2 + 864299970*q^3 +… Коэффициенты – целые числа.
Поскольку модулярные формы имеют большое значение в арифметике, коэффициенты из разложения j-инварианта проявляются в математике довольно неожиданным образом, порождая даже отдельные направления (как в случае “Чудовищной бурды” – Monstrous Moonshine, самогон, который в русскоязычной “Википедии” едва не превратился в “Монструозный отблеск”). Но это тема для другой записки, более подробной. Здесь же отметим, что так как коэффициенты – целые числа, можно взять их побольше (например, 42) и посчитать значение j(x) “численными методами”, проверив, сойдётся ли, и насколько быстро, результат. Понятно, что если в выражение для q (см. выше) подставить x == i, вместо i*i получится -1, что и делает каждый очередной элемент суммы всё меньше и меньше, несмотря на увеличивающиеся коэффициенты.
Однако здесь есть хитрости. Если использовать обычные настройки Python, то точности для вычислений не хватает, результат не сходится. Если взять math.exp() и math.pi, точность по умолчанию, получаем 1728.000000000000014825929946, причём ещё на 13 шаге суммирования – не очень-то хороший результат: больше чем 1728. Увеличение точности само по себе тут не помогает, нужно использовать модуль decimal и ввести достаточно длинные значения для π и e, заменив math.exp() и math.pi на Decimal(E**(Decimal(-2)*Pi))**n, где E и Pi – значения со многими знаками после запятой. Точность в decimal устанавливается при помощи getcontext().prec. Результат со скриншота получен для prec = 81 в Python 3.5. Всё это хорошо иллюстрирует, что компьютеры не считают в действительных числах.
Исходный код (проверьте, что символы табуляции не были “съедены” так же, как и некоторые цифры десятичного разложения):
from decimal import Decimal, getcontext
getcontext().prec = 81
Pi = Decimal('3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982')
E = Decimal('2.718281828459045235360287471352662497757247093699959574966967627724076630353547594571382178525166427427')
M = [
1, 744, 196884, 21493760, 864299970, 20245856256, 333202640600,
4252023300096, 44656994071935, 401490886656000, 3176440229784420,
22567393309593600, 146211911499519294, 874313719685775360,
4872010111798142520, 25497827389410525184, 126142916465781843075,
593121772421445058560, 2662842413150775245160, 11459912788444786513920,
47438786801234168813250, 189449976248893390028800, 731811377318137519245696,
2740630712513624654929920, 9971041659937182693533820, 35307453186561427099877376,
121883284330422510433351500, 410789960190307909157638144, 1353563541518646878675077500,
4365689224858876634610401280, 13798375834642999925542288376, 42780782244213262567058227200,
130233693825770295128044873221, 389608006170995911894300098560, 1146329398900810637779611090240,
3319627709139267167263679606784, 9468166135702260431646263438600, 26614365825753796268872151875584,
73773169969725069760801792854360, 201768789947228738648580043776000, 544763881751616630123165410477688,
1452689254439362169794355429376000
]
j = Decimal(0)
n = -1
for c in M:
j = j + Decimal(c) * Decimal(E**(Decimal(-2)*Pi))**n
print("j = ", j)
n = n + 1
print("j^(1./3) =", float(j)**(1./3))
Комментировать »
Новый