Traçage des traîtres fondé sur des couplages Duong Hieu PHAN ENST – 12/04/07
Plan Diffusion de données chiffrées avec traçage des traîtres Courbes elliptiques et couplages en cryptographie Une attaque sur le schéma de traçage des traîtres TSZ (Eurocrypt05-avec Chabanne et Pointcheval) Schéma de traçage des traîtres basé sur l’identité (PKC07- avec Abdalla, Dent, Malone-Lee, Neven et Smart)
Diffusion de données chiffrées avec traçage des traîtres
Chiffrement vs. Diffusion de données chiffrées Alice Alice Chiffrement à clé publique Centre Diffusion de données chiffrées
Sécurité d'un schéma de diffusion de données chiffrées Un bon chiffrement est nécessaire mais insuffisant ! Problème : si Bob donne sa clé à Eve, Eve pourra utiliser gratuitement les services du centre Le but du centre : décourager les usagers légitimes de révéler des informations secrètes
Décodeur pirate vs. Traçage des traîtres Un (ou plusieurs usagers) extrai(en)t des clés, puis les utilise(nt) pour fabriquer un décodeur pirate Le but du centre : à partir d’un décodeur pirate, retrouver au moins un des usagers malhonnêtes (un des traîtres) un schéma de traçage des traîtres = (un schéma de diffusion de données chiffrées + une procédure de traçage des traîtres)
Traçage des traîtres basé sur l’identité
Chiffrement basé sur l’identité [Shamir84, Boneh-Franklin01] Le chiffrement à clé publique, où la clé publique est l'identité du destinataire (qui peut être une suite arbitraire de bits) Alice clé ? Inconvénient : les clés secrètes doivent être fournies par une autorité (PKG). PKG
Diffusion de données chiffrées basée sur l’identité Centre 1 Centre 2 Centre 3 Modèle classique Groupe 1 : maths clé ? PKG Groupe 2 : info Bob Alice M ? Groupe 3 : éco Charlie
Diffusion de données chiffrées basée sur l’identité Question : est-ce un vrai inconvénient que les clés secrètes doivent être fournies par une autorité (PKG) ? Non, même dans le cas classique : c’est le centre qui génère des clés d’usagers
Modèle de sécurité c m A Challengeur Pirate (ID*, D) (ID*, D) params T : coalition de traîtres Challengeur ID1||id1 Pirate A params , ID2 ||id2, …, IDc ||idc ID2 ||id2 IDc ||idc … Setup KeyGen dID1||id1 , dID2 ||id2 , …, dIDm ||idm (ID*, D) (ID*, D) c (ID*, D) m S
Couplages sur les courbes elliptiques en cryptographie
Hypothèses cryptographiques RSA: La factorisation de est difficile. ElGamal : dans un groupe cyclique (ou sur un sous-groupe cyclique de ) DLP: le logarithme discret dans un groupe cyclique est difficile: Etant donné g, ga. Retourner a. CDH: le problème Diffie-Hellman calculatoire est difficile: Etant donné g, ga , gb. Retourner gab.
Méthodes sous-exponentielles pour la factorisation et le log discret dans Zn* Log discret : calcul d'indice (Index-calculus) Factorisation : crible quadratique (Quadratic Sieve), crible algébrique (Number Field Sieve) Ces méthodes utilisent la notion de nombre B-lisse et un test pour vérifier si un nombre est B-lisse (i.e. ses facteurs sont tous inférieurs à B). Complexité Ln(1/3,2) , où :
RSA ou Diffie-Hellman (bits) Taille de la clé Taille de la clé symétrique (bits) Taille de la clé RSA ou Diffie-Hellman (bits) 80 1024 112 2048 128 3072 192 7680 256 15360 Source : NIST Recommended Key Sizes
Groupe des points sur une courbe elliptique En 1985, Neal Koblitz et Victor Miller ont indépendamment proposé l'utilisation du groupe des points sur une courbe elliptique Groupe des points sur une courbe elliptique : il n'y a pas encore de notion convenable d'élément B-lisse avec un test efficace d'élément B-lisse pour ce groupe
Courbes elliptiques Courbe elliptique sur un corps : y2 + a1 xy + a3y = x3 + a2x2+a4x+a6 Si char( ) ≠ 2,3 : y2 = x3 + ax + b Propriété importante : on peut définir une opération sur les points des courbes non singulières ( 4a3 + 27b2 ≠ 0 ) telle qu’ils forment un groupe.
Groupe des points sur une courbe elliptique Identité du groupe : point à l'infini Il s'agit du point [0,1,0] en coordonnées projectives : Y2 Z= X3 + aXZ2 +bZ3 : la loi du groupe a une interprétation géométrique En tout cas : s = (yP - yQ) / (xP - xQ) si P ≠ Q s = (3xP2 + a) ∕ 2yP si P = Q xR = s2 - xP - xQ yR = -yP + s(xP - xR) L’associativité est bien vérifiée O
Log discret sur le groupe des points sur une courbe elliptique : Complexité ( 2y opérations) Taille de la clé ( x bits)
Comparaison 521 15360 256 384 7680 192 3072 128 224 2048 112 160 1024 80 Taille de la clé des courbes elliptiques (bits) Taille de la clé RSA ou Diffie-Hellman (bits) Taille de la clé symétrique (bits) Source: NIST Recommended Key Sizes
Couplage de Weil Courbe E sur un corps fini (le sous-groupe de points de n-torsion dans ) Balasubramanian et Koblitz : où k est le plus petit entier tel que n | qk - 1 Couplage de Weil : Skip
Couplage de Weil : un peu plus détail (1) Diviseurs sur E : Diviseur principale (diviseur associé à une fonction rationnelle f sur E) : Théorème : (pour les courbes hyperelliptiques, il n’existe pas cette isomorphisme et il faut donc travailler directement sur )
Couplage de Weil : un peu plus détail (2) Etant donné P, Q E[n], il existe des fonctions fP , fQ: div(fP) = n[P] – n[O], div(fQ) = n[Q] – n[O] Couplage de Weil:
Couplage de Weil : propriétés 1. Bilinéarité: P, Q E[n] , en(aP ,bQ ) = en(P, Q)ab 2. en est alterné: P,Q E[n], en(P, Q) = en(Q, P)-1. 3. Non dégénérescence: Si O ≠ P E [n], il existe Q E [n] tel que en(P, Q) ≠ 1. G1 = <P>, G2 = <Q>, GT= <en(P,Q)> e : G1 × G2 → GT
Couplages en cryptographie e : G1 × G2 → GT (G1, G2, GT sont considérés comme des groupes multiplicatifs) est: Bilinéaire : e(g1a, g2b) = e(g1, g2)ab pour tout a,b Zn , g1G1 , g2 G2 Non-dégénéré : e(g1, g2) ≠ 1 Calculable : grâce à l'algorithme de Miller, les couplages de Weil (et puis de Tate) sont efficacement calculables (mais encore coûteux par rapport aux exponentielles).
Réduction MOV ECDLP(g1,g1a) = DLP(e(g1,g2), e(g1a,g2)) e : G1 × G2 → GT Réduction de l’ECDLP au DLP sur : ECDLP(g1,g1a) = DLP(e(g1,g2), e(g1a,g2)) Conséquence: il faut travailler sur des groupes tels que est suffisamment grand.
Pourquoi les couplages présente des avantages ? Intuition e : G1 × G2 → GT Avantage : il nous permet de résoudre un problème analogue au problème de Diffie-Hellman gT = e(g1, g2). Etant donné g1a, g2b, on peut calculer gTa = e(g1a, g2), gTb = e(g1, g2b) et gTab = e(g1a, g2b) sans avoir besoin de connaître a,b Exemple [Joux 01] : protocol d’échange de clé de trois parties
Utilisation des couplages en cryptographie 1993 : première utilisation : réduction MOV du ECDLP au DLP sur un corps fini 2001: premier schéma pratique de chiffrement basé sur l’identité [Boneh-Franklin et Sakai-Ohgishi- Kasahara] Depuis, plusieurs articles sur : Chiffrement Signature: Signature du group sans oracle aléatoire Diffusion de données chiffrées …
Attaque sur le schéma TSZ
Schéma TSZ [To, Safavi-Naini, Zhang03] (le cas de 1-traitor tracing) Couplage ê: G1 × G1 → GT. g1, g2 sont deux générateurs de G1 (d’ordre q premier). gT = ê(g1, g2) est une générateur de GT f(x) = x + a0 sur Fq Clé secrète du centre: g1, a0. Clé publique: (gT, g2, g’2 = g2a0) Clé de u : Ku = g11/f(u) gT = ê(Ku, g2 (u+a0)) = ê(Ku, g’2) ê(Kuu, g2) Chiffrement: C = (M.gTr, g’2r , g2r), pour r R Zq Déchiffrement: gTr = ê(Ku, g’2r) ê(Kuu, g2r).
Décodeur pirate anonyme Utilisateur u : randomiser (Ku, Kuu) X0 = Ku g2 z0 , pour z0 R Zq X1 = Kuu (g’2)-z0 Un décodeur pirate (X0,X1) gr = ê(X0, g’2r) ê(X1, g2r) Pourquoi ce décodeur pirate n’est pas traçable? (X0, X1) peut être défini d’une façon indépendante de u : X0 est aléatoirement choisi dans G1 X1 = g1 (X0 a0 )-1
Traçage des traîtres basé sur l’identité
Chiffrement basé sur l’identité de Waters Centre : e : G1 × G2 → GT G1, G2, GT d’ordre q Clé secrète: Zq Clé publique: g G1, g1=g , g2 G2, Un vecteur publique U = ( u0, u1, … un) G2n+1 Pour ID {0,1}n : ("j ID" si ID[j] = 1) Exemple: H(ID = 01101) = u0u2u3u5
Chiffrement Génération de la clé pour ID : Etant donné L’utilisateur ID peut calculer Chiffré:
Chiffrement à 2 niveaux L’identité d’un utilisateur est ID || id Deux vecteurs U = ( u0, u1, … un) G2n+1 et V = ( v0, v1, … vn) G2n+1 Génération de la clé pour ID|| id : Chiffré :
Diffusion basé sur l’identité - Chiffrement basé sur ID (identité du groupe) - Tous les ID||id avec id= id1,…,idN peuvent faire le déchiffrement idN id1 id2 Méthode naïve: combiner tous les chiffrés Etant donné : On peut calculer: Chiffré unique:
Problème principal : que peut faire le traceur? Chiffré: Idée: jouer sur une partie du chiffré Considérer un membre id : Si id[j] = 0, remplacer vtj par un aléa n'affecte pas id En effet: H2(id)t ne dépend pas de vtj Si id[j] = 1, remplacer vtj par un aléa rend H2(id)t aléatoire et donc id recevra un clair randomisé
Coalition d’utilisateurs (1) Considérer une coalition T = {id1, …, idc} Lemme 1 : si idi[k] = 0, pour tout i = 1,…,c, T ne peut pas distinguer entre : et où (vk)t est remplacé par un aléa R, sous l’hypothèse que le problème Diffie-Hellman décisionnel dans le groupe G2 est difficile
Coalition d’utilisateurs (2) Considérer une coalition T = {id1, …, idc} Lemme 2 : si idi[k] = 1, pour tout i = 1,…,c le déchiffrement de T sur est différent de M, sous l’hypothèse que le problème Diffie-Hellman bilinéaire est difficile
Procédure de traçage Pour chaque j = 0,…,n : remplacer vtj par un aléa Si le décodeur déchiffre correctement, mettre w[j] =0 Si le décodeur déchiffre incorrectement ou refuse de déchiffrer, mettre w[j] =1 Exemple: Codes résistants aux collusions [Boneh-Shaw95] Si c1,c2,c3 sont des mots d’un code résistant aux collusions Alors, à partir de w, on peut tracer un des c1,c2,c3. w = 0 1 1 0 0 1 1 0…. c1 = 0 * 1 * * 1 * 0 c2 = * 1 * * 0 * * * c3 = * * * 0 * * 1 0 Collusion
Traçage des traîtres basé sur l'identité : Chiffrement Etant donné un code résistant aux collusions C(c, N, ) de longueur Génération de la clé pour l’utilisateur k du groupe ID (ID|| k) k est associé d'un mot ck (choisi aléatoirement) du code C La clé de l’ID|| k est : Chiffré diffusé pour le groupe ID: Théorème : si une coalition de c utilisateurs arrive à produire un décodeur pirate intraçable, on peut donc casser la procédure de traçage pour le code C.
Discussion : efficacité du schéma La taille du code : Le code est long, les paramètres sont donc grands. Les couplages utilisés sont des couplages asymétriques. Le schéma ne supporte pas la traçabilité publique.
Conclusion Couplages sur des courbes elliptiques en cryptographie Premier schéma de traçage des traîtres basé sur l'identité : des couplages des codes résistants aux collusions Pistes d’amélioration : d’autres types de codes traçabilité publique