Практически каждое «безопасное хранилище учетных данных» делает это путем шифрования файла хранилища учетных данных на диске с помощью ключа random , дополнительно зашифрованного парольной фразой.Без ключевой фразы вы не сможете получить доступ к ключу, необходимому для расшифровки содержимого.Вы также можете хранить ключ в криптоустройстве (например, смарт-карте NFC или USB-ключе), и они будут защищены собственной системой вызова (парольная фраза, отпечаток пальца и т. Д.).
Фраза-парольполученные от пользователя непосредственно элементами ОС, так что подделать его (например, с помощью веб-сайта) будет сложнее, а также, чтобы ни одно приложение не нуждалось в прямом доступе к хранилищу учетных данных - как только пользователь разблокирует хранилище, приложение может получитьУчетные данные в нем изначально хранятся, и только те.Для этого есть различные механизмы, но наиболее распространенным является использование идентификатора приложения исполняемого файла, который выдает запрос - с дополнительным ограничением, что исполняемый файл должен запускать только подписанные двоичные элементы (без вставки в библиотеку и т. Д.) И не должен подвергатьсяотладка (ОС полностью осведомлена об этом).
Что касается того, как ОС предотвращают утечку открытого текста, пока он остается в памяти?Хах.Это совсем другая история, и существует множество подходов - предотвращение перетекания данных в своп, использование зашифрованного свопинга, дешифрование только тех учетных данных, которые необходимы, и отказ от них, как только они не нужны, с участием ядра в управлении онлайнхранение (в ОЗУ) во время работы системы и использование ядра для выполнения всех криптографических операций, для которых требуется доступ, например, к асимметричным секретным ключам шифра.Ядро может далее передать это аппаратному устройству, в то время как ОС предоставляет унифицированный API независимо от того, где хранятся закрытые ключи.Такие API существуют в OS X и Windows, и, безусловно, в Linux.
Поскольку устройства TPM или USB, такие как устройства чтения криптокарт, могут безопасно хранить закрытые ключи, вместо них действительно полезно использовать личные сертификаты для аутентификации.паролей.Затем устройство с закрытым ключом может подписать запрос с удаленного сервера (например, веб-сайта, поддерживающего сертификаты), и удаленная система проверяет подпись запроса на основе вашего открытого и, следовательно, не конфиденциального сертификата.Побочные заявления: я бы хотел, чтобы финансовые учреждения и повседневные сайты поддерживали личные пароли вместо паролей.Это более безопасно и абсолютно без проблем, и работает на всех платформах - даже мобильных!