Pass - Pengelola Kata Sandi Unix
(passwordstore.org)- Pass adalah alat pengelola kata sandi sederhana yang mengikuti filosofi Unix, menyimpan setiap kata sandi ke dalam file yang dienkripsi dengan GPG
- Kata sandi dapat dikelola secara sistematis dengan struktur folder, dan alat baris perintah memudahkan penambahan, pengeditan, pembuatan, penayangan, dan penghapusan
- Melalui integrasi Git, riwayat perubahan kata sandi dapat dilacak dan disinkronkan, sehingga berguna juga di beberapa komputer dan lingkungan tim
- Memiliki kebebasan pengguna yang tinggi, sehingga struktur file maupun format data penyimpanan dapat disusun bebas sesuai kebutuhan pengguna
- Dengan ekstensibilitas dan kompatibilitas tinggi, berbagai fitur ekstensi serta klien/GUI lintas platform dikembangkan dan didistribusikan secara aktif
Pengenalan Pass
- Pengelolaan kata sandi harus sederhana dan mengikuti filosofi Unix
- Pass menyimpan setiap kata sandi dalam bentuk file yang dienkripsi dengan GPG, dan nama file menggunakan nama situs web atau resource yang membutuhkan kata sandi tersebut
- File terenkripsi ini dapat ditata dalam struktur folder sesuai keinginan. Dengan perintah manajemen file biasa, proses salin, pindah, dan hapus antar komputer juga dapat dilakukan dengan mudah
- Pass menyediakan perintah yang dikhususkan untuk menambah, mengedit, membuat, dan melihat tiap file kata sandi, dan secara default kata sandi disimpan di bawah
~/.password-store - Diimplementasikan hanya dengan skrip shell sederhana
- Untuk menyalin kata sandi (salin ke clipboard) dan mencatat riwayat perubahan kata sandi, Pass memanfaatkan Git
- Dapat diedit juga dengan perintah shell dasar, serta mendukung autocompletion di berbagai shell seperti Zsh, Fish, dan Bash
- Berbagai fitur ekstensi dan klien/GUI untuk platform lain dikembangkan secara aktif oleh komunitas
Cara menggunakan password store
- Dapat melihat seluruh daftar kata sandi yang tersimpan
- Mendukung penayangan kata sandi tertentu dan penyalinan ke clipboard (dengan pembersihan otomatis)
- Memungkinkan input kata sandi dan autentikasi yang nyaman melalui
gpg-agent - Dapat menambahkan kata sandi baru, menyimpan file multiline yang sudah ada (-m option), dan mengedit file secara langsung melalui editor teks default
- Menyediakan fitur pembuatan kata sandi acak menggunakan
/dev/urandom(dapat menyertakan/mengecualikan simbol sesuai opsi, serta mendukung salin langsung ke clipboard) - Saat kata sandi dihapus, file terenkripsi juga dihapus dari sistem file
- Setelah diinisialisasi sebagai repositori Git, setiap perubahan kata sandi akan menghasilkan commit dan dapat disinkronkan dengan
pass git push/pull - Fitur tambahan dan cara penggunaan rinci dapat dilihat di man page
Cara konfigurasi dasar
- Saat menginisialisasi password store, cukup masukkan kunci GPG untuk mulai dengan mudah (jika beberapa kunci GPG ditentukan, cocok untuk lingkungan tim)
- Kunci GPG terpisah dapat ditetapkan untuk folder tertentu (-p option)
- Dapat juga diinisialisasi sebagai repositori Git (remote dapat ditentukan secara terpisah)
- Semua operasi penambahan, penghapusan, dan pengeditan kata sandi dikelola sebagai commit Git
- Contoh inisialisasi yang lebih luas dapat dilihat di man page
Cara instalasi
- Debian/Ubuntu: apt-get install pass
- Fedora/RHEL: yum install pass
- Mendukung berbagai platform seperti openSUSE/Gentoo/Arch/Macintosh/FreeBSD
- Tersedia melalui tarball dan clone langsung dari repositori Git (semua rilis menyediakan signed tag)
Organisasi data dan fleksibilitas
- Pass memungkinkan pengguna mengatur data secara bebas sesuai kebutuhan (tanpa memaksakan skema maupun format)
- Dapat memilih berbagai pendekatan seperti penyimpanan multiline, pemisahan data berdasarkan nama file, atau struktur folder
- Contoh: untuk Amazon/bookreader, baris pertama dapat berisi kata sandi, lalu informasi tambahan seperti URL, nama pengguna, dan pertanyaan rahasia dapat disimpan setelahnya
- Jika perlu, tiap informasi juga bisa dikelola sebagai file terpisah (misalnya: password, secretquestion1, dan seterusnya)
- Karena opsi salin ke clipboard hanya menyalin baris pertama, penggunaan nyata dan penyimpanan informasi tambahan dapat dijalankan secara efisien bersamaan
Fitur ekstensi
- Fitur ekstensi (extensions) didukung untuk memenuhi beragam kebutuhan pengguna
- Dipasang di folder sistem atau folder pengguna, dan status aktivasi ditentukan melalui variabel lingkungan
- Komunitas secara aktif mengembangkan dan menyediakan beragam fitur ekstensi
Klien kompatibel
- Klien/GUI untuk berbagai platform dikembangkan dan didistribusikan oleh komunitas
- Pengguna dapat memilih klien yang sesuai dengan sistem operasi atau lingkungan penggunaan mereka
Migrasi dari pengelola kata sandi lain
- Saat memindahkan data dari pengelola kata sandi lain, tersedia berbagai skrip konversi dan metode
- Pengguna dapat memilih organisasi data yang paling optimal dengan cara yang paling sesuai bagi mereka
Pembuat dan lisensi
- Dikembangkan oleh Jason A. Donenfeld (zx2c4.com)
- Dapat digunakan dan dimodifikasi secara bebas di bawah lisensi GPLv2+
2 komentar
Sebenarnya ada banyak alat yang hanya sekadar menyimpan, tetapi yang penting adalah integrasi seperti pengisian otomatis.
Komentar Hacker News
Ada banyak pendapat positif tentang pass di sini, tetapi juga ada beberapa kekurangan utama yang jelas
Karena datanya tidak terstruktur, secara umum cukup merepotkan untuk ditangani
Misalnya, saat ingin memakai username dan password di dalam skrip, setiap kali harus menulis kode parsing sendiri, jadi tidak praktis
Jika membuat password baru dengan
pass generate, semua nilai yang ada akan tertimpaArtinya, jika password dan jawaban secret question ada bersama, lalu hanya password yang dibuat ulang, jawabannya akan hilang
Sangat sulit memeriksa riwayat
Karena semua isi terenkripsi, bahkan
git difftidak memberi informasi yang berguna, dan memulihkan riwayat atau kesalahan lewat alat command line juga tidak nyamanNamanya terlalu umum sehingga sulit dicari
Belakangan ini sedang mengembangkan alat serupa bernama passworth (juga mempertimbangkan penggunaan container/sandbox) https://github.com/andrewbaxter/passworth
Soal sulitnya memeriksa riwayat, sebenarnya pass mendukung pengaturan file
.gitattributesagar git bisa mengonversi file gpg menjadi teks untuk melihat diff*.gpg diff=gpgke~/.password-store/.gitattributes.git/config, atur[diff "gpg"]dengantextconv = gpg2 -d ...Membagikan masalah tambahan yang dialami saat memakai pass
Masalah struktur data diatasi dengan struktur folder
Saya justru merasa sifat data yang tidak terstruktur adalah keunggulan besar
Membagikan pendapat soal isu struktur data dan riwayat per fitur
pass generatemenimpa semua nilai, tetap bisa dikelola sebagai file terpisah sepertisite/pass,site/secret-question$ passdi terminal, paket terkait akan muncul, jadi masalah pencarian juga tidak terlalu seriusPassword manager browser + passkey jauh lebih praktis, tetapi vault pass juga masih layak dipakai untuk menyimpan recovery code dan API key
Hal yang paling terasa abu-abu saat memakai pass adalah threat model-nya tidak jelas
Jika GPG agent di-cache, skrip apa pun (
npm postinstalldan sejenisnya) bisa menelusuri semua kredensial denganpass lsKalau begitu, rasanya tidak jauh beda dengan menyimpan semuanya dalam satu file
~/passwords.txtTetapi kalau cache tidak dipakai, harus menderita memasukkan passphrase GPG yang panjang setiap saat
Pernah juga mencoba memakai YubiKey untuk unlock on-demand, tetapi integrasinya buruk dan cukup merepotkan saat harus sering memasukkan password
Karena itu pindah ke Bitwarden
Dalam kasus saya, yubi dibiarkan tetap terpasang
Semua password manager pada dasarnya berisiko mengekspos seluruh password jika penyimpanan sedang tidak terkunci, karena master password bisa tertinggal di RAM atau cache
Jika ada port USB kosong, Nano key juga bisa dibiarkan terpasang
Saya menyimpan password di sqlite DB dalam partisi file terenkripsi
YubiKey bisa diatur agar penggunaan kunci GPG memerlukan persetujuan lewat PIN atau sentuhan
Saya sangat menyukainya dan memakainya setiap hari
Bagi orang yang suka CLI, pass memang menarik, tetapi untuk pengguna biasa, pendekatan Desktop dengan KeepassXC, Android dengan KeepassDX, dan akses jarak jauh lewat Wireguard tampaknya lebih cocok
Salah satu fitur berguna di keepass yang jarang dibicarakan adalah bisa membuka dan mencari di beberapa vault sekaligus
Saya rasa standar soal siapa yang disebut “normie” itu relatif
Jangan lupakan keepassxc.cli
Salah satu contoh penggunaan saya yang tidak bisa diselesaikan dengan keepass adalah membuat password di dua komputer yang terpisah lalu menggabungkannya nanti
Saya juga ingin mencoba KeepassXC, tetapi berbagi kredensial dengan pasangan tidak mudah
pass adalah solusi yang menyenangkan saat dipakai sendiri, tetapi perlu hati-hati jika dibagikan ke banyak orang
Jika dipakai sebagai password manager perusahaan, tidak ada cara untuk mengetahui siapa melihat secret apa dan kapan, sehingga setiap ada perubahan personel semua password harus diganti
Jika seseorang baru memerlukan akses, tidak ada cara standar untuk mengenkripsi ulang file secara selektif, jadi harus membuatnya sendiri
Memang disimpan dengan git, tetapi pesan commit dibuat otomatis sehingga manfaat nyatanya tak jauh beda dari dropbox
Kalau tak sengaja push isi yang salah lalu ingin membatalkannya, harus menulis ulang git history, dan itu bisa merusak perangkat pengguna lain
Kesederhanaan dan sifat yang bisa diutak-atik langsung memang kelebihan, tetapi justru kesederhanaan itu juga jebakannya
Seperti pendekatan hash(site_name+main_password), kelihatannya indah tetapi dalam praktik muncul banyak masalah
Bahkan di lingkungan bisnis pun tetap dibutuhkan fitur seperti enkripsi end-to-end dan verifikasi fingerprint antar pengguna; Bitwarden tampaknya paling mendekati, tetapi kalau ada contoh yang lebih baik saya ingin rekomendasi
Di pass juga bisa menerapkan kunci berbeda (atau beberapa kunci) per direktori, sehingga akses bisa dirinci per grup atau per orang
Di perusahaan saya, kami memakai 1Password
Saya hanya pernah mengevaluasinya, belum punya pengalaman nyata, tetapi passbolt tampak sebagai opsi yang bagus untuk alat berbagi password tim https://www.passbolt.com
Di perusahaan kami, alat yang kurang dikenal bernama "pa" dipakai dengan baik https://git.j3s.sh/pa
Sepertinya juga memungkinkan membuat solusi yang bagus berbasis FOKS https://foks.pub
Baru-baru ini pindah dari pass ke Bitwarden dan Vaultwarden
Di lingkungan yang memasang aplikasi GUI berbasis flatpak, integrasi antara ekstensi Firefox dan pass tidak berjalan, jadi terasa tidak nyaman
Sebagai workaround, saya memakai
pass -c <path>di jendela run untuk menyalin password lalu menempelkannya ke browser, tetapi itu bukan pengalaman yang idealFakta bahwa aplikasi Android resminya sudah diarsipkan juga jadi salah satu alasan, dan meski ada fork, belum jelas seberapa lama akan dipelihara https://github.com/android-password-store/Android-Password-Store/discussions/3260
Sekarang saya self-host vaultwarden dan memakainya lewat beberapa klien bitwarden
Berbagi pengalaman pindah dari pass ke KeePassXC
Ada juga alat bernama passmenu
Saya tidak tahu aplikasi Android untuk pass sudah dihentikan
pass -cdari prompt daripada memakai pluginSaya penasaran dengan pengalaman penggunaan offline di vaultwarden
Ada juga ekstensi pass-otp https://github.com/tadfisher/pass-otp
Aplikasi Android untuk pass juga cukup bagus https://play.google.com/store/apps/details?id=dev.msfjarvis.aps
Berjalan juga di termux
Aplikasi Android Password Store diarsipkan tahun lalu, lalu di-fork oleh agrahn dan banyak ditingkatkan
Alternatif pribadi saya adalah menaruh skrip kecil di
~/bindan memakai pass bersama oathtool untuk membuat OTPBeberapa aplikasi Android lama untuk pass sekarang sudah tidak bisa dipasang lagi di perangkat saya
Jika memakai age alih-alih GPG, ada alat passage yang membantu https://github.com/FiloSottile/passage
Akhir-akhir ini saya sudah hampir 10 tahun memakai pendekatan lain
Semua metadata password disimpan dalam JSON plaintext; tiap entri mencatat user, versi, dan aturan password (panjang, jenis karakter, dll.)
Password aslinya tidak disimpan, melainkan "dihasilkan secara deterministik" dari passphrase + hash metadata
Bahkan hanya dengan mengubah nomor versi, password yang benar-benar baru akan dibuat, dan riwayat pun mudah dicek cukup lewat perubahan "versi"
Kekurangannya, cara ini hampir tidak bisa dibagikan (orang lain harus tahu passphrase yang saya pakai)
Saat perlu berbagi, saya sempat mempertimbangkan mode yang membuat ciphertext lewat generator password lalu menyimpannya terpisah sebagai metadata, tetapi ternyata hampir tidak pernah dibutuhkan
Alasan pendekatan generator password cukup baik adalah karena kekhawatiran kehilangan vault jadi berkurang
Belakangan saya mengetahui pendekatan ini lewat SECUSO password generator https://secuso.aifb.kit.edu/english/105.php
Jika passphrase dibagikan, permukaan eksposurnya membesar, jadi sekali bocor banyak kredensial bisa langsung ikut berisiko
Saya pengguna pass selama lebih dari 8 tahun, menyimpan 1300 password
Saya sangat puas karena sinkronisasi antarperangkat dengan git berjalan sangat baik
"Bagaimana bisa sampai 1300 password sebanyak itu?"