ahmaruff

Eksperimen Membangun Aplikasi Catatan Terenkripsi Memanfaatkan Web Crypto API

javascript security

SikritPad adalah proyek eksperimen web app untuk membuat catatan terenkripsi hanya dengan satu password, di mana password berfungsi sebagai identifier sekaligus kunci enkripsi. Semua proses enkripsi dan dekripsi dilakukan di sisi klien menggunakan Web Crypto API, tanpa server, dan data disimpan di LocalStorage browser. Proyek ini menekankan UX sederhana dan modular architecture, dengan konsep unik password-addressed storage, sekaligus mengeksplorasi trade-off antara deterministik lookup, keamanan kriptografi, dan pengalaman pengguna.

Belakangan ini saya cukup sering menggunakan website catatan online untuk kebutuhan personal, salah satunya adalah ProtectedText.com dan CodedPad.com.

Kedua website tersebut mengklaim data catatan disimpan secara anonim, terenkripsi, dan hanya bisa dibuka oleh pemilik password.

Sebagai software engineer, saya penasaran bagaimana implementasinya. Menurut saya, implementasi ProtectedText cukup straight-forward: path URL sebagai identifier, kemudian password untuk enkripsi data.

Sementara itu, CodedPad menggunakan pendekatan yang menarik: hanya satu input password saja, password ini berfungsi sebagai identifier sekaligus kunci akses

Bagaimana sebuah sistem bisa mencari catatan hanya berdasarkan password tanpa menyimpan password plaintext? Pertanyaan ini mendorong saya membuat proyek serupa, yang saya sebut SikritPad.


Tujuan Proyek

SikritPad adalah web app untuk membuat catatan rahasia hanya dengan password. Password berfungsi sebagai identifier sekaligus kunci enkripsi.

Selain itu, saya menetapkan beberapa constraint:

⚠️ Catatan: SikritPad adalah proyek eksperimen. Semua proses enkripsi dilakukan di sisi klien dan memiliki potensi risiko keamanan jika digunakan untuk data sensitif.

Requirements

Arsitektur Aplikasi

User Password
β”‚
β”œβ”€β”€ Key Derivation (PBKDF2) ──► noteId β†’ lookup LocalStorage
β”‚
└── Key Derivation (AES) ─────► AES key β†’ decrypt/encrypt

Modul utama:

Desain Kriptografi

Trade-offs & Pertimbangan

Pelajaran yang Didapat


Penutup

SikritPad adalah eksperimen dalam membangun password-only encrypted notes sepenuhnya di browser.

Proyek ini bukan untuk digunakan di production, namun memberikan insight praktis tentang client-side cryptography, deterministic key derivation, dan arsitektur modular untuk aplikasi web modern.

Source code: SikritPad GitHub

#portfolio #javascript #security

← Kembali ke Portofolio