Shamir'in gizli paylaşımı nasıl çalışır
(ente.com)- Shamir gizli paylaşımı, bir sırrı birden çok parçaya böler; yalnızca eşik sayısına ulaşınca geri yüklenebilir ve daha az parçayla hiçbir bilgi açığa çıkmaz
- Şirket ana anahtarı, aile hesabı kurtarma veya ekip yedekleri gibi durumlarda, tüm sırrı tek bir kişiye emanet etmenin zor olduğu ve bazı parçalar kaybolsa bile kurtarma gerektiği senaryolarda kullanışlıdır
- Temel model, sırrı bir polinomun
0noktasındaki değeri olarak gizler ve her parçayı eğri üzerindeki bir nokta olarak dağıtır - Eşik
kiçin derecek - 1olan bir polinom kullanılır; iki parça bir doğruya, üç parça bir parabol'e, dört parça ise kübik eğriye karşılık gelir - Ente Legacy Kit, bu yöntemi tek bir katman olarak kullanarak kartların kalıcı kurtarma anahtarına dönüşmesini engeller ve verilmiş kartların iptal edilebilmesini sağlar
Sırrı noktalara ve polinomlara bölme yöntemi
- Adi Shamir tarafından 1979'da yayımlanan bu yöntemin özü, yalnızca “kırılması zordur” olmaması; gerekli parça sayısı eksikse hiçbir bilginin ortaya çıkmamasıdır
- Farklı iki nokta tam olarak bir doğruyu belirler; ancak tek bir nokta varsa, o noktadan geçen sonsuz sayıda doğru vardır ve her biri dikey ekseni farklı bir konumda keser
- Sır
7sayısıysa, bu değer doğrunun dikey ekseni kestiği yerde gizlenebilir - Eğim, sırrın kendisi değil; sırrı gizlemek için kullanılan rastgelelik rolünü oynar
- Her kişiye doğru üzerindeki bir nokta verilirse, tek bir kişinin elindeki bir noktayla uyumlu olabilecek sonsuz sayıda doğru vardır ve bunların her biri farklı bir sırla eşleşebilir
- İki nokta birleştirildiğinde doğru sabitlenir ve doğrunun
0noktasındaki değeri okunarak sır geri elde edilebilir - Bu yapı bir 2-of-n gizli paylaşım düzenidir; istenen kadar nokta üretilebilir, ancak herhangi iki nokta doğruyu yeniden kurmaya yeter
- Eşik büyüdükçe daha yüksek dereceli eğriler kullanılır
- Bir parabol ancak üç noktayla belirlenebilir; bu yüzden sır, parabolün dikey ekseni kestiği yerde gizlenirse herhangi üç parçayla kurtarma mümkündür, iki parçayla ise mümkün değildir
- Genel olarak eşik
kiçin derecek - 1olan bir polinom kullanılır 2parça doğruya,3parça parabole,4parça ise kübik eğriye karşılık gelir- Gerçek uygulamalar grafik kağıdı yerine sonlu cisim aritmetiği kullanır; ancak sır yine
0noktasındaki değerdir, rastgele katsayılar bunu gizler ve her parça polinom üzerindeki bir nokta olarak kalır - Önemli nokta, parça sayısı yetersiz olduğunda sırrın hesaplanmasının sadece zor olması değil, mümkün olan tüm sırların hâlâ olası kalmasıdır
Ente Legacy Kit ve başvuru kaynakları
- Ente bu fikri Legacy Kit içinde kullanıyor
- Amaç yalnızca sırrı bölmek değil; bölünmüş parçaların kalıcı kurtarma anahtarına dönüşmesini engellerken kurtarmayı mümkün kılmak
- Legacy Kit, Shamir yöntemini daha büyük bir akış içinde tek bir katman olarak kullanıyor
- Kartların içinde kurtarma anahtarının kendisi bulunmuyor; bunun yerine ayrı bir sır yerelde yeniden oluşturuluyor ve sunucu aracılı kurtarma sürecine katılıyor
- Bu yapı sayesinde verilmiş kartlar iptal edilebiliyor ve kaybolan kartlar kalıcı bir yükümlülüğe dönüşmüyor
- Başvuru kaynakları
1 yorum
Hacker News yorumları
Bu konuda yüksek lisans tezi yazmıştım. Dropbox, Google Drive, OneDrive gibi sıradan depolama sağlayıcılarının birkaçına veriyi bölerek kaydeden bir uygulama yaptım ve şifrelemeyi desteklemek için gizli paylaşımı kullandım
Avantajı, sağlayıcıların artık veriyi okuyamaması, yalnızca 2 tanesi ayakta kalsa bile çalışabildiği için ek yedeklilik sağlaması ve ana parolayı unutunca her şeyin bittiği diğer güvenli depolama uygulamalarının aksine mevcut hesap kurtarma süreçlerinin aynen kullanılabilmesiydi
Birden fazla anahtar/değer çiftini tek bir şifreli metin içinde birleştirmenin bir yolu olup olmadığını merak ediyorum. Yani basitçe art arda eklemeden ya da çıktı boyutunu patlatmadan, bu düzene bilgi koyan herkesin aynı şifreli parçayı saklayıp kendi anahtarıyla farklı bir değeri çözebilmesi gibi
Böylece insanlar birbirlerinin yedeği olabilirken, neyin saklandığı konusunda da makul inkar edilebilirliğe sahip olabilirler
Yüksek lisans tezimde Shamir gizli paylaşımını mesh ağlara uygulamıştım. Amaç, mesh'teki bir düğüm saldırgan tarafından ele geçirilip o düğümün sırrı çıkarılsa bile tüm şifrelemenin kırılmasını imkansız kılmaktı
Ek bir gizli depoyu açan parolayı “demokratik olarak güvenli” şekilde dağıtmak için ekibimiz bu tekniği kullanıyor. O ek depoda, asıl gizli depoya nasıl erişileceğine dair bilgi bulunuyor
https://packages.debian.org/trixie/ssss fena değil ve oldukça sezgisel bir uygulama
Shamir sayesinde bir kez ciddi anlamda kurtuldum. Neredeyse unutulmuş bir yedeği acilen geri yüklemem gerekti ve o sırada kullanılan rastgele parolayı yeniden oluşturabildim
“Ne olur ne olmaz” diye aile üyelerine dağıtılmış parçalar vermiş olmam iyi olmuş
“Faydalı olan şey, parça sayısı yetersiz olduğunda sırrı hesaplamanın zor olması değildir. Parça sayısı yetersiz olduğunda sır hakkında hiçbir bilgi olmamasıdır. Bir parça eksikse, olası tüm sırlar hâlâ mümkündür” kısmı bana kuadratik elek ya da onun türevleriyle sayı çarpanlara ayırmayı hatırlatıyor
Sonunda mod n kongrüanslarından bir sistem bulunup asal çarpanlar hesaplanıyor ama yeterince birikmeden önce bu imkansız. Her kongrüans da bir miktar bilgi taşıyor olmalı; hep hangi uzayda serbestlik derecesini azaltıyor olduğumuzu merak etmişimdir
Burada da her parça polinom uzayını kısıtlıyor ama anahtarın ekseni kestiği noktayı söyleyecek kadar değil
Gerçekten harika bir teknik ve bilgisayar bilimcilerin polinomlarla yapabildiği ilginç şeylerden biri olarak ortaokulda bile öğretilebilecek türden
Doğrusal fonksiyon denklemini geri bulma dersinde Shamir'i tanıtıyor, öğrencilerin gizli PIN'i eğim olarak seçip iki nokta oluşturup bunu iki farklı öğrenciye vermesini sağlıyorum. O iki öğrenci eşleşip PIN'i yeniden bulmak zorunda kalıyor ve öğrenciler her zaman çok ilgili oluyor
Bruce Schneier bunu klasik kitap Applied Cryptography'de anlatmıştı ve HashiCorp Vault'ta da bir Go uygulaması vardı. Pratik açıdan, dağıtılan parçaların kaç bit olması gerektiğini hep merak etmişimdir
Haber gruplarında duyduğum cevap “gerçek anahtar uzunluğundan 1 bit fazla” olmuştu. Günümüzde kuantum hesaplama tehdidinin 1) parça boyutu seçimini ve 2) genel olarak gizli paylaşımın artılarını ve eksilerini nasıl etkileyeceğini merak ediyorum
1 baytlık bir sır için ‘10 üzerinden eşik’ Shamir parçaları üretip bunların 9 tane 1 baytlık parçasını verseniz bile, evrendeki hiçbir bilgisayar sırrı çıkaramaz. Gerçek uygulamalarda bütünlük denetimi için mesaj doğrulama kodu ya da sağlama toplamı eklemek gerekir; bu yüzden birkaç bayt daha büyür
Shamir gizli paylaşımı bilgi kuramsal olarak güvenli olduğu için, k-out-of-n bir sırda k adet nokta olmadan kaba kuvvet denemesi yapıldığında tüm sırlar eşit derecede makul görünür. Bu yüzden cismin bit boyutunu istediğiniz gibi seçebilirsiniz ama elbette sırrın bit boyutundan büyük olmalıdır. 5 elemanlı bir sonlu cisimde 100 bit saklayamazsınız
Genelde saldırganın sırrın kendisini kaba kuvvetle denemesini engellemek gerekir. Yöntem bilgi kuramsal olarak güvenli olsa da sırların kendisi çoğu zaman değildir. Örneğin cüzdan seed'i böyledir; bu yüzden sırra rastgelelik eklenir ve cisim bit boyutu yeterince büyük seçilerek bu tür saldırılar önlenir
Tehdit modeline göre 80 bit ya da 128 bitlik bir cisim yeterince güvenli olabilir ve parça boyutu da 80 ya da 128 bitten biraz daha büyük olur. Kuantum bilgisayarlara gelince, bu yöntem bilgi kuramsal olarak güvenli olduğundan burada bir saldırı var olamaz
Bu yüzden n-of-k yapısı kurmak için n-1 dereceli bir p(x) polinomu oluşturur ve o polinomdan rastgele k nokta seçersiniz. i'inci parça basitçe (xi, yi) olur; dolayısıyla bit sayısını polinomun kurulduğu cisim belirler
Cisim, tüm sırrı taşıyacak kadar geniş olmalı ve hem (x, y) değerlerini saklamak gerektiğinden parça boyutu en az sırrın iki katıdır. Tabii parçanın bozulmadığını doğrulamak için bir bütünlük kontrolü de gerekir
Kuantum hesaplamanın burada hiçbir şeyi değiştirmediğini düşünüyorum. Tek bir nokta eksik olduğunda bile son nokta sırrı herhangi bir şeye dönüştürebilir ve bunu ayırt etmenin bir yolu yoktur
Absürt derecede çok sayıda parça beklemiyorsanız GF(2^8) oldukça doğal bir seçimdir ve büyük tamsayı aritmetiğiyle uğraşmanız gerekmez
Ente'nin uygulaması burada: (https://2of3.ente.com/)
İdeal olarak
3 of 4: A B C Dya da2 of 3: E F Gve1 of 1: Hgibi yapılar oluşturabilse güzel olurduKurtarma sırasında tam olarak neye ihtiyaç olduğunu açıkça göstermek için kartlara ad vermenin bir yolu da iyi olurdu. Elbette mevcut tasarımın sadeliği de kendi başına bir avantaj
https://bs.parity.io/ -- http://passguardian.com/ -- https://iancoleman.io/shamir/
Birkaç yıl önce tarayıcıda Shamir gizli paylaşımı çalıştıran küçük bir araç yapmıştım. Sayfayı indirirseniz tamamen çevrimdışı da kullanabilirsiniz
https://simon-frey.com/s4/
Bunları aileden birkaç kişiye dağıttım ve ölürsem eşime vermelerini söyledim