====== 1.3 Primerjava z .NET 10 ======
Zakaj WvdS.System.Security.Cryptography namesto .NET 10 PQC?
----
===== .NET 10 PQC-podpora =====
Microsoft je v .NET 10 (Preview, GA november 2025) vgradil nativno PQC-podporo((Microsoft .NET 10 PQC: https://learn.microsoft.com/en-us/dotnet/api/system.security.cryptography?view=net-10.0)):
* ''MLDsa'' / ''MLDsaCng'' / ''MLDsaOpenSsl'' – ML-DSA podpisi
* ''MLKem'' / ''MLKemCng'' / ''MLKemOpenSsl'' – ML-KEM enkapsulacija ključev
* ''SlhDsa'' / ''SlhDsaCng'' / ''SlhDsaOpenSsl'' – SLH-DSA podpisi
* ''CompositeMLDsa'' – Hibridni pristop (ročno)
----
===== Prednosti naše rešitve =====
^ Vidik ^ Microsoft .NET 10 ^ WvdS-rešitev ^
| **Razpoložljivost** | .NET 10+ (november 2025) | .NET 8.0+ (že na voljo) |
| **Migracijska strategija** | Nov API, spremembe kode | Drop-in zamenjava, 2 vrstici |
| **Hibridni način** | Ročno preko ''CompositeMLDsa'' | Samodejno z ''CryptoMode.Hybrid'' |
| **Obstoječa koda** | Mora biti prepisana | Deluje nespremenjeno |
| **X.509 integracija** | Novi razredi | Razširja obstoječi ''X509Certificate2'' |
| **CMS/PKCS#7** | Ni dokumentirano | Polna podpora |
| **RSA/ECDSA razširitve** | Ločeni razredi | Razširja obstoječi ''RSA'', ''ECDsa'' |
----
===== Migracija: .NET 10 vs. WvdS =====
==== Z .NET 10 (nov API) ====
// .NET 10: Potrebna popolnoma nova koda
using var mlDsa = MLDsa.Create(MLDsaAlgorithm.MLDsa65);
byte[] signature = mlDsa.SignData(data);
// Hibrid ročno implementirati
using var composite = CompositeMLDsa.Create(
CompositeMLDsaAlgorithm.MlDsa65Ecdsa256);
byte[] hybridSig = composite.SignData(data);
// Obstoječa RSA-koda NE deluje več
// using var rsa = RSA.Create(); // → brez PQ-podpisa
==== Z WvdS-rešitvijo (Drop-in) ====
using WvdS.System.Security.Cryptography;
// Dve vrstici – končano!
CryptoConfig.DefaultMode = CryptoMode.Hybrid;
// Obstoječa koda samodejno deluje s PQ
using var rsa = RSA.Create(4096);
byte[] signature = rsa.SignData(data,
HashAlgorithmName.SHA256,
RSASignaturePadding.Pkcs1);
// → Samodejno vsebuje RSA + ML-DSA podpis
----
===== Primerjava scenarijev =====
==== Scenarij 1: Migracija obstoječega projekta ====
**Problem:** Velik projekt s stotinami RSA/ECDSA-klicev.
| .NET 10 | Vsako mesto v kodi spremeniti, uporabiti nove razrede |
| WvdS | ''CryptoConfig.DefaultMode = CryptoMode.Hybrid;'' – končano |
==== Scenarij 2: Potrebna povratna združljivost ====
**Problem:** Partnerji še ne podpirajo PQC.
| .NET 10 | Dve poti kode: klasična za stare, PQ za nove partnerje |
| WvdS | Hibridni način: Stari partnerji ignorirajo PQ-razširitev, novi jo validirajo |
==== Scenarij 3: CMS/PKCS#7 dokumentni podpisi ====
**Problem:** Obstoječa ''SignedCms''-integracija.
| .NET 10 | Ni dokumentirano, verjetno ročna integracija |
| WvdS | ''SignedCmsExtensions'' razširja obstoječi API transparentno |
==== Scenarij 4: X.509-certifikatne verige ====
**Problem:** ''X509Chain.Build()'' naj validira PQ-podpise.
| .NET 10 | Potrebni novi razredi verig (nejasno) |
| WvdS | Obstoječi ''X509Chain'' deluje, PQ-validacija samodejno |
----
===== Kdaj izbrati .NET 10? =====
Microsoft .NET 10 PQC je lahko smiselna, ko:
* Greenfield projekt (brez obstoječe kodne baze)
* Podprt samo .NET 10+
* Ni potrebe po hibridni strategiji
* Ni zahtev CMS/PKCS#7
----
===== Kdaj izbrati WvdS? =====
WvdS.System.Security.Cryptography je boljši, ko:
* Migracija obstoječega projekta
* Uporabljena .NET 8.0 ali prejšnje LTS-verzije
* Pomembna povratna združljivost (hibridni način)
* Potrebni CMS/PKCS#7-podpisi
* Želja po minimalnem migracijskem naporu
* Takojšnja razpoložljivost (ne čakati na .NET 10 GA)
----
===== Povzetek =====
^ Kriterij ^ Priporočilo ^
| Obstoječ projekt | **WvdS** |
| .NET 8.0 LTS | **WvdS** |
| Hibridna strategija | **WvdS** |
| CMS/PKCS#7 | **WvdS** |
| Greenfield + samo .NET 10 | .NET 10 ali WvdS |
| Samo PQ (brez hibridnega) | Oboje mogoče |
**Sklep:** Za večino realnih migracijskih scenarijev ponuja WvdS.System.Security.Cryptography najenostavnejšo in najmanj tvegano pot do post-kvantne kriptografije.
----
===== Nadaljnje branje =====
* [[..:developer:migration|Migracija]] – Fazna prestavitev
* [[..:developer:erste-schritte|Prvi koraki]] – Hitri začetek
----
//Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional//
{{tag>konzepte vergleich dotnet10 migration}}