JSON Web Algorithms veya kısa adıyla JWA bir algoritma kataloğu sağlar. Ancak kütüphanenin desteklediği her algoritmanın uygulamada etkinleştirilmesi güvenli değildir. Kabul edilecek seçenekler tehdit modeline ve anahtar altyapısına göre sınırlandırılmalıdır.
RFC 7518 JSON Web Algorithms: Hızlı Bakış
| Standart | RFC 7518 |
|---|---|
| Kısa ad | JWA |
| JWS imza ve MAC alanı | alg |
| JWE anahtar yönetimi | alg |
| JWE içerik şifreleme | enc |
RFC 7518 JSON Web Algorithms Neden Önemlidir?
RFC 7518 JSON Web Algorithms, farklı JOSE uygulamalarının aynı algoritma adlarını ve parametrelerini kullanmasını sağlar. Bu ortak tanımlar kütüphaneler ve servisler arasında birlikte çalışabilirliği kolaylaştırır.
Bununla birlikte algoritmanın standartta kayıtlı olması, her yeni kullanım için tavsiye edildiği anlamına gelmez. Güvenlik durumu zamanla değişebilir. Güncel BCP belgeleri, IANA kayıtları ve kriptografi kütüphanesinin güvenlik duyuruları ayrıca takip edilmelidir.
RFC 7518 JSON Web Algorithms İçin 10 Kritik Güvenlik Kontrolü
1. Algoritma İzin Listesi Oluşturun
Kütüphanenin desteklediği bütün algoritmaları açmak yerine protokol ve istemci türü için sınırlı bir izin listesi kullanın. Token bu listeyi genişletememelidir.
2. Algoritma Karışıklığını Engelleyin
Asimetrik public anahtarın HMAC sırrı olarak kullanılmasına izin vermeyin. Doğrulama işlemi beklenen anahtar türü ve algoritmayla çağrılmalıdır.
3. alg ile enc Alanlarını Ayırın
JWE içinde alg içerik anahtarının nasıl yönetildiğini, enc ise payloadın nasıl şifrelendiğini belirtir. İki alan için bağımsız politikalar uygulayın.
4. Anahtar Boyutunu Denetleyin
RSA, HMAC ve AES anahtarları seçilen algoritmanın minimum güvenlik gereksinimlerini karşılamalıdır. Kısa anahtarları reddedin.
5. İzin Verilen Eğrileri Sınırlayın
EC ve OKP anahtarlarında yalnız uygulamanın test ettiği ve kuruluşun güvenlik politikasıyla uyumlu eğrileri kabul edin.
6. none Değerini Kapalı Tutun
İmzasız veri açıkça tasarlanmamışsa alg none reddedilmelidir. Kimlik veya erişim tokenlarında sessiz geri düşüş olmamalıdır.
7. Güncel BCP ve Kayıtları İzleyin
Algoritmanın RFC içindeki durumu güvenlik tavsiyesinin tamamı olmayabilir. Güncel uygulama rehberleri ve kütüphane duyuruları düzenli izlenmelidir.
8. Güvenli Rastgelelik Kullanın
İmza nonce değerleri, IV’ler ve geçici anahtarlar kriptografik olarak güvenli bir rastgelelik kaynağından üretilmelidir.
9. Hata Sonuçlarını Tek Tip İşleyin
Farklı algoritma hatalarını istemciye ayrıntılı biçimde açıklamayın. İç loglar teknik bilgi içerebilir ancak dış yanıt saldırgana oracle sağlamamalıdır.
10. Algoritma Geçişini Önceden Test Edin
Yeni algoritmaya geçişte anahtar dağıtımı, eski token kabul süresi, çoklu doğrulama ve geri alma planı birlikte test edilmelidir.
Güvenli Algoritma Politikası Nasıl Kurulur?
Algoritma seçimi doğrudan token başlığındaki alg değerine bırakılamaz. Token yalnız kullanılmak istenen algoritmayı bildirir. Son kararı sunucunun güvenlik yapılandırması vermelidir.
- JWS imza algoritmaları için ayrı bir izin listesi oluşturun.
- JWE anahtar yönetimi algoritmalarını ayrı sınırlandırın.
- JWE içerik şifreleme seçeneklerini enc listesiyle doğrulayın.
- Anahtar türü ve uzunluğunu algoritmayla eşleştirin.
- none ve kullanım dışı seçenekleri açıkça reddedin.
RFC 7518 JSON Web Algorithms Yapılandırma Örneği
policy = {
"jws_algorithms": [
"ES256",
"PS256"
],
"jwe_key_algorithms": [
"RSA-OAEP-256",
"ECDH-ES"
],
"jwe_content_algorithms": [
"A256GCM"
],
"allow_none": false
}
VERIFY(input, trusted_key, policy)
Bu yapılandırma örneğinde JWS, JWE anahtar yönetimi ve JWE içerik şifreleme seçenekleri birbirinden ayrılmıştır. Üretim ortamındaki liste tehdit modeline ve kullanılan kütüphanelere göre hazırlanmalıdır.
Sık Yapılan Uygulama Hataları
- Kütüphanenin desteklediği bütün algoritmaları etkinleştirmek
- alg değerini doğrulamadan anahtar seçmek
- alg ile enc görevlerini birbirine karıştırmak
- Anahtar uzunluğunu ve türünü kontrol etmemek
- Başarısız doğrulamada daha eski algoritmaya geri düşmek
Algoritma Geçiş Planı
Yeni bir algoritma kullanılmadan önce bütün doğrulayıcı servislerin desteği kontrol edilmelidir. Yeni anahtarlar önceden dağıtılmalı ve eski tokenların ne kadar süre kabul edileceği belirlenmelidir.
Beklenmeyen bir uyumluluk sorunu yaşandığında güvenli yapılandırmaya geri dönebilmek için geri alma planı hazırlanmalıdır. Test ortamı ile canlı ortam arasında kontrolsüz algoritma farklılıkları bulunmamalıdır.
İlgili Tekno Türkiye İçerikleri
RFC 7662 Token Introspection, RFC 9449 DPoP ve RFC 8414 Authorization Server Metadata rehberlerini de inceleyebilirsiniz.
Sık Sorulan Sorular
JWA neyi tanımlar?
JOSE yapılarında kullanılan imza, MAC, anahtar yönetimi ve şifreleme algoritmalarını ve tanımlayıcılarını belirtir.
RFC’de kayıtlı her algoritma güvenli midir?
Hayır. Kayıtlı olmak her yeni kullanım için tavsiye edildiği anlamına gelmez. Güncel güvenlik belgelerine bakılmalıdır.
alg ile enc arasındaki fark nedir?
JWE içinde alg anahtar yönetimini, enc ise gerçek içerik şifrelemesini belirtir.
Kriptografik çeviklik nedir?
Algoritma ve anahtar değişimini güvenli, test edilmiş ve geri alınabilir biçimde yapabilme yeteneğidir.
Essential Uygulama Özeti
RFC 7518 JSON Web Algorithms uygulanırken algoritma ve anahtar türü birlikte doğrulanmalıdır. RFC 7518 JSON Web Algorithms sunucu tarafından belirlenen izin listeleriyle sınırlandırılmalıdır. Her RFC 7518 JSON Web Algorithms dağıtımı algoritma karışıklığı ve geri düşüş testleri içermelidir. Güvenli bir RFC 7518 JSON Web Algorithms uygulaması none değerini ve beklenmeyen algoritmaları reddeder.
Resmî Kaynaklar
Sonuç
RFC 7518 JSON Web Algorithms, sınırlı algoritma politikası, güvenli anahtar yönetimi ve planlı geçiş süreciyle uygulandığında JOSE altyapısının güvenliğini güçlendirir.
