Хранение паролей с помощью Python Keyring

16

Я использую библиотеку ключей для хранения паролей в моем приложении на Python.

import keyring
keyring.set_password('My namespace', username, password)
keyring.get_password('My namespace', username)

И это работает очень хорошо.

Я предполагаю, что пароли безопасны в связке ключей, они зашифрованы. Но, поскольку я могу получить их по имени пользователя, что мешает другим приложениям делать то же самое?

Разве это не угроза безопасности или я что-то упустил?

umpirsky
источник

Ответы:

14

Библиотека ключей использует стандартный набор ключей вашего рабочего стола, например, набор ключей GNOME . Этот брелок разблокируется сразу после входа в систему, что означает: да, любое другое приложение, запущенное вами, имеет доступ к паролю, который вы храните вместе с вашим приложением, но - и это идея брелка - другие пользователи и их приложения нет.

Цитирую « философия безопасности gnome-keyring »:

Примером театра безопасности является иллюзия, что каким-то образом одно приложение, работающее в контексте безопасности (например, сеанс пользователя), может хранить информацию из другого приложения, работающего в том же контексте безопасности.

Обратите внимание, что usernameв set_password/ get_passwordfunctions не связано с именем пользователя, запускающего приложение (т. Е. Пользователя, чье кольцо ключей используется), но может быть, например, адрес электронной почты, имя пользователя базы данных и т. Д.

Марсель Стимберг
источник
Спасибо за ответ. Так что хранить пароли там может быть рискованно :)
umpirsky
3
Нет, любой, кто восстанавливает пароль, должен знать (или предоставить) пароль для входа в систему. Попробуйте включить автологин, а затем запустите ваше приложение. Вы не сможете получить доступ к сохраненным паролям без указания пароля для входа.
Хавьер Ривера
@umpirsky: это не более рискованно, чем хранить в файле. И независимо от того, как вы это прописываете, ключ (ы) для расшифровки должен где-то храниться или каким-либо образом предоставляться. Поэтому независимо от того, что вы делаете, любые приложения в вашем сеансе будут иметь к нему доступ.
МестреЛион,
Важно отметить, что этот код, работающий на Ubuntu Server, где нет Gnome Keyring, будет возвращаться к файлам со значениями в кодировке Base64, которые легко доступны.
Cat Man Do
Эта ссылка кажется мертвой.
AdamC