Horcrux: Membagi file menjadi fragmen terenkripsi
(github.com/jesseduffield)- Horcrux adalah alat CLI yang membagi file menjadi fragmen horcrux terenkripsi dan memungkinkan pemulihan file asli tanpa harus mengingat kata sandi
- Ditujukan untuk pengguna yang perlu mengenkripsi file sensitif berukuran besar tetapi mungkin tidak lagi mengingat kata sandinya beberapa tahun kemudian, atau pengguna yang ingin mengirim file melalui beberapa saluran untuk sangat mengurangi kemungkinan penyadap mencegatnya
splitbekerja dengan menerima jumlah fragmen yang akan dibuat saat membagi file dan jumlah fragmen yang diperlukan untuk memulihkan file asli; contohnya adalah konfigurasi yang dapat dipulihkan dengan 3 fragmen acak dari total 5 fragmenbindadalah perintah untuk menyatukan kembali file asli dari direktori yang berisi fragmen horcrux, dan direktori juga bisa diberikan sebagai argumen- Mekanisme internalnya menggunakan Shamir Secret Sharing Scheme untuk membagi kunci enkripsi menjadi beberapa bagian, lalu merekonstruksi kunci asli ketika tersedia fragmen sebanyak ambang batas (threshold) atau lebih
- Pembuatan kunci menggunakan fungsi
Readdaricrypto/randdi pustaka standar Go, sementara implementasi Shamir merupakan adaptasi dari implementasi di vault repo milik Hashicorp - Instalasi tersedia melalui Homebrew dengan
brew install jesseduffield/horcrux/horcrux, scoop denganscoop bucket add extras; scoop install horcrux, atau melalui binary release - Alternatif yang disebutkan,
ssss, ditulis dapat bekerja untuk kunci tetapi tidak untuk file itu sendiri, sementarahorcruxlain danHaystackberbeda karena tidak mendukung threshold horcrux
1 komentar
Opini Hacker News
Hal yang perlu diperhatikan adalah alat ini memakai mode AES OFB untuk enkripsi/dekripsi file, dan tidak memiliki jaminan integritas ciphertext, yaitu tidak ada MAC
[0]: https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation...
Di antara alat backup berbasis kertas, ada proyek keren yang memakai Shamir Secret Sharing untuk membagikan beberapa salinan kertas kepada teman-teman, lalu nantinya membacanya secara optik agar file bisa dipulihkan
https://github.com/cyphar/paperback
Saat ini semua fungsinya berjalan, tetapi isi kode QR harus disalin-tempel ke command line, dan format di disk—atau tepatnya di kertas—juga harus distabilkan
https://github.com/paritytech/banana_split
Baru-baru ini ada tulisan Levchin tentang Shamir Secret Sharing dan kekacauan yang ditimbulkannya di PayPal: https://max.levch.in/post/724289457144070144/shamir-secret-s...
Ini salah satu algoritma favorit saya, tetapi jujur saja belakangan saya mulai bertanya-tanya apakah ketertarikan saya hanya bersifat akademis, atau kasus penggunaan nyatanya memang lebih terbatas dari yang saya kira
Cukup sederhana untuk dipahami meski hampir tanpa latar belakang kriptografi atau matematika tingkat lanjut; pada dasarnya hanya perlu sedikit aljabar. Fakta bahwa ini bisa dilakukan saja sudah menakjubkan, dan setidaknya pada awalnya kasus penggunaan konkretnya juga terlihat jelas, bahkan bisa diimplementasikan sendiri. Tentu saja tetap ada jebakan
Karena itu menurut saya ia muncul terlalu sering, bukan hanya di forum diskusi tetapi juga dalam solusi industri
Entah apakah Anda melihat hubungan sebab-akibat di antara keduanya, tetapi masalahnya bukan pada algoritmanya sendiri, melainkan antarmuka untuk mengakses algoritma tersebut
Menurut FAQ, alat ini memecah kunci enkripsi dengan skema Shamir Secret Sharing. Namun sebenarnya, dengan skema Reed-Solomon, tujuan yang sama bisa dicapai tanpa kunci enkripsi
Pertama, proses data input dengan all-or-nothing transform (AONT), lalu bagi menjadi fragmen Reed-Solomon. Reed-Solomon rentan terhadap distinguishing attack dan kemungkinan besar membocorkan informasi input, jadi AONT diperlukan
[1] <https://en.wikipedia.org/wiki/Reed%E2%80%93Solomon_error_cor...>
[2] <https://en.wikipedia.org/wiki/All-or-nothing_transform>
[3] <https://en.wikipedia.org/wiki/Distinguishing_attack>
Secara ketat, pada Shamir pun tahap enkripsi tidak wajib. Namun ada keuntungan dalam mengenkripsi rahasianya sendiri dan memakai SSS hanya untuk kuncinya. Saya tidak tahu apakah Horcrux bekerja seperti itu, tetapi alat serupa milik saya, Paperback, melakukannya begitu
[1]: https://github.com/cyphar/paperback
Makalah: <https://www.usenix.org/legacy/event/fast11/tech/full_papers/...>
Ada beberapa cara yang terbayang untuk “membagi file yang dienkripsi dengan kata sandi agar bisa dirakit kembali meski sebagian fragmen hilang”, tetapi yang menarik adalah bahwa ini bisa dilakukan tanpa kata sandi
Bagi orang yang menyukai topik keamanan atau algoritme, ini cukup menarik. Saya mungkin akan menggali kode sumbernya dan membaca teknik terkait karena ingin tahu bagaimana implementasinya. Namun, saya tidak begitu tahu ini berguna untuk apa. Saya jadi berpikir apakah ada model ancaman yang masuk akal sebagai salah satu lapisan “kulit bawang” untuk melindungi data sensitif, atau apakah ada titik keunggulan dibanding kasus penggunaan yang sudah diselesaikan lebih baik dengan cara lain
Penulisnya juga secara bercanda membandingkan masalah mengingat kata sandi buku harian lama dengan mengingat cukup banyak tempat persembunyian, dan secara pribadi saya rasa yang terakhir jauh lebih besar masalahnya. Jumlah fragmen harus dikurangi dan tempat persembunyiannya harus ditambah, tetapi itu akan mengurangi keamanan yang diberikan[0]
Ini memang mengingatkan saya pada multisig, tetapi yang pernah saya temui hanya sebatas “harus mencolokkan USB key dan menjalankan program bersama dua rekan kerja untuk menerbitkan satu pembaruan”. Semua orang harus menyediakan key, sehingga kondisinya “kalau saya cuti sakit, pembaruan tidak bisa dirilis”; saya tidak tahu apakah itu batasan alatnya atau karena saat itu masih alpha sehingga disetel seperti itu
Bagaimanapun, ini sangat menarik
[0] Namun, “di bawah kasur” sepertinya tingkat keamanannya mirip dengan menyetel kata sandi menjadi “password”
Pengaman sebenarnya adalah kontrol akses fisik yang sudah ada. Untuk mendapatkan data, pencuri harus membobol tiga tempat
Bisa juga mengenkripsi data lalu membagi kata sandinya menjadi tiga fragmen dan menyimpannya di lokasi berbeda, tetapi dengan begitu Anda harus menyimpan data dan kata sandinya sekaligus
Ini hal-hal yang tampaknya terkait dari namanya. Mungkin ada lebih dari satu proyek. Apa lagi ya?
Horcrux: Split your file into encrypted fragments - https://news.ycombinator.com/item?id=29395575 - November 2021, 11 komentar
Show HN: Horcrux, a Playground for Shamir Secret Sharing - https://news.ycombinator.com/item?id=26256726 - Februari 2021, 40 komentar
Horcrux Encrypted Messaging - https://news.ycombinator.com/item?id=24322069 - Agustus 2020, 93 komentar
I made an app that lets you split a file into horcruxes - https://news.ycombinator.com/item?id=24026445 - Agustus 2020, 80 komentar
You can now make horcruxes out of your confidential files - https://news.ycombinator.com/item?id=21933983 - Januari 2020, 17 komentar
Ini mengingatkan saya pada file parity di Usenet. Arsip besar diunggah dengan membaginya menjadi banyak file kecil dan sejumlah file parity, lalu misalnya meski hanya ada n-3 dari n file, arsip aslinya tetap bisa dibuat ulang
https://en.wikipedia.org/wiki/Parchive
Baru-baru ini saya tahu bahwa Clevis juga mendukung Shamir secret sharing. Sebenarnya itu satu-satunya cara untuk menyetel beberapa pin dengan tipe dan izin yang sama; bisa dibilang seperti RAID0 untuk SSS
https://github.com/latchset/clevis#pin-shamir-secret-sharing
Saya pikir ini rapi, jadi saya masuk ke repositorinya, dan ternyata pembuatnya adalah orang yang membuat lazygit/lazydocker. Senang melihat orang yang produktif seperti itu
Di FAQ, untuk pertanyaan “Bukankah ini berbeda dari Horcrux di dunia Harry Potter?”, ada jawaban: “Cukup mirip. Memang tidak boleh satu Horcrux saja bisa membangkitkan file asli, tetapi dua bisa dibuat cukup, jadi bedanya cuma satu. Checkmate, penggemar Harry Potter”
Namun inti Horcrux adalah menaruh backup di beberapa tempat. Alat yang mencadangkan backup di beberapa tempat ini adalah contoh penggunaan nama yang jauh lebih tepat: https://github.com/chrispoole643/horcrux. Checkmate, jesseduffield ;)
Backup parsial lebih sesuai dengan semangat ide itu
Sebagai tambahan, saya membaca konsep itu sebagai serangan terhadap promiskuitas. Seperti “Whore crux”. Sebaliknya, Lord of the Rings bisa dipandang sebagai serangan terhadap pernikahan, karena saat memakai cincin, seseorang menjadi tak terlihat dan perlahan memudar menjadi bukan apa-apa, seperti “mentega yang dioles terlalu tipis di atas terlalu banyak roti”