На самом деле ограничения Let's Encrypt описаны на странице https://letsencrypt.org/docs/rate-limits/. На момент написания этого комментария на выпуск сертификатов действовали следующие ограничения:
Выпуск сертификата, список имён в котором в точности совпадает со списком имён в другом действующем сертификате, выданном Let's Encrypt — не более 5 штук в течение 7 суток.
Выпуск сертификата, список имён в котором не совпадает ни с одним другим сертификатом, выданным Let's Encrypt — не более 50 штук в течение 7 суток для зарегистрированного домена (определяется с учётом Public Suffix List); это ограничение может быть повышено по специальному запросу. До марта 2019 года это ограничение действовало и на перевыпуск сертификатов, но теперь для перевыпуска действует только первое ограничение.
При использовании ACME v2 с одной учётной записи можно отправлять не более 300 запросов на выдачу сертификата в течение 3 часов.
Как ни удивительно, похоже, в данном случае программисты не смогли правильно реализовать вроде бы простейшую операцию — «длинное» сложение: в некоторых случаях неправильно обрабатывается перенос в старшую часть числа.
1) Astra Linux Directory — собственная реализация, единственная, которая полностью поддерживает мандатный контроль доступа, имеющийся в Astra Linux SE;
2) FreeIPA — этот вариант разработчики Astra Linux рекомендуют использовать, если нет необходимости в мандатном контроле доступа;
Это верно далеко не для всех раскладок клавиатуры (в том числе и для языков на базе латиницы — см., например, множество национальных вариантов QWERTY, а ведь есть ещё вариации QWERTZ и AZERTY).
В случае с Vim есть ещё вариант «войти в визуальный режим (v / V / ^V), выделить нужный текст, выполнить операцию» — с одной стороны, это позволяет перед выполнением операции убедиться в том, что выделено именно то, что нужно, с другой стороны, в случае, если для выделения достаточно одной команды движения, это значит, что нажатие v было лишним. Хотя привычка использовать v и V мешает, если приходится редактировать что-то в среде, где полноценный Vim недоступен, а есть только базовый vi.
В репозитории F-Droid все приложения из набора Simple Mobile Tools по-прежнему доступны бесплатно (но с точки зрения Android это будет «установка из стороннего источника», и переход между версиями из F-Droid и Google Play возможен только через удаление приложения и установку заново из-за несовпадения ключей подписи).
Похожая ситуация с приложением Conversations, но в этом случае версия из F-Droid отличается отсутствием поддержки Push-сообщений, доставляемых через службы Google/Firebase.
Теоретически существует возможность скрыть имя хоста при подключении по HTTPS (от видимости IP-адреса уйти, разумеется, нельзя, но при использовании CDN один и тот же IP-адрес может использоваться для множества имён):
В протоколе TLS 1.3, в отличие от предыдущих версий TLS, сертификат сервера передаётся в зашифрованном виде.
В Guix в описанном случае в описании пакета X может быть указано явное использование A версии 1.0, и пакет продолжит собираться и работать так же, как и раньше (в том числе со всеми ошибками и проблемами безопасности, присутствовавшими в A 1.0). Теоретически такое возможно и в обычном rpm-based или deb-based дистрибутиве, если мантейнер пакета A вместо простого обновления пакета A с версии 1.0 до 2.0 создаст отдельные пакеты A1 и A2 (и к ним, скорее всего, A1-devel и A2-devel), однако в Guix подобное «размножение» пакетов происходит само собой — при любом изменении в исходных текстах, скриптах сборки или других используемых при сборке пакетах меняется и хеш собираемого пакета, в результате новая сборка помещается в отдельный каталог в /gnu/store, где может существовать одновременно с любым количеством предыдущих сборок того же пакета. В бинарных файлах пакетов X и Y при их сборке прописываются конкретные пути в /gnu/store, указывающие на точную версию их зависимостей, в результате они могут использовать разные версии пакета A, даже если разделяемые библиотеки в этих версиях по каким-то причинам имеют одинаковые soname (в обычных дистрибутивах такое возможно только при различных soname).
В WoW точно нет механики покупки старкрафта и апгрэйда новых аккаунтов до последних дополнений :)
Уже почти два года как есть — купленный за игровое золото жетон WoW можно либо потратить на 30 дней подписки, либо конвертировать в средства кошелька Battle.net (в кошелёк добавляется сумма, равная стоимости 30 дней подписки в стране игрока), а уже с кошелька Battle.net можно купить всё, что продаётся в магазине Battle.net (в том числе и другие доступные там игры).
Домен .local на самом деле довольно давно занят — он используется в Multicast DNS (RFC 6762). В Windows из коробки клиент Multicast DNS отсутствует, а вот в Mac OS X и многих дистрибутивах Linux он есть, и в этом случае при попытке использования имён из домена .local для своих собственных целей могут возникать проблемы.
Домены верхнего уровня .lan, .corp, .home сейчас свободны и теоретически могли бы быть кем-то зарегистрированы, как и .dev, однако вероятность этого довольно мала, поскольку такие имена слишком часто используются в локальных сетях. В феврале 2018 года ICANN отклонила заявки на регистрацию доменов .corp, .home и .mail как раз из-за возможных проблем безопасности по причине конфликтов имён.
.invalid для этой цели тоже использовать нельзя — в RFC 6761 написано, что запросы имён из .invalid могут обрабатываться специальным образом и в приложениях, и в библиотеке резолвера (как и .localhost). Так что, если действовать строго по букве RFC, остаётся использовать либо оставшиеся зарезервированные домены .test или .example, либо субдомен в официально зарегистрированном домене (типа .dev.contoso.com; разумеется, показывать такой субдомен всему миру в глобальном DNS совсем не обязательно).
Можно уничтожать приватный ключ CA сразу после подписывания сертификата сервера; в этом случае сертификат сервера можно будет продолжать использовать до истечения его срока действия, но сформировать другой сертификат сервера будет уже нельзя без создания нового сертификата CA и добавления его в хранилище доверенных сертификатов.
Теоретически можно реализовать и вариант с возможностью последующего создания сертификатов только для имён из определённого домена, если сгенерировать промежуточный CA с нужными Name Constraints — в этом случае утечка приватного ключа такого промежуточного CA не даст злоумышленнику возможности создать доверенные сертификаты для произвольного домена.
На самом деле ограничения Let's Encrypt описаны на странице https://letsencrypt.org/docs/rate-limits/. На момент написания этого комментария на выпуск сертификатов действовали следующие ограничения:
Похоже, ссылка «Знаменитая реализация Дегтярева» в статье неверная — она указывает на https://github.com/be1ay/MyHash_Stribog (причём там как раз лежит код с ошибкой), однако, скорее всего, имелся в виду репозиторий https://github.com/adegtyarev/streebog.
Как ни удивительно, похоже, в данном случае программисты не смогли правильно реализовать вроде бы простейшую операцию — «длинное» сложение: в некоторых случаях неправильно обрабатывается перенос в старшую часть числа.
В реализации Дегтярева проблема устранена в декабре 2017 года, а позднее код слегка оптимизирован.
В gost-engine для OpenSSL проблема исправлена в марте 2018 года (исправление совпадает с первым вариантом патча для реализации Дегтярева).
В LibreSSL ошибка пока на месте, в libgcrypt эта ошибка тоже присутствует (у этих проектов соответствующий кусок кода совпадает, и существенно отличается от реализации Дегтярева).
Там их даже не один, а три:
1) Astra Linux Directory — собственная реализация, единственная, которая полностью поддерживает мандатный контроль доступа, имеющийся в Astra Linux SE;
2) FreeIPA — этот вариант разработчики Astra Linux рекомендуют использовать, если нет необходимости в мандатном контроле доступа;
3) Samba.
Это верно далеко не для всех раскладок клавиатуры (в том числе и для языков на базе латиницы — см., например, множество национальных вариантов QWERTY, а ведь есть ещё вариации QWERTZ и AZERTY).
В случае с Vim есть ещё вариант «войти в визуальный режим (
v
/V
/^V
), выделить нужный текст, выполнить операцию» — с одной стороны, это позволяет перед выполнением операции убедиться в том, что выделено именно то, что нужно, с другой стороны, в случае, если для выделения достаточно одной команды движения, это значит, что нажатиеv
было лишним. Хотя привычка использоватьv
иV
мешает, если приходится редактировать что-то в среде, где полноценный Vim недоступен, а есть только базовый vi.В репозитории F-Droid все приложения из набора Simple Mobile Tools по-прежнему доступны бесплатно (но с точки зрения Android это будет «установка из стороннего источника», и переход между версиями из F-Droid и Google Play возможен только через удаление приложения и установку заново из-за несовпадения ключей подписи).
Похожая ситуация с приложением Conversations, но в этом случае версия из F-Droid отличается отсутствием поддержки Push-сообщений, доставляемых через службы Google/Firebase.
Теоретически существует возможность скрыть имя хоста при подключении по HTTPS (от видимости IP-адреса уйти, разумеется, нельзя, но при использовании CDN один и тот же IP-адрес может использоваться для множества имён):
В Guix в описанном случае в описании пакета X может быть указано явное использование A версии 1.0, и пакет продолжит собираться и работать так же, как и раньше (в том числе со всеми ошибками и проблемами безопасности, присутствовавшими в A 1.0). Теоретически такое возможно и в обычном rpm-based или deb-based дистрибутиве, если мантейнер пакета A вместо простого обновления пакета A с версии 1.0 до 2.0 создаст отдельные пакеты A1 и A2 (и к ним, скорее всего, A1-devel и A2-devel), однако в Guix подобное «размножение» пакетов происходит само собой — при любом изменении в исходных текстах, скриптах сборки или других используемых при сборке пакетах меняется и хеш собираемого пакета, в результате новая сборка помещается в отдельный каталог в
/gnu/store
, где может существовать одновременно с любым количеством предыдущих сборок того же пакета. В бинарных файлах пакетов X и Y при их сборке прописываются конкретные пути в/gnu/store
, указывающие на точную версию их зависимостей, в результате они могут использовать разные версии пакета A, даже если разделяемые библиотеки в этих версиях по каким-то причинам имеют одинаковые soname (в обычных дистрибутивах такое возможно только при различных soname).Уже почти два года как есть — купленный за игровое золото жетон WoW можно либо потратить на 30 дней подписки, либо конвертировать в средства кошелька Battle.net (в кошелёк добавляется сумма, равная стоимости 30 дней подписки в стране игрока), а уже с кошелька Battle.net можно купить всё, что продаётся в магазине Battle.net (в том числе и другие доступные там игры).
Домен
.local
на самом деле довольно давно занят — он используется в Multicast DNS (RFC 6762). В Windows из коробки клиент Multicast DNS отсутствует, а вот в Mac OS X и многих дистрибутивах Linux он есть, и в этом случае при попытке использования имён из домена.local
для своих собственных целей могут возникать проблемы.Домены верхнего уровня
.lan
,.corp
,.home
сейчас свободны и теоретически могли бы быть кем-то зарегистрированы, как и.dev
, однако вероятность этого довольно мала, поскольку такие имена слишком часто используются в локальных сетях. В феврале 2018 года ICANN отклонила заявки на регистрацию доменов.corp
,.home
и.mail
как раз из-за возможных проблем безопасности по причине конфликтов имён..invalid
для этой цели тоже использовать нельзя — в RFC 6761 написано, что запросы имён из.invalid
могут обрабатываться специальным образом и в приложениях, и в библиотеке резолвера (как и.localhost
). Так что, если действовать строго по букве RFC, остаётся использовать либо оставшиеся зарезервированные домены.test
или.example
, либо субдомен в официально зарегистрированном домене (типа.dev.contoso.com
; разумеется, показывать такой субдомен всему миру в глобальном DNS совсем не обязательно).Можно уничтожать приватный ключ CA сразу после подписывания сертификата сервера; в этом случае сертификат сервера можно будет продолжать использовать до истечения его срока действия, но сформировать другой сертификат сервера будет уже нельзя без создания нового сертификата CA и добавления его в хранилище доверенных сертификатов.
Теоретически можно реализовать и вариант с возможностью последующего создания сертификатов только для имён из определённого домена, если сгенерировать промежуточный CA с нужными Name Constraints — в этом случае утечка приватного ключа такого промежуточного CA не даст злоумышленнику возможности создать доверенные сертификаты для произвольного домена.