Özet #
Güven belirteçleri, bir kaynağın güvendiği bir kullanıcıya kriptografik belirteçler vermesini sağlar. Belirteçler, kullanıcının tarayıcısı tarafından saklanır. Tarayıcı, kullanıcının gerçekliğini değerlendirmek için belirteçleri başka bağlamlarda kullanabilir.
Trust Token API, bir bağlamdaki bir kullanıcının güveninin, kullanıcıyı tanımlamadan veya iki kimliği birbirine bağlamadan başka bir bağlama iletilmesini sağlar.
API’yi bizim ile deneyebilirsiniz gösteriVe belirteçleri incelemek Chrome Geliştirici Araçları’nda Ağ Ve Başvuru sekmeler.
Neden Güven Jetonlarına ihtiyacımız var? #
Web’in, bir kullanıcının insan gibi davranan bir bot veya gerçek bir kişiyi veya hizmeti dolandıran kötü niyetli bir üçüncü taraf değil, söylediği kişi olduğunu gösteren güven sinyalleri oluşturma yollarına ihtiyacı var. Dolandırıcılığa karşı koruma özellikle reklamverenler, reklam sağlayıcılar ve CDN’ler için önemlidir.
Ne yazık ki, güvenilirliği ölçmek ve yaymak için mevcut birçok mekanizma – örneğin bir siteyle etkileşimin gerçek bir insandan olup olmadığını anlamak için – parmak izi almak için de kullanılabilen tekniklerden yararlanır.
API, gizliliği korumalı ve bireysel kullanıcı takibi olmaksızın siteler arasında güvenin yayılmasını sağlamalıdır.
Trust Tokens teklifinde neler var? #
Web, sahtekarlığı ve istenmeyen e-postaları tespit etmek için güven sinyalleri oluşturmaya dayanır. Bunu yapmanın bir yolu, kullanıcı başına küresel, siteler arası tanımlayıcılarla göz atmayı izlemektir. Gizliliği koruyan bir API için bu kabul edilemez.
tekliften açıklayıcı:
Bu API, üçüncü taraf bağlamlarında erişilebilen “Gizlilik Geçişi” tarzı kriptografik belirteçler için yeni bir kaynak başına depolama alanı önerir. Bu belirteçler kişiselleştirilmemiştir ve kullanıcıları izlemek için kullanılamaz, ancak kriptografik olarak imzalanmıştır, bu nedenle taklit edilemezler.
Bir kaynak, kullanıcıya güvendikleri bir bağlamda olduğunda, tarayıcıya, daha sonra kullanıcının aksi takdirde bilinmeyeceği veya daha az güvenileceği bir bağlamda “harcanabilecek” bir dizi belirteç verebilirler. En önemlisi, belirteçler birbirinden ayırt edilemez ve web sitelerinin kullanıcıları onlar aracılığıyla izlemesini engeller.
Ayrıca, tarayıcının giden istekleri belirli bir belirteç kullanımına bağlı anahtarlarla imzalaması için bir uzatma mekanizması öneriyoruz.
Örnek API kullanımı #
Aşağıdaki uyarlanmıştır API açıklayıcısındaki örnek kod.
Bir kullanıcının bir haber sitesini ziyaret ettiğini düşünün (publisher.example
) üçüncü taraf bir reklam ağından reklam yerleştiren (foo.example
). Kullanıcı daha önce güven belirteçleri yayınlayan bir sosyal medya sitesi kullanmıştır (issuer.example
).
Aşağıdaki dizi, güven belirteçlerinin nasıl çalıştığını gösterir.
1. kullanıcı ziyaretleri issuer.example
ve hesap etkinliği veya bir CAPTCHA sınamasını geçmek gibi siteyi gerçek bir insan olduklarına inandıran eylemler gerçekleştirir.
2. issuer.example
kullanıcının bir insan olduğunu doğrular ve kullanıcının tarayıcısına bir güven belirteci vermek için aşağıdaki JavaScript’i çalıştırır:
fetch('https://issuer.example/trust-token', {
trustToken: {
type: 'token-request',
issuer: 'https://issuer.example'
}
}).then(...)
3. Kullanıcının tarayıcısı, güven belirtecini depolar ve onunla ilişkilendirir. issuer.example
.
4. Bir süre sonra, kullanıcı ziyaret eder publisher.example
.
5. publisher.example
kullanıcının gerçek bir insan olup olmadığını bilmek istiyor. publisher.example
tröstler issuer.example
böylece kullanıcının tarayıcısının o kaynaktan geçerli belirteçleri olup olmadığını kontrol ederler:
document.hasTrustToken('https://issuer.example');
6. Bu, çözülen bir söz verirse true
bu, kullanıcının belirteçleri olduğu anlamına gelir issuer.example
Bu yüzden publisher.example
bir jetonu kullanmayı deneyebilir:
fetch('https://issuer.example/trust-token', {
trustToken: {
type: 'token-redemption',
issuer: 'https://issuer.example',
refreshPolicy: {none, refresh}
}
}).then(...)
Bu kod ile:
- Kurtarıcı
publisher.example
tazmin ister. - İtfa başarılı olursa, ihraççı
issuer.example
bir noktada bu tarayıcıya geçerli bir belirteç verdiklerini gösteren bir kullanım kaydı döndürür.
7. tarafından iade edilen söz bir kez fetch()
çözüldüğünde, kullanım kaydı sonraki kaynak taleplerinde kullanılabilir:
fetch('https://foo.example/get-content', {
trustToken: {
type: 'send-redemption-record',
issuers: ['https://issuer.example', ...]
}
});
Bu kod ile:
- Kullanım kayıtları, istek başlığı olarak dahil edilir
Sec-Redemption-Record
. foo.example
kullanım kaydını alır ve olup olmadığını belirlemek için kaydı ayrıştırabilir.issuer.example
bu kullanıcının bir insan olduğunu düşündü.foo.example
buna göre cevap verir.
Bir web sitesi size güvenip güvenmeyeceğini nasıl anlayabilir?
Bir e-ticaret sitesinde alışveriş geçmişiniz, bir lokasyon platformunda check-in işlemleriniz veya bir bankada hesap geçmişiniz olabilir. Sertifika veren kuruluşlar, ne kadar süredir bir hesabınız olduğu gibi diğer faktörlere veya sizin gerçek bir insan olma olasılığınıza olan güvenini artıran diğer etkileşimlere (CAPTCHA’lar veya form gönderme gibi) de bakabilir.
Güven belirteci verme #
Kullanıcı, aşağıdakiler gibi bir güven belirteci veren kuruluş tarafından güvenilir kabul edilirse: issuer.example
veren kuruluş, kullanıcı için güven belirteçlerini bir fetch()
ile istemek trustToken
parametre:
fetch('issuer.example/trust-token', {
trustToken: {
type: 'token-request'
}
}).then(...)
Bu, bir uzantısını çağırır Gizlilik Geçişi kullanarak ihraç protokolü yeni kriptografik ilkel:
-
Olarak bilinen bir dizi sözde rastgele sayı üretin. hiçlik.
-
Nonce’ları körleştirin (yayınlayanın içeriklerini görememesi için kodlayın) ve isteğe bir
Sec-Trust-Token
başlık. -
Sağlanan uç noktaya bir POST isteği gönderin.
Bitiş noktası şununla yanıt verir: kör jetonlar (kör olmayanlar üzerindeki imzalar), ardından belirteçlerin körlüğü kaldırılır ve ilişkili olmayanlar ile birlikte tarayıcı tarafından güven belirteçleri olarak dahili olarak depolanır.
Güven belirteci kullanımı #
Bir yayıncı sitesi (örneğin publisher.example
yukarıdaki örnekte), kullanıcı için kullanılabilir güven belirteçleri olup olmadığını kontrol edebilir:
const userHasTokens = await document.hasTrustToken('issuer.example/trust-token');
Kullanılabilir belirteçler varsa, yayıncı site bir kullanım kaydı almak için bunları kullanabilir:
fetch('issuer.example/trust-token', {
...
trustToken: {
type: 'token-redemption',
refreshPolicy: 'none'
}
...
}).then(...)
Yayıncı, bir yorum yayınlama, bir sayfayı beğenme veya bir ankette oylama gibi bir güven belirteci gerektiren isteklere, fetch()
aşağıdaki gibi arayın:
fetch('https://foo.example/post-comment', {
...
trustToken: {
type: 'send-redemption-record',
issuers: ['issuer.example/trust-token', ...]
}
...
}).then(...);
İtfa kayıtları bir olarak dahil edilmiştir Sec-Redemption-Record
istek başlığı
Gizlilik hususları #
Belirteçler ‘bağlanamaz’ olacak şekilde tasarlanmıştır. Bir yayıncı, kullanıcılarının hangi siteleri ziyaret ettiğine ilişkin toplu bilgileri öğrenebilir, ancak düzenleme ile geri ödeme arasında bağlantı kuramaz: Bir kullanıcı bir belirteci kullandığında, veren kuruluş, belirteci oluşturduğu diğer belirteçlerden ayıramaz. Bununla birlikte, güven belirteçleri şu anda bir boşlukta mevcut değil: bir verenin şu anda – teoride – üçüncü taraf tanımlama bilgileri ve gizli izleme teknikleri gibi siteler arasında bir kullanıcının kimliğine katılabileceği başka yollar da var. Sitelerin desteklerini planlarken bu ekosistem geçişini anlamaları önemlidir. Bu, birçok Gizlilik Korumalı Alan API’si için geçişin genel bir yönüdür, bu nedenle burada daha fazla ele alınmamıştır.
Güvenlik Hususları #
Güven belirteci tükenmesi: kötü amaçlı bir site, bir kullanıcının belirli bir yayıncıdan gelen jeton tedarikini kasıtlı olarak tüketebilir. Bu tür saldırılara karşı, yayınlayıcıların aynı anda birçok belirteç sağlamasını sağlamak gibi çeşitli azaltmalar vardır, böylece kullanıcılar, tarayıcıların her üst düzey sayfa görünümü başına yalnızca bir belirteç kullanmasını sağlamak için yeterli kaynağa sahip olur.
Çifte harcama önleme: kötü amaçlı yazılım, bir kullanıcının tüm güven belirteçlerine erişmeye çalışabilir. Bununla birlikte, her itfa, her jetonun yalnızca bir kez kullanıldığını doğrulayabilen aynı jeton verene gönderildiğinden, jetonlar zamanla tükenecektir. Riski azaltmak için, ihraççılar ayrıca daha az token imzalayabilir.
Talep mekanizmaları #
İtfa kayıtlarının ülke dışına gönderilmesine izin vermek mümkün olabilir. fetch()
, örneğin gezinme istekleriyle. Siteler, sayfa yüklemeye paralel olarak belirteç kullanımını etkinleştirmek için HTTP yanıt üst bilgilerine yayıncı verilerini de dahil edebilir.
Tekrarlamak gerekirse: Bu teklifin geri bildiriminize ihtiyacı var! Yorumlarınız varsa lütfen sorun yaratmak Güven Jetonunda açıklayıcı havuz.
Daha fazlasını bul #
Bu yazının yazılmasına ve gözden geçirilmesine yardımcı olan herkese teşekkürler.