Appendix B. Tecniche di supporto (Supporting Techniques)
Questa appendice contiene le specifiche delle tecniche di supporto utilizzate in questo documento, incluse le funzioni hash e le funzioni di generazione maschera.
B.1. Hash Functions (Funzioni hash)
Le funzioni hash vengono utilizzate per mappare messaggi di lunghezza arbitraria a output di lunghezza fissa. Le funzioni hash utilizzate negli schemi di questo documento devono soddisfare le seguenti proprietà:
- Resistenza alla preimmagine (Preimage Resistance): Dato un valore hash h, è computazionalmente non fattibile trovare un messaggio m tale che Hash(m) = h
- Resistenza alla seconda preimmagine (Second Preimage Resistance): Dato un messaggio m1, è computazionalmente non fattibile trovare un messaggio diverso m2 tale che Hash(m1) = Hash(m2)
- Resistenza alle collisioni (Collision Resistance): È computazionalmente non fattibile trovare due messaggi diversi qualsiasi m1 e m2 tali che Hash(m1) = Hash(m2)
Funzioni hash raccomandate
Questo documento raccomanda l'uso delle seguenti funzioni hash:
| Funzione hash | Lunghezza output(bit) | Lunghezza output(byte) | Stato |
|---|---|---|---|
| SHA-1 | 160 | 20 | ⚠️ Obsoleto(solo compatibilità all'indietro) |
| SHA-256 | 256 | 32 | ✅ Raccomandato |
| SHA-384 | 384 | 48 | ✅ Raccomandato |
| SHA-512 | 512 | 64 | ✅ Raccomandato |
| SHA-512/224 | 224 | 28 | ✅ Disponibile |
| SHA-512/256 | 256 | 32 | ✅ Disponibile |
Identificazione ASN.1 delle funzioni hash
Identificatore di algoritmo per SHA-256:
id-sha256 OBJECT IDENTIFIER ::= {
joint-iso-itu-t(2) country(16) us(840) organization(1)
gov(101) csor(3) nistalgorithm(4) hashalgs(2) 1
}
Identificatore di algoritmo per SHA-384:
id-sha384 OBJECT IDENTIFIER ::= {
joint-iso-itu-t(2) country(16) us(840) organization(1)
gov(101) csor(3) nistalgorithm(4) hashalgs(2) 2
}
Identificatore di algoritmo per SHA-512:
id-sha512 OBJECT IDENTIFIER ::= {
joint-iso-itu-t(2) country(16) us(840) organization(1)
gov(101) csor(3) nistalgorithm(4) hashalgs(2) 3
}
B.2. Mask Generation Functions (Funzioni di generazione maschera)
Una funzione di generazione maschera (Mask Generation Function, MGF) prende come input una stringa di ottetti di lunghezza variabile e una lunghezza di output richiesta, e genera una stringa di ottetti di output della lunghezza specificata. Le funzioni di generazione maschera possono essere basate su funzioni hash o altre funzioni.
L'uso principale delle funzioni di generazione maschera è generare dati dall'aspetto casuale negli schemi di padding.
B.2.1. MGF1
MGF1 è una funzione di generazione maschera basata su una funzione hash. MGF1 (mgfSeed, maskLen) prende come input un seed di lunghezza variabile e una lunghezza di maschera richiesta, e produce una maschera della lunghezza specificata.
MGF1 (mgfSeed, maskLen)
Input (Input)
mgfSeed Seed di generazione maschera, stringa di ottetti di lunghezza arbitraria
maskLen Lunghezza attesa della maschera(in ottetti)
Output (Output)
mask Maschera di lunghezza maskLen, stringa di ottetti
Errore (Error)
"mask too long" (maschera troppo lunga)
Passi (Steps)
-
Se maskLen > 2^32 * hLen, output "mask too long" e fermarsi.
-
Sia T una stringa di ottetti vuota.
-
Per il contatore C da 0 a ⌈maskLen / hLen⌉ - 1:
- Convertire il contatore C in una stringa di ottetti C di lunghezza 4: C = I2OSP(C, 4)
- Concatenare l'hash di mgfSeed e C a T: T = T || Hash(mgfSeed || C)
-
Produrre i primi maskLen ottetti di T come maschera.
Opzioni MGF1 (MGF1 Options)
La funzione hash predefinita di MGF1 è SHA-1. Per le nuove applicazioni, si raccomanda l'uso di SHA-256 o di una funzione hash superiore.
Identificazione ASN.1 di MGF1 con SHA-256:
id-mgf1 OBJECT IDENTIFIER ::= { pkcs-1 8 }
-- Il parametro di MGF1 è la funzione hash utilizzata
AlgorithmIdentifier { ALGORITHM:IOSet } ::= SEQUENCE {
algorithm ALGORITHM.&id({IOSet}),
parameters ALGORITHM.&Type({IOSet}{@algorithm}) OPTIONAL
}
Considerazioni sulla sicurezza per MGF
Nel modello dell'oracolo casuale, se la funzione hash sottostante si comporta bene, l'output di MGF1 è computazionalmente indistinguibile da una stringa veramente casuale. Ciò rende MGF1 adatto per l'uso in schemi come OAEP e PSS.