Firme digitali e validazione reale di ciò che è stato effettivamente accettato

3

Sto sviluppando un'applicazione e parte della registrazione richiede che un utente firmi un contratto di utilizzo del servizio.

Ho letto l'argomento per alcuni giorni e sono abbastanza soddisfatto di tutte le tecniche relative alla firma digitale di un documento. Alcuni riferimenti di seguito

Digitally Sign DATA, Not Documents [chiuso]

Qual è la differenza tra una firma elettronica e una firma digitale

L'unica domanda aperta che ho è come possiamo veramente convalidare che il dato / contratto che presento all'utente per la revisione è lo stesso dei dati / contratto che è stato firmato?

Ad esempio, potrei implementare nella mia applicazione tutto l'hashing e PKI richiesto per firmare in modo sicuro il documento / i dati, ma cosa succede se ho deciso che volevo diventare corrotto e modificare il testo che è stato visualizzato sulla pagina web (potrebbe fare questo attraverso javascript, o fornendo un pdf diverso da quello che deve essere firmato).

Potrei mostrare all'utente un dato / contratto completamente diverso da quello che è richiesto, quindi nel back-end della mia applicazione, firmare i dati corretti. Posso quindi rimuovere il codice dannoso. Se qualcuno verificasse il mio software come un contratto era in discussione, vedrebbe che visualizzo il dato / contratto corretto e quindi il contratto discutibile è vincolante.

Alla fine ho il controllo su tutti gli aspetti della firma, quindi mi sto davvero sforzando di capire come tutto può essere più sicuro che prendere la parola come fornitore che non modificherò i dati / contratto mostrati all'utente.

Quindi, con tutta la sicurezza intorno alla firma del documento, alla fine mi viene in mente la fiducia in me come sviluppatore per non alterare malignamente l'accordo contrattuale mostrato all'utente.

Ho perso qualcosa nella mia ricerca? O si tratta davvero di fidarsi? In tal caso, perché preoccuparsi di firmare digitalmente?

AGGIORNAMENTO Basato sulla risposta di seguito:

Controllo il processo di firma e cosa ho scelto di visualizzare sulla pagina. Potrei mostrare un documento A dell'utente sulla pagina web. Fanno clic sul pulsante "firma ora". Il documento B è utilizzato nel back-end e firmato. Invio il documento utente B via email. Lo contestano. Non hanno modo di dimostrare di aver visto il documento A come è stato visualizzato su una pagina web che ora ho rimosso e sostituito con il documento B. A meno che un utente non sia veramente esperto e si blocca la pagina Web o catturi una schermata (la maggior parte degli utenti non vorrebbe ). Come possono dimostrare di aver accettato di documentare A?

AGGIORNAMENTO In base alla risposta accettata:

Per chiunque stia leggendo questo e anche lottando, l'unica cosa che ho davvero trascurato qui è che ho pensato che potevo essere il custode della mia chiave privata e della chiave privata dei miei clienti. Con il senno di poi, ovviamente, è solo sbagliato. L'unico modo per applicare veramente una firma digitale è consentire a entrambe le parti di firmare con la propria chiave privata e quindi fornire la propria chiave pubblica per consentire la convalida della firma. Il problema con questo è ovviamente che molti utenti non esperti di tecnologia non conoscono molto delle firme digitali e di come applicarle, quindi ho dovuto ammettere di sconfiggere e retrocedere alla semplice vecchia firma elettronica con un hashing SHA256 ' sigillo 'dopo la firma.

    
posta Gaz_Edge 27.01.2014 - 13:34
fonte

3 risposte

2

Il tuo sistema presuppone che ti stiano dando accesso alla loro chiave privata. Se lo fanno, allora le cose sono già rotte e la chiave potrebbe probabilmente essere dichiarata come compromessa e non vincolante (a seconda della giurisdizione). Una chiave privata deve essere sempre controllata dall'utente a cui appartiene e deve rifiutarsi di consentire all'utente di firmare qualcosa per suo conto.

Invece, lavorando correttamente, dovresti dare loro una copia del documento da firmare, che firmerebbero loro stessi e ti restituirebbero una copia. Altrimenti, in realtà stai solo attestando che hanno "firmato" il documento e quasi certamente non sarebbe un documento vincolante dal momento che in realtà lo stai firmando.

Questo è effettivamente l'equivalente di te che componi un documento e poi firmi il mio nome su di esso. È un falso e non è vincolante. Potrebbe esserci un caso legale a riguardo, ma è molto probabile che vada a loro favore.

Sembra che quello di cui stai parlando sia una firma elettronica piuttosto che digitale. Non è possibile avere l'autenticazione crittografica di una firma digitale per chiunque non sia il titolare della chiave privata e solo il titolare di una chiave privata può firmare qualcosa. Se un'azienda lo firma per tuo conto, non è una firma digitale, ma piuttosto elettronica. Non verifica che sia stato effettivamente tu a firmarlo e in genere non ha una maggiore legittimità rispetto a "Accetto" su un EULA. In molti casi, per poter reggere in tribunale, l'azienda deve essere in grado di dimostrare che sei stato tu a fare effettivamente clic sul pulsante e che è su di loro dimostrare che il documento non è cambiato. (Il millesimo può variare a seconda della giurisdizione, e io non sono un avvocato.) Questo può essere piuttosto difficile da fare.

    
risposta data 27.01.2014 - 15:07
fonte
2

Se l'altra parte del documento ha un senso, rileverà rapidamente il tuo comportamento nefasto. L'intero punto delle firme digitali è che qualcuno può verificare che il documento e la firma coincidano.

Facciamo un esempio. Sto registrando un contratto sul tuo sito web. Si visualizza il contratto (documento A) e io sono d'accordo. Quindi si modificano i termini del documento a proprio vantaggio (creazione del documento B) e si firma. Poi mi mandi un messaggio per posta (ho intenzione di insistere su questo).

  • Se mi mandi un documento A per posta elettronica, la firma digitale non corrisponderà quando la verificherò, quindi i miei sospetti sono suscitati.
  • Se mi mandi un documento B per posta, allora vedo che i termini sono cambiati e lo sfido.

L'unico modo per inviarmi il documento A e una firma che corrisponde al documento B è trovare una collisione nel processo di firma, che se un processo appropriato è seguito, sarà più o meno impossibile.

    
risposta data 27.01.2014 - 14:30
fonte
0

how can we truly validate that the data/contract that I present to the user for review is the same as the data/contract that has been signed?

Per quanto ho capito, questo è il problema di integrità di base. Solitamente è risolto come segue: decifrare la firma con la chiave pubblica per ottenere l'hash originale, confrontarlo con l'hash effettivo. Se differiscono, il documento è stato manomesso (e, si spera, con una funzione hash adeguata, l'inverso è vero).

L'integrità non è basata su ciò che vedo o mostro ma su ciò che posso calcolare. Questo mi rende scomodo con il software proprietario che fa tutto per me, anche se il software può anche essere firmato o certificato.

struggling to understand how anything can be more secure than taking my word as a provider that I will not alter the data/contract that is shown to the user.

Se si tratta di un'applicazione web, userai ovviamente https per evitare l'uomo nel mezzo e suppongo che tu possa richiedere una certificazione dei tuoi metodi da parte di terzi. Questo ti costerà molto a causa del lavoro richiesto e del rischio.

    
risposta data 01.12.2015 - 01:30
fonte

Leggi altre domande sui tag