sql >> Databáze >  >> RDS >> Mysql

Alternativa k hashovanému SSN jako klíče v MySQL

Myslím, že tento článek může být velmi relevantní pro to, co děláte. Pokud si skutečně přejete „anonymizovat“ SSN z bezpečnostních důvodů a právní odpovědnosti, pak jejich pouhé hašování nestačí.

Pouhé jejich hašování by bylo zcela deterministickým procesem, takže pro efektivní „maskování“ jednotlivých SSN je třeba proces randomizovat. Jinak byste mohli jednoduše použít hrubou sílu přes všechny možné kombinace SSN (což by vyžadovalo mnohem méně práce než pokus o hrubou sílu hashovací funkce) a hledat odpovídající hodnotu.

Abyste viděli, proč to platí, vezměte si nejjednodušší příklad, že SSN může nabývat pouze dvou hodnot, 0 a 1. Bez ohledu na kvalitu a sílu hashovací funkce budou nakonec pouze dva možné výsledky a je snadné vidět který je který.

Je to stará hra, proč byste neměli hashovat např. hesla přímo, aniž by bylo nejprve provedeno nějaké předběžné zpracování. Podkladová data prostě neobsahují dostatek entropie, a proto budou snadným cílem pro vyhledávání v předem vypočítané tabulce.

Ve chvíli, kdy se vaše SSN stanou soukromými a důvěrnými (nejsou v každé zemi, takže promiňte můj hloupý dotaz v komentářích :), měly by se na váš konkrétní případ vztahovat stejné osvědčené postupy, které se používají také pro ukládání hesel, tj. adaptivní hashovací algoritmus, který kompenzuje nedostatek počáteční entropie, jako je bcrypt, scrypt a PBKDF2 (který již doporučil Marcus Adams).



  1. Vložení datového objektu PHP se neprovádí

  2. Ekvivalent klauzule MySQL LIMIT pro SQL SERVER

  3. Doporučený způsob / příkaz číst data z webové služby, analyzovat tato data a vložit je do SQLite db

  4. MySQL LEFT JOIN pouze 1 řádek v závislosti na hodnotě MAX().