Что такое trust linux

CMCDragonkai / trusted_certificate_stores_on_linux_os_and_applications.md

Trusted SSL/TLS Certificate Stores on Linux Operating Systems and Applications

The SSL/TLS store location is not standardised across operating systems or even Linux distros. It could be anywhere in:

  • /etc/ssl/certs
  • /etc/pki/tls/certs/ca-bundle.crt
  • /etc/ssl/certs/ca-bundle.crt
  • /etc/pki/tls/certs/ca-bundle.trust.crt
  • /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem
  • /System/Library/OpenSSL (OSX)

It could be a file, or it could be a hashed directory.

Furthermore, not every single application uses the OS certificate store. Some applications like Firefox and HTTPIE bundle their own certificate store for use.

All of this means, updating the certificate store on your OS does not mean all applications can make use of the new updated certificates. Every application needs to be updated on a case by case basis.

Most applications that bundle their own certificates allows you to override the certificate path to a PEM file or a c_rehash hashed directory (a hashed directory option is rare). For curl this means using the

/.curlrc and setting: cacert = /certificates.pem . For libcurl in PHP, this means editing the php.ini . But some applications like Firefox does not allow you to point to the OS certificates, you have to update the certificates the Firefox way.

So beware of any application that uses the network, and uses SSL/TLS. Make sure to note of how it locates its certificates, whether it bundles its own, whether it allows you to override the certificate path, it can save you a lot of headaches later wondering why a particular application cannot access a certain URL.

Updating OS certificate stores are also OS/distro specific. Sometimes the distro packages will be out of date, and new CA changes may take a while to propagate. You can instead add certificates from curl ‘s main website, they keep it updated by ripping certificates from Firefox. This is how you would do it in Ubuntu:

Источник

LineageOS представляет «Trust» — централизованный интерфейс для обеспечения безопасности и конфиденциальности

Введение ежемесячных патчей безопасности для Android было долгожданным и очень необходимым шагом от Google. В то время Android был позорным для своих проблем с фрагментацией, что отрицательно сказалось на том, как уязвимости могут быть исправлены, а затем быстро распространены на устройства. Ежемесячные патчи безопасности обеспечивали быстрый способ для заинтересованных пользователей судить о том, насколько «безопасное» их устройство.

К сожалению, так как благими намерениями это изменение может быть для конечных пользователей, некоторые OEM-производители не смогли полностью развернуть все патчи безопасности для своих устройств. Всякий раз, когда Google выпускает ежемесячный патч безопасности, OEM-производители должны исправлять все уязвимости, описанные в бюллетене по безопасности в этом месяце, если они хотят заявить, что их устройство защищено до этого уровня ежемесячных исправлений. Тем не менее, исследователи обнаружили значительный разрыв в уровне исправлений между уровнем исправления безопасности, указанным на телефоне, и тем, какие уязвимости защищали телефон. В то время как большинство средних потребителей, похоже, не заботятся об этом, нет никаких сомнений в том, что это было нарушением доверия со стороны OEM-производителей. Подобные проблемы побудили Google внести поправки в свои OEM-соглашения, чтобы включить требования для регулярных патчей безопасности.

В свете этих проблем разработчики, работающие над LineageOS, внедрили «Trust».

Trust

Интерфейс Trust также предупреждает пользователей о том, что их устройство небезопасно, как в случаях, когда SELinux отключен, root включен или когда устройство не зашифровано. Trust также показывает значок в строке состояния, когда приложение активно использует root-доступ, также как Privacy Guard. Trust также содержит настройки для управления лимитом SMS-сообщений для приложений.

Интерфейс Trust работает в строках LineageOS 15.1 на этой неделе. Разработчики обещают доставить больше функций в рамках Trust в будущем.

Источник

trust (1) — Linux Man Pages

trust: Tool for operating on the trust policy store

Command to display trust manual in Linux: $ man 1 trust

trust — Tool for operating on the trust policy store

SYNOPSIS


DESCRIPTION

trust is a command line tool to examine and modify the shared trust policy store.

Читайте также:  Как обновить драйвер для наушников windows 10

See the various sub commands below. The following global options can be used:

-v, —verbose Run in verbose mode with debug output.

-q, —quiet Run in quiet mode without warning or failure messages.

List trust policy store items.

List information about the various items in the trust policy store. Each item is listed with it’s PKCS#11 URI and some descriptive information.

You can specify the following options to control what to list.

—filter= Specifies what certificates to extract. You can specify the following values:

ca-anchors Certificate anchors

trust-policy Anchors and blacklist (default)

blacklist Blacklisted certificates

certificates All certificates

pkcs11:object=xx A PKCS#11 URI to filter with

If an output format is chosen that cannot support type what has been specified by the filter, a message will be printed.

None of the available formats support storage of blacklist entries that do not contain a full certificate. Thus any certificates blacklisted by their issuer and serial number alone, are not included in the extracted blacklist.

—purpose= Limit to certificates usable for the given purpose You can specify one of the following values:

server-auth For authenticating servers

client-auth For authenticating clients

email For email protection

code-signing For authenticated signed code

1.2.3.4.5. An arbitrary purpose OID

ANCHOR

Store or remove trust anchors.

Store or remove trust anchors in the trust policy store. These are usually root certificate authorities.

Specify either the —store or —remove operations. If no operation is specified then —store is assumed.

When storing, one or more certificate files are expected on the command line. These are stored as anchors, unless they are already present.

When removing an anchor, either specify certificate files or PKCS#11 URI’s on the command line. Matching anchors will be removed.

It may be that this command needs to be run as root in order to modify the system trust policy store, if no user specific store is available.

You can specify the following options.

—remove Remove one or more anchors from the trust policy store. Specify certificate files or PKCS#11 URI’s on the command line.

—store Store one or more anchors to the trust policy store. Specify certificate files on the command line.

EXTRACT

Extract trust policy from the shared trust policy store.

You can specify the following options to control what to extract. The —filter and —format arguments should be specified. By default this command will not overwrite the destination file or directory.

—comment Add identifying comments to PEM bundle output files before each certificate.

—filter= Specifies what certificates to extract. You can specify the following values:

ca-anchors Certificate anchors (default)

trust-policy Anchors and blacklist

blacklist Blacklisted certificates

certificates All certificates

pkcs11:object=xx A PKCS#11 URI

If an output format is chosen that cannot support type what has been specified by the filter, a message will be printed.

None of the available formats support storage of blacklist entries that do not contain a full certificate. Thus any certificates blacklisted by their issuer and serial number alone, are not included in the extracted blacklist.

—format= The format of the destination file or directory. You can specify one of the following values:

x509-file DER X.509 certificate file

x509-directory directory of X.509 certificates

pem-bundle File containing one or more certificate PEM blocks

pem-directory Directory of PEM files each containing one certificate

pem-directory-hash Directory of PEM files each containing one certificate, with hash symlinks

openssl-bundle OpenSSL specific PEM bundle of certificates

openssl-directory Directory of OpenSSL specific PEM files

java-cacerts Java keystore ‘cacerts’ certificate bundle

—overwrite Overwrite output file or directory.

—purpose= Limit to certificates usable for the given purpose You can specify one of the following values:

server-auth For authenticating servers

client-auth For authenticating clients

email For email protection

code-signing For authenticated signed code

1.2.3.4.5. An arbitrary purpose OID

EXTRACT COMPAT

Extract compatibility trust certificate bundles.

OpenSSL, Java and some versions of GnuTLS cannot currently read trust information directly from the trust policy store. This command extracts trust information such as certificate anchors for use by these libraries.

What this command does, and where it extracts the files is distribution or site specific. Packagers or administrators are expected customize this command.

Читайте также:  Remove icon from taskbar windows

Dump PKCS#11 items in the various tokens.

Dump information about the various PKCS#11 items in the tokens. Each item is dumped with it’s PKCS#11 URI and information in the .p11-kit persistence format.

You can specify the following options to control what to dump.

—filter= Specifies what certificates to extract. You can specify the following values:

all All objects. This is the default

pkcs11:object=xx A PKCS#11 URI to filter with

Источник

ARM TrustZone: как сделать Linux безопаснее

Меня зовут Андрей Лукин, я Senior Linux Kernel Developer в GlobalLogic. Тема, которую затрону сегодня, довольно обширная, и здесь хочу лишь описать основную идею технологии; те базовые кирпичики, на которых строится техника защиты. А за более подробным рассказом приходите на Root Linux Conference 18 марта в КВЦ «Парковый».

Говорят, что уровень секьюрности системы — это уровень паранойи разработчика. Или, если по-научному, система защищена настолько, насколько защищено самое слабое её звено.

Согласно статистике, доля Linux на персональных компьютерах и ноутбуках в мире едва ли достигает 6%. Но сталкиваемся мы с этой операционной системой, на самом деле, намного чаще. Linux повсеместно используется в серверах, мобильных устройствах, разнообразных embedded-решениях от промышленных агрегатов до бытовой электроники и автомобилей. При этом, не секрет, что Linux не является защищенной операционной системой, в частности, по требованиям американской Orange book (она же The Common Criteria for Information Technology Security Evaluation). То же наличие в системе суперюзера, которому позволено всё, является серьёзным недочётом. Некоторые попытки структурировать защитные механизмы предпринимаются постоянно, например SELinux (Security Enhanced Linux). Но это чисто программный подход, со всеми достоинствами и недостатками. По-хорошему, необходимо комплексное решение. В этой статье я решил сосредоточиться на технологии защиты для ARM-процессоров, поскольку невозможно объять необъятное ещё и в рамках одной публикации.

ARM-платформа стала очень популярной с распространением мобильных устройств; в то же время возросла и стоимость данных для защиты. С повсеместным переводом всего и вся в онлайн — платежей, банкинга, продаж контента — хакеры стали готовы тратить всё большие и большие деньги на подготовку и проведение атак. Никто не гнушается реверс-инжиниринга прошивок, загрузчиков и даже вмешательств в железо. Лакомый кусочек — найти так называемую атаку на целое поколение или даже класс устройств (например, рутование айфонов или взлом игровых приставок Sony PlayStation 4). И если сам процесс взлома может потребовать относительно много времени на исследование, большого опыта и, возможно, дорогостоящих инструментов, включая даже электронный микроскоп, то эксплуатация найденной уязвимости, как правило, не требует серьёзных усилий. Вспомнить тот же Pegasus, который по клику на ссылку, по сути, удалённо рутовал айфон и делал, что хотел на устройстве.

В попытке защититься или хотя бы создать изолированный от всей остальной системы доверенный островок была спроектирована технология — набор компонентов и подход к построению системы — под общим названием ARM TrustZone ® .

Разделение миров

В основе концепции ARM TrustZone лежит разделение на уровне аппаратуры среды выполнения на защищенную и незащищенную, далее Secure World (trusted, доверенный мир) и Normal World (non-trusted, недоверенный мир). Причём Normal World (NWd) не имеет доступа к Secure World (SWd), тогда как последний может достучаться куда угодно. Этот подход затрагивает не только процессор, но и память, транзакции на шинах, прерывания, периферийные устройства в рамках System-on-a-Chip (SoC) и, в том числе, программное обеспечение.

Для удобства введем терминологию: Rich OS — полнофункциональная операционная система работающая в Normal World, Secure OS — доверенная операционная система работающая в Secure World и ограниченная в функционале ради безопасности, Trustlet — приложение запущенное в Secure OS, которое может быть предоставлено сторонними разработчиками. TEE — это Trusted Execution Environments, совокупность аппаратных (TrustZone) и программных (Secure OS + приложения) средств обеспечения безопасности критически важных компонентов.

Так что же из себя представляют эти миры?

По большому счету, разницы особой нет. В обоих есть все возможные режимы процессоров (supervisor, user, data abort и т.д.) исключая monitor mode, который всегда secure. Оба могут использовать все регистры, аппаратные блоки SoC. Но SWd может в runtime закрыть от NWd устройства на шине с помощью контроллера TZPC, или куски памяти с помощью контроллера TZASC. Соответственно, если мы обеспечиваем загрузку нашего доверенного кода в Secure World, то он там может выполняться независимо и защищенно от NWd.

Читайте также:  Focusrite scarlett 2i2 1st gen driver windows 10

Разделение миров

Процедура загрузки и разделения миров обычно выглядит так:
Процессор стартует в режиме монитора, то есть находится в Secure World, и инициирует загрузку так называемой Secure OS, которая будет основой нашего Trusted Execution Environment. Она делает всю необходимую секьюрную конфигурацию системы. Например, она закрывает сканер отпечатков пальцев и часть оперативной памяти от доступа из Normal World. После этого инициируется переход в Normal World, где уже другой загрузчик, например GRUB, запускает Rich OS (Linux/Android) как обычно. Теперь, если Linux захочет проверить отпечаток пальца, он обязан будет отправлять запрос в SWd с помощью команды процессора SMC (Secure Monitor Call) и TEE сможет проверить легитимность этого запроса.

Таким образом, построение Secure World все равно ложится на плечи программиста. Если ничего специально не предпринимать и загрузить Linux «как есть», он будет выполняться в SWd как ни в чём ни бывало, так как никто не производил процедуру «разделения миров» на старте системы.

ARM TrustZone — замена TPM?

Так что же мы можем сделать, находясь в TEE? Как минимум всё то, что обычно возлагается на Trusted Platform Module (TPM). Речь идет о защищённом хранении данных в зашифрованном виде, генерации ключей на основе базового и проверке подписей. Но в любом случае, это не полноценная замена, так как в ARM TrustZone не используются такие специальные аппаратные средства противодействия как «хитрая» топология слоёв микросхемы, шифрование данных на шинах и т.д. Защита здесь лишь та, что получается автоматически, так как аппаратные модули встроены в SoC. Но это же является и преимуществом, поскольку они могут работать на полной скорости системы и защищать каждый компонент SoC.

Тогда зачем это всё нужно?

Классические примеры использования — это защита электронных платежей, проприетарного видео/аудио контента, аутентификация всевозможных данных.

Посмотрим, например, последовательность проверки отпечатка пальца пользователя:

  • Android Lockscreen обратится в демон keystore;
  • Тот, в свою очередь, вызовет keymaster HAL, и при наличии TrustZone обращение пойдёт именно туда;
  • Библиотека обратится к драйверу доступа в TrustZone через соответствующий демон; Вызов TrustZone
  • Драйвер же имеет возможность сделать SMC вызов, в отличие от кода, работающего в user mode процессора;
  • Процессор перейдёт в режим Monitor и передаст управление Secure OS;
  • Та, в свою очередь, запустит соответствующий Trustlet, который будет работать со сканером напрямую, может запросить эталоны отпечатков пальцев из защищённого хранилища и т.д. А в конце концов аутентифицирует пользователя (или нет) для Rish OS. При этом Normal world не может вмешиваться в процесс, так как все необходимые ресурсы (модуль сканера, память) аппаратно закрыты от него.

Новые возможности

Как следствие работы аппаратных компонентов TrustZone на высокой скорости, появляется возможность постоянного runtime-контроля целостности ядра Linux. Грубо говоря, можно регулярно вычислять хэш кода ядра и сверять его с эталонным. Это становится применимым в продакшне, поскольку может быть выполнено очень быстро и незаметно для пользователя.

Более того, мы можем верифицировать не только статический код, но и загружаемые библиотеки, таблицы виртуальных указателей, указатели возврата в стеке и т.д. Есть даже свеженький white paper от Qualcomm с подробностями аппаратной поддержки верификации указателей.

Будущее рядом?

Так что, нужно срочно переводить критический к безопасности код в Trustlets и запускать в TrustZone? Хорошо бы, но пока ещё наличествует огромный зоопарк реализаций Secure OS и всей инфраструктуры для неё. Samsung предлагает своё решение, Qualcomm своё, Renesas опирается на открытые коды OP-TEE, консорциум GlobalPlatform пытается как-то всё систематизировать и выдать спецификацию на API, есть сторонние разработчики вроде Trustonic Mobicore. В итоге, сделать универсальное решение, например, для множества телефонов, не представляется возможным, если ты не сам вендор. Да и корпорациям приходится учитывать разнообразие своих же платформ. Поэтому старый добрый white box ещё пригодится до тех пор, пока Global Platform не отшлифует свою спецификацию или открытый код OP-TEE не станет стандартом де факто.

Но в любом случае радостно, что подходы к обеспечению безопасности становятся комплексными и охватывают всю большую часть системы, в том числе и аппаратные модули. Причем мы получаем недостижимую ранее гибкость программного подхода с надежной защитой со стороны «железа». Можно не ограничиваться предустановленным на устройство набором функций, а программно и безопасно обновлять систему со временем. А проблемы совместимости так или иначе со временем будут решены, надеюсь, не без помощи open-source.

Источник

Оцените статью