Ресурсы: техническое описание TLS, LaTeX - в картинки (img), криптографическая библиотека Arduino, шифр "Кузнечик" на ассемблере AMD64/AVX и ARM64
Из серии “Кто бы сомневался!”: в Project Zero публикуют описание того, как, проэксплуатировав две уязвимости (CVE-2025-54957, CVE-2025-36934), им удалось выполнить на android-устройстве произвольный код с правами ядра ОС. Тут самое интересное не уязвимости, а то, что данную атаку на уровень 0-click (то есть, без участия пользователя) переводит наличие в смартфоне ИИ-агента, читающего входящие сообщения.
Вектор атаки требует, чтобы библиотека кодека прочитала специально подготовленный звуковой файл. Для этого нужно открыть и почитать вложение к входящему сообщению SMS/RCS. Раньше для этого пользователь должен был кликнуть на сообщение и попытаться открыть его. Но теперь за пользователя всё удачно делает ИИ-агент, встроенный в гугловый сервис и выполняющий транскрибирование всех голосовых сообщений.
Вот поэтому попадает в серию “Кто бы сомневался!”. Как говорится: эти ИИ-агенты – они и эксплоиты будут вместо пользователя на его устройстве запускать. Максимальная автоматизация.
Комментировать »
Одним из достаточно безопасных способов передачи файлов данных между разными информационными системами является использование “файлообменной” машины (обычно – виртуальной машины, выделенной для этой цели). То есть, экспортирующая система силами скрипта-робота выкладывает файлы данных на обменную машину, а импортирующая система – забирает свежие файлы, зайдя на файлообменную машину силами собственного скрипта-робота – см. схему.

И тут ни одна из систем, обменивающихся файлами, не обращается к другой системе напрямую, ни одной из систем не требуется доступ к ресурсам другой системы. Более того, файлообменная машина играет регулирующую и фильтрующую роль: никакой сервис, работающий на этой машине, не должен куда-то подключаться “наружу”, куда-то – это к системам, между которыми и передаются данные.
Поэтому получается добротная, обозримая и понятная точка обмена файлами. Такая архитектура позволяет даже сеть передачи данных выделить под задачу – то есть, файлообменные машины находятся в обособленном сегменте (логическом, виртуальном или “физическом” – как угодно), при этом контроль сетевого доступа дополнительно осуществляется вне файлобменной машины. Можно даже сделать доступ через какой-нибудь физически изолированный канал (не сеть): например, прямое соединение оптоволокном.
Основная цель подобной схемы в том, чтобы максимально логически изолировать разные информационные системы, сохранив возможность передачи данных. И такая схема изоляции систем в чём-то очень хороша, а в чём-то – не так хороша, но положительные стороны перевешивают при сравнении со многими другими вариантами организации передачи данных.
Рассмотрим практические особенности схемы с выделенной файлообменной машиной.
Итак, пусть одна информационная система экспортирует файлы, а вторая – импортирует. Для экспорта нужно обеспечить “исходящий” сетевой доступ к файлообменной машине: естественно, “исходящий” – тут не обязательно работает на уровне “диода данных”. Конечно, в идеале можно сделать аппаратный однонаправленный интерфейс, в котором физически не предусмотрено передачи любых данных в обратную сторону. Но в большинстве практических случаев это излишне, прежде всего потому, что теряется возможность аутентификации одной из логических сторон, то есть приложений (каждую физическую сторону – аутентифицировать может система построения канала). Поэтому в данном обзоре не будем совсем строить сложности, а ограничимся организацией выкладки файлов при помощи SSH-доступа. То есть, сервис (скрипт) на экспортирующей системе (“Система А” на схеме) периодически подключается по SSH к файлообменной машине и выгружает туда файлы (заметьте, вовсе не обязательно выгружать через scp – это, опять же, прочие детали, но немного про них будет в конце записки). Это не “диод данных”, но файлообменная машина, с логической точки зрения, оказывается “однонаправленной” системой: подключиться туда можно только по инициативе передающей стороны, и никакие файлы данных при этом на скачиваются (но загружаются).
Естественно, установление SSH-соединения требует не только уровня подключения с управлением сессией (TCP, в данном случае), но и двунаправленного взаимодействия с сервером на уровне SSH: сервер должен ответить, прислать ключи и так далее. Так что однонаправленным соединение оказывается только на самом высоком логическом уровне. Тем не менее, SSH-сервер, обычно, является типовым элементом и уже есть в операционной системе (например, через него ходят администраторы), поэтому тут не добавляется ничего принципиально нового, а вот имеющееся – можно и урезать (см. ниже).
Атакующая сторона, если она взломала файлообменную машину, не может, штатно, куда-то подключиться с этой машины, но может, например, подменить присылаемые файлы. Более продвинутая атака состоит в воздействии на SSH-сервер: технически, действуя умело и изящно, можно “перепрыгнуть” в обратную сторону – от SSH-сервера на подключающийся клиент. Но это уже будет высший пилотаж, даже для хорошо подготовленного пентестера.
Заметьте, что так как инициатива подключения находится на стороне сервера передающей системы, то, после вторжения на файлообменную машину, не получится как-то гарантированно навязать нужные данные этой передающей системе – придётся дождаться подключения. Это важный момент, который исключает сразу много классов уязвимостей. Например, перемещение данных между логическими HTTP-соединениями: если бы с файлообменной машины можно было куда-то штатно подключиться по HTTP, то в это “куда-то” можно было бы в любой момент отправить “полезную нагрузку”, взломав, таким образом, следующий хоп. Когда подобные исходящие запросы заведомо блокируются, придётся ждать подключений (того же SSH). Всякое ожидание увеличивает шансы обнаружения вторжения – это очень важный момент, про который постоянно забывают. (Естественно, захват контроля над файлообменной машиной позволяет попробовать найти что-то в “ближайшей сети” и т.д. Именно поэтому такая машина и должна быть изолирована на сетевом уровне.)
Посмотрим теперь на ситуацию со стороны другой информационной системы, которая принимает файлы (“Система Б”). Сервис (скрипт) в этой системе, как мы договорились, тоже имеет возможность SSH-подключения к файлообменной машине: подключаясь, этот сервис забирает новые файлы, которые выгружены со стороны экспортирующей системы. Если атакующая сторона захватила импортирующую систему, то какие есть возможности в отношении экспортирующей? Получается, что такой атакующий может зайти на файлообменную машину тем же аккаунтом, который использовал штатный сервис. Как минимум, автоматом получаем возможность читать экспортируемые файлы. Как максимум – можно поднять привилегии. Можно-то – можно, но не факт, что так просто.
Почему-то часто считают, что SSH-доступ всегда эквивалентен локальному шелл-доступу к основной системе. Но это не так. Понятно, что, – по нынешним-то временам, – путь от локального аккаунта до суперпользователя не так долог, как хотелось бы (возможно, теоретически, это не так под чем-нибудь вроде хорошо настроенной FreeBSD, но речь про практическую ситуацию). Однако, никто ведь не сказал, что и SSH-сервер, и шелл, предназначенные исключительно для реализации обмена файлами, нельзя изолировать локально, выкинув всё лишнее, и не только под FreeBSD. Нет, вовсе не обязательно использовать тот же сервер и тот же шелл, которые нужны DevOps для управления. Напротив – подключаемся, заходим, а там изолированная директория и, вместо полноценного шелла, только урезанный набор из ls, mkdir, cat, (s)cp и mv (rename), предположим. То есть, для атакующего – опять дополнительные шаги и локальные хопы (loopback какой-нибудь использовать и пр.), а каждый хоп, не забывайте, тоже повышает шансы обнаружения вторжения.
При этом SSH-авторизация обеспечивает защиту доступа к файлообменной машине (когда работает, конечно, что уж там). Но в описываемой схеме, да просто так, – даже захватив одну из информационных систем, которые файлообменную машину используют, – перейти в другую информационную систему нельзя. Точка обмена файлами оказывается своего рода тупиком: нужно ломать и её тоже, а возможности сильно ограничены.
Сравним теперь нашу схему с вариантом, когда файлообменной машины нет, а экспортирующая информационная система (“Система А”) загружает данные непосредственно в импортирующую (“Система Б”), через специальный высокоуровневый прикладной интерфейс (API), поднятый именно с этой целью. Это может быть rsync, но может быть и HTTP-сервер. Тогда, если принимающая система скомпрометирована, то получается, что экспортирующая система уже прямо подключается к контролируемому атакующей стороной серверу. В случае файлообменной машины это не так: там требовалось сперва захватить саму файлообменную машину. Но, естественно, остаётся необходимость ожидать момента подключения.
Ещё хуже, если используется HTTP-сервер, общий с другими задачами импортирующей системы. Этот HTTP-сервер может быть атакован и захвачен в рамках выполнения им других задач, но при этом атакующий получает плацдарм для прямой атаки на другую внутреннюю информационную систему (“Система А”), подключающуюся периодически для выгрузки файлов данных. Но для этой второй системы HTTP-сервер оказывается доверенным, так как задействован во внутреннем процессе. А на стороне принимающей системы – этот же сервер раздаёт, предположим, веб-страницы всем желающим.
А если атакующий захватил передающую систему, то, при условии прямого подключения, он может сразу атаковать и принимающую. Более того, тут уже подготовлен тот или иной доступ – скажем, SSH или даже TLS с двухсторонней аутентификацией. При этом отсутствие логического промежуточного узла, файлообменной машины, не позволяет эффективно разделить информационные системы на логическом же уровне протокола сетевого взаимодействия – доступ уже должен быть прямым (естественно, промежуточные сетевые узлы тут могут быть всё равно, но это теперь совсем другой аспект). Более того, прямое соединение систем навязывает всякие прочие “архитектурные решения”, в которых системы станут смешиваться и, по ошибке администратора, из одной – окажется легко перепрыгнуть в другую, без учёта направления.
Комментарии (2) »
Регулярно теперь попадаются упоминания про то, что нужно и разрешить использование, и немедленно реализовать, внедрить “ИИ-агентов/LLM” там, где раньше допускалось лишь строго “детерминированное” программное обеспечение, например, в бортовые системы боевых самолётов. Типа, такое внедрение ИИ даст “невиданные преимущества”, “качественный скачок” и т.д., и т.п. – следует набор типичных для “ИИ-хайпа” журналистских штампов.
Этот аспект, вообще говоря, как раз и является основной “опасностью внедрения ИИ”: непрозрачным, ненадёжным системам поручат то, что поручать таким системам нельзя. А мотивировать такой подход, как раз, будут желанием “совершить качественный скачок”. Это вот не менее основной и необходимый элемент Нового средневековья. Про попытки внедрения ИИ-агентов я писал не раз. Например, пару лет назад на dxdt.ru, применительно к новостям из DARPA, – несколько цитат из той записки:
Одно дело, когда речь идёт действительно об алгоритме, выдающем труднопредсказуемый для внешнего наблюдателя результат, но, при этом, сам алгоритм вполне себе может быть записан и задокументирован, а совсем другое дело – когда в “недетерминированность” превращается принципиальная недоступность внутреннего устройства системы ИИ для понимания даже разработчиком.
“Недетерминированный” алгоритм, но в классическом понимании, может выдавать такую последовательность отклонений органов управления летательного аппарата, которая приводит к движению по сложной, псевдослучайной траектории, ведущей, тем не менее, в заранее заданную точку – давно известный подход, применяемый на практике. Кстати, применяется не только для управления полётом, но и в случае радиосигналов, как для защиты от помех, так и для затруднения обнаружения.
Понятно, что если траектория и манёвры некоторого робота предсказуемы заранее, то перехватить такого робота сильно проще. Поэтому и требуется некоторая степень недетерминированности. Однако подобные алгоритмы имеют вполне конкретное, – детерминированное, так сказать, – описание. А если описание конкретное, то его можно превратить не только в обозримый исходный код и прикрепить к документации, но даже и попытаться реализовать формальное доказательство корректности: для практических систем это вполне возможно, если, конечно, там не десять миллиардов коэффициентов, как в продвигаемых ИИ-решениях.
Вообще, речь тут всегда идёт не столько про ИИ, – который лишь служит обёрткой, – а про понимание “детерминированности” и о точке зрения, с которой эта “детерминированность” рассматривается. Например, для внешнего набюдателя, не знающего ключа, последовательность переключения частот передатчика выглядит “недетерминированной”, но как только этот внешний наблюдатель знает ключ, то и последовательность сразу же становится “детерминированной”. Строгое определение гласит, что такая последовательность вычислительно неотличима от случайной. Соответственно, если смотреть строго, то всё, что используется в подобных программно-аппаратных системах – практически детерминированно и так.
За “ИИ-хайпом” скрывается тот факт, что все эти “ИИ-агенты” работают на полупроводниковых процессорах, являющихся конечными автоматами. Да-да – опять же, строго говоря, тут нужно всё брать по модулю “квантовых процессов” внутри базовых кристаллов аппаратуры. Об этом речь пойдёт отдельно. Но на практике же, если аппаратура работает верно, то можно предсказать выдачу “ИИ-агента” точно, несмотря на то, что внутри него присутствует рандомизация – была бы полная информация о состоянии и внутреннем устройстве этого “ИИ-агента” и вычислительная возможность эту информацию обработать. Такая возможность тут определяет всё прочее: если пространство перебора для коэффициентов слишком большое, то только наличия информации уже недостаточно для практического изучения.
Но, если возможность всё же есть, то что же это получается – это тогда никакой не “интеллект”? Получается так, да.
Тут важно учитывать, что с толкованиями детерминированности алгоритмов, когда речь про новомодные ИИ-системы, тоже происходит некоторая подмена понятий, сдвиг уровня интерпретации. Скажем, алгоритм, по которому управляется какой-нибудь самолёт (или ракета), может казаться детерминированным в том смысле, что по официальному описанию этого алгорима возможно точно предсказать то, как поведёт себя самолёт в заданной конфигурации и при заданных внешних условиях (сигналах на датчиках, например). Возможно, но не факт, что возможность реализуется. Тогда вопрос про допуск “ИИ-алгоритмов” и ИИ-агентов сводится к тому, может ли кто-то из инженеров-разработчиков прочитать и понять документацию, сопоставив её с реальной реализацией алгоритма. То есть, это вопрос уровня понимания и возможностей по исследованию системы. И можно же ведь сказать, что если используется ИИ-агент, управляющий самолётом, а его работа не требует понимания инженером – это же ИИ. Так же и в другую сторону – если инженер не может понять документацию, то ситуация уже эквивалентна использованию “недетерминированного” ИИ-агента. Отсутствие ментальной модели – постулирует наличие ИИ где-то рядом.
Насколько хорошо пилот современного истребителя понимает, как там что в этом истребителе работает в данный момент времени? Как говорится, модель-то полёта в голове есть, но реально происходящие внутри аппаратуры процессы – это сильно сложнее. Потому что – где там и что перещёлкивается, согласно сотням тысяч строк программного кода? Кто знает. Многие и многие пользователи компьютеров, в том числе, разработчики ПО, например, вообще уверенны, что компьютер считает – мол, всё можно перевести в числа (это так) и поэтому всё можно реализовать на компьютере, который считает (это неверно: и перевести нельзя, и компьютер ничего не считает).
С одной стороны, схему, когда “не всё известно точно”, можно обозначить как то, что допускается использование “недетерминированных систем”. Типа, условный ИИ-агент может действовать различными способами, а человек-инженер не имеет возможности предсказать точно, какие именно действия совершит этот ИИ-агент, как не знает и деталей работы той или иной аппаратуры. Вот и вся диспозиция. Если допуск таких ИИ-агентов разрешается, предположим, в бортовые системы управления самолётом, то вот и самолёт теперь с “недетерминированной системой”. С другой стороны, в реальности, за этими ИИ-агентами всё равно стоит детерминированная аппаратура. Просто – теперь понимание устройства системы перешло к каким-то другим инженерам.
Такая вот история с этими ИИ-агентами: на самом деле, под давлением “хайпа”, предлагается согласиться с отсутствием понимания системы инженерами-разработчиками, которые эту систему проектируют. Алгоритм работы – он всё равно где-то есть. Это очевидно: системы работают на обычной полупроводниковой вычислительной технике, просто, иногда её так много, что можно построить “стохастического попугая” (кстати, ещё отдельный вопрос, как всё это сработает на практике, когда связи с дата-центром нет). Теперь, под прикрытием рассуждения о допуске “недетерминированных решений”, фактические алгоритмы выносятся за пределы “ментальной модели” разрабатываемой системы. Зато, мол, “искусственный интеллект”. Отсюда и всё эти определения степени развития ИИ – типа, если для человека непонятно, значит, это настоящий сверхинтеллект (а не чепуха и нагромождения символов какие-то). Да. Получается что-то вроде “духа машины”, который предлагается задабривать специальными волшебными маслами, чтобы всё работало.
Интересно, что даже квантовые процессы, которым можно было бы отвести роль проводника интеллекта, вполне себе могут оказаться детерминированными. Да, господствующее сейчас представление относит квантовые события, типа радиоактивного распада какого-нибудь, к истинно случайным. Но, во-первых, может оказаться, что события такие – они тоже лишь вычислительно неотличимы от случайных; а главное, во-вторых, никакие модные ИИ исключительно квантовых элементов не используют, там обычные процессоры, где квантовая случайность работает как помеха. До тех пор, конечно, пока не послужит источником энтропии в аппаратном генераторе случайных чисел. Но где те генераторы на практике? Ну, разве что, в криптографической аппаратуре.
Комментировать »
“Хабр” – известный ресурс про ИТ – тоже упал, и уже некоторое время лежит. То есть, индексная страница под habr.com с редиректом что-то иногда показывает, но статьи и сервисные страницы – возвращают HTTP 502.

(Update: к 16:00 14.01.2026 – вернулось.)
Комментировать »
Попросил (на английском) ChatGPT 5 объяснить, почему в русском языке форма множественного числа слова “дно” используется для обозначения “жены дона”. Это такая шутка. ChatGPT, ранее, в другой ветке, заявляло мне, что владеет русским на высочайшем уровне, не хуже образованных носителей, так что запрос – по теме.
Однако ChatGPT заявило, в весьма пространных объяснениях, которые я не стану тут приводить, что это не так, не используется “дно” для “жены дона”. Потому что – внимание! – множественное число для “дно” – “днá” (именно так, с диакритическим знаком ударения над “a”). И ChatGPT привело пример:
одно́ дно́,
мно́го днá.
Так-то. Ну а “жена дона” – это “донна”. И дальше ChatGPT объяснило, мол, юмор тут в том, что “люди в шутку говорят: жена дона – это дна”.
А когда я написал, что, получается, это ChatGPT не знает форму множественного числа для “дно”, ответом было уверенное “I do” (“Я знаю”), со смайликом. После чего ChatGPT повторило, буквально, следующее:
The plural of дно́ is днá (stress on the second syllable):
одно́ дно́
два / три / мно́го днá
Это довольно забавно. Ударение, главное, в “днá” – на втором слоге. Не перепутайте. А самое смешное, так это слово, которое ИИ ChatGPT приводит в качестве иллюстрации того, что в русском есть и другие “контринтуитивные множественные”: “око́ → очá”.
Конечно, все эти современные говорилки, по сравнению с временами “хлопка от шампанского” и “личинок, блокирующих собачку в замке”, сильно продвинулись. ChatGPT, надо сказать, годится в качестве неплохого инструмента для поиска необычных примеров в текстах (ну, в тех случаях, когда LLM не выдумывает ответ). К сожалению, использовать этот инструмент для обработки естественного языка нужно с большой осторожностью. А при изучении иностранного языка – это, опять же, так себе помошник. Пример с “дном” и “доньей” хорошо это показывает.
Несомненно, “дно” – это весьма сложный случай. Обычно, вопрос про множественное число для “дна” ставит в тупик носителей русского, даже если они получили профильное (да, как ни странно) образование (литераторы, журналисты, иногда и филологи). Но ни одному образованному носителю русского не придёт в голову утверждать, что множественное для “дно” – “дна”. Именно в этом и состоит тупик: в совершенстве владеющий языком человек сразу понимает, что “дна” – никак не может быть множественным для “дно”; это будет не на русском. Другое дело – генератор текстов, у которого нет и не может быть понимания языка. Но “хайпу” это не мешает.
А множественное для “дно” – “донья”. Например, “сетчатые донья для ульев”.
Комментировать »
Идея очевидным образом обозначать текст, сгенерированный LLM/ИИ, – здравая. Потому что – куда деваться? Если автор той или иной публикации обозначает, что, мол, весь текст, сгенерированный той или иной LLM/ИИ, обозначен отступом и отметкой на полях, то это похвально. Не менее похвально, если те слова выдачи LLM, в которые вмешался автор, тоже выделены.
Есть только один хитрый момент: хорошо бы не менее заметным способом обозначать, что использовалась программа-синонимайзер, генерирующая текст, а провайдер программы – компания “Имярек”. Потому что так будет точнее. Не “ИИ-агент”, не “сверхразумная GPT”, а синонимайзер. Естественно, различные компании “Имяреки”, производящие “хайп”, как главный свой продукт, постоянно выводят используемые обозначения в сторону “интеллекта”, пусть даже “искусственного”. Отсюда, вместо точного указания на то, что автор публикации разместил в ней результат работы синонимайзера, теперь нередко пишут, что “идея данной статьи принадлежит LLM такой-то”, программный код реализовала “LLM такая-то”. Это вот сильно сбивает читателей с толку.
Комментировать »
Небольшой исторический экскурс, про комплексные числа и “квадратный корень из минус единицы”. Читаем исходники Бомбелли. Почему Бомбелли? Потому что без упоминания этого итальянского инженера-математика 16 века не обходится ни один экскурс в историю внедрения комплексных чисел. Про Рафаэля Бомбелли нередко пишут, что он “первым ввёл в обиход комплексные числа”. Несомненно, труд Бомбелли “Алгебра” (L’Algebra) сыграл одну из ключевых ролей в становлении подходов к алгоритмическому пониманию комплексных чисел. Но что именно сформулировал Бомбелли, и как именно? Насколько этот объект похож на современные комплексные числа?
Традиционно ссылаются на небольшой фрагмент из “Алгебры” Бомбелли, в котором прямо определяются правила арифметики для “мнимой единицы”, то есть, для i. Тут, однако, кавычки необходимы: мнимая единица – это в современных терминах; как будет понятно далее, у Бомбелли всё несколько иначе записано.
“Алгебра” Бомбелли написана на итальянском. Чтобы проиллюстрировать различие подходов, я постараюсь в ключевых местах дать дословный перевод текста Бомбелли, максимально близкий к исходнику (ну, на мой взгляд). Это позволит понять, как вообще описывались алгебраические объекты до появления современной нотации, и возможно ли сравнивать объекты непосредственно.
Кстати, современная алгебраическая нотация является настолько огромным достижением сама по себе, что именно её мог бы использовать “попаданец” в средневековое европейское прошлое для эффективного убеждения инквизиторов в том, что он, “попаданец”, реально из будущего. Современные для двадцать первого века теоремы, скажем, типовой “попаданец” не сможет даже сформулировать. Как и убедительно рассказать про “металлических птиц” и “дальновидение”, чтобы обособить свой рассказ от прочих волшебных историй, бытовавших и в средние века – просто, тут необходимо знать слишком много, для “попаданца”. Зато базовая алгебраическая нотация, на уровне записи формул корней квадратного уравнения, нынче хорошо знакома едва ли не каждому, а на образованного инквизитора прошлого произведёт впечатление. Но всё это в художественном произведении, конечно. Почему-то, этот вариант, хоть он простой и доступный, упускают из виду. Вернёмся, впрочем, к итальянской “Алгебре” 16 века.
Ниже дан первый фрагмент скана соответствующей страницы (это издание 1579 года, из библиотеки Linda Hall; страница 169; выделение цветом – моё; в некоторых местах, где допустимо и если не влияет на контекст, – я исправляю опечатки исходника и меняю типографику на современную итальянскую, для лучшего текстового представления, например, u -> v; см. детали ниже).

Итак, итальянский – исходный язык, на котором писал свой труд Бомбелли. Это уже далеко не латынь, но и не совсем современый итальянский – 16 век, всё же. (Знание итальянского для понимания этой заметки не требуется – я все важные слова объясню ниже.) В самом начале страницы, Бомбелли, буквально, пишет (пожирнение тут везде соответствует тексту, выделенному на скане): “Я обнаружил другой тип кубических корней выражений, который сильно отличается от всех других” (“Ho trovato un’altra sorte di R.c.legate molto differenti dall’altre”.)
Здесь сразу же попадается интересный термин: “R.c.legate”, от Radice Cubica Legata, – это обозначение для кубического корня, вычисляемого для некоторого алгебраического выражения (формулы), которое, как сейчас сказали бы, стоит “под радикалом”. Откуда и legata – “связанная” (итальянское radice, “корень” – женского рода; кстати, если вы только изучаете русский, то и “корень” вам тоже может показаться существительным женского рода). В общем, если на русском, то будет “связанный корень” или, что несколько точнее, “присоединённый корень”.
Что тут имеется в виду? Бомбелли определяет соответствующий больший термин – Radice Legata – за несколько десятков страниц до рассматриваемого фрагмента “Алгебры”. И в определении дан такой пример (здесь он записан в современных обозначениях и терминах): пусть кто-то говорит, “найди мне квадратный корень из (7 + √48)”, это означает, что нужно найти такое выражение вида a + √b, которое, “умноженное само на себя, даст (7 + √48)”; такое выражение, пишет Бомбелли, это (2 + √3). Проверяем: (2 + √3)*(2 + √3) = 4 + 4*√3 + 3 = 7 + 4*√3 = (7 + √48). Сходится.
Однако Бомбелли, когда описывает здесь нахождение квадратного корня в подобной форме, не использует термин “квадратный корень”. Он, буквально, пишет: “найди мне сторону” (дословно: trovami il lato). И это, вообще говоря, сторона квадрата, площадь которого равна заданному выражению (с иррациональностью!). Это всё похоже на геометрический подход, разделяющий числа и “величины”.
Нужно отметить, что, как сейчас бы сказали, Бомбеллли строит расширение поля рациональных чисел: потому что (7 + √48) = (7 + 4*√3) – это присоединение к рациональным числам иррационального √3, где √3 – это обозначение числа, квадрат которого равен 3 (определение корней дано у Бомбелли через умножение, а это очень важно). То есть, рассматриваем всевозможные выражения вида a + b*√3, где a, b – рациональные числа. Естественно, во времена Бомбелли абстрактной теории полей ещё не было, как и коммутативной алгебры в современном понимании. Но тем не менее.
Получается, геометрическая интерпретация всё ещё отражена у Бомбелли в терминах (“найти сторону”), но искомые “радикалы” вводятся уже через присоединение “внешнего” корня многочлена, через расширение поля, а не через “углы”, которые сейчас повсеместно связывают с комплексными числами, – например, в радиотехнике, но не только там. Именно алгебраическое определение комплексных чисел через расширение поля (присоединение корня полинома X^2 + 1) и является современным, – “операционным” и алгоритмическим, – вариантом. Угловые меры, как инструмент, конечно, в труде Бомбелли тоже есть, в том числе, при рассмотрении решений кубических уравнений. Но это не комплексные числа, а другой инструмент.
Фактически, “R.c.legate” это запись корня уравнения в кубических радикалах, с присоединением иррациональностей. Но всё же, получается, что речь тут идёт о специальном “радикале”, как способе записи, а не о теоретическом “числовом” объекте. Это следует ещё и из того, что темой соответствующего раздела является решение уравнений третьей степени (формула Кардано, в частности). В современных обозначениях – ∛(a + √d) – кубический корень из выражения, содержащего корень квадратный. Этот последний момент – важен для понимания дальнейшего текста.
Итак, имеем радикалы из выражений вида a + b√d, как способ записи, пригодный для специальных вычислений. Идём дальше – дословный перевод следующего фрагмента со скриншота труда Бомбелли: “эта вещь [радикал] встречается в главе, рассматривающей куб, равный многим ([т.е. кратности неизвестного]) и числу”. Вот этот странный текст про “куб, неизвестное и число”, это есть ни что иное как запись словами уравнения вида x^3 = px + q, если в современных обозначениях. (Далее будем называть здесь q не “числом”, а константой – так понятнее.)
Бомбелли здесь рассматривает куб неизвестного х, слева, и он приравнивается к значению, кратному этому х (p*x), плюс некоторое число (буквально – numero), константа “без неизвестного”, то есть плюс q. Именно такая форма уравнений рассматривается. Вообще, это не единственная используемая “нотация”. Тот же Бомбелли далее в “Алгебре” использует специальную нотацию с отдельным обозначением степеней неизвестной арабскими цифрами (но без формального обозначения самой неизвестной – как сейчас написали бы: x или t). Однако в обсуждаемом фрагменте – тип уравнения назван просто словами. Ни о каких операциях речи ещё не идёт, но тут же вводится важное ограничение, выделяющее интересующий Бомбелли подтип уравнений и приводящее, в итоге, к “мнимым” (или “софистским”) радикалам.
Далее сформулировано условие, что (p^3)/27 больше (q^2)/4, но опять словами, при этом (p^3)/27 = (1/3*p)^3, а (q^2)/4 = (1/2*q)^2. Дословно по тексту: “когда куб одной третьей от кратности [неизвестного] – больше, чем квадрат половины числа [константы]”. В исходном тексте: “quando il cubato del terzo delli tanti è maggiore del quadrato della meta del numero” – “cubato del terzo” – “куб одной третьей”, “è maggiore del quadrato” – “больше квадрата” и т.д. То есть, всё описано словами, и речь о конкретном случае значений коэффициентов. Разительно отличается от современного подхода к изложению материала. Почему (p^3)/27 > (q^2)/4? Об этом сказано буквально через несколько слов.
Пропускаем слова о том, что примеры с таким уравнением Бомбелли разбирает в отдельной главе, читаем дальше и пытаемся разобраться: “соответствующий тип квадратного корня в своём вычислении (Algorismo) требует операций, отличных от всех других, и другого названия” (“la qual sorte di R.q. hà nel suo Algorismo diversa operatione dall’altre, e diverso nome”). Здесь R.q., от Radice Quadrata, – это уже квадратный корень, но терминологическая логика остаётся той же. Почему же речь теперь про квадратный корень, если сначала упомянуты кубические? Потому что здесь написано про “подрадикальный” корень, соответствующий вычислению корня кубического. Собственно, когда вы решаете кубическое уравнение в радикалах, то в процессе решения обязательно возникает квадратное уравнение и квадратные корни. В формуле Кардано они и составляют смысл всей затеи. О чём и пишет Бомбелли далее: “когда куб одной третьей кратности больше квадрата половины константы, тогда нельзя назвать [его] ни больше, ни меньше“. То есть, тут речь про значение “ни с плюсом, ни с минусом”. Необходимо учитывать, что отрицательные числа пока что не используются как класс, привычный сегодня: например, довольно сложно определить, что такое сторона квадрата, имеющая “отрицательную величину”. Поэтому “ни больше, ни меньше” – “ne più, ne meno”, – как операции увеличения и уменьшения чего-то: a + b, a − b.
Формула Кардано имеет вид (a + √b)^(1/3) + (a − √b)^(1/3), то есть, это сумма двух кубических корней, соответствующих R.c.legate Бомбелли, а “ни больше, ни меньше” относится к части √b. Ведь в формуле Кардано b = (q^2)/4 − (p^3)/27, соответственно, если (p^3)/27 больше (q^2)/4, то и получаем отрицательное значение под квадратным корнем. Это и есть та величина, про которую ни сказать, что “она больше”, ни сказать, что “она меньше”.
Дальше: “но [эти элементы] называю “плюс минуса”, там, где их нужно складывать ([увеличивать]), а где их нужно отнимать ([уменьшать]), называю “минус минуса”, и эта операция необходимейшая…” (“però lo chiamerò più di meno, quando egli si doverà aggiongere, e quando si doverà cavare, lo chiamerò men di meno, e questa operatione è necessarissima…”). То есть, в том случае, когда под радикалом отрицательное число, Бомбелли такое сочетание не считает возможным называть, ни “большим”, ни “меньшим” – читай: ни положительным, ни отрицательным, – но называет “плюсом минуса” и “минусом минуса”. Для прототипа i тут вводится специальное, двойное операционное обозначение. Те же “плюс минуса”/”минус минуса” можно перевести и как “больше минуса”/”меньше минуса”. Что это могло бы обозначать? А это больше всего похоже на описание способа выноса мнимой единицы из-под радикала. Например, перепишем (2 − √(-3)) как (2 − i*√3).
Что касается исключительной важности новой операции, которая объявлена “необходимейшей”, то речь тут об уравнениях четвёртой степени (potenza di potenza) разной формы, где подобные радикалы возникают “гораздо чаще, чем другие”.
Далее Бомбелли пишет, что “[подобные радикалы] многим покажутся скорее “софистскими”, чем “настоящими”; такого мнения и я сам придерживался тоже, пока не нашёл для него [радикала] демонстрации геометрической” (“la quale parerà à molti più tosto sofistica, che rale, e tale opinione hò tenuto anch’io, fin’ che hò trovato la sua dimostratione in linee”).
Как ни странно, но геометрическая демонстрация (на плоскости, да), которую Бомбелли приводит отдельно (а я здесь пропускаю), это вовсе не современная геометрическая интерпретация комплексных чисел – с поворотом, углами, мнимой и действительной осями.
Промежуточный итог: Бомбелли рассматривает некоторые “новые радикалы”, отдельный тип квадратного корня, со своим названием и свойствами, как составную часть операции отыскания кубических корней. То есть, в качестве вспомогательного элемента, чтобы операция работала, используется новый объект, который очень похож на мнимую единицу (см. “плюс-минусы” выше), но вовсе не на квадратный корень из минус единицы, как на число вообще и на “рациональное” число в особенности. Далее Бомбелли перечисляет правила умножения “знаков” для нового элемента: “и вначале разберу умножение, определив закон для плюса и минуса” (“e prima trattarò del Moltiplicare, ponendo la regola del più & meno”). На скриншоте ниже – эти определения.

Если новый “минус” заменить на обозначение i, то получится, что здесь написано следующее (пример из: F. La Nave and B. Mazur, Reading Bombelli, 2001):
1. (+)*(+i) = +i
2. (−)*(+i) = −i
3. (+)*(−i) = −i
4. (−)*(−i) = +i
5. (+i)*(+i) = −
6. (+i)*(−i) = +
7. (−i)*(+i) = +
8. (−i)*(−i) = −
Если представить, что “чистый” минус и “чистый” плюс – это подразумеваемые плюс/минус единицы по умножению (как в современной нотации), то получится, что в пятой строке записано (i*i) = i^2 = -1. А это корректное определение мнимой единицы. Может показаться, что обобщив определение квадратного корня в “Алгебре” Бомбелли получаем √(-1) = i, поскольку i*i = -1, но это не так, поскольку Бомбелли не вводит i как “число” или как измерение “стороны”. Это i – приписано сейчас, это некий анахронизм, а в исходном тексте (см. скриншот выше), фигурируют лишь операционные обозначения “плюс минуса” и “минус минуса”. И тем более выделение концепции мнимой единицы оказывается в некотором противоречии с тем, что данные специальные радикалы (R.C.Legata) вводятся непосредственно для выражений вида (a + √d), применительно к кубическим уравнениям. А в современном варианте извлечение кубических корней из комплексных чисел требует формулы Муавра и тригонометрического представления.
Бомбелли находит решение в радикалах для уравнения x^3 = 15*x + 4. Это, пожалуй, второй самый цитируемый фрагмент “Алгебры”. Во времена Бомбелли было известно, что кубическое уравнение всегда имеет один (действительный) корень, а особый интерес представляли только положительные корни. С одной стороны, положительный корень x^3 = 15*x + 4 нетрудно угадать: x = 4. С другой стороны, (4^2)/4 = 4, (15^3)/27 = 125, и формула Кардано даёт для этого уравнения следующее выражение: ∛(2 + √-121) + ∛(2 − √-121). Это как-то не очень похоже на 4.
Вообще, можно найти и некоторые другие озадачивающие варианты значений внутри формулы Кардано для уравнений с очевидным целым корнем, без “отрицательных радикалов”, особенно, если вам знакомо уравнение Пелля, но это тема для другой записки. Что же касается √-121, то это всё равно выглядит сложно. Даже сейчас, для современного взгляда. Потому что, вообще говоря, и значений кубического корня получается несколько, и для случая трёх действительных корней формула Кардано, мягко говоря, несколько бесполезна.
Однако Бомбелли, иллюстрируя свой новый метод, показывает, что (2 + i)^3 = (2 + √-121), если только следовать описанным выше правилам. И действительно, (2 + i)*(2 + i) = (3 + 4i), (3 + 4i)*(2 + i) = (2 + 11i) = (2 + √-121). Соответственно, (2 − i)^3 = (2 − √-121), так сказать, из соображений симметрии (это отмечено у Бомбелли, как ни странно). Поэтому ∛(2 + √-121) + ∛(2 − √-121) = (2 + i) + (2 − i) = 4. Вот только в данном конкретном случае значения нетрудно подобрать под известный ответ. А в других случаях – без рационального аналога тригонометрии с кубическими корнями будет трудновато.
Комментировать »
Попалась интересная публикация о том, как насаждаемые везде и всюду ИИ/LLM реально повлияют на безопасность компьютерных систем, с примерами (англ.): AI will compromise your cybersecurity posture (“ИИ скомпрометирует ваш подход к обеспечению кибербезопасности”).
По ссылке – разобраны расхожие “хайп-заявления” про ИИ/LLM – типа, “ИИ взломает 51% паролей за секунды”, “ИИ самостоятельно успешно написал эксплоиты к 87% описаний CVE” и пр., – а потом, на примерах, показано, как ИИ-системы реально повлияют на процессы обеспечения информационной безопасности: неконтролируемый доступ через LLM-агентов, некотролируемый поток ошибок в коде, навязываемое встраивание внешних систем, про которые даже их разработчики не знают, как они устроены, ну и так далее.
Комментировать »
Ещё лет пятнадцать назад активно обсуждали такой момент: онлайн-сервисы автоматического перевода текста, когда они интегрированы в веб-браузер, могут получать разные внутренние корпоративные документы, которые корпоративные же пользователи туда загружают, дабы получить перевод. Естественно, по таким документам на стороне провайдера сервиса можно строить статистику, сохранять их, подсчитывать похожие документы, и так далее, и тому подобное. (Получается что-то вроде использования онлайн-тотализатора в качестве приёмника утечек от хорошо информированных игроков.)
Сейчас тема развилась так хорошо, что на сторону провайдера ИИ/LLM-сервиса в онлайн-режиме передаётся исходный код программых продуктов, в том числе, внутренних корпоративных программных продуктов и экспериментальных версий. Да не просто код, а сведения о процессе подготовки этого кода. Заметьте, что провайдер обязательно использует этот новый код для “обучения” своих систем. А это прямо означает, что этот же код может быть передан другим пользователям сервиса. То есть, не просто провайдер получит код (тут можно вспомнить “социальную сеть” Github и пр.), но провайдер передаст этот код другим. (Тут вовсе не нужно вспоминать “копирайт” и прочие “бумажные соглашения”: как показала практика, поставщики ИИ/LLM на это внимания не обращают, списывая всё на добросовестное использование “в обучении” LLM.)
Казалось бы, какая разница, что исходный код уходит наружу? Код должен быть так написан, чтобы его утечка не приводила к проблемам с безопасностью самого ПО. Это верно. Но не нужно упускать такой момент: по коду нетрудно сказать, что за ПО разрабатывает компания, соответственно, нетрудно надёжно выявить список коммерческих проектов и текущий статус их разработки – а это уже весьма ценные сведения для конкурентной разведки.
Комментировать »
Если вы вдруг думаете, что “док-станции” и сопряжение наручных “смарт-часов” со смартфоном – это очень новое, то вот система Breguet Sympathique начала 19 века – 1814 года выпуска, из британской Королевской коллекции. Да, это тот самый “Брегет”, упоминаемый, например, у Пушкина. Только здесь большие настольные (накаминные, если точнее) часы снабжены механическим интерфейсом для подключения карманных часов – то есть, самой что ни на есть настоящей, пусть и механической, “док-станцией”.

(Credit: Royal Collection Enterprises Limited / Royal Collection Trust.)
Карманные часы устанавливались в специальный захват на верхней панели основных часов. При этом основные часы автоматически корректировали время карманных и точность их хода.

(Credit: Royal Collection Enterprises Limited / Royal Collection Trust.)
Коннектор крупным планом. Здесь имеется микроскопический центральный вал, который подключается к механизму карманных часов через специальное отверстие в корпусе последних – см. следующую иллюстрацию.

(Credit: Royal Collection Enterprises Limited / Royal Collection Trust.)
В нижней части механизма, за отверстием в корпусе, видны некоторые детали механического интерфейса, при помощи которого регулировалось положение стрелок карманных часов, – они устанавливались синхронно показаниям основных, – осуществлялась коррекция хода карманного механического гаджета (по разнице между опорным временем основных часов и фактическими показаниями времени на карманных). Были и более поздние варианты системы, с автоматическим заводом пружины карманных часов.
Девятнадцатый век. Никаких транзисторов и Bluetooth. Но, естественно, штучная ручная работа.
Комментировать »
Cloudflare пишут об утечке BGP-маршрутов крупного венесуэльского провайдера, случившейся в начале января этого года, непосредственно перед известной операцией США. Краткий вывод: утечки маршрутов происходят постоянно (это факт, не поспорить), поэтому единственное, на что эта утечка может косвенно указывать, так это на то, что были проблемы с сетевым оборудованием, точнее – с его настройками (тут тоже не поспорить – глобальные утечки в BGP вполне себе служат сигналами о том, что именно происходит на сетевом оборудовании провайдера, но для интерпретации сигнала – нужно знать схему сети; соответственно, если вы хорошо подготовленный атакующий, то и утечки маршрутов помогают).
Комментировать »
Кратко этот сайт характеризуется так: здесь можно узнать про технологический прогресс, Интернет, математику, криптографию, авиацию, компьютеры, авиационные компьютеры, вооружения, роботов, вооружение роботов, армии мира, астрономию, космические исследования. И иногда о чём-то ещё (