Horcrux: फ़ाइलों को एन्क्रिप्टेड टुकड़ों में विभाजित करें
(github.com/jesseduffield)- Horcrux एक CLI टूल है जो फ़ाइलों को एन्क्रिप्टेड horcrux टुकड़ों में बाँटता है और पासवर्ड याद न रहने पर भी मूल फ़ाइल को पुनर्स्थापित करने देता है
- यह उन उपयोगकर्ताओं के लिए उपयोगी है जिन्हें बड़ी संवेदनशील फ़ाइलों को एन्क्रिप्ट करना है लेकिन हो सकता है कि वे कुछ वर्षों बाद पासवर्ड याद न रख पाएं, या जो फ़ाइल को कई चैनलों से भेजकर हमलावर द्वारा इंटरसेप्ट किए जाने की संभावना को काफी कम करना चाहते हैं
splitफ़ाइल को विभाजित करते समय बनने वाले टुकड़ों की संख्या और मूल को पुनर्स्थापित करने के लिए आवश्यक टुकड़ों की संख्या इनपुट के रूप में लेता है; उदाहरण में 5 टुकड़ों में से किसी भी 3 से पुनर्स्थापित होने वाली संरचना दिखाई गई हैbindवह कमांड है जो horcrux टुकड़ों वाली डायरेक्टरी से मूल फ़ाइल को फिर से जोड़ता है, और डायरेक्टरी को argument के रूप में देना भी संभव है- इसका आंतरिक तरीका Shamir Secret Sharing Scheme पर आधारित है, जिसमें एन्क्रिप्शन key को कई हिस्सों में बाँटा जाता है और तय threshold या उससे अधिक टुकड़े होने पर मूल key को फिर से बनाया जाता है
- key generation के लिए Go standard library के
crypto/randReadफ़ंक्शन का उपयोग किया जाता है, और Shamir implementation Hashicorp के vault repo implementation के अनुकूलित रूप पर आधारित है - इंस्टॉलेशन Homebrew के
brew install jesseduffield/horcrux/horcrux, scoop केscoop bucket add extras; scoop install horcrux, या binary release के माध्यम से किया जा सकता है - विकल्प के रूप में बताए गए
ssssके बारे में लिखा है कि यह key पर काम करता है लेकिन फ़ाइल पर नहीं, जबकि अन्यhorcruxऔरHaystackhorcrux threshold को सपोर्ट नहीं करते
1 टिप्पणियां
Hacker News की रायें
ध्यान देने वाली बात यह है कि यह टूल फ़ाइल encryption/decryption के लिए AES OFB mode इस्तेमाल करता है, और ciphertext integrity की गारंटी, यानी MAC, मौजूद नहीं है
[0]: https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation...
paper-based backup tools में एक शानदार project है जो Shamir secret sharing का इस्तेमाल करके कागज़ की कई copies दोस्तों में बांटने देता है, और बाद में उन्हें optically read करके फ़ाइल restore की जा सकती है
https://github.com/cyphar/paperback
अभी सभी features काम करते हैं, पर QR code का content command line में copy-paste करना पड़ता है, और disk पर—या कहें paper पर—format भी freeze करना होगा
https://github.com/paritytech/banana_split
हाल ही में Levchin ने Shamir secret sharing और PayPal में उससे हुई अफरातफरी पर एक post लिखा था: https://max.levch.in/post/724289457144070144/shamir-secret-s...
यह मेरे पसंदीदा algorithms में से एक है, लेकिन सच कहूँ तो आजकल मुझे शक होने लगा है कि क्या मैं इसे सिर्फ academic तौर पर ही आकर्षक मानता हूँ, या इसके real-world use cases मेरी सोच से ज्यादा limited हैं
इसे समझना इतना सरल है कि cryptography background या advanced math लगभग न होने पर भी समझा जा सकता है; असल में थोड़ी algebra ही काफी है। यह संभव है, यही हैरान करने वाला है, और कम से कम शुरुआत में concrete use cases भी साफ दिखते हैं, साथ ही आप खुद implement भी कर सकते हैं। बेशक, फिर भी pitfalls हैं
इसलिए मुझे लगता है कि यह discussion boards ही नहीं, industry solutions में भी जरूरत से ज्यादा बार दिखता है
पता नहीं आप दोनों के बीच causal relationship बता रहे हैं या नहीं, लेकिन समस्या algorithm खुद नहीं थी, बल्कि algorithm तक पहुँचने वाला interface था
FAQ के मुताबिक यह टूल encryption key को Shamir secret sharing scheme से split करता है। लेकिन असल में Reed-Solomon scheme इस्तेमाल करके encryption key के बिना भी वही लक्ष्य हासिल किया जा सकता है
पहले input data को all-or-nothing transform (AONT) से process करें, फिर उसे Reed-Solomon shards में बाँट दें। Reed-Solomon distinguishing attacks के लिए vulnerable है और input information leak होने की संभावना ज्यादा है, इसलिए AONT जरूरी है
[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>
कड़ाई से कहें तो Shamir में भी encryption step अनिवार्य नहीं है। हालांकि secret को खुद encrypt करने और SSS को सिर्फ key के लिए इस्तेमाल करने के फायदे हैं। Horcrux ऐसा काम करता है या नहीं, मुझे नहीं पता, लेकिन मेरा मिलता-जुलता tool Paperback ऐसा ही करता है
[1]: https://github.com/cyphar/paperback
paper: <https://www.usenix.org/legacy/event/fast11/tech/full_papers/...>
“पासवर्ड से encrypted फ़ाइल को, कुछ टुकड़े न होने पर भी फिर से assemble किया जा सके इस तरह बाँटने” के कई तरीके सोचे जा सकते हैं, लेकिन यह बात दिलचस्प लगी कि ऐसा पासवर्ड के बिना किया जा सकता है
security topics या algorithms पसंद करने वाले के तौर पर यह काफ़ी दिलचस्प चीज़ है। इसे कैसे implement किया गया है यह जानने के लिए शायद source code में घुसकर संबंधित techniques पढ़ूँगा। हालांकि यह किस जगह उपयोगी होगा, यह ठीक से समझ नहीं आता। सोचता हूँ कि sensitive data को protect करने वाली “onion peel” की किसी layer के रूप में इसका कोई meaningful threat model है या नहीं, या फिर पहले से दूसरे तरीकों से बेहतर हल हो चुके use cases की तुलना में इसमें कोई श्रेष्ठता है या नहीं
लेखक भी पुराने diary password और पर्याप्त छिपाने की जगहें याद रखने की समस्या की मज़ाकिया तुलना करता है, लेकिन निजी तौर पर मुझे लगता है कि बाद वाली समस्या कहीं बड़ी होगी। टुकड़ों की संख्या घटानी होगी और छिपाने की जगहें बढ़ानी होंगी, लेकिन ऐसा करने से मिलने वाली security कम हो जाएगी[0]
multi-signature का खयाल आता है, लेकिन मैंने जो देखा था वह बस इतना था कि “एक update deploy करने के लिए USB key लगाकर दो colleagues के साथ program चलाना पड़ता था।” सबको key देनी पड़ती थी और हालत यह थी कि “अगर मैं sick leave पर हूँ तो update नहीं जा सकता”; यह tool की limitation थी या उस समय alpha होने की वजह से ऐसा configure किया गया था, पता नहीं
फिर भी बहुत दिलचस्प है
[0] हालांकि “mattress के नीचे” वाली जगह शायद password को “password” रखने जैसी security के स्तर की होगी
असली safeguard मौजूदा physical access control है। चोर को data पाने के लिए तीन जगहों में घुसना होगा
data को encrypt करके password को तीन टुकड़ों में बाँटकर अलग-अलग जगहों पर store भी किया जा सकता है, लेकिन तब data और password दोनों को संभालकर रखना पड़ेगा
नाम के लिहाज़ से संबंधित लगने वाली चीज़ें हैं। शायद एक से ज़्यादा projects हैं। और क्या-क्या होगा?
Horcrux: Split your file into encrypted fragments - https://news.ycombinator.com/item?id=29395575 - नवंबर 2021, 11 comments
Show HN: Horcrux, a Playground for Shamir Secret Sharing - https://news.ycombinator.com/item?id=26256726 - फ़रवरी 2021, 40 comments
Horcrux Encrypted Messaging - https://news.ycombinator.com/item?id=24322069 - अगस्त 2020, 93 comments
I made an app that lets you split a file into horcruxes - https://news.ycombinator.com/item?id=24026445 - अगस्त 2020, 80 comments
You can now make horcruxes out of your confidential files - https://news.ycombinator.com/item?id=21933983 - जनवरी 2020, 17 comments
Usenet की parity files याद आ गईं। बड़े archive को कई छोटी files और कुछ parity files में बाँटकर upload किया जाता था, और उदाहरण के लिए n में से सिर्फ n-3 files हों तब भी original archive regenerate किया जा सकता था
https://en.wikipedia.org/wiki/Parchive
हाल ही में पता चला कि Clevis भी Shamir secret sharing support करता है। दरअसल, same type और permissions वाले कई pins set करने का यही एकमात्र तरीका है; कहें तो यह SSS का RAID0 जैसा है
https://github.com/latchset/clevis#pin-shamir-secret-sharing
यह neat लगा, इसलिए repository में जाकर देखा तो पता चला कि बनाने वाला lazygit/lazydocker का creator था। इतना productive होना अच्छा लगा
FAQ में “क्या यह Harry Potter universe के Horcrux से अलग नहीं है?” सवाल पर जवाब था: “काफ़ी मिलता-जुलता है। एक Horcrux से original file resurrect नहीं होनी चाहिए, लेकिन दो से संभव हो सकती है, तो बस एक का फर्क है। checkmate, Harry Potter fans”
लेकिन Horcrux का core idea कई जगहों पर backups रखना है। यह tool, जो backups को कई जगहों पर backup करता है, नाम का कहीं बेहतर इस्तेमाल करता है: https://github.com/chrispoole643/horcrux. checkmate, jesseduffield ;)
partial backup उस idea की spirit से ज़्यादा मेल खाता है
साथ में, मैंने इस concept को promiscuity पर हमले के रूप में पढ़ा। “Whore crux” जैसा। इसके उलट Lord of the Rings को शादी पर हमला माना जा सकता है, क्योंकि ring पहनने पर आप अदृश्य हो जाते हैं और “बहुत ज़्यादा bread पर खुरचकर लगाए butter” की तरह धीरे-धीरे कुछ भी न रहने वाली सत्ता में मिटते जाते हैं