deniz.in

Piyasalar

Hava durumu

Hava durumu yükleniyor

· kaynak Hacker News – Front Page (native)

yggstore, arkadaşların disk alanını Yggdrasil üzerinde şifreli parçalı depolamaya dönüştürüyor

yggstore adlı deneysel bir araç, dosyaları şifreleyip erasure code ile parçalara ayırıyor ve Yggdrasil mesh ağı üzerinde arkadaşların makinelerine dağıtıyor — ortada ne bir koordinatör var, ne bulut, ne de henüz bağımsız bir kripto incelemesi.

yggstore, arkadaşların disk alanını Yggdrasil üzerinde şifreli parçalı depolamaya dönüştürüyor

peterretief adlı kullanıcının GitHub'da yayımladığı ve Hacker News ana sayfasında öne çıkan deneysel bir araç olan yggstore, bir arkadaş grubunun boştaki disk alanlarını birleştirmesini sağlıyor. Her dosya şifreleniyor, erasure code ile kodlanıyor ve Yggdrasil overlay ağı üzerinden grubun makinelerine dağıtılıyor; ortada bir koordinatör bulunmuyor.

Depolama nasıl çalışıyor

Projenin README'sine göre put komutu bir dosyayı 4 MiB'lık parçalara bölüyor ve her parçayı AES-256-GCM ile şifreliyor; dosya başına yeni bir rastgele anahtar, her parça için ise yeni bir nonce kullanılıyor. Ardından şifreli her parça erasure code ile dört veri ve iki eşlik parçasına (parity shard) ayrılıyor. Parçalar içerik adresli — bir parçanın dosya adı, SHA-256 hash'i — ve çevrimiçi olan eşlere dağıtılıyor; erişilebilir eş sayısı altı ya da daha fazlaysa, her eşe aynı parçadan en fazla bir shard gidiyor.

Bir parçanın altı shard'ından herhangi dördü onu yeniden oluşturmaya yettiği için, dosya tek tek shard'ların kaybolmasından etkilenmiyor. README'ye göre hiçbir düğüm tek bir parçanın ikiden fazla shard'ını tutmuyor; böylece bir makinenin çökmesi veriyi birlikte götürmüyor. Docker container'ları gibi aynı fiziksel makineyi paylaşan düğümler ortak bir host etiketi taşıyabiliyor, böylece üst sınır makine başına uygulanıyor — bunun bedeli, yükleme için üç gerçek makinenin çevrimiçi olması gerekliliği.

Yükleyen kişi, dosyanın anahtarını da içeren manifest'i barındıran küçük bir .ystub dosyasını saklıyor; stub'a ve grubun düğümlerine erişimi olan herkes dosyayı geri okuyabiliyor. Geri alma işlemi shard'ları paralel olarak çekiyor, hash'i uymayanları eliyor ve her parçayı altı shard'ından herhangi dördünden yeniden oluşturuyor. Yavaş işaretlenen bir eş, yüklemeleri yavaşlatmasın diye parça başına yalnızca bir shard alıyor.

Eşlerin verinizi hâlâ tuttuğunu kanıtlamak

Sürüyü denetleyen bir koordinatör olmadığından yggstore bir proof-of-possession şeması ekliyor. Yükleme sırasında, shard'lar hâlâ eldeyken, yükleyen kişi her shard için yirmi tek kullanımlık meydan okuma önceden hesaplıyor — bunlar özünde, verilen bir nonce ile seçili bir byte aralığını hash'leme istekleri — ve bunları gizli kalması gereken ayrı bir meydan okumalar dosyasına yazıyor. verify komutu daha sonra her shard için bir meydan okuma gönderip yanıtları denetleyerek, eşlerin kendilerine emanet edileni gerçekten tuttuğunu doğruluyor.

Kimlik ve erişim kontrolü

Kimlik, Yggdrasil'in kendi adreslemesine dayanıyor: bir düğümün 200::/7 adresi genel anahtarından türetildiği için, bir overlay bağlantısının kaynak adresi çağırıcıyı kriptografik olarak kimliklendiriyor. Sunucular varsayılan olarak reddetme ilkesiyle çalışıyor, yalnızca yerel bir peers listesindeki adreslere yanıt veriyor, yalnızca overlay adreslerine bağlanıyor ve bir shard'ı yalnızca özgün yazanın silebilmesine izin veriyor. Yerleşik Yggdrasil modu overlay ağı aracın kendisi içinde, ayrı bir daemon, TUN aygıtı veya root yetkisi olmadan çalıştırıyor.

Yeni üyeler yedi gün geçerli tek kullanımlık davetlerle katılıyor. Katılma endpoint'i üye olmayan birinin çağırabileceği tek işlem; geçerli bir davet olmadan hiçbir şey yapmıyor ve dakikada altı denemeyle sınırlı. Bir admin düğüm, her düğümün peer listesini senkron tutuyor ve değişiklikleri yeniden başlatma olmadan, bir dakika içinde tüm düğümlere yayıyor.

Dosyayı stub göndererek paylaşmak

Paylaşım bilinçli olarak depolama ağının dışında tutuluyor: birine dosya vermek için öğenin adını, bir notu ve anahtarını yalnızca onların paylaşım kodunun açabileceği bir .ysend dosyasına mühürlüyor, ardından e-posta ya da başka herhangi bir kanalla iletiyorsunuz. Dosyayı onların yggstore kurulumuna bırakmak dosyayı geri getiriyor, çünkü düğümler shard'ları yalnızca üyelere veriyor. README, alınan bir öğenin hâlâ gönderene ait olduğunu — gönderen silerse, paylaştığı herkes için de kaybolduğunu — ve alınan stub'ların yalnızca Yggdrasil adreslerine ya da yerel olarak bilinen düğümlere atıf yapabileceğini, dolayısıyla hazırlanmış bir dosyanın geri yüklemeyi rastgele makinelere yönlendiremeyeceğini uyarıyor.

Depolamadan fazlası

README, çekirdeğin üzerine daha geniş bir platform taslağı çiziyor: üyelerin makinesinin müşteri verisi tutup tutmayacağını seçtiği ve bunun için kredi kazandığı, ödeme yapan müşterilerin rclone, Cyberduck ve Duplicati gibi S3 uyumlu istemcilerle grubun birleşik depolamasını kullanmasını sağlayan bir gateway; yalnızca değişen kısımları saklayan dosya başına sürüm geçmişi; o anda çevrimdışı olan düğümlere bile iletilen doğrudan mesajlar ve publish/subscribe konuları; birkaç makinenin tek bir web sitesini sunmasını sağlayan klasör yayınlama; ve kendi alan adınıza gelen, her ileti geldiği anda şifrelenen e-posta. İkinci el bir mini PC'den depolama kutusu yapmaya yönelik adım adım bir rehber bile var; binary'ler Linux PC'ler, Raspberry Pi ve diğer arm64 kartlar, Windows ve macOS'u kapsıyor ya da Go 1.24 veya üzeriyle kendiniz derleyebilirsiniz.

Neden önemli

yggstore, koordinatörsüz grup depolamasının oldukça eksiksiz bir taslağı: anahtardan türetilen kimlik, varsayılan olarak reddetme ilkesine dayalı erişim kontrolü, erasure code ile yedeklilik, proof-of-possession meydan okumaları ve mühürlü stub ile paylaşım — hem de yabancılar için çalıştırılması gereken bir sunucu olmadan. Arkadaşlar arası disk ödünç verme modeli, üzerine eklenmiş bir S3 gateway ile, bulut depolama ile tamamen açık peer-to-peer sistemleri arasında alışılmadık bir orta yol. Proje olgunluğu konusunda ise açık sözlü: kriptografisi bağımsız hiç kimse tarafından incelenmedi ve README'nin kendi tavsiyesi, onunla depolanan hiçbir şeyi kaybetmeyi göze alamayacağınız verinin tek kopyası yapmamanız yönünde.

  • #p2p
  • #storage
  • #encryption
  • #yggdrasil
  • #open-source

İlgili yazılar