« C'est beau comme la... | Main | Papa m'a dit »
 20050615 Wednesday June 15, 2005

L'entropie galopante

Je ne le dirais jamais assez, Sun lançait il y a dix une comète dont le monde de l'informatique ne s'est jamais remis: Java. Est-il possible de rêver plus beau cadeau d'anniversaire que de lancer à nouveau cette supernovae qu'est le projet opensolaris.org. Personnellement, je pense que non et même si mes connaissances en système d'exploitation sont aussi minces que les chances d'Opportunity de sortir de sa boue de cendres, je retrouve là le courage et le culot qui font que je reste au bout de 16 ans un employé de Sun convaincu. Je n'aurais certainement pas la prétention d'entrer plus en profondeur dans ce projet de spécialistes, mais il se trouve que pour des raisons personnelles je m'intéresse depuis peu au domaine de l'entropie que le couple matériel (processeur + mémoire) et système d'exploitation sont capables de construire. Des projets comme Gnu Privacy Guard ou Entropy Gathering Daemon utilisent de tels algorithmes pour les générations des clés de cryptage car les nombres aléatoires fournis par ces procédures n'ont pas les mêmes problèmes de récurrences que les célèbres font rand() ou sa grande soeur srand(). Par simple curiosité, je suis allé voir ce qu'il était possible de trouver dans le projet opensolaris.org en termes d'utilisation de l'entropie d'un système pour résoudre élégamment ce problème. Je n'ai pas été déçu! On peut voir ici le code utilisé dans le projet Gnupg pour calculer l'entropie ...

/* Get various basic pieces of system information: Handle of active
* window, handle of window with mouse capture, handle of clipboard owner
* handle of start of clpboard viewer list, pseudohandle of current
* process, current process ID, pseudohandle of current thread, current
* thread ID, handle of desktop window, handle of window with keyboard
* focus, whether system queue has any events, cursor position for last
* message, 1 ms time for last message, handle of window with clipboard
* open, handle of process heap, handle of procs window station, types of
* events in input queue, and milliseconds since Windows was started */
{ byte buffer[20*sizeof(ulong)], *bufptr.
bufptr = buffer;
...



... et le même dans le cadre du projet opensolaris.org ...

     74 /* Physical memory entropy source */
     75 typedef struct physmem_entsrc_s {
     76         uint8_t *parity;                /* parity bit vector */
     77         caddr_t pmbuf;                  /* buffer for memory block */
     78         uint32_t nblocks;               /* number of  memory blocks */
     79         int entperblock;                /* entropy bits per block read */
     80         hrtime_t last_diff;             /* previous time to process a block */
     81         hrtime_t last_delta;            /* previous time delta */
     82         hrtime_t last_delta2;           /* previous 2nd order time delta */
     83 } physmem_entsrc_t;



... ce qui devrait éviter ce style de problème. Prochaine étape: je compile ce code et je vous tiens au courant.


Technorati Tag: OpenSolaris
Technorati Tag: Solaris



[General] ( June 15, 2005 03:30 PM ) Permalink | Comments [0]
Trackback URL: http://blogs.sun.com/neo/entry/l_entropie_galopante
Comments:

Post a Comment:

Name:
E-Mail:
URL:

Your Comment:

HTML Syntax: NOT allowed