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-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)

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


Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional

Zuletzt geändert: il 30/01/2026 alle 08:57