Ресурсы: техническое описание TLS, LaTeX - в картинки (img), криптографическая библиотека Arduino, шифр "Кузнечик" на ассемблере AMD64/AVX и ARM64
Starship – это большая возвращаемая ракета SpaceX, которая, пока что, устойчиво не возвращается. Но вот пишут, что штатовский надзорный орган FAA согласовал новый план для спуска отработавших ступеней Starship: согласно этому плану, ракета может спускаться над городами с населением около миллиона в каждом (это на территории Мексики, впрочем, не США). Довольно занятное развитие.
Вообще, есть такое распространённое мнение, что если (во время спуска) ракета Starship “выйдет из строя” или будет “потеряно управление”, то ракета просто развалится в воздухе и, в основном, сгорит, не долетев до земли – ну, может, какие-то обломки упадут, да. Поэтому, мол, нет ничего опасного в полёте над городами. Но это не совсем так. Конструкция Starship концептуально отличается от конструкции “обычных” ракет-носителей. В конструкцию Starship прямо заложен управляемый полёт от старта до приземления – тут есть спуск и посадка: это же возвращаемая система. Значит, эта система, с достаточно заметной вероятностью, может отказать так, что способность к устойчивому полёту сохранится, а вот возможность следования заданной траектории и возможность управления с земли – нет. Так что не сработает даже самоликвидация (которая, вообще говоря, должна автоматически происходить, если на достаточной высоте потеряна связь с центром управления; но как там оно реально сделано – кто ж знает).
Естественно, равно этот же момент, – запланированная возможность устойчивого, управляемого полета, – позволяет перейти от планирования “района падения” заведомо неуправляемой отработавшей ступени к планированию управлемого спуска. Раз можно полёт контролировать, то можно его провести над городами – самолёты же летают. А на случай нештатной ситуации – запланировать небольшие “районы падения” обломков вдоль траектории, но не в городах. Вопрос лишь в том, насколько аппарат, подобный Starship, готов для такого варианта. Всё же, это далеко не самолёт, даже не воздушно-космический самолёт, типа “Шаттла”.
Комментировать »
Кстати, в продолжение недавней заметки про то, что тип float – это не про числа, тем более, не про действительные числа. С точки зрения рекомендаций разработчику ПО.
Вообще, если получается, то никаких float и тому подобных инструментов лучше не использовать. Совсем. Тем более, в воплощении различных sin, cos и прочих. Заменять нужно таблицами целых (в смыcле int) значений и целочисленными, со строго фиксированной справа точкой, арифметическими операциями. Особенно, если речь о программировании систем управления и микроконтроллеров.
Если же не получается совсем отказаться, то есть эффективный способ правильно думать про float. Нужно переменные с типом данных float понимать как алгоритмы, и сравнение таких переменных интерпретировать как сравнение алгоритмов. Это помогает избежать многих ошибок (см. ниже).
Например, во float нет дистрибутивности. В алгоритмической интерпретации это означает, что выражения L := b*(c + d) и L := b*c + b*d – присваивают переменной L разные алгоритмы. И действительно, запись, в которой сперва вычисляется сумма (c + d), а потом результат умножается на b, это другой алгоритм, нежели вариант, когда сперва b умножается на d и b умножается на с, а потом вычисляется сумма результатов (обратите, кстати, внимание, что тут ещё и порядок играет важную роль: сначала b*c или сначала b*d? если с точки зерния параллельных вычислений эти операции могут быть выполнены “независимо” разными потоками, то с точки зрения компилятора, имеющего дело с вполне себе последовательной записью, всё может выглядеть сильно иначе – но это явно тема для другой записки).
Если не упускать этот алгоритмический момент из виду, то оступиться становится сложнее. Так, алгоритмическое восприятие float позволяет отбросить сомнения, что в двух описанных выше случаях из L можно достать разное битовое значение при одних и тех же входных переменных – алгоритмы-то там разные. Естественно, сравнивать алгоритмы сложно, но тут понятие об алгоритме – это лишь средство обобщения, мыслительный гаджет, но такой гаджет, который верно работает.
Лирическое отступление. Это раньше к компьютерными вычислениями подходили с нужной тщательностью и пониманием того, что такое преобразование погрешностей. Сейчас, оказывается, времена ИИ и LLM. Поэтому сказку сильно сократили. К сожалению, уже на практике полагают, что во float – действительные числа, “просто с погрешностью” (“просто”, да). Соответственно, получается, что конкретный математический аппарат, служащий основой проектирования алгоритмов ПО, оперирует действительными числами, синусами и косинусами – здесь всё со всем пересекается, всё максимально гладкое, а поэтому выполняются нужные равенства и теоремы существования. Потом математический аппарат прямо переносят в программный код. После чего, в один не самый ожидаемый момент, вычисления ломаются и предположим, аппарат космический улетает совсем не туда, куда предписывала гладкая и непрерывная модель с синусами и дистрибутивностью.
Комментировать »
Кстати, о монетах. Оказывается, в этом, 2025, году в Великобритании выпустили особенно занятную юбилейную монету – два фунта с текстом “Big Brother is watching you”. Посвящена писателю Оруэллу, конечно: 75 лет со дня смерти. Вот, сфотографировал эту монету (на фото узнать её нетрудно, думаю).

(Некоторая “надутость” в нижней части – иллюзия: монета в этой части ровная и плоская, буквы тоже, но слишком зеркальная поверхность привела к такому вот эффекту на фото.)
Комментарии (2) »
Сейчас использование наличных денег сокращается. Это не очень хорошо по многим причинам. Среди этих многих причин есть и не самая очевидная. Дело в том, что исчезновение физического воплощения “платёжных средств”, пусть и в виде денежных знаков, это исчезновение целого класса фокальных объектов. Термином “фокальный объект” тут обозначается некий физический артефакт, позволяющий перенести на него фокус внешнего внимания.
Рассмотрим ситуацию на примере монет. Монета находится в окружающей действительности, монету можно рассматривать, но ей же соответствует вполне конкретная, утилитарная роль. Это не то же самое, что и “внутренний фокус” – то есть, мысленное представление монеты (монету, кстати, даже не все могут представить). Напротив, настоящая монета, находящаяся в обращении, это ещё и переходящий фокальный объект: монета движется – приходит вместе с товаром (“сдача”), уходит в качестве оплаты, в обмен на товар.
Не обязательно быть нумизматом: если монеты имеют хождение в качестве представления денег, то, так или иначе, с ними сталкиваются те жители планеты, кто наличные деньги использует. Раньше этот эффект регулярно вызывался с социальными целями: выпуск памятных монет, замена обозначений на монетах – это всё далеко не просто отражение некоторых событий, а процесс более хитрый, встраивающий некоторый опорный граф в восприятие окружающей действительности.
Отмена наличных денег уничтожает весь этот значительный эффект.
Комментарии (1) »
Много новостей про то, что в некоторой реальной стране, якобы, “назначили LLM министром правительства”. Скорее всего, с реальностью это мало связано, потому что, даже в наше странное время, “замещение должности министра” – это, всё же, юридический момент, а назначить на такую должность можно не просто лишь человека (что уже достаточно для отсечения программ LLM), но при этом человек должен ещё соответствовать некоторым вполне себе формальным требованиям: гражданство, возраст, дееспособность, наличие нужного уровня образования и т.д. Это, конечно, можно всё отменить, определив новую “должность” (в кавычках) для программы, тоже понятно. По сути – получится уже не должность министра, по названию – возможно. Но всё равно выдумка. Однако интересен совсем другой момент, не административный, а технический. Этот момент напрямую связан с дееспособностью.
LLM – это программа, которая исполняется на каком-то компьютере. В принципе, в комментариях часто пишут, что данная LLM, предположим, исполняется в облаке Microsoft, а использует “веса” от OpenAI. То есть, эти корпорации начинают управлять “должностью”, а вовсе не LLM, которой, принципиально, не может существовать в качестве дееспособного лица, в чисто юридическом смысле (пусть в газетах про это писать и не принято, но, всё же, соответствующую концепцию действия, которой пара тысяч лет, пока что из теории права не выкинули). Но это всё только часть проблемы.
Гораздо важнее, что LLM в принципе не может ничего выводить, никаких ответов или распоряжений. Эти ответы/распоряжения формирует даже не тот, кто контролирует веса и иерархию коэффициентов в памяти, а тот, кто контролирует программу чата. Вообще не важно, что там происходит внутри LLM – ответ в чат может написать администратор системы. Этот администратор – будет человеком, как раз по причине дееспособности, которая упоминается выше.
Всё это не отменяет того, что нужно ожидать внедрения юридической значимости для указаний, выдаваемых неким LLM-ИИ – это одна из реальных “угроз ИИ”, про которые, впрочем, газеты тоже не оособенно распространяются.
Комментировать »
Историческая перспектива шумерской математики радикально отличается от перспективы математики древнегреческой: если для древнегреческой до нас дошло немало общетеоретических трудов, но зато все в средневековых пересказах, то от древних шумерских математиков общетеоретических документов не найдено совсем, однако есть немало практических и, видимо, учебных материалов, которые сохранились на глиняных табличках. Эти таблички датируют вторым и третьим тысячелетием до н.э. То есть, это прямые свидетельства, а не пересказ. Например, считается, что Евклид работал около 300 года до н.э. А это на две с лишним тысячи лет позже, чем шумерские таблички. При этом среди сколь-нибудь полных записей “Элементов” Евклида самый древний известный экземпляр – это девятый век. Но то девятый век нашей эры, то есть, ещё более тысячи лет спустя. (Фрагменты “Элементов”, естественно, есть и намного старше.)
Евклид для современной математики гораздо важнее, чем задачи с глиняных табличек. Но, так или иначе, есть и у табличек преимущества: едва ли не в каждой современной книге, где приводится рассказ про квадратные уравнения, рассказ этот начинается с того, что квадратные уравнения решать умели ещё древние шумеры, от которых соответствующая математическая теория перешла к древним вавилонянам. Всё это, как минимум, 3600 лет назад. На древних глиняных табличках есть разборы задач, позволяющие посмотреть, насколько те методы отличались от современных.
Вообще, на табличках до нас дошли некоторые пошаговые алгоритмы, которые всегда показаны на численных примерах. То есть, дан детальный и максимально конкретный разбор метода решения задачи в числах. Но как именно сами методы были разработаны – неизвестно, потому что теоретических работ не найдено. Да, разумно будет предположить, что за такой разработкой стояло более абстрактное понимание: вряд ли решение задач, приводящих к квадратному уравнению, было получено перебором алгоритмов. В сохранившихся задачах квадратные уравнения точно есть (см. ниже), но нет, например, абстрактных сведений о корнях таких уравнений и отношениях между корнями.
Разберём один такой конкретный пример математической задачи с глиняной таблички YBC 6967/P255041. Табличка датируется 1900-1600 до н.э., этот период называют “старовавилонским”. Фотографии четырёх её сторон приведены ниже. Небольшая часть клинописных знаков находится на боковушках таблички, но для наших целей это не важно: в этот раз мы не будем расшифровывать сами надписи по отдельным клинописным знакам – главное, что на табличке нет чертежа, а только текст (но осталось место, на котором мог быть быть чертёж).

(Источник: Yale Peabody Museum, YPM BC 021031; картинка есть в большем разрешении.)
Прежде чем читать перевод текста, нужно согласовать некоторые базовые термины шумеро-вавилонской математики. По сравнению с современным сеттингом, есть ряд важных особенностей.
Во-первых, древние шумерские задачи часто ставятся для пар специальных чисел, которые называют “обратными”. Такие числа используются и в типовых задачах с “квадратными уравнениями”, и на табличках с таблицами умножения. Соответствующие клинописные термины обозначают igi-bi и igi. А именно, это такие парные числа, произведение которых равно степени числа 60. 60 является основанием системы счисления, поэтому обратными будут: 4 и 15, 3 и 20, 6 и 600 и т.д. Это система с плавающей точкой, поэтом 60 тоже может обозначаться единицей (откуда и термин “обратные”: это ведь и есть обратные числа, в том смысле, что их произведение обозначается цифрой 1). Данный подход используется и в задаче на рассматриваемой табличке.
Почему, всё же, 60 – это единица? Потому что система счисления позиционная и шестидесятеричная. Например, в десятичной системе обратным к 2 можно назвать 5, потому что 2*5 это 10. Но десять, вроде бы, не единица? Да, если говорить о числе, но не совсем так, если говорить о системе счисления. Если десятичная точка плавающая, то отличить единицу от 10 или от 100 будет сложно. Если мы перемещаем точку вправо, то из 5 получается 0.5, а это уже точно 1/2 – то есть, обратное к числу 2 в привычном смысле алгебры умножения.
Шестидесятеричная система более удобна для точных расчётов, чем десятичная – подробнее про шестидесятеричную систему можно прочитать в отдельной заметке, а здесь все числа, для удобства, будут даны в десятичной записи.
Во-вторых, шумеро-вавилонская арифметическая система использует разные типы операции умножения рациональных чисел. Помимо привычного сейчас “пошагового” умножения “через повторное сложение” используется “геометрический” вариант, в котором два числа соответствуют длинам сторон прямоугольника (квадрата, в случае нашей задачи), а произведение – это площадь прямоугольника (“поверхность”), которая рассматривается именно как площадь, в двумерном евклидовом смысле. Именно этот, второй механизм используется в рассматриваемой задаче. Вот только тут геометрическая интерпретация лишь подразумевается, поскольку чертежей не приводится.
Казалось бы, какая разница, как определять умножение натуральных чисел? Результат же будет одинаковым, разве нет? Но это не так, результат не будет одинаковым. И не только в современной математике, но и в шумеро-вавилонской. Одинаковым, возможно, будет число, но вовсе не сам результат, который имеет тип. Это прямо влияет на сочетание используемых операций. В шумеро-вавилонском методе ещё и используются преобразования, которые, из-за их геометрической сути, просто невозможны для абстрактных чисел: например, ниже мы “присоединяем” одно число к другому – а это означает “склеивание” прямоугольников, когда сумма – это результрующий прямоугольник. То ли для древних вавилонян числа не были достаточно абстрактными понятиями, то ли это следы дидактического приёма, а уровень абстракции, напротив, был гораздо выше – точно не известно: опять же, всё потому, что не найдено теоретических работ.
Так или иначе, но геометрическая интерпретация прямо используется в операциях “присоединения” и “разбиения”. То есть, подразумеваемого объединения или разделения именно геометрических фигур на плоскости. Поэтому шумерские методы решения квадратных уравнений сейчас сплошь и рядом иллюстрируют чертежами. В конце этой заметки тоже будут чертежи – они, действительно, облегчают понимание. Но необходимо учитывать, что в самой шумеро-вавилонской “математике глиняных табличек” геометрические свойства интерпретировались именно через числа (напротив, в древнегреческой математике – это совсем не так). И числа “одномерного типа” у шемер превращаются в числа “двумерного типа”, когда отрезки образуют стороны многоугольника. Обычно, это прямоугольник. Для этого есть специальная операция. Превращение двух “чисел-отрезков” в одно “число-площадь” дальше будем называть “восстановлением”: а именно – 15 и 4 восстанавливаются в единицу (то есть, в 60).
Вернёмся к табличке. Набранный на ней текст содержит формулировку задачи с пошаговым объяснением того, как эту задачу решать.
Упрощённый перевод, где в скобках даны мои комментарии (адаптировано из Jens Høyrup, Algebra in Cuneiform, 2013):
Из пары обратных чисел (то есть, те самые igi-bi и igi), одно превышает другое на 7.
Чему равны эти обратные числа?
Возьми 7, на которое одно число другое превышает, и разбей на две части: 3½. (Здесь “разбей” – нужно интерпретировать как деление отрезка пополам.)
Восстанови два 3½, результат: 12¼. (А это и есть геометрическая операция получения квадрата на двух равных отрезках, задающих стороны.)
Присоедини 12¼ к исходной площади, равной единице: 72¼. (Обратите внимание: единица здесь – есть первая степень 60 в терминах шумеро-вавилонской системы счисления, то есть, 60 + 12¼ == 72¼.)
Чему равно 72¼? Это 8½. (“Равно” здесь – это обратное геометрическое преобразование, от квадрата, как фигуры, к стороне: то есть, сторона квадрата с площадью 72¼).
Теперь отметь 8½ и соответствующее 8½. (В смысле сторон квадрата.)
3½, элемент площади, отсоедини и присоедини на место. (8½ – 3½ == 5; 8 + 3½ == 12; заметьте ещё раз: (8½)^2 – (3½)^2 == 60.)
Первое число – 12, второе – 5.
12 есть одна часть пары, 5 – вторая. (Те самые igi-bi и igi.)
Попробуем не рисовать чертёж, а сразу понять, какая тут задача, в числах. Первая строка условия говорит, что произведение некоего числа на сумму этого же числа и 7 равно 60. Собственно, если обозначить искомое число x и записать всё в формулах современной алгебры, то и получаем квадратное уравнение.
x(x+7) == 60 x^2 + 7*x == 60 x^2 + 7*x - 60 == 0
Как такую задачу решает школьник сейчас? Очень просто – что называется, не задумываясь:
x^2 + 7*x - 60 == 0, D == 7^2 - 4(-60) == 289, (x_1, x_2) == (-7 +/- √289)/2 = (5, -12). Ответ -12 - не подходит (кстати, почему?); выбираем ответ 5. У нас прямоугольник, одна сторона равна 5, вторая, по условию, 5 + 7 == 12. Ответ: 12 и 5.
Но на исходной табличке нет дискриминанта, там, в современных обозначениях, записано несколько другое преобразование:
Исходная площадь 60, то есть, "единица", которую обозначим q. Пусть p - разность сторон (второе число на 7 больше, то есть, p == 7). x(x + p) == q Тогда p/2 это половина разности (7/2). (x + p/2)^2 == q + (p/2)^2 - то есть, строим больший квадрат, его площадь равна 72¼ (см. правую часть).
Дальше, по табличке, – “геометрически” извлекаем квадратный корень из левой части: то есть, определяем, что отрезок x + p/2 равен стороне квадрата с площадью 72¼. А именно: 8½.
Если переписать в современных обозначениях, то получим то, что принято называть выделением полного квадрата. Именно так и выводится формула для решения квадратного уравнения:
(x + p/2) == sqrt(q + (p/2)^2), x == -p/2 + sqrt(q + (p/2)^2).
Здесь p, q это коэффициенты из x^2 + p*x + q == 0.
Выходит, квадратные уравнения в образовательных целях решают, как минимум, 3600 лет. Cкорее всего – ещё дольше. Это тем более удивительно, что утилитарное применение, – так сказать, в быту, – для квадратного уравнения найти непросто и сейчас (попробуйте найти), что уж там говорить про старовавилонские города и фермы. Пример на табличке больше похож на синтетический элемент некоторой эзотерической практики, чем на задачу, скажем, для земелемера. А вот внутри математики, конечно, квадратные уравнения просто незаменимы. Так что теоретический аспект в шумеро-вавилонской математике должен был существовать, но его следы, почему-то, потеряны. Может быть, записей теории было очень мало, и они выполнялись не на глиняных табличках.
Особенно интересно, что в древнем вавилонском царстве, судя по всему, уже были специально обученные инженеры-информатики, которые проводили ответственные вычислительные операции, используя достаточно универсальные алгоритмы. Считается, что класс подобных задач в древневавилонских методических материалах не требовал чертежа: древние инженеры должны были разбираться с геометрической алгеброй без диаграмм, несмотря на то, что тут современное понятие площади непосредственно служит для воплощения интерпретации числа. Описанное выше уравнение более “квадратное” как раз потому, что квадрат числа – это, буквально, квадрат, как многоугольник с соответствующей площадью. Математические таблички с чертежами, впрочем, тоже имеются в музеях. Но их мало.
Теперь посмотрим на чертёж к задаче.

Условие соответствует верхней диаграмме. Остальные – объяснение метода решения.
Комментировать »
Что касается довольно шумной темы “белых списков” в “Интернете” (так называемом) – процитирую свою публикацию 2019 года:
Блокирование же трафика по IP-адресам несет немало побочных эффектов, что, впрочем, вряд ли способно предотвратить его использование. Предельным вариантом здесь может быть использование белых списков узлов, но тогда это будет уже не Интернет, а закрытая частная сеть.
То есть, тут ключевой момент – “это уже не Интернет”, поэтому-то, в контексте Интернета, тут и обсуждать особенно нечего. Но, тем не менее, ещё одна цитата из той же публикации, про возможное развитие:
Среди перспектив развития систем контроля трафика (именно контроля) можно отметить пропуск только авторизованного трафика. Конечно, такой вариант пока кажется фантастикой. Авторизация трафика — это развитие схемы с белыми списками. В этом случае доступ по спискам IP-адресов и имен не ограничивается, но промежуточные узлы пропускают только трафик, который содержит специальные криптографические маркеры, подтверждающие его легитимность.
Comments Off on Списки IP-адресов и пропуск трафика
Вдруг пришло письмо с предложением “выбрать билет” на РИФ-2025. Билет стоит денег. А РИФ – почему-то теперь осенью. Мало кто помнит, но РИФ – Российский интернет-форум – это такое старинное интернет-мероприятие было. Оно ежегодно проходило в подмосковных пансионатах, но весной и, обычно, в “Лесных далях”. Я даже там бывал несколько раз, довольно давно. Интересно, что домен современного РИФ-2025 – rif.ru – делегирован на серверы Cloudflare.
Комментарии (1) »
Мессенджер Signal внедряет платное централизованное хранение резервных копий сообщений на своих серверах. Занятно, что Signal позиционируется как “безопасный мессенджер”. Впрочем, вряд ли какое-то из этих новомодных приложений не позиционируется как “безопасное” или “самое безопасное”.
У Signal, что называется, и так “накрученный” протокол – в том смысле, что там большое количество логических слоёв, а это усложняет и понимание, и правильную реализацию. Теперь к этому прикручивают ещё и центральное копирование сообщений. Конечно, написано, что копии защищены “сквозным шифрованием” (расхожий маркетинговый термин, end-to-end), а восстановить их может только тот, кто знает специальный секретный ключ (предполагается, что это пользователь данного мессенджера). Конечно, это так только в том случае, если всё сработает штатно. Никакое зашифрование сообщений, как обратимая операция, не является аналогом уничтожения этих сообщений. Кроме того, нужно учитывать, что там заявлена подписочная модель оплаты, то есть, в дополнение к “сквозному шифрованию” должен быть какой-то “сквозной” публичный идентификатор – иначе платёжная система не сможет понять, кто за какую подписку заплатил (да, можно придумать перемешивание с привязкой по секретным ключам, но для этого нужно и оплату принимать совместимым способом, а это из области фантастики).
Раскрученные СМИ мессенджеры развиваются по схожим сценариям. Так что теперь в Signal, даже если пользователь уничтожил устройство с приложением, сообщения можно официально и штатно восстановить из центрального хранилища. Собственно, эта возможность и заявлена в качестве основной. Уничтожение устройства не является обязательным условием копирования сообщений из хранилища. А ключи – ключи утекают в результате ошибок или в результате “ошибок”.
Кстати, я в прошлом году писал про особенности хранения копий сообщений мессенджеров.
Комментировать »
В Cloudflare выпустили разбор ситуации с выпуском неавторизованных TLS-сертификатов для 1.1.1.1. Пишут, что в логах Certificate Transparency (CT) эти TLS-сертификаты не обнаружили потому, что не отслеживались сертификаты для IP-адресов, в мониторинг приходило слишком много сообщений из CT, а также и не для всех доменов/ресурсов настроили отслеживание сертификатов.
В общем – не следили за сертификатами в CT-логах, несмотря на наличие соответствующего собственного сервиса. Ситуация “сапожник без сапог” – не редка в корпорациях, и, к сожалению, настигла Cloudflare тоже. Но тут, как минимум, оперативно выпустили подробный разбор случившегося.
Комментировать »
В продолжение предыдущей заметки, про подозрительные сертификаты для 1.1.1.1, выпущенные УЦ Fina RDC 2020: интересно, что, согласно crt.sh, соответствующие пресертификаты есть и в CT-логах (Certificate Transparency) Cloudflare. Выпускать такие “странные” сертификаты в данном УЦ начали ещё в прошлом году. То есть, получается, что либо Cloudflare вообще не следит за именами из сертификатов даже в тех CT-логах, в которых является провайдером, либо это всё же по согласованию с Cloudflare выпущено. Естественно, последний вариант – ну уж совсем маловероятен, а вот в то, что Certificate Transparency не отслеживается – поверить как раз нетрудно.
Комментировать »
Новый