Inhaltsverzeichnis
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)1):
MLDsa/MLDsaCng/MLDsaOpenSsl- Firme ML-DSAMLKem/MLKemCng/MLKemOpenSsl- Incapsulamento chiavi ML-KEMSlhDsa/SlhDsaCng/SlhDsaOpenSsl- Firme SLH-DSACompositeMLDsa- 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
- Migrazione - Transizione a fasi
- Primi passi - Avvio rapido
Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional
1)
Microsoft .NET 10 PQC: https://learn.microsoft.com/en-us/dotnet/api/system.security.cryptography?view=net-10.0
Zuletzt geändert: il 30/01/2026 alle 08:57