5 पॉइंट द्वारा GN⁺ 2023-09-17 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • Horcrux एक CLI टूल है जो फ़ाइलों को एन्क्रिप्टेड horcrux टुकड़ों में बाँटता है और पासवर्ड याद न रहने पर भी मूल फ़ाइल को पुनर्स्थापित करने देता है
  • यह उन उपयोगकर्ताओं के लिए उपयोगी है जिन्हें बड़ी संवेदनशील फ़ाइलों को एन्क्रिप्ट करना है लेकिन हो सकता है कि वे कुछ वर्षों बाद पासवर्ड याद न रख पाएं, या जो फ़ाइल को कई चैनलों से भेजकर हमलावर द्वारा इंटरसेप्ट किए जाने की संभावना को काफी कम करना चाहते हैं
  • split फ़ाइल को विभाजित करते समय बनने वाले टुकड़ों की संख्या और मूल को पुनर्स्थापित करने के लिए आवश्यक टुकड़ों की संख्या इनपुट के रूप में लेता है; उदाहरण में 5 टुकड़ों में से किसी भी 3 से पुनर्स्थापित होने वाली संरचना दिखाई गई है
  • bind वह कमांड है जो horcrux टुकड़ों वाली डायरेक्टरी से मूल फ़ाइल को फिर से जोड़ता है, और डायरेक्टरी को argument के रूप में देना भी संभव है
  • इसका आंतरिक तरीका Shamir Secret Sharing Scheme पर आधारित है, जिसमें एन्क्रिप्शन key को कई हिस्सों में बाँटा जाता है और तय threshold या उससे अधिक टुकड़े होने पर मूल key को फिर से बनाया जाता है
  • key generation के लिए Go standard library के crypto/rand Read फ़ंक्शन का उपयोग किया जाता है, और 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 और Haystack horcrux threshold को सपोर्ट नहीं करते

1 टिप्पणियां

 
GN⁺ 2023-09-17
Hacker News की रायें
  • ध्यान देने वाली बात यह है कि यह टूल फ़ाइल encryption/decryption के लिए AES OFB mode इस्तेमाल करता है, और ciphertext integrity की गारंटी, यानी MAC, मौजूद नहीं है
    [0]: https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation...

    • ऊपर वाला wiki explanation, थोड़ा technical background होने पर भी समझना मुश्किल था। क्या इसे 5 साल के बच्चे को समझाने की तरह समझा सकते हैं?
  • paper-based backup tools में एक शानदार project है जो Shamir secret sharing का इस्तेमाल करके कागज़ की कई copies दोस्तों में बांटने देता है, और बाद में उन्हें optically read करके फ़ाइल restore की जा सकती है
    https://github.com/cyphar/paperback

    • एक कामचलाऊ user interface बनाने के लिए सच में समय निकालना होगा, लेकिन graphics कभी मेरी ताकत नहीं रही
      अभी सभी features काम करते हैं, पर QR code का content command line में copy-paste करना पड़ता है, और disk पर—या कहें paper पर—format भी freeze करना होगा
    • जानना चाहता हूँ कि यह अलग है या बिल्कुल वही काम करता है
      https://github.com/paritytech/banana_split
    • बहुत neat है। अभी इस पर depend करना थोड़ा जल्दी लगता है, लेकिन अगर यह और mature और इस्तेमाल में आसान हो जाए, तो काफी लोगों के लिए बहुत उपयोगी हो सकता है
    • क्या Shamir secret sharing बड़े inputs के साथ भी ठीक काम करता है? या plaintext को AEAD से encrypt करके सिर्फ key को Shamir secret sharing से split करना चाहिए?
  • हाल ही में Levchin ने Shamir secret sharing और PayPal में उससे हुई अफरातफरी पर एक post लिखा था: https://max.levch.in/post/724289457144070144/shamir-secret-s...
    यह मेरे पसंदीदा algorithms में से एक है, लेकिन सच कहूँ तो आजकल मुझे शक होने लगा है कि क्या मैं इसे सिर्फ academic तौर पर ही आकर्षक मानता हूँ, या इसके real-world use cases मेरी सोच से ज्यादा limited हैं

    • Shamir secret sharing मूल रूप से nerd sniping के लिए perfect है
      इसे समझना इतना सरल है कि cryptography background या advanced math लगभग न होने पर भी समझा जा सकता है; असल में थोड़ी algebra ही काफी है। यह संभव है, यही हैरान करने वाला है, और कम से कम शुरुआत में concrete use cases भी साफ दिखते हैं, साथ ही आप खुद implement भी कर सकते हैं। बेशक, फिर भी pitfalls हैं
      इसलिए मुझे लगता है कि यह discussion boards ही नहीं, industry solutions में भी जरूरत से ज्यादा बार दिखता है
    • linked post से ऐसा सवाल उठना चाहिए, ऐसा मुझे नहीं लगता
      पता नहीं आप दोनों के बीच causal relationship बता रहे हैं या नहीं, लेकिन समस्या algorithm खुद नहीं थी, बल्कि algorithm तक पहुँचने वाला interface था
    • इसी चिंता के आधार पर मैं अभी एक किताब लिख रहा हूँ: pmfpbook.org
  • 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>

    • क्या वह approach information-theoretically secure है? Shamir secret sharing तो है, और उसका math भी बहुत सरल है
      कड़ाई से कहें तो Shamir में भी encryption step अनिवार्य नहीं है। हालांकि secret को खुद encrypt करने और SSS को सिर्फ key के लिए इस्तेमाल करने के फायदे हैं। Horcrux ऐसा काम करता है या नहीं, मुझे नहीं पता, लेकिन मेरा मिलता-जुलता tool Paperback ऐसा ही करता है
      [1]: https://github.com/cyphar/paperback
    • मुझे एक project मिला जो ठीक यही तरीका इस्तेमाल करता दिखता है: <https://github.com/atbarker/AONT-RS>
      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 के स्तर की होगी

    • emergency में लोगों के इस्तेमाल के लिए information share करने के लिए कैसा रहेगा? data को कई locations में store किया जाए, लेकिन सिर्फ वही व्यक्ति पढ़ सके जिसे उनमें से 3 जगहों तक access हो
      असली 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 ;)

    • सही है, लेकिन पूरी तरह नहीं। technically Horcrux backup था, लेकिन इस concept का emotional weight इस बात में था कि खतरे से बचने के लिए आत्मा को बाँटना और अपने essence को कम कर देना
      partial backup उस idea की spirit से ज़्यादा मेल खाता है
      साथ में, मैंने इस concept को promiscuity पर हमले के रूप में पढ़ा। “Whore crux” जैसा। इसके उलट Lord of the Rings को शादी पर हमला माना जा सकता है, क्योंकि ring पहनने पर आप अदृश्य हो जाते हैं और “बहुत ज़्यादा bread पर खुरचकर लगाए butter” की तरह धीरे-धीरे कुछ भी न रहने वाली सत्ता में मिटते जाते हैं