malik7934
Messages postés1154Date d'inscriptionmardi 9 septembre 2003StatutMembreDernière intervention15 août 2009
-
8 juil. 2005 à 14:22
cs_Anthomicro
Messages postés9433Date d'inscriptionmardi 9 octobre 2001StatutMembreDernière intervention13 avril 2007
-
9 juil. 2005 à 02:17
Salut a tous...
Ceci n'est pas une question mais j'avais juste envie de partage une experience interessante. C'est une methode de crypto assez simple que j'ai decouvert il y a peu.
Ca s'appelle BROADCAST ENCRYPTION (abbreviations: BE). Cela permet de rendre accessible des donnees seulement a un sous groupe d'utilisateurs choisis par l'admin parmis les membres par exemple de maniere a ce que ce sous groupe soit dynamique.
Plutot que de la theorie, je presente juste un exemple simple avec un nombre fixe d'utilisateurs et sans revocation ou ajout. Il y a passablement de doc sur google pour ceux qui voudraient aller plus loin. En esperant que cela puisse interesser quelqu'un :-)
Dans cet exemple, il y a 8 utilisateurs. Ces 8 utilisateurs doivent recevoir des infos cryptées. Les destinataires ne sont pas forcément les mêmes selon les messages. BE permet de définir qui peut décrypter un message/fichier crypté laissé sur un serveur.
Méthode: on place les utilisateurs aux feuilles d'un arbre binaire, chaque noeud est une clé symétrique (impossible avec l'asymetrie si jamais).
Chaque utilisateur connait les clés de la racine a eux (dans ce cas, c'est 4 clés par personne)
Arbre avec les utilisateurs
Racine
a_______|______b
c___|___d e___|___f
__|__ __|__ __|__ __|__
| | | | | | | |
g h i j k l m n
Alain Barbara Charles Daniel Emma Fabien Géraldine Hubert sont les feuilles
Alain connaît les clés : Racine, a, c, g
Barbara connaît les clés : Racine, a, c, h
Charles connaît les clés : Racine, a, d, i
Daniel connaît les clés : Racine, a, d, j
Emma connaît les clés : Racine, b, e, k
Fabien connaît les clés : Racine, b, e, l
Géraldine connaît les clés : Racine, b, f, m
Hubert connaît les clés : Racine, b, f, n
En numérotant les clés de 0 à 14, j'ai créé une table users_be:
+----+-----------+------+------+------+------+
| id | name | key1 | key2 | key3 | key4 |
+----+-----------+------+------+------+------+
| 1 | Alain | 0 | 1 | 3 | 7 |
| 2 | Barbara | 0 | 1 | 3 | 8 |
| 3 | Charles | 0 | 1 | 4 | 9 |
| 4 | Daniel | 0 | 1 | 4 | 10 |
| 5 | Emma | 0 | 2 | 5 | 11 |
| 6 | Fabien | 0 | 2 | 5 | 12 |
| 7 | Geraldine | 0 | 2 | 6 | 13 |
| 8 | Hubert | 0 | 2 | 6 | 14 |
+----+-----------+------+------+------+------+
Maintenant, si on veut déposer un message/fichier crypté de manière à ce que tout le monde puisse le décrypter,
on utiliserala clé "racine". Si on veut que seulement Alain, Barbara et Emma puisse le décrypter, on utilisera les clés "c" et "k".
A quoi ca sert? Imaginer un système avec des centaines d'utilisateurs et ensuite pensez à l'économie de calculs...
Je rappelle qu'il s'agit d'une simple implémentation ne prenant pas en compte des éléments de révocations, update ou ajouts d'utilisateurs par exemple. Ce code a pour seul but de faire découvrir la Broadcast Encryption.
<?php
// CONNEXION A LA BASE DE DONNEES
$serveur = "localhost";
$base = "***";
$user = "***";
$pass = "***";
$connect = mysql_connect($serveur, $user, $pass) or die ("click F5 to reload please...");
Message à encoder: CodeS-SouceS IS YOUR FRIEND
Utilisateurs Autorisés: Alain Barbara Charles Daniel Hubert
Clés nécessaires:
A0o8Er5Q
B5Tu8Fj
Clé aléatoire pour encrypter le message: Lxp8K5qW
Message encrypté: ac2b5c6a93934eb2bdc010b8ba1cdc166999b14ed934305acbeecc7ca30a2adb
Header du message: 955bc4c45687f48c 3e6bfb4170cfb168
Essais de décryptage:
chaque personne recoit le message et le header. Officiellement, les personnes pouvant lire sont: Alain Barbara Charles Daniel Hubert
Allons y...