OpenSource в заметках
Говорят, что кто владеет информацией — тот владеет миром. И зачастую владельцы ценной информации делиться ей с посторонними по понятным причинам не хотят. Даже не «не хотят», а всячески стараются, создавая условия, при которых доступ к секретной информации будет настолько затруднён, насколько это вообще возможно. Понятное дело, что технологии «ректального криптоанализа» достанут что угодно, было бы откуда доставать, но сегодня мы не об этом. Представим, что мир справедлив (в смысле, ценность вашей информации не настолько велика, чтобы гладить вас утюгом) и единственный способ добраться до ваше информации — это попросту её украсть. Вот здесь-то нам и приходят на помощь современные технологии шифрования.
В основном ключ шифрования вычисляется программным обеспечением либо из пароля, либо из файла. Думаю, всем известно о том, как нехорошо одним и тем же паролем пользоваться везде, где это требуется. Если добравшийся к вашему паролю человек знает о вас и вашей деятельности чуть больше, чем ничего, то, поверьте, он не заставит вас долго ждать. И хрен бы с ними, с этими «Одноклассниками» и прочей ерундой, но некоторые умудряются теми же паролями шифровать важные документы, содержащие коммерческую тайну!
С файлами закрытых ключей ещё хуже, если хранить их в открытом виде. А ведь сколько я видел людей, таскающих их просто на флешке, да ещё и с именами, типа «keyfile.tck»! Вот тебе и безопасность. Непонятно в этих случаях, зачем вообще что-то шифровать, если открывается такой «шифр» с пол-пинка. И тут уж какие бы современные технологии ни работали, «если человек идиот — то это надолго». Ну это так. Лирика.
Очевидно, что лучший вариант, это когда у вас для доступа к каждому хранилищу информации существует отдельный пароль/ключ. Само-собой, что пароли должны отвечать хотя бы минимальным требованиям сложности, а ключи храниться в зашифрованном виде.
Решая задачу хранения множества паролей/ключей в одном месте, разработчики навыдумывали массу всяких интересностей. Наиболее используемым лично мной стала небезызвестная KeePassX, которая хранения паролей/ключей предоставляет ещё великое множество удобств по управлению всем этим криптохозяйством.
Сама KeePassX очень даже недурна собой, однако она является самостоятельным приложением, имеющим свою собственную БД для хранения информации и, насколько я понял, абсолютно закрыта от доступа сторонних приложений извне.
Если же вы являетесь разработчиком ПО и вашему приложению жуть как нужно где-то хранить секретные данные, то здесь вам наверняка сможет помочь GNOME Keyring — набор компонент, обеспечивающих хранение ключей, паролей, сертификатов и предоставляющих доступ к хранилищу другим приложениям.
Одной из ключевых особенностей GNOME Keyring является его тесная интеграция в GNOME, что позволяет автоматически разблокировать хранилище, как только пользователь вошёл в систему (читай запустил сеанс GNOME).
Также, GNOME Keyring разработан с использованием семейства стандартов шифрования PKCS#11, что позволяет, например, в качестве хранилища данных использовать смарт-карты.
Для связи с GNOME Keyring используется ставший на сегодня уже стандартом D-Bus, так что работа к GNOME Keyring возможна практически отовсюду. Также, существует библиотека libgnome-keyring, обеспечивающая API-доступ к сохранённым паролям.
В качестве понятия хранилища GNOME Keyring использует определение «брелка». В брелках сохраняются пароли и другая важная информация, а сам брелок, естественно, надёжно зашифрован. Бреклов у каждого пользователя может быть несколько. Например, пользователь может иметь брелок с названием «My passwords» и хранить в нём пароли, а, например, ключи SSH хранить в брелке под названием «My SSH keys». По умолчанию же пользователь всегда имеет брелок «login», а также так называемый «сеансовый» брелок с именем «session». Сеансовый брелок никогда не сохраняется на диск и уничтожается сразу после завершения сеанса работы пользователя.
Каждый брелок разблокируется мастер-паролем при входе пользователя в GNOME. Можно также настроить автоматическую блокировку брелка по истечению определённого времени неактивности пользователя.
В брелках данные хранятся в виде т. н. записей. Каждая запись имеет имя (например, «My office SSH key»), секретные данные, а также неограниченное количество атрибутов в виде пар «имя = значение». Атрибуты могут использоваться приложениями для хранения дополнительных данных о пароле, ключе, сертификате, etc.
GNOME/Keyring
GNOME Keyring is «a collection of components in GNOME that store secrets, passwords, keys, certificates and make them available to applications.»
Contents
Installation
gnome-keyring is a member of the gnome group is thus usually present on systems running GNOME. The package can otherwise be installed on its own. libsecret should also be installed to grant other applications access to your keyrings. Although libgnome-keyring is deprecated (and superseded by libsecret), it may still be required by certain applications.
Extra utilities related to GNOME Keyring include:
Manage using GUI
You can manage the contents of GNOME Keyring using Seahorse; install the seahorse package.
Passwords for keyrings (e.g., the default keyring, «Login») can be changed and even removed. See Create a new keyring and Update the keyring password in GNOME Help for more information.
Using the keyring
PAM step
When using a display manager, the keyring works out of the box for most cases. GDM, LightDM, LXDM, and SDDM already have the necessary PAM configuration. For a display manager that does not automatically unlock the keyring edit the appropriate file instead of /etc/pam.d/login as mentioned below.
When using console-based login, edit /etc/pam.d/login :
Add auth optional pam_gnome_keyring.so at the end of the auth section and session optional pam_gnome_keyring.so auto_start at the end of the session section.
If you are using GNOME, Unity, Cinnamon, or MATE, you are done. The initialisation is completed and environment variables are set automatically.
—start step
If you are not using GNOME, Unity, Mate, or Cinnamon as your desktop environment, initialisation will not complete automatically. You can fix this using various methods:
Shell
Add the following to your
xinitrc
Start the gnome-keyring-daemon from xinitrc:
Xfce only
See Xfce#SSH agents for use in Xfce.
XDG autostart
/.config/autostart/ and delete the OnlyShowIn=GNOME;Unity;MATE;Cinnamon; lines from each file. Note however that this will not set SSH_AUTH_SOCK (and the other variables if the PAM step was skipped) environment variable.
SSH keys
gnome-keyring-daemon with the ssh component will start an SSH agent and automatically load all the keys in
/.ssh/ that have corresponding .pub files. There is no way to remove these keys from the agent.
To list all loaded keys:
When you connect to a server that uses a loaded key with a password, a dialog will popup asking you for the passphrase. It has an option to automatically unlock the key when you log in. If you check this, you will not need to enter your passphrase again!
To permanently save the a passphrase in the keyring, use ssh-askpass from the seahorse package:
To manually add an SSH key from another directory:
/.ssh/id_rsa.pub in the example). Also, make sure that the public key is the file name of the private key plus .pub (for example, my_key.pub ).
To disable all manually added keys:
Disable keyring daemon components
If you wish to run an alternative SSH agent (e.g. ssh-agent or gpg-agent), you need to disable the ssh component of GNOME Keyring. To do so in an account-local way, copy /etc/xdg/autostart/gnome-keyring-ssh.desktop to
/.config/autostart/ and then append the line Hidden=true to the copied file. Then log out.
Tips and tricks
Integration with applications
Flushing passphrases
This command starts gnome-keyring-daemon, shutting down previously running instances.
Git integration
The GNOME keyring is useful in conjunction with Git when you are pushing over HTTPS. The libsecret package needs to be installed for this functionality to be available.
Configure Git to use the libsecret helper:
GnuPG integration
Several applications which use GnuPG require a pinentry-program to be set. Set the following to use GNOME 3 pinentry for GNOME Keyring to manage passphrase prompts.
Another option is to force loopback for GPG which should allow the passphrase to be entered in the application.
Renaming a keyring
The display name for a keyring (i.e., the name that appears in Seahorse and from file ) can be changed by changing the value of display-name in the unencrypted keyring file. Keyrings will usually be stored in
/.local/share/keyrings/ with the .keyring file extension.
Automatically change keyring password with user password
Troubleshooting
Passwords are not remembered
If you are prompted for a password after logging in and you find that your passwords are not saved, then you may need to create/set a default keyring. To do this using Seahorse (a.k.a. Passwords and Keys), see Create a new keyring and Change the default keyring in GNOME Help.
Resetting the keyring
You will need to change your login keyring password if you receive the following error message: «The password you use to login to your computer no longer matches that of your login keyring».
Alternatively, you can remove the login.keyring and user.keystore files from
Unable to locate daemon control file
The following error may appear in the journal after logging in:
This message «can be safely ignored» if there are no other related issues [3].
gnome keyring daemon что это
Установка:
Для установки gnome-keyring в Ubuntu / Linux Mint / Debian, введите в Терминал :
Подробная информация о пакете:
Службы контекстного меню GNOME (демон и инструменты)
gnome-keyring — это демон в сеансе, аналогичный ssh-agent, а другие приложения могут использовать его для хранения паролей и другой конфиденциальной информации.
Программа может управлять несколькими ключами, каждый со своим собственным основным паролем, а также сеансовый ключ, который никогда не сохраняется на диске, но забывается, когда заканчивается сеанс.
Зависимости:
Криптографические службы GNOME (демон и инструменты)
Библиотека GNU C: общие библиотеки
Возможности POSIX 1003.1e (утилиты)
Библиотека оболочек Glib для PKCS # 11 — среда выполнения
Библиотека для задач, связанных с криптографией
Библиотека LGPL Crypto — библиотека времени выполнения
Библиотека GLib подпрограмм C
GNOME 3 PIN или диалог ввода фразы для GnuPG
GNOME Keyring — сервис (демон) gnome-keyring-daemon, предназначенный для безопасного хранения информации — имён пользователей и паролей. Конфиденциальные данные хранятся в зашифрованном виде и пользователю достаточно вводить один мастер-пароль для получения к ним доступа.
GNOME Keyring — часть окружения рабочего стола GNOME и разрабатывается и поддерживается проектом GnomeLive.
Содержание
GNOME Keyring Manager [ править | править код ]
GNOME Keyring Manager — устаревший интерфейс для the GNOME Keyring. С версии GNOME 2.22 вместо GNOME Keyring Manager используется приложение Seahorse. [2]
Библиотека сайта rus-linux.net
| Beyond Linux From Scratch. Version 2011-12-30 | ||
| Назад | 33. Основные пакеты GNOME. Рабочий стол | Вперед |
Пакет gnome-keyring-2.30.3
Знакомимся с пакетом gnome-keyring
В пакете gnome-keyring находится демон, который хранит пароли и другие секретные данные пользователей.
Известно, что этот пакет собирается на платформе LFS 6.5, но он не тестировался.
Информация о пакете
Зависимости пакета gnome-keyring
Обязательные
Необязательные
Установка пакета gnome-keyring
Замечание
Инструкции, приведенные ниже, предназначены для установки пакета в среде GNOME-2. Если, по какой причине, вы устанавливаете этот пакет без установки пакета ORBit2 и базовых библиотек GNOME-2, вам необходимо изменить параметр —prefix= в скрипте configure с тем, чтобы он указывал желаемый путь установки (например, —prefix=/usr ).
Установите пакет gnome-keyring с помощью следующих команд:
В этом пакете набор тестов отсутствует.
Теперь в роли пользователя root выполните:
Пояснение команд
—with-pam-dir=/lib/security : Этот параметр указывает, где модули pam будут хранить информацию.
—with-dbus-services=/usr/share/dbus-1/services : Этот параметр указывает, где будет размещен директорий сессионных сервисов D-BUS.
—with-root-certs=/etc/ssl/certs : Этот параметр указывает, где размещаются надежные корневые сертификаты.
—disable-scrollkeeper : Используйте этот параметр, если вы хотите отключить обновление базы данных scrollkeeper.
Описание пакета
Установленные программы: gnome-keyring, gnome-keyring-daemon и gnome-keyring-prompt
Установленные библиотеки: gck-ssh-store-standalone.so, gck-user-store-standalone.so, gnome-keyring-pkcs11.so, gck-roots-store-standalone.so, gck-secret-store-standalone.so, libgcr.so, libgp11.so и pam_gnome_keyring.so
сессионный демон, в котором хранятся пароли пользователей
Перевод сделан с варианта оригинала, датированного 2010-08-19 09:56:51 +0000
What is: Linux keyring, gnome-keyring, Secret Service, и D-Bus

Я долго думал – собирать ли всё в одном посте, или всё-таки разбить на несколько, ведь с одной стороны keyrings – это одна тема, D-Bus – другая, а примеры работы с SecretServices – вообще третья.
Тем не менее – решил всё-таки оставить в одном, так как со всем этим разбирался по ходу дела, и все эти темы связаны друг с другом в обсуждаемом контесте хранения конфиденциальных данных.
Вообще история появления этого поста интересна сама по себе:
Собственно, в этом посте рассмотрим:
Пост ни разу не является предметным “HowTo” – он чисто обзорный, что бы получить представление об всех упомянутых компонентах.
Конкретную работу с KeePass и, возможно, GNOME Keyring для хранения данных рассмотрим в другой раз.
Весь пост писался путём долгого-долгого гугления, поэтому и в самом тексте, и в конце, будет достаточно много ссылок на документацию и материалы, которые использовались в процессе подготовки материала.
Ну и помните, что от ошибок и неточностей никто не застрахован. Welcome to the comments, if any.
Выглядел процесс примерно так:
Что такое keyring
Для начала – что такое “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.
Итак, понятие keyring – это механизм или конкретный сервис, предназначенный для хранения какой-либо конфиденциальной информации.
Окей, тут разобрались.
Linux keyring vs gnome-keyring
Теперь перейдём к рассмотрению разницы между Linux kernel keyring и GNOME Keyring: сначала сбило с толку, ибо предполагал, что GNOME Keyring каким-то образом использует механизм keyrings ядра, но нет – это просто разные вещи.
keyrings – in-kernel key management and retention facility
Т.е, Linux keyrings – это механизм ядра для хранения конфиденциальной информации.
GNOME Keyring is a collection of components in GNOME that store secrets, passwords, keys, certificates and make them available to applications.
Отличная подборка материалов тут – Tower Floor — Encryption, в частности см. документ Caching Passwords.
Резюме
Подведём итоги различий Linux keyrings и GNOME Keyring:
Реализации keyrings
Кроме того, python-keyring упоминает:
И это далеко не все.
Клиенты для работы с такими хранилищами, опять-таки – список далеко не полный:
Перехват паролей из gnome-keyting
Что такое Secret Service
Ещё одно понятие, на которое пришлось немного потратить время.
Что за “Secret Service”? Какое он имеет отношение к GNOME Keyring и к KWallet?
Что он делает в Linux, и как его пощупать?
The Secret Service API allows client applications to store secrets securely in a service running in the user’s login session.
Ага, т.е. Secret Service – это не какой-то конкретный сервис, а просто спецификация, такой себе RFC, составленный проектами GNOME и KDE для определения того, как они должны реализовать API для клиентов, которые хотят использовать GNOME Keyring и к KWallet для хранения секретов.
При этом поддержка Secret Service API имеется не только у GNOME Keyring и к KWallet, но и у, например, KeePass, и других приложений.
IMHO, немного сбивает с толку само название – Secret Service, т.е. “секретный сервис”. Назвали бы его Secrets Service, т.е. “сервис секретов” – было бы куда понятнее.
Понятия Secret Service
Теперь пришло время попытаться вспомнить что же такое D-Bus, и как к нему вообще обращаться.
Итак, D-Bus – один из механизмов Linux kernel IPC – Inter Process Communication, позволяющий различным процессам внутри системы передавать другу другу данные или сигналы.
Кратко об основных понятиях и терминах D-Bus:
D-Bus tools
Running the GNOME Keyring Daemon
Starting Gnome Keyring Daemon
Stopping Gnome Keyring Daemon
Technical Details
gnome-keyring-daemon has several options which control its behavior during startup.
The --daemonize option tells gnome-keyring-daemon to disconnect from the calling terminal completely.
The --foreground option tells gnome-keyring-daemon to remain in the foreground, and connected to the foreground terminal.
When called with neither --daemonize or --foreground then gnome-keyring-daemon will fork and exit, but remain not completely disconnect from the calling terminal.
When run with the --login option, gnome-keyring-daemon expects a password on it’s stdin. All characters until stdin closes are considered part of the password.
When run with the --login option, gnome-keyring-daemon does not fully initialize. It expects to be initialized later by calling another gnome-keyring-daemon with the --start option.
If a gnome-keyring-daemon process is started with --start option, then it tries to initialize an already running gnome-keyring-daemon (usually one that was started with --login). If no gnome-keyring-daemon is running, then it start or becomes one, depending on the --foreground option.
The --login and --start options cannot be used together. However when used together with --foreground or --daemon their behavior is what you would expect from those options.
In the case of --login only a few environment variables will be printed. A later call to --start will print the remaining environment variables.
When used with a modern DBus capable session manager (like gnome-session 2.24.x and later) gnome-keyring-daemon will register environment variables directly with the session manager.
Projects/GnomeKeyring/RunningDaemon (last edited 2015-10-07 11:30:49 by TristanVanBerkom )







