Aracılığıyla paylaş


.NET'te platformlar arası şifreleme

.NET'teki şifreleme işlemleri işletim sistemi (OS) kitaplıkları tarafından gerçekleştirilir. Bu bağımlılığın avantajları vardır:

  • .NET uygulamaları işletim sistemi güvenilirliğinden yararlanıyor. Şifreleme kitaplıklarının güvenlik açıklarından korunması işletim sistemi satıcıları için yüksek önceliklidir. Bunu yapmak için sistem yöneticilerinin uygulaması gereken güncelleştirmeleri sağlar.
  • İşletim sistemi kitaplıkları FIPS ile doğrulanmışsa .NET uygulamaları FIPS ile doğrulanmış algoritmalara erişebilir.

İşletim sistemi kitaplıklarına bağımlılık, .NET uygulamalarının yalnızca işletim sisteminin desteklediği şifreleme özelliklerini kullanabileceği anlamına da gelir. Tüm platformlar belirli temel özellikleri desteklese de, .NET'in desteklediği bazı özellikler bazı platformlarda kullanılamaz. Bu makale, her platformda desteklenen özellikleri tanımlar.

Bu makalede, .NET'te şifreleme hakkında bilgi sahibi olduğunuz varsayılır. Daha fazla bilgi için bkz . .NET Şifreleme Modeli ve .NET Şifreleme Hizmetleri.

Hash ve İleti Kimlik Doğrulama Algoritmaları

*Managed sınıfları da dahil olmak üzere tüm karma algoritma ve karma tabanlı ileti kimlik doğrulaması (HMAC) sınıfları, Tarayıcı WASM üzerinde .NET dışında işletim sistemi kitaplıklarına başvurur. Tarayıcı WASM'de SHA-1, SHA-2-256, SHA-2-384, SHA-2-512 ve HMAC eşdeğerleri yönetilen kod kullanılarak uygulanır.

Algoritma Windows Linux işletim sistemi macOS iOS, tvOS, MacCatalyst Android Tarayıcı
MD5 ✔️ ✔️ ✔️ ✔️ ✔️
SHA-1 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
SHA-2-256 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
SHA-2-384 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
SHA-2-512 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
SHA-3-256 Windows 11 Derlemesi 25324+ OpenSSL 1.1.1+
SHA-3-384 Windows 11 Derlemesi 25324+ OpenSSL 1.1.1+
SHA-3-512 Windows 11 Derlemesi 25324+ OpenSSL 1.1.1+
SHAKE-128 Windows 11 Derlemesi 25324+ OpenSSL 1.1.1+2
SHAKE-256 Windows 11 Derlemesi 25324+ OpenSSL 1.1.1+2
HMAC-MD5 ✔️ ✔️ ✔️ ✔️ ✔️
HMAC-SHA-1 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
HMAC-SHA-2-256 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
HMAC-SHA-2-384 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
HMAC-SHA-2-512 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
HMAC-SHA-3-256 Windows 11 Derlemesi 25324+ OpenSSL 1.1.1+
HMAC-SHA-3-384 Windows 11 Derlemesi 25324+ OpenSSL 1.1.1+
HMAC-SHA-3-512 Windows 11 Derlemesi 25324+ OpenSSL 1.1.1+
KMAC-1281 Windows 11 Derleme 26016+ OpenSSL 3.0+
KMAC-2561 Windows 11 Derleme 26016+ OpenSSL 3.0+
KMAC-XOF-1281 Windows 11 Derleme 26016+ OpenSSL 3.0+
KMAC-XOF-2561 Windows 11 Derleme 26016+ OpenSSL 3.0+

1.NET 9'dan itibaren kullanılabilir.

2Akış genişletilebilir çıkış işlevi (XOF), .NET 9'dan itibaren kullanılabilir. Linux'ta bunun için OpenSSL 3.3 gerekir.

Simetrik şifreleme

Altyapısal şifreler ve zincirleme işlemleri, sistem kütüphaneleri tarafından gerçekleştirilir.

Şifre + Mod Windows Linux işletim sistemi macOS iOS, tvOS, MacCatalyst Android
AES-CBC ✔️ ✔️ ✔️ ✔️ ✔️
AES-ECB ✔️ ✔️ ✔️ ✔️ ✔️
AES-CFB8 ✔️ ✔️ ✔️ ✔️ ✔️
AES-CFB128 ✔️ ✔️ ✔️ ✔️ ✔️
3DES-CBC ✔️ ✔️ ✔️ ✔️ ✔️
3DES-ECB ✔️ ✔️ ✔️ ✔️ ✔️
3DES-CFB8 ✔️ ✔️ ✔️ ✔️ ✔️
3DES-CFB64 ✔️ ✔️ ✔️ ✔️ ✔️
DES-CBC ✔️ ✔️ ✔️ ✔️ ✔️
DES-ECB ✔️ ✔️ ✔️ ✔️ ✔️
DES-CFB8 ✔️ ✔️ ✔️ ✔️ ✔️
RC2-CBC ✔️ ✔️ ✔️ ✔️
RC2-ECB ✔️ ✔️ ✔️ ✔️
RC2-CFB

Kimliği doğrulanmış şifreleme

AES-CCM, AES-GCM ve ChaCha20Poly1305 için sırasıyla , System.Security.Cryptography.AesCcmve System.Security.Cryptography.AesGcm sınıfları aracılığıyla System.Security.Cryptography.ChaCha20Poly1305kimliği doğrulanmış şifreleme (AE) desteği sağlanır.

Kimliği doğrulanmış şifreleme algoritmayı desteklemek için daha yeni platform API'leri gerektirdiğinden tüm platformlarda destek bulunmayabilir. Çalışma zamanında geçerli platformun algoritmayı destekleyip desteklemediğini algılamak için, algoritma için sınıfında statik özelliğini kullanabilirsiniz IsSupported .

Şifre + Mod Windows Linux işletim sistemi macOS iOS, tvOS, MacCatalyst Android Tarayıcı
AES-GCM ✔️ ✔️ ✔️ ⚠️ ✔️
AES-CCM ✔️ ✔️ ✔️
ChaCha20Poly1305 Windows 10 Derleme 20142+ OpenSSL 1.1.0+ ✔️ ⚠️ API Düzeyi 28+

macOS üzerinde AES-CCM

.NET 10'dan önce, desteklenen bir OpenSSL sürümü mevcutsa ve dinamik kütüphane yükleyicisi bunu bulabilirse AES-CCM çalışıyordu. .NET 10'da macOS üzerinde OpenSSL desteği kaldırıldı.

iOS, tvOS ve MacCatalyst üzerinde AES-GCM ve ChaCha20Poly1305

AES-GCM ve ChaCha20Poly1305 desteği, iOS ve tvOS 13.0 ve sonraki sürümlerde .NET 9 ile MacCatalyst'in tüm sürümlerinden itibaren kullanılabilir.

AES-CCM anahtarları, nonce'lar ve etiketler

  • Anahtar Boyutları

    AES-CCM, 128, 192 ve 256 bit anahtarlarla çalışır.

  • Nonce Boyutları

    sınıfı AesCcm 56, 64, 72, 80, 88, 96 ve 104 bit (7, 8, 9, 10, 11, 12 ve 13 bayt) nonce'ları destekler.

  • Etiket Boyutları

    sınıfı AesCcm 32, 48, 64, 80, 96, 112 ve 128 bit (4, 8, 10, 12, 14 ve 16 bayt) etiketleri oluşturmayı veya işlemeyi destekler.

AES-GCM anahtarları, nonce'lar ve etiketler

  • Anahtar Boyutları

    AES-GCM 128, 192 ve 256 bit anahtarlarla çalışır.

  • Nonce Boyutları

    AesGcm sınıfı yalnızca 96 bit (12 bayt) nonce'ları destekler.

  • Etiket Boyutları

    Windows ve Linux'ta AesGcm sınıfı 96, 104, 112, 120 ve 128 bit (12, 13, 14, 15 ve 16 bayt) etiketleri oluşturmayı veya işlemeyi destekler. Apple platformlarında, CryptoKit çerçevesinin sınırlamaları nedeniyle etiket boyutu 128 bit (16 bayt) ile sınırlıdır.

ChaCha20Poly1305 tuşları, nonces ve etiketler

ChaCha20Poly1305 anahtar, nonce ve kimlik doğrulama etiketi için sabit bir boyuta sahiptir. ChaCha20Poly1305 her zaman 256 bit anahtar, 96 bit (12 bayt) nonce ve 128 bit (16 bayt) etiketi kullanır.

Asimetrik şifreleme

Bu bölüm aşağıdaki alt bölümleri içerir:

RSA

RSA (Rivest–Shamir–Adleman) anahtar oluşturma, işletim sistemi kitaplıkları tarafından gerçekleştirilir ve boyut sınırlamalarına ve performans özelliklerine tabidir.

RSA anahtar işlemleri işletim sistemi kitaplıkları tarafından gerçekleştirilir ve yüklenebilen anahtar türleri işletim sistemi gereksinimlerine tabidir.

.NET, "ham" (unpadded) RSA işlemlerini kullanıma sunmaz.

Doldurma ve özet desteği platforma göre farklılık gösterir:

Doldurma Modu Windows (CNG) Linux (OpenSSL) macOS iOS, tvOS, MacCatalyst Android Windows İşletim Sistemi (CAPI)
PKCS1 Şifrelemesi ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
OAEP - SHA-1 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
OAEP - SHA-2 ✔️ ✔️ ✔️ ✔️ ✔️
OAEP - SHA-3 Windows 11 Derlemesi 25324+ OpenSSL 1.1.1+
PKCS1 İmzası (MD5, SHA-1) ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
PKCS1 İmzası (SHA-2) ✔️ ✔️ ✔️ ✔️ ✔️ ⚠️1
PKCS1 İmzası (SHA-3) Windows 11 Derlemesi 25324+ OpenSSL 1.1.1+
PSS ✔️ ✔️ ✔️ ✔️ ✔️

1 Windows CryptoAPI (CAPI), SHA-2 algoritmasıyla PKCS1 imzası özelliğine sahiptir. Ancak tek tek RSA nesnesi, onu desteklemeyen bir şifreleme hizmeti sağlayıcısına (CSP) yüklenebilir.

Windows üzerinde RSA

RSA yerel birlikte çalışma

.NET, programların .NET şifreleme kodunun kullandığı işletim sistemi kitaplıklarıyla birlikte çalışması için türleri kullanıma sunar. Söz konusu türler platformlar arasında çeviri yapmaz ve yalnızca gerektiğinde doğrudan kullanılmalıdır.

Tür Windows Linux işletim sistemi macOS iOS, tvOS, MacCatalyst Android
RSACryptoServiceProvider ✔️ ⚠️1 ⚠️1 ⚠️1 ⚠️1
RSACng ✔️
RSAOpenSsl ✔️ 2

1 Windows olmayanlarda, RSACryptoServiceProvider mevcut programlarla uyumluluk için kullanılabilir. Bu durumda, adlandırılmış anahtar açma gibi işletim sistemi arayüzü gerektiren herhangi bir yöntem bir PlatformNotSupportedException oluşturur.

2.NET 10'un öncesinde macOS'ta OpenSSL RSAOpenSsl yüklüyse ve dinamik kitaplık yükleme yoluyla uygun bir libcrypto dylib bulunabilirse çalışırdı. Bu destek .NET 10'da kaldırıldı.

ECDSA

ECDSA (Eliptik Eğri Dijital İmza Algoritması) anahtar oluşturma işlemi işletim sistemi kitaplıkları tarafından yapılır ve boyut sınırlamalarına ve performans özelliklerine tabidir.

ECDSA anahtar eğrileri işletim sistemi kitaplıkları tarafından tanımlanır ve sınırlamalarına tabidir.

Eliptik Eğri Windows 10 Windows 7 - 8.1 Linux işletim sistemi macOS iOS, tvOS, MacCatalyst Android
NIST P-256 (secp256r1) ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
NIST P-384 (secp384r1) ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
NIST P-521 (secp521r1) ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
Brainpool eğrileri (adlandırılmış eğriler olarak) ✔️ ⚠️1 ⚠️4
Diğer adlandırılmış eğriler ⚠️2 ⚠️1 ⚠️4
Açık eğriler ✔️ ✔️ ✔️
Açık olarak dışarı veya içeri aktarma ✔️ 3 ✔️ 3 3 ✔️

1 Linux dağıtımlarının tümü aynı adlandırılmış eğrileri desteklemez.

2 Windows 10'da Windows CNG'ye adlandırılmış eğriler desteği eklendi. Daha fazla bilgi için CNG Adlı Eliptik Eğriler başlığına bakınız. Adlandırılmış eğriler, Windows 7'deki üç eğri dışında Windows'un önceki sürümlerinde kullanılamaz.

3 Açık eğri parametreleriyle dışarı aktarma işlemi, Apple platformlarında veya Windows'un önceki sürümlerinde bulunmayan işletim sistemi kitaplığı desteği gerektirir.

4 Bazı eğriler için Android desteği Android sürümüne bağlıdır. Android dağıtımcıları, Android derlemelerinde de eğrileri eklemeyi veya kaldırmayı seçebilir.

ECDSA Yerel Birlikte Çalışma

.NET, programların .NET şifreleme kodunun kullandığı işletim sistemi kitaplıklarıyla birlikte çalışması için türleri kullanıma sunar. İlgili türler platformlar arasında çevrilmediğinden yalnızca gerektiğinde doğrudan kullanılmalıdır.

Tür Windows Linux işletim sistemi macOS iOS, tvOS, MacCatalyst Android
ECDsaCng ✔️
ECDsaOpenSsl ✔️ ❌*

* macOS'ta, ECDsaOpenSsl .NET 10'dan önce, OpenSSL yüklüyse ve dinamik kitaplık yükleme ile uygun bir libcrypto dylib bulunabiliyorsa çalışıyordu. Bu destek .NET 10'da kaldırıldı.

ECDH

ECDH (Elliptic Curve Diffie-Hellman) anahtar oluşturma işlemi işletim sistemi kitaplıkları tarafından yapılır ve boyut sınırlamalarına ve performans özelliklerine tabidir.

sınıfı, ECDiffieHellman ECDH hesaplamasının "ham" değerini ve aşağıdaki anahtar türetme işlevlerini destekler:

  • HASH(Z)
  • HASH(ön ek || Z || son ek)
  • HMAC(anahtar, Z)
  • HMAC(key, prepend || Z || ekleme)
  • HMAC(Z, Z)
  • HMAC(Z, ön ek || Z || son ek)
  • Tls11Prf(etiket, çekirdek)

ECDH anahtar eğrileri işletim sistemi kitaplıkları tarafından tanımlanır ve sınırlamalarına tabidir.

Eliptik Eğri Windows 10+ Windows 7 - 8.1 Linux işletim sistemi macOS iOS, tvOS, MacCatalyst Android
NIST P-256 (secp256r1) ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
NIST P-384 (secp384r1) ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
NIST P-521 (secp521r1) ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
Brainpool eğrileri (adlandırılmış eğriler olarak) ✔️ ⚠️1 ⚠️4
Diğer adlandırılmış eğriler ⚠️2 ⚠️1 ⚠️4
Açık eğriler ✔️ ✔️ ✔️
Açık olarak dışarı veya içeri aktarma ✔️ 3 ✔️ 3 3 ✔️

1 Linux dağıtımlarının tümü aynı adlandırılmış eğrileri desteklemez.

2 Windows 10'da Windows CNG'ye adlandırılmış eğriler desteği eklendi. Daha fazla bilgi için CNG Adlı Eliptik Eğriler başlığına bakınız. Adlandırılmış eğriler, Windows 7'deki üç eğri dışında Windows'un önceki sürümlerinde kullanılamaz.

3 Açık eğri parametreleriyle dışarı aktarma işlemi, Apple platformlarında veya Windows'un önceki sürümlerinde bulunmayan işletim sistemi kitaplığı desteği gerektirir.

4 Bazı eğriler için Android desteği Android sürümüne bağlıdır. Android dağıtımcıları, Android derlemelerinde de eğrileri eklemeyi veya kaldırmayı seçebilir.

ECDH yerel birlikte çalışabilirlik

.NET, programların .NET'in kullandığı işletim sistemi kitaplıklarıyla birlikte çalışmalarına izin vermek için türleri kullanıma sunar. İlgili türler platformlar arasında çevrilmediğinden yalnızca gerektiğinde doğrudan kullanılmalıdır.

Tür Windows Linux işletim sistemi macOS iOS, tvOS, MacCatalyst Android
ECDiffieHellmanCng ✔️
ECDiffieHellmanOpenSsl ✔️ ❌*

* macOS'ta, ECDiffieHellmanOpenSsl .NET 10'dan önce, OpenSSL yüklüyse ve dinamik kitaplık yükleme ile uygun bir libcrypto dylib bulunabiliyorsa çalışıyordu. Bu destek .NET 10'da kaldırıldı.

DSA

DSA (Dijital İmza Algoritması) anahtar oluşturma işlemi sistem kitaplıkları tarafından gerçekleştirilir ve boyut sınırlamalarına ve performans özelliklerine tabidir.

İşlev Windows CNG Linux işletim sistemi macOS Windows CAPI iOS, tvOS, MacCatalyst Android
Anahtar oluşturma (<= 1024 bit) ✔️ ✔️ ✔️ ✔️
Anahtar oluşturma (> 1024 bit) ✔️ ✔️ ✔️
Anahtarları yükleme (<= 1024 bit) ✔️ ✔️ ✔️ ✔️ ✔️
Anahtarlar yükleniyor (> 1024 bit) ✔️ ✔️ ⚠️* ✔️
FIPS 186-2 ✔️ ✔️ ✔️ ✔️ ✔️
FIPS 186-3 (SHA-2 imzaları) ✔️ ✔️ ✔️

* macOS, 1024 bitten büyük DSA anahtarlarını yükler, ancak bu anahtarların davranışı tanımlanmamıştır. FIPS 186-3'e göre davranmıyorlar.

Windows üzerinde DSA

DSA doğal uyumluluk

.NET, programların .NET şifreleme kodunun kullandığı işletim sistemi kitaplıklarıyla birlikte çalışması için türleri kullanıma sunar. İlgili türler platformlar arasında çevrilmediğinden yalnızca gerektiğinde doğrudan kullanılmalıdır.

Tür Windows Linux işletim sistemi macOS iOS, tvOS, MacCatalyst Android
DSACryptoServiceProvider ✔️ ⚠️1 ⚠️1 ⚠️1
DSACng ✔️
DSAOpenSsl ✔️ 2

1 Windows olmayanlarda, DSACryptoServiceProvider mevcut programlarla uyumluluk için kullanılabilir. Bu durumda, adlandırılmış bir anahtar açma gibi sistem birlikte çalışabilirliği gerektiren herhangi bir yöntem bir PlatformNotSupportedException oluşturur.

2.NET 10'un öncesinde macOS'ta OpenSSL DSAOpenSsl yüklüyse ve dinamik kitaplık yükleme yoluyla uygun bir libcrypto dylib bulunabilirse çalışırdı. Bu destek .NET 10'da kaldırıldı.

Kuantum sonrası şifreleme

Kuantum sonrası algoritmalar .NET 10'dan itibaren kullanılabilir. Microsoft.Bcl.Cryptography NuGet paketi kullanılarak .NET Framework için de kullanılabilir. Yerleşik işletim sisteminin, Generate veya ImportFromPem gibi kaynaklardan oluşturulan şifreleme bileşenleri için platform desteğini gösteren aşağıdaki destek tablosu. Temel sınıftan türetilen uygulamalar farklı destek davranışlarına sahip olabilir.

Yerleşik algoritmalar için, platformun parametre kümelerinden herhangi birini desteklenip desteklemediğini belirlemek için bir IsSupported statik özellik kullanılabilir.

Kuantum sonrası algoritmalar için yerel birlikte çalışma türleri anahtar oluşturmayı veya içeri aktarmayı desteklemez. Bu türler, OpenSSL üzerinde EVP_PKEY veya Windows üzerinde CngKey gibi yerel platform türleriyle birlikte çalışma senaryoları için özel olarak mevcuttur.

ML-KEM

Algoritma Windows Linux işletim sistemi Elma Android Tarayıcı
ML-KEM-512 Windows 11 Insider'lar (En Son) OpenSSL 3.5.0+
ML-KEM-768 Windows 11 Insider'lar (En Son) OpenSSL 3.5.0+
ML-KEM-1024 Windows 11 Insider'lar (En Son) OpenSSL 3.5.0+

Yerel karşılıklı çalışabilirlik ML-KEM

ML-DSA

ML-DSA'nın saf ve prehash bir varyantı vardır (HashML-DSA). Aşağıdaki tabloda hem saf hem de ön-kodlanmış varyantlar yer alır.

Algoritma Windows Linux işletim sistemi Elma Android Tarayıcı
ML-DSA-44 Windows 11 Insider'lar (En Son) OpenSSL 3.5.0+
ML-DSA-65 Windows 11 Insider'lar (En Son) OpenSSL 3.5.0+
ML-DSA-87 Windows 11 Insider'lar (En Son) OpenSSL 3.5.0+
ML-DSA-44 Dış Mu (μ)1 OpenSSL 3.5.0+
ML-DSA-65 Dış Mu (μ)1 OpenSSL 3.5.0+
ML-DSA-87 Dış Mu (μ)1 OpenSSL 3.5.0+

1 Dış Mu desteği yalnızca Mu'yı imzalamak ve doğrulamak içindir. Mu hesaplaması desteklenmez.

Yerel uyumluluk ML-DSA

SLH-DSA

SLH-DSA'nın temiz ve prehash bir varyantı vardır (HashSLH-DSA). Aşağıdaki tabloda hem saf hem de ön-kodlanmış varyantlar yer alır.

Algoritma Windows Linux işletim sistemi Elma Android Tarayıcı
SLH-DSA-SHA2-128f OpenSSL 3.5.0+
SLH-DSA-SHA2-128s OpenSSL 3.5.0+
SLH-DSA-SHA2-192f OpenSSL 3.5.0+
SLH-DSA-SHA2-192s OpenSSL 3.5.0+
SLH-DSA-SHA2-256f OpenSSL 3.5.0+
SLH-DSA-SHA2-256s OpenSSL 3.5.0+
SLH-DSA-SHAKE-128f OpenSSL 3.5.0+
SLH-DSA-SHAKE-128s OpenSSL 3.5.0+
SLH-DSA-SHAKE-192f OpenSSL 3.5.0+
SLH-DSA-SHAKE-192s OpenSSL 3.5.0+
SLH-DSA-SHAKE-256f OpenSSL 3.5.0+
SLH-DSA-SHAKE-256s OpenSSL 3.5.0+

Yerel birlikte çalışma SLH-DSA

Bileşik ML-DSA

Algoritma Windows Linux işletim sistemi Elma Android Tarayıcı
MLDSA44-RSA2048-PSS-SHA256 Windows 11 Insider'lar (En Son) OpenSSL 3.5.0+
MLDSA44-RSA2048-PKCS15-SHA256 Windows 11 Insider'lar (En Son) OpenSSL 3.5.0+
MLDSA44-Ed25519-SHA512
MLDSA44-ECDSA-P256-SHA256 Windows 11 Insider'lar (En Son) OpenSSL 3.5.0+
MLDSA65-RSA3072-PSS-SHA512 Windows 11 Insider'lar (En Son) OpenSSL 3.5.0+
MLDSA65-RSA3072-PKCS15-SHA512 Windows 11 Insider'lar (En Son) OpenSSL 3.5.0+
MLDSA65-RSA4096-PSS-SHA512 Windows 11 Insider'lar (En Son) OpenSSL 3.5.0+
MLDSA65-RSA4096-PKCS15-SHA512 Windows 11 Insider'lar (En Son) OpenSSL 3.5.0+
MLDSA65-ECDSA-P256-SHA512 Windows 11 Insider'lar (En Son) OpenSSL 3.5.0+
MLDSA65-ECDSA-P384-SHA512 Windows 11 Insider'lar (En Son) OpenSSL 3.5.0+
MLDSA65-ECDSA-brainpoolP256r1-SHA512 Windows 11 Insider'lar (En Son) OpenSSL 3.5.0+
MLDSA65-Ed25519-SHA512
MLDSA87-ECDSA-P384-SHA512 Windows 11 Insider'lar (En Son) OpenSSL 3.5.0+
MLDSA87-ECDSA-brainpoolP384r1-SHA512 Windows 11 Insider'lar (En Son) OpenSSL 3.5.0+
MLDSA87-Ed448-SHAKE256
MLDSA87-RSA3072-PSS-SHA512 Windows 11 Insider'lar (En Son) OpenSSL 3.5.0+
MLDSA87-RSA4096-PSS-SHA512 Windows 11 Insider'lar (En Son) OpenSSL 3.5.0+
MLDSA87-ECDSA-P521-SHA512 Windows 11 Insider'lar (En Son) OpenSSL 3.5.0+

Yerel birlikte çalışma bileşik ML-DSA

X.509 Sertifikaları

.NET'teki X.509 sertifikalarına yönelik desteğin çoğu işletim sistemi kitaplıklarından gelir. Bir sertifikayı .NET'teki bir X509Certificate2 veya X509Certificate örneğine yüklemek için, sertifikanın temel işletim sistemi kitaplığı tarafından yüklenmesi gerekir.

PKCS12/PFX dosyasını oku

Senaryo Windows Linux işletim sistemi macOS iOS, tvOS, MacCatalyst Android
Boş ✔️ ✔️ ✔️ ✔️ ✔️
Bir sertifika, özel anahtar yok ✔️ ✔️ ✔️ ✔️ ✔️
Özel anahtarla bir sertifika ✔️ ✔️ ✔️ ✔️ ✔️
Birden çok sertifika, özel anahtar yok ✔️ ✔️ ✔️ ✔️ ✔️
Birden çok sertifika, bir özel anahtar ✔️ ✔️ ✔️ ✔️ ✔️
Birden çok sertifika, birden çok özel anahtar ✔️ ✔️ ✔️ ✔️ ✔️

PKCS12/PFX dosyası oluşturma

Senaryo Windows Linux işletim sistemi macOS iOS, tvOS, MacCatalyst Android
Boş ✔️ ✔️ ✔️ ✔️ ✔️
Bir sertifika, özel anahtar yok ✔️ ✔️ ✔️ ✔️ ✔️
Özel anahtarla bir sertifika ✔️ ✔️ ✔️ ✔️ ✔️
Birden çok sertifika, özel anahtar yok ✔️ ✔️ ✔️ ✔️ ✔️
Birden çok sertifika, bir özel anahtar ✔️ ✔️ ✔️ ✔️ ✔️
Birden çok sertifika, birden çok özel anahtar ✔️ ✔️ ✔️ ✔️ ✔️
Geçici yükleme ✔️ ✔️ ✔️ ✔️

macOS, diske yazma gerektiren anahtarlık nesnesi olmadan sertifika özel anahtarlarını yükleyemez. Anahtarlıklar PFX yüklemesi için otomatik olarak oluşturulur ve artık kullanımda olmadığında silinir. X509KeyStorageFlags.EphemeralKeySet seçeneği özel anahtarın diske yazılmaması gerektiği anlamına gelir ve macOS'ta bu bayrağın belirtilmesi bir PlatformNotSupportedExceptionile sonuçlanabilir.

PKCS7 sertifika koleksiyonu yazma

Hem Windows hem de Linux DER ile kodlanmış PKCS7 blobları yayar. macOS süresiz uzunlukta CER ile kodlanmış PKCS7 blobları yayar.

X509Store

Windows'da sınıfı, X509Store Windows Sertifika Deposu API'lerinin bir gösterimidir. Bu API'ler .NET Framework'te olduğu gibi .NET'te de aynı şekilde çalışır.

Windows dışı sistemlerde, X509Store sınıfı sistem güven kararlarının (salt okunur), kullanıcı güven kararlarının (okuma-yazma) ve kullanıcı anahtar depolama alanının (okuma-yazma) bir yansımasıdır.

Aşağıdaki tablolarda her platformda hangi senaryoların desteklendiği gösterilmektedir. Desteklenmeyen senaryolar için (❌ tablolarda) bir CryptographicException oluşturulur.

Mağazam

Senaryo Windows Linux işletim sistemi macOS iOS, tvOS, MacCatalyst Android
CurrentUser\My (ReadOnly) dosyasını açın ✔️ ✔️ ✔️ ✔️ ✔️
CurrentUser\My Dosyasını Aç (ReadWrite) ✔️ ✔️ ✔️ ✔️ ✔️
CurrentUser\My (ExistingOnly) dosyasını açın ✔️ ⚠️ ✔️ ✔️ ✔️
LocalMachine\My dosyasını açın ✔️ ✔️ ✔️ ✔️

Linux'ta depolar ilk yazmada oluşturulur ve varsayılan olarak hiçbir kullanıcı deposu yoktur, bu nedenle ile CurrentUser\My açma ExistingOnly işlemi başarısız olabilir.

macOS'ta mağaza, CurrentUser\My varsayılan olarak kullanıcının varsayılan anahtarlığıdır login.keychain . Mağaza LocalMachine\My şeklindedir System.keychain.

Kök depo

Senaryo Windows Linux işletim sistemi macOS iOS, tvOS, MacCatalyst Android
CurrentUser\Root'ı aç (Yalnızca Okunur) ✔️ ✔️ ✔️ ✔️
CurrentUser\Root Dosyasını Aç (ReadWrite) ✔️ ✔️
CurrentUser\Root'ı aç (ExistingOnly) ✔️ ⚠️ ✔️ (ReadOnly ise) ✔️ (ReadOnly ise)
LocalMachine\Root(ReadOnly) dosyasını açın ✔️ ✔️ ✔️ ✔️
LocalMachine\Root'ı açın (ReadWrite) ✔️
LocalMachine\Root'ı açın (ExistingOnly) ✔️ ⚠️ ✔️ (ReadOnly ise) ✔️ (ReadOnly ise)

Linux'ta LocalMachine\Root deposu, CA paketinin OpenSSL için varsayılan yoldaki bir yorumudur.

macOS'ta CurrentUser\Root deposu, kullanıcı güveni etki alanı için SecTrustSettings sonuçlarının yorumlanmasıdır. Mağaza LocalMachine\Root , yönetici ve sistem güven etki alanları için sonuçların yorumlanmasıdır SecTrustSettings .

Linux'ta güvenilen kök sertifika konumları

Linux'ta .NET, güvenilen kök sertifikaları bulmak için OpenSSL (libssl) kullanır. OpenSSL, ortam değişkenlerini (SSL_CERT_FILE ve ) ve SSL_CERT_DIRdağıtıma özgü varsayılan yolları kullanarak sertifika deposu konumunu belirler. OpenSSL için yapılandırılan kök depolama dizini herhangi bir sertifika içermiyorsa, .NET, /etc/ssl/certs'yi kontrol etmeye geri döner. Bu geri dönüş, SSL_CERT_DIR tarafından belirtilen dizinin yalnızca .NET'in kök sertifika olarak desteklemediği BEGIN TRUSTED CERTIFICATE biçiminde sertifikalar içerebileceği SUSE Linux Enterprise Server (SLES) gibi dağıtımlarla uyumluluğu sağlar.

Bu geri dönüş yalnızca aşağıdaki durumlarda oluşur:

  1. Ortam SSL_CERT_DIR değişkeni açıkça ayarlanmadı.
  2. Varsayılan sertifika dizini kullanılabilir sertifika içermiyor.

Sertifikalarınız doğru yüklenmiyorsa şunları doğrulayın:

  • Sertifika dosyalarınız işaretçiyle BEGIN CERTIFICATE (değil BEGIN TRUSTED CERTIFICATE) PEM biçimindedir.
  • SSL_CERT_DIR ve SSL_CERT_FILE ortam değişkenleri, ayarlanmışsa doğru konumlara işaret eder.
  • Sertifika paketi dosyası veya dizini uygun okuma izinlerine sahiptir.

Ara depo

Senaryo Windows Linux işletim sistemi macOS iOS, tvOS, MacCatalyst Android
CurrentUser\Intermediate'ı açma (Salt Okunur) ✔️ ✔️ ✔️
CurrentUser\Intermediate Dosyasını Aç (ReadWrite) ✔️ ✔️
CurrentUser\Intermediate (ExistingOnly) Klasörünü Aç ✔️ ⚠️ ✔️ (eğer ReadOnly ise)
LocalMachine\Intermediate(ReadOnly) dosyasını açın ✔️ ✔️ ✔️
LocalMachine\Intermediate dosyasını açın (ReadWrite) ✔️
LocalMachine\Intermediate'ı aç (ExistingOnly) ✔️ ⚠️ ✔️ (ReadOnly ise)

Linux'ta, CurrentUser\Intermediate mağazası, başarılı X509Chain derlemelerinde Yetki Bilgisi Erişim kayıtları aracılığıyla ara Sertifika Yetkilileri indirilirken önbellek olarak kullanılır. LocalMachine\Intermediate deposu, OpenSSL için varsayılan yoldaki CA paketinin bir yorumudur.

macOS'ta CurrentUser\Intermediate mağaza özel mağaza olarak değerlendirilir. Bu depoya eklenen sertifikalar X.509 zincir yapısını etkilemez.

Yasaklı mağaza

Senaryo Windows Linux işletim sistemi macOS iOS, tvOS, MacCatalyst Android
CurrentUser\İzin Verilmeyen 'i Aç (Salt Okunur) ✔️ ⚠️ ✔️ ✔️ ✔️
Aç CurrentUser\Disallowed (ReadWrite) ✔️ ⚠️
CurrentUser\İzin Verilmeyeni Aç (ExistingOnly) ✔️ ⚠️ ✔️ (ReadOnly ise) ✔️ (ReadOnly ise) ✔️ (ReadOnly ise)
LocalMachine\Disallowed (ReadOnly) dosyasını açın ✔️ ✔️ ✔️ ✔️
LocalMachine\Disallowed (ReadWrite) dosyasını açın ✔️
LocalMachine\Disallowed (ExistingOnly) öğesini açın ✔️ ✔️ (ReadOnly ise) ✔️ (ReadOnly ise) ✔️ (ReadOnly ise)

Linux'ta Disallowed deposu zincir oluşturmada kullanılmaz ve içindekileri eklemeye çalışmak bir CryptographicException ile sonuçlanır. Eğer zaten edinilmiş içerik varsa, mağaza açılırken bir CryptographicException hatası meydana gelir.

macOS'ta CurrentUser\Disallowed ve LocalMachine\Disallowed depoları, güveni Always Deny olarak ayarlanmış sertifikalar için uygun SecTrustSettings sonuçlarının yorumlarıdır.

Mevcut olmayan mağaza

Senaryo Windows Linux işletim sistemi macOS iOS, tvOS, MacCatalyst Android
Mevcut olmayan mağazayı aç (ExistingOnly)
Mevcut olmayan CurrentUser mağazasını açma (OkumaYazma) ✔️ ✔️ ⚠️
Mevcut olmayan LocalMachine mağazasını aç (ReadWrite) ✔️

macOS'ta, X509Store API'siyle özel mağaza oluşturma yalnızca konum için CurrentUser desteklenir. Kullanıcının anahtarlık dizininde (~/Library/Keychains) parolasız yeni bir anahtarlık oluşturur. Parolayla anahtarlık oluşturmak için SecKeychainCreate P/Invoke kullanılabilir. Benzer şekilde, SecKeychainOpen anahtarlıkları farklı konumlarda açmak için de kullanılabilir. IntPtr çıktısı, geçerli kullanıcının izinlerine tabi olarak okuma/yazma özellikli bir depo elde etmek için new X509Store(IntPtr)'e aktarılabilir.

X509Chain

macOS Çevrimdışı CRL kullanımını X509RevocationMode.Offline desteklemediğinden olarak X509RevocationMode.Onlinedeğerlendirilir.

macOS, CRL (Sertifika İptal Listesi) / OCSP (Çevrimiçi Sertifika Durum Protokolü) / AIA (Yetkili Bilgileri Erişimi) indirme işlemi için kullanıcı tarafından başlatılan zaman aşımını desteklemez, bu nedenle X509ChainPolicy.UrlRetrievalTimeout yoksayılır.

Kuantum sonrası şifreleme sertifikaları ve PKCS12/PFX

Kuantum sonrası sertifika desteği için de temel algoritma desteği gerekir.

Operation Algoritma Windows Linux işletim sistemi Elma Android Tarayıcı
PKCS#12 İçe Aktarma ML-DSA ✔️ ✔️
PKCS#12 Dışarı Aktarma ML-DSA ✔️ ✔️
Özel Anahtar İlişkilendirmesi ML-DSA ✔️ ✔️
 
PKCS#12 İçe Aktarma ML-KEM ✔️
PKCS#12 Dışarı Aktarma ML-KEM ✔️
Özel Anahtar İlişkilendirmesi ML-KEM ✔️
 
PKCS#12 İçe Aktarma SLH-DSA ✔️
PKCS#12 Dışarı Aktarma SLH-DSA ✔️
Özel Anahtar İlişkilendirmesi SLH-DSA ✔️

Ek kaynaklar