web-dev-qa-db-ja.com

pythonキーリングを使用したパスワードの保存

私は keyring library を使用してpythonアプリにパスワードを保存しています。

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

そして、これは非常にうまく機能します。

パスワードはキーリングで安全であり、暗号化されていると思います。しかし、ユーザー名で取得できるので、他のアプリが同じことをできないのはなぜですか?

それはセキュリティ上のリスクではありませんか、何か不足していますか?

16
umpirsky

キーリングライブラリは、デスクトップ環境の標準のキーリングを使用します。 GNOMEキーリング 。このキーリングは、ログインするとすぐにロックが解除されます。つまり、はい、あなたが実行する他のすべてのアプリケーションは、アプリケーションとともに保存したパスワードにアクセスできますが、これがキーリングのアイデアです。してない。

gnome-keyring Security Philosophy 」を引用:

セキュリティシアターの例は、セキュリティコンテキスト(ユーザーセッションなど)で実行されている1つのアプリケーションが、同じセキュリティコンテキストで実行されている別のアプリケーションからの情報を何らかの形で保持できるという幻想を与えます。

set_password/get_password関数のusernameは、アプリケーションを実行しているユーザー(つまり、キーリングが使用されているユーザー)の名前とは関係ありませんが、たとえば電子メールアドレス、データベースのユーザー名など。

14
Marcel Stimberg