X.509

Kriptografide, X.509 açık anahtar sertifikalarının formatını tanımlayan bir standarttır. X.509 sertifikaları, internette gezinmek için güvenli protokol olan HTTPS'nin temeli olan TLS/SSL dahil olmak üzere birçok internet protokolünde kullanılmaktadır. Elektronik imzalar gibi çevrimdışı uygulamalarda da kullanılırlar. Bir X.509 sertifikası bir açık anahtar ve bir kimlik (bir ana bilgisayar adı veya bir kuruluş veya bir birey) içerir ve bir sertifika yetkilisi tarafından imzalanır veya kendinden imzalı olarak imzalanır. Sertifika güvenilir bir sertifika yetkilisi tarafından imzalandığında veya başka yollarla doğrulandığında, bu sertifikayı tutan biri, başka bir tarafla güvenli iletişim kurmak için sertifikanın içerdiği açık anahtara güvenebilir veya ilgili özel anahtar ile dijital olarak imzalanmış belgeleri doğrulayabilir.

Sertifikaların formatının yanı sıra, X.509 artık geçerli olmayan sertifikalar hakkında bilgi dağıtmak için sertifika iptal listelerini ve sertifikaların, diğer sertifikalar tarafından imzalanan ve sonunda bir güvenilir bağlantıya ulaşan ara sertifika yetkilisi sertifikaları tarafından imzalanmasını sağlayan bir sertifika yolu doğrulama algoritmasını belirtir.

X.509, başlangıçta 3 Temmuz 1988'de yayınlandı ve X.500 standardı ile birlikte başlatıldı. Sertifika vermek için sertifika yetkililerinin sıkı bir hiyerarşik sistemi olduğunu varsayar. Bu, herkesin (sadece özel sertifika yetkililerinin değil) imzalayabileceği ve dolayısıyla başkalarının anahtar sertifikalarının geçerliliğini onaylayabileceği PGP gibi güven ağı modelleri ile çelişir. X. 509'un 3. versiyonu, ağ köprüleri ve örgü topolojileri gibi diğer topolojileri destekleme esnekliğini içerir. Eşler arası, OpenPGP benzeri bir güven ağında kullanılabilir, ancak 2004'ten bu yana nadiren kullanılmıştır. X.500 sistemi sadece devlet kimliği bilgi paylaşımı antlaşması yerine getirilmesi amacıyla egemen ülkeler tarafından uygulanmıştır ve IETF'nin açık anahtar altyapısı (X.509), veya PKIX, çalışma grubu, standardı İnternet'in daha esnek bir örgütleşimine uyarlamıştır. Aslında, X.509 sertifikası genellikle IETF'nin PKIX sertifikasına ve RFC 5280'de belirtilen ve genellikle Açık Anahtar Altyapısı (X.509) a karşılık olarak PKIX olarak adlandırılan X.509 v3 sertifika standardının sertifika iptal listesi profiline refere eder.

Bunu yapmak için, önce bir anahtar çifti oluşturur, özel anahtarı gizli tutar ve sertifika imzalama isteğini imzalamak için kullanır. Bu başvuru sahibini ve başvuru sahibinin sertifika imzalama isteğinin imzasını ve sertifikanın verildiği Distinguished Name (DN)'i doğrulamak için kullanılacak açık anahtarını tanımlayan bilgiyi içerir. Sertifika imzalama isteğine sertifika yetkilisi tarafından talep edilen diğer kimlik belgeleri veya kimlik kanıtları eşlik edebilir.

Bir kuruluşun güvenilen kök sertifikaları, tüm çalışanlara şirket PKI sistemini kullanabilmeleri için dağıtılabilir. Internet Explorer, Firefox, Opera, Safari ve Chrome gibi tarayıcılar önceden kurulmuş olan önceden belirlenmiş bir kök sertifika seti ile birlikte gelir, böylece büyük sertifika yetkililerinden SSL sertifikaları anında çalışır; Aslında tarayıcıların geliştiricileri, tarayıcıların kullanıcıları için hangi sertifika yetkililerinin güvenilir üçüncü taraf olduğunu belirler. Örneğin, Firefox, dahil edilen sertifika yetkililerinin listesini içeren bir CSV ve / veya HTML dosyası sağlar.

X.509 ve RFC 5280 ayrıca sertifika iptal listesi (CRL) uygulamaları için standartlar içerir. Sertifikanın geçerliliğini kontrol etmenin başka bir IETF onaylı yolu da, Çevrimiçi Sertifika Durum Protokolüdür (OCSP). Firefox 3 en az Vista ve sonrası Windows sürümlerinde olduğu gibi, OCSP'nin varsayılan olarak denetlenmesini sağlar.

Her bir uzantı, kritik veya kritik olmayan bir göstergeyle birlikte bir değer kümesi olan nesne tanımlayıcısı olarak ifade edilen kendi kimliğine sahiptir. Sertifika kullanan bir sistem, tanımadığı kritik bir uzantıyla veya işleyemediği bilgileri içeren kritik bir uzantıyla karşılaşırsa o sertifikayı reddetmelidir. Kritik olmayan bir uzantı tanınmıyorsa göz ardı edilebilir, ancak tanınması durumunda işlenmelidir.

ITU-T, bir süreden sonra verenin veya özne isminin yeniden kullanılmasına izin vermek için 2 numaralı sürümde veren ve özne benzersiz belirteçlerini tanıttı. Yeniden kullanım örneği, bir CA'nın iflas etmesi ve adının ülkenin genel listesinden silinmesidir. Bir süre sonra, aynı ada sahip başka bir CA, birincisi ile ilgisi olmamasına rağmen kendisini kaydedebilir. Ancak, IETF hiçbir veren ve özne isminin tekrar kullanılmasını önermemektedir. Bu nedenle, sürüm 2, Internet'te yaygın olarak kullanılmamaktadır.

Uzantılar versiyon 3'te tanıtıldı. Bir CA, yalnızca belirli bir amaç için bir sertifika vermek için uzantıları kullanabilir (örneğin, yalnızca dijital nesneleri imzalamak için).

Anahtar Kullanımı, { id-ce 15 }, sertifikada bulunan açık anahtar kullanılarak gerçekleştirilebilecek şifreleme işlemlerini belirten bir bitmap sağlar; örneğin, anahtarın imzalar için kullanılması gerektiğini, ancak şifreleme için kullanılmaması gerektiğini gösterebilir.

Genişletilmiş Anahtar Kullanımı, { id-ce 37 }, genellikle sertifikanın içerdiği açık anahtarın amacını belirtmek için bir yaprak sertifikasında kullanılır. Her biri izin verilen kullanımı gösteren OID'lerin bir listesini içerir. Örneğin, { id-pkix 3 1 } anahtarın TLS veya SSL bağlantısının sunucu ucunda kullanılabileceğini gösterir; { id-pkix 3 4 } anahtarın e-posta güvenliğini sağlamak için kullanılabileceğini gösterir.

Genel olarak, bir sertifikanın kullanımını kısıtlayan çeşitli uzantıları varsa, belirli bir kullanım için gereken tüm kısıtlamaların uygun olması gerekir. RFC 5280, hem keyUsage (anahtar kullanımı) hem de extendedKeyUsage (genişletilmiş anahtar kullanımı) öğelerini içeren bir sertifikanın belirli bir örneğini verir: bu durumda, her ikisi de işlenmeli ve sertifika yalnızca her iki uzantı bir sertifikanın kullanımını belirlerken tutarlı ise kullanılabilir. Örneğin, NSS (network security services) sertifika kullanımını belirtmek için her iki uzantıyı kullanır.

X.509 sertifikaları için yaygın olarak kullanılan birkaç dosya adı uzantısı vardır. Maalesef, bu uzantılardan bazıları özel anahtarlar gibi diğer veriler için de kullanılmaktadır.

PKCS#7, veriyi imzalamak veya şifrelemek için bir standarttır. Sertifika, imzalanmış verileri doğrulamak için gerekli olduğundan, bunları SignedData yapısına dahil etmek mümkündür. Bir.P7C dosyası imzalanacak herhangi bir veri olmadan, dejenere bir SignedData yapısıdır.

Sertifika zincirleri, bir hedef sertifikada (zincirdeki ilk sertifika) yer alan açık anahtarın (PK) ve içerdiği diğer verilerin etkin bir şekilde özneye ait olup olmadığını kontrol etmek için kullanılır. Bunu doğrulamak için, hedef sertifikanın üzerindeki imza, bir sonraki sertifikanın içerdiği PK kullanılarak, ki onun imzası da ondan sonraki sertifika kullanılarak doğrulanmış, zincirdeki son sertifikaya ulaşılana kadar doğrulanır. Son sertifika bir güvenilir bağlantı olduğundan, başarılı bir şekilde ulaşılması hedef sertifikanın güvenilir olduğunu kanıtlayacaktır.

Önceki paragraftaki açıklama, RFC 5280 tarafından tanımlanan sertifika yolu doğrulama süreci (sertifikalarda geçerlilik tarihlerinin doğrulanması, CRL'lerin aranması gibi ek kontroller içeren) hakkında basitleştirilmiş bir görünümdür.

Sertifika zincirlerinin nasıl oluşturulduğunu ve doğrulandığını inceleyerek, somut bir sertifikanın çok farklı sertifika zincirlerinin (hepsi geçerli) bir parçası olabileceğine dikkat edilmelidir. Bunun nedeni, aynı özne ve açık anahtar için birkaç CA sertifikası oluşturulabilmesi, ancak farklı özel anahtarlarla (farklı CA'lardan veya aynı CA'dan farklı özel anahtarlardan) imzalanabilmesidir. Dolayısıyla, tek bir X.509 sertifikasının yalnızca bir veren ve bir CA imzası olsa da, tamamen farklı sertifika zincirleri oluşturarak birden fazla sertifikaya bağlanabilir. Bu PKI'lar ve diğer uygulamalar arasında çapraz sertifikasyon için çok önemlidir.

A → B, "A, B tarafından imzalanır" anlamına gelir (veya daha kesin olarak, "A, B içinde bulunan açık anahtara karşılık gelen özel anahtar tarafından imzalanır").

PKI 2'de ("Kullanıcı 2" gibi) bulunan kullanıcı sertifikalarının PKI 1 tarafından güvenilmesini sağlamak için CA1, CA2'nin açık anahtarını içeren bir sertifika (cert2.1) oluşturur.

Şimdi hem "cert2 hem de cert2.1 (yeşil) aynı özneye ve açık anahtara sahiptir, bu nedenle cert2.2 (Kullanıcı 2) için iki geçerli zincir vardır: " cert2.2 → cert2 "ve" cert2.2 → cert2. 1 → cert1".

Benzer şekilde, CA2, CA1'in açık anahtarını içeren bir sertifika (cert1.1) oluşturabilir, böylece PKI 1'de ("Kullanıcı 1" gibi) bulunan kullanıcı sertifikaları PKI 2 tarafından güvenilir hale gelir.

Hem cert1 hem de cert3 aynı açık anahtarı (eskisinden) içerdiğinden, cert5 için iki geçerli sertifika zinciri vardır: "cert5 → cert1" ve "cert5 → cert3 → cert2" ve cert6 için de benzer şekildedir. Bu, eski kullanıcı sertifikalarının (cert5 gibi) ve yeni sertifikaların (cert6 gibi) yeni CA anahtarlarına geçiş sırasında yeni kök CA sertifikasına sahip olan veya güvenilen bağlantı olarak eski tarafa kayıtsız bir şekilde güvenebilmesini sağlar.

Bu, wikipedia.org ve diğer bazı Wikipedia web siteleri tarafından kullanılan kodu çözülmüş bir X.509 sertifikası örneğidir. Veren alanında belirtildiği gibi GlobalSign tarafından verilmiştir. Özne alanı Wikipedia'yı bir kurum olarak tanımlar ve Özne Alternatif Adı alanı, kullanılabileceği ana makine adlarını açıklar. Özne Açık Anahtar Bilgisi alanında bir ECDSA açık anahtarı bulunur, alt kısımdaki imza ise GlobalSign'ın RSA özel anahtarı ile oluşturulmuştur.

TLS bağlantısında, uygun şekilde yapılandırılmış bir sunucu, ara bağlantıyı el sıkışmasının bir parçası olarak sağlayacaktır. Ancak, ara sertifikayı son varlık sertifikasından "CA Verenleri (Issuers)" URL'sini getirerek de almak mümkündür.

Bu, bir sertifika yetkilisine ait bir ara sertifikanın örneğidir. Bu sertifika, yukarıdaki son varlık sertifikasını imzaladı ve aşağıdaki kök sertifika tarafından imzalandı. Bu ara sertifikanın özne alanı, imzaladığı son varlık sertifikasının veren alanı ile eşleşmektedir. Ayrıca, aradaki "özne anahtar tanımlayıcısı" alanı, son varlık sertifikasındaki "yetki anahtarı tanımlayıcısı" alanıyla eşleşir.

Bu, bir sertifika yetkilisini temsil eden, kendinden imzalı bir kök sertifika örneğidir. Veren ve özne alanları aynıdır ve imzası kendi açık anahtarı ile doğrulanabilir. Güven zincirinin geçerliliği burada bitmelidir. Doğrulama programının güven deposunda bu kök sertifika varsa, son varlık sertifikası TLS bağlantısında kullanılmak üzere güvenilir kabul edilebilir. Aksi takdirde, son varlık sertifikası güvenilmez olarak kabul edilir.

İstemci yalnızca CRL'ler mevcut olduğunda sertifikalara güveniyorsa, PKI'yi cazip hale getiren çevrimdışı yeteneklerini kaybederler. Bu nedenle çoğu istemci CRL'ler mevcut olmadığında sertifikalara güvenir, ancak bu durumda iletişim kanalını kontrol eden bir saldırgan CRL'leri devre dışı bırakabilir. Google'dan Adam Langley, kısmi başarısız CRL kontrollerinin, bir kaza geçirdiğiniz zamanlar dışında çalışan bir emniyet kemeri gibi olduğunu söylemiştir.

Toplama sorunu: Kimlik hak talepleri (bir tanımlayıcıyla kimlik doğrulaması), özellik talepleri (bir miktar onaylanmış özellik sunumu) ve politika talepleri tek bir kapsayıcıda birleştirilir. Bu gizlilik, politika eşleme ve bakım sorunlarını artırır.

Yetkilendirme sorunu: CA'lar, alt CA'ların sınırlı ad alanlarının veya özellik kümelerinin dışındaki sertifikaların yayınlanmasını teknik olarak engelleyemez; X.509'un bu özelliği kullanımda değil. Bu nedenle, İnternet'te çok sayıda CA var ve bunları ve politikalarını sınıflandırmak başa çıkılmaz bir görevdir. Bir kurumda yetki devri alelade bir iş uygulamasında olduğu gibi üstesinden gelinemez.

Federasyon sorunu: Alt CA'ların, köprü CA'larının ve çapraz imzalamanın sonucu olan sertifika zincirleri, işlem süresi açısından doğrulamayı karmaşık ve pahalı hale getirir. Yol doğrulama semantiği belirsiz olabilir. Güvenilir üçüncü taraflı hiyerarşi tek modeldir. İkili bir güven ilişkisi zaten mevcut olduğunda bu durum elverişsizdir.

Bir ana bilgisayar adı için bir Genişletilmiş Doğrulama (EV) sertifikası verilmesi aynı ana makine adı için geçerli olan daha düşük bir geçerlilik sertifikasının verilmesini engellemez. Bu şu anlama gelir ki EV'nin yüksek doğrulama seviyesi, ortadaki adam saldırılarına karşı koruma sağlamamaktadır.

Güvenen taraf değil, özne sertifika satın alır. Özne genellikle en ucuz sertifika veren kurumu kullanacak, dolayısıyla rekabet piyasasında kaliteye ödeme yapılmıyor. Bu kısmen Genişletilmiş Doğrulama sertifikaları tarafından ele alınmaktadır.

Kullanım süresi bitimi anahtar gücünün yeterli olduğu süreyi sınırlamak için kullanılmalıdır. Bu parametre, sertifika yetkilileri tarafından müşteriye bir uzatma ücreti talep etmek için kötüye kullanılır. Bu, kullanıcıya süre uzatma gibi gereksiz bir yük getirir.

"Kullanıcılar, iptal edilmek üzere gerçek bir yol olmaksızın varolmayan bir dizinde belirsiz bir konumda yayınlanan bir sertifika almak için tanımlanmamış bir sertifika isteği protokolü kullanır.

Tüm işletmeler gibi, CA'lar da içinde bulundukları yasal yargı alanlarına tabidir ve yasal olarak müşterilerinin ve kullanıcılarının çıkarlarını tehlikeye atmak zorunda kalabilirler. İstihbarat kurumları, ortadaki adam saldırılarını yürütmek için DigiNotar gibi, CA'ların yasa dışı uzlaşma yoluyla verilen sahte sertifikalardan da yararlanmıştır. Bir başka örnek ise, 1 Ocak 2018 tarihinden itibaren başlayan ve Hollanda istihbarat ve güvenlik hizmetlerine yeni yetkiler veren Hollanda yasaları sayesinde Hollanda hükûmeti CA iptal talebi vermiştir.

X.509'da gerçekleme hataları vardır. Mesela geçersiz sonlandırılmış dizeleri kullanarak sahte özne isimlerine izin verir veya sertifikalarda kod enjeksiyon saldırılarına izin verir.

Nesne belirleyicilerinin yasa dışı 0x80 doldurulmuş alt tanımlayıcılarını, yanlış uygulamalarını veya istemcinin tarayıcılarının tam sayı taşmasını kullanarak, bir saldırgan, CA'nın imzalayacağı bilinmeyen bir öznitelik içerebilir ve bu da istemcinin "CN" olarak yanlış yorumladığı anlamına gelir. (OID=2.5.4.3). Dan Kaminsky at the 26th Chaos Communication Congress "Black OPs of PKI"

Dijital imza sistemleri çalışmak için kriptografik özet fonksiyonlarına ihtiyaç duyar. Açık anahtar altyapısı artık güvenli olmayan bir özet fonksiyonu kullanılmasına izin verdiğinde, bir saldırgan sertifikaları oluşturmak için özet fonksiyonundaki zayıflıkları kullanabilir. Özellikle, bir saldırgan özet çakışması üretebiliyorsa, bir CA'yı zararsız içerikli bir sertifikayı imzalamaya ikna edebilirler; ve bu içeriğin özeti, saldırganın seçtiği değerlerle oluşturduğu bir başka, kötü niyetli sertifika içeriğinin özetiyle özdeştir. Saldırgan daha sonra CA tarafından sağlanan imzayı kötü amaçlı sertifika içeriğine ekleyebilir ve CA tarafından imzalanmış gibi görünen kötü amaçlı bir sertifikayla sonuçlanabilir. Kötü niyetli sertifika içerikleri yalnızca saldırgan tarafından seçildiğinden, zararsız sertifikadan farklı geçerlilik tarihleri veya ana bilgisayar adlarına sahip olabilirler. Kötü amaçlı sertifika, daha güvenilir sertifikalar verebilecek bir "CA: true" alanı bile içerebilir.

MD2 tabanlı sertifikalar uzun bir süredir kullanılmış ve önleyici saldırılara karşı savunmasız kalmıştır. Kök sertifika zaten kendi imzasına sahip olduğundan, saldırganlar bu imzayı kullanabilir ve bir ara sertifika için kullanabilirler.

2005 yılında, Arjen Lenstra ve Benne de Weger, "Özet çarpışmaları, aynı imzaları içeren ve yalnızca açık anahtarlarda farklılık gösteren iki X.509 sertifika oluşturmak için nasıl kullanılır" sorusunu MD5 özet fonksiyonu üzerinde bir çarpışma saldırısı kullanarak gösterdi.

2008 yılında, Alexander Sotirov ve Marc Stevens, Chaos Communication Congress'te, MD5'e dayanan RapidSSL'nin hala X.509 sertifikaları yayınladığı gerçeğini kullanarak, tüm yaygın tarayıcılar tarafından kabul edilen hileli bir Sertifika Yetkilisi oluşturmalarına izin veren pratik bir saldırı sundular.

2009 yılının Nisan ayında, Eurocrypt Konferansı'nda, Macquarie Üniversitesi'nden Avustralyalı Araştırmacılar, "Automatic Differential Path Searching for SHA-1" adlı makaleyi sundu. Araştırmacılar, bir çarpışma olasılığını birkaç büyüklük derecesine göre arttıran bir yöntem çıkarmayı başardılar.

X.509 imzalarını oluşturmak için özet çarpışması kullanmak, saldırganın sertifika yetkilisinin imzalayacağı verileri tahmin edebilmesini gerektirir. Bu, CA tarafından imzalanan sertifikalarda, tipik olarak seri numarasında rastgele bir bileşen üreterek hafifletilebilir. CA/Browser Forum, 2011'den bu yana Baseline Requirements Section 7.1'de seri numarası entropisine ihtiyaç duymuştur.

1 Ocak 2016 itibarıyla, Temel Koşul Gereksinimleri, SHA-1 kullanan sertifikaların verilmesini yasaklamıştır. 2017'nin başından itibaren, Chrome ve Firefox, SHA-1 kullanan sertifikaları reddetmiştir. Mayıs 2017 itibarıyla hem Edge hem de Safari, SHA-1 sertifikasını reddetmiştir. Tarayıcı olmayan X.509 doğrulayıcıları, SHA-1 sertifikalarını henüz reddetmiyor.

1995 yılında, Ulusal Standartlar ve Teknoloji Enstitüsü ile birlikte İnternet Mühendisliği Görev Gücü, Açık Anahtar Altyapısı (X.509) çalışma grubunu oluşturdu. Haziran 2014'te  sonuçlanan çalışma grubu, genellikle "PKIX" olarak adlandırılmaktadır. X.509'un kullanımının dağıtılmasının ile ilgili RFC'ler ve diğer standartlar belgeler oluşturuldu. Özellikle, Internet protokollerinde X.509'un nasıl kullanılacağını tanımlayan RFC 3280 ve onun halefi RFC 5280 üretildi.

TLS/SSL ve HTTPS, S/MIME (Güvenli Çok Amaçlı Internet Posta Uzantıları) ve WiFi kimlik doğrulaması için EAP-TLS yöntemi X.509'un RFC 5280 profilini kullanır. SMTP, POP, IMAP, LDAP, XMPP ve daha fazlası gibi TLS kullanan herhangi bir protokol, doğal olarak X.509'u kullanır. IPsec, RFC 4945'te tanımlanan kendi X.509 profilini kullanır.

SSH genellikle "trust on first use" (ilk kullanımda güven) modelini kullanır ve sertifikalara ihtiyaç duymaz. Ancak, popüler OpenSSH uygulaması X.509 olmayan sertifika formatına dayanan CA imzalı bir kimlik modelini desteklemektedir.