Türkçe
  • güvenlik
  • şifreleme
  • jws
  • asymmetric
  • ec
  • rsa
  • public key
  • private key
  • token
  • signing jwt

JWT imzalama algoritmalarına genel bakış

JSON Web Token (JWT) imzalama algoritmalarını keşfedin ve bunlardan en popüler iki asimetrik şifreleme yaklaşımını: RSA ve EC'yi kapsayın. Her bir algoritmanın artılarını ve eksilerini öğrenin ve Logto'nun JWT tokenlarınızı güvende tutmak için bunları nasıl kullandığını keşfedin.

Charles
Charles
Developer

JWT nedir?

JSON Web Token (JWT), hak iddialarını güvenli bir şekilde temsil etmek için kompakt ve URL güvenli bir yoldur. Yapısı; başlık, yük ve imzayı içerir.

Bugünlerde, JWT'ler yaygın bir şekilde benimsenmiştir ve OAuth 2.0 ve OIDC'de kritik bir rol oynamaktadır. Peki bir yetkilendirme sunucusu, bir istemciden gönderilen bir JWT'yi nasıl doğrular ve güvenebilir? Token nasıl verilir ve veren tarafından nasıl imzalanır? Bu blog yazısında, asimetrik şifrelemeden bahsedeceğiz ve Logto'nun JWT tokenlarında kullandığı farklı imzalama algoritmalarının artılarını ve eksilerini inceleyeceğiz.

JWT yapısı

Logto, kimlik tokenları ve erişim tokenları dahil tüm JWT tokenlarını imzalar. İmzalanmış bir JWT, ayrıca JWS (JSON Web Signature) olarak da bilinir. İmzalanmış bir JWT yapısı, nokta (.) ile ayrılmış üç bölümden oluşur: başlık, yük ve imza.

JOSE (JSON Nesne İmzalama ve Şifreleme) başlığı

Başlık tipik olarak şu bölümlerden oluşur:

  • typ: Token türü olan JWT.
  • alg: Kullanılan imzalama algoritması, örneğin RS256 veya ES384.
  • kid: JWT'yi güvence altına almak için hangi anahtarın kullanıldığını gösteren bir ipucu.

Yük

Yük, bir varlık (tipik olarak kullanıcı) hakkında beyanlar ve ek veriler içeren iddiaları içerir. Örneğin, bir kimlik tokenı aşağıdaki iddiaları içerebilir:

İmza

İmza, JWT'nin göndericisinin sahtekar olmadığını ve mesajın tahrif edilmediğini doğrulamak için kullanılır. İmzalanmış bir JWT kullanırken, tokenın bütünlüğünü sağlamak adına token imzasını doğrulamanız gerekir. API'nizi korumak için JWT tokenlarını nasıl doğrulayacağınız kılavuzuna göz atın.

Asimetrik şifreleme nedir?

Asimetrik şifreleme, bilgisayar güvenliği ve kriptografi temel bir kavramıdır ve bir çift benzersiz ilişkili anahtarın kullanımını içerir: bir açık anahtar ve bir özel anahtar.

Açık ve özel anahtar tanımları

  • Açık anahtar: Adı üzerinde, açık anahtar paylaşım için tasarlanmıştır. JWT ve benzeri sistemlerde açık anahtar, imza doğrulaması için kullanılır, şifreleme için değil. Veriler özel anahtarla imzalandığında ve alıcı karşılık gelen açık anahtara sahipse, verilerin gerçekten özel anahtar sahibi tarafından imzalandığını ve iletim sırasında tahrif edilmediğini doğrulayabilir.
  • Özel anahtar: Buna karşılık, özel anahtar sadece gerçek sahibi tarafından bilinmesi gereken sıkı korunan bir sırdır. JWT bağlamında, özel anahtar, karşılık gelen açık anahtara erişimi olan herkes tarafından doğrulanabilecek dijital imzalar oluşturmak için kullanılır.

Bu benzersiz anahtar düzeni, dijital dünyada güvenli veri iletimi ve kullanıcı kimlik doğrulama mekanizmalarının temelini oluşturur. Ayrıntılı bilgi için bu blog gönderisine göz atın.

Popüler JWT imzalama anahtar algoritmaları: RSA vs EC

RSA (Rivest-Shamir-Adelman) ve EC (Eliptik Eğri) algoritmaları, asimetrik şifrelemede en yaygın kullanılan “matematiksel fonksiyonlardır”.

Geliştiriciler olarak, bir kimlik doğrulama çerçevesi ve JWT'ler ile uğraşırken genellikle bu algoritmalar arasında bir seçimle karşılaşırız. Ama hangisi sizin tercihiniz olurdu? Her birinin artılarına ve eksilerine dalalım.

RSA imzalama algoritması (Örn. RSASHA256)

  • Artıları:
    1. Yaygın destek: RSA, çeşitli platformlar ve kütüphaneler arasında yaygın olarak desteklenir, bu da çok çeşitli ortamlarda uyumluluğu garanti eder.
    2. Uzun geçmiş: RSA'nın güvenliği açısından uzun bir geçmişi vardır ve algoritmaları kriptografik topluluk tarafından iyi anlaşılmaktadır.
  • Eksileri:
    1. Anahtar boyutları: RSA anahtarları, EC ile aynı güvenlik seviyesini elde etmek için daha uzundur ve bu da daha büyük token boyutları ve arttırılmış hesaplama yüküyle sonuçlanır.
    2. Performans: RSA işlemleri, EC'ye göre daha yavaş olma eğilimindedir ve bu da yüksek trafikli uygulamalarda bir dezavantaj olabilir.

EC imzalama algoritması (Örn. ECDSASHA384)

  • Artıları:
    1. Verimlilik: EC, RSA'ya kıyasla üstün performansa sahiptir, bu da onu kaynak kısıtlı veya yüksek trafik yükü olan uygulamalar için ideal hale getirir.
    2. Kompakt anahtar boyutları: EC anahtarları, karşılığında aynı güvenlik seviyelerini sunarken, RSA'dan çok daha kısadır. Bu, azalmış depolama ve ağ gereksinimlerine ve hızlandırılmış kriptografik işlemlere yol açar.
    3. Güvenlik: EC, karmaşık matematikle sağlamlaştırılmış sağlam güvenliğiyle yüksek saygı görür ve kaba kuvvet saldırılarına karşı dayanıklıdır.
  • Eksileri:
    1. Sınırlı destek: Bazı eski sistemler ve kütüphaneler kapsamlı EC desteğinden yoksun olabilir ve potansiyel uyumluluk sorunlarına neden olabilir. Ör. Cloudflare Zero Trust, EC imzalı tokenları desteklemez.
    2. Karmaşıklık: EC, matematiksel karmaşıklıklar nedeniyle daha karmaşık olabilir.

Logto'nun JWT imzalama algoritmaları seçimi

Logto her zaman en yüksek güvenlik ve esneklik standartlarına bağlı kalmış ve çekirdeğinde en modern ve performanslı çözümleri kullanmaya meyilli olmuştur. EC, sağlam güvenliğin ve hesaplama verimliliğinin kazanan bir kombinasyonunu sunar, bu da modern kimlik doğrulama ve yetkilendirme ihtiyaçları için onu ideal bir çözüm haline getirir. Bu nedenle, ürünümüzün ilk aşamalarından bu yana EC bizim varsayılan imzalama anahtar algoritmamız olmuştur.

Ancak, EC imzalı tokenların bazı üçüncü taraf sistemlerle ve özellikle eski frameworks'lerle uyumlu olmadığını da kabul ettik. Bu nedenle, JWT imzalama anahtar algoritmanızı özel anahtarlarınızı döndürerek değiştirmenizi sağlayan bir özellik de tanıttık.

Özel anahtarlarınızı döndürmek için Logto Konsol UI ekran görüntüsü

Bu yüzden, üçüncü taraf bir platforma bağlanamama sorunuyla karşılaşıyorsanız, şimdi özel anahtarınız için RSA algoritmasını seçme ve döndürmenin zamanı.

Bu özellik ayrıca uzun vadeli anahtar maruziyeti veya tehlikeye düşme ile ilgili riskleri azaltmaya yardımcı olur. Özel anahtarları düzenli olarak döndürmek, herhangi bir kuruluşun güvenlik stratejisinde temel bir uygulama olmalı ve Logto tarafından şiddetle tavsiye edilir.

Tekrar: Yaygın kullanılan JWT imzalama algoritmaları: RSA ve EC

JWT tokenlarını imzalamak, iletilen verilerin bütünlüğünü ve doğruluğunu sağlar. İmzalama algoritması seçimi, uygulamanızın güvenliği, performansı ve uyumluluğu üzerinde önemli bir etkiye sahip olabilir.

Hem RSA hem de EC algoritmaları kriptografide temel ve popüler algoritmalardır. Bu algoritmaların arkasındaki artıları, eksileri ve matematiksel prensipleri anlamak, kimlik doğrulama ve yetkilendirme kapsamında daha iyi kararlar almanıza yardımcı olur.

Logto, daha güvenli ve sağlam bir kullanıcı deneyimi sunmaya devam edecek.