Pythonキーリングを使用してパスワードを保存する


16

私が使用していキーリングライブラリを私のpythonアプリでパスワードを保存します。

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

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

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

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

回答:


14

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

gnome-keyringセキュリティ哲学」を引用:

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

そのノートusernameset_password/ get_password機能は、アプリケーションを実行しているユーザーの名前に関連していない(すなわち、その鍵リングに使用されているユーザ)が、例えば等メールアドレス、データベース名、であってもよいが


答えてくれてありがとう。そのため、そこにパスワードを保存するのは危険です:)
umpirsky

3
いいえ、パスワードを取得するユーザーは、ユーザーのログインパスワードを知っている(または提供している)必要があります。自動ログインをオンにしてから、アプリを実行してみてください。ログインパスワードを入力しないと、保存されたパスワードにアクセスできないはずです。
ハビエルリベラ

@umpirsky:ファイルに保存するよりも危険ではありません。また、どのように暗号化するかに関係なく、説明用のキーはどこかに保存するか、何らかの方法で提供する必要があります。そのため、セッション内のどのアプリでも、そのアプリにアクセスできます。
メストレリオン2014年

Gnome KeyringがないUbuntu Serverで実行されているこのコードは、Base64でエンコードされた値に簡単にアクセスできるファイルにフォールバックすることに注意することが重要です。
キャット

そのリンクは死んでいるようです。
AdamC
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.