Dove in una connessione TLS posso ottenere la firma del contenuto inviato dal server?

5

Voglio essere in grado di dimostrare che un determinato contenuto restituito da un server HTTPS è stato effettivamente pubblicato.

Ho esaminato l'intero protocollo TLS e ho scoperto che posso usare ServerKeyExchange per ottenere la firma del server di una stringa casuale che posso inviare al server, al fine di avviare il Diffie-Hellman scambio.

Tuttavia, non ho trovato il modo per me di ottenere la firma del server del contenuto che sta servendo .

C'è un modo per farlo?

    
posta Luis Cuende 29.07.2015 - 00:18
fonte

2 risposte

9

In TLS, né il cliente né il server firmano alcun contenuto. Le firme crittografiche utilizzate nell'handshake iniziale sono destinate all'autenticazione : il client ottiene una certa garanzia che comunica con il server giusto e (se vengono utilizzati i certificati client) il server ottiene una certa garanzia che parla al cliente giusto. Tuttavia, nessuna di queste garanzie è trasferibile: sebbene il client sappia che i dati provengono dal server, il client non riceve alcuna prova che possa essere mostrata a terzi. Questa è l'autenticazione, non il non ripudio.

Anche se il client registra tutto ciò che riguarda l'intera connessione (tutti i byte di dati inviati e ricevuti, tutte le chiavi di crittografia negoziate e così via), ciò dimostra solo una cosa: che, in un momento non specificato, il server era, infatti, un server TLS ed è stato coinvolto in almeno una connessione TLS. Tutto il resto, inclusi tutti i dati ricevuti e inviati dal server, potrebbero essere stati fabbricati in seguito, quindi non può essere una prova (in senso crittografico).

Quindi, non hai trovato un modo per "ottenere la firma del server sul contenuto che sta servendo" per il motivo che questa firma non esiste . Se si desidera che il server firmi le cose, questo deve essere organizzato a livello di protocollo, all'interno del tunnel TLS: chiedere al server di firmare i dati e inviare la firma come parte di ciò che TLS chiama "dati dell'applicazione" ". Ovviamente il server dovrà essere consapevole dell'operazione e questo non fa parte dell'elaborazione TLS (HTTPS) normale.

In alternativa, alcuni ufficiali giudiziari o funzionari simili si connettono al server, ottengono i dati e firmano lui stesso, garantendo in tal modo (in modo legale) che il server serva effettivamente questi contenuti di dati.

    
risposta data 29.07.2015 - 00:38
fonte
2

RFC4346 :

The goals of TLS Protocol, in order of their priority, are as
follows:

  1. Cryptographic security: TLS should be used to establish a secure connection between two parties.

  2. Interoperability: Independent programmers should be able to develop applications utilizing TLS that can successfully exchange cryptographic parameters without knowledge of one another's code.

Né il server né il client firmano i dati da soli. Firmano solo parte della stretta di mano con una suite specifica. Ciò significa che puoi dimostrare a una terza parte che è avvenuta una stretta di mano con un determinato server e quali dati sono stati scambiati in quella stretta di mano.

Inoltre, da qui , puoi leggere:

Standard TLS does not have non-repudiation support.

    
risposta data 29.07.2015 - 06:35
fonte

Leggi altre domande sui tag