L'ECDH per SEC P-384 e P-521 è rotto in Windows 10 / Windows Server 2016 TP3?

10

AGGIORNAMENTO: codice di prova del concetto qui , l'output della console mostrato di seguito e tutti i certificati coinvolti sono here .

Ho appena notato che ECDiffieHellmanCng.DeriveKeyMaterial (...) si comporta in modo diverso su Windows 8.1 Enterprise (x64) e Windows 10 Prof (x64).

Specificamente, quando fai qualcosa di simile

byte[] SymKey12 = party1.DeriveKeyMaterial(party2);
byte[] SymKey21 = party2.DeriveKeyMaterial(party1);

i valori di SymKey12 e SymKey21 sono diversi su Windows 10 per diversi scenari ECDH secp384 e ECDH secp521 che sono passati bene su Windows 8.1.

Qualche idea?

Windows Server 2016 Tech Preview 3 (versione NT 10.0.10514.0) e Windows 10 output (versione NT 10.0.10240.0)

'Test ECC Alice secp521r1 SS' <=> 'Test ECC Bob secp521r1 SS'
> FAILURE < ECDH Keys are different!
SymKey12 = 22-46-6B-15-0F-9B-65-B0-D6-7D-AA-0E-C5-8A-7F-F3-18-1F-5F-62-88-26-90-67-DC-99-1B-98-73-3B-58-FF
SymKey21 = FD-C3-24-27-4C-4C-56-01-62-1E-B2-AE-B1-F6-68-64-61-72-EB-2E-6D-F4-30-21-F1-8A-73-C6-85-38-25-FA
------------------------------
'Test ECC Alice secp384r1 SS' <=> 'Test ECC Bob secp384r1 SS'
> FAILURE < ECDH Keys are different!
SymKey12 = F3-55-B0-72-49-DA-A5-6B-D7-3E-B7-F5-87-E7-4B-D1-20-A1-6E-67-EE-FF-C2-A9-12-E4-B0-20-46-F7-A5-FA
SymKey21 = 8C-63-5E-21-AC-BB-C1-AB-17-73-E2-E9-4D-95-20-07-6A-60-69-B1-E6-3B-18-EA-B6-56-FF-38-9F-F8-46-2F
------------------------------
'Test ECC Alice secp256r1 SS' <=> 'Test ECC Bob secp256r1 SS'
Success, ECDH Keys agree
------------------------------
'Alice secp521 test cert' <=> 'Bob secp521 test cert'
> FAILURE < ECDH Keys are different!
SymKey12 = B3-90-1C-1B-B0-66-BB-D8-A2-46-37-A9-E4-84-1F-FE-B8-ED-14-17-A8-D8-0C-EB-20-A0-98-5F-3A-85-73-3D
SymKey21 = 44-62-AD-3F-DA-D4-7E-17-49-05-C4-22-93-DD-36-B7-0D-28-47-93-E5-D4-63-03-00-BC-F8-99-DF-BA-A3-92
------------------------------
'Alice secp384 test cert' <=> 'Bob secp384 test cert'
Success, ECDH Keys agree
------------------------------
'Alice secp256 test cert' <=> 'Bob secp256 test cert'
Success, ECDH Keys agree
------------------------------
Press any key to exit ...

Uscita Windows 8 (versione NT 6.3.9600.0)

'Test ECC Alice secp521r1 SS' <=> 'Test ECC Bob secp521r1 SS'
Success, ECDH Keys agree
------------------------------
'Test ECC Alice secp384r1 SS' <=> 'Test ECC Bob secp384r1 SS'
Success, ECDH Keys agree
------------------------------
'Test ECC Alice secp256r1 SS' <=> 'Test ECC Bob secp256r1 SS'
Success, ECDH Keys agree
------------------------------
'Alice secp521 test cert' <=> 'Bob secp521 test cert'
Success, ECDH Keys agree
------------------------------
'Alice secp384 test cert' <=> 'Bob secp384 test cert'
Success, ECDH Keys agree
------------------------------
'Alice secp256 test cert' <=> 'Bob secp256 test cert'
Success, ECDH Keys agree
------------------------------
Press any key to exit ...   
    
posta DeepSpace101 01.08.2015 - 06:30
fonte

3 risposte

3

Aggiornamento: corretto in KB3093266 ( link )

Esegui quanto segue in una finestra di PowerShell per vedere se ce l'hai ...

Get-HotFix -id KB3093266

Le fonti confermano che questo è davvero un bug. Il problema relativo all'analisi dei file PFX in Windows 10 e Windows Server 2016 Beta quando i certificati e le chiavi private sono inizialmente installati.

La correzione dovrebbe essere disponibile in un aggiornamento di sicurezza nel settembre 2015. Onestamente, siamo piuttosto sorpresi di essere gli unici a utilizzare la crittografia a curve ellittiche su Windows poiché il nostro sembra essere il rapporto originale.

    
risposta data 22.09.2015 - 23:29
fonte
0

Non avere la reputazione di aggiungere un commento ..

.. ma puoi elencare quali versioni di .NET hai scelto come target? Otterrete lo stesso risultato su Windows 8.1 durante il targeting (e forzando nel file di configurazione dell'app) .NET Framework 4.6?

Diverse versioni di Windows sono disponibili con diverse versioni di .NET: collegamento

Ho anche appreso di recente che una macchina con .NET 4 tenterà ancora di eseguire un'applicazione che ha come target .NET 4.5 +

If the version of the .NET Framework that the app was built on is not present and a configuration file does not specify a version in a element, the app tries to run on the latest version of the .NET Framework that is present on the user's computer.

link

    
risposta data 02.08.2015 - 16:56
fonte
0

Voglio solo aggiungere alcuni dettagli; Sono anche incappato in queste modifiche di blocco nel sottosistema CNG.

Nel seguente elenco, ci sono due file; uno che descrive alcuni scenari che funzionano su Win7 / Win8.1 ma non su Win10 e uno che descrive alcune soluzioni alternative su Win10 - ma non su come acquisire un contesto crittografico e ottenere la chiave privata CNG sottostante di un certificato X.509: - /

link

Ultimi aggiornamenti non ufficiali di Microsoft è che questo sarà risolto il prossimo Patch Tuesday (se ho contato correttamente, 13 ottobre).

    
risposta data 08.10.2015 - 08:59
fonte

Leggi altre domande sui tag