Menyimpan kata sandi dengan keyring python

16

Saya menggunakan pustaka keyring untuk menyimpan kata sandi di aplikasi python saya.

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

Dan ini bekerja dengan sangat baik.

Saya berasumsi bahwa kata sandi aman dalam keyring, mereka dienkripsi. Tapi, karena saya bisa mendapatkannya dengan nama pengguna, apa yang mencegah aplikasi lain melakukan hal yang sama?

Bukankah itu risiko keamanan, atau saya melewatkan sesuatu?

umpirsky
sumber

Jawaban:

14

Perpustakaan keyring menggunakan keyring standar dari lingkungan desktop Anda, mis . Keyring GNOME . Kunci-kunci ini tidak terkunci setelah Anda masuk, artinya: ya, aplikasi lain yang dijalankan oleh Anda memiliki akses ke kata sandi yang Anda simpan dengan aplikasi Anda, tetapi - dan ini adalah ide kunci-kunci - pengguna lain dan aplikasi mereka belum pernah.

Mengutip " Filosofi Keamanan gnome-keyring ":

Contoh teater keamanan memberikan ilusi bahwa entah bagaimana satu aplikasi berjalan dalam konteks keamanan (seperti sesi pengguna Anda) dapat menyimpan informasi dari aplikasi lain yang berjalan dalam konteks keamanan yang sama.

Perhatikan bahwa usernamedi set_password/ get_passwordfungsi tidak terkait dengan nama pengguna yang menjalankan aplikasi (yaitu pengguna yang menggunakan keyring) tetapi mungkin misalnya alamat email, nama pengguna basis data, dll.

Marcel Stimberg
sumber
Terima kasih atas jawabannya. Jadi, menyimpan kata sandi bisa berisiko :)
umpirsky
3
Tidak, siapa pun yang mengambil kata sandi perlu mengetahui (atau telah memberikan) kata sandi masuk pengguna. Coba nyalakan autologin lalu jalankan aplikasi Anda. Anda seharusnya tidak dapat mengakses kata sandi yang disimpan tanpa memberikan kata sandi login Anda.
Javier Rivera
@umpirsky: tidak ada risiko daripada menyimpan dalam file. Dan tidak peduli bagaimana Anda menuliskannya, kunci untuk decription harus disimpan di suatu tempat atau disediakan entah bagaimana. Jadi, apa pun yang Anda lakukan, aplikasi apa pun di sesi Anda akan memiliki akses ke sana.
MestreLion
Sangat penting untuk dicatat bahwa kode ini berjalan pada Server Ubuntu di mana tidak ada Gnome Keyring akan kembali ke file dengan nilai-nilai yang disandikan Base64 yang mudah diakses.
Cat Man Do
Tautan itu tampaknya sudah mati.
AdamC