OiTechno PassManager: Password Manager Portable Berbasis Go

OiTechno PassManager: Password Manager Portable Berbasis Go

Table of Contents

Halo Tech Enthusiasts! πŸ‘‹ Selamat datang kembali di OiTechno.

Kali ini kita akan membahas salah satu project yang dikembangkan dari kebutuhan sederhana: bagaimana menyimpan password dengan lebih aman, tetap portable, dan yang paling penting, tetap berada dalam kendali kita sendiri.

Dari kebutuhan tersebut lahirlah OiTechno PassManager, sebuah password manager berbasis Go yang dirancang untuk menyimpan password di dalam encrypted vault dan dapat dijalankan secara portable melalui USB flash drive.

Project ini juga menjadi salah satu cara untuk mengeksplorasi bagaimana konsep seperti authentication, encryption, key management, dan secure storage dapat diterapkan ke dalam sebuah aplikasi yang benar-benar dapat digunakan.

Alih-alih bergantung sepenuhnya pada layanan password manager pihak ketiga, project ini mencoba mengambil pendekatan yang lebih sederhana: aplikasi dan data berada di tangan pengguna.

Pada artikel ini, kita akan melihat bagaimana OiTechno PassManager dirancang, alasan di balik pembuatannya, teknologi yang digunakan, hingga hasil akhirnya sebagai sebuah aplikasi password manager portable.

Permasalahan

Password sudah menjadi bagian dari hampir semua aktivitas digital. Semakin banyak layanan yang digunakan, semakin banyak pula akun dan password yang harus dikelola.

Menyimpan semuanya di catatan biasa memang praktis, tetapi tentu bukan pilihan yang ideal. Password yang tersimpan sebagai teks biasa dapat langsung terbaca jika file tersebut jatuh ke tangan orang lain.

Menggunakan password manager pihak ketiga memang menjadi salah satu solusi. Namun, ada hal lain yang perlu dipertimbangkan: data yang sangat sensitif tersebut berada di dalam sebuah sistem yang tidak sepenuhnya kita bangun atau kendalikan sendiri.

Bukan berarti semua aplikasi pihak ketiga tidak aman. Justru banyak di antaranya memiliki sistem keamanan yang sangat baik. Tetapi untuk kebutuhan project ini, saya ingin mencoba pendekatan yang berbedaβ€”bagaimana jika password manager tersebut kita bangun sendiri dan seluruh datanya tetap berada di tangan kita?

Dari sinilah beberapa kebutuhan mulai muncul. Password harus disimpan dalam bentuk terenkripsi, aksesnya harus dilindungi oleh Master Password, tersedia mekanisme recovery ketika password utama terlupa, dan aplikasi tetap dapat digunakan tanpa bergantung pada cloud atau proses instalasi yang rumit.

Selain itu, ada satu kebutuhan lain yang menjadi fokus utama: portabilitas.

Bagaimana jika seluruh password manager cukup disimpan di sebuah USB flash drive, kemudian bisa dibawa dan dijalankan ketika dibutuhkan?

Pertanyaan-pertanyaan tersebut akhirnya menjadi dasar dalam pengembangan OiTechno PassManager.

Solusi

Untuk menjawab kebutuhan tersebut, saya membuat OiTechno PassManager sebagai password manager sederhana yang berfokus pada tiga hal utama: keamanan, kontrol data, dan portabilitas.

Password tidak disimpan sebagai teks biasa. Semua password entry disimpan di dalam sebuah encrypted vault, sehingga file penyimpanan tidak dapat langsung dibaca tanpa melalui proses unlock yang benar.

Akses ke vault dilindungi menggunakan Master Password. Jika suatu saat Master Password tidak dapat digunakan, tersedia Recovery Key sebagai jalur pemulihan untuk mendapatkan kembali akses ke vault.

Di sisi lain, aplikasi ini tidak membutuhkan database atau layanan cloud untuk menyimpan data. Aplikasi dan vault dapat berada dalam satu folder, sehingga seluruh sistem bisa dibawa menggunakan USB flash drive dan dijalankan langsung ketika dibutuhkan.

Dengan pendekatan tersebut, OiTechno PassManager bukan hanya mencoba menyelesaikan masalah penyimpanan password, tetapi juga menjadi sebuah project untuk mempraktikkan bagaimana authentication, encryption, key management, dan portable application dapat digabungkan menjadi satu aplikasi yang sederhana dan dapat dikontrol sendiri.

Cara Kerja

Di balik tampilannya yang sederhana, OiTechno PassManager memiliki beberapa lapisan yang bekerja bersama untuk melindungi data password.

Ketika aplikasi pertama kali digunakan, pengguna membuat Master Password. Password tersebut tidak disimpan secara langsung. Sistem menggunakan Argon2id dan random salt untuk menghasilkan hash serta key yang diperlukan oleh proses autentikasi.

Setelah berhasil melakukan unlock, aplikasi mendapatkan Data Encryption Key (DEK) yang digunakan untuk mengenkripsi dan mendekripsi data password.

flowchart TD
    A[Master Password] --> B[Argon2id]
    B --> C[Master Key]
    C --> D[Unlock DEK]
    D --> E[Data Encryption Key]
    E --> F[Encrypt / Decrypt Vault]
    F --> G[vault.enc]

Setiap password entry kemudian disimpan ke dalam vault terenkripsi menggunakan AES-GCM. Dengan begitu, isi vault.enc tidak berupa password yang dapat dibaca secara langsung.

Selain vault, aplikasi juga memiliki config.json yang digunakan untuk menyimpan informasi autentikasi yang diperlukan oleh sistem.

flowchart TD
    A[Password Entries] --> B[Serialization]
    B --> C[Encrypt with DEK]
    C --> D[vault.enc]

Untuk kebutuhan recovery, PassManager juga menyediakan Recovery Key yang dapat digunakan untuk mendapatkan kembali akses ke vault tanpa harus mengetahui Master Password sebelumnya.

Semua file aplikasi menggunakan lokasi executable sebagai acuan penyimpanan. Karena itu, aplikasi dan data dapat ditempatkan dalam satu folder dan dibawa menggunakan USB flash drive.

flowchart TD
    A[USB Flash Drive] --> B[Start PassManager]
    B --> C[Load Application Data]
    C --> D[Authenticate]
    D --> E[Unlock Vault]
    E --> F[Use Password Manager]

Dengan alur tersebut, pengguna cukup membawa satu folder PassManager tanpa perlu memasang database atau layanan tambahan pada komputer yang digunakan.

Technologi yang Digunakan

Untuk membangun OiTechno PassManager, saya menggunakan beberapa teknologi yang dipilih berdasarkan kebutuhan project, terutama keamanan, portabilitas, dan kemudahan penggunaan.

KomponenTeknologi
LanguageGo
Password Hashing / KDFArgon2id
EncryptionAES-GCM
Key ManagementDEK + Key Wrapping
Data FormatJSON
StorageLocal File
ClipboardGo Clipboard Library
PlatformWindows / Linux
DistributionPortable USB

Go menjadi fondasi utama aplikasi karena mampu menghasilkan executable yang dapat dijalankan secara langsung tanpa membutuhkan runtime tambahan. Hal ini sangat cocok dengan konsep PassManager yang ingin dibuat portable.

Untuk bagian keamanan, Argon2id digunakan dalam proses password hashing dan key derivation, sementara AES-GCM digunakan untuk mengenkripsi vault.

Data disimpan secara lokal dalam bentuk file. config.json digunakan untuk kebutuhan autentikasi, sedangkan password entries disimpan dalam bentuk terenkripsi di vault.enc.

Dengan kombinasi tersebut, PassManager dapat tetap sederhana dari sisi arsitektur, tetapi memiliki fondasi yang cukup untuk menangani data yang sensitif.

Pengembangan & Testing

OiTechno PassManager dikembangkan secara bertahap. Dimulai dari fungsi dasar untuk mengelola password, kemudian berkembang menjadi sistem authentication, encrypted vault, key management, recovery, hingga akhirnya dapat dijalankan secara portable melalui USB flash drive.

Setiap tahap diuji untuk memastikan fitur yang sudah dibuat tetap berjalan setelah perubahan pada sistem.

Pengujian dilakukan menggunakan fitur testing bawaan Go:

go test ./...

Pengujian juga dilakukan dengan race detector untuk membantu menemukan kemungkinan masalah pada penggunaan data secara bersamaan:

go test -race ./...

Selain pengujian pada source code, aplikasi juga diuji secara langsung dalam bentuk executable Windows. Aplikasi dijalankan menggunakan launcher dan seluruh file data ditempatkan bersama executable.

flowchart TD
    A[Source Code] --> B[Unit Testing]
    B --> C[Security Testing]
    C --> D[Windows Build]
    D --> E[Portable USB Test]
    E --> F[Final Validation]

Hasil pengujian menunjukkan bahwa package utama seperti auth, crypto, dan storage dapat melewati test yang tersedia.

Setelah itu, aplikasi juga berhasil dijalankan sebagai aplikasi portable di Windows. Dengan demikian, pengembangan tidak hanya berhenti pada source code, tetapi dilanjutkan sampai aplikasi benar-benar dapat digunakan dalam bentuk executable.

Hasil Akhir

Setelah melalui proses pengembangan dan pengujian, OiTechno PassManager akhirnya dapat digunakan sebagai password manager portable.

Aplikasi dapat berjalan di Windows tanpa proses instalasi dan seluruh data dapat ditempatkan dalam satu folder bersama executable.

flowchart TD
    A[USB Flash Drive] --> B[Start-PassManager.bat]
    B --> C[OiTechno-PassManager.exe]
    C --> D[Master Password]
    D --> E[Unlock Encrypted Vault]
    E --> F[Manage Passwords]
    F --> G[Lock Vault]

Struktur portable-nya sederhana:

OiTechno-PassManager/
β”œβ”€β”€ OiTechno-PassManager.exe
β”œβ”€β”€ Start-PassManager.bat
β”œβ”€β”€ config.json
└── vault.enc

Dengan konsep ini, PassManager dapat dibawa sebagai satu paket menggunakan USB flash drive. Pengguna cukup menjalankan launcher untuk membuka aplikasi, melakukan autentikasi, dan mengakses password yang tersimpan di encrypted vault.

Project ini juga menjadi contoh bagaimana sebuah kebutuhan sederhana dapat dikembangkan menjadi aplikasi yang memiliki authentication, encryption, recovery mechanism, dan portable workflow dalam satu project berbasis Go.

Resources

Source code dan file release OiTechno PassManager tersedia di halaman Resources.

Di sana kamu dapat menemukan file yang diperlukan untuk mencoba project ini, termasuk executable Windows dan file project lainnya.

source code

Resource

Oitechno PassManager

.go β€’ 2.6 MB
Share :
comments powered by Disqus