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.

Karma ve İleti Kimlik Doğrulama Algoritmaları

Sınıflar da dahil olmak üzere *Managed tüm karma algoritma ve karma tabanlı ileti kimlik doğrulaması (HMAC) sınıfları, Tarayıcı WASM'de .NET dışında işletim sistemi kitaplıklarına ertelenir. 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.

2.NET9'dan başlayarak akış genişletilebilir çıkış işlevi (XOF) kullanılabilir. Linux'ta bunun için OpenSSL 3.3 gerekir.

Simetrik şifreleme

Temel alınan şifreler ve zincirleme, sistem kitaplıkları 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. Algoritma IsSupported sınıflarında statik özelliği, geçerli platformun algoritmayı desteklese de desteklemese de çalışma zamanında algılamak için kullanılabilir.

Ş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 sınıfı 96, AesGcm 104, 112, 120 ve 128 bit (12, 13, 14, 15 ve 16 bayt) etiketlerin oluşturulmasını veya işlenmesini 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 birlikte çalışması gerektiren herhangi bir yöntem bir PlatformNotSupportedExceptionoluş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) ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
Beyin havuzu 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 bkz . Eliptik Eğriler Adlı CNG. 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(önceki || Z || ekleme)
  • HMAC(anahtar, Z)
  • HMAC(key, prepend || Z || ekleme)
  • HMAC(Z, Z)
  • HMAC(Z, önceki || Z || ekleme)
  • 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) ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
Beyin havuzu 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 bkz . Eliptik Eğriler Adlı CNG. 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ışma

.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, .NET 10'dan önce ECDiffieHellmanOpenSsl, OpenSSL yüklüyse ve dinamik kitaplık yüklemesi aracılığıyla uygun bir libcrypto dylib bulunabilirse ç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 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
DSACryptoServiceProvider ✔️ ⚠️1 ⚠️1 ⚠️1
DSACng ✔️
DSAOpenSsl ✔️ 2

1 Windows olmayanlarda, DSACryptoServiceProvider mevcut programlarla uyumluluk için kullanılabilir. Bu durumda, adlandırılmış anahtar açma gibi sistem birlikte çalışması gerektiren herhangi bir yöntem bir PlatformNotSupportedExceptionoluş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 önceden oluşturulmuş çeşitlemeler 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 okuma

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 yazma

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 ✔️ ✔️ ✔️ ✔️ ✔️
Kısa ömürlü 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 Core ve .NET 5'te .NET Framework ile aynı şekilde çalışır.

Windows olmayanlarda sınıfı sistem X509Store güveni kararlarının (salt okunur), kullanıcı güveni kararlarının (okuma-yazma) ve kullanıcı anahtarı depolama alanının (okuma-yazma) bir projeksiyonudur.

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ç (Salt 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 depo, LocalMachine\Root OpenSSL için varsayılan yolda CA paketinin bir yorumudur.

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

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 Dosyasını Aç (ExistingOnly) ✔️ ⚠️ ✔️ (ReadOnly ise)
LocalMachine\Intermediate(ReadOnly) dosyasını açın ✔️ ✔️ ✔️
LocalMachine\Intermediate dosyasını açın (ReadWrite) ✔️
LocalMachine\Intermediate'ı aç (ExistingOnly) ✔️ ⚠️ ✔️ (ReadOnly ise)

Linux'ta depo, CurrentUser\Intermediate başarılı X509Chain derlemelerinde Yetkili Bilgileri Erişim kayıtları tarafından ara CA'ları indirirken önbellek olarak kullanılır. Depo LocalMachine\Intermediate , 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 binasını etkilemez.

İzin Verilmeyen depo

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 mağaza Disallowed zincir oluşturmada kullanılmaz ve içindekileri eklemeye çalışmak bir CryptographicExceptionile sonuçlanır. Zaten edinilmiş içerik varsa mağaza açılırken CryptographicException bir Disallowed oluşturulur.

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

Var olmayan depo

Senaryo Windows Linux işletim sistemi macOS iOS, tvOS, MacCatalyst Android
Var olmayan depo açma (ExistingOnly)
Mevcut olmayan CurrentUser depounu açma (ReadWrite) ✔️ ✔️ ⚠️
LocalMachine varolmayan depo açma (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 Sonuç, geçerli kullanıcının izinlerine new X509Store(IntPtr) bağlı olarak okuma/yazma özellikli bir depo elde etmek için öğesine geçirilebilir.

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 Bağlantısı SLH-DSA ✔️

Ek kaynaklar