RFC 9421 - Firme dei messaggi HTTP (HTTP Message Signatures)
- Stato: Proposed Standard
- Pubblicato: February 2024
- Stream: IETF
- Errata: Nessun errata
Abstract
Questo documento descrive un meccanismo per creare, codificare e verificare firme digitali o codici di autenticazione dei messaggi (MAC, Message Authentication Codes) su componenti di un messaggio HTTP. Il meccanismo supporta casi d'uso in cui il messaggio HTTP completo potrebbe non essere noto al firmatario e in cui il messaggio può essere trasformato (ad esempio da intermediari) prima di raggiungere il verificatore. Il documento descrive anche un mezzo per richiedere che una firma sia applicata a un messaggio HTTP successivo in uno scambio HTTP in corso.
Contents
- 1. Introduzione (Introduction)
- 2. Componenti del messaggio HTTP (HTTP Message Components)
- 2.1. Campi HTTP (HTTP Fields)
- 2.2. Componenti derivati (Derived Components)
- 2.3. Parametri della firma (Signature Parameters)
- 2.4. Firma di componenti della richiesta in un messaggio di risposta (Signing Request Components in a Response Message)
- 2.5. Creazione della base della firma (Creating the Signature Base)
- 3. Firme dei messaggi HTTP (HTTP Message Signatures)
- 3.1. Creazione di una firma (Creating a Signature)
- 3.2. Verifica di una firma (Verifying a Signature)
- 3.3. Algoritmi di firma (Signature Algorithms)
- 3.3.1. RSASSA-PSS con SHA-512 (RSASSA-PSS Using SHA-512)
- 3.3.2. RSASSA-PKCS1-v1_5 con SHA-256 (RSASSA-PKCS1-v1_5 Using SHA-256)
- 3.3.3. HMAC con SHA-256 (HMAC Using SHA-256)
- 3.3.4. ECDSA con curva P-256 DSS e SHA-256 (ECDSA Using Curve P-256 DSS and SHA-256)
- 3.3.5. ECDSA con curva P-384 DSS e SHA-384 (ECDSA Using Curve P-384 DSS and SHA-384)
- 3.3.6. EdDSA con curva edwards25519 (EdDSA Using Curve edwards25519)
- 3.3.7. Algoritmi JWS (JSON Web Signature (JWS) Algorithms)
- 4. Inclusione di una firma del messaggio in un messaggio (Including a Message Signature in a Message)
- 5. Richiesta di firme (Requesting Signatures)
- 6. Considerazioni IANA (IANA Considerations)
- 6.1. Registrazione dei nomi dei campi HTTP (HTTP Field Name Registration)
- 6.2. Registro degli algoritmi di firma HTTP (HTTP Signature Algorithms Registry)
- 6.3. Registro dei parametri di metadati della firma HTTP (HTTP Signature Metadata Parameters Registry)
- 6.4. Registro dei nomi dei componenti derivati della firma HTTP (HTTP Signature Derived Component Names Registry)
- 6.5. Registro dei parametri dei componenti della firma HTTP (HTTP Signature Component Parameters Registry)
- 7. Considerazioni di sicurezza (Security Considerations)
- 7.1. Considerazioni generali (General Considerations)
- 7.2. Elaborazione e selezione del messaggio (Message Processing and Selection)
- 7.2.1. Copertura insufficiente (Insufficient Coverage)
- 7.2.2. Replay della firma (Signature Replay)
- 7.2.3. Scelta dei componenti del messaggio (Choosing Message Components)
- 7.2.4. Scelta dei parametri di firma e dei componenti derivati rispetto ai campi HTTP (Choosing Signature Parameters and Derived Components over HTTP Fields)
- 7.2.5. Etichette di firma (Signature Labels)
- 7.2.6. Confusione tra firme multiple (Multiple Signature Confusion)
- 7.2.7. Collisione del tag di firma specifico dell'applicazione (Collision of Application-Specific Signature Tag)
- 7.2.8. Contenuto del messaggio (Message Content)
- 7.3. Considerazioni crittografiche (Cryptographic Considerations)
- 7.3.1. Crittografia e collisione delle firme (Cryptography and Signature Collision)
- 7.3.2. Furto della chiave (Key Theft)
- 7.3.3. Crittografia simmetrica (Symmetric Cryptography)
- 7.3.4. Confusione nella specifica di chiave e algoritmo (Key Specification Mixup)
- 7.3.5. Primitive di firma non deterministiche (Non-deterministic Signature Primitives)
- 7.3.6. Downgrade di specifica di chiave e algoritmo (Key and Algorithm Specification Downgrades)
- 7.3.7. Firma dei valori di firma (Signing Signature Values)
- 7.4. Allineamento dei parametri di firma al messaggio di destinazione (Matching Signature Parameters to the Target Message)
- 7.4.1. Modifica dei parametri obbligatori del messaggio (Modification of Required Message Parameters)
- 7.4.2. Corrispondenza tra valori dei componenti coperti e valori nel messaggio di destinazione (Matching Values of Covered Components to Values in the Target Message)
- 7.4.3. Origine e contesto dei componenti del messaggio (Message Component Source and Context)
- 7.4.4. Contesti multipli dei componenti del messaggio (Multiple Message Component Contexts)
- 7.5. Elaborazione HTTP (HTTP Processing)
- 7.5.1. Elaborazione di nomi di campo HTTP non validi come nomi di componenti derivati (Processing Invalid HTTP Field Names as Derived Component Names)
- 7.5.2. Valori di campo semanticamente equivalenti (Semantically Equivalent Field Values)
- 7.5.3. Analisi dei valori di campo strutturati (Parsing Structured Field Values)
- 7.5.4. Versioni HTTP e ambiguità dei componenti (HTTP Versions and Component Ambiguity)
- 7.5.5. Attacchi di canonicalizzazione (Canonicalization Attacks)
- 7.5.6. Valori di campo non di tipo lista (Non-List Field Values)
- 7.5.7. Attacchi di padding con valori di campo multipli (Padding Attacks with Multiple Field Values)
- 7.5.8. Gestione ambigua degli elementi della query (Ambiguous Handling of Query Elements)
- 8. Considerazioni sulla privacy (Privacy Considerations)
- 9. Riferimenti (References)
- Appendice A. Rilevamento delle firme dei messaggi HTTP (Detecting HTTP Message Signatures)
- Appendice B. Esempi (Examples)
- B.1. Chiavi di esempio (Example Keys)
- B.1.1. Chiave RSA di esempio (Example RSA Key)
- B.1.2. Chiave RSA-PSS di esempio (Example RSA-PSS Key)
- B.1.3. Chiave di prova ECC P-256 di esempio (Example ECC P-256 Test Key)
- B.1.4. Chiave di prova Ed25519 di esempio (Example Ed25519 Test Key)
- B.1.5. Segreto condiviso di esempio (Example Shared Secret)
- B.2. Casi di prova (Test Cases)
- B.2.1. Firma minima con rsa-pss-sha512 (Minimal Signature Using rsa-pss-sha512)
- B.2.2. Componenti coperti selettivi con rsa-pss-sha512 (Selective Covered Components Using rsa-pss-sha512)
- B.2.3. Copertura completa con rsa-pss-sha512 (Full Coverage Using rsa-pss-sha512)
- B.2.4. Firma di una risposta con ecdsa-p256-sha256 (Signing a Response Using ecdsa-p256-sha256)
- B.2.5. Firma di una richiesta con hmac-sha256 (Signing a Request Using hmac-sha256)
- B.2.6. Firma di una richiesta con ed25519 (Signing a Request Using ed25519)
- B.3. Proxy di terminazione TLS (TLS-Terminating Proxies)
- B.4. Trasformazioni dei messaggi HTTP (HTTP Message Transformations)
- B.1. Chiavi di esempio (Example Keys)
- Ringraziamenti (Acknowledgements)
- Indirizzi degli autori (Authors' Addresses)