Реализации ML-KEM могут быть очень быстрыми, быстрее, чем X25519 – это относится к гибридам в браузерах. Например, реализация ML-KEM-768 для OpenSSL из проекта OpenQuantumSafe для инкапсуляции ключа работает в пять раз быстрее, чем X25519 в том же OpenSSL “при прочих равных” (декапсуляция – в три раза быстрее):

(openssl speed X25519 mlkem768)

           keygens/s  encaps/s  decaps/s
X25519     26646.1    12213.9   24366.2
mlkem768   53101.6    62756.0   63933.0

То есть, в гибридной схеме, где ML-KEM присоединяется к X25519, будет весьма небольшой рост вычислительных затрат по сравнению с X25519. При этом браузер Firefox, скажем, ещё и экономит время на генерирование ключей, поскольку использует один и тот же открытый параметр X25519 и в гибриде, и в отдельном варианте. Понятно, что на серверной стороне разницы тут нет – серверу так или иначе придётся для гибрида выполнить и X25519, и ML-KEM. Но всё равно это лишь небольшой дополнительный расход вычислительных мощностей.

Конечно, ML-KEM, согласно стандарту, может использоваться отдельно, тогда схема будет и работать быстрее, и постквантовую стойкость обеспечивать; гибрид используется для подстраховки – и совсем не лишней подстраховки, надо заметить. А работает ML-KEM быстро потому, что там используется NTT (“теоретико-числовое преобразование”) и, соответственно, быстрые операции с полиномами.



Комментировать »

CAA-запись в DNS позволяет управлять тем, какие УЦ могут выпускать сертификаты для имён в соответствующей доменной зоне. Проще говоря, в DNS публикуется имя УЦ, которому разрешено выпускать сертификаты. Чьё имя не указано – тем выпускать нельзя. (Есть тонкости с Wildcard-именами и уведомлениями о попытках заказа сертификата.) Интересно, что отсутствие CAA-записи в зоне разрешает выпуск всем. А если в CAA для имён УЦ указать пустой список (“;”), то выпускать нельзя никому.

То есть, тут мы неожиданно, на практике, сталкиваемся с весьма важной особенностью из области теоретической математики вообще и математической логики в частности. Речь про логики и формальные системы разного уровня. Пустой ящик – имеет совсем другой смысл, чем отсутствие ящика. Отсутствие ящика – это отсутствие CAA-записи, которое отсутствие вовсе и не эквивалентно пустому значению CAA-записи. Ящик есть, но он пуст – это наличие CAA-записи, значение которой – пустое множество. В первом случае, пустое множество – это “количество” CAA-записей в зоне. Во втором случае – количество УЦ, имена которых указаны в CAA-записи. Пустое множество при этом одно и то же, но оно укладывается в разные, рекурсивные ящики. Так можно построить натуральные числа.

Конечно, в спецификации этот подход использован не с целью построения натуральных чисел, а всего лишь с целью сделать использование CAA мягким. Иначе без доступа к DNS вообще не получилось бы сертификаты заказывать у УЦ, которые следуют CAA-записям.



Комментарии (2) »

В Let’s Encrypt выпустили первый TLS-сертификат со сроком действия шесть дней. Пишут, что сертификаты на шесть дней не будут содержать не только ссылки на OCSP, но и ссылки на CRL. То есть, механизмов проверки отзыва – не будет. В опубликованном сертификате, впрочем, адрес OCSP-респондера почему-то указан. Обратите внимание, что в сертификате поле Subject вообще пустое – это тоже новый формат: указание Subject/CN некоторое время назад сделали опциональным. Сам сертификат – ниже.

-----BEGIN CERTIFICATE-----
MIIDSzCCAtGgAwIBAgISA7CwFcGk4mQWEXMacRtxHeDvMAoGCCqGSM49BAMDMDIx
CzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQDEwJF
NjAeFw0yNTAyMTkxNzMwMDFaFw0yNTAyMjYwOTMwMDBaMAAwWTATBgcqhkjOPQIB
BggqhkjOPQMBBwNCAAQoSItt2V1aocI5dxrKR8iLfmm0KiVvOhiwKByzu2kLeC7C
0BdfAgtwdICdkuEhAXokhXLq6DNZZgmh5T4flVwZo4IB9zCCAfMwDgYDVR0PAQH/
BAQDAgeAMBMGA1UdJQQMMAoGCCsGAQUFBwMBMAwGA1UdEwEB/wQCMAAwHwYDVR0j
BBgwFoAUkydGmAOpUWiOmNbEQkjbI79YlNIwVQYIKwYBBQUHAQEESTBHMCEGCCsG
AQUFBzABhhVodHRwOi8vZTYuby5sZW5jci5vcmcwIgYIKwYBBQUHMAKGFmh0dHA6
Ly9lNi5pLmxlbmNyLm9yZy8wKAYDVR0RAQH/BB4wHIIaaGVsbG93b3JsZC5sZXRz
ZW5jcnlwdC5vcmcwEwYDVR0gBAwwCjAIBgZngQwBAgEwggEFBgorBgEEAdZ5AgQC
BIH2BIHzAPEAdgDM+w9qhXEJZf6Vm1PO6bJ8IumFXA2XjbapflTA/kwNsAAAAZUf
d/zOAAAEAwBHMEUCIFNd51TfSNiJrO+294t49C5ANc4oC7gTUzf7xnlNlhKsAiEA
wi5hfiC9SsKLxlTQ0sctUxhLmdYh40r6ECWQS/yWw2AAdwDgkrP8DB3I52g2H95h
uZZNClJ4GYpy1nLEsE2lbW9UBAAAAZUfd/0TAAAEAwBIMEYCIQCs2NuZIUIloOaH
1t9eXDKb8bjoWESBPsK4i2BxMvEIswIhAOMNaQNyr1YkzrcNUz15qGV0oVLg5BJN
+ikWxXOdcRHFMAoGCCqGSM49BAMDA2gAMGUCMDANqy7G09AIwzXcd7SNl7uFwhC+
xlfduvp1PeEDHc/FA9K3mRYkGXuKtzNdOh7wcAIxALjEMDmBQiwXbB447oGkaZAe
0rqxA3EtNV5wj0obeObluj/NgUsVEG9OqiBIoggFRw==
-----END CERTIFICATE-----


Комментировать »

Один из самых распространённых сценариев использования DNS, как сервиса, это поиск IP-адреса по имени хоста. Сервис DNS, в целом, нужно рассматривать как механизм, обеспечивающий поиск в глобальной распределённой базе данных записей по ключу. Можно считать, что в современном Интернете, с точки зрения обычного использования сервисов типа веба, каждый сценарий начинается с обращения к DNS, и задействует DNS на последующих шагах. Поэтому перехват и подмена DNS-трафика является одним из самых эффективных методов целевых атак. И, конечно, не только целевых.

На слуху сейчас пара методов защиты DNS, а также косвенно связываемый с DNS метод защиты доступа, реализующий аутентификацию по имени (TLS). Пара методов, относящихся непосредственно к DNS, это криптографическое расширение самой системы – DNSSEC, а кроме того защита трафика при помощи TLS – DNS-over-TLS (далее – DoT, сюда же относится “надстройка” в виде DNS-over-HTTPS, DoH). При этом часто можно услышать, что TLS, используемый для веба, – то есть, HTTP-over-TLS, – решает вопрос подмены DNS, так как позволяет аутентифицировать веб-узел по имени.

Действительно, TLS позволяет клиенту проверить подлинность сервера, к которому он подключается, при помощи серверного TLS-сертификата. Если DNS-ответ подменён и программа-клиент подключается к подменному узлу по TLS, то эта программа может проверить сертификат: предполагается, что подменный узел не имеет корректного ключа от доверенного сертификата, DNS-имя задано клиенту при обращении и должно сходиться с указанным в сертификате, поэтому подмена будет обнаружена. Последнее, конечно, подходит для большинства практических случаев, но в случае общем – просто не верно: подставной, но доверенный, сертификат для другого ключа мог быть выпущен либо при помощи всё той же подмены DNS, осуществлённой в направлении систем УЦ, либо при помощи перехвата трафика, идущего к легитимному узлу. Уже это наблюдение приводит к мысли, что TLS для веба никак не может отменить необходимость защиты DNS тем или иным способом – ведь это инструменты, работающие на разных шагах и на разных уровнях: если бы клиент обнаружил подмену DNS, то этот клиент не подключался бы к подменному узлу, так что подменный сертификат по описанной схеме не получилось бы применить (это, впрочем, не исключает применения “в разрыв”, то есть, на промежуточном узле).

Основное отличие TLS, как метода защиты в вебе, для HTTPS, от защиты DNS состоит в том, что для срабатывания TLS в вебе клиент всё же должен подключиться к атакующему, подменному узлу. А это совсем другая поверхность атаки. Например, атакующий узел может “проэксплуатировать” какие-то дефекты клиентской реализации TLS, что отменит требование о наличии легитимного сертификата: в особо продвинутых случаях ни один HTTP-запрос даже не будет отправлен, но клиент окажется взломан, получив код с атакующего узла. DNS, срабатывая раньше, позволяет предотвратить _само_ _подключение_ к подменному узлу по TLS. То есть, эффективная защита DNS предоставляет тут дополнительный рубеж безопасности. Поэтому предположение, что использование TLS с сертификатами в HTTP-over-TLS достаточно для защиты клиента, и поэтому не нужно защищать DNS, так как TLS решит все проблемы выше уровня IP, – ошибочно. (Не будем, впрочем, забывать, что TLS-сертификаты можно получить для IP-адресов тоже, даже в Let’s Encrypt автоматом.)

Но с защитой DNS есть свои проблемы. Вернёмся к паре упомянутых выше методов такой защиты. Первый из них – DNSSEC. Эта технология крайне мало распространена в доменных зонах. Зато DNSSEC касается буквально всех пользователей валидирующих резолверов, так как используется в корневом домене. Всего лишь несколько десятичных цифр позволяют отломить зону верхнего уровня целиком, при этом аварию DNSSEC в большой зоне замечают все и сразу, очередной раз демонстрируя, что про DNS мало кто вообще в курсе, пока эта технология работает, но как только ломается – о DNS узнаёт едва ли не каждый. Второй метод защиты, – DoT/DoH, – распространён существенно больше, поскольку на клиенте встроен прямо в браузеры, но касается только тех сессий, в которых используется. Так вышло потому, что эти технологии тоже принципиально различаются: и по шагам использования, и по уровню применения (почти как HTTP-over-TLS).

DNSSEC методами цифровой подписи обеспечивает аутентификацию данных в DNS. Основная практическая особенность DNSSEC в том, что она позволяет полностью отделить доверие источнику данных от доверия составу данных: не важно, каким образом и от какого узла получены DNS-данные с подписями DNSSEC, главное – чтобы подписи сходились к доверенному ключу. Доверенным, обычно, выступает ключ подписи ключей глобальной корневой зоны.

Если TLS позволяет удостоверить только узлы в рамках сессии, но не на уровне DNS, то DNSSEC, архитектурно, работает в другой плоскости: информация в DNS касается не сессий и узлов, а правил определения узлов и создания сессий. Поэтому, если поступили данные с DNSSEC-подписями, то DNS-клиенту всё равно, какой узел эти данные прислал, если подписи сходятся. В TLS, несомненно, тоже есть аутентификация передаваемых данных, однако эта аутентификация возможна только по конкретным сессионным ключам, то есть, здесь всё на уровне “передачи данных”. В TLS возможно только узнать, что данные передаёт тот сервер, у которого есть секретный ключ от ключа в сертификате, но ничего нельзя узнать про сами передаваемые данные. Поэтому, если требуется проверить сами данные, TLS не помогает, а нужны дополнительные методы.

Вспомним теперь, что DoH используется только на “последней DNS-миле”, то есть, от клиента к рекурсивному резолверу. DoT может использоваться и на авторитативных серверах (например, поддерживается NS wikimedia.org и facebook.com), но, всё же, распространена эта технология тоже только на “последней DNS-миле”. Таким образом, DoT/DoH не позволяют проверить подлинность DNS-данных, как их видит резолвер, но позволяют аутентифицировать резолвер и зашифровать данные на “последней DNS-миле”. DoT/DoH скрывают трафик от пассивно прослушивающей канал стороны – обычные DNS-пакеты, напротив, ходят в открытом виде, так как DNSSEC никакого зашифрования не предусматривает. Но “последняя миля” тут очень важна: трафик DNS к резолверу, соответствующий запросу клиента, всё равно ходит в открытом виде (если, конечно, резолвер не использует только DoT в направлении авторитативных серверов, но так сейчас работать DNS не будет на практике). В DNS-запросы могут быть встроены маркеры, которые позволят различать источники этих запросов на промежуточных узлах “за резолвером”.

Интересно, что в DNS, как в систему, давно встроены базовые методы защиты от спуфинга ответов. Встроены они на уровне пакетов и UDP-обмена. Классический элемент пакета – это поле TransactionID, которое содержит 16-битный идентификатор: предполагается, что корректный ответ сервера будет содержать TransactionID, совпадающий с присланным в запросе, и это позволит клиенту (резолверу) отличить настоящий ответ от “подспуфленного”, который присылает узел, не видевший запроса. Второй элемент – номер порта источника, указываемый в UDP-пакете. Работать должно аналогично схеме с TransactionID, но с учётом особенностей транспорта: то есть, ответ на тот же номер порта, который указан в качестве источника (и тут необходимо “передать привет” NAT). Есть и более экзотическая схема, построенная на рандомизации регистра символов имени (DNS Case Randomisation). Эти методы работают где-то между DNSSEC и DNS-over-TLS: сторона, видевшая запрос, всё равно может подделать ответ.

(Эту заметку я первоначально выложил на “Хабре” как статью, однако там отметили, что в такой статье “нет описания самих протоколов”, и это обманывает ожидания кликающих. Замечание резонное, скорее всего, так и есть – но я и не планировал описывать здесь детали устройства самих протоколов, идея публикации, действительно, архитектурная. В общем, на “Хабре” я статью пока убрал в раздел “Черновики”, чтобы не беспокоить аудиторию уважаемого ресурса, а здесь – опубликовал.)



Комментировать »

Пишут, якобы The New York Times разрешили и рекомендуют использование LLM/AI-систем при подготовке материалов к публикации журналистами (newsroom staff). Впрочем, там в начале речь про внутренний инструмент с LLM – однако непонятно, насколько он “внутренний”, то есть, насколько это собственная разработка. Но тенденция забавная: новостные заметки и статьи СМИ, которые обработаны ИИ/LLM, опять попадут в ИИ/LLM, но уже в качестве материалов для “обучения” (да ещё и с корректировками новостника-человека). Роботы переписывают то, что другие роботы написали для роботов (поисковых, например). Процитирую заметку на dxdt.ru от декабря прошлого года:

Заметьте, что текст может быть не только газетной статьёй, но, как уже показывает практика, и законопроектом, и каким-то более важным распоряжением. То есть, вроде, формальный статус ИИ LLM тут получается на уровне “используется в работе сотрудниками”, а реальный статус – провайдер сервиса получает рычаги для целевого влияния на результат: такой spear phishing в квадрате.

Схема генерирования текста внутри LLM обладает большой глубиной, так что избавиться от качественно построенного криптографического “водяного знака” редактированием текста очень и очень непросто. Лишь бы текст был достаточно длинным. Перестановка некоторых предложений, перестановка некоторых слов, замена на синонимы, перефразирование небольших фрагментов – это всё точно не поможет, но зато предоставит дополнительную информацию для анализирующего бота, то есть появится содержательная статистика, отражающая эволюцию текста в токенах: кто, как, что именно меняет в словах и буквах.



Комментировать »

На базе нескольких простых микроконтроллеров ESP32S построили приёмник (фактически – фазированную антенную решётку), который вычисляет разностные характеристики сигналов WiFi, позволяя, кроме прочего, определять местоположение передатчиков, даже тех, которые находятся не в прямой видимости (а, например, за углом). Называется ESPARGOS. WiFi, понятно, сейчас есть в каждом смартфоне (по определению). И не только в смартфоне.

(via)



Комментировать »

В продолжение недавней записки про числа в ML-KEM. Один из ключевых параметров ML-KEM, одинаковый для всех наборов, это число (модуль) 3329. Почему выбрано именно 3329? Был ли выбор “случайным” (а иногда используют проверяемые методы для выбора параметров) или это число подобрано специально?

Число 3329, обозначаемое q, в ML-KEM выбрано строго специально. И вот из каких соображений. Весь практический вычислительный смысл ML-KEM (Kyber) в преобразовании (NTT), позволяющем быстро производить арифметические операции с полиномами. Чтобы быстрые операции NTT стали возможны в ML-KEM, число q должно быть простым, а (q-1) должно делиться на 256. (Более “общо” – делиться должно на степень двойки.) 256 – это другой параметр ML-KEM, его значение продиктовано разрядностью операций (256 бит).

То есть, 3329 – простое, (3329 – 1)/256 == 13. Если эти требования не выполняются, быстрый NTT работать должным образом не будет, поскольку это не настолько универсальный алгоритм, умножать полиномы “в лоб” – очень медленно, и другие быстрые алгоритмы – тоже оказываются медленными по сравнению с NTT. Неподалёку от 3329 не так много чисел, обладающих описанными свойствами: 257, 769, 3329, 7681, 7937. При этом, нужно выбрать число поменьше (важна экономия каждого бита), но чтобы не слишком выросла вероятность получения неверного результата при работе криптосистемы. Для 257 и 769 вероятность ошибки заметно больше. Поэтому авторы алгоритма выбрали 3329.



Комментировать »

Аккаунт на “Хабре” у меня уже больше пятнадцати лет, однако за эти годы я там написал только два комментария (сейчас уже четыре!). Подумал, что, наверное, пора и статью попробовать опубликовать – подготовил, да и опубликовал технический текст про ключи и шифротексты ML-KEM в TLS, с числами и байтами.



Комментировать »

В блоге Шнайера описание ещё одной попытки создания протокола (предлагает протокол не Шнайер), позволяющего отличить “цифрового двойника” (имперсонатора) от реальной персоны – используется TOTP (это одноразовые коды, базирующиеся на общем секрете и на значении времени в локальных часах): то есть, пользователи, реальные персоны, которые имеют копии общего секрета, при голосовом вызове или при вызове по видеосвязи, когда звонящий представляется одним из этих пользователей, должны дополнительно затребовать и сравнить актуальные ключи, генерируемые TOTP. Ключи предлагается вычислять при помощи смартфона, на котором работает приложение. Понятно, что здесь аутентифицируется не пользователь, а приложение на смартфоне и/или сам смартфон – это вообще традиционная ошибка, когда персону-пользователя переводят в смартфон.

Нельзя сказать, что решение совсем бесполезное, но с ним есть традиционные для чисто технических схем, кажущихся простыми, проблемы. Это существенные проблемы, и они далеко не в том, что смартфон может быть захвачен или взломан, а код может быть подсмотрен (нет, код подсматривается у атакуемого пользователя, потому что, как бы, в этом и смысл). Знание верного кода из приложения, несомненно, сразу завоевывает доверие. Но и незнание, при должной интерпретации, сильно помогает, поскольку протокол, – досадно “не работающий”, – тут же создаёт общий контекст, в самом начале разговора.

Дело в том, что “цифровой двойник” может прямо утверждать, что он не двойник никакой, а настоящий, но потерял смартфон, поэтому и не может получить код. Или часы в смартфоне “поломались”, ушли вперёд “и такой вот код”. Заметьте, что очень многие схемы манипуляции и введения в заблуждение именно такой момент и используют в качестве опорного при установлении “контакта” с атакуемым: “потерял ключ”, “пёс сожрал пропуск и другие документы”, “кормила чайку и смартфон уронила в пруд”, “забыла, где именно машина на парковке”, ну и так далее. Тут можно ещё заметить, что протокол требует предоставления кода вызывающей стороной, но направление вызова можно регулировать, используя промежуточные звенья: “Наш общий знакомый Имярек срочно просит ему немедленно же перезвонить!”. Естественно, успехи компьютерных технологий позволяют “цифрового двойника” установить в качестве “прокси” между реальными персонами, чтобы получить актуальный код в нужный момент. Так что не ясно, сильно ли TOTP-приложение помогает, на фоне кодов из SMS.



Комментарии (2) »

Одной из распространённых ошибок настройки DNS является рассогласование списков авторитативных серверов имён на разных уровнях системы. То есть, в делегирующей записи присутствуют имена серверов, которые отсутствуют в самой DNS-зоне. Предположим, в зоне .com для example.com указаны серверы ns1.example.com, ns2.example.com и ns1.example.net (список делегирования), а в самой DNS-зоне example.com список NS-ов включает только ns1.example.com, ns2.example.com. Это пример упомянутой ошибки. (Список NS-ов из DNS-зоны – это ответ на запрос NS, полученный от авторитативного сервера.) Обратите внимание, что обратная ситуация, когда список делегирования вкладывается в список NS-ов на стороне DNS-зоны, проблемы не представляет. А вот если в делегирующей зоне обнаружен “лишний” NS, то это плохо и является грубой ошибкой.

Почему это так? Прежде всего потому, что “лишнее” имя может вообще не контролироваться администратором зоны – соответственно, это имя может контролировать третья сторона, которая, из-за неверного делегирования, получит возможность отвечать на DNS-запросы, относящиеся к исходной зоне. На всякий случай напомню, что управление DNS позволяет полностью перехватить все сервисы, адресуемые именами в DNS-зоне: можно переадресовать веб-сайт, получать электронную почту, получить валидный TLS-сертфикат и так далее.

Как сторона, строго полагающаяся на DNS в какой-то своей деятельности, может определить, что с настройками чужой зоны что-то не так на уровне NS-ов? Например, можно сравнить список делегирования и перечень авторитативных NS-ов в зоне. И сделать это можно, – как ни странно, – только специально опросив авторитативные NS-ы. Ответ авторитативных NS-ов вышестоящей зоны – принесёт достоверный список делегирования. А ответ авторитативных NS-ов целевой зоны – достоверный список NS-ов. И если первый список содержит имена, которых нет во втором, то это признак того, что с зоной что-то случилось: например, происходит перехват управления.

При этом, вообще говоря, достаточно, чтобы списки не сходились с ответом одного авторитативного NS целевой зоны. Поэтому-то списки авторитативных NS-ов, возвращаемые серверами целевой зоны, должны совпадать между серверами. Если эти списки отличаются, то ситуация тем более подозрительна, поскольку невозможно понять, какой список настоящий, а какой – подменный. Естественно, резолверы, выполняющие рекурсивный опрос, не всегда следуют правилу, что за окончательной версией большинства DNS-записей обращаться можно только к тем NS-ам, имена которых получены в авторитативном ответе, соответствующем целевой зоне. “Авторитативность” тут определяется не столько по флагу в DNS-ответе сервера, сколько совместно по иерархии делегирования и источнику ответа: то есть, хоть начальный список NS-ов и получается из вышестоящей зоны в делегирующем ответе, но достоверные имена NS – те имена, которые есть и в ответах самих этих серверов. Этот момент постоянно упускают из виду. (К сожалению, DNS часто настраивают как попало, поскольку бытует неверное мнение, что “это очень простая система: отправил имя – получил IP-адрес”.)

Почему перечни имён NS в зоне должны сходиться с делегирующими списками? Представьте, что атакующий каким-то образом перехватил управление и смог добавить собственный NS (по имени) в делегирующий ответ (это может быть сделано далеко не только на уровне регистратора доменов). При этом успешно подменён только делегирующий ответ, а сами авторитативные NS целевой зоны (не делегирующей), как узлы, не взломаны и работают штатно. Подменив делегирующий ответ, атакующий никак не повлиял на ответы авторитативных NS – если резолвер спросит эти NS, то получит список NS без добавления подменного узла. Да, резолвер, обрабатывающий список из делегирующего ответа, не может сразу предположить, какое имя было добавлено атакующим. Поэтому, если резолвер опрашивает все NS из списка, то он обязательно обратится и к подменному NS. Но, ещё раз, этот NS не может повлиять на саму подлинную зону и на ответы других NS – поэтому возникнет видимое расхождение. Заметьте, что если подменный NS возвращает тот же список NS, что и настоящие, то всё равно есть расхождение списка делегирования и списка NS в зоне. (Да, понятно, что обычный резолвер не обязательно выполняет все эти запросы и сравнивает результаты. Но в ситуации, когда требуется подтвердить какой-то параметр DNS-зоны, – например, при выполнении проверки права управления для выпуска TLS-сертификата, – непосредственный опрос многих NS и сравнение списков – необходимый шаг.)

Лишние NS в списке делегирования позволяют заподозрить, в худшем случае, активную атаку, а в лучшем – наличие больших проблем с DNS-зоной. Нередко, лишние NS появляются в результате опечаток или “забывчивости” администраторов, что свидетельствует об отсутствии необходимых проверок при изменении настроек сервиса.



Комментировать »

Оценка корректности употребления слов английского языка less и fewer нередко вызывает споры даже среди грамотных носителей языка. Эти слова различаются тем, что одно, в сравнении, модифицирует объекты как “неисчисляемые” (“неперечислимые”, если хотите), а второе – как “исчисляемые” (“перечислимые”). Если задуматься о том, что происходит, то можно обнаружить особенность, достаточно тонкую, которая модифицирует воспринимаемый смысл, переставляя фокус его построения между словами, следующими за less/fewer. Эффект напоминает “морфологический переворот”, который я как-то упоминал. Уловить изменение непросто, нужны хорошие иллюстрации. Такая иллюстрация попалась мне в стилистическом руководстве издания The Guardian, где эффект less/fewer рельефно проиллюстрирован четырьмя предложениями – все эти предложения говорят о разном, попутно закрывая все четыре возможных относительных варианта:

For less bad things to happen, fewer bad people need to be involved.
For fewer bad things to happen, less bad people need to be involved.
For fewer bad things to happen, fewer bad people need to be involved.
For less bad things to happen, less bad people need to be involved.

Перевод, понятно, эффект уничтожает. Но можно дать объяснение, используя несколько испорченные обороты на русском. Посмотрим на первое предложение: “Чтобы случались менее плохие вещи, меньше плохих людей должно быть вовлечено”. Less – “уменьшает” (сравнительно) то, что “нельзя посчитать”, отсюда привязка к bad. Bad, – здесь, – нельзя сравнивать “в натуральных числах”, то есть, нельзя сказать, что что-то хуже на “две единицы измерения ухудшения”. Поэтому “менее плохие” (дословный перевод здесь использован как иллюстрация). Fewer – обозначает тоже “меньше в количестве”, но именно в том количестве, которое можно считать. Поэтому “меньше плохих людей”, а не “менее плохие” “люди”. Всем известны примеры “неисчисляемых” существительных – “вода”, “песок” и т.д., – а равно и примеры “исчисляемых”: “кирпичи”, “мячи” и т.д.

Второе предложение: “Чтобы меньше плохих вещей случалось, менее плохие люди должны быть вовлечены”. Тут сравнительная характеристика “less bad” применяется уже к “людям”. Думаю, два оставшихся предложения несложно самостоятельно “раскодировать” аналогичным способом, наблюдая, как переключается фокус интерпретации.



Комментировать »