Passa al contenuto principale

6.2. Registro degli algoritmi di firma HTTP (HTTP Signature Algorithms Registry)

6.2. Registro degli algoritmi di firma HTTP (HTTP Signature Algorithms Registry)

Questo documento definisce algoritmi di firma HTTP, per i quali IANA ha creato e ora mantiene un nuovo registro intitolato "HTTP Signature Algorithms". I valori iniziali per questo registro sono dati nella Sezione 6.2.2. Assegnazioni future e modifiche alle assegnazioni esistenti devono essere effettuate tramite la politica di registrazione Specification Required [RFC8126].

Gli algoritmi elencati in questo registro identificano alcuni possibili algoritmi crittografici per le applicazioni da usare con questa specifica, ma le voci non rappresentano un elenco esaustivo di algoritmi possibili né indicano l'idoneità a scopo per una particolare applicazione di questa specifica. Un'applicazione è libera di implementare qualsiasi algoritmo adatto alle sue esigenze, purché firmatario e verificatore possano concordare i parametri di quell'algoritmo in modo sicuro e deterministico. Quando un'applicazione deve segnalare l'uso di un particolare algoritmo a runtime usando il parametro di firma alg, questo registro fornisce una mappatura tra il valore di quel parametro e un particolare algoritmo. Tuttavia, l'uso del parametro alg va trattato con cautela per evitare varie forme di confusione e attacchi di sostituzione dell'algoritmo, come discusso nella Sezione 7.

Il valore Status dovrebbe riflettere lo stato di standardizzazione e l'opinione generale di gruppi di interesse rilevanti come l'IETF o organizzazioni di sviluppo di standard (SDO) legate alla sicurezza. Quando un algoritmo è registrato per la prima volta, il designated expert (DE) dovrebbe impostare il campo Status su "Active" se c'è consenso perché l'algoritmo sia generalmente raccomandato come sicuro o "Provisional" se l'algoritmo non ha raggiunto tale consenso, ad esempio per un algoritmo sperimentale. Uno status "Provisional" non significa che l'algoritmo sia noto come non sicuro, ma indica che l'algoritmo non ha raggiunto consenso sulle sue proprietà. Se in futuro l'algoritmo così registrato risulta avere difetti, la voce del registro può essere aggiornata e l'algoritmo può essere marcato come "Deprecated" per indicare che sono stati trovati problemi. Questo status non impedisce a un'applicazione di usare un particolare algoritmo; piuttosto serve a fornire un avviso su possibili problemi noti con un algoritmo che l'applicazione deve considerare. Il DE può inoltre garantire che la registrazione includa una spiegazione e un riferimento per il valore Status; ciò è particolarmente importante per algoritmi deprecati.

Ci si attende che il DE faccia quanto segue:

  • Garantire che gli algoritmi referenziati da un identificatore di algoritmo registrato siano pienamente definiti con tutti i parametri (ad esempio salt, hash, lunghezza di chiave richiesta) fissati dal testo definitorio.

  • Garantire che la definizione dell'algoritmo specifichi pienamente le funzioni primitive HTTP_SIGN e HTTP_VERIFY, incluso come tutti gli input e output definiti si mappano all'algoritmo crittografico sottostante.

  • Rifiutare registrazioni che sono alias di registrazioni esistenti.

  • Garantire che tutte le registrazioni seguano il modello presentato nella Sezione 6.2.1; ciò include garantire che la lunghezza del nome non sia eccessiva pur restando univoca e riconoscibile.

Questa specifica crea identificatori di algoritmo includendo parametri principali nella stringa identificatore per rendere il nome dell'algoritmo univoco e riconoscibile dagli sviluppatori. Tuttavia, gli identificatori di algoritmo in questo registro vanno interpretati come valori String interi e non come combinazione di parti. Cioè ci si attende che gli implementatori comprendano rsa-pss-sha512 come riferimento a un algoritmo specifico con valori di hash, maschera e salt impostati come definito nel testo definitorio che stabilisce l'identificatore in questione. Gli implementatori non analizzano le porzioni rsa, pss e sha512 dell'identificatore per determinare i parametri dell'algoritmo di firma dalla String, e la registrazione di una combinazione di parametri non implica la registrazione di altre combinazioni.