Horcrux: Dosyaları şifrelenmiş parçalara bölme
(github.com/jesseduffield)- Horcrux, bir dosyayı şifrelenmiş horcrux parçalarına bölen ve parolayı hatırlamaya gerek kalmadan özgün dosyanın geri yüklenmesini sağlayan bir CLI aracı
- Büyük ve hassas dosyaları şifrelemesi gereken ancak birkaç yıl sonra parolayı hatırlayamama ihtimali olan kullanıcılar ya da dosyayı birden fazla kanal üzerinden göndererek saldırganların ele geçirme olasılığını büyük ölçüde azaltmak isteyenler için tasarlanmış
split, bir dosya bölünürken üretilecek parça sayısını ve özgün dosyayı geri yüklemek için gereken parça sayısını girdi olarak alır; örnekte 5 parçadan rastgele seçilen 3’üyle geri yükleme yapılabilen bir yapı gösteriliyorbind, horcrux parçalarının bulunduğu dizinde özgün dosyayı yeniden birleştiren komuttur; dizini argüman olarak vermek de mümkündür- İç mekanizma, şifreleme anahtarını birden fazla parçaya ayırmak ve belirlenen eşik (threshold) sayısına ulaşan parça olduğunda özgün anahtarı yeniden oluşturmak için Shamir Secret Sharing Scheme kullanır
- Anahtar üretimi için Go standart kütüphanesindeki
crypto/randReadfonksiyonu kullanılır; Shamir implementasyonu ise Hashicorp’un vault repo implementasyonunun uyarlanmış bir biçimidir - Kurulum, Homebrew üzerinden
brew install jesseduffield/horcrux/horcrux, scoop üzerindenscoop bucket add extras; scoop install horcruxya da binary release ile yapılabilir - Alternatif olarak sunulan
ssss'in anahtarlar için çalıştığı ancak dosyanın kendisi için çalışmadığı belirtiliyor; diğerhorcruxveHaystackaraçlarının ise horcrux eşik değerini desteklememesiyle ayrıştığı ifade ediliyor
1 yorum
Hacker News yorumları
Dikkat edilmesi gereken nokta, bu aracın dosya şifreleme/şifre çözme için AES OFB modunu kullanması ve şifreli metin bütünlüğü garantisinin, yani MAC’in olmaması
[0]: https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation...
Kâğıt tabanlı yedekleme araçları arasında, Shamir gizli paylaşımını kullanarak birden fazla kâğıt kopyayı arkadaşlara dağıtmayı ve daha sonra optik olarak okuyup dosyayı geri yüklemeyi sağlayan harika bir proje var
https://github.com/cyphar/paperback
Şu an tüm işlevler çalışıyor, ama QR kod içeriklerini komut satırına kopyalayıp yapıştırmak gerekiyor; ayrıca diskteki, daha doğrusu kâğıt üzerindeki formatı da sabitlemem lazım
https://github.com/paritytech/banana_split
Levchin yakın zamanda Shamir gizli paylaşımı ve bunun PayPal’da yol açtığı karmaşa hakkında bir yazı yazmıştı: https://max.levch.in/post/724289457144070144/shamir-secret-s...
Bu benim en sevdiğim algoritmalardan biri, ama dürüst olmak gerekirse son zamanlarda ona sadece akademik olarak mı ilgi duyuyorum, yoksa gerçek kullanım senaryoları sandığımdan daha mı sınırlı diye düşünmeye başladım
Kriptografi geçmişi ya da ileri matematik neredeyse hiç olmadan anlaşılabilecek kadar basit; aslında biraz cebir bilmek yeterli. Bunun mümkün olması başlı başına şaşırtıcı, en azından başlangıçta somut kullanım senaryoları da çok net görünüyor ve kendiniz de uygulayabiliyorsunuz. Elbette hâlâ tuzakları var
Bu yüzden sadece tartışma panolarında değil, endüstriyel çözümlerde de gereğinden fazla sık karşımıza çıktığını düşünüyorum
İkisi arasında nedensellik kurup kurmadığını bilmiyorum, ama sorun algoritmanın kendisi değil, algoritmaya erişilen arayüzdü
FAQ’ya göre bu araç şifreleme anahtarını Shamir gizli paylaşım yöntemiyle parçalıyor. Ancak aslında Reed-Solomon yöntemi kullanılırsa şifreleme anahtarı olmadan da aynı hedefe ulaşılabilir
Önce girdi verisini ya hep ya hiç dönüşümünden (AONT) geçirip ardından Reed-Solomon parçalarına bölmek yeterli. Reed-Solomon ayırt etme saldırılarına açık olduğu ve girdi bilgisini sızdırma olasılığı yüksek olduğu için AONT gerekli
[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>
Kesin konuşmak gerekirse Shamir’de de şifreleme adımı zorunlu değil. Yine de sırrın kendisini şifreleyip SSS’yi yalnızca anahtar için kullanmanın avantajı var. Horcrux’ın böyle çalışıp çalışmadığını bilmiyorum, ama benzer aracım Paperback böyle yapıyor
[1]: https://github.com/cyphar/paperback
Makale: <https://www.usenix.org/legacy/event/fast11/tech/full_papers/...>
“Parolayla şifrelenmiş bir dosyayı, bazı parçalar eksik olsa bile yeniden birleştirilebilecek şekilde bölmenin” birkaç yolu akla gelebilir; ama bunu parola olmadan yapabilmesi ilginç geldi
Güvenlik konularını ya da algoritmaları seven biri olarak epey ilgi çekici bir şey. Nasıl uygulandığını anlamak için muhtemelen kaynak kodunu kurcalayıp ilgili teknikleri okuyacağım. Yine de bunun nerede işe yarayacağından pek emin değilim. Hassas verileri koruyan “soğan kabuğu” katmanlarından biri olarak anlamlı bir tehdit modeli var mı, yoksa zaten başka yöntemlerle daha iyi çözülen kullanım senaryolarına göre üstün olduğu bir nokta var mı diye düşünüyorum
Yazarı da eski günlük parolasını hatırlama sorunuyla yeterince saklama yeri hatırlama sorununu şaka yollu karşılaştırıyor; kişisel olarak ikincisinin çok daha büyük sorun olacağını düşünüyorum. Parça sayısını azaltıp saklama yerlerini artırmak gerekir, ama bu da sağlanan güvenliği azaltır[0]
Aklıma multisig geliyor, ama benim karşılaştığım örnek “tek bir güncelleme yayımlamak için USB anahtarını takıp iki iş arkadaşıyla birlikte programı çalıştırmak zorunda kalmak” seviyesindeydi. Herkesin anahtarını sağlaması gerekiyordu ve “ben hastalıktaysam güncelleme çıkamaz” durumuydu; bunun aracın bir sınırı mı, yoksa o sırada alfa olduğu için böyle mi yapılandırıldığı bilmiyorum
Yine de çok ilginç
[0] Yine de “şiltenin altı” muhtemelen parolayı “password” yapmakla benzer düzeyde bir güvenlik sağlar
Asıl güvenlik önlemi mevcut fiziksel erişim kontrolü olur. Bir hırsızın veriyi elde etmesi için üç yere birden girmesi gerekir
Veriyi şifreleyip parolayı üç parçaya bölerek farklı konumlarda da saklayabilirsiniz, ama o zaman hem veriyi hem de parolayı saklamak gerekir
İsim olarak ilişkili görünen şeyler. Muhtemelen birden fazla proje var. Başka neler vardır?
Horcrux: Split your file into encrypted fragments - https://news.ycombinator.com/item?id=29395575 - Kasım 2021, 11 yorum
Show HN: Horcrux, a Playground for Shamir Secret Sharing - https://news.ycombinator.com/item?id=26256726 - Şubat 2021, 40 yorum
Horcrux Encrypted Messaging - https://news.ycombinator.com/item?id=24322069 - Ağustos 2020, 93 yorum
I made an app that lets you split a file into horcruxes - https://news.ycombinator.com/item?id=24026445 - Ağustos 2020, 80 yorum
You can now make horcruxes out of your confidential files - https://news.ycombinator.com/item?id=21933983 - Ocak 2020, 17 yorum
Usenet’teki parity dosyalarını hatırlattı. Büyük bir arşiv küçük dosyalara ve belirli sayıda parity dosyasına bölünüp yüklenirdi; örneğin n dosyadan yalnızca n-3’ü olsa bile özgün arşiv yeniden oluşturulabilirdi
https://en.wikipedia.org/wiki/Parchive
Yakın zamanda Clevis’in de Shamir Secret Sharing’i desteklediğini öğrendim. Aslında aynı tür ve yetkide pin’lerden birden fazla ayarlamanın tek yolu bu; tabiri caizse SSS’in RAID0’ı gibi
https://github.com/latchset/clevis#pin-shamir-secret-sharing
Bunun temiz bir iş olduğunu düşünüp depoya girdim; yapan kişinin lazygit/lazydocker’ı yapan kişi olduğunu gördüm. Üretkenliğini görmek güzel
FAQ’da “Bu, Harry Potter evrenindeki hortkuluklardan farklı değil mi?” sorusuna “Epey benziyor. Tek bir hortkulukla özgün dosyayı diriltebilmek mümkün olmamalı, ama iki tanesiyle mümkün kılınabilir; yani sadece bir fark var. Şah mat, Harry Potter hayranları” diye yanıt verilmiş
Ama hortkulukların özü, birden fazla yerde yedek bulundurmak. Yedekleri birden fazla yere yedekleyen şu araç, ismi çok daha iyi kullanan bir örnek: https://github.com/chrispoole643/horcrux. Şah mat, jesseduffield ;)
Kısmi yedekler bu fikrin ruhuna daha uygun
Ek olarak, ben bu kavramı iffetsizliğe yönelik bir saldırı olarak okumuştum. “Whore crux” gibi. Buna karşılık Lord of the Rings evliliğe yönelik bir saldırı olarak görülebilir; çünkü yüzüğü taktığınızda görünmez olursunuz ve “fazla fazla ekmeğe sürülmüş tereyağı” gibi yavaş yavaş hiçliğe karışırsınız