====== 1.3 Confronto con .NET 10 ======
Perche WvdS.System.Security.Cryptography invece di .NET 10 PQC?
----
===== Supporto PQC in .NET 10 =====
Microsoft ha integrato supporto PQC nativo in .NET 10 (Preview, GA Novembre 2025)((Microsoft .NET 10 PQC: https://learn.microsoft.com/en-us/dotnet/api/system.security.cryptography?view=net-10.0)):
* ''MLDsa'' / ''MLDsaCng'' / ''MLDsaOpenSsl'' - Firme ML-DSA
* ''MLKem'' / ''MLKemCng'' / ''MLKemOpenSsl'' - Incapsulamento chiavi ML-KEM
* ''SlhDsa'' / ''SlhDsaCng'' / ''SlhDsaOpenSsl'' - Firme SLH-DSA
* ''CompositeMLDsa'' - Approccio ibrido (manuale)
----
===== Vantaggi della nostra soluzione =====
^ Aspetto ^ Microsoft .NET 10 ^ Soluzione WvdS ^
| **Disponibilita** | .NET 10+ (Novembre 2025) | .NET 8.0+ (disponibile ora) |
| **Strategia migrazione** | Nuova API, modifiche codice | Drop-in Replacement, 2 righe |
| **Modalita Hybrid** | Manuale via ''CompositeMLDsa'' | Automatico con ''CryptoMode.Hybrid'' |
| **Codice esistente** | Deve essere riscritto | Funziona senza modifiche |
| **Integrazione X.509** | Nuove classi | Estende ''X509Certificate2'' esistente |
| **CMS/PKCS#7** | Non documentato | Supporto completo |
| **Extension RSA/ECDSA** | Classi separate | Estende ''RSA'', ''ECDsa'' esistenti |
----
===== Migrazione: .NET 10 vs. WvdS =====
==== Con .NET 10 (nuova API) ====
// .NET 10: Codice completamente nuovo richiesto
using var mlDsa = MLDsa.Create(MLDsaAlgorithm.MLDsa65);
byte[] signature = mlDsa.SignData(data);
// Hybrid da implementare manualmente
using var composite = CompositeMLDsa.Create(
CompositeMLDsaAlgorithm.MlDsa65Ecdsa256);
byte[] hybridSig = composite.SignData(data);
// Codice RSA esistente NON funziona piu
// using var rsa = RSA.Create(); // -> nessuna firma PQ
==== Con soluzione WvdS (Drop-in) ====
using WvdS.System.Security.Cryptography;
// Due righe - fatto!
CryptoConfig.DefaultMode = CryptoMode.Hybrid;
// Codice esistente funziona automaticamente con PQ
using var rsa = RSA.Create(4096);
byte[] signature = rsa.SignData(data,
HashAlgorithmName.SHA256,
RSASignaturePadding.Pkcs1);
// -> Contiene automaticamente firma RSA + ML-DSA
----
===== Confronto scenari =====
==== Scenario 1: Migrare progetto esistente ====
**Problema:** Grande progetto con centinaia di chiamate RSA/ECDSA.
| .NET 10 | Modificare ogni punto nel codice, usare nuove classi |
| WvdS | ''CryptoConfig.DefaultMode = CryptoMode.Hybrid;'' - fatto |
==== Scenario 2: Retrocompatibilita necessaria ====
**Problema:** I partner non supportano ancora PQC.
| .NET 10 | Due percorsi codice: classico per vecchi, PQ per nuovi partner |
| WvdS | Modalita Hybrid: partner vecchi ignorano estensione PQ, nuovi la validano |
==== Scenario 3: Firme documento CMS/PKCS#7 ====
**Problema:** Integrazione ''SignedCms'' esistente.
| .NET 10 | Non documentato, probabilmente integrazione manuale |
| WvdS | ''SignedCmsExtensions'' estende API esistente in modo trasparente |
==== Scenario 4: Catene certificato X.509 ====
**Problema:** ''X509Chain.Build()'' deve validare firme PQ.
| .NET 10 | Nuove classi Chain richieste (non chiaro) |
| WvdS | ''X509Chain'' esistente funziona, validazione PQ automatica |
----
===== Quando scegliere .NET 10? =====
Microsoft .NET 10 PQC puo essere sensato se:
* Progetto greenfield (nessuna codebase esistente)
* Supportato solo .NET 10+
* Non serve strategia Hybrid
* Nessun requisito CMS/PKCS#7
----
===== Quando scegliere WvdS? =====
WvdS.System.Security.Cryptography e migliore se:
* Progetto esistente da migrare
* Si usa .NET 8.0 o versioni LTS precedenti
* Retrocompatibilita importante (modalita Hybrid)
* Servono firme CMS/PKCS#7
* Si desidera minimo effort di migrazione
* Disponibilita immediata (non aspettare .NET 10 GA)
----
===== Riepilogo =====
^ Criterio ^ Raccomandazione ^
| Progetto esistente | **WvdS** |
| .NET 8.0 LTS | **WvdS** |
| Strategia Hybrid | **WvdS** |
| CMS/PKCS#7 | **WvdS** |
| Greenfield + solo .NET 10 | .NET 10 o WvdS |
| Solo PQ (no Hybrid) | Entrambi possibili |
**Conclusione:** Per la maggior parte degli scenari reali di migrazione, WvdS.System.Security.Cryptography offre il percorso piu semplice e a minor rischio verso la crittografia post-quantum.
----
===== Approfondimenti =====
* [[..:developer:migration|Migrazione]] - Transizione a fasi
* [[..:developer:erste-schritte|Primi passi]] - Avvio rapido
----
//Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional//
{{tag>konzepte vergleich dotnet10 migration}}