Güvenlik politikası
Herkos gizli anahtarları ve şifreli mesajları işler; bu yüzden güvenlik bildirimlerini ciddiye alırız ve bir sorunu geç değil, erken duymayı tercih ederiz.
Bir güvenlik açığını bildirme
Lütfen güvenlik sorunları için herkese açık bir issue açmayın.
Sorunu GitHub'ın özel güvenlik açığı bildirimi aracılığıyla ya da security@herkos.email adresine e-postayla gizli olarak bildirin.
Eklemeniz yararlı olacaklar: sorunun ne olduğu, nasıl yeniden üretileceği, hangi platformu ve sürümü denediğiniz ve bir saldırganın ne elde edebileceği. Bir kavram kanıtı (proof of concept) çok yardımcı olur.
Bir bildirime asla kendi nsec'inizi, gizli anahtarınızı veya bunker sırrınızı eklemeyin.
Bildirimleri birkaç gün içinde onaylamayı hedefliyoruz. Herkos küçük bir proje olduğundan, herkese açıklamadan önce lütfen bir düzeltme için makul bir süre tanıyın. Aksini tercih etmediğiniz sürece güvenlik bülteninde adınızı anmaktan memnuniyet duyarız.
Kapsamda olanlar
Herkos uygulamasının kendisi: anahtarların işlenmesi ve saklanması, mesajların
şifrelenmesi ve çözülmesi (local_packages/nostr_mail içindeki NIP-59 gönderici
denetimleri ve Bcc yalıtımı dâhil), uygulama kilidi, aktarıcı ve köprü iletişimi,
eklerin işlenmesi ve derleme ile yayım süreci.
Kapsam dışında olanlar
- Nostr protokolünün ve NIP'lerinin kendisi — bunları kaynağına bildirin.
- Üçüncü taraflarca işletilen aktarıcılar, köprüler ve Blossom sunucuları. Herkos varsayılanlarla gelir ama onları işletmez; sorunları işletmecilerine bildirin.
- Kaynak proje Nostr Mail Client, sorun Herkos'ta yapılan değişikliklere özgü değilse.
- Bilinen bir sınırlama olarak zaten belgelediğimiz eksik sıkılaştırmalar (aşağıya bakın).
Bilinen sınırlamalar, açıkça
Bunlar güvenlik açığı değil, tasarım tercihleridir. Birinin bunları zor yoldan keşfetmesindense yazıya dökmeyi tercih ediyoruz:
- Geleneksel adreslere giden posta uçtan uca şifreli değildir. Nostr kullanıcıları arasındaki mesajlar NIP-17 gift wrap kullanır ve uçtan uca şifrelidir. Sıradan bir e-posta adresine yazdığınızda mesajı bir köprü dönüştürür ve onu okuyabilir.
- Uygulama kilidi (PIN ve biyometri) bir kolaylık engelidir, beklemedeki veri şifrelemesi değil. Kilidi açık bir cihazı eline alan birini durdurur; cihaza veya deposuna tam erişimi olan bir saldırgana karşı korumaz.
- Windows'ta yalnızca biyometrik kimlik doğrulama zorunlu kılınamaz. Windows Hello yöntemin seçilmesine izin vermez; bu yüzden sistem PIN'i her zaman yedek olarak kullanılabilir kalır.
- Anahtarınızı kaybetmek hesabı kaybetmek demektir. Tasarım gereği kurtarma yoktur.
- Üst veri tamamen gizlenmez. Aktarıcılar bağlantı örüntülerini gözlemleyebilir ve mesaj içeriğini okuyamasalar bile her aktarıcı IP adresinizi görür. Herkos'un (30-09-2026'dan beri) ele vermediği şey, bir aktarıcı NIP-42 kimlik doğrulaması istediğinde kimin kime yazdığıdır:
- Nereye teslim edileceğini bulmak. Bir alıcının aktarıcı ve Blossom listeleri,
sizi hiçbir zaman tanıtmayan ayrı bir bağlantı üzerinden, önce kimlik doğrulaması
istemeyen aktarıcılarda (
purplepag.es,user.kindpag.es,nos.lol,offchain.pub) sorulur. - Profiller ve zamanlayıcı. Başka herhangi biri için gösterilen ad ve resim (kind 0) ile bir e-postayı zamanladığınızda veya iptal ettiğinizde zamanlayıcı DVM'nin aktarıcı listesi aynı şekilde sorulur: önce anonim olarak ve bir aktarıcı ısrar ederse aşağıda açıklanan geçici anahtarla, asla sizinkiyle (01-10-2026'dan beri; öncesinde kimlik doğrulaması isteyen bir aktarıcı anahtarınızı alıyor ve kimin profiline baktığınızı anlayabiliyordu). Yalnızca kendi profiliniz hâlâ siz olarak okunur.
- Teslim etmek. Gift wrap'ler alıcının DM aktarıcılarına, yine o ayrı bağlantı üzerinden gider. Bunlardan biri kimlik doğrulaması isterse Herkos, bu amaçla oluşturulmuş ve yalnızca bellekte tutulan bir anahtarla yanıt verir, asla sizinkiyle; cihazdaki her hesabın kendine ait bir anahtarı vardır. Aktarıcı yine de bir oturum boyunca aynı cihazın (aynı IP, aynı geçici anahtar) birkaç zarf gönderdiğini görebilir.
- Büyük e-postalar. 32 KB'tan büyük bir e-postanın şifreli kopyası, alıcılarınki dâhil Blossom sunucularına yüklenir. Yüklemeyi anahtarınızla yetkilendirilmiş olarak yalnızca kendi sunucularınız (Blossom listeniz) alır. Diğer her sunucu onu anonim olarak alır ve bir yetkilendirmede ısrar ederse yukarıdaki aynı geçici anahtarla imzalanmış bir yetkilendirme alır (01-10-2026'dan beri; öncesinde her sunucu anahtarınızı alıyordu). Yalnızca bilinen anahtarları kabul eden bir sunucu onu reddeder ve kopya diğer sunucularda kalır.
- Kendi verileriniz. Posta kutunuzun, etiketlerinizin, ayarlarınızın ve taslaklarınızın eşitlenmesi, bir aktarıcı istediğinde, bir hesap değişimi sırasında bile verinin ait olduğu hesap olarak kimlik doğrular. Kendi aktarıcılarınızda bu, onlara bilmedikleri hiçbir şey söylemez: istekler zaten anahtarınızı adlandırır. Kendi aktarıcı ve Blossom listeleriniz herkese açıktır ve sizi tanıtmadan sorulur; bir e-posta bağlantısında adı geçen aktarıcılar da öyle.
- Okunma durumu ve klasörler (şimdilik) herkese açık üst veridir. Bir e-postayı okundu, yıldızlı, arşivlendi veya taşındı olarak işaretlemek, özel klasör adları dâhil, açık anahtarınıza bağlı şifrelenmemiş bir NIP-32 etiket olayı yayımlar. Size gönderdiği bir e-postanın kimliğini bilen bir gönderici, onunla ne zaman işlem yaptığınızı anlayabilir. Bu etiketleri şifrelemek planlanıyor; o zamana kadar klasör adlarını herkese açık sayın.
- Anlık bildirimler ve zamanlanmış gönderim üçüncü taraf hizmetlerini kullanır.
Push sunucusu (varsayılan olarak
api.nmail.li) açık anahtarınızı, bir bildirim belirtecini ve posta aldığınız zamanı öğrenir; zamanlayıcı DVM açık anahtarınızı ve yayımlaması gereken, hâlihazırda şifreli mesajları öğrenir. İkisi de isteğe bağlıdır vePRIVACY.mdiçinde belgelenmiştir. Bir anlık bildirimin metnini push sunucusu seçer ve Herkos ona yalnızca UnifiedPush onu şifreli olarak teslim ettiğinde (RFC 8291) güvenir; şifrelenmemiş bir yük yalnızca uygulamayı postayı kendisi getirsin diye uyandırır. - Web sürümü anahtarınızı tarayıcıda tutar; bu, anahtar için en zayıf yerdir. Kurulu uygulamalar gizli anahtarınızı işletim sisteminin güvenli deposuna teslim eder (Android Keystore, Windows Kimlik Bilgisi Yöneticisi, libsecret, iOS/macOS anahtar zinciri). Bir tarayıcıda bunların hiçbiri yoktur: anahtar sitenin deposunda durur ve her imzada JavaScript'ten geçer; sayfada çalışan her kodun — tüm sitelere erişimi olan bir tarayıcı eklentisi, uygulamada veya bir bağımlılıkta bir XSS açığı, kurcalanmış bir dağıtım — ve tarayıcı profilini kopyalayan her bilgi hırsızının (infostealer) erişimi içindedir. Kodu bir kez doğruladığınız bir an da yoktur: imzalı bir ikili dosya kurulum sırasında denetlenir, bir web sayfası ise her ziyarette yeni kod sunar. Web sürümüne bir uzak imzalayıcıyla (NIP-46 bunker, Amber) giriş yapın, böylece anahtar tarayıcıya hiç ulaşmaz; ya da onu harcanabilir bir kimlik olarak görün ve gerçek anahtarınızı kurulu bir uygulamada tutun.
- Köprüden gelen posta, ancak köprü kadar güvenilirdir. Herkos, bir köprüden geldiği
belirtilen bir mesajın gerçekten yapılandırdığınız bir köprü (veya varsayılanlardan biri)
tarafından imzalandığını doğrular. Köprünün aktardığı geleneksel
From:adresi hakkında ise hiçbir şeyi doğrulayamaz. - Ekleri işletim sistemi açar. Herkos çalıştırılabilir veya betik dosya türlerini asla başlatmaz ve önizlenemeyen diğer her eki sistemin varsayılan uygulamasına vermeden önce sorar; ancak dosyayı açan uygulama bizim denetimimizin dışındadır.
Desteklenen sürümler
Güvenlik düzeltmeleri yayımlanmış en son sürüme uygulanır. Projenin boyutu göz önüne alındığında eski sürümler sürdürülmez — lütfen bildirmeden önce güncelleyin.