1.2. Requisiti (Requirements)
1.2. Requisiti (Requirements)
HTTP consente, e talvolta richiede, agli intermediari di trasformare i messaggi in vari modi. Ciò può far sì che un destinatario riceva un messaggio che non è bit a bit identico al messaggio inviato in origine. In tal caso, il destinatario non sarà in grado di verificare protezioni di integrità sui byte grezzi del messaggio HTTP del mittente, poiché la verifica di firme digitali o MAC richiede che firmatario e verificatore abbiano esattamente la stessa base della firma. Poiché non si può fare affidamento sui byte grezzi esatti del messaggio come sorgente affidabile per una base della firma, il firmatario e il verificatore devono creare indipendentemente la base della firma dalle rispettive versioni del messaggio, tramite un meccanismo resiliente a modifiche sicure che non alterano il significato del messaggio.
Per vari motivi, è impraticabile definire rigorosamente cosa costituisca una modifica sicura rispetto a una non sicura. Le applicazioni usano HTTP in modi molto diversi e possono non concordare se un particolare elemento informativo in un messaggio (ad esempio il contenuto del messaggio, il metodo o un determinato campo di intestazione) sia rilevante. Pertanto, una soluzione di uso generale deve offrire ai firmatari un certo grado di controllo su quali componenti del messaggio firmare.
Le applicazioni HTTP possono essere eseguite in ambienti che non forniscono
accesso completo o controllo sui messaggi HTTP (come l'ambiente JavaScript di un
browser) o possono usare librerie che astraggono i dettagli del protocollo (come
la libreria Java HTTP Client (HttpClient)
(https://openjdk.java.net/groups/net/httpclient/intro.html)). Queste
applicazioni devono essere in grado di generare e verificare firme nonostante una
conoscenza incompleta del messaggio HTTP.