====== 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}}