Kirjautuminen

Haku

Tehtävät

Keskustelu: Yleinen keskustelu: Key derivation function

Sivun loppuun

ottis [29.06.2007 00:14:52]

#

Minun pitäisi tehdä functio joka tekee n pituisesta salasanasta x bittisen salausavaimen.
http://en.wikipedia.org/wiki/Key_derivation_function
Olen nähnyt toteutuksia jolla tämä tehdään hashaamalla salasana esimerkiksi md5:lla tai sha1:llä, hashi on sitten rajattu niin että tulee halutun kokoinen avain.
Mieleeni tulee kuitenkin kysymys, eikö tälläisellä menetelmällä tuotettu avain ole turvaton, kun siinä on merkkejä ainoastaan a-f ja 0-9?
Onko huoleni aiheeton? Jos ei niin mikä olisi turvallinen tapa toteuttaa operaatio?

Metabolix [29.06.2007 00:21:33]

#

Merkit 0-9 ja a-f muodostavat heksadesimaalijärjestelmän. Avain on siis kokonaisluku, josta voi näppärästi katkaista sopivan pätkän. On vain helpompaa kirjoittaa jokainen merkki 0-255 kahtena merkkinä 0-f, niin ei tule ongelmia merkistöjen kanssa.

Antti Laaksonen [29.06.2007 17:38:10]

#

Merkistön valinta ei vaikuta avaimen turvallisuuteen. Voihan jokaisen avaimen esittää myös binäärilukuna, jolloin käytössä on vain merkit 0 ja 1.

tesmu [29.06.2007 19:55:37]

#

Onkos muuten tuon rajallisen määrän (eli hashi on aina samanpitunen) ideana se että hashista ei voi nähä hashatun salasanan pituutta?

Antti Laaksonen [29.06.2007 20:25:05]

#

Ajatuksena on, että hajautusfunktio (hash function) laskee mille tahansa tiedolle rajatulle lukuvälille sijoittuvan tunnusluvun. Yleensä siinä sivussa menetetään tieto alkuperäisen tiedon pituudesta. Kuitenkaan salasanan pituuden tietäminen ei juuri auta murtamista, sillä jos ehditään tutkia kaikki tietynpituiset salasanat, ehditään myös käytännössä tutkia saman tien kaikki sitä lyhyemmät salasanat.

Darwen [29.06.2007 21:06:19]

#

Antti Laaksonen kirjoitti:

Merkistön valinta ei vaikuta avaimen turvallisuuteen. Voihan jokaisen avaimen esittää myös binäärilukuna, jolloin käytössä on vain merkit 0 ja 1.

Merkistön valinta voi vaikuttaa avaimen turvallisuuteen jos tiivistefunktioon on sisällytetty esimerkiksi poikkeuksia aakkosille. En tiedä, miten aakkosten käyttäminen md5:sta tai sha1:stä käytettäessä vaikuttaa lopputulokseen, mutta jossain hasheissa sillä on merkitystä.

os [30.06.2007 15:11:37]

#

Valmiin tiivisteen esittämiseen käytetty merkistö ei vaikuta mihinkään. Tietokoneen muistissa oleva avain on aina tietynpituinen binääriluku, esimerkiksi:
1010010101001100010010110011101001110010100100101010010010010101
Saman kokonaisluvun voi esittää myös kymmenkantaisena:
11910977828890518677
tai heksadesimaalimuodossa:
A54C4B3A7292A495

Sillä, missä muodossa avain tulostetaan tai syötetään, on aivan yhtä vähän merkitystä kuin sillä, minkä värisenä tämä merkkijono tulostetaan näytölle.

Darwen kirjoitti:

Merkistön valinta voi vaikuttaa avaimen turvallisuuteen jos tiivistefunktioon on sisällytetty esimerkiksi poikkeuksia aakkosille. En tiedä, miten aakkosten käyttäminen md5:sta tai sha1:stä käytettäessä vaikuttaa lopputulokseen, mutta jossain hasheissa sillä on merkitystä.

Käytännössä hashattavat merkkijonot, kuten käyttäjänimet ja salasanat, koostuvat usein ainoastaan ns. alfanumeerisista merkeistä (a-z,A-Z,0-9) ja tietyistä välimerkeistä ('.',' ','_'), mikä helpottaa alkuperäisen merkkijonon arvaamista tiivisteen perusteella.

Cornix [30.06.2007 20:49:33]

#

os kirjoitti:

Käytännössä hashattavat merkkijonot, kuten käyttäjänimet ja salasanat, koostuvat usein ainoastaan ns. alfanumeerisista merkeistä (a-z,A-Z,0-9) ja tietyistä välimerkeistä ('.',' ','_'), mikä helpottaa alkuperäisen merkkijonon arvaamista tiivisteen perusteella.

Omia salasanoja voikin parantaa käyttämällä erikoismerkkejä kuten !@#$%^&*(){}[] salasanoissaan. Näin valmiilla sanalistalla arvaaminen ei ole mahdollista, vaan salasana on pakko murtaa - ja siihen menee aikaa.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta