Herkos

Kebijakan Keamanan

Herkos menangani kunci privat dan pesan terenkripsi, jadi kami menanggapi laporan keamanan dengan serius dan lebih suka mengetahui masalah sejak dini daripada terlambat.

Melaporkan kerentanan

Mohon jangan membuka issue publik untuk masalah keamanan.

Laporkan secara pribadi melalui email ke security@herkos.email.

Hal-hal yang berguna untuk disertakan: apa masalahnya, cara mereproduksinya, platform dan versi yang Anda uji, serta apa yang dapat dicapai penyerang. Bukti konsep (proof of concept) sangat membantu.

Jangan pernah menyertakan nsec, kunci rahasia, atau rahasia bunker Anda sendiri dalam laporan.

Kami berupaya mengonfirmasi penerimaan laporan dalam beberapa hari. Karena Herkos adalah proyek kecil, mohon beri waktu yang wajar untuk perbaikan sebelum mengungkapkannya secara publik. Kami dengan senang hati mencantumkan nama Anda dalam advisori, kecuali Anda tidak menginginkannya.

Yang termasuk cakupan

Aplikasi Herkos itu sendiri: penanganan dan penyimpanan kunci, enkripsi dan dekripsi pesan (termasuk pemeriksaan pengirim NIP-59 dan isolasi Bcc di local_packages/nostr_mail), kunci aplikasi, komunikasi dengan relay dan jembatan, penanganan lampiran, serta pipeline build dan rilis. Untuk Herkos Drive, juga paket protokolnya (packages/herkos_drive_protocol) dan halaman yang membuka link-nya (herkos.app/f/); lihat bagiannya sendiri di bawah.

Yang tidak termasuk cakupan

Batasan yang diketahui, dinyatakan apa adanya

Ini adalah kompromi desain, bukan kerentanan. Kami lebih suka menuliskannya daripada membiarkan seseorang mengetahuinya dengan cara yang menyakitkan:

Herkos Local Relay: apa yang dilindunginya dan apa yang tidak

Herkos Local Relay menyimpan event aplikasi Anda di perangkat Anda, termasuk event pribadi (draf, daftar pribadi, amplop yang Anda terima). Berikut hal yang melindunginya dan di mana batasnya, per platform. Laporkan masalah keamanan relay dengan cara yang sama seperti masalah lainnya (di atas).

Seluruh basis data dienkripsi, termasuk jurnalnya (SQLite3 Multiple Ciphers, AEGIS-256). Kuncinya adalah 32 byte acak yang dibuat di perangkat dan disimpan di penyimpanan aman sistem: Keystore di Android, DPAPI di Windows, keyring (libsecret) di Linux. Kunci ini tidak memakai kata sandi Anda, karena relay harus dapat berjalan sendiri. Tanpa kunci, relay tidak berjalan dan memberitahukannya: relay tidak pernah membuka atau membuat basis data yang tidak terenkripsi, dan tidak pernah menghapus basis data yang tidak dapat dibukanya.

Jika… Android Windows Linux
seseorang menyalin file basis data (salinan cadangan, folder yang disinkronkan, citra disk) Terlindungi Terlindungi Terlindungi
perangkat atau disk dicuri dalam keadaan mati Terlindungi: kuncinya ada di Keystore Terlindungi, kecuali pencuri mengetahui kata sandi masuk Windows Anda: DPAPI melindungi kunci dengan kata sandi itu Terlindungi, kecuali pencuri mengetahui kata sandi keyring Anda (hampir selalu kata sandi sesi Anda)
akun pengguna lain di perangkat yang sama Terlindungi Terlindungi: DPAPI berlaku per pengguna Terlindungi: keyring berlaku per pengguna
aplikasi atau program lain yang berjalan sebagai pengguna Anda Terlindungi: Android memisahkan setiap aplikasi dan Keystore hanya memberikan kunci kepada relay Tidak: DPAPI mengenkripsi per pengguna, bukan per aplikasi; program yang berjalan sebagai Anda dapat meminta kunci seperti halnya relay Tidak: keyring sesi Anda tidak memisahkan aplikasi satu sama lain
ponsel yang di-root, atau alat yang menjalankan kode sebagai aplikasi Tidak — —
seseorang memegang perangkat dalam keadaan tidak terkunci Hanya PIN atau sidik jari relay, jika Anda memasangnya Sama Sama
seseorang membaca memori relay saat berjalan Tidak Tidak Tidak

Di desktop, batas DPAPI dan keyring sama dengan batas program mana pun: keduanya melindungi dari pengguna lain dan dari orang yang membawa pergi disk, bukan dari program berbahaya yang sudah berjalan sebagai Anda. Jika kasus itu mengkhawatirkan Anda, yang melindungi Anda adalah enkripsi disk sistem (BitLocker, LUKS) dan tidak menjalankan program yang tidak Anda percayai. Di Linux tanpa keyring (tanpa Secret Service), relay tidak berjalan dan menjelaskan alasannya: relay tidak pernah menyimpan kunci dalam bentuk teks biasa.

Siapa yang dapat masuk, di perangkat itu sendiri. Relay hanya mendengarkan di 127.0.0.1, dan aplikasi mana pun di perangkat, atau halaman web di browser, dapat menjangkau alamat itu. Karena itu:

Yang tidak dilindunginya, di sini:

Jaringan lokal, jika Anda mengaktifkannya (nonaktif secara default):

Yang tidak dilindunginya, di sini: siapa pun di jaringan yang sama dapat melihat bahwa perangkat memiliki port terbuka dan berapa banyak lalu lintas yang melewatinya, meskipun tidak isinya; dan jika perangkat memiliki alamat publik (tanpa router di antaranya), port itu dapat terlihat dari Internet, meskipun tetap meminta kunci yang ada di daftar Anda.

Salinan. Salinan terenkripsi memiliki kata sandi (scrypt dan XChaCha20-Poly1305): tanpa kata sandi itu tidak ada yang dapat membukanya, termasuk kami. Ekspor JSONL tidak dienkripsi dan memuat event pribadi Anda dalam bentuk teks biasa; aplikasi memperingatkan Anda tentang hal itu.

Kunci aplikasi (PIN, ditambah sidik jari atau Windows Hello) diminta saat aplikasi dibuka, setelah 30 detik ditinggalkan, dan untuk menyetujui pemasangan. Ini adalah penghalang praktis, seperti di Mail: tidak mengenkripsi apa pun. Di Android, jika PIN dipasang, tidak ada tangkapan layar dan tidak ada gambar mini di daftar aplikasi terbaru, dan sejak Android 12 tidak ada jendela aplikasi lain yang dapat berada di atas jendela relay saat Anda menggunakannya.

Herkos Drive: apa yang dilindunginya dan apa yang tidak

Herkos Drive menyimpan file Anda di server Blossom dan daftar file serta folder Anda di relay Nostr, keduanya dienkripsi di perangkat Anda. Berikut hal yang melindunginya dan di mana batasnya. Detail lengkapnya ada di spec-drive.md dan model ancaman amenazas-drive.md, di packages/herkos_drive_protocol/; apa yang dilihat setiap relay dan server ada di kebijakan privasi. Laporkan masalah keamanan Drive dengan cara yang sama seperti masalah lainnya (di atas).

Apa yang tidak dapat dilakukan relay dan server:

Apa yang tidak dilindunginya:

Cara pemeriksaannya. Dua tinjauan internal terhadap model ancaman (2 November 2026) beserta perbaikannya; pengujian atas apa yang ditampilkan setiap event dan blok; fuzzing pada setiap pembaca data yang datang dari luar (event, segel, manifes, link, cadangan). Belum ada audit eksternal: satu audit direncanakan sebelum beta publik, dan laporannya akan diterbitkan secara lengkap. Drive masih dalam pengembangan.

Versi yang didukung

Perbaikan keamanan diterapkan pada versi rilis terbaru. Mengingat ukuran proyek ini, versi lama tidak dipelihara — mohon perbarui sebelum melapor.