Книги: "Создание сайтов" - "Доменные войны". Защита информации: техническое описание TLS, тестовый сервер TLS 1.3. Ресурсы: LaTeX
Цитата из моего технического описания TLS:
Весьма полезной практикой является разумное выравнивание стойкости используемых криптосистем. Например, в подавляющем большинстве случаев не имеет смысла использовать RSA-ключ длиной в 4096 бит, если ваш TLS-сервер всё ещё поддерживает SSLv3, а в качестве симметричного шифра применяет DES с 56-битным ключом.
Детали зависят, конечно, от модели угроз, но что здесь имеется в виду? Предположим, что серверный TLS-сертификат использует криптосистему RSA с длинным ключом, при этом для согласования сеансового симметричного ключа тоже используется RSA (то есть, исходные данные ключа зашифровываются RSA – устаревший метод, который широко применялся в TLS ранее). Защищает ли этот факт дополнительно трафик, зашифрованный нестойким шифром, для которого нетрудно вычислить секретный ключ? Понятно, что не особенно: проще раскрыть действующий симметричный ключ при помощи криптоанализа шифра, не касаясь RSA. Невозможность прочитать исходный секрет этому не помешает (естественно, считаем, что реализация RSA сохраняет стойкость). Можно было бы предположить, что задача другая: например, требовалось надёжно защитить узел от подмены, а передаваемый трафик, напротив, сделать доступным для чтения “подготовленной стороной”. Но в случае только что описанного сценария TLS это не сработает.
Дело в том, что аутентификация с использованием ключа из сертификата происходит на начальном этапе. Заметьте, кстати, что в устаревшей схеме с “зашифрованием RSA”, проверка того, что серверу известен соответствующий сертификату секретный ключ, вообще косвенная: предполагается, что раз сервер смог прийти к одинаковым с клиентскими значениям сеансовых ключей, то у сервера сеть доступ к секретному ключу (при использовании современной схемы, с протоколом Диффи-Хеллмана, клиентом проверяется именно подпись, что несколько меняет ситуацию). Так или иначе, но после установления соединения для аутентификации трафика используются уже сеансовые ключи, а если их удалось раскрыть, то активный перехватывающий узел сможет произвольным образом подменить полезные данные внутри сессии, как если бы эти данные передавал подлинный сервер – то есть, подменить источник. Таким образом, хоть формально аутентификация и проводится с другим, стойким ключом, нестойкий сеансовый ключ уничтожает большую часть смысла такой аутентификации. Речь, естественно, про TLS, а за скобками остались пояснения о том, что раскрытие конкретного шифротекста и раскрытие конкретного ключа – разные вещи (это несколько другая история).
В TLS 1.3 криптосистема RSA для зашифрования не используется, а процесс получения сеансовых ключей (за некоторыми исключениями) основывается на протоколе Диффи-Хеллмана и состоит из нескольких этапов. Тем не менее, раскрытие сеансовых симметричных ключей и тут приводит к тому, что активный атакующий может подменить трафик, выступив вместо одной из сторон после того, как соединение установлено.
Комментировать »
Samsung официально описывает, как некоторые смартфоны этой корпорации дорисовывают изображение Луны “методами машинного обучения” – процесс называется Scene Optimizer. Про это, в общем-то, известно давно. А проблема тут не столько в том, что дорисовывают, а в том, как именно процесс преподносится – “улучшение детализации”. В результате, выдачу подобных камер считают за отражение реальности.
Конечно, если подходить к вопросу в самом общем плане, то можно сказать, что всякая фотокамера, – тем более, цифровая в смартфоне, – лишь тем или иным способом демонстрирует результат некоторого процесса внутри камеры. В классической, плёночной фотографии – фиксируется (буквально) некоторый химический процесс превращения красителей, при этом, скажем, “чувствительность” можно изменять уже после того, как “фотонная” основа снимка воспринята веществами плёнки. Цифровые камеры используют иной процесс, более электрический, так сказать. Казалось бы, плёнка, в каком-то смысле, позволяет “дорисовать” несколько больше, чем сенсоры камеры, но тут в дело вмешивается “машинное обучение” со своими “методами улучшения”.
Основная особенность этих программных “дорисовывалок”, неограниченно “повышающих разрешение”, такая: они приносят на конкретный снимок результаты, собранные по другим снимкам (из “обучающей выборки”) и приведённые к некоторому заданному, типовому представлению об изображённой сцене (о Луне, в данном случае). Детали в такой схеме как раз не особо и важны – детали уже заранее записаны в память смартфона, а поэтому НЛО он просто закрасит правильным фрагментом лунной поверхности, потому что “компьютер не может ошибаться”. Тенденция эта грозит большими проблемами, так как цифровые снимки, выполненные смартфонами, могут, предположим, использоваться в качестве доказательств тех или иных событий. И даже дорисованная Луна способна повлиять на суждения о времени и месте съёмки, если таковые будут выноситься по изображению. Впрочем, зачем тратить на это время? Ведь в файле же и так записаны “верные” координаты и время GPS.
Я уже писал об этом раньше, например, в 2021 году: “Нейросети из пикселей“.
Комментировать »
Наберём в консоли (в терминале) ping 010.010.010.010 и запустим выполнение – что произойдёт? Результат теперь многим и многим, – далеко не пользователям, а даже системным администраторам, – кажется неожиданным: “пинги” отправляются на один из адресов Google – 8.8.8.8. Проверьте самостоятельно (в экзотических ОС результат может отличаться, но в привычных линуксах, например, – всё вполне корректно, а экзотические ОС ещё предстоит подобрать).
Почему так вышло? Потому что старое системное соглашение, о котором нынче забывают, гласит: если запись октета IP-адреса (здесь – четвёртой версии) начинается с символа нуля и не содержит, следом, буквы, то это запись в восьмеричной системе! (Относится, конечно, не только к ping и не только к IP-адресам.) 10 в восьмеричной системе – это восемь, так что: 8.8.8.8. Неплохо взглянуть и на другие варианты: ping 010.8.010.8, например. А попытка вызвать ping 010.080.010.010 приведёт, скорее всего, к сообщению о том, что адрес для имени обнаружить не удалось (или Name or service not known – в типичном случае).
А оговорка насчёт буквы в предыдущем параграфе, конечно, это для 0x08, например. Но такая запись мало кого вводит в заблуждение.
Комментировать »
В ТЦИ запущен сервис просмотра данных российских логов Certificate Transparency. На сервере используется TLS-сертификат, выпущенный ЦС ТЦИ. Соответствующий корневой сертификат ECDSA можно взять на сайте ЦС (SHA-1: 4E877AC027A63D8514C0B4CBFA0F6F58F6C17696).
“Данный сервис дает возможность любому пользователю проверить, выпускались ли сертификаты для какого-либо домена российскими центрами сертификации. Сервис собирает данные сразу всех российских CT-логов. Одним из главных его преимуществ является то, что он позволяет централизованно получать сводную информацию о TLS-сертификатах и осуществлять поиск по именам и другим значениям через удобный веб-интерфейс, то есть избавляет пользователей от необходимости использования специализированного программного обеспечения для просмотра CT-логов.”
(Это, собственно, версия известного сервиса crt.sh, но с поддержкой только российских логов – в crt.sh они не учитываются автоматически.) Самое простое применение – поиск (пре)сертификатов TLS по доменному имени (см. скриншот для livejournal.com ниже).
Комментарии (5) »
Генераторы текстов на заданную тему сейчас вновь популярны. Пример, естественно, ChatGPT. Можно ли автоматическим способом и с высокой точностью определить, что некоторый обозримый текст на естественном языке написан таким качественным компьютерным генератором, а не человеком?
Если эту задачу рассматривать “в максимальной общности”, то она тут же превращается в весьма занятную, почти что философскую, проблему: допуская, что можно надёжно различить тексты, написанные подобной программой и человеком, придётся допустить и то, что программа может выдать текст, который человек написать не смог бы – не смог бы сымитировать. То есть, в тексте, который написал генератор текстов, должно быть проявление некоторого “нечеловеческого интеллекта”.
С одной стороны, внутреннее устройство новомодных больших компьютерных нейросетей уже достаточно необозримо. Эти сети состоят из мешанины формул (по-научному – из “мешанины функционалов”, но в данном случае можно называть объект просто формулой). Разобраться, что и как взвешивается и преобразуется во всей этой мешанине, для человека, “вручную”, не реально. Можно предположить, что перспективная программа-детектор как раз и могла бы обнаружить в тексте проявление всех этих глубинных взаимосвязей, заведомо недоступных для интерпретации и имитации человеком, классифицировав таким образом текст как созданный ИИ. Именно из сходных соображений детекторы сейчас пытаются делать на основе обучения всё тех же (а точнее – таких же) нейросетей. Но точность не велика. А вырожденный результат на этом направлении – это так называемые “водяные знаки” (watermark), которые разработчики нейросетей планируют вводить в результат их работы, как раз с целью последующего точного распознавания.
С другой стороны, такой подход чем-то напоминает объявление числа Пи (π – но с заглавной буквы) самым разумным числом из всех: ведь “в десятичной записи числа Пи можно найти любой текст, с ответами на любые вопросы, как бы этот текст ни зашифровали”, нужно только знать, с какого знака записи начинать читать – вроде и верно, но не слишком-то конструктивно (напоминает классические теоремы существования, времён Коши, а также и саму теорию действительного числа). Но программа, которая позволила бы находить проявления некоторого необозримого ИИ в небольшом, если сравнивать с количеством коэффициентов в формулах нейросети, тексте на естественном языке, сама может оказаться столь же необозримой. А значит, к ней применимы те же рассуждения, и соответствующий процесс вряд ли быстро сойдётся.
При этом, скорее всего, каждый естественный язык является проявлением общей универсальной структуры, которая не может быть видна из “плоской”, – пусть при этом и слоистой, – статистики слов и словосочетаний, построенной алгоритмом (Хомский и др.). А это оставляет большие шансы для успешной имитации человеком текстов, которые универсальная программа-детектор могла бы, при прочих равных, посчитать результатом работы компьютерной нейросети.
К задаче возможно подойти и с другого направления, которое, впрочем, тоже экстремальное: всякий сгенерированный упомянутым компьютерным способом текст представляет собой перестановку слов, выполненную по некоторым правилам (полученным статистической обработкой, но это детали). Соответственно, предельный вариант – это предложение создать программу, которая по корректно отсортированному массиву произвольной длины смогла бы определить конкретный алгоритм, которым данный массив был отсортирован. Понятно, что это невозможно. Для того, чтобы возникли какие-то зацепки, в массиве должны быть хотя бы “ошибки и дефекты”. Но всякий набор “ошибок и дефектов”, подходящий для анализа программой-детектором, может внести и человек, пусть и с помощью ещё одной программы. В общем, тут опять получается известная диагонализация: даже если сузить применение детектора на хорошо известные генераторы текстов, всякий подобный алгоритм детектора можно встроить в тот самый генератор в качестве нового слоя, так что начнут выходить тексты, вводящие детектор в заблуждение. Другими словами: если у вас появилась программа-детектор, которая с высокой точностью классифицирует тексты, сформированные “нейросетевыми генераторами”, то вы можете либо поместить эту программу внутрь другой программы, получив возможность автоматически генерировать тексты, которые (по определению) будут классифицированы как “написанные человеком”, либо силами уже человека формировать текст, который детектор сочтёт продуктом нейросети (см., кстати, решение десятой проблемы Гильберта).
Вообще, эта особенность, с сортировкой массивов, касается всех текстов, представляющих собой обозримые наборы простых фактов. Попробуйте, например, детектировать, человек или автоматический генератор текстов собрал адресный справочник для того или иного района мегаполиса. Особенно, если это вымышленный мегаполис, да. Для подобных результатов, если они, конечно, не слишком объёмные, надёжный детектор невозможен.
Так что, к сожалению, высокоточные детекторы “текстов от нейросетей” вряд ли появятся. Кроме, конечно, детекторов, которые работают на “водяных знаках” – специальных криптографических метках.
Комментарии (1) »
Всякое нечётное простое число можно записать как 11. Главное – правильно выбрать основание системы счисления. Например, 11 в двоичной – это три, простое число. (Заметьте, что запись чисел текстом предоставляет удобный способ избежать указания на основание и используемую систему, а вот запись текстом значений цифр – не позволяет такого.) В шумерской (вавилонской) системе, по основанию шестьдесят, цифра для 1 другая, но её можно вывести при помощи Unicode: 𒁹. Кстати, число, записываемое при помощи 67 (десятичная система) символов шумерских единиц с пробелами, которые обособляют разряды, полупростое:
𒁹 𒁹 𒁹 𒁹 𒁹 𒁹 𒁹 𒁹 𒁹 𒁹 𒁹 𒁹 𒁹 𒁹 𒁹 𒁹 𒁹 𒁹 𒁹 𒁹 𒁹 𒁹 𒁹 𒁹 𒁹 𒁹 𒁹 𒁹 𒁹 𒁹 𒁹 𒁹 𒁹 𒁹 𒁹 𒁹 𒁹 𒁹 𒁹 𒁹 𒁹 𒁹 𒁹 𒁹 𒁹 𒁹 𒁹 𒁹 𒁹 𒁹 𒁹 𒁹 𒁹 𒁹 𒁹 𒁹 𒁹 𒁹 𒁹 𒁹 𒁹 𒁹 𒁹 𒁹 𒁹 𒁹 𒁹
– а именно:
10942346421770308578818295975662675564975953490189742748487096625851 *
211919687148608455429372273841730969897555787140311 ==
2318898630373258980428992200086672458938582331333684067796610169491525423728813559322033898305084745762711864406779661
Пробелы нужны вот почему: 𒁹 𒁹 𒁹 == 3661 == 60^2 + 60^1 + 1; однако 𒁹𒁹𒁹 == 3.
Комментировать »
Подборка некоторых публикаций про TLS на dxdt.ru (и около):
Несколько реплик про перехват TLS при помощи MitM (дополнение о проверке сертификатов);
Браузеры и перехват TLS без участия УЦ;
TLS для DevOps;
Популярно о перехвате HTTPS;
TLS, зашифрованные протоколы и DPI;
Сеансовые ключи (DH) в трафике TLS;
Техническое: перехват TLS (HTTPS), некоторые тонкости;
TLS 1.3: на пути к внедрению.
Комментировать »
К прошлой записке на тему переводов с древнегреческого, где речь о том, какие собаки описаны в гомеровском произведении – белые или проворные (κύνας ἀργούς). Интересно, что тот же самый фрагмент из “Илиады” приводит в пример Аристотель в своей статье “Об искусстве поэзии”. Аристотель упоминает не собак, а “мулов” (οὐρῆας), которые в тексте Гомера указаны раньше, но это буквально соседние слова и то же самое предложение. А именно, Аполлон там стрелами “мулов же прежде настиг и собак проворных/белых” (дословный перевод исходника – οὐρῆας μὲν πρῶτον ἐπῴχετο καὶ κύνας ἀργούς). Аристотель предполагает, что “мулами” Гомер называет охрану и это просто такой поэтический приём, который объясняет, почему “мулы” первыми пострадали: потому что это не мулы, а охрана, видимо, выставленная на подступах и, таким образом, подвернувшаяся мчащемуся с Олимпа Аполлону раньше других. Ну и у подразделений охраны вполне могли быть собаки, пусть даже и проворные. Впрочем, это только одна из возможных трактовок. К тому же, как я понимаю, предположение Аристотеля о превращении “мулов” в “стражей” считается сейчас сомнительным, так что собаки могут оставаться белыми – “придёт серенький волчок”, как говорится.
Комментировать »
Предположим, что мы зашифровали некоторый небольшой текст (десяток слов) на естественном языке, используя самый обычный способ – кодирование UTF-8 и какой-нибудь стойкий симметричный шифр, например, AES с 256-битным ключом (32 байта). Но ключ выбран специальным способом: 30 байтов из 32 зафиксированы и известны, а два байта (то есть, 16 бит) выбираются случайно. Потом получившийся шифротекст отправляется в некоторую программу, программа перебирает значения двух “секретных” байтов ключа и пытается расшифровать данные, каждый раз проверяя, получились ли в результате словарные слова в кодировке UTF-8 (если хотите более “криптологический” вариант, то можно брать биграммы/триграммы – это как раз детали, которые здесь не важны). Если получились слова, похожие на ожидаемый язык, то программа считает, что удалось успешно расшифровать данные и выдаёт открытый текст.
Это обычная студенческая задача. Проделать данный нехитрый трюк можно очень быстро даже на весьма среднем современном настольном компьютере или, так сказать, на карманном смартфоне. Из-за свойств шифра, вероятность того, что получившийся по данной схеме “естественный текст” не совпадёт с входным – очень и очень мала, ей можно пренебречь: с “неправильными ключами” будет выходить шум, а не словарные слова. Так что компьютер сможет успешно “угадывать” зашифрованные по такой схеме тексты. Главное, чтобы в них была структура. Остался следующий шаг – сказать, что всё это делается с использованием “методов искусственного интеллекта”. Такое утверждение, наверное, будет преувеличением, но посчитать, что оно “совсем мимо” – нельзя.
Перебор, выполняемый с некоторой “оптимизацией”, играет ключевую роль в популярных сейчас схемах “машинного обучения”. Об этом аспекте нередко забывают, когда интерпретируют те или иные результаты, полученные “системами ИИ”: вычислительные мощности, используемые на этом направлении, не просто очень большие, но они ещё и заточены под параллельный перебор значений. Поэтому вполне естественно, что в некоторых случаях, когда задача подразумевает извлечение конкретной структуры из набора данных, эффект от перебора может быть достаточно впечатляющим для того, чтобы зафиксировать его в наборе миллионов коэффициентов. Вот только понимания это не добавляет и взламывать произвольные шифры не позволяет.
Комментировать »
В марте 2008 года, 15 лет назад, на dxdt.ru, например, появлялась записка про антенны с синтезированной апертурой для РЛС:
Можно сказать, что с математической стороны задача синтезирования сводится к определению характеристик некоторых электромагнитных полей по результатам измерений, сделанных в нескольких точках пространства в разное время. Задача местами сложная, но вполне разрешимая (особенно когда измеряется отражённое излучение от источника, характеристики которого соответствуют некоторым требованиям, – это как раз случай с РЛС).
Комментировать »
В самом начале текста “Илиады” есть эпизод, в котором Аполлон обстреливает греческое войско, при этом в качестве первых целей, поражённых стрелами Аполлона (инфекцией, естественно), указаны вьючные животные и – собаки. В доступном исходном тексте про собак сказано, буквально, κύνας ἀργούς. “Собак” здесь – это κύνας (κύων), а вот их характеристику – ἀργούς – переводят по-разному, что выглядит довольно занимательно. Так, в русском переводе Н. И. Гнедича использовано весьма необычное слово “празднобродных” (“и псов празднобродных”), но в комментариях можно встретить, что вообще-то собаки “проворные”. Французский перевод (Leconte de Lisle) тоже обозначает собак как “проворных, быстрых” (rapide). В английских переводах характеристика собак в данном фрагменте либо вообще опускается (Pope), либо переводится тоже как “проворные” (“swift” – Buckley) и как “быстроногие” (“fleet” – Lang, Leaf, Myers).
При этом в комментариях к изданию перевода Бакли (Buckley) указано, что можно перевести и как “белые”. Действительно, в словаре – ἀργός, по первому значению, “белый, блистающий, яркий”; а второе значение – “быстрый, резвый, проворный” (словарь Дворецкого), но, опять же, с прямой отсылкой к собакам из эпического произведения Гомера. А есть и третье значение – бездеятельный, вялый, медленный, – однако указано, что этот вариант – от ἀεργία (“леность, безделье”); в этом варианте слово повсеместно используется у древнегреческих авторов, что, видимо, объясняет “празднобродных” собак.
В общем, больше похоже, что собаки там всё же либо белого цвета, либо просто “бледные”, но в том смысле, что слабые. Потому что, по сюжету, они заболели сразу после вьючных мулов, но раньше людей. С одной стороны, собакам белого цвета предпочтение могли отдавать древнегреческие пастухи, поскольку такую собаку гораздо проще издали отличить от волка, с другой стороны – довольно логичным выглядит и предположение, что белые собаки считались более слабыми в плане выносливости (а может, таковыми и являлись – подобный взгляд распространён и сейчас).
“Аргоистые” собаки в “Илиаде” ещё встречаются. Например, в выражении “быстрые псы (κύνες ἀργοὶ) его прежде изгложут” (Гнедич). Почему глодать должны именно “быстрые псы” – из контекста (военные советы Полидамаса “шлемоблещущему Гектору” об обороне городов) не очень понятно. Впрочем, как и то, почему животные должны быть именно белыми (или “бледными”? тогда, хотя бы, можно предположить, что речь о слабых, больных псах).
(Заметка, конечно, никоим образом не претендует на статус “филологического комментария”, просто, данный момент с “бледными собаками” показался мне занятным.)
Комментировать »