Ad hoc significa semplicemente:
Ad hoc is a Latin phrase meaning "for this". It generally signifies a solution designed for a specific problem or task, non-generalizable, and not intended to be able to be adapted to other purposes.
In sicurezza, l'uso di protocolli ad-hoc di solito è una cosa negativa. Esistono (ora) protocolli MAC ben definiti ben definiti; ad esempio, HMAC (MAC basato su hash) definito come: HMAC(k, m) = H((k ^ opad) + H((k ^ ipad) ++ m))
, dove H
è una funzione hash (ad esempio, SHA128), opad è un blocco lungo costante esadecimale 5c5c5c...5c
, ipad è un 363636...36
, k è la chiave segreta condivisa (utilizzata per generare e convalidare il MAC), ^
è XOR, +
è concatenazione.
In SSLv3, il MAC descritto nella sezione 5.2.3.1 a prima vista sembra un HMAC:
The MAC is generated as:
hash(MAC_write_secret + pad_2 +
hash(MAC_write_secret + pad_1 + seq_num +
SSLCompressed.type + SSLCompressed.length +
SSLCompressed.fragment));
where "+" denotes concatenation.
pad_1: The character 0x36 repeated 48 times for MD5 or 40 times for SHA.
pad_2: The character 0x5c repeated 48 times for MD5 or 40 times for SHA.
ma nota che XOR non viene mai usato - è sempre una concatenazione. Nota che è H(k + opad + H(k + ipad + m))
. Inoltre, il MAC write secret k
è semplicemente MD5(master_secret + SHA('A' + master_secret + ServerHello.random + ClientHello.random))
nel caso in cui MD5 sia l'hash. È abbastanza probabile che queste costruzioni non standard perdano informazioni a potenti attaccanti.
Per citare questo documento (differenze tra SSLv2, SSLv3 e TLS (PDF) ):
Ad hoc use of message authentication codes: there are MAC constructions that have not been subject to analysis such as HMAC. Wagner and Schneier don't have any specific objections to them but the point is valid: it's better to use something that has withstood a fair amount of analysis than something that hasn't, particularly in fielded systems.
Premesso tornando a il documento di Wagner e Schneier (PDF) , sembra che SSLv3 stia usando solo una vecchia versione di HMAC che era obsoleta nel 1996:
SSL protects the integrity of application data by using a cryptographic MAC. The SSL designers have chosen to use HMAC, a simple, fast hash-based construction with some strong theoretical evidence for its security [BCK96]. In an area where several initial ad-hoc proposals for MACs have been cryptanalyzed, these provable security results are very attractive. HMAC is rapidly becoming the gold standard of message authentication, and it is an excellent choice for SSL. Barring major unexpected cryptanalytic advances, it seems unlikely that HMAC will be broken in the near future.
We point out the SSL 3.0 uses an older obsolete version of the HMAC construction. SSL should move to the updated current HMAC format when convenient for maximal security.