To o čem mluvíš skutečně existuje, ale nenazývá se to "jednosměrná šifra", alébrž hashovací nebo digest algoritmus - asi nejznamější je SHA1 nebo MD5. Jednosměrná šifra je principiální pitomost, protože šifrování slouží k utajení informace, nikoliv k výpočtu digestu. Musíš být tedy schopen informaci zase dešifrovat.
Máš pravdu v tom, že hashe se široce používají, a to i v procesu autentizace - abys nemusel posílat heslo nešifrovaně. Nicméně postrádá smysl posílat prostý hash hesla, protože útočník sice získá jenom hash, ale moc mu to nevadí, protože ho pošle místo hesla a dostal se kam potřeboval. Typicky se tedy postupuje tak, že server pošle sekvenci náhodných znaků jako "challenge" a klient vezme tuto challenge, heslo a spočítá hash z obojího dohromady a ten teprve pošle. Takže replay attack je výrazně ztížen až znemožněn, v závislosti na tom, jak kvalitně je generována challenge.
Ukládání hashe má tedy velmi, velmi omezený význam. Z běžně používaných protokolů mne napadá snad jenom Digest Authentication dle RFC2617, kde se používá hash z "username:realm:password". Pro WEP, WPA i WPA2 potřebuješ, pokud je mi známo, znát původní klíč v otevřeném tvaru.
Proto je tedy nutné, aby byl klíč na WM uložený šifrovaně, nikoliv hashovaně. Musí být možnost ho zpětně dešifrovat, protože používané protokoly vyžadují znalost klíče, nikoliv jen jeho hashe.
Nevím jak konkrétně je ten klíč uložen. Nicméně z logiky věci bych očekával použití symetrické šifry (nemá moc smysl používat v tomto konkrétním případě asymetrickou, nic ti to nepřinese), nejspíš AES256 - to je průmyslový standard. Někam je ale nutné schovat použitý klíč, a to nevím jak WM dělá - popisoval jsem, jak to dělají velká Windows, ale ve Windows Mobile nejsem tak honěný, takže nevím, zda mají nějaký ekvivalent DPAPI.
Takže abych to shrnul: neprotestuji proti existenci a použitelnosti jednosměrných algoritmů, ale (a) proti jejich označení za "šifru", (b) ideji, že by mohly být použity v tomto konkrétním případě. |