qub'da güvenlik
Yürürlük tarihi: 23 Eylül 2026 Sürüm: 1.1 — uygulama-doğruluk incelemesi
Araştırmacılar için — hızlı başvuru:
- Raporlar nereye gönderilmeli: support@qub.social özne öneki ile
[SECURITY].- Neleri dahil etmelisin: zafiyet, yeniden üretme adımları ve herhangi bir kavramsal kanıt.
- Bizim yanıtımız: Biz alındığını 3 iş günü içinde teyit ederiz ve bir çözümü 90 gün içinde göndermeyi hedefleriz.
- Güvenli Liman: Kurallara uyan iyi niyetli araştırmalara karşı yasal işlem yapmayacağız §12 kapsamında (sana ait olmayan verilere erişim yok, hizmette bozulma yok, elde edilen verilerin sorunu göstermek için gereken süreyi aşmayan şekilde saklanması, bize makul bir ifşa süresi vermek).
Tüm detaylar §12 (Koordine Edilmiş Açıklama) kısmında bulunmaktadır.
Biz Kimiz
qub.social, VSPRY AUSTRALIA PTY LIMITED (ABN 41 631 026 330), Level 38, 71 Eagle Street, Brisbane QLD 4000, Avustralya tarafından işletilmektedir. "qub", "biz", "bize" ve "bizim" ifadeleri bu kuruluşu ifade eder.
Güvenlik iletişimi: [SECURITY] konu öneki ile support@qub.social.
1. Yaklaşımımız
qub güven altyapısıdır. Güvenli değilse ürün değersizdir, bu yüzden güvenlik bir özellik değil — alt yapıdır. Bu sayfa, somut terimlerle, yığınımızı, verilerinizi ve mühürlü içeriğin bütünlüğünü nasıl koruduğumuzu açıklar.
Doğrulanabilir bir zamansal taahhüdün değeri, internetin daha fazlası makine tarafından üretildikçe artar. Doğrulanmış bir depolama işlemi veya şeffaflık günlüğü çivisi, şifreli metnin en geç blok zamanında mevcut olduğunu gösterebilir; mühürlenmiş eser ise içeriğin bütünlüğünü, drand-turu bağlamını ve herhangi bir yazarlık imzasını ayrı olarak kanıtlar. Bu iddiaları ayrı tutmak, bu sayfanın tabi tutulduğu standarttır.
Bize güvenmenizi istemiyoruz. Bize gereken güvenin mümkün olduğunca küçük olmasını tasarlıyoruz ve güvenin gerekli olduğu yerde tam olarak neyin güvenildiğini ve neden olduğunu açıklıyoruz.
Her tasarım kararını yönlendiren üç ilke:
- Sunucunun görebileceği şeyi en aza indirin. Varsayılan tarayıcı mesaj akışında, düz metin ve sarmalayıcı anahtar cihazınızda kalır. Sunucu tarafı Builder mühürleme, anlaşma ortak imzalama ve açıkça etkinleştirilmiş kurtarma farklı güven sınırlarına sahiptir, aşağıda açıklanmıştır. Meta veriyi tuttuğumuz yerlerde, onu seçilen özelliğin ihtiyaç duyduğu ile sınırlıyoruz.
- Yerel olarak sınırlı bir uzlaşma yap. Herhangi bir bileşenin (sunucumuz, e-posta sağlayıcısı, bir drand düğümü) ihlali, henüz açılma zamanına ulaşmamış mühürlenmiş içeriği ortaya çıkarmamalıdır.
- Protokol denetlenebilir hale getirin. Mühürlenmiş eser, kamuya açık kriptografi ile uçtan uca doğrulanabilir. Güvenmeniz gerekmez qub bir şeyi doğrulamak için hizmet qub eser.
2. Tehdit Modeli
2.1 Neye Karşı Korunuyoruz
- Açığa çıkma zamanından önce depolanmış sunucu tarafı verilerimize okuma erişimi kazanan bir saldırgan. Varsayılan özel tarayıcı akışında, metaveri ve opak sarmalanmış byte'ları elde ederler, düz metin veya K değil. Bu koruma, açıkça kurtarma için saklanan bir K'ye, drand turundan sonra kamu/çıplak teslimata veya Builder'a geçici olarak sağlanan düz metne uygulanmaz.
/api/v1/sealve anlaşma iş akışları. - Tarayıcınız ile bizim altyapımız arasındaki trafiği ele geçiren bir saldırgan. TLS, CDN kenarımızda sonlanır; mühürlenmiş veri paketleri iletim öncesinde zaten şifrelenmiştir.
- Depolanmış bir yükle oynayan bir saldırgan. Dış kaplama doğrulaması (mevcut olduğunda), kanonik çözümleme, gövde karması,
qub_idyeniden türetme, yuvarlak bağlama ve isteğe bağlı imzalar, tahriflemeyi doğrulamanın başarısız olmasını sağlar; görüntüleyici bunu işlemekten kaçınır. - Sahte bir yazar e-postasını bir imzalama anahtarına bağlamaya çalışan bir saldırgan. E-posta onayı, hem özel imza anahtarına hem de e-posta gelen kutusuna teslim edilen tek kullanımlık koda sahip olmayı gerektirir.
- İhlal edilmiş bir drand işaretçisi operatörü. Drand ağı, birden fazla bağımsız operatör arasında eşik BLS imzalarını kullanır; bir azınlık erken yayın imzalarını sahteleyemez.
2.2 Korunamadığımız Şey
Sınırlarımız konusunda dürüstüz. qub aşağıdakilere karşı savunma yapamaz:
- Cihazınızı mühürlemeden önce bir tehlike. Yerel keylogger'lar, kötü amaçlı tarayıcı uzantıları veya kilidi açılmış bir cihaza fiziksel erişim, yazım sırasında düz metni yakalayabilir.
- Drand eşiğinin çöküşü. Birden fazla bağımsız kuruluş, bunu zorlaştırmak için drand ağını özel olarak işletiyor, ancak bu kriptografik olarak imkansız değildir: yeterli sayıda operatör işbirliği yaparsa, zaman kilidi anahtarlarını erken türetebilirler.
- Geçerli bir kopyanın serbest bırakma özellikleri. Bir açık/çıplak qub, drand turundan sonra çözülebilir hale gelir. Bir özel/sarmalanmış qub ayrıca K gerektirir; hem depolanan baytları hem de K'yı elde eden herhangi biri turdan sonra çözebilir. Kalıcı depolama ve sabitlenmiş günlük kayıtları, sadece qub'un ürün yüzeyinden çıkarılarak geri çağrılamaz.
- Temel kriptografiyi kıran küresel bir düşman (AES-GCM, BLS12-381 eşleştirme varsayımları, SHA3-256, ML-DSA-65). Eğer bu ilkel yapılar çökerse, kriptografik ekosistem genel olarak daha büyük sorunlarla karşılaşır.
3. İstemci Tarafı Kriptografi
Varsayılan tarayıcı mesaj akışında, içerik şifrelemesi yükleme isteğinden önce gerçekleşir. İki açık yol farklıdır: Builder /api/v1/seal kasıtlı olarak düz metni ve çağrı yapanın oluşturduğu K'yı Worker'a bellek içinde mühürleme için gönderir ve anlaşma hazırlama/ortak imzalama, imzalanmış yapılandırılmış anlaşmayı hizmete gönderir, böylece ikili öğeyi tamamlayabilir. Hiçbir istisna, tarayıcı yolundaki uçtan uca şifreleme ile karıştırılmamalıdır.
3.1 Zaman Kilidi Şifrelemesi
qub tlock kullanır — gelecekteki bir drand beacon turuna anahtarlanmış kimlik tabanlı şifreleme. Şifreleme, drand ağının kamu anahtarını kullanarak tarayıcınızda ilerler; şifre çözme anahtarı, hedef tura ulaşıldığında yalnızca drand ağı tarafından kamuya açık olarak serbest bırakılır. Hiç kimse, bizim de dahil olmak üzere, şifre çözme anahtarını önceden yeniden oluşturamaz.
quicknet zincirini hedefliyoruz:
- 3 saniyelik tur dönemi
- Zincirsiz mod (her tur bağımsızdır)
- BLS12-381 G1 imzaları
- Zincir hash'i
52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971
quicknet zincirinin kamu anahtarı ve genesis zamanı istemciye derlenmiştir. Çalışma zamanında zincir parametrelerini getirmeyiz, bu yüzden kötü niyetli bir düğüm kontrol ettiğimiz bir zinciri değiştiremez.
3.2 Simetrik Şifreleme
tlock şeması bir AES-256-GCM içerik anahtarını sarar. AES-GCM kimlik doğrulamalı şifreleme sağlar: şifreli metindeki tek bir bit çevrilirse, sessizce bozulmuş düz metin üretmek yerine şifre çözme başarısız olur.
3.3 Kanonik Serileştirme
Protokol yapıları, deterministik CBOR (RFC 8949 §4.2 çekirdek deterministik kodlama) kullanılarak serileştirilir. Aynı mantıksal yapıyı kodlayan iki uygulama, özdeş CBOR üretir. Tam mühürlenmiş yükler değil deterministik: tlock ve dış-sarma şifrelemesi taze rastgelelik kullanır. Gövde hash'i ham gövde baytları üzerinde hesaplanır, oysa kanonik kodlama çevresindeki imzalı/iletilen yapıları belirsizlikten uzak yapar.
CBOR kodlayıcısını hem istemci hem de sunucu uygulamalarımız için el ile yazdık, jenerik bir serileştirme kütüphanesine güvenmek yerine — gereksinim doğruluk, ergonomi değil — ve her iki uygulamada da çalışan özellik testleri onların aynı fikirde olduğunu doğrular.
Bir regresyon testi, kanonik ağ formatının protokol-primitif qub_id alan anahtarının ötesinde herhangi bir qub-marka bayt dizisi içermediğini doğrular. Ağ formatı kasıtlı olarak marka-agnostiktir — uyumlu herhangi bir izleyici (bizim veya bir üçüncü tarafın), hangi dağıtımın mühürlediğinden bağımsız olarak kalıcı depolamadan herhangi bir qub'u oluşturabilir. Test, bir gelecek değişikliğinin kazara kalıcı depolamada olduğunda yeniden yazılamayan baytlara bir marka referansı pişirmesini önleyen bir tetikleyicidir.
3.4 Gövde Hash'leme ve Açıklama Öncesi Bütünlük
Her mühürlenmiş yük, ham gövde baytlarının SHA3-256 özetini taşır. Özet, içine bağlanır qub_id ve yazar imzalama etkinleştirildiğinde, V2 imza girişine. Bir görüntüleyici, şifre çözme işleminden sonra bunu yeniden hesaplar ve uyumsuzluğu reddeder.
32 baytlık içerik tanımlayıcısı qub_id protokol sürümü, içerik türü, oluşturulma ve kilit açma zaman damgaları, isteğe bağlı sonuç zaman damgası (veya sıfır işareti), hedef drand turu, gövde hash’i ve isteğe bağlı NFC-normalize edilmiş başlığın SHA3-256’sı kapsayan 108 baytlık bir ön görüntüden türetilir. Bir geçit veya CDN, herhangi bir bağlı alanı tutarlı bir şekilde değiştiremez ve yine de yeniden türetmeyi geçemez. Başlıklar 100 NFC kod noktası ile sınırlıdır ve paylaşılan düşmanca/kontrol kod noktası sınıfı için reddedilir (bidi geçersiz kılmaları, sıfır genişlikli karakterler, tag bloğu, BOM, C0, C1 ve DEL dahil).
3.5 İmzalama (ML-DSA-65)
Yazarlık imzalaması ML-DSA-65 (FIPS 204) kullanır, NIST-standartlaşmış post-kuantum bir imza şeması. İmzalama için post-kuantum bir primitif seçmemizin kasıtlı nedeni, mühürlü içeriğin kalıcı olmasıdır: bugün doğrulayan bir imza, on yıllar sonra, büyük ölçekli kuantum bilgisayarları pratik hale geldikten sonra bile doğrulamaya devam etmelidir.
İmzalama anahtarları tarayıcıda oluşturulur. Yerel gizli anahtar, IndexedDB depolamasından önce çıkarılamaz bir WebCrypto anahtarı altında sarılır. Hesap kapsamlı cihazlar arası kurtarma özelliği kullanılıyorsa, AEAD ile şifrelenmiş taşınabilir bir anahtar bloğu sunucu tarafında depolanır; gizli anahtarın şifrelenmiş metni değiştirilemez hesap kimliğine bağlanır ve servis genel zarfı doğrular, ancak gizli materyali çözemez. Ham özel anahtar baytları sunucuya gönderilmez. Genel anahtarlar ve doğrulama kayıtları doğrulama ve kimlik gösterimi için saklanır.
Aynı tarayıcı içi tlock şifre çözme qub gömme içinde de uygulanır: mühürlü bir qub üçüncü taraf bir sayfada <qub-embed> aracılığıyla oluşturulduğunda, şifre çözme hâlâ izleyicinin tarayıcısındaki gömme iframe'inde gerçekleşir. Gömme güven modelini değiştirmez — düz metin asla bir qub sunucusunda şifresi çözülmez.
3.6 Kamuya Atıf — Katılımcı
Yaratıcı açıkça birini eklemeyi seçmediği sürece mühürlü qub'lar yaratıcısına zincir üstü hiçbir işaret taşımaz. Bir qub mühürlediğinde, referans uygulaması yalnızca tarih seçici adımında "Kamuya atıf" etkinleştirildiğinde bir Author depolama etiketi (imzalama kamu anahtarının 64 karakterlik onaltılık parmak izi) yayar. Düğme kapalıyken — varsayılan — hiçbir Author etiketi yazılmaz ve qub kalıcı depolamada atıfsızdır: depolamada hiçbir şey yüklemeyi handle'ınıza, e-postanıza veya diğer qub'larınıza bağlamaz. Düğme açıkken, parmak izi onay zinciri §6.3 / §10 aracılığıyla @handle'ınıza çözümlenir ve izleyici geri sayımı açıklamadan önce "@{handle} tarafından mühürlendi" gösterir.
Bu, her zaman açık bir Author etiketinin yaratacağı numaralandırma riskine karşı kasıtlı bir korumadır: bir yaratıcının parmak izini öğrenen bir üçüncü taraf, aksi takdirde kalıcı depolamayı etikete göre grep'leyebilir ve o yaratıcının tüm tarihsel çıktısını yeniden oluşturabilir. Katılımcı atıf bu kanalı kapatır — yalnızca yaratıcının atfetmeyi açıkça seçtiği qub'lar kalıcı depolamada bir parmak izi altında görünür.
/u/{handle} profil sayfası bir doğrulanmış-kimlik kartıdır — handle, isteğe bağlı görünen ad + URL, "doğrulanmış e-posta" rozeti (adres yok) ve kriptografik parmak izinin kısa biçimi. Bir yaratıcının qub'larını listelemez. Bir yaratıcıdan belirli bir qub'u görmek isteyen ziyaretçiler, o qub'un teslim URL'sini doğrudan takip eder.
3.7 Dış Şifreleme Sarmalayıcı
Zaman kilidi şifrelemesinin matematiksel olarak mümkün olmasının ardından—bağlı tur için drand imzası yayınlandıktan sonra—yalnızca kanonik zaman kilidi katmanı, bir indeksleyicinin keşfedilebilir qub'ları toplu olarak çözmesini sağlar. Özel teslimat, zaman kilidi ile şifrelenmiş baytların etrafına ek bir simetrik katman ekleyerek bu kanalı kapatır (Protokol §13). Genel teslimat, bildirim, gömme ve keşif bağlantılarının gizli bir parça olmadan çalışabilmesi için kasayı kasıtlı olarak atlar.
Sarmalayıcı, NIST-standartlaşmış kimlik doğrulamalı bir şifre olan AES-256-GCM'i kullanır ve her qub için tarayıcınızın CSPRNG'si tarafından üretilen taze bir 256-bit anahtar K kullanır. K, qub'un qub_id'sine kimlik doğrulamalı ek veri olarak bağlanır, böylece bir qub'dan bir anahtar farklı bir qub'u şifresini çözmek için yeniden kullanılamaz.
K, varsayılan özel tarayıcı akışında sunucularımıza asla ulaşmaz. Paylaşım bağlantısının URL parçasına kodlanmıştır (https://qub.social/c/<tx_id>#<base64url(K)>). Tarayıcılar URL parçalarını sunuculara iletmez—RFC 3986 parçayı isteğin dışına yerleştirir—bu nedenle qub.social, depolama ağ geçitleri, CDN'ler ve istek izleme, bu akışta K konusunda kördür. Saklanan OuterWrapper tanınabilir yapılandırılmış CBOR'dur, ancak doğrulanmış şifreli metin alanı içteki kısmı gizler SealedQub yapı ve K olmadan açılamaz.
Net sonuçlar:
- qub.social, yalnızca depolanan verilerden varsayılan özel tarayıcı mühürlerini çözemez. Bir veri deposu ihlali, K olmadan opak şifreli metne ulaşır. Genel qublar ve kurtarmaya izin verilen qublar, tasarım gereği farklı maruziyete sahiptir.
- Bir kurtarma kanalına kayıt olunmadan parça kaybı geri alınamaz. Eğer özel bir bağlantıyı parçacık olmadan kaydederseniz ve kurtarmayı etkinleştirmediyseniz, qub o bağlantı üzerinden okunamaz hale gelir. Bu nedenle, seal akışı açık bir şekilde "bu URL'yi kaydet" bildirimi sunar.
- Katılım tabanlı kurtarma. Bir qub için yaratıcı yaşam döngüsü e-postalarına kaydolduğunuzda VE e-posta doğrulanmış kimliğinizle eşleştiğinde, yüklemeyi K ile kabul ediyor, tam teslim URL’sini kimliğinizin mühürlenmiş geçmiş kaydında saklıyor ve bunu mühür-onay e-postasındaki bağlantı olarak kullanıyoruz. Bu takas — bazı uçtan uca saflık karşılığında sunucu tarafı bir kurtarma kanalı — yalnızca açıkça opt-in yapıldığında ve yalnızca o qub için geçerlidir. Varsayılan tutum kripto-şifrelemeyle imha etmektir.
Worker'ın sunucu tarafı /api/v1/seal uç noktası (yapay zeka ajanları ve diğer API çağırıcıları tarafından kullanılır), çağırıcının K'yı bir CSPRNG ile üretmesini, yerel olarak saklamasını ve wrapper_key_b64url olarak sağlamasını gerektirir. Worker, bu açıkça güvenilen yolda hem düz metni hem de K'yı zorunlu olarak bellekte görür, ancak hiçbirini kalıcı kılmaz. Zorunlu bir Idempotency-Key, kaybolan bir yanıtın ikinci bir faturalandırılan qub oluşturmasını önler; bu sırada çağırıcının sakladığı K, yeniden oynatılan parçasız URL ile birleştirilebilir. Bu, varsayılan tarayıcı yolundan farklıdır; orada yaratıcı kurtarmayı açıkça etkinleştirmedikçe K, Worker'a asla ulaşmaz.
4. İletim ve Uç
4.1 TLS
Tarayıcı trafiği qub'a Cloudflare kenarında HTTPS üzerinden sunulmaktadır. Yanıtlar HTTP Katı Taşıma Güvenliği ayarlarmax-age=63072000; includeSubDomains; preload). Tam olarak müzakere edilen TLS sürümü ve şifreleme paketi, uygulama kodu tarafından belirtilmek yerine aktif edge yapılandırması tarafından yönetilir. Ayrı olarak erişilebilir bir origin sunucusu sağlamıyoruz.
4.2 İçerik Güvenliği
Derlenmiş istemci, katı içerik-türü ve önbellek başlıkları ile sunulur. SPA kabuğu tek bir kaynaktır. Analitik veya reklam için üçüncü taraf betikleri gömmüyoruz. Üründeki iki üçüncü taraf temas noktası dar bir şekilde kapsamlıdır: satın alma akışı, Stripe tarafından barındırılan ödeme (https://checkout.stripe.com/…) için tam sayfa yönlendirmesi ile SPA'yı tamamen terk eder — Stripe'ın UI'si bizim kaynağımızda asla yürütülmez ve kart verisini asla görmeyiz — ve mühürleme akışı, gizliliği koruyan bir CAPTCHA alternatifi olan Cloudflare'in Turnstile widget'ını yükler, Cloudflare onu kendi sandboxed iframe içinde oluşturur. Hiçbir taraf sayfanın geri kalanını okuyamaz.
The qub gömülü iframe (şuradan sunulmuş qub.social/embed/{tx_id} ve üçüncü taraf sitelere yüklendi embed.js) kendi İçerik-Güvenlik-Politikasını taşır. Onun connect-src izin verilenler listesi 'self', https://qub.social, https://arweave.net, https://ar-io.dev, https://permagate.io, https://api.drand.sh, ve https://drand.cloudflare.com. iframe şu şekilde çalışır sandbox="allow-scripts allow-top-navigation-by-user-activation" (değil allow-same-origin): ana sayfa DOM'unu okuyamaz ve ana sayfayı yalnızca bir kullanıcı eyleminden sonra gezinebilir.
4.3 CORS ve Getirme Kapsamı
Tarayıcı istemcisi yalnızca aşağıdakilere getirme istekleri yapar:
- Kendi API'miz (
api.qub.socialve sahneleme eşdeğerleri) - Depolama geçitleri (salt okunur, sarmalanmış-özel veya çıplak-genel byte alımı için — §3.6)
- drand beacon uç noktaları (salt okunur, keşif zamanı tur imzaları için)
Gömmenin hedefleri CSP'si tarafından uygulanır. Ana SPA'nın amaçlanan hedefleri kod ve yapılandırmada sabittir ve tarayıcı ve entegrasyon kontrolleriyle test edilir; Alt Kaynak Bütünlüğü ağ hedefi kontrolü değildir.
Gömme, depolanan baytları izin verilen qub/storage kaynakları üzerinden alır, özel yükleri URL parçasından aldığı K ile tarayıcıda açar ve iki izin verilen drand kaynağından açılma zamanı tur imzalarını alır. Ana SPA, dört uç noktalı yedekleme setini kullanır config/drand-endpoints.json (drand.cloudflare.com, api.drand.sh, api2.drand.sh, ve api3.drand.sh) böylece bir uç nokta arızası açığa çıkmayı engellemez. Gömülü CSP, açık listesindeki bağlantılar dışındaki bağlantıları reddeder.
5. Sunucu Tarafı Altyapı
5.1 Sunucusuz Uç
API'miz tamamen uç noktadaki yönetilen sunucusuz bir çalışma zamanında çalışır. VM'ler, konteynerler ve yönettiğimiz kalıcı sunucu süreçleri yoktur. Bu, sorumlu olduğumuz saldırı yüzeyini önemli ölçüde azaltır: yamamamız gereken bir OS, bir web sunucusu veya bir uygulama çalışma zamanı işletmiyoruz.
Ayrı bir genel-CORS ara yazılımı uygulanır Access-Control-Allow-Origin: * aşağıda uygulanan yol setine: /embed.js, /embed/v1.js, her şey altında /embed/; /api/v1/telemetry; /api/v1/openapi.json; her şey altında /api/v1/qub/ (baytlar, meta veriler, kanıt, katılım, bildirim ve push alt rotaları dahil); altındaki her şey /api/v1/log/; genel olarak arama işlemlerini ele alır /api/v1/handle/; ve kamusal avatar altında okur /api/v1/identity/avatar/. Kalkış öncesi izinleri GET, POST, ve OPTIONS ile Content-Type istek başlığı. Bu önek tabanlı yüzey, gömücünün şu anda yaptığı çağrılardan daha geniştir, bu yüzden bu öneklerin altındaki her işleyici kendi doğrulamasını, kimlik doğrulamasını, hız sınırlarını ve kötüye kullanım kontrollerini uygulamaya devam etmelidir. Diğer API yolları qub.social-restricted CORS politikasını korur.
5.2 Depolama
- Meta veri ve koordinasyon depoları kimlik ve doğrulama kayıtlarını, yetkileri ve fatura referanslarını, API anahtarı kayıtlarını, reddetme listesi girişlerini, oturumları, idempotentlik durumunu, kuyrukları ve hız sınırı / eşzamanlılık durumunu tutmak. Farklı tutarlılık ihtiyaçları için tek bir evrensel depo yerine KV, D1 ve Kalıcı Nesneler kullanılır.
- Nesne depomuz aynı zamanda bir dayanıklılık alt tabakasıdır. Yükleme, şeffaflık-günlük yaprakları ve koordinat anahtarlı Merkle düğümleri, çapa malzemesi, yapılandırılmış olay günlükleri ve yanıt/metadata önbellekleri tarafından onaylanan tam sarmalanmış veya çıplak qub baytlarını tutar.
- Kalıcı kamu depolama şeffaflık-günlük çapa noktalarını ve T3 yolu veya ertelenmiş yayınlama için bireysel qub işlemlerini tutar. Biz o ağı işletemiyoruz. Özel tarayıcı yükleri, sahibi K'ye sahip olmadıkça orada şeffaf kalır; halka açık/çıplak yükler kasıtlı olarak o ek bağlantı-yetenek katmanına sahip değildir.
Varsayılan tarayıcı mesaj akışı, qub altyapısında düz metni saklamaz. Oluşturucu /api/v1/seal metin düzeyi ve K'yı bellekte işler ancak hiçbirini saklamaz. Pact hazırlama aşaması, imzalanmış yapılandırılmış pact'i, birlikte imzalanana, geri çekilene veya süresi dolana kadar saklamak zorundadır. İsteğe bağlı iyileştirme, daha sonra kurtarılabilmesi için bir teslimat yeteneğini (tam fragman taşıyan bağlantıyı) saklar. Bu nedenle, tüm depolama katmanını “yalnızca meta veri” olarak tanımlamıyoruz.
5.3 Sırlar
Gizli bilgiler (cüzdan imzalama, sağlayıcı belirteçleri ve HMAC anahtarları) kaynak kontrol yerine platform gizli/ortam bağlamaları aracılığıyla sağlanır. Çalışma zamanı bileşenleri yalnızca ihtiyaç duydukları bağlamaları alır. Döndürme ve örtüşme prosedürleri bileşenlere özgüdür; tek bir evrensel otomatik veya denetlenen döndürme mekanizması iddia etmiyoruz.
5.4 Günlükleme ve Telemetri
Her API isteği üzerine yapılandırılmış JSON günlükleri yazılır ve X-Request-Id yanıt başlığında bir ilişkilendirme kimliği yüzeylenir. İstemci telemetrisi anonimdir — cihaz tanımlayıcı yok, IP adresi yok, içerik önizlemesi yok. Olaylar bellekte tamponlanır ve en iyi çaba temelinde akıtılır; başarısız bir akıtma atılır, yeniden denenmez. Telemetri, ürünü etkilemeden ağ katmanında devre dışı bırakılabilir olacak şekilde tasarlanmıştır.
6. Kimlik Doğrulama
6.1 Sihirli Bağlantı Oturum Açma
Oturum açma, e-posta gelen kutunuza iletilen tek kullanımlık, HMAC imzalı bir belirteç kullanır. Bağlantı 15 dakika geçerlidir ve kullanım atomik olarak talep edilir, bu nedenle eşzamanlı veya tekrar edilen kullanım kapalı olarak başarısız olur. Başarılı olursa tarayıcı opak bir yanıt alır. __Host-qub_session ile kurabiye Secure, HttpOnly, SameSite=Strict, ve Path=/ özellikler.
Oturumların 30 günlük boşta kalma sınırı ve 90 günlük mutlak sınırı vardır, 24 saat sonra döner ve 120 saniyelik kayıp yanıt tolerans süresi için yalnızca hemen önceki nesli kabul eder. Hassas hesap değişiklikleri, önceki 10 dakika içinde kimlik doğrulaması gerektirir. HMAC imzalama sırrı bir platform bağlamıdır; yalnızca meta veriyi okuma, kendi başına geçerli bir jeton üretmez.
6.2 API Anahtarları (Geliştirici Katmanı)
Geliştirici API anahtarları kolay tanınma ve grepability için qub_sk_ önekini kullanır. Her anahtar:
- Bir hesaba, kapsamlarına ve isteğe bağlı bir IP CIDR izin listesine bağlıdır
- Ham formda bir kez gösterilir; kalıcı kayıtlar onun SHA-256 karma değerini saklar, taşıyıcı gizli bilgisini değil
- Eski anahtarın yedeğe çözündüğü bir saatlik geçiş haritası ile döndürülebilir
- Bağımsız kota ve oran sınırı durumuna sahiptir
- Hiçbir zaman tamamen kaydedilmez; kayıtlar yalnızca anahtar tanımlayıcısını tutar
Yönetici anahtar yönetimi uç noktaları ayrı bir yönetici kimlik bilgisinin arkasında kapatılır.
6.3 E-posta Onayı (Yazarlık İmzalaması)
Bir e-posta adresini bir imzalama anahtarına bağlamak şunları gerektirir:
- Özel imzalama anahtarına sahip olma (bir meydan okumayı imzalarsınız)
- E-posta gelen kutusuna sahip olma (e-posta ile teslim edilen 6 haneli bir kodu girersiniz)
Tek başına ikisi de yetersizdir. İptal kendi hesabınızda imzalı bir kayıttır ve hemen yürürlüğe girer; onayı getiren izleyiciler iptal edilmiş durumu görür ve buna göre görüntüler.
7. Ödemeler
Kart girişi ve işleme, Stripe tarafından barındırılan ödeme ekranı içinde çalışır. Kart numaralarını, son kullanma tarihlerini veya CVC’leri asla almayız. Ancak Stripe müşteri ve abonelik kimlik bilgilerini, abonelik durumunu ve hak/API anahtarı kayıtlarındaki dönem verilerini saklarız, böylece erişim, yenilemeler, ölçümleme, iptaller ve iadeler uzlaştırılabilir. Stripe'ın gizlilik ve güvenlik beyanları, ödeme verilerinin işlenmesini yönetir.
Mühürleme uç noktası, yetki kaydını cihaz tanımlayıcısıyla ve oturum açmış kullanıcılar için bağlı kimlikle çapraz kontrol eder. Bir yetki, kullanıcı sihirli bağlantı oturum açma yoluyla açıkça geri yüklemeden cihazlar arasında yeniden kullanılamaz.
8. Kötüye Kullanım Direnci
8.1 Bot Tespiti
Mühürleme akışı, izleme için çerez kullanmayan ve reklam için parmak izi almayan gizliliği koruyan bir CAPTCHA alternatifi tarafından kapatılır. Başarısız bir meydan okuma, herhangi bir mühürleme tarafı işleme başlamadan önce uç Worker'ımız tarafından reddedilir.
8.2 Hız Sınırlaması
Hız sınırları birden çok katmanda uygulanır:
- Mühürleme, okuma ve kimlik doğrulama uç noktalarında IP başına ve anahtar başına sınırlar
- Sihirli bağlantı istekleri için e-posta başına sınırlar (posta kutusu taşmasını önler)
- Pakt davet e-postaları için karşı taraf başına sınırlar (UTC günü başına alıcı adresi başına on, birincil spam aktarımı azaltıcı; dürüst paktlar üst sınıra neredeyse hiç yaklaşmaz)
- Telemetri gönderimi için IP başına sınırlar
Sayaçlar ve atomik iddialar, uç noktanın tutarlılık gereksinimlerine göre KV, Kalıcı Nesneler ve platform hız sınırı bağlamları arasında dağıtılır. Hız sınırına takılan istekler 429 döner; yeniden deneme penceresi hesaplayabilen uç noktalar şunları içerir Retry-After.
8.3 İçerik Moderasyonu
Varsayılan tarayıcı-yükleme yolu gövdeyi tarayamaz: yalnızca istemci tarafından mühürlenmiş eseri alır. Builder /api/v1/seal güzergah düz metni geçici olarak görür ve anlaşma aşaması yapılandırılmış terimleri sonlandırmaya kadar tutar, ancak bu güven istisnaları genel bayt-görmez yükleme yolunu bir içerik tarayıcısına dönüştürmez. Operasyonel moderasyon bir reddetme listesi izleyici katmanında: bir engellenmiş qub, saklanan yük hala erişilebilir olsa bile izleyicimiz tarafından reddedilir. Engelleme, zaten yayınlanmış kalıcı baytları, şeffaflık-günlüğü kayıtlarını veya kalıcı ağ verilerini geri çekmez.
Kötüye kullanım raporları, raporlayıcının IP'sinin tek yönlü bir hash'i kullanılarak hız sınırlandırılır; bu amaçla IP'leri açık olarak saklamıyoruz.
9. Tedarik Zinciri ve Yapım Bütünlüğü
9.1 Araç Zinciri Sabitlemesi
Derleyici ve çalışma zamanı sürümleri depo yapılandırmasında sabitlenmiştir ve bağımlılıklar, gönderilmiş kilit dosyaları aracılığıyla çözülür. CI, üretilmiş dosyanın güncelliğini ve tekrarlanabilirliğe duyarlı değişmezlikleri kontrol eder. Desteklenen tüm makinelerde her temiz derlemenin bit-bit aynı olduğunu iddia etmiyoruz.
9.2 Lintler ve Statik Analiz
Çalışma alanı, en sıkı lint gruplarımızı deny seviyesinde etkinleştirir. CI her uyarıyı — belgeleme bağlantı uyarıları dahil — bir yapım başarısızlığı olarak ele alır. Bu kasıtlıdır: lint sıkılığını ince regresyonlar için bir tetikleyici olarak kullanıyoruz.
9.3 CI Kapıları
CI iş akışı, biçimlendirme ve sıkı linter kontrollerini; Rust, WASM/tarayıcı, Worker, embed ve API testlerini; tür kontrolünü; kod kapsamını; mutasyon/kalıp kontrollerini; bağımlılık ve iş akışı statik analizini; i18n anahtarları, kapsam, sapma ve zararlı karakter kontrollerini; üretilmiş doküman/API/bilgi tabanı güncelliğini; doküman envanteri ve dahili bağlantı kontrollerini; stil sayfası ve paket bütçelerini; ve OpenAPI doğrulamasını kapsar. Bazı maliyetli mutasyon işleri her push sırasında çalıştırılmak yerine planlanmıştır.
Tek bir gerekli ci Herhangi bir gerekli iş başarısız olursa roll-up kırmızı olarak kalır. Korunan dal ve dağıtım iş akışları, daha küçük bir güvenlik kapısını çoğaltmak yerine bu sonucu kullanır.
9.4 Mutasyon Testi
Haftalık bir iş, güvenlik açısından kritik saf modüllere karşı mutasyon testi yürütür: hash'leme, kanonik CBOR, mühürleme, kilit açma, ağ formatı yeni türleri, protokol tipi doğrulayıcılar ve handle ad alanı. Mutasyon testi "test paketimiz incelikle yanlış kodu yakalıyor mu?" sorusuna yanıt verir — bir mutasyon uygulanmış uygulama hâlâ tüm testleri geçiyorsa, bir test kapsamı boşluğumuz olduğunu biliyoruz ve bunu ele alıyoruz.
9.5 Git Hooks
Yerel hook'lar (pre-commit, pre-push), regresyonların geliştiricinin makinesinden çıkmadan önce yakalanması için CI kapılarını yansıtır. Hook'lar bir depo betiği aracılığıyla yüklenir; iş akışımızda atlanmazlar ve atlanırsa CI yetkili kapıdır.
10. Test
Güvenlik açısından kritik kod üç tür test taşır:
- Birim testleri, protokol şartnamesinden türetilen test vektörleri dahil bilinen girdiler üzerinde beklenen davranışı doğrular.
- Özellik testleri, binlerce keyfi girdi üretir ve değişmezleri doğrular: kanonik CBOR gidiş dönüşleri, imza doğrulama gidiş dönüşleri, e-posta bağlama yüklemleri, pakt onaylama determinizmi.
- Çapraz uygulama testleri, istemci ve sunucu uygulamalarımızın kanonik kodlamalarda bayt-bayt aynı fikirde olduğunu doğrular. Bu, iki uygulama arasındaki sapmayı üretime ulaşmadan önce yakalar.
11. Dal ve Yayın Hijyeni
Özellik dalları ilerler staging sadece Bir Kapı 1 çekme isteği aracılığıyla: gerekli ci yeşil, çözülmemiş değişiklik talebi yok, birleştirme çatışması yok ve temiz gözden geçirilmiş bir ağaç; birleştirme sıkıştır ve sil şeklindedir. main sadece Kapı 2'den ilerler staging → main pull request ve birleştirme commit'i ile ataları korur. Doğrudan dal gönderimleri yayın iş akışı değildir.
Staging ve üretim dağıtımları, ilgili korumalı alanlardan tetiklenir staging ve main CI'den sonra dal durumları. Pull-request kodu ve fork kimlik bilgileri dağıtım gizli bilgilerini almaz.
Dağıtım iş akışlarında kullanılan sırlar, CI platformumuz tarafından dağıtım ortamına kapsamlandırılır. Fork'lardan çekme isteği iş akışlarına kullanılabilir değildirler.
12. Koordineli Açıklama
qub'da bir güvenlik açığı bulduğunuza inanıyorsanız, hızlı bir şekilde duymak istiyoruz ve raporu profesyonelce ele almayı taahhüt ediyoruz.
support@qub.socialadresine[SECURITY]konu öneki ile e-posta gönderin.- Güvenlik açığını, çoğaltma adımlarını ve herhangi bir kavram kanıtını açıklayın.
- Kamuya açıklamadan önce bize makul bir açıklama penceresi (genellikle 90 gün) verin.
- Size ait olmayan verilere erişmeyin, diğer kullanıcılar için hizmeti bozmayın veya araştırma sırasında elde edilen verileri sorunu göstermek için gereken süreden öteye saklamayın.
Üç iş günü içinde teslim alındığını onaylıyoruz ve soruşturduğumuz sürece sizi bilgilendiriyoruz. Onayınızla raporlayıcıları yayın notlarında kredilendiriyoruz.
12.1 Güvenli Liman
Araştırmanız yukarıdaki kuralları takip ederse (iyi niyetli soruşturma, diğer kullanıcılara veya hizmete zarar yok, makul açıklama penceresi), size karşı yasal işlem yapmayacağız ve kanun yaptırımından bunu yapmasını istemeyeceğiz. Çalışmanızı yetkili test olarak ele alıyoruz ve böceği bulan kişinin başkası değil siz olmasını tercih ediyoruz.
Bu Güvenli Liman şunlara uygulanır:
- Canlı qub.social hizmeti üzerine araştırma (bunun için yayınladığımız test fixture'larında değil).
- Yayımlanan ikilerimizin ve açık kaynak qub-core / qub-app crate'lerinin tersine mühendisliği.
- qub'u etkileyen herhangi bir güvenlik açığı sınıfı — protokol, uygulama, altyapı, tedarik zinciri.
qub ekibi üyelerinin sosyal mühendisliğine, hizmet reddi testlerine veya sorunu göstermek için gerekenin ötesinde diğer kullanıcıların verilerine erişmeye uygulanmaz. Bir şeyin Güvenli Liman içinde olup olmadığından emin değilseniz, aynı [SECURITY] konu önekini kullanarak önce sorun.
13. Dürüst Sınırlamalar
Güvenlik bir uygulamadır, bir durum değil. Bazı sınırlamaları doğrudan adlandırmaya değer:
- Küçük bir ekibiz. İnceleme derinliğimiz, büyük bir kuruluşun adanmış uygulama güvenliği işleviyle eşleşmiyor. Sıkı otomatik kapılar ve minimum saldırı yüzeyi ile telafi ediyoruz, ancak yanılmazlık iddia etmiyoruz.
- Kalıcı depolamanın kalıcılığı tek yönlü bir kapıdır. Bir hata, mühürlü içeriğin amaçlananın erken şifresinin çözülmesine neden olursa, geri alamazsız. Mühürleme akışını orantılı özenle ele alıyoruz.
- drand ağı bir dış bağımlılıktır. drand'ın felaket bir başarısızlığı her qub'un açıklama davranışını etkileyecektir. drand sağlığını izliyoruz ve gerekliyse zincir geçişi için yedek belgelere sahibiz. 2 yıldan uzun kilit açma tarihleri için, mühürleme zamanı onay modalı açık bir açıklama gösterir: uzun ufuklu qub'lar drand zincir dayanıklılığına bağlıdır ve gelecekteki bir drand zincir geçişi qub'u açmak için kurtarma adımları gerektirebilir. 5 yıldan uzun kilit açma tarihleri için, mühür ilerlemeden önce bu riski okuduğunuzu ve kabul ettiğinizi onaylayan ekstra bir kutu işaretlemelisiniz.
- Güvendiğimiz kriptografik primitifler standardize edilmiş ve geniş çapta gözden geçirilmiştir, ancak kriptografi gelişir. Seçimimiz olduğu yerlerde (post-kuantum imzalama, kimlik doğrulamalı şifreleme), daha muhafazakar seçeneği seçiyoruz.
14. Bu Sayfadaki Değişiklikler
Maddi değişiklikler, üstteki yürürlük tarihi güncellenerek not edilir. Bir değişiklik somut bir güvenlik iyileştirmesini yansıttığında, kamu değişiklik günlüğünde kısaca açıklarız. Bir değişiklik bir politika netleştirmesini yansıttığında, neyin ve neden değiştiğini açıklarız.
Bu sayfadaki herhangi bir konu için sorular için, [SECURITY] konu öneki ile support@qub.social adresine e-posta gönderin.
15. Değişiklik Günlüğü
| Sürüm | Yürürlük tarihi | Özet |
|---|---|---|
| 1.1 | 23 Eylül 2026 | Uygulanan sistemle kriptografik iddialar, teslimat modları, depolama, CSP, oturumlar, API anahtarları, ödemeler, CI ve sürüm iş akışını uzlaştırdı. |
| 1,0 | 2 Mayıs 2026 | İlk yayın. |