Proton Authenticator adalah aplikasi autentikator autentikasi dua faktor (2FA) open-source yang menghasilkan kode kata sandi sekali pakai berbasis waktu (TOTP) di perangkat, memungkinkan akses ke layanan daring dengan lapisan keamanan ekstra. Aplikasi ini menggunakan enkripsi teruji yang sama yang mengamankan seluruh ekosistem Proton. Proton Authenticator unik karena dirancang dari awal untuk tersedia di hampir setiap platform dengan tetap menjaga privasi dan memberikan kepemilikan penuh atas data.

Berbeda dengan aplikasi autentikator lainnya, Proton Authenticator mengamankan data dengan enkripsi end-to-end, bahkan saat mengaktifkan sinkronisasi perangkat.

Artinya, Proton Authenticator mencegah siapa pun, termasuk Proton sendiri, mengetahui akun layanan daring yang dimiliki. Informasi ini, mirip seperti email atau riwayat penjelajahan, dapat mengungkapkan banyak hal, dan melindunginya sangat penting untuk menjaga privasi.

Enkripsi end-to-end Proton Authenticator menjamin bahwa semua operasi kriptografi, termasuk pembuatan kunci dan enkripsi data, dilakukan secara lokal di perangkat. Ini berarti data yang tidak terenkripsi tidak dapat diakses oleh Proton atau dibagikan dengan pihak ketiga mana pun. Server Proton tidak pernah memiliki akses ke data yang tidak terenkripsi, termasuk kata sandi Akun Proton.

Model enkripsi

Proton Authenticator menggunakan pendekatan komprehensif untuk memastikan keamanan dan privasi maksimum untuk semua data pengguna. Semua operasi kriptografi terjadi secara lokal di perangkat, dan data apa pun yang dikirimkan ke server selalu terenkripsi. Proton tidak pernah memiliki akses ke kunci teks biasa yang diperlukan untuk mendekripsi data pengguna, sehingga mustahil bagi kami untuk mendekripsi data yang disimpan, bahkan jika diminta oleh pihak ketiga.

Proton Authenticator menggunakan enkripsi tingkat lanjut yang sama yang digunakan untuk autentikasi di Proton Mail. Ini termasuk menggunakan versi protokol Secure Remote Password (SRP) yang diperkuat yang menawarkan jaminan keamanan yang lebih kuat terhadap serangan man-in-the-middle (MITM). Implementasi kami memastikan bahwa peretas yang dapat membaca, mengubah, menunda, menghancurkan, mengulang, atau memalsukan pesan antara Proton dan pengguna secara sepihak dan tidak terdeteksi sekalipun, hanya dibatasi untuk memeriksa satu tebakan kata sandi per upaya masuk, yang setara dengan mencoba masuk secara langsung. Dengan cara ini, meskipun Proton dikompromikan dan bertindak jahat, informasi yang setara dengan kata sandi tidak akan pernah terungkap.

Pelajari selengkapnya tentang enkripsi autentikasi Proton

Enkripsi data

Proton Authenticator memungkinkan penyimpanan kode 2FA dengan aman, bahkan tanpa Akun Proton. Artinya, proses enkripsi awal harus dilakukan sepenuhnya di perangkat lokal. Kemudian, jika memutuskan untuk menggunakan Akun Proton untuk menyinkronkan kode di berbagai perangkat, kami dapat menggunakan kunci kriptografi yang disimpan di server Proton untuk melakukan sinkronisasi.

Enkripsi Proton dimulai dengan server Proton yang menyediakan versi terenkripsi dari kunci root yang digunakan oleh aplikasi Authenticator untuk mengenkripsi data pengguna. Setiap pengguna Proton memiliki Kunci Pengguna asimetris, dan Proton mengenkripsi Kunci Pengguna ini di perangkat sebagai berikut:

  • Akun yang menggunakan kata sandi akun tunggal: Proton mengenkripsi Kunci Pengguna dengan hash bcrypt dari kata sandi akun dan salt akun.
  • Akun yang menggunakan fitur beberapa kata sandi akun: Proton mengenkripsi Kunci Pengguna dengan hash bcrypt dari kata sandi kunci dan salt akun.

Proton Authenticator menggunakan bcrypt dan salt akun untuk melakukan hash pada kata sandi sebagai lapisan perlindungan ekstra terhadap serangan brute-force. Meskipun pelaku kejahatan mendapatkan akses ke basis data Proton, kunci akun akan tetap aman dari serangan brute-force.

Setelah sinkronisasi diaktifkan, Proton Authenticator menghasilkan Kunci Autentikator acak 32-byte. Kunci ini dienkripsi dan ditandatangani dengan Kunci Pengguna, memastikan hanya Anda yang dapat mendekripsinya — tidak ada siapa pun (bahkan Proton sekalipun) yang dapat membaca atau membuat Kunci Autentikator baru. Setelah akses ke Kunci Autentikator diperoleh, semua entri di Proton Authenticator dienkripsi menggunakan 256-bit AES-GCM.

Karena Proton Authenticator tidak memerlukan Akun Proton, skema enkripsi terpisah juga diperlukan untuk menyimpan data dengan aman saat data tersebut hanya ada di perangkat. Pada akhirnya, cara termudah untuk menerapkan ini adalah dengan memperlakukan Akun Proton sebagai penyedia kunci terpisah. Pada akhirnya, tampilannya adalah seperti berikut:

Diagram enkripsi Proton Authenticator tanpa Akun Proton

Untuk penyimpanan kunci lokal di perangkat, kami mengandalkan penyedia penyimpanan kunci aman dari masing-masing sistem:

  • Android: Kunci disimpan dengan aman di Android Keystore(jendela baru), yang kemudian digunakan untuk mengenkripsi Kunci Acak Lokal yang disimpan di sistem file aplikasi yang dilindungi. Kunci tersebut digunakan untuk mengenkripsi secara simetris semua entri Proton Authenticator di perangkat.
  • iOS/iPadOS/macOS: Kunci Acak Lokal dibuat dan disimpan di layanan Keychain(jendela baru). Kunci tersebut digunakan untuk mengenkripsi secara simetris semua entri Proton Authenticator di perangkat.
  • Windows: Kunci Acak Lokal dibuat dan disimpan di Windows Credential Manager(jendela baru). Kunci tersebut digunakan untuk mengenkripsi secara simetris semua entri Proton Authenticator di perangkat. Jika koneksi ke WCM tidak tersedia, pengguna diizinkan untuk mengenkripsi Kunci Acak Lokal mereka dengan kata sandi.
  • Linux: Kunci Acak Lokal dibuat dan disimpan di DBUS Secret Service yang tersedia. Kunci tersebut digunakan untuk mengenkripsi secara simetris semua entri Proton Authenticator di perangkat. Jika tidak ada DBUS secret service yang dikonfigurasi, pengguna diizinkan untuk mengenkripsi Kunci Acak Lokal mereka dengan kata sandi.

Enkripsi cadangan

Salah satu kekuatan utama Proton Authenticator adalah kendali penuh atas data yang selalu berada di tangan pengguna. Ini termasuk kemampuan untuk mencadangkan kode secara berkala ke perangkat lokal dan menetapkan kata sandi yang mengenkripsi data sensitif ini.

Untuk menerapkan cadangan lokal yang aman ini, kata sandi yang diberikan digunakan untuk menghasilkan kunci enkripsi yang aman menggunakan Argon2 sebagai KDF (Key-Derivation Function). KDF digunakan untuk menghasilkan kunci kriptografis dari input rahasia, seperti kata sandi yang dimasukkan pengguna, dan tujuan utamanya adalah meningkatkan keamanan dengan mempersulit dan memperlambat peretas dalam memecahkan kata sandi. Menggunakan kunci enkripsi yang dihasilkan dari kata sandi ini, kami menyerialisasikan semua entri dan mengenkripsinya untuk memastikan data tetap terenkripsi dengan aman, bahkan jika cadangan tersebut bocor. Dan dengan menggunakan teknologi yang dikenal luas dan terbuka, data dapat didekripsi tanpa menggunakan Proton Authenticator, memungkinkan pengguna untuk tetap memegang kendali bahkan jika memutuskan untuk beralih ke aplikasi autentikator lain.

Keamanan melalui transparansi

Seperti semua layanan Proton, Proton Authenticator bersifat open source. Siapa pun dapat berkonsultasi dengan kode sumber kami untuk memverifikasi model keamanan kami. Sama seperti layanan kami lainnya, Proton Authenticator juga akan menjalani audit keamanan independen secara berkala, dan kami akan membagikan laporan audit ini secara publik segera setelah tersedia.

Terakhir, bagi peneliti keamanan yang tertarik, Proton Authenticator memenuhi syarat untuk program Bug Bounty Proton yang menawarkan hadiah hingga $100.000 untuk penemuan bug di perangkat lunak Proton.