OVH Cloud OVH Cloud

Algorithme crypt unix/linux

4 réponses
Avatar
JaySee
Bonjour, je suis entrain de recoder la fonction crypt pour une utilisation
sur microcontroleur, et j'ai beaucoup de mal a trouver l'algorithme utilisé.

J'ai pour le moment recoder un DES, mais les points qui me manque sont:
- Generation/Utilisation de la Salt (a quel moment et comment on l'utilise)
- Sur le point final, le passage en Base64 (comment on passe des 64bits au
88bits finales)

pour le moment, je me base sur les sources du crypt de NetBSD, mais leur
implementation est trop differente de la mienne, ca me pose trop de
problemes pour comprendre et appliquer.

Voila, si quelqu'un avait des infos ou des liens ... je suis preneur.

PS: Cette version est codée en C, et sera distribuée librement, licence GNU.
L'utilisation premiere sera sur un microcontroleur PIC.

- JC -

4 réponses

Avatar
Jacques Caron
On Wed, 7 Jan 2004 19:37:54 +0100, JaySee wrote:

Bonjour, je suis entrain de recoder la fonction crypt pour une
utilisation sur microcontroleur, et j'ai beaucoup de mal a trouver
l'algorithme utilisé.


Sur un FreeBSD, cd /usr/src/lib/libcrypt/ et hop. Dispo ici en ligne:

http://www.freebsd.org/cgi/cvsweb.cgi/src/lib/libcrypt/

J'ai pour le moment recoder un DES, mais les points qui me manque sont:
- Generation/Utilisation de la Salt (a quel moment et comment on
l'utilise)


Le salt est généré aléatoirement par celui qui chiffre initialement, est
stocké dans le résultat, et est utilisé par ceux qui chiffrent
ultérieurement pour vérifier le mot de passe.

- Sur le point final, le passage en Base64 (comment on passe des 64bits
au 88bits finales)


Voir fichier misc.c dans répertoire sus-cité.

pour le moment, je me base sur les sources du crypt de NetBSD, mais leur
implementation est trop differente de la mienne, ca me pose trop de
problemes pour comprendre et appliquer.


J'ai du mal à imaginer ça... En quoi peut-elle être si différente?

Jacques.
--
Interactive Media Factory
Création, développement et hébergement
de services interactifs: SMS, SMS+, Audiotel...
http://www.imfeurope.com/

Avatar
Jean-Marc Desperrier
Jacques Caron wrote:
On Wed, 7 Jan 2004 19:37:54 +0100, JaySee wrote:
pour le moment, je me base sur les sources du crypt de NetBSD, mais leur
implementation est trop differente de la mienne, ca me pose trop de
problemes pour comprendre et appliquer.


J'ai du mal à imaginer ça... En quoi peut-elle être si différente?


crypt peut être n'importe quoi, les logiciels utilisateur sont censés
utiliser uniquement les appels systèmes, et jamais gérer par eux-mêmes
le type de chiffrement. En conséquence de quoi, il y a bien des unix et
dérivés qui ne font pas la même choses quand ils font un crypt.


Avatar
JaySee
"Jacques Caron" a écrit dans le message de news:

On Wed, 7 Jan 2004 19:37:54 +0100, JaySee wrote:

Bonjour, je suis entrain de recoder la fonction crypt pour une
utilisation sur microcontroleur, et j'ai beaucoup de mal a trouver
l'algorithme utilisé.


Sur un FreeBSD, cd /usr/src/lib/libcrypt/ et hop. Dispo ici en ligne:

http://www.freebsd.org/cgi/cvsweb.cgi/src/lib/libcrypt/

J'ai pour le moment recoder un DES, mais les points qui me manque sont:
- Generation/Utilisation de la Salt (a quel moment et comment on
l'utilise)


Le salt est généré aléatoirement par celui qui chiffre initialement, est
stocké dans le résultat, et est utilisé par ceux qui chiffrent
ultérieurement pour vérifier le mot de passe.


la salt est généré aléatorement par la commande passwd, pas par la fonction
crypt, qui requiert
ce parametre.
En effet je parle de code et non d'utilisation. Ce que je cherche c'est
comment on implemente
l'utilisation (de salt en l'occurence).
Je vais plonger un peu plus dans les sources de FreeBSD qui me parraissent
plus sympas que celles
de NetBSD.

- Sur le point final, le passage en Base64 (comment on passe des 64bits
au 88bits finales)


Voir fichier misc.c dans répertoire sus-cité.


ok, cette version est simple a comprendre, ca me va ;)

pour le moment, je me base sur les sources du crypt de NetBSD, mais leur
implementation est trop differente de la mienne, ca me pose trop de
problemes pour comprendre et appliquer.


J'ai du mal à imaginer ça... En quoi peut-elle être si différente?


disons que leur implementation est tres personnel et optimisé donc c'est
assez difficile de
"comprendre" l'algo utilisé et de le refaire autrement. Or ils utilise des
unions partout, ce que
je ne peut me permettre... et donc je galere a omprendre l'implementation de
la salt.

Jacques.
--
Interactive Media Factory
Création, développement et hébergement
de services interactifs: SMS, SMS+, Audiotel...
http://www.imfeurope.com/



Avatar
JaySee
"Jean-Marc Desperrier" a écrit dans le message de
news: btj7nf$a8e$
Jacques Caron wrote:
On Wed, 7 Jan 2004 19:37:54 +0100, JaySee wrote:
pour le moment, je me base sur les sources du crypt de NetBSD, mais
leur



implementation est trop differente de la mienne, ca me pose trop de
problemes pour comprendre et appliquer.


J'ai du mal à imaginer ça... En quoi peut-elle être si différente?


crypt peut être n'importe quoi, les logiciels utilisateur sont censés
utiliser uniquement les appels systèmes, et jamais gérer par eux-mêmes
le type de chiffrement. En conséquence de quoi, il y a bien des unix et
dérivés qui ne font pas la même choses quand ils font un crypt.


C'est tout a fait vrai, crypt() peut utiliser plusieurs algorythm, notament
DES (modifié quand meme)
et MD5 suivant le parametre salt... j'ai jamais tester, mais c'est dans les
sources du crypt() NetBSD.

j'implemente la partie DES.