Ресурсы: техническое описание TLS, LaTeX - в картинки (img), криптографическая библиотека Arduino, шифр "Кузнечик" на ассемблере AMD64/AVX и ARM64
Практический пример того, как автоматизация процессов работы с исходным кодом и репозиториями (читать нужно: CI/CD) может легко и неожиданно “выйти боком”: токен с правами полного доступа к репозиториям Python и PyPI на GitHub долгое время находился в открытом доступе.
Разбор инцидента из первых рук позволяет понять, как так вышло: наружу отправился локальный файл .pyc, случайно оставшийся в локальной (общей для процесса сборки) директории, которая требовалась для работы приложения в Docker-контейнере; ну и не менее случайно – в этом .pyc-файле сохранился токен доступа.
Комментировать »
Книга Эдмунда Беркли (Edmund Berkeley) Giant Brains, or Machines That Think (дословно: “Огромные мозги, или Машины, которые думают”, англ.; полный текст доступен по ссылке) вышла в 1949 году, 75 лет назад. В ней рассказано о базовых технических принципах, позволяющих строить компьютеры, а также о нескольких конкретных “думающих” “машинах” того времени, в том числе, про аналоговые вычислители.
Несмотря на название, “хайпа” в книге совсем нет. Напротив, автор ещё в предисловии отмечает, что некоторые его обобщения, – особенно, относящиеся к трактовке понятия “думания”, – могут быть спорными. Основную часть высказанных в этой книге утверждений про машины переписывают и сегодня, но уже безапелляционно и в канве современного “ИИ-хайпа”, а точнее – всех этих LLM/GPT/AI, успешно сдающих студенческие тесты по психологии.
Так, в книге дана та же трактовка способности складывать числа, как признака интеллекта, которую и сейчас постоянно используют. Беркли в данной книге относит к признакам “думания” (think) способность сложить в уме два числа, 12 и 8, получив число 20. При этом описывается, как мог бы складывать числа в уме человек – дописывание позиций к начальному значению (см. ниже). В качестве иллюстрации утверждается, что если бы нашлась, например, лошадь, которая смогла бы складывать числа и выдавать ответы, то такую лошадь люди непременно бы посчитали способной думать (к сожалению, не объясняется, почему говорящая лошадь, не умеющая выдавать ответы на арифметические вопросы, должна быть объявлена не-думающей; это, между тем, очень близко к типичной современной трактовке работы LLM, которые выдают текст на естественном языке).
Тут особенно интересно следующее. Автор сначала описывает “процесс думания”, осуществляемый человеком, складывающим числа: вот, мол, этот человек использует свой разум для того, чтобы отсчитать восемь позиций, начиная от двенадцатой, и прийти к числу двадцать. То есть, казалось бы, тут почти уже охвачен действительно важный, определяющий момент – возможность описать процесс счёта для внешнего наблюдателя, снабдив описание представлением о числах и отделив сам процесс от конкретных, “механических” значений. К сожалению, этот момент в книге тут же теряется, а вместо него, в сопровождении дополнительных аспектов условного ветвления и поиска по индексу (тьюринг-полнота, видимо), развивается небогатое обратное утверждение: мол, если нечто, – даже не говорящая лошадь, а механический калькулятор, – может вывести сумму 12 и 8, то это нечто тоже думает. Естественно, дальше в книге подчёркивается, что речь,- пока что, по состоянию на 1949 год, – не идёт об “интуитивном мышлении”, но в дальнейшем возможна и его реализация. То есть, ещё одна яркая параллель с современными популярными статьями про AGI (универсальный ИИ). Но, напомню, всё опубликовано в 1949 году.
(Вообще, то, насколько по-разному люди считают в уме, как раз является весьма богатым направлением. Важен сам используемый процесс осознаваемого представления, о котором человек может рассказать: оказывается, кто-то представляет себе ленту с ячейками (машина Тьюринга?), кто-то – счётные палочки, а кто-то – таблицу, нарисованную на воображаемом бумажном листе.)
В книге, кстати, определены и детально описаны многие современные разумные способы применения машин: каталогизация данных, поиск в библиотеках, распознавание образов, распознавание рукописного текста, голосовой ввод текста и т.д. Это то, чего часто не хватает современным “хайп-публикациям” про ИИ.
Комментировать »
Кстати, один из свежих примеров текстов, восхваляющих и превозносящих “достижения LLM/GPT”, с точки зрения “интеллекта”: Situational Awareness. Использование слов “восхваляющих” и “превозносящих” тут вовсе не является преувеличением, так как в тексте по ссылке много раз повторяется, что системы LLM/GPT уже успешно решают сложные математические задачи, а также могут рассуждать (reason) и мыслить (think). Сам же тот текст про то, что необходимо немедленно засекретить, ограничить и разграничить понятные узкому кругу лиц технологии ИИ на уровне правительства Штатов. Так что основную часть мы пропускаем, а коснёмся только некоторых занимательных оценок и прогнозов. Пусть прогнозы в Situational Awareness строятся методом экстраполяции графика с помощью линейки, но эти прогнозы, хотя бы, даны с конкретными датами, по годам.
Так, уже в самом начале статьи (на третьей странице) обещают к 2025/26 годам ИИ, превосходящий “выпускника колледжа” (шкала, конечно, традиционная для этой области технологий массовой информации; но, всё же, превзойти “выпускника колледжа” – что бы это значило?). 2025 год – это следующий год. Конечно, под определение “уровня выпускника колледжа” нетрудно подвести очередное успешно принятое комиссией эссе, но на той же странице сказано, что эксперты (pundits) “мейнстрима” всё ещё слепо рассуждают о том, будто данные программы ИИ “всего лишь предсказывают следующее слово”, и лишь немногие знают, что там “на самом деле” (новых деталей, впрочем, не приводится).
К концу текущего десятилетия (а это тот самый, знаменитейший, 2030 год) обещают уже “суперинтеллект” (superintelligence). Занятно, что в ряду характеристик, определяющих качественное превосходство “суперинтеллекта”, построенного на сотнях миллионов видеопроцессоров, приводится и такая: “суперинтеллект” сможет писать “триллионы строк кода (программного)”. Почему суперуровень интеллекта определяется количеством строк кода – не объяснено, но тут же указано, что код этот будет слишком сложным для понимания человеком. Человек, дескать, этот код не сможет понять, даже если ИИ потратит десятилетия на объяснения. Неожиданный поворот.
То есть, казалось бы, человек просто не успеет прочитать “триллионы строк” кода за десять лет. Хорошо. Тут и компилятору-то на многоядерном ЦПУ придётся поднапрячься. Зато весьма серьёзным проявлением “суперинтеллекта” можно было бы признать способность объяснить человеку эти “триллионы строк”. Но нет – почему-то в признаки “суперинтеллекта” ставится обратный эффект: именно невозможность объяснить, чего оно тут такого нагенерировало в триллионах. Может, там где-то и секретный сонет Шекспира затесался, в комментариях. Конечно, ведь под “триллионы строк” непонятного для человека кода можно замаскировать что угодно. (Кстати, проблема понимания программного кода, похоже, настолько глубокая, что именно она и является причиной возникновения знаменитой задачи P≟NP.)
Для чего может быть нужен непонятный код в таких несметных количествах строк? Почему “много кода”, который не может объяснить даже “суперинтеллект”, лучше короткой и понятной программы? Видимо, различные ответы на эти вопросы и определяют степень “понимания” реального положения дел с технологиями ИИ. Возможно, ещё посмотрим, где ИИ/LLM применят в 2030 году. А что обязательно применят, если останутся компьютеры, – в этом-то сомневаться не приходится.
Комментировать »
Кстати, очередная типовая академическая атака на процессоры: в этот раз – процессоры Intel и Indirect Branch Predictor (IBP) поверх Branch Target Buffer (BTB) – то есть, косвенное извлечение данных, относящихся к соседнему процессу на том же CPU, через подстановку фиктивных ветвлений и измерение состояний аппаратуры, пытающейся оптимизировать исполнение кода.
Такие дефекты, при современной архитектуре процессоров, в принципе неустранимы, поэтому статьи по теме, переоткрытой Spectre/Meltdown (о самом направлении именно в процессорах известно с 80-х годов прошлого века, если не раньше), сейчас идут одна за одной стройным потоком. Обратите внимание, что атаки этого типа требуют исполнения специального кода, в несколько тепличных условиях, на том же процессоре, где исполняется и процесс с “секретными данными” и известным внутренним устройством.
(Статья на Bleeping Computer.)
Комментировать »
В июне 2024 года заметок на dxdt.ru вышло не так уж много, но некоторые, всё же, можно отметить отдельно:
LLM и задача про название книги (на примере GigaChat) – несмотря на то, что LLM/GPT продолжают называть “искусственным интеллектом”, “сдавшим ЕГЭ”, эти синонимайзеры текстов не могут решать даже очевидные задачи уровня второго класа средней школы.
Техническое: имена в TLS и Nginx – как правильно различать “баги” и “фичи” веб-сервера Nginx, применительно к способу задания поддерживаемой версии TLS.
Планеты и окружности – верный ответ на “очевидный” вопрос о причине смены дня и ночи на Земле, который приводит к преобразованию Фурье и к объяснениям связанных онтологических подходов.
Байты ключей в квантовом компьютере – как именно могли бы быть восстановлены секретные ключи из записи трафика, если бы существовал подходящий квантовый компьютер.
Частотность слов и ChatGPT в аннотациях – частотность слова delve(s) и попытки обобщения при помощи научных статей результатов влияния LLM на научные статьи (как тексты).
И ещё раз порекомендую из этого списка заметку “Планеты и окружности“.
Комментировать »
Google убирает из Chrome доверие оконечным сертификатам, выпущенным Entrust/AffirmTrust, начиная с 1 ноября 2024 года.
Интересно, что, как написано, реализуется это всё по SCT-меткам в сертификатах: то есть, не важно, какие ещё параметры указаны в самом сертификате, учитываются только метки времени в SCT, выданных логами Certificate Transparency (такие метки от доверенных логов должны входить в состав сертификата, иначе он тоже будет считаться недоверенным). Очередная иллюстрация того, насколько процесс валидации серверного сертификата в браузере может отличаться от “обычной реализации”.
Комментировать »
На сервисе ТЦИ audit.statdom.ru добавлена проверка поддержки криптосистемы X25519Kyber768 на TLS-узлах (HTTPS).

Комментарии (2) »
Сообщают про неожиданную замену кода JS-библиотеки Polyfill.io после смены администратора домена или администратора веб-сервера, раздающего код (насколько можно понять). Библиотека используется в качестве внешнего ресурса на многих сайтах, а в результате изменения кода некоторые браузеры пользователей перенаправляются на сторонние сайты. Это происходит без ведома веб-мастера, понятно, который может ничего и не замечать, поскольку для него перенаправлений нет.
Я, например, в 2019 году (но, конечно, и многим раньше) писал про внешние библиотеки на сайтах буквально следующее:
На первый взгляд может показаться, что библиотека выполняет только те функции, ради которых её использовал веб-разработчик. Но это не так: программный код библиотеки может быть изменён владельцем узла, с которого библиотека загружается (либо третьей стороной на пути до клиента), после чего она сможет реализовать какой угодно набор функций, например, собрать пользовательские данные со страницы, изменить её содержание, сделать просмотр недоступным, перенаправить браузер на произвольный адрес и так далее, и тому подобное. В некоторых современных браузерах существует механизм базовой защиты от подмены исходного кода встраиваемых библиотек под названием Subresource Integrity (SRI), но на практике этот механизм ни на каких сайтах не используется.
[…]
Администратор узла, с которого загружается библиотека, волен как угодно вмешиваться в её код. Реально передаваемый клиентскому браузеру файл может выбираться индивидуально, другими словами, атака, связанная с подменой библиотеки, может быть точно настроена на:
конкретные IP-адреса (т.е. конкретных пользователей);
конкретные типы браузеров;
определённое время;
любую комбинацию этих настроек.То есть даже если администратор исходного веб-ресурса, test.ru в нашем примере, пытается как-то отследить корректность работы узлов, на которых находятся используемые библиотеки, он не в состоянии этого сделать: для IP-адресов, с которых проводится проверка, всё может работать корректно, при этом для других посетителей сайта картина окажется совсем другой.
(Отмечу, в скобках, что хотя бы SRI сейчас начали иногда использовать, но внедрение SRI – всё равно редкий случай.)
Комментарии (2) »
На скриншоте ниже – график частотности слова delves в текстах корпуса 2019 года по версии полезного сервиса Google Ngrams (период: 1800 – 2019 годы, английский язык):

Английское delve означает “копать”, “рыть”, но и “рассматривать” – в значении “тщательно разбирать и изучать предмет, исследовать”. Форма delves здесь специально, это не опечатка – см. ниже.
Вообще, delve – родное для современного английского языка слово, однако редкое даже для классического литературного английского (который существенно отличается и от разговорного, и от “академического” – см. ниже). Тем не менее, в контексте “исследований” delve встречается в комедии Шекспира The Tragedie of Cymbeline: “I cannot delve him to the root”. У Диккенса можно найти в A Tale of Two Cities, но тоже придётся покопаться: “men and women here, to dig and delve”. В общем, слово выразительное (это нормально для английского, который больше аналитический), а для “академического языка”, если только речь не о языкознании, может быть признано слишком выразительным. (Delves – это ещё и фамилия. Нельзя забывать и delve into.)
Вернёмся к графику, на котором, – для delves, – отлично виден рост, но, если обратить внимание на вертикальную шкалу, общая доля не слишком велика. (Оси, к сожалению, в Google подписывать не умеют, что, как бы, существенно снижает доверие к результату, тем более, что не подписывают не только оси, но и шкалы, да и сами графики; всё же, воспользуемся этим вариантом.)
Выбор слова и вся эта предыстория могут показаться странными, – пусть и позволяют поставить тег “Лингвистика“, – однако в свежей научной работе (препринт [*]) по пикам на графиках частотности слов определяют влияние ChatGPT и прочих LLM на текстовый состав аннотаций научных (опять же) работ. И delves там используется непосредственно, см. второй скриншот:

(Тут, между прочим, вертикальные оси подписаны, горизонтальные – нет.) Из сопроводительного текста нетрудно понять, что два верхних ряда – это слова, которые в работе назначаются признаками деятельности LLM, а нижний ряд содержит графики слов, взятых для сравнения и связанных с хорошо известными шумными феноменами. Delves – в левом верхнем углу.
В работе исследована статистика слов из аннотаций (“абстрактов”) научных публикаций PubMed – около 14 млн “абстрактов” за период с 2010 по 2024 год (представьте, кстати, сколько научных работ публикуется ежегодно; и это ещё LLM только начали разворачиваться). Выделены “резкие скачки” на графиках по некоторым словам, что связывается с влиянием использования ChatGPT и других LLM, которые могли быть задействованы при подготовке текстов. Действительно, LLM, являясь синонимайзерами переростками, выводят редкие слова в генерируемый текст, часто – невпопад. Но вот почему может быть верным обратное утверждение, – что “выбросы” редких слов в аннотациях свидетельствуют о “вмешательстве” LLM, – из исходной работы не очень понятно (кроме, конечно, указания на странное совпадение по времени). Предположим, кто-то из авторов прочих публикаций использовал новое слово в статье. Другие авторы, которым слово понравилось, тоже стали его использовать. На графике Google (с неподписанными осями) delves резко растёт ещё с 1981 года – свидетельствует ли это о возвращении дополнительных произведений Диккенса в школьную программу (в Англии, конечно)? Не факт, но всякое может совпасть по времени. Естественно, корпус сервиса Google Ngrams отличается от выборки PubMed, это тоже понятно.
Нет особых сомнений в том, что ChatGPT (как и другие LLM – дежурная оговорка) активно используется в подготовке текстов научных работ. Это, собственно, и есть начало перехода LLM к “настоящей научной деятельности”, о котором так много писали ещё лет пять назад. Более того, аннотации и тексты работ, написанные GPT/LLM, будут потом “прочитаны” LLM/GPT, что не только увеличит поток публикаций, но и составит “замыкание ИИ” (пусть некоторые защитные меры и реализуются). Вопрос в том, насколько соотносятся с таким переходом “выбросы” частот редких слов, не перестающих при этом быть редкими, в “абстрактах”.
Необходимо, впрочем, признать, что авторам исходной работы совсем не чужд профильный юмор. Цитата:
We hope that future work will meticulously delve into tracking LLM usage more accurately and assess which policy changes are crucial to tackle the intricate challenges posed by the rise of LLMs in scientific publishing.
(Смысла переводить нет, потому что это, очевидно, аллюзия к общей теме работы: “meticulously delve”, “tackle the intricate challenges” и др.)
[*] Dmitry Kobak, Rita González Márquez, Emőke-Ágnes Horvát, Jan Lause;
Delving into ChatGPT usage in academic writing through excess vocabulary
arXiv:2406.07016
Комментировать »
Если (вдруг) появился универсальный “квантовый компьютер” нужной мощности, то как именно будут выглядеть технические шаги по раскрытию ранее записанного TLS-трафика? Под “квантовым компьютером” здесь подразумевается аппарат, выполняющий алгоритм Шора. А в роли взламываемой криптосистемы выступает алгоритм Диффи-Хеллмана на эллиптической кривой (ECDH – типовой алгоритм для современного состояния TLS). Шаги потребуются следующие.
1.
В записи трафика присутствуют начальные TLS-сообщения, обеспечивающие распределение общего секрета. Если таких сообщений нет, то раскрыть трафик рассматриваемым способом – не выйдет. Выделить начальные сообщения нетрудно: они начинаются с байтового префикса с зафиксированным значением и имеют строгую структуру. В трафике всегда остаются ключи, согласованные сторонами по протоколу Диффи-Хеллмана (равно как и с использованием RSA или другого метода инкапсуляции). Я писал об этом ранее. Заметьте, что записываются и ключи, согласованные с использованием современных криптосистем, обладающих постквантовой стойкостью. Просто, считается, что их сложнее восстановить даже с использованием гипотетического квантового компьютера.
Из начального сообщения клиента выделяется блок с открытой частью клиентского обмена ECDH. Например, если используется ECDH на кривой P-256, то в специальном и легко обнаруживаемом блоке данных будет содержаться пара координат точки P на кривой P-256, представляющей собой открытую часть обмена ECDH. Это 64 байта (плюс дополнительные байты с указанием на используемый формат), то есть, два блока по 32 байта: координаты X и Y.
2.
Клиентская часть ECDH представляет собой результат умножения базовой точки на секретный скаляр – значение скаляра и есть секретная часть ECDH клиента: это натуральное число n. Открытая часть ECDH, точка P, это результат [n]G, где G – точка-генератор, заданная в параметрах криптосистемы.
Полученные координаты точки P “загружаются” в квантовый компьютер, который уже должен быть настроен на параметры соответствующей криптосистемы, то есть, содержать схему, реализующую алгоритм Шора (нахождения периода функции) для подгруппы кривой P-256, образованной точкой G. Как именно загружаются значения в квантовый компьютер – пока что не известно, поскольку никаких практических квантовых компьютеров создано пока что не было (ну или, если хотите, не было опубликовано их содержательных описаний). Вероятно, у этого компьютера должен быть некоторый классический интерфейс, воспринимающий значения байтов координат точек, и переходные схемы, которые преобразуют эти значения в коммутацию и состояния квантовых “гейтов/триггеров” и кубитов. Неизвестно даже, сколько этих “кубитов и гейтов” будет нужно: несколько миллионов или несколько триллионов. Что уж там говорить про схемы коммутации.
(Заметьте, впрочем, что так как задействованный математический аппарат квантовой механики манипулирует комплексными числами – или, что эквивалентно, синусами и косинусами, – то все открытые тексты и решения можно уместить в пространстве состояний одного “непрерывного” кубита. Континуум, свернувшийся окружностью за привычным синусом, позволяет это легко проделать. Ещё и места останется, как минимум, в два раза больше, чем займут все решения всех проблем со всеми возможными шифрами в степени всех ключей. Это, впрочем, другая история.)
После того, как квантовый компьютер настроен, запускается итерация квантовых вычислений. Если итерация успешна, то результат позволяет быстро вычислить n на классическом компьютере. Использование классического компьютера тут означает, что у компьютера квантового, – а он, даже если создан, то бесполезен без классического, – есть и другой интерфейс, который выводит итоговое измеренное состояние квантовых схем в виде набора байтов, интерпретируемого как целое число. В случае с ECDH это будет пара чисел, по которым классический компьютер быстро вычислит секретный клиентский параметр n.
Аналогичная схема сработает и для открытого параметра ECDH, который отправил сервер. Для раскрытия ключей защиты трафика – достаточно знать один из секретов: клиентский или серверный.
3.
Общий секрет в ECDH образуется путём умножения точки-генератора на произведение секретов сторон. В рассмотренном только что случае, достаточно умножить открытый параметр DH сервера Q на секрет клиента, вот так: [n]Q (именно эту операцию проделывает клиент в ходе штатного процесса установления TLS-соединения). Секрет клиента, как мы только что выяснили, был раскрыт при помощи квантового компьютера. Результат умножения даёт точку на кривой, координата X которой используется в качестве задающего значения для генерирования секретных симметричных сеансовых ключей защиты трафика TLS. Функция, генерирующая сеансовые ключи, известна. Так как защищённые записи содержат коды аутентификации, сторона, взломавшая секрет ECDH, может тут же легко проверить, что найденный секрет соответствует записанному трафику. Симметричные ключи позволяют расшифровать трафик сеанса, используя шифр, номер которого тоже записан в начальных сообщениях: эти сообщения как раз и нужны для того, чтобы, кроме прочего, стороны согласовали используемый шифр.
*
Несомненно, прогресс в разработке систем “квантовых вычислений” есть. Однако вот уже несколько лет существенная часть прогресса сосредоточена на генерировании хайпа, поэтому даже до минимально практических схем не только далеко, но даже и не ясно, возможны ли такие схемы в принципе. В описанной выше схеме квантовый компьютер используется в роли “оракула”. Так же будет происходить и на практике: в рассматриваемой схеме для работы квантового компьютера не нужны какие-то дополнительные байты TLS-трафика, какие-то шифры или, условно, “части ключей”. С тем же успехом секретный параметр Диффи-Хеллмана можно просто угадать: запись трафика позволяет однозначно определить правильность угаданного значения.
Комментировать »
Официальные сопроводительные документы, касающиеся запрета продуктов “Лаборатории Касперского” в Штатах, уже доступны (на странице по ссылке – блок внизу, справа). Однако все моменты, которые могли бы оказаться минимально интересными с технической точки зрения (Appendix A) – аккуратно вырезаны (с пометкой “Business Confidential Information”). Поэтому ничего содержательно нового там всё равно не просматривается, но тенденция – показательная.
(Дополнение: о чём-то, типа предполагаемой “сборки из исходников”, можно догадаться по контексту, но, всё же, это было и так понятно.)
Комментировать »
Новый