Další z novinek Tentokrát to bude velice krátké, pro dnešek jsem vybral novou funkci, která je dostupná ve dvanácce a jmenuje se STANDARD_HASH. A její účel asi nikoho nepřekvapí – vrací zahashovaný vstup s tím, že k dispozici jsou následující algoritmy pro hash:
- SHA1 (deafult) – 160bitů. Je třebas připomenout, že SHA1 byla z kryptografického hlediska (nikoliv uživatelského) prolomena a kolizi jsme schopni nalézt dříve než v teoretických 2^80, konkrétně podle wikipedie v 2^61. Což je pouze prolomeno z té teoretické části, z praktické je to pořád ještě nepoužitelné. Nicméně jak nám řikali někdy na vejšce, je třebas po tomhle důkazu od této funkce pomalu ustupovat. Microsoft to hodlá udělat v 2017.
- SHA256, SHA384, SHA512 – 256, 385, 512 bitů. Tyto hashe ještě nebyly žádným způsobem nabořeny takže “clear” i pro tu největší bezpečnost. Pochopitelně to něco stojí, o proti SHA1 je to cca 20-25% výkonu (podle wiki, vnitřní implementaci Oracle jsem neměřil)
- MD5 - 128bitů. Kryptograficky i uživatelsky prolomená z pohledu kolizí. Kolize jsme schopni hledat skoro v runtime pro libovolný vstup. Není to tak dlouho, co to bylo dokázáno a konkrétně za tím stál čech pracující na MatFyzu – Vlastimil Klíma a pokud si dobře pamatuju, tak paralelně s ním bořil MD5 tým Wangové v Číně, ale to neni tak podstatné – nebyli první a Wang se jmenuje půlka Číny
Určitě se hodí pro výpočty, kde nám nejde úplně o bezpečnost, patrně to bude sprinter (podle wiki až dvakrát rychlejší než SHA*)
Oracle pochopitelně nepřišel s HASHema až nyní, ale byly k dispozici již dříve – ale pouze jako procedury v PL/SQL balících DBMS_CRYPTO a DBMS_OBFUSCATION_TOOLIKIT. V SQL byla pouze silně kolizní ORA_HASH (32bit). Takže nyní plně v “pure” SQL pomocí funkce STANDARD_HASH (a opět chybí sůl). Příkla z duálu:
select
standard_hash('Budlíky') as default_sha1,
standard_hash('Budlíky','SHA1') as default_explicit_sha1,
standard_hash('Budlíky','MD5') as MD5,
standard_hash('Budlíky','SHA256') as SHA256,
standard_hash('Budlíky','SHA384') as SHA384,
standard_hash('Budlíky','SHA512') as SHA512
from dual;
Výsledek:
Poznámky:
- Vrací typ RAW
- Nelze použít na LOBy a LONGy
To by mohlo být vše Ještě link na přednášku Vlastimila Klímy pár měsíců po té, co prolomil md5. Přednášku jsme měli někde na FELu v rámci CryptoFestu : Video z AVC ČVUT.