Curs: | SeguretatXarxesInformàtiques |
Fitxers: | TecniquesCriptografiques.pdf (TecniquesCriptografiques.odp) |
Repositori SVN: | https://[email protected]/svn/iceupc/SeguretatXarxesInformàtiques |
Usuari: | anonymous |
Paraula de pas: | sense paraula de pas |
Autors: | Sergi Tur Badenas |
A criptografia, una funció de hash és una transformació que converteix una entrada qualsevol en un conjunt de caràcters (String) de longitud fixa anomenat valor de hash.
Ús:
La funció resum, s'utilitza principalment tant en el camp de la criptografia com en el de la indexació de dades i en el de les comunicacions digitals com a codi de redundància per a corregir errors de transmissió. Molts sistemes relacionats amb la seguretat informàtica, amb les bases de dades o les transmissions de dades, usen funcions o taules de resum.
Es calculen amb funcions de hash.
Exemple:
43:51:43:a1:b5:fc:8b:b7:0a:3a:a9:b1:0f:66:73:a8
A la pàgina d'aquest wiki podeu trobar les petjades digitals del servidor HTTP i SSH d'aquesta wiki.
Vegeu mkpasswd
Vegeu mkpasswd
Vegeu mkpasswd
Vegeu LM hash
Vegeu NT hash
Permet calcular la suma MD5 d'un fitxer:
$ md5sum ubuntu910.iso bdf5020b23b5034cb9540de5970e3be3 ubuntu910.iso
Ordre proporcionada pel paqeut del mateix nom:
$ dpkg -S md5sum | grep bin .... coreutils: /usr/bin/md5sum $ sudo apt-get install coreutils $ touch prova.iso $ md5sum prova.iso d41d8cd98f00b204e9800998ecf8427e prova.iso
http://www.adamek.biz/md5-generator.php
És el mètode d'encriptació utilitzat per les paraules de pas en distribucions Linux modernes com Ubuntu (--acacha 21:07, 5 abr 2010 (UTC)). Consulteu:
/etc/login.defs
El paràmetre:
ENCRIPT_METHOD
També consulteu PAM i John The Ripper.
Per calcular el hash, abans:
$ sha1sum prova.iso
Ara hi ha versions més potents:
$ sha <TABULADOR DOS COPS> sha1sum sha224sum sha256sum sha384sum sha512sum shadowconfig shar shares-admin shasum
Vegeu Mkpasswd
Vegeu APG
És important tenir en compte que els sistemes de xifratge actuals per emmagatzemar paraules de pas (per exemples les paraules de pas del fitxer /etc/passwd) estan basats en sumes hash de diferents tipus (com MD5, SHA o SHA512) però no són directament sumes md5! Per exemple si utilitzeu l'ordre md5sum per a crear la paraula de pas:
$ md5sum <<EOT > 1234 > EOT e7df7cd2ca07f4f1ab415d457a6e1c13 -
I ara creem un usuari amb la mateixa paraula de pas també basada en md5. Modifiqueu PAM per utilitzar paraules de pas md5 amb el nous usuaris. Modifiqueu el fitxer:
$ sudo joe /etc/pam.d/common-password
Canvieu la línia:
password [success=1 default=ignore] pam_unix.so obscure sha512
per:
password [success=1 default=ignore] pam_unix.so obscure md5
ara creeu un usuari:
$ sudo adduser pep
I li poseu també 1234 com a paraula de pas. Si consulteu la paraula de pas generada:
$ sudo cat /etc/shadow ... pep:$1$n1.1CuXe$mGEkxfY4wY4tNejlUuK9o.:15277:0:99999:7:::
No s'assembla en res amb la suma MD5. Això es per que s'apliquen dos tècniques anomenades salting i stretching. El salting provoca que els atacs . El stretching provoca que els atacs de força bruta siguin més complicat (tardin més temps).
El format és:
$id$salt$encrypted
Els identificadors ($id inicial) són:
ID | Method ------------------------------------------------- 1 | MD5 2a | Blowfish (on some Linux distributions) 5 | SHA-256 (since glibc 2.7) 6 | SHA-512 (since glibc 2.7)
Creeu un altre usuari i veureu que la paraula de pas xifrada és diferent tot i utilitzar la mateixa paraula de pas:
$ sudo adduser pepa ... $ sudo cat /etc/shadow ... pep:$1$n1.1CuXe$mGEkxfY4wY4tNejlUuK9o.:15277:0:99999:7::: pepa:$1$EFO2qpQU$cWAsq3IYsJi8JLr0XwXOt0:15277:0:99999:7:::
On la paraula de pas està al segon camp (camps separats per :):
Per establir el password el sistema genera un sal aleatori a partir del qual es genera la paraula de pas. Com el salt original és diferent, aleshores donen paraules xifrades diferents.
Per crear els mateixos hash cal indicar el SALT. Ho podeu fer amb l'ordre mkpasswd:
$ mkpasswd -S n1.1CuXe -5 Contrasenya: $1$n1.1CuXe$mGEkxfY4wY4tNejlUuK9o. $ mkpasswd -S EFO2qpQU -m md5 Contrasenya: $1$EFO2qpQU$cWAsq3IYsJi8JLr0XwXOt0
Per comprovar la paraula de pas no es desxifra la paraula de pas (malament aniríem si es pugues desxifrar ;-) ) el que es fa és llegir el hash, extreure el salt, generar el hash a partir de la paraula de pas que prova l'usuari però utilitzant el salt del hash i si coincideixen els hash aleshores la paraula de pas és correcta.
NOTA: Observeu la importància de que no es tingui accés als hash! Si es té accés el atac de força bruta és força més ràpid per que se sap el salt
Més detalls amb:
$ man 3 crypt
Teniu diferents eines per generar aquest hashes:
Veeu HMAC
In cryptography, a salt is random data that is used as an additional input to a one-way function that hashes a password or passphrase.[1] The primary function of salts is to defend against dictionary attacks versus a list of password hashes and against pre-computed rainbow table attacks.
A new salt is randomly generated for each password. In a typical setting, the salt and the password are concatenated and processed with a cryptographic hash function, and the resulting output (but not the original password) is stored with the salt in a database. Hashing allows for later authentication while defending against compromise of the plaintext password in the event that the database is somehow compromised.
Cryptographic salts are broadly used in many modern computer systems, from Unix system credentials to Internet security.