2

Мне нужно знать, что именно происходит во время проверки цифрового сертификата (подписи), когда программное обеспечение установлено операционной системой. Я понимаю, что это процесс с асимметричным ключом, и у меня есть опыт работы с секретным ключом / открытым шифрованием.

Я провел поиск в Интернете и нашел некоторые документы, но, похоже, не могу получить ответ на следующие вопросы (возможно, некоторые из них не настолько умны).

  • При установке программного обеспечения кто (от имени ОС) получает открытый ключ (цифровую подпись) от издателя программного обеспечения? С кем связались здесь? Есть ли демон на другом конце? Или есть хранилище?
  • Что делать, если я не подключен к Интернету? Как будет проходить процесс проверки в этом случае?
  • Что делать, если программное обеспечение подписано неверно, используя имя предполагаемой компании-разработчика программного обеспечения, и я пытаюсь установить его, с каким CA (центром сертификации) свяжутся для защиты меня? Процесс автоматический или я (установщик) должен выполнить какой-то ручной процесс?
  • Открытый ключ поставщика программного обеспечения хранится локально после установки? Куда? Могу ли я просмотреть это?
  • Мой браузер играет какую-либо роль в процессе проверки подписи программного обеспечения? Или браузер заботится только о сайтах https ?

Пожалуйста, сделайте ваши ответы общими (независимо от ОС). Если вам нужно упомянуть какое-то конкретное программное обеспечение, мой порядок предпочтений - в Ubuntu и Windows, в этой последовательности.

1 ответ1

2

Это сильно зависит от операционной системы, поэтому нет никакого общего ответа.

В Arch Linux пакеты подписываются с использованием PGP - не первоначальным автором (который предоставляет только исходный код), а упаковщиком (который компилирует исходный код в программу и создает подписанный пакет).

Подписи хранятся в базе данных пакета вместе с остальной информацией о пакете. (Для сторонних пакетов - когда вы загружаете только файл .pkg.tar.xz - подпись будет во втором файле .pkg.tar.xz.sig .) Сама база данных может быть подписана, но обычно это не так.

pacman в Arch Linux проверяет подписи против ключей в /etc/pacman/gnupg.d (управляется с помощью pacman-key); если у вас еще нет ключа подписавшего, он попросит загрузить ключ с сервера ключей. Не существует центральных "центров сертификации" - PGP использует алгоритм Web of Trust, и действительность чьего-либо ключа зависит от того, какие другие люди подписали этот ключ. (Например, все официальные ключи разработчиков подписаны пятью «мастер-ключами», а мастер-ключи помечены как "доверенные", поэтому всем ключам разработчиков также доверяет менеджер пакетов. Эти ключи поставляются по умолчанию во всех системах Arch, в archlinux-keyring .)

В PGP, поскольку нет ЦС, ключ может быть отозван только его владельцем. Чтобы узнать о новых подписях или аннулировании, вы должны периодически обновлять кэшированные ключи с сервера ключей; gpg --refresh-keys делает это для вашего собственного набора ключей , в то время как pacman-key --refresh-keys обновляет набор ключей, используемый для проверки пакетов.

В Ubuntu также используется PGP, но несколько иначе. Сами пакеты почти никогда не подписываются, они проверяются только по хэш-суммам в базе данных пакетов, которая подписывается автоматическим процессом (используя ключ с именем "Ключ автоматической подписи архива Debian" или "Launchpad PPA for John Smith" или аналогичный),

Сигнатуры также проверяются с использованием локального набора ключей (/etc/apt/trusted.gpg , поддерживается с помощью apt-key), но в отличие от Arch менеджер пакетов Ubuntu игнорирует подписи ключей и доверяет всем ключам в этом наборе ключей, поэтому он никогда не загружает ключи автоматически, и никогда не нужно обновлять их. Официальные ключи предустановлены в различных пакетах foo-keyring (debian-keyring и аналогичных), и если один из этих ключей отозван, обновленный пакет удаляет его.

В Windows программы могут быть подписаны с использованием "Authenticode", который в основном X.509 используется для подписи кода. Подпись, а также собственный сертификат подписывающего лица встроены в файл .exe программы. (Сертификат должен быть прикреплен, потому что, в отличие от PGP, X.509 не имеет серверов ключей, несмотря на первоначальные планы X.500.) В отличие от Linux, большинство программ Windows распространяются в скомпилированном виде их авторами, поэтому файл .exe подписывается автором напрямую.

Сертификат издателя сверяется с локальной базой данных доверенных центров сертификации. В Windows вы можете увидеть это в certmgr.msc - включенные сертификаты определяются Microsoft в соответствии с запросами от CA. (Примечание. Предположительно, Windows 7 может при необходимости загружать необходимые сертификаты CA, поэтому список в диспетчере сертификатов может быть неполным.)

При проверке подписи Windows свяжется с сервером OCSP эмитента, чтобы проверить, был ли сертификат еще не отозван. (Адрес сервера OCSP обычно является частью сертификата издателя.) Другими словами, аннулирования обрабатываются тем же CA, который выдал сертификат в первую очередь. (Примечание: я не уверен, включена ли проверка OCSP по умолчанию. Есть возможность включить / отключить его в Панели управления → Интернет → Дополнительно → Безопасность.) В некоторых случаях Microsoft также помечает известные поддельные сертификаты как "ненадежные" и распространяет их так же, как и регулярные обновления списка CA. В certmgr.msc вы можете увидеть несколько сертификатов, отозванных таким образом.

Некоторые браузеры (такие как Opera или Firefox) имеют свои собственные базы данных сертификатов CA. Те не используются Windows. Между тем, Internet Explorer и Google Chrome используют одну и ту же базу данных Windows.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .