Test di verifica della firma digitale

1

Sto testando un sistema che comporta l'aggiornamento di un database utilizzando file inviati da parti esterne. Questi file inviati da parti esterne sono fondamentalmente solo file flat di grandi dimensioni per aggiornare un database. Il requisito è che questi file debbano essere firmati utilizzando una chiave di firma file in conformità con lo standard di firma digitale FIPS 186-4 utilizzando l'algoritmo di hash SHA-256 e crittografando l'hash derivato utilizzando un algoritmo di firma digitale RSA del 2048 -bit modulo in conformità con PKCS # 1. L'algoritmo di hash SHA-256 verrà applicato all'intero file di dati. Ciò comporterà una firma digitale di 2048 bit in forma Octet, che verrà aggiunta nel file .

Per verificare che il sistema verifichi correttamente la firma, devo prima firmare il file. La sicurezza delle informazioni non è davvero il mio strong e gradirei una guida nella giusta direzione. C'è uno strumento che posso usare per eseguire questo? Oltre ai certificati, quali sarebbero i prerequisiti?

Molte grazie.

    
posta fdama 14.07.2014 - 14:04
fonte

1 risposta

1

Il testo che citi significa fondamentalmente: il file è firmato con RSA , e la firma è aggiunta "così com'è" al file. Qui non c'è nulla sui certificati; le firme usano i tasti . I certificati sono modi per associare le chiavi pubbliche alle identità. Il brano che citi, anche se atroce in molti modi, è ancora relativamente chiaro riguardo ai certificati: non ce ne sono qui.

Le firme hanno senso solo relativamente a verifica :

  • La firma viene prodotta con, come input, i dati da firmare (l'intero file) e la chiave privata .
  • La verifica prende come input i dati firmati (l'intero file, ancora una volta), la firma e la chiave pubblica e ti dice se la firma è buona o meno.

Mentre descrivi il problema, il database si aspetta che i file di input siano firmati con una chiave privata specifica , corrispondente alla chiave pubblica che il database utilizzerà per la verifica. Se non hai questa chiave privata a portata di mano, non sarai in grado di generare firme. hai bisogno di quella chiave se vuoi firmare un tuo file. Altrimenti, è assolutamente assente.

Se hai la chiave privata in un formato o in un altro, dovrai comunque scrivere una piccola porzione di codice per calcolare la firma e aggiungerla al file (questo semplice processo di "accodamento" non è un formato di firma standard, quindi non è possibile ottenere uno strumento standalone immediato per farlo). Questo può essere fatto in molti framework di programmazione, ad es. con Java (utilizzando java.security.Signature ) o C (con alcune librerie come OpenSSL ).

Ad ogni modo, in crittografia, non puoi fare test decenti "dall'esterno". Il meglio che puoi fare è prendere un file di aggiornamento firmato esistente, accettato dal database; quindi modifica la firma (modifica il valore di uno dei byte della firma, che dovrebbe essere l'ultimo 256 byte del file firmato, dalla tua descrizione) e verifica che il file con la firma modificata non sia più accettato dal database . Ciò dimostrerebbe che il database "verifica qualcosa", non che lo fa correttamente. Sapere se un sistema crittografico fa il proprio lavoro in modo adeguato non viene fatto da testing ma da controllo del codice .

    
risposta data 14.07.2014 - 19:24
fonte

Leggi altre domande sui tag