Google Cloud Blog / Identity & Security How Google Cloud achieves confidentiality, data integrity, availability, non-repudiation and authentication of your data.
With this free app, you can sign in to your personal or work/school Microsoft account without using a password. You’ll use a fingerprint, face recognition, or a PIN for security.
Одним из вариантов решения этой задачи может быть KeePass, который будет хранить ключи и их пароли в себе, и будет сам расшифровывать ключ перед использованием.
Для этого используется три компонента –
ssh-клиент (ssh, ssh-add, git, etc),
сам KeePass с плагином KeeAgent,
и ssh-agent, который будет держать уже расшифрованные ключи в памяти, и отдавать их клиентам.
В целом схема их взаимодействия получается следующая:
запускается ssh-agent, который создаёт сокет, через который все компоненты системы будут общаться друг с другом
запускается KeePass, который хранит в своей базе ключи и их пароли, и загружает их в ssh-agent, используя созданный агентом сокет
запускается любой ssh-клиент, который сокет обращается к агенту, и получает уже расшифрованный ключ
Keyring – это механизм или конкретный сервис, предназначенный для хранения какой-либо конфиденциальной информации.
In cryptography, a keyring stores known encryption keys (and, in some cases, passwords).
Much like a keyring in real life allows you to keep certain sets of keys together, a keyring in Passwords and Keys allows you to keep passwords and keys in separate groups.
a keyring service that enables internal server components and plugins to securely store sensitive information for later retrieval
The Linux key-management facility is primarily a way for various kernel components to retain or cache security data, authentication keys, encryption keys, and other data in the kernel.
Linux kernel keyring vs GNOME Keyring (это просто разные вещи)
Linux keyrings – это механизм ядра для хранения конфиденциальной информации.
keyrings – in-kernel key management and retention facility
GNOME Keyring – коллекция компонентов (gnome-keyring-daemon, библиотеки, пакет seahorse, etc) для хранения конфиденциальной информации.
GNOME Keyring is a collection of components in GNOME that store secrets, passwords, keys, certificates and make them available to applications.
Подведём итоги различий Linux keyrings и GNOME Keyring:
ключевая разница:
Linux keyring – механизм ядра для “кеширования паролей” – хранит их в памяти во время активной сессии системы/пользователя
gnome-keyring – постоянное хранилище паролей, с хранением информации на диске
хранение:
Linux keyring – хранит в памяти, т.к. секреты доступны только во время сесии – их не надо хранить постоянно
gnome-keyring – создаёт файл на диске, как правило в каталоге ~/.local/share/keyrings/
доступ:
Linux keyring – через системные вызовы из user space в kernel space
gnome-keyring – через DBus
приложения для доступа:
Linux keyring – keyctl, systemd-ask-password, etc
gnome-keyring – secret-tool, любая библиотека (python-keyring), seahorse, etc
Secret Service – это не какой-то конкретный сервис, а просто спецификация, такой себе RFC, составленный проектами GNOME и KDE для определения того, как они должны реализовать API для клиентов, которые хотят использовать GNOME Keyring и к KWallet для хранения секретов.
The Secret Service API allows client applications to store secrets securely in a service running in the user’s login session.
Поддержка Secret Service API имеется не только у GNOME Keyring и к KWallet, но и у, например, KeePass, и других приложений.
D-Bus – один из механизмов Linux kernel IPC – Inter Process Communication, позволяющий различным процессам внутри системы передавать другу другу данные или сигналы.
D-Bus в общем: это шина для IPC, если в предыдущих примерах по SSH-агентам использовался UNIX-сокет, тот тут используется механизм bus.
KeePass тоже может играть роль keyring backend используя Secret Storage спецификацию.
Chromium, внезапно, при отсутствии keyring в Linux будет хранить пароли в “открытом виде”.
Что бы указать ему – какой бекенд использовать, можно использовать опцию google-chrome --password-store=basic – для хранения plain text.
Другие параметры – gnome или kwallet.
Включаем поддержку Secret Storage в KeePass, что бы эмулировать установленный gnome-keepass, перезапускаем KeePass.
Пароли в SQLite шифруются всегда. Просто для систем, в которых нет бекенда типа gnome-keyring с поддержкой Secret Service – то пароль для шифрования всегда будет один и тот же для всех пользователей Chromium, что, разумеется, нельзя рассматривать, как защиту.
KeePass написан на C# от Microsoft и на Linux работает под mono
KeePassXC написан на C++ (см. репозиторий), и может легко работать на любой платформе – Linux/BSD/macOS/Windows.
Тут из опций обратите внимание на Add key to agent when database is opened/unlocked – включайте для ключей, которые используются часто, и что бы таких ключей с auto-load было меньше 5 штук, т.к. SSH клиент будет перебирать все ключи в ssh-agent во время попытки подключения, и SSH-сервер на удалённом хосте может разорвать соедениение из-за подозрения на брутфорс.
ssh-agent при таком подходе должен запускаться до KeePass, и экспортировать пемренную $SSH_AUTH_SOCK так, что бы KeePass её увидел.
IdentityFile в ~/.ssh/config не указан вообще – ssh-client сам обратится к ssh-agent и попробует подключиться с доступными ключами.
ssh-agent пытается запросить разрешение для пользователя, а для этого используется ssh-askpass, которого может не быть в системе.