Nasıl çalışır

Hiçbir icat yok - yalnızca iyi incelenmiş yapı taşları: BIP-39, X25519, HKDF-SHA256, XChaCha20-Poly1305. İşte tüm yol, sade bir dille.

12 kelime kimliğin tamamıdır

Bir profil, BIP-39 tohum ifadesiyle başlar - 128 bit entropi taşıyan 12 İngilizce kelime. Kelimeler bir tohuma genişletilir; HKDF, şifreleme anahtar çiftini bu tohumdan türetir. Aynı kelimeler herhangi bir cihazda aynı anahtarları geri getirir: kurtarılacak bir «hesap» yoktur, yalnızca ifade vardır.

Adres, açık anahtarın kendisidir

sk önekiyle bech32 olarak kodlanmış X25519 açık anahtarınız adresinizdir - sk1 ile başlayan yaklaşık 60 karakter. Metin veya QR kod olarak paylaşın. Kayıt olunacak bir dizin de, isimleri kişilerle eşleştiren bir sunucu da yoktur.

sk1qsva3e52awafjvedj5ethvc5hs9j4t0ml26m83kn6kycsh9m46rejzha

Mesaj bir zarfa dönüşür

Metin, rastgele bir mesaj anahtarıyla XChaCha20-Poly1305 kullanılarak bir kez şifrelenir. Ardından bu anahtar her alıcı için bir yuvaya sarılır - ve her zaman sizin için bir yuvaya daha. Bu yüzden gönderdiğiniz mesajlar okunabilir kalır: geçmişinizi çözmek, gelen mesajları okumakla aynı işlemdir.

Yuvalar anonimdir ve karıştırılmıştır: zarf hiçbir adres taşımaz, dışarıdan bakan yalnızca boyutları görür. Her yuvanın anahtarı iki X25519 el sıkışmasıyla kararlaştırılır - biri bu zarf için üretilen geçici anahtarla (forward secrecy), diğeri gönderenin kalıcı anahtarıyla (gönderen doğrulaması).

sürüm 1 B gönderen anahtarı 32 B geçici anahtar 32 B yuvalar her biri 48 B nonce 24 B şifreli metin + etiket veri yükü
Zarfın yapısı (sürüm 2)

Zarf düz metin olarak yolculuk eder

İkili zarf, base64 ile zırhlı bir bloğa sarılır. Kendi kendine yeter: bir mesajlaşma uygulamasına, e-postaya, forum gönderisine veya dosyaya yapıştırın - metin ileten her kanal Secret Keeper mesajlarını da iletir.

-----BEGIN SECRET MESSAGE V1-----
AlXhZ0Qq7bfPj…base64…M42kLBi6p4Jro
-----END SECRET MESSAGE V1-----

Dosyalar: .skf kapsayıcısı

Dosyalar aynı yuva şemasını kullanır, ancak gövde parçalar hâlinde şifrelenir - birkaç gigabaytlık bir video belleğe yüklenmeden akıp geçer. Parça nonce’ları STREAM yapısını izler (age ve Tink’teki gibi): bir sayaç yeniden sıralamayı ve tekrarları, son bayt ise kesilmeyi yakalar. Dosya adı bile şifreli başlığın içindedir.

Yedekler

Yedek bir .skb dosyasıdır: ayarlar, kişiler ve geçmiş, kendinize şifrelenmiş tek bir kapsayıcıda - şifreli dosyalarla aynı şema; dışarıdan hiçbir şey okunamaz, kişilerin adresleri bile. Tohum ifadesi asla yedeğin içinde olmaz - profil 12 kelimeyle geri yüklenir, yedek ise onun çevresindeki her şeyi geri getirir.

Bunun kazandırdıkları

Forward secrecy
her zarf için yepyeni bir geçici anahtar
Gönderen okuyabilir
gönderdiğiniz her zarfta size ait bir yuva
Durum yok
ikili oturumlar yok, sunucularda hiçbir şey saklanmıyor
Kullanıcı kimliği yok
adres, açık anahtarın kendisidir
İki gerçekleme
uygulamada Dart, uzantıda @noble - ortak test vektörleriyle çapraz doğrulanır

Doğrulamak ister misiniz?

Bayt düzeyindeki eksiksiz spesifikasyon herkese açık - uygulama ve uzantı aynı belgeye karşı test ediliyor:

Protokol spesifikasyonunu oku