Perche WvdS.System.Security.Cryptography invece di .NET 10 PQC?
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)| 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 |
// .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
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
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 |
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 |
Problema: Integrazione SignedCms esistente.
| .NET 10 | Non documentato, probabilmente integrazione manuale |
| WvdS | SignedCmsExtensions estende API esistente in modo trasparente |
Problema: X509Chain.Build() deve validare firme PQ.
| .NET 10 | Nuove classi Chain richieste (non chiaro) |
| WvdS | X509Chain esistente funziona, validazione PQ automatica |
Microsoft .NET 10 PQC puo essere sensato se:
WvdS.System.Security.Cryptography e migliore se:
| 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.
Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional