<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>http://os-vps418.infomaniak.ch:1250/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=JulianaLeclaire</id>
	<title>Wiki du LAMA (UMR 5127) - Contributions [fr]</title>
	<link rel="self" type="application/atom+xml" href="http://os-vps418.infomaniak.ch:1250/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=JulianaLeclaire"/>
	<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php/Sp%C3%A9cial:Contributions/JulianaLeclaire"/>
	<updated>2026-05-21T05:40:58Z</updated>
	<subtitle>Contributions</subtitle>
	<generator>MediaWiki 1.39.4</generator>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8726</id>
		<title>Projets étudiants cryptographie et sécurité/Leclaire DeRoland Crypto Quantique</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8726"/>
		<updated>2016-03-18T13:07:22Z</updated>

		<summary type="html">&lt;p&gt;JulianaLeclaire : /* Distribution des clés */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Auteurs : Juliana Leclaire, Céline de Roland ===&lt;br /&gt;
&lt;br /&gt;
== La cryptographie et la cryptanalyse dans le contexte de l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
L&#039;informatique quantique se base sur la superposition de plusieurs états quantiques pour améliorer les capacités de calculs. Ce domaine pose un vrai problème dans la sécurité de l&#039;internet qui utilise des algorithmes de chiffrement asymétriques pour les connexions SSL/TLS, paiements en ligne. Les nouveaux ordinateurs avec leur rapidité de calcul va pouvoir casser ces différents algorithmes de chiffrement asymétriques présents dans le Web.&lt;br /&gt;
&lt;br /&gt;
Il existe différents acteurs qui se penchent sur ce domaine. Notamment, la NSA, Google qui tentent de construire leur propre ordinateur quantique, des scientifiques qui se réunissent pour trouver des solutions.&lt;br /&gt;
Dans cette page, nous allons nous demander en quoi l&#039;informatique quantique peut changer le Web d&#039;aujourd&#039;hui et comment faire face à cette arrivée ?&lt;br /&gt;
&lt;br /&gt;
=== Fonctionnement de l&#039;informatique quantique ===&lt;br /&gt;
&lt;br /&gt;
==== Qubit ====&lt;br /&gt;
&lt;br /&gt;
C&#039;est la plus petite unité de stockage de l&#039;information. Etant donné deux états de base &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;, un qubit non mesuré se trouve dans l&#039;état &amp;lt;math&amp;gt;\alpha \left|0\right\rangle + \beta \left|1\right\rangle&amp;lt;/math&amp;gt;, avec &amp;lt;math&amp;gt;\left|\alpha\right|^2 + \left|\beta\right|^2 = 1&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Lorsqu&#039;on mesure la valeur du qubit, on obtient soit &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; soit &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\left|\alpha\right|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et  &amp;lt;math&amp;gt;\left|\beta\right|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Théorème de non clonage ====&lt;br /&gt;
&lt;br /&gt;
Ce théorème, découvert en 1982 par Wootters, Zurek, et Dieks, consiste à dire qu&#039;il est impossible de recopier un qubit à l&#039;identique. La démonstration (par l&#039;absurde) repose sur le fait que pouvoir mettre le qubit B dans le même état que le qubit A implique que le qubit B soit déjà dans le même état que le qubit A.&lt;br /&gt;
On en déduit qu&#039;il est impossible de faire une opération de type copier/coller en informatique quantique.&lt;br /&gt;
&lt;br /&gt;
==== Téléportation quantique ====&lt;br /&gt;
&lt;br /&gt;
La téléportation quantique consiste à transférer l&#039;état du qubit A dans le qubit B. Il s&#039;agit donc cette fois d&#039;une opération de couper/coller.&lt;br /&gt;
L&#039;intrication quantique se produit lorsque deux qubits sont dépendants l&#039;un de l&#039;autre même s&#039;ils sont éloignés l&#039;un de l&#039;autre. Dans cet état, si on mesure l&#039;un des deux, alors la mesure du deuxième est déterminée.&lt;br /&gt;
Sans entrer dans la théorie physique sous jacente, nous pouvons dire qu&#039;un canal EPR permet de réaliser cette opération de couper/coller en transmettant une information entre deux ordinateurs quantiques.&lt;br /&gt;
&lt;br /&gt;
== Chiffrement asymétrique face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
=== Mise en danger de la sécurité du Web ===&lt;br /&gt;
&lt;br /&gt;
Les ordinateurs quantiques présentent une rapidité de calculs extrêmement plus rapide que les ordinateurs classiques. Ces ordinateurs n&#039;auraient aucune difficulté pour casser les codes de sécurité actuels reposant principalement sur des chiffrements à clé publique. Un chiffrement asymétrique chiffre avec sa clé publique et déchiffre avec sa clé privée. Si nous prenons l&#039;exemple de RSA, un chiffrement asymétrique, qui a la particularité d&#039;être couramment utilisé dans la sécurité du Web. RSA repose sur la génération de grands nombres premiers.&lt;br /&gt;
&lt;br /&gt;
* Initialisation : &lt;br /&gt;
** module &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; (grand nombre entier codé sur 2048 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;p, q&amp;lt;/math&amp;gt; : nombres premiers de même taille (codés sur 1024 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;\phi\left(N\right) = \left(p-1\right) * \left(q - 1\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd\left(e, \phi\left(N\right)\right) = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
** Choisir &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;ed \equiv 1 [\phi(N)]&amp;lt;/math&amp;gt; et donc &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; est l&#039;inverse modulaire de &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; avec &amp;lt;math&amp;gt;d = e^{-1} \left[\phi\left(N\right)\right]&amp;lt;/math&amp;gt;&lt;br /&gt;
** Clé publique : &amp;lt;math&amp;gt;pk\left(n, e\right)&amp;lt;/math&amp;gt;, Clé privée : &amp;lt;math&amp;gt;sk\left(d, p, q\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
* Chiffrement : &amp;lt;math&amp;gt;c = m^e \left[N\right]&amp;lt;/math&amp;gt;&lt;br /&gt;
* Déchiffrement : &amp;lt;math&amp;gt;m = c^d \left[N\right]&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La sécurité de RSA repose sur la difficulté à factoriser des grands nombres en nombres premiers. En effet avec &amp;lt;math&amp;gt;\left(N, e\right)&amp;lt;/math&amp;gt; il faudrait pouvoir retrouver &amp;lt;math&amp;gt;\left(d, p, q\right)&amp;lt;/math&amp;gt; où &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt; correspondant à un cassage total. D&#039;après le théorème de factorisation unique tout entier &amp;lt;math&amp;gt;n \ge 2&amp;lt;/math&amp;gt; admet une factorisation unique en produit de puissances de nombres entiers. Des algorithmes de factorisation ont été trouvés pour différentes tailles de module &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; mais pour pallier à ces attaques on augmente la longueur du module. De nos jours pour sécuriser le chiffrement il faut utiliser des modules strictement supérieur à 2048 bits. Cependant avec l&#039;informatique quantique il ne suffira plus d&#039;augmenter la taille du module car la puissance de calcul permettra de casser le chiffrement, peu importe la taille du module.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Exemple : &amp;lt;math&amp;gt;N=15&amp;lt;/math&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* Je choisis &amp;lt;math&amp;gt;x=7&amp;lt;/math&amp;gt;&lt;br /&gt;
* En calculant successivement les valeurs de &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; on trouve &amp;lt;math&amp;gt;7^{4} \equiv 1 [15]&amp;lt;/math&amp;gt;.&lt;br /&gt;
* &amp;lt;math&amp;gt;r=4&amp;lt;/math&amp;gt; est pair&lt;br /&gt;
* &amp;lt;math&amp;gt;pgcd(x^{\frac{r}{2}}+1,15) = 5&amp;lt;/math&amp;gt;. Donc &amp;lt;math&amp;gt;P = 5&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;Q = pgcd(x^{\frac{r}{2}}-1,15) = 3&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Chiffrement symétrique face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
=== Mise en danger de la sécurité ===&lt;br /&gt;
&lt;br /&gt;
Si les ordinateurs quantiques présentent une rapidité de calcul permettant d&#039;effectuer des factorisations impossibles pour un ordinateur classique, il nous semble logique qu&#039;ils soient également performants pour effectuer des attaques de type force brute sur des messages chiffrés par une clé privée qui aurait été transmise par un moyen plus sûr que RSA.&lt;br /&gt;
 &lt;br /&gt;
Un ordinateur quantique pourrait réaliser le déchiffrement avec toutes les clés possibles en parallèle. Ce qui permettrait de cryptanalyser le message en une seule opération. Le principe se base sur la superposition quantique. On superposerait toutes les clés possibles et on déchiffrerait. On obtiendrait alors une superposition de résultats. Le point le plus difficile est de trouver le résultat correct à partir de la superposition obtenue. En effet, le principe selon lequel mesurer une valeur modifie cette valeur fait qu&#039;en observant une superposition, on obtient un seul état aléatoire. Une solution à ce problème a été trouvé par Lov Grover en &amp;lt;math&amp;gt;O\left(\sqrt{n}\right)&amp;lt;/math&amp;gt; étapes.&lt;br /&gt;
&lt;br /&gt;
== Résistances aux attaques quantiques ==&lt;br /&gt;
&lt;br /&gt;
=== Chiffrement asyémétrique ===&lt;br /&gt;
&lt;br /&gt;
Depuis 2006, une conférence internationnale se produit chaque année nommée &amp;quot;Post Quantum Cryptography&amp;quot; dans l&#039;intention de trouver des algorithmes résistants aux ordinateurs quantiques. Nathan Hamlin et William Webb, des mathématiciens, ont présenté récemment un algorithme de chiffrement asymétrique possiblement capable de faire face aux attaques quantiques. Cet algorithme part de l&#039;ancien chiffrement de Merkle-Hellman qui se base sur le problème du sac à dos nommé &amp;quot;Knapsack code&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
==== Problème du sac-à-dos ====&lt;br /&gt;
&lt;br /&gt;
Etant donné un sac avec une capacité &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; et plusieurs objets de poids différents. Le problème du sac-à-dos consiste à trouver la suite d&#039;objets qui entre dans le sac et qui maximise sa capacité. En partant d&#039;un n-uplet &amp;lt;math&amp;gt;\left(a_1, a_2, ..., a_n\right) \in N^n&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;S \in N&amp;lt;/math&amp;gt;, il faut trouver un n-uplet binaire &amp;lt;math&amp;gt;\left(x_1, x_2, ..., x_n\right) \in \left\{0,1\right\}^n&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;S = \sum_{i=1}^{n} \left(a_{i}*x_{i}\right) &amp;lt;/math&amp;gt;. La somme &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; des poids des objets choisi ne doit pas dépasser la capacité du sac à dos.&lt;br /&gt;
&lt;br /&gt;
==== Chiffrement de Merkle-Hellman ====&lt;br /&gt;
&lt;br /&gt;
Cet algorithme de chiffrement à clé publique repose sur la complexité algorithmique du problème du sac-à-dos et utilise une suite de poids super-croissante pour le secret et une suite non super-croissante pour la clé publique. Si les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt; n&#039;ont pas de propriétés particulières, la recherche du message codé en binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt; est un problème difficile. Il n&#039;existe pas d&#039;algorithme polynomial pour le résoudre. Pour pouvoir retrouver facilement ce n-uplet une propriété super-croissante est appliquée sur les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt;. Un n-uplet b est super-croissant si &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\forall i \in [2,n] b_{i} &amp;gt; \sum_{j=1}^{i-1} {b_{j}}&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ainsi en utilisant un algorithme glouton nous pouvons retrouver le n-uplet binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt;. L&#039;objet le plus lourd est dans le sac si le poids du sac est supérieur au poids de celui-ci. La propriété super-croissante assure que la somme des poids des autres objets sera toujours inférieur au poids de l&#039;objet le plus lourd. L&#039;algorithme est le suivant :&lt;br /&gt;
&lt;br /&gt;
  Pour i de n à 1 faire&lt;br /&gt;
    Si &amp;lt;math&amp;gt;b_{i} \le S&amp;lt;/math&amp;gt; alors&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i}  = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
    Sinon&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i} = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
    &amp;lt;math&amp;gt;S = S - x_{i} * b_{i}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Par exemple en prenant la suite des puissances de 2 comme suite super-croissante  avec : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = \left\{4,8\right\}, b = \left\{2,4,8\right\}, S = 12 \left(4+8\right), n = 3&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 3 : 8 \le 12 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_3 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 2 : 4 \le 4 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_2 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 1 : 2 \le 0 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    non donc &amp;lt;math&amp;gt;x_1 = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  =&amp;gt; &amp;lt;math&amp;gt;m = \left\{0,1,1\right\}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour chiffrer un n-uplet binaire &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;, l&#039;idée de Merkle et Hellman est de &amp;quot;tordre&amp;quot; les &amp;lt;math&amp;gt;b_{i}&amp;lt;/math&amp;gt; pour obtenir un n-uplet qui n&#039;est plus super-croissant. On choisit un nombre &amp;lt;math&amp;gt;u &amp;gt; \sum_{i=1}^{n} {b_{i}}&amp;lt;/math&amp;gt;, un entier &amp;lt;math&amp;gt;v \in \mathbb{N}&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd\left(u,v\right) = 1&amp;lt;/math&amp;gt;. Ce qui donne &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; inversible dans &amp;lt;math&amp;gt;\mathbb{Z}/u\mathbb{Z}&amp;lt;/math&amp;gt;. On prend &amp;lt;math&amp;gt;w = v^{-1} \in \mathbb{Z}/u\mathbb{Z}&amp;lt;/math&amp;gt;. On calcule ensuite le n-uplet &amp;lt;math&amp;gt;a = \left(a_1, ..., a_n\right)&amp;lt;/math&amp;gt; tel que pour tout &amp;lt;math&amp;gt;i \in [1,n]&amp;lt;/math&amp;gt; on a : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = a * b_i \left[u\right]&amp;lt;/math&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
Le n-uplet &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; détermine la clé public tandis que &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt; sont gardés secrets. &amp;lt;br/&amp;gt;&lt;br /&gt;
Pour envoyer le message m à Bob, Alice va, à partir de l&#039;écriture de m en binaire, calculer la somme : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;c = \sum_{i=1}^{n} {m_i * a_i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
qu&#039;elle va envoyer à Bob. Bob pour déchiffrer va devoir procéder à plusieurs étapes : &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt;c = \sum_{i=1}^{n} {m_i * a_i}&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * a_i * w} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * a_i * v^{-1}} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * v * b_i * v^{-1}} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * b_i} [u]&amp;lt;/math&amp;gt;                      =&amp;gt; Comme &amp;lt;math&amp;gt; \sum_{i=1}^{n} {m_i * b_i} &amp;lt; \sum_{i=1}^{n} {b_i}&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt; u &amp;gt; \sum_{i=1}^{n} {b_i}&amp;lt;/math&amp;gt; le modulo &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; peut s&#039;enlever&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * b_i}&amp;lt;/math&amp;gt;                           =&amp;gt; Comme &amp;lt;math&amp;gt;b_i&amp;lt;/math&amp;gt; est super-croissant Bob peut facilement retrouver &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Nouveau chiffrement de Hamlin-Webb ====&lt;br /&gt;
&lt;br /&gt;
Le chiffrement de Merkle et Hellman a été abandonné à la suite des découvertes de Shamir prouvant l&#039;existence d&#039;une attaque permettant de retrouver le message secret en utilisant un algorithme de réduction des réseaux. Nathan Hamlin et William Webb reprennent cet algorithme en le renforçant par un changement de représentation des entiers. Ils ont prouvé q&#039;un entier pouvait être représenté de manière unique avec des suites récurrentes. Le secret &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; n&#039;est alors plus modélisé en binaire mais en une suite récurrente plus complexe à craquer.&lt;br /&gt;
&lt;br /&gt;
===== Représentation du message =====&lt;br /&gt;
La représentation d&#039;un nombre &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; en une suite récurrente &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt; se fait en utilisant une suite augmentée &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; de &amp;lt;math&amp;gt;1 \le j \le 10&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;0 \le i \le n&amp;lt;/math&amp;gt; donné par : &amp;lt;br/&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{1,i}= u_i&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{2,i}= u_i + u_{i-2}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{3,i}= u_i + u_{i-2} + u_{i-3}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{4,i}= u_i + u_{i-2} + 2u_{i-3}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{5,i}= u_i + u_{i-2} +2u_{i-3} + u_{i-4}&amp;lt;/math&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{10,i}= u_i + u_{i-2} +2u_{i-3} + 6u_{i-4}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le suite &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; correspond au blocs de chiffre autorisés. Dans l&#039;exemple &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; se calcule dans des groupes de taille 10 mais ce nombre peut varier. La suite &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; se calcule en utilisant un algorithme glouton sur &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; où l&#039;on remplace la somme en une expression dans la suite &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
Le message secret &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; est représenté par : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; M = \sum_{i=0}^{n-1} {d_i * u_i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
avec &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt; calculé grâce à &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
où les &amp;lt;math&amp;gt;d_i&amp;lt;/math&amp;gt; sont des blocs de chiffre lexicographiquement inférieur à &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Chiffrement symétrique et distribution quantique de clés privées ===&lt;br /&gt;
&lt;br /&gt;
==== Photons polarisés ====&lt;br /&gt;
&lt;br /&gt;
Les photons sont des particules qui composent la lumière. Ils sont composés d&#039;un champ électrique et d&#039;un champ magnétique. Une lumière non-polarisée se caractérise par une différence d&#039;orientation du champ électrique suivant les photons. Ainsi la polarisation consiste, grâce à un polarisateur, d&#039;obtenir des photons avec un champ électrique orienté de manière identique. Les filtres polarisants permettent d&#039;appliquer un angle d&#039;orientation sur les photons afin :&lt;br /&gt;
* de récupérer les photons polarisés correctement orienté&lt;br /&gt;
* d&#039;éliminer les photons polarisés perpendiculairement&lt;br /&gt;
* de récupérer les photons polarisés intermédiaires avec une probabilité de &amp;lt;math&amp;gt;\cos\left(\alpha\right)&amp;lt;/math&amp;gt; en les réinitialisant avec une polarisation égale à l&#039;angle d&#039;orientation du filtre.&lt;br /&gt;
&lt;br /&gt;
La particularité des photons polarisés est qu&#039;il est impossible de connaître l&#039;information sur leurs polarisations précédentes.&lt;br /&gt;
&lt;br /&gt;
==== Distribution des clés ====&lt;br /&gt;
&lt;br /&gt;
Le chiffrement quantique offre un moyen sécurisé d’échanger des clés privées pour réaliser des chiffrements symétriques. Cette distribution s’appuie sur l’envoi de photons polarisés par fibre optique. Les personnes s&#039;échangeant les clés doivent avoir accès à un canal quantique et un canal classique. Le principe est le suivant :&lt;br /&gt;
* Alice envoie par le canal quantique une suite de photons polarisés aléatoirement.&lt;br /&gt;
* Bob applique un filtre de polarisation qui lui donne 1 chance sur 2 (et 1 chance sur 4 s&#039;il y a eu un espion) d&#039;appliquer le bon filtre et les renvoit à Alice.&lt;br /&gt;
* Alice et Bob s&#039;échangent par le canal classique leur choix des axes de polarisation éliminant ainsi les erreurs.&lt;br /&gt;
* Alice communique une partie de ses résultats.&lt;br /&gt;
* Maintenant que Bob connait les axes qu&#039;Alice a appliqué et les résultats il peut savoir si la communication a été écoutée ou non. Ceci étant grâce au théorème de non clonage où il est impossible de cloner des états quantiques inconnus.&lt;br /&gt;
&lt;br /&gt;
Ce principe permet de détecter facilement s&#039;il y a eu des intrusions durant la communication de la clé privée. Si un attaquant écoute la conversation il lui faut récupérer les photons envoyés par Alice mesurer la polarisation et renvoyer le photon à Bob. Pour mesurer la polarisation et connaître la valeur du photon qu&#039;Alice a envoyé l&#039;attaquant doit appliquer un filtre, comme Bob. Ainsi cette intrusion a 1 chance sur 2 d&#039;introduire des incohérences dans les données d&#039;Alice et Bob en envoyant 1 fois sur 2 un mauvais photon. Par la suite Bob obtient donc 1 chance sur 4 d&#039;appliquer le bon filtre. Par analyses statistiques, Alice et Bob peuvent détecter de manière sûre s&#039;il y a eu espionnage sur le canal quantique.&lt;br /&gt;
&lt;br /&gt;
==== Attaque de l&#039;homme du milieu ====&lt;br /&gt;
&lt;br /&gt;
Comme toute méthode d&#039;échange de clé privée, cette méthode reste vulnérable à une attaque de type &amp;quot;homme du milieu&amp;quot;. Il faut donc la combiner avec un mécanisme de certification afin de s&#039;assurer de l&#039;identité des protagonistes.&lt;br /&gt;
&lt;br /&gt;
== Ressources ==&lt;br /&gt;
&lt;br /&gt;
* Hamlin, N., &amp;amp; Webb, W. A. (2012). Representing Positive Integers as a Sum of Linear Recurrence Sequences, Fibonacci Quart. 50 (2012), no. 2, 99–105. Fibonacci Quart, 50(2), 99-105.&lt;br /&gt;
&lt;br /&gt;
* Moyer, N. T. (2010). A knapsack-type cryptographic system using algebraic number rings (Doctoral dissertation, Washington State University).&lt;/div&gt;</summary>
		<author><name>JulianaLeclaire</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8723</id>
		<title>Projets étudiants cryptographie et sécurité/Leclaire DeRoland Crypto Quantique</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8723"/>
		<updated>2016-03-18T13:05:07Z</updated>

		<summary type="html">&lt;p&gt;JulianaLeclaire : /* Distribution des clés */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Auteurs : Juliana Leclaire, Céline de Roland ===&lt;br /&gt;
&lt;br /&gt;
== La cryptographie et la cryptanalyse dans le contexte de l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
L&#039;informatique quantique se base sur la superposition de plusieurs états quantiques pour améliorer les capacités de calculs. Ce domaine pose un vrai problème dans la sécurité de l&#039;internet qui utilise des algorithmes de chiffrement asymétriques pour les connexions SSL/TLS, paiements en ligne. Les nouveaux ordinateurs avec leur rapidité de calcul va pouvoir casser ces différents algorithmes de chiffrement asymétriques présents dans le Web.&lt;br /&gt;
&lt;br /&gt;
Il existe différents acteurs qui se penchent sur ce domaine. Notamment, la NSA, Google qui tentent de construire leur propre ordinateur quantique, des scientifiques qui se réunissent pour trouver des solutions.&lt;br /&gt;
Dans cette page, nous allons nous demander en quoi l&#039;informatique quantique peut changer le Web d&#039;aujourd&#039;hui et comment faire face à cette arrivée ?&lt;br /&gt;
&lt;br /&gt;
=== Fonctionnement de l&#039;informatique quantique ===&lt;br /&gt;
&lt;br /&gt;
==== Qubit ====&lt;br /&gt;
&lt;br /&gt;
C&#039;est la plus petite unité de stockage de l&#039;information. Etant donné deux états de base &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;, un qubit non mesuré se trouve dans l&#039;état &amp;lt;math&amp;gt;\alpha \left|0\right\rangle + \beta \left|1\right\rangle&amp;lt;/math&amp;gt;, avec &amp;lt;math&amp;gt;\left|\alpha\right|^2 + \left|\beta\right|^2 = 1&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Lorsqu&#039;on mesure la valeur du qubit, on obtient soit &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; soit &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\left|\alpha\right|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et  &amp;lt;math&amp;gt;\left|\beta\right|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Théorème de non clonage ====&lt;br /&gt;
&lt;br /&gt;
Ce théorème, découvert en 1982 par Wootters, Zurek, et Dieks, consiste à dire qu&#039;il est impossible de recopier un qubit à l&#039;identique. La démonstration (par l&#039;absurde) repose sur le fait que pouvoir mettre le qubit B dans le même état que le qubit A implique que le qubit B soit déjà dans le même état que le qubit A.&lt;br /&gt;
On en déduit qu&#039;il est impossible de faire une opération de type copier/coller en informatique quantique.&lt;br /&gt;
&lt;br /&gt;
==== Téléportation quantique ====&lt;br /&gt;
&lt;br /&gt;
La téléportation quantique consiste à transférer l&#039;état du qubit A dans le qubit B. Il s&#039;agit donc cette fois d&#039;une opération de couper/coller.&lt;br /&gt;
L&#039;intrication quantique se produit lorsque deux qubits sont dépendants l&#039;un de l&#039;autre même s&#039;ils sont éloignés l&#039;un de l&#039;autre. Dans cet état, si on mesure l&#039;un des deux, alors la mesure du deuxième est déterminée.&lt;br /&gt;
Sans entrer dans la théorie physique sous jacente, nous pouvons dire qu&#039;un canal EPR permet de réaliser cette opération de couper/coller en transmettant une information entre deux ordinateurs quantiques.&lt;br /&gt;
&lt;br /&gt;
== Chiffrement asymétrique face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
=== Mise en danger de la sécurité du Web ===&lt;br /&gt;
&lt;br /&gt;
Les ordinateurs quantiques présentent une rapidité de calculs extrêmement plus rapide que les ordinateurs classiques. Ces ordinateurs n&#039;auraient aucune difficulté pour casser les codes de sécurité actuels reposant principalement sur des chiffrements à clé publique. Un chiffrement asymétrique chiffre avec sa clé publique et déchiffre avec sa clé privée. Si nous prenons l&#039;exemple de RSA, un chiffrement asymétrique, qui a la particularité d&#039;être couramment utilisé dans la sécurité du Web. RSA repose sur la génération de grands nombres premiers.&lt;br /&gt;
&lt;br /&gt;
* Initialisation : &lt;br /&gt;
** module &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; (grand nombre entier codé sur 2048 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;p, q&amp;lt;/math&amp;gt; : nombres premiers de même taille (codés sur 1024 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;\phi\left(N\right) = \left(p-1\right) * \left(q - 1\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd\left(e, \phi\left(N\right)\right) = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
** Choisir &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;ed \equiv 1 [\phi(N)]&amp;lt;/math&amp;gt; et donc &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; est l&#039;inverse modulaire de &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; avec &amp;lt;math&amp;gt;d = e^{-1} \left[\phi\left(N\right)\right]&amp;lt;/math&amp;gt;&lt;br /&gt;
** Clé publique : &amp;lt;math&amp;gt;pk\left(n, e\right)&amp;lt;/math&amp;gt;, Clé privée : &amp;lt;math&amp;gt;sk\left(d, p, q\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
* Chiffrement : &amp;lt;math&amp;gt;c = m^e \left[N\right]&amp;lt;/math&amp;gt;&lt;br /&gt;
* Déchiffrement : &amp;lt;math&amp;gt;m = c^d \left[N\right]&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La sécurité de RSA repose sur la difficulté à factoriser des grands nombres en nombres premiers. En effet avec &amp;lt;math&amp;gt;\left(N, e\right)&amp;lt;/math&amp;gt; il faudrait pouvoir retrouver &amp;lt;math&amp;gt;\left(d, p, q\right)&amp;lt;/math&amp;gt; où &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt; correspondant à un cassage total. D&#039;après le théorème de factorisation unique tout entier &amp;lt;math&amp;gt;n \ge 2&amp;lt;/math&amp;gt; admet une factorisation unique en produit de puissances de nombres entiers. Des algorithmes de factorisation ont été trouvés pour différentes tailles de module &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; mais pour pallier à ces attaques on augmente la longueur du module. De nos jours pour sécuriser le chiffrement il faut utiliser des modules strictement supérieur à 2048 bits. Cependant avec l&#039;informatique quantique il ne suffira plus d&#039;augmenter la taille du module car la puissance de calcul permettra de casser le chiffrement, peu importe la taille du module.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Exemple : &amp;lt;math&amp;gt;N=15&amp;lt;/math&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* Je choisis &amp;lt;math&amp;gt;x=7&amp;lt;/math&amp;gt;&lt;br /&gt;
* En calculant successivement les valeurs de &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; on trouve &amp;lt;math&amp;gt;7^{4} \equiv 1 [15]&amp;lt;/math&amp;gt;.&lt;br /&gt;
* &amp;lt;math&amp;gt;r=4&amp;lt;/math&amp;gt; est pair&lt;br /&gt;
* &amp;lt;math&amp;gt;pgcd(x^{\frac{r}{2}}+1,15) = 5&amp;lt;/math&amp;gt;. Donc &amp;lt;math&amp;gt;P = 5&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;Q = pgcd(x^{\frac{r}{2}}-1,15) = 3&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Chiffrement symétrique face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
=== Mise en danger de la sécurité ===&lt;br /&gt;
&lt;br /&gt;
Si les ordinateurs quantiques présentent une rapidité de calcul permettant d&#039;effectuer des factorisations impossibles pour un ordinateur classique, il nous semble logique qu&#039;ils soient également performants pour effectuer des attaques de type force brute sur des messages chiffrés par une clé privée qui aurait été transmise par un moyen plus sûr que RSA.&lt;br /&gt;
 &lt;br /&gt;
Un ordinateur quantique pourrait réaliser le déchiffrement avec toutes les clés possibles en parallèle. Ce qui permettrait de cryptanalyser le message en une seule opération. Le principe se base sur la superposition quantique. On superposerait toutes les clés possibles et on déchiffrerait. On obtiendrait alors une superposition de résultats. Le point le plus difficile est de trouver le résultat correct à partir de la superposition obtenue. En effet, le principe selon lequel mesurer une valeur modifie cette valeur fait qu&#039;en observant une superposition, on obtient un seul état aléatoire. Une solution à ce problème a été trouvé par Lov Grover en &amp;lt;math&amp;gt;O\left(\sqrt{n}\right)&amp;lt;/math&amp;gt; étapes.&lt;br /&gt;
&lt;br /&gt;
== Résistances aux attaques quantiques ==&lt;br /&gt;
&lt;br /&gt;
=== Chiffrement asyémétrique ===&lt;br /&gt;
&lt;br /&gt;
Depuis 2006, une conférence internationnale se produit chaque année nommée &amp;quot;Post Quantum Cryptography&amp;quot; dans l&#039;intention de trouver des algorithmes résistants aux ordinateurs quantiques. Nathan Hamlin et William Webb, des mathématiciens, ont présenté récemment un algorithme de chiffrement asymétrique possiblement capable de faire face aux attaques quantiques. Cet algorithme part de l&#039;ancien chiffrement de Merkle-Hellman qui se base sur le problème du sac à dos nommé &amp;quot;Knapsack code&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
==== Problème du sac-à-dos ====&lt;br /&gt;
&lt;br /&gt;
Etant donné un sac avec une capacité &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; et plusieurs objets de poids différents. Le problème du sac-à-dos consiste à trouver la suite d&#039;objets qui entre dans le sac et qui maximise sa capacité. En partant d&#039;un n-uplet &amp;lt;math&amp;gt;\left(a_1, a_2, ..., a_n\right) \in N^n&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;S \in N&amp;lt;/math&amp;gt;, il faut trouver un n-uplet binaire &amp;lt;math&amp;gt;\left(x_1, x_2, ..., x_n\right) \in \left\{0,1\right\}^n&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;S = \sum_{i=1}^{n} \left(a_{i}*x_{i}\right) &amp;lt;/math&amp;gt;. La somme &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; des poids des objets choisi ne doit pas dépasser la capacité du sac à dos.&lt;br /&gt;
&lt;br /&gt;
==== Chiffrement de Merkle-Hellman ====&lt;br /&gt;
&lt;br /&gt;
Cet algorithme de chiffrement à clé publique repose sur la complexité algorithmique du problème du sac-à-dos et utilise une suite de poids super-croissante pour le secret et une suite non super-croissante pour la clé publique. Si les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt; n&#039;ont pas de propriétés particulières, la recherche du message codé en binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt; est un problème difficile. Il n&#039;existe pas d&#039;algorithme polynomial pour le résoudre. Pour pouvoir retrouver facilement ce n-uplet une propriété super-croissante est appliquée sur les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt;. Un n-uplet b est super-croissant si &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\forall i \in [2,n] b_{i} &amp;gt; \sum_{j=1}^{i-1} {b_{j}}&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ainsi en utilisant un algorithme glouton nous pouvons retrouver le n-uplet binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt;. L&#039;objet le plus lourd est dans le sac si le poids du sac est supérieur au poids de celui-ci. La propriété super-croissante assure que la somme des poids des autres objets sera toujours inférieur au poids de l&#039;objet le plus lourd. L&#039;algorithme est le suivant :&lt;br /&gt;
&lt;br /&gt;
  Pour i de n à 1 faire&lt;br /&gt;
    Si &amp;lt;math&amp;gt;b_{i} \le S&amp;lt;/math&amp;gt; alors&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i}  = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
    Sinon&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i} = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
    &amp;lt;math&amp;gt;S = S - x_{i} * b_{i}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Par exemple en prenant la suite des puissances de 2 comme suite super-croissante  avec : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = \left\{4,8\right\}, b = \left\{2,4,8\right\}, S = 12 \left(4+8\right), n = 3&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 3 : 8 \le 12 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_3 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 2 : 4 \le 4 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_2 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 1 : 2 \le 0 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    non donc &amp;lt;math&amp;gt;x_1 = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  =&amp;gt; &amp;lt;math&amp;gt;m = \left\{0,1,1\right\}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour chiffrer un n-uplet binaire &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;, l&#039;idée de Merkle et Hellman est de &amp;quot;tordre&amp;quot; les &amp;lt;math&amp;gt;b_{i}&amp;lt;/math&amp;gt; pour obtenir un n-uplet qui n&#039;est plus super-croissant. On choisit un nombre &amp;lt;math&amp;gt;u &amp;gt; \sum_{i=1}^{n} {b_{i}}&amp;lt;/math&amp;gt;, un entier &amp;lt;math&amp;gt;v \in \mathbb{N}&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd\left(u,v\right) = 1&amp;lt;/math&amp;gt;. Ce qui donne &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; inversible dans &amp;lt;math&amp;gt;\mathbb{Z}/u\mathbb{Z}&amp;lt;/math&amp;gt;. On prend &amp;lt;math&amp;gt;w = v^{-1} \in \mathbb{Z}/u\mathbb{Z}&amp;lt;/math&amp;gt;. On calcule ensuite le n-uplet &amp;lt;math&amp;gt;a = \left(a_1, ..., a_n\right)&amp;lt;/math&amp;gt; tel que pour tout &amp;lt;math&amp;gt;i \in [1,n]&amp;lt;/math&amp;gt; on a : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = a * b_i \left[u\right]&amp;lt;/math&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
Le n-uplet &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; détermine la clé public tandis que &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt; sont gardés secrets. &amp;lt;br/&amp;gt;&lt;br /&gt;
Pour envoyer le message m à Bob, Alice va, à partir de l&#039;écriture de m en binaire, calculer la somme : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;c = \sum_{i=1}^{n} {m_i * a_i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
qu&#039;elle va envoyer à Bob. Bob pour déchiffrer va devoir procéder à plusieurs étapes : &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt;c = \sum_{i=1}^{n} {m_i * a_i}&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * a_i * w} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * a_i * v^{-1}} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * v * b_i * v^{-1}} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * b_i} [u]&amp;lt;/math&amp;gt;                      =&amp;gt; Comme &amp;lt;math&amp;gt; \sum_{i=1}^{n} {m_i * b_i} &amp;lt; \sum_{i=1}^{n} {b_i}&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt; u &amp;gt; \sum_{i=1}^{n} {b_i}&amp;lt;/math&amp;gt; le modulo &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; peut s&#039;enlever&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * b_i}&amp;lt;/math&amp;gt;                           =&amp;gt; Comme &amp;lt;math&amp;gt;b_i&amp;lt;/math&amp;gt; est super-croissant Bob peut facilement retrouver &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Nouveau chiffrement de Hamlin-Webb ====&lt;br /&gt;
&lt;br /&gt;
Le chiffrement de Merkle et Hellman a été abandonné à la suite des découvertes de Shamir prouvant l&#039;existence d&#039;une attaque permettant de retrouver le message secret en utilisant un algorithme de réduction des réseaux. Nathan Hamlin et William Webb reprennent cet algorithme en le renforçant par un changement de représentation des entiers. Ils ont prouvé q&#039;un entier pouvait être représenté de manière unique avec des suites récurrentes. Le secret &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; n&#039;est alors plus modélisé en binaire mais en une suite récurrente plus complexe à craquer.&lt;br /&gt;
&lt;br /&gt;
===== Représentation du message =====&lt;br /&gt;
La représentation d&#039;un nombre &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; en une suite récurrente &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt; se fait en utilisant une suite augmentée &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; de &amp;lt;math&amp;gt;1 \le j \le 10&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;0 \le i \le n&amp;lt;/math&amp;gt; donné par : &amp;lt;br/&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{1,i}= u_i&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{2,i}= u_i + u_{i-2}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{3,i}= u_i + u_{i-2} + u_{i-3}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{4,i}= u_i + u_{i-2} + 2u_{i-3}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{5,i}= u_i + u_{i-2} +2u_{i-3} + u_{i-4}&amp;lt;/math&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{10,i}= u_i + u_{i-2} +2u_{i-3} + 6u_{i-4}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le suite &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; correspond au blocs de chiffre autorisés. Dans l&#039;exemple &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; se calcule dans des groupes de taille 10 mais ce nombre peut varier. La suite &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; se calcule en utilisant un algorithme glouton sur &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; où l&#039;on remplace la somme en une expression dans la suite &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
Le message secret &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; est représenté par : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; M = \sum_{i=0}^{n-1} {d_i * u_i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
avec &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt; calculé grâce à &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
où les &amp;lt;math&amp;gt;d_i&amp;lt;/math&amp;gt; sont des blocs de chiffre lexicographiquement inférieur à &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Chiffrement symétrique et distribution quantique de clés privées ===&lt;br /&gt;
&lt;br /&gt;
==== Photons polarisés ====&lt;br /&gt;
&lt;br /&gt;
Les photons sont des particules qui composent la lumière. Ils sont composés d&#039;un champ électrique et d&#039;un champ magnétique. Une lumière non-polarisée se caractérise par une différence d&#039;orientation du champ électrique suivant les photons. Ainsi la polarisation consiste, grâce à un polarisateur, d&#039;obtenir des photons avec un champ électrique orienté de manière identique. Les filtres polarisants permettent d&#039;appliquer un angle d&#039;orientation sur les photons afin :&lt;br /&gt;
* de récupérer les photons polarisés correctement orienté&lt;br /&gt;
* d&#039;éliminer les photons polarisés perpendiculairement&lt;br /&gt;
* de récupérer les photons polarisés intermédiaires avec une probabilité de &amp;lt;math&amp;gt;\cos\left(\alpha\right)&amp;lt;/math&amp;gt; en les réinitialisant avec une polarisation égale à l&#039;angle d&#039;orientation du filtre.&lt;br /&gt;
&lt;br /&gt;
La particularité des photons polarisés est qu&#039;il est impossible de connaître l&#039;information sur leurs polarisations précédentes.&lt;br /&gt;
&lt;br /&gt;
==== Distribution des clés ====&lt;br /&gt;
&lt;br /&gt;
Le chiffrement quantique offre un moyen sécurisé d’échanger des clés privées pour réaliser des chiffrements symétriques. Cette distribution s’appuie sur l’envoi de photons polarisés par fibre optique. Les personnes s&#039;échangeant les clés doivent avoir accès à un canal quantique et un canal classique. Le principe est le suivant :&lt;br /&gt;
* Alice envoie par le canal quantique une suite de photons polarisés aléatoirement.&lt;br /&gt;
* Bob applique un filtre de polarisation qui lui donne 1 chance sur 2 (et 1 chance sur 4 s&#039;il y a eu un espion) d&#039;appliquer le bon filtre et les renvoit à Alice.&lt;br /&gt;
* Alice et Bob s&#039;échangent par le canal classique leur choix des axes de polarisation éliminant ainsi les erreurs.&lt;br /&gt;
* Alice communique une partie de ses résultats.&lt;br /&gt;
* Maintenant que Bob connait les axes qu&#039;Alice a appliqué et les résultats il peut savoir si la communication a été écoutée ou non. Ceci étant grâce au théorème de non clonage où il est impossible de cloner des états quantiques inconnus.&lt;br /&gt;
&lt;br /&gt;
Ce principe permet de détecter facilement s&#039;il y a eu des intrusions durant la communication de la clé privée. Si un attaquant écoute la conversation il lui faut récupérer les photons envoyés par Alice mesurer la polarisation et renvoyer le photon à Bob. Pour mesurer la polarisation l&#039;attaquant doit appliquer, comme Bob, un filtre pour deviner la base qu&#039;Alice a envoyé. Ainsi cette intrusion a 1 chance sur 2 d&#039;introduire des incohérences dans les données d&#039;Alice et Bob en envoyant 1 fois sur 2 un mauvais photon. Par la suite Bob obtient donc 1 chance sur 4 d&#039;appliquer le bon filtre. Par analyses statistiques, Alice et Bob peuvent détecter de manière sure s&#039;il y a eu espionnage sur le canal quantique.&lt;br /&gt;
&lt;br /&gt;
==== Attaque de l&#039;homme du milieu ====&lt;br /&gt;
&lt;br /&gt;
Comme toute méthode d&#039;échange de clé privée, cette méthode reste vulnérable à une attaque de type &amp;quot;homme du milieu&amp;quot;. Il faut donc la combiner avec un mécanisme de certification afin de s&#039;assurer de l&#039;identité des protagonistes.&lt;br /&gt;
&lt;br /&gt;
== Ressources ==&lt;br /&gt;
&lt;br /&gt;
* Hamlin, N., &amp;amp; Webb, W. A. (2012). Representing Positive Integers as a Sum of Linear Recurrence Sequences, Fibonacci Quart. 50 (2012), no. 2, 99–105. Fibonacci Quart, 50(2), 99-105.&lt;br /&gt;
&lt;br /&gt;
* Moyer, N. T. (2010). A knapsack-type cryptographic system using algebraic number rings (Doctoral dissertation, Washington State University).&lt;/div&gt;</summary>
		<author><name>JulianaLeclaire</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8722</id>
		<title>Projets étudiants cryptographie et sécurité/Leclaire DeRoland Crypto Quantique</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8722"/>
		<updated>2016-03-18T13:03:51Z</updated>

		<summary type="html">&lt;p&gt;JulianaLeclaire : /* Photons polarisés */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Auteurs : Juliana Leclaire, Céline de Roland ===&lt;br /&gt;
&lt;br /&gt;
== La cryptographie et la cryptanalyse dans le contexte de l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
L&#039;informatique quantique se base sur la superposition de plusieurs états quantiques pour améliorer les capacités de calculs. Ce domaine pose un vrai problème dans la sécurité de l&#039;internet qui utilise des algorithmes de chiffrement asymétriques pour les connexions SSL/TLS, paiements en ligne. Les nouveaux ordinateurs avec leur rapidité de calcul va pouvoir casser ces différents algorithmes de chiffrement asymétriques présents dans le Web.&lt;br /&gt;
&lt;br /&gt;
Il existe différents acteurs qui se penchent sur ce domaine. Notamment, la NSA, Google qui tentent de construire leur propre ordinateur quantique, des scientifiques qui se réunissent pour trouver des solutions.&lt;br /&gt;
Dans cette page, nous allons nous demander en quoi l&#039;informatique quantique peut changer le Web d&#039;aujourd&#039;hui et comment faire face à cette arrivée ?&lt;br /&gt;
&lt;br /&gt;
=== Fonctionnement de l&#039;informatique quantique ===&lt;br /&gt;
&lt;br /&gt;
==== Qubit ====&lt;br /&gt;
&lt;br /&gt;
C&#039;est la plus petite unité de stockage de l&#039;information. Etant donné deux états de base &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;, un qubit non mesuré se trouve dans l&#039;état &amp;lt;math&amp;gt;\alpha \left|0\right\rangle + \beta \left|1\right\rangle&amp;lt;/math&amp;gt;, avec &amp;lt;math&amp;gt;\left|\alpha\right|^2 + \left|\beta\right|^2 = 1&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Lorsqu&#039;on mesure la valeur du qubit, on obtient soit &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; soit &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\left|\alpha\right|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et  &amp;lt;math&amp;gt;\left|\beta\right|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Théorème de non clonage ====&lt;br /&gt;
&lt;br /&gt;
Ce théorème, découvert en 1982 par Wootters, Zurek, et Dieks, consiste à dire qu&#039;il est impossible de recopier un qubit à l&#039;identique. La démonstration (par l&#039;absurde) repose sur le fait que pouvoir mettre le qubit B dans le même état que le qubit A implique que le qubit B soit déjà dans le même état que le qubit A.&lt;br /&gt;
On en déduit qu&#039;il est impossible de faire une opération de type copier/coller en informatique quantique.&lt;br /&gt;
&lt;br /&gt;
==== Téléportation quantique ====&lt;br /&gt;
&lt;br /&gt;
La téléportation quantique consiste à transférer l&#039;état du qubit A dans le qubit B. Il s&#039;agit donc cette fois d&#039;une opération de couper/coller.&lt;br /&gt;
L&#039;intrication quantique se produit lorsque deux qubits sont dépendants l&#039;un de l&#039;autre même s&#039;ils sont éloignés l&#039;un de l&#039;autre. Dans cet état, si on mesure l&#039;un des deux, alors la mesure du deuxième est déterminée.&lt;br /&gt;
Sans entrer dans la théorie physique sous jacente, nous pouvons dire qu&#039;un canal EPR permet de réaliser cette opération de couper/coller en transmettant une information entre deux ordinateurs quantiques.&lt;br /&gt;
&lt;br /&gt;
== Chiffrement asymétrique face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
=== Mise en danger de la sécurité du Web ===&lt;br /&gt;
&lt;br /&gt;
Les ordinateurs quantiques présentent une rapidité de calculs extrêmement plus rapide que les ordinateurs classiques. Ces ordinateurs n&#039;auraient aucune difficulté pour casser les codes de sécurité actuels reposant principalement sur des chiffrements à clé publique. Un chiffrement asymétrique chiffre avec sa clé publique et déchiffre avec sa clé privée. Si nous prenons l&#039;exemple de RSA, un chiffrement asymétrique, qui a la particularité d&#039;être couramment utilisé dans la sécurité du Web. RSA repose sur la génération de grands nombres premiers.&lt;br /&gt;
&lt;br /&gt;
* Initialisation : &lt;br /&gt;
** module &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; (grand nombre entier codé sur 2048 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;p, q&amp;lt;/math&amp;gt; : nombres premiers de même taille (codés sur 1024 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;\phi\left(N\right) = \left(p-1\right) * \left(q - 1\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd\left(e, \phi\left(N\right)\right) = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
** Choisir &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;ed \equiv 1 [\phi(N)]&amp;lt;/math&amp;gt; et donc &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; est l&#039;inverse modulaire de &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; avec &amp;lt;math&amp;gt;d = e^{-1} \left[\phi\left(N\right)\right]&amp;lt;/math&amp;gt;&lt;br /&gt;
** Clé publique : &amp;lt;math&amp;gt;pk\left(n, e\right)&amp;lt;/math&amp;gt;, Clé privée : &amp;lt;math&amp;gt;sk\left(d, p, q\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
* Chiffrement : &amp;lt;math&amp;gt;c = m^e \left[N\right]&amp;lt;/math&amp;gt;&lt;br /&gt;
* Déchiffrement : &amp;lt;math&amp;gt;m = c^d \left[N\right]&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La sécurité de RSA repose sur la difficulté à factoriser des grands nombres en nombres premiers. En effet avec &amp;lt;math&amp;gt;\left(N, e\right)&amp;lt;/math&amp;gt; il faudrait pouvoir retrouver &amp;lt;math&amp;gt;\left(d, p, q\right)&amp;lt;/math&amp;gt; où &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt; correspondant à un cassage total. D&#039;après le théorème de factorisation unique tout entier &amp;lt;math&amp;gt;n \ge 2&amp;lt;/math&amp;gt; admet une factorisation unique en produit de puissances de nombres entiers. Des algorithmes de factorisation ont été trouvés pour différentes tailles de module &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; mais pour pallier à ces attaques on augmente la longueur du module. De nos jours pour sécuriser le chiffrement il faut utiliser des modules strictement supérieur à 2048 bits. Cependant avec l&#039;informatique quantique il ne suffira plus d&#039;augmenter la taille du module car la puissance de calcul permettra de casser le chiffrement, peu importe la taille du module.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Exemple : &amp;lt;math&amp;gt;N=15&amp;lt;/math&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* Je choisis &amp;lt;math&amp;gt;x=7&amp;lt;/math&amp;gt;&lt;br /&gt;
* En calculant successivement les valeurs de &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; on trouve &amp;lt;math&amp;gt;7^{4} \equiv 1 [15]&amp;lt;/math&amp;gt;.&lt;br /&gt;
* &amp;lt;math&amp;gt;r=4&amp;lt;/math&amp;gt; est pair&lt;br /&gt;
* &amp;lt;math&amp;gt;pgcd(x^{\frac{r}{2}}+1,15) = 5&amp;lt;/math&amp;gt;. Donc &amp;lt;math&amp;gt;P = 5&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;Q = pgcd(x^{\frac{r}{2}}-1,15) = 3&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Chiffrement symétrique face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
=== Mise en danger de la sécurité ===&lt;br /&gt;
&lt;br /&gt;
Si les ordinateurs quantiques présentent une rapidité de calcul permettant d&#039;effectuer des factorisations impossibles pour un ordinateur classique, il nous semble logique qu&#039;ils soient également performants pour effectuer des attaques de type force brute sur des messages chiffrés par une clé privée qui aurait été transmise par un moyen plus sûr que RSA.&lt;br /&gt;
 &lt;br /&gt;
Un ordinateur quantique pourrait réaliser le déchiffrement avec toutes les clés possibles en parallèle. Ce qui permettrait de cryptanalyser le message en une seule opération. Le principe se base sur la superposition quantique. On superposerait toutes les clés possibles et on déchiffrerait. On obtiendrait alors une superposition de résultats. Le point le plus difficile est de trouver le résultat correct à partir de la superposition obtenue. En effet, le principe selon lequel mesurer une valeur modifie cette valeur fait qu&#039;en observant une superposition, on obtient un seul état aléatoire. Une solution à ce problème a été trouvé par Lov Grover en &amp;lt;math&amp;gt;O\left(\sqrt{n}\right)&amp;lt;/math&amp;gt; étapes.&lt;br /&gt;
&lt;br /&gt;
== Résistances aux attaques quantiques ==&lt;br /&gt;
&lt;br /&gt;
=== Chiffrement asyémétrique ===&lt;br /&gt;
&lt;br /&gt;
Depuis 2006, une conférence internationnale se produit chaque année nommée &amp;quot;Post Quantum Cryptography&amp;quot; dans l&#039;intention de trouver des algorithmes résistants aux ordinateurs quantiques. Nathan Hamlin et William Webb, des mathématiciens, ont présenté récemment un algorithme de chiffrement asymétrique possiblement capable de faire face aux attaques quantiques. Cet algorithme part de l&#039;ancien chiffrement de Merkle-Hellman qui se base sur le problème du sac à dos nommé &amp;quot;Knapsack code&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
==== Problème du sac-à-dos ====&lt;br /&gt;
&lt;br /&gt;
Etant donné un sac avec une capacité &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; et plusieurs objets de poids différents. Le problème du sac-à-dos consiste à trouver la suite d&#039;objets qui entre dans le sac et qui maximise sa capacité. En partant d&#039;un n-uplet &amp;lt;math&amp;gt;\left(a_1, a_2, ..., a_n\right) \in N^n&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;S \in N&amp;lt;/math&amp;gt;, il faut trouver un n-uplet binaire &amp;lt;math&amp;gt;\left(x_1, x_2, ..., x_n\right) \in \left\{0,1\right\}^n&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;S = \sum_{i=1}^{n} \left(a_{i}*x_{i}\right) &amp;lt;/math&amp;gt;. La somme &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; des poids des objets choisi ne doit pas dépasser la capacité du sac à dos.&lt;br /&gt;
&lt;br /&gt;
==== Chiffrement de Merkle-Hellman ====&lt;br /&gt;
&lt;br /&gt;
Cet algorithme de chiffrement à clé publique repose sur la complexité algorithmique du problème du sac-à-dos et utilise une suite de poids super-croissante pour le secret et une suite non super-croissante pour la clé publique. Si les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt; n&#039;ont pas de propriétés particulières, la recherche du message codé en binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt; est un problème difficile. Il n&#039;existe pas d&#039;algorithme polynomial pour le résoudre. Pour pouvoir retrouver facilement ce n-uplet une propriété super-croissante est appliquée sur les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt;. Un n-uplet b est super-croissant si &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\forall i \in [2,n] b_{i} &amp;gt; \sum_{j=1}^{i-1} {b_{j}}&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ainsi en utilisant un algorithme glouton nous pouvons retrouver le n-uplet binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt;. L&#039;objet le plus lourd est dans le sac si le poids du sac est supérieur au poids de celui-ci. La propriété super-croissante assure que la somme des poids des autres objets sera toujours inférieur au poids de l&#039;objet le plus lourd. L&#039;algorithme est le suivant :&lt;br /&gt;
&lt;br /&gt;
  Pour i de n à 1 faire&lt;br /&gt;
    Si &amp;lt;math&amp;gt;b_{i} \le S&amp;lt;/math&amp;gt; alors&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i}  = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
    Sinon&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i} = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
    &amp;lt;math&amp;gt;S = S - x_{i} * b_{i}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Par exemple en prenant la suite des puissances de 2 comme suite super-croissante  avec : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = \left\{4,8\right\}, b = \left\{2,4,8\right\}, S = 12 \left(4+8\right), n = 3&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 3 : 8 \le 12 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_3 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 2 : 4 \le 4 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_2 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 1 : 2 \le 0 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    non donc &amp;lt;math&amp;gt;x_1 = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  =&amp;gt; &amp;lt;math&amp;gt;m = \left\{0,1,1\right\}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour chiffrer un n-uplet binaire &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;, l&#039;idée de Merkle et Hellman est de &amp;quot;tordre&amp;quot; les &amp;lt;math&amp;gt;b_{i}&amp;lt;/math&amp;gt; pour obtenir un n-uplet qui n&#039;est plus super-croissant. On choisit un nombre &amp;lt;math&amp;gt;u &amp;gt; \sum_{i=1}^{n} {b_{i}}&amp;lt;/math&amp;gt;, un entier &amp;lt;math&amp;gt;v \in \mathbb{N}&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd\left(u,v\right) = 1&amp;lt;/math&amp;gt;. Ce qui donne &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; inversible dans &amp;lt;math&amp;gt;\mathbb{Z}/u\mathbb{Z}&amp;lt;/math&amp;gt;. On prend &amp;lt;math&amp;gt;w = v^{-1} \in \mathbb{Z}/u\mathbb{Z}&amp;lt;/math&amp;gt;. On calcule ensuite le n-uplet &amp;lt;math&amp;gt;a = \left(a_1, ..., a_n\right)&amp;lt;/math&amp;gt; tel que pour tout &amp;lt;math&amp;gt;i \in [1,n]&amp;lt;/math&amp;gt; on a : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = a * b_i \left[u\right]&amp;lt;/math&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
Le n-uplet &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; détermine la clé public tandis que &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt; sont gardés secrets. &amp;lt;br/&amp;gt;&lt;br /&gt;
Pour envoyer le message m à Bob, Alice va, à partir de l&#039;écriture de m en binaire, calculer la somme : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;c = \sum_{i=1}^{n} {m_i * a_i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
qu&#039;elle va envoyer à Bob. Bob pour déchiffrer va devoir procéder à plusieurs étapes : &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt;c = \sum_{i=1}^{n} {m_i * a_i}&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * a_i * w} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * a_i * v^{-1}} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * v * b_i * v^{-1}} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * b_i} [u]&amp;lt;/math&amp;gt;                      =&amp;gt; Comme &amp;lt;math&amp;gt; \sum_{i=1}^{n} {m_i * b_i} &amp;lt; \sum_{i=1}^{n} {b_i}&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt; u &amp;gt; \sum_{i=1}^{n} {b_i}&amp;lt;/math&amp;gt; le modulo &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; peut s&#039;enlever&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * b_i}&amp;lt;/math&amp;gt;                           =&amp;gt; Comme &amp;lt;math&amp;gt;b_i&amp;lt;/math&amp;gt; est super-croissant Bob peut facilement retrouver &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Nouveau chiffrement de Hamlin-Webb ====&lt;br /&gt;
&lt;br /&gt;
Le chiffrement de Merkle et Hellman a été abandonné à la suite des découvertes de Shamir prouvant l&#039;existence d&#039;une attaque permettant de retrouver le message secret en utilisant un algorithme de réduction des réseaux. Nathan Hamlin et William Webb reprennent cet algorithme en le renforçant par un changement de représentation des entiers. Ils ont prouvé q&#039;un entier pouvait être représenté de manière unique avec des suites récurrentes. Le secret &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; n&#039;est alors plus modélisé en binaire mais en une suite récurrente plus complexe à craquer.&lt;br /&gt;
&lt;br /&gt;
===== Représentation du message =====&lt;br /&gt;
La représentation d&#039;un nombre &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; en une suite récurrente &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt; se fait en utilisant une suite augmentée &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; de &amp;lt;math&amp;gt;1 \le j \le 10&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;0 \le i \le n&amp;lt;/math&amp;gt; donné par : &amp;lt;br/&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{1,i}= u_i&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{2,i}= u_i + u_{i-2}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{3,i}= u_i + u_{i-2} + u_{i-3}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{4,i}= u_i + u_{i-2} + 2u_{i-3}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{5,i}= u_i + u_{i-2} +2u_{i-3} + u_{i-4}&amp;lt;/math&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{10,i}= u_i + u_{i-2} +2u_{i-3} + 6u_{i-4}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le suite &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; correspond au blocs de chiffre autorisés. Dans l&#039;exemple &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; se calcule dans des groupes de taille 10 mais ce nombre peut varier. La suite &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; se calcule en utilisant un algorithme glouton sur &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; où l&#039;on remplace la somme en une expression dans la suite &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
Le message secret &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; est représenté par : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; M = \sum_{i=0}^{n-1} {d_i * u_i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
avec &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt; calculé grâce à &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
où les &amp;lt;math&amp;gt;d_i&amp;lt;/math&amp;gt; sont des blocs de chiffre lexicographiquement inférieur à &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Chiffrement symétrique et distribution quantique de clés privées ===&lt;br /&gt;
&lt;br /&gt;
==== Photons polarisés ====&lt;br /&gt;
&lt;br /&gt;
Les photons sont des particules qui composent la lumière. Ils sont composés d&#039;un champ électrique et d&#039;un champ magnétique. Une lumière non-polarisée se caractérise par une différence d&#039;orientation du champ électrique suivant les photons. Ainsi la polarisation consiste, grâce à un polarisateur, d&#039;obtenir des photons avec un champ électrique orienté de manière identique. Les filtres polarisants permettent d&#039;appliquer un angle d&#039;orientation sur les photons afin :&lt;br /&gt;
* de récupérer les photons polarisés correctement orienté&lt;br /&gt;
* d&#039;éliminer les photons polarisés perpendiculairement&lt;br /&gt;
* de récupérer les photons polarisés intermédiaires avec une probabilité de &amp;lt;math&amp;gt;\cos\left(\alpha\right)&amp;lt;/math&amp;gt; en les réinitialisant avec une polarisation égale à l&#039;angle d&#039;orientation du filtre.&lt;br /&gt;
&lt;br /&gt;
La particularité des photons polarisés est qu&#039;il est impossible de connaître l&#039;information sur leurs polarisations précédentes.&lt;br /&gt;
&lt;br /&gt;
==== Distribution des clés ====&lt;br /&gt;
&lt;br /&gt;
Le chiffrement quantique offre un moyen sécurisé d’échanger des clés privées pour réaliser des chiffrements symétriques. Cette distribution s’appuie sur l’envoi de photons polarisés par fibre optique. Les personnes s&#039;échangeant les clés doivent avoir accès à un canal quantique et un canal classique. Le principe est le suivant :&lt;br /&gt;
* Alice envoie par le canal quantique une suite de photons polarisés aléatoirement.&lt;br /&gt;
* Bob applique un filtre de polarisation qui lui donne 1 chance sur 2 (et 1 chance sur 4 s&#039;il y a eu un espion) d&#039;appliquer le bon filtre et les renvoit à Alice.&lt;br /&gt;
* Alice et Bob s&#039;échangent par le canal classique leur choix des axes de polarisation éliminant ainsi les erreurs.&lt;br /&gt;
* Alice communique une partie de ses résultats.&lt;br /&gt;
* Maintenant que Bob connait les axes qu&#039;Alice a appliqué et les résultats il peut savoir si la communication a été écoutée ou non. Ceci étant grâce au théorème de non clonage où il est impossible de cloner des états quantiques inconnus.&lt;br /&gt;
&lt;br /&gt;
Ce principe permet de détecter facilement s&#039;il y a eu des intrusions durant la communication de la clé privée. En effet si un attaquant écoute il lui faut récupérer les photons envoyés par Alice mesurer la polarisation et renvoyer le photon à Bob. Pour mesurer la polarisation l&#039;attaquant doit appliquer, comme Bob, un filtre pour deviner la base qu&#039;Alice a envoyé. Ainsi cette intrusion a 1 chance sur 2 d&#039;introduire des incohérences dans les données d&#039;Alice et Bob en envoyant 1 fois sur 2 un mauvais photon. Par la suite Bob obtient donc 1 chance sur 4 d&#039;appliquer le bon filtre. Par analyses statistiques, Alice et Bob peuvent détecter de manière sure s&#039;il y a eu espionnage sur le canal quantique.&lt;br /&gt;
&lt;br /&gt;
==== Attaque de l&#039;homme du milieu ====&lt;br /&gt;
&lt;br /&gt;
Comme toute méthode d&#039;échange de clé privée, cette méthode reste vulnérable à une attaque de type &amp;quot;homme du milieu&amp;quot;. Il faut donc la combiner avec un mécanisme de certification afin de s&#039;assurer de l&#039;identité des protagonistes.&lt;br /&gt;
&lt;br /&gt;
== Ressources ==&lt;br /&gt;
&lt;br /&gt;
* Hamlin, N., &amp;amp; Webb, W. A. (2012). Representing Positive Integers as a Sum of Linear Recurrence Sequences, Fibonacci Quart. 50 (2012), no. 2, 99–105. Fibonacci Quart, 50(2), 99-105.&lt;br /&gt;
&lt;br /&gt;
* Moyer, N. T. (2010). A knapsack-type cryptographic system using algebraic number rings (Doctoral dissertation, Washington State University).&lt;/div&gt;</summary>
		<author><name>JulianaLeclaire</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8721</id>
		<title>Projets étudiants cryptographie et sécurité/Leclaire DeRoland Crypto Quantique</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8721"/>
		<updated>2016-03-18T13:03:32Z</updated>

		<summary type="html">&lt;p&gt;JulianaLeclaire : /* Photons polarisés */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Auteurs : Juliana Leclaire, Céline de Roland ===&lt;br /&gt;
&lt;br /&gt;
== La cryptographie et la cryptanalyse dans le contexte de l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
L&#039;informatique quantique se base sur la superposition de plusieurs états quantiques pour améliorer les capacités de calculs. Ce domaine pose un vrai problème dans la sécurité de l&#039;internet qui utilise des algorithmes de chiffrement asymétriques pour les connexions SSL/TLS, paiements en ligne. Les nouveaux ordinateurs avec leur rapidité de calcul va pouvoir casser ces différents algorithmes de chiffrement asymétriques présents dans le Web.&lt;br /&gt;
&lt;br /&gt;
Il existe différents acteurs qui se penchent sur ce domaine. Notamment, la NSA, Google qui tentent de construire leur propre ordinateur quantique, des scientifiques qui se réunissent pour trouver des solutions.&lt;br /&gt;
Dans cette page, nous allons nous demander en quoi l&#039;informatique quantique peut changer le Web d&#039;aujourd&#039;hui et comment faire face à cette arrivée ?&lt;br /&gt;
&lt;br /&gt;
=== Fonctionnement de l&#039;informatique quantique ===&lt;br /&gt;
&lt;br /&gt;
==== Qubit ====&lt;br /&gt;
&lt;br /&gt;
C&#039;est la plus petite unité de stockage de l&#039;information. Etant donné deux états de base &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;, un qubit non mesuré se trouve dans l&#039;état &amp;lt;math&amp;gt;\alpha \left|0\right\rangle + \beta \left|1\right\rangle&amp;lt;/math&amp;gt;, avec &amp;lt;math&amp;gt;\left|\alpha\right|^2 + \left|\beta\right|^2 = 1&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Lorsqu&#039;on mesure la valeur du qubit, on obtient soit &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; soit &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\left|\alpha\right|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et  &amp;lt;math&amp;gt;\left|\beta\right|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Théorème de non clonage ====&lt;br /&gt;
&lt;br /&gt;
Ce théorème, découvert en 1982 par Wootters, Zurek, et Dieks, consiste à dire qu&#039;il est impossible de recopier un qubit à l&#039;identique. La démonstration (par l&#039;absurde) repose sur le fait que pouvoir mettre le qubit B dans le même état que le qubit A implique que le qubit B soit déjà dans le même état que le qubit A.&lt;br /&gt;
On en déduit qu&#039;il est impossible de faire une opération de type copier/coller en informatique quantique.&lt;br /&gt;
&lt;br /&gt;
==== Téléportation quantique ====&lt;br /&gt;
&lt;br /&gt;
La téléportation quantique consiste à transférer l&#039;état du qubit A dans le qubit B. Il s&#039;agit donc cette fois d&#039;une opération de couper/coller.&lt;br /&gt;
L&#039;intrication quantique se produit lorsque deux qubits sont dépendants l&#039;un de l&#039;autre même s&#039;ils sont éloignés l&#039;un de l&#039;autre. Dans cet état, si on mesure l&#039;un des deux, alors la mesure du deuxième est déterminée.&lt;br /&gt;
Sans entrer dans la théorie physique sous jacente, nous pouvons dire qu&#039;un canal EPR permet de réaliser cette opération de couper/coller en transmettant une information entre deux ordinateurs quantiques.&lt;br /&gt;
&lt;br /&gt;
== Chiffrement asymétrique face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
=== Mise en danger de la sécurité du Web ===&lt;br /&gt;
&lt;br /&gt;
Les ordinateurs quantiques présentent une rapidité de calculs extrêmement plus rapide que les ordinateurs classiques. Ces ordinateurs n&#039;auraient aucune difficulté pour casser les codes de sécurité actuels reposant principalement sur des chiffrements à clé publique. Un chiffrement asymétrique chiffre avec sa clé publique et déchiffre avec sa clé privée. Si nous prenons l&#039;exemple de RSA, un chiffrement asymétrique, qui a la particularité d&#039;être couramment utilisé dans la sécurité du Web. RSA repose sur la génération de grands nombres premiers.&lt;br /&gt;
&lt;br /&gt;
* Initialisation : &lt;br /&gt;
** module &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; (grand nombre entier codé sur 2048 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;p, q&amp;lt;/math&amp;gt; : nombres premiers de même taille (codés sur 1024 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;\phi\left(N\right) = \left(p-1\right) * \left(q - 1\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd\left(e, \phi\left(N\right)\right) = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
** Choisir &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;ed \equiv 1 [\phi(N)]&amp;lt;/math&amp;gt; et donc &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; est l&#039;inverse modulaire de &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; avec &amp;lt;math&amp;gt;d = e^{-1} \left[\phi\left(N\right)\right]&amp;lt;/math&amp;gt;&lt;br /&gt;
** Clé publique : &amp;lt;math&amp;gt;pk\left(n, e\right)&amp;lt;/math&amp;gt;, Clé privée : &amp;lt;math&amp;gt;sk\left(d, p, q\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
* Chiffrement : &amp;lt;math&amp;gt;c = m^e \left[N\right]&amp;lt;/math&amp;gt;&lt;br /&gt;
* Déchiffrement : &amp;lt;math&amp;gt;m = c^d \left[N\right]&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La sécurité de RSA repose sur la difficulté à factoriser des grands nombres en nombres premiers. En effet avec &amp;lt;math&amp;gt;\left(N, e\right)&amp;lt;/math&amp;gt; il faudrait pouvoir retrouver &amp;lt;math&amp;gt;\left(d, p, q\right)&amp;lt;/math&amp;gt; où &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt; correspondant à un cassage total. D&#039;après le théorème de factorisation unique tout entier &amp;lt;math&amp;gt;n \ge 2&amp;lt;/math&amp;gt; admet une factorisation unique en produit de puissances de nombres entiers. Des algorithmes de factorisation ont été trouvés pour différentes tailles de module &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; mais pour pallier à ces attaques on augmente la longueur du module. De nos jours pour sécuriser le chiffrement il faut utiliser des modules strictement supérieur à 2048 bits. Cependant avec l&#039;informatique quantique il ne suffira plus d&#039;augmenter la taille du module car la puissance de calcul permettra de casser le chiffrement, peu importe la taille du module.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Exemple : &amp;lt;math&amp;gt;N=15&amp;lt;/math&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* Je choisis &amp;lt;math&amp;gt;x=7&amp;lt;/math&amp;gt;&lt;br /&gt;
* En calculant successivement les valeurs de &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; on trouve &amp;lt;math&amp;gt;7^{4} \equiv 1 [15]&amp;lt;/math&amp;gt;.&lt;br /&gt;
* &amp;lt;math&amp;gt;r=4&amp;lt;/math&amp;gt; est pair&lt;br /&gt;
* &amp;lt;math&amp;gt;pgcd(x^{\frac{r}{2}}+1,15) = 5&amp;lt;/math&amp;gt;. Donc &amp;lt;math&amp;gt;P = 5&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;Q = pgcd(x^{\frac{r}{2}}-1,15) = 3&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Chiffrement symétrique face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
=== Mise en danger de la sécurité ===&lt;br /&gt;
&lt;br /&gt;
Si les ordinateurs quantiques présentent une rapidité de calcul permettant d&#039;effectuer des factorisations impossibles pour un ordinateur classique, il nous semble logique qu&#039;ils soient également performants pour effectuer des attaques de type force brute sur des messages chiffrés par une clé privée qui aurait été transmise par un moyen plus sûr que RSA.&lt;br /&gt;
 &lt;br /&gt;
Un ordinateur quantique pourrait réaliser le déchiffrement avec toutes les clés possibles en parallèle. Ce qui permettrait de cryptanalyser le message en une seule opération. Le principe se base sur la superposition quantique. On superposerait toutes les clés possibles et on déchiffrerait. On obtiendrait alors une superposition de résultats. Le point le plus difficile est de trouver le résultat correct à partir de la superposition obtenue. En effet, le principe selon lequel mesurer une valeur modifie cette valeur fait qu&#039;en observant une superposition, on obtient un seul état aléatoire. Une solution à ce problème a été trouvé par Lov Grover en &amp;lt;math&amp;gt;O\left(\sqrt{n}\right)&amp;lt;/math&amp;gt; étapes.&lt;br /&gt;
&lt;br /&gt;
== Résistances aux attaques quantiques ==&lt;br /&gt;
&lt;br /&gt;
=== Chiffrement asyémétrique ===&lt;br /&gt;
&lt;br /&gt;
Depuis 2006, une conférence internationnale se produit chaque année nommée &amp;quot;Post Quantum Cryptography&amp;quot; dans l&#039;intention de trouver des algorithmes résistants aux ordinateurs quantiques. Nathan Hamlin et William Webb, des mathématiciens, ont présenté récemment un algorithme de chiffrement asymétrique possiblement capable de faire face aux attaques quantiques. Cet algorithme part de l&#039;ancien chiffrement de Merkle-Hellman qui se base sur le problème du sac à dos nommé &amp;quot;Knapsack code&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
==== Problème du sac-à-dos ====&lt;br /&gt;
&lt;br /&gt;
Etant donné un sac avec une capacité &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; et plusieurs objets de poids différents. Le problème du sac-à-dos consiste à trouver la suite d&#039;objets qui entre dans le sac et qui maximise sa capacité. En partant d&#039;un n-uplet &amp;lt;math&amp;gt;\left(a_1, a_2, ..., a_n\right) \in N^n&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;S \in N&amp;lt;/math&amp;gt;, il faut trouver un n-uplet binaire &amp;lt;math&amp;gt;\left(x_1, x_2, ..., x_n\right) \in \left\{0,1\right\}^n&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;S = \sum_{i=1}^{n} \left(a_{i}*x_{i}\right) &amp;lt;/math&amp;gt;. La somme &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; des poids des objets choisi ne doit pas dépasser la capacité du sac à dos.&lt;br /&gt;
&lt;br /&gt;
==== Chiffrement de Merkle-Hellman ====&lt;br /&gt;
&lt;br /&gt;
Cet algorithme de chiffrement à clé publique repose sur la complexité algorithmique du problème du sac-à-dos et utilise une suite de poids super-croissante pour le secret et une suite non super-croissante pour la clé publique. Si les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt; n&#039;ont pas de propriétés particulières, la recherche du message codé en binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt; est un problème difficile. Il n&#039;existe pas d&#039;algorithme polynomial pour le résoudre. Pour pouvoir retrouver facilement ce n-uplet une propriété super-croissante est appliquée sur les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt;. Un n-uplet b est super-croissant si &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\forall i \in [2,n] b_{i} &amp;gt; \sum_{j=1}^{i-1} {b_{j}}&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ainsi en utilisant un algorithme glouton nous pouvons retrouver le n-uplet binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt;. L&#039;objet le plus lourd est dans le sac si le poids du sac est supérieur au poids de celui-ci. La propriété super-croissante assure que la somme des poids des autres objets sera toujours inférieur au poids de l&#039;objet le plus lourd. L&#039;algorithme est le suivant :&lt;br /&gt;
&lt;br /&gt;
  Pour i de n à 1 faire&lt;br /&gt;
    Si &amp;lt;math&amp;gt;b_{i} \le S&amp;lt;/math&amp;gt; alors&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i}  = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
    Sinon&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i} = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
    &amp;lt;math&amp;gt;S = S - x_{i} * b_{i}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Par exemple en prenant la suite des puissances de 2 comme suite super-croissante  avec : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = \left\{4,8\right\}, b = \left\{2,4,8\right\}, S = 12 \left(4+8\right), n = 3&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 3 : 8 \le 12 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_3 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 2 : 4 \le 4 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_2 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 1 : 2 \le 0 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    non donc &amp;lt;math&amp;gt;x_1 = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  =&amp;gt; &amp;lt;math&amp;gt;m = \left\{0,1,1\right\}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour chiffrer un n-uplet binaire &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;, l&#039;idée de Merkle et Hellman est de &amp;quot;tordre&amp;quot; les &amp;lt;math&amp;gt;b_{i}&amp;lt;/math&amp;gt; pour obtenir un n-uplet qui n&#039;est plus super-croissant. On choisit un nombre &amp;lt;math&amp;gt;u &amp;gt; \sum_{i=1}^{n} {b_{i}}&amp;lt;/math&amp;gt;, un entier &amp;lt;math&amp;gt;v \in \mathbb{N}&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd\left(u,v\right) = 1&amp;lt;/math&amp;gt;. Ce qui donne &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; inversible dans &amp;lt;math&amp;gt;\mathbb{Z}/u\mathbb{Z}&amp;lt;/math&amp;gt;. On prend &amp;lt;math&amp;gt;w = v^{-1} \in \mathbb{Z}/u\mathbb{Z}&amp;lt;/math&amp;gt;. On calcule ensuite le n-uplet &amp;lt;math&amp;gt;a = \left(a_1, ..., a_n\right)&amp;lt;/math&amp;gt; tel que pour tout &amp;lt;math&amp;gt;i \in [1,n]&amp;lt;/math&amp;gt; on a : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = a * b_i \left[u\right]&amp;lt;/math&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
Le n-uplet &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; détermine la clé public tandis que &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt; sont gardés secrets. &amp;lt;br/&amp;gt;&lt;br /&gt;
Pour envoyer le message m à Bob, Alice va, à partir de l&#039;écriture de m en binaire, calculer la somme : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;c = \sum_{i=1}^{n} {m_i * a_i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
qu&#039;elle va envoyer à Bob. Bob pour déchiffrer va devoir procéder à plusieurs étapes : &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt;c = \sum_{i=1}^{n} {m_i * a_i}&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * a_i * w} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * a_i * v^{-1}} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * v * b_i * v^{-1}} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * b_i} [u]&amp;lt;/math&amp;gt;                      =&amp;gt; Comme &amp;lt;math&amp;gt; \sum_{i=1}^{n} {m_i * b_i} &amp;lt; \sum_{i=1}^{n} {b_i}&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt; u &amp;gt; \sum_{i=1}^{n} {b_i}&amp;lt;/math&amp;gt; le modulo &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; peut s&#039;enlever&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * b_i}&amp;lt;/math&amp;gt;                           =&amp;gt; Comme &amp;lt;math&amp;gt;b_i&amp;lt;/math&amp;gt; est super-croissant Bob peut facilement retrouver &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Nouveau chiffrement de Hamlin-Webb ====&lt;br /&gt;
&lt;br /&gt;
Le chiffrement de Merkle et Hellman a été abandonné à la suite des découvertes de Shamir prouvant l&#039;existence d&#039;une attaque permettant de retrouver le message secret en utilisant un algorithme de réduction des réseaux. Nathan Hamlin et William Webb reprennent cet algorithme en le renforçant par un changement de représentation des entiers. Ils ont prouvé q&#039;un entier pouvait être représenté de manière unique avec des suites récurrentes. Le secret &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; n&#039;est alors plus modélisé en binaire mais en une suite récurrente plus complexe à craquer.&lt;br /&gt;
&lt;br /&gt;
===== Représentation du message =====&lt;br /&gt;
La représentation d&#039;un nombre &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; en une suite récurrente &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt; se fait en utilisant une suite augmentée &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; de &amp;lt;math&amp;gt;1 \le j \le 10&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;0 \le i \le n&amp;lt;/math&amp;gt; donné par : &amp;lt;br/&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{1,i}= u_i&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{2,i}= u_i + u_{i-2}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{3,i}= u_i + u_{i-2} + u_{i-3}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{4,i}= u_i + u_{i-2} + 2u_{i-3}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{5,i}= u_i + u_{i-2} +2u_{i-3} + u_{i-4}&amp;lt;/math&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{10,i}= u_i + u_{i-2} +2u_{i-3} + 6u_{i-4}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le suite &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; correspond au blocs de chiffre autorisés. Dans l&#039;exemple &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; se calcule dans des groupes de taille 10 mais ce nombre peut varier. La suite &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; se calcule en utilisant un algorithme glouton sur &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; où l&#039;on remplace la somme en une expression dans la suite &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
Le message secret &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; est représenté par : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; M = \sum_{i=0}^{n-1} {d_i * u_i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
avec &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt; calculé grâce à &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
où les &amp;lt;math&amp;gt;d_i&amp;lt;/math&amp;gt; sont des blocs de chiffre lexicographiquement inférieur à &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Chiffrement symétrique et distribution quantique de clés privées ===&lt;br /&gt;
&lt;br /&gt;
==== Photons polarisés ====&lt;br /&gt;
&lt;br /&gt;
Les photons sont des particules qui composent la lumière. Ils sont composés d&#039;un champ électrique et d&#039;un champ magnétique. Une lumière non-polarisée se caractérise par une différence d&#039;orientation du champ électrique suivant les photons. Ainsi la polarisation consiste, grâce à un polarisateur, d&#039;obtenir des photons avec un champ électrique orienté de manière identique. Les filtres polarisants permettent d&#039;appliquer un angle d&#039;orientation sur les photons afin :&lt;br /&gt;
* de récupérer les photons polarisés correctement orienté&lt;br /&gt;
* d&#039;éliminer les photons polarisés perpendiculairement&lt;br /&gt;
* de récupérer les photons polarisés intermédiaires avec une probabilité de &amp;lt;math&amp;gt;\cos\left(\alpha\right)&amp;lt;/math&amp;gt; en les réinitialisant avec une polarisation égale à l&#039;angle d&#039;orientation du filtre.&lt;br /&gt;
&lt;br /&gt;
La particularité des photons polarisés est qu&#039;il est impossible de connaître l&#039;information sur ses polarisations précédentes.&lt;br /&gt;
&lt;br /&gt;
==== Distribution des clés ====&lt;br /&gt;
&lt;br /&gt;
Le chiffrement quantique offre un moyen sécurisé d’échanger des clés privées pour réaliser des chiffrements symétriques. Cette distribution s’appuie sur l’envoi de photons polarisés par fibre optique. Les personnes s&#039;échangeant les clés doivent avoir accès à un canal quantique et un canal classique. Le principe est le suivant :&lt;br /&gt;
* Alice envoie par le canal quantique une suite de photons polarisés aléatoirement.&lt;br /&gt;
* Bob applique un filtre de polarisation qui lui donne 1 chance sur 2 (et 1 chance sur 4 s&#039;il y a eu un espion) d&#039;appliquer le bon filtre et les renvoit à Alice.&lt;br /&gt;
* Alice et Bob s&#039;échangent par le canal classique leur choix des axes de polarisation éliminant ainsi les erreurs.&lt;br /&gt;
* Alice communique une partie de ses résultats.&lt;br /&gt;
* Maintenant que Bob connait les axes qu&#039;Alice a appliqué et les résultats il peut savoir si la communication a été écoutée ou non. Ceci étant grâce au théorème de non clonage où il est impossible de cloner des états quantiques inconnus.&lt;br /&gt;
&lt;br /&gt;
Ce principe permet de détecter facilement s&#039;il y a eu des intrusions durant la communication de la clé privée. En effet si un attaquant écoute il lui faut récupérer les photons envoyés par Alice mesurer la polarisation et renvoyer le photon à Bob. Pour mesurer la polarisation l&#039;attaquant doit appliquer, comme Bob, un filtre pour deviner la base qu&#039;Alice a envoyé. Ainsi cette intrusion a 1 chance sur 2 d&#039;introduire des incohérences dans les données d&#039;Alice et Bob en envoyant 1 fois sur 2 un mauvais photon. Par la suite Bob obtient donc 1 chance sur 4 d&#039;appliquer le bon filtre. Par analyses statistiques, Alice et Bob peuvent détecter de manière sure s&#039;il y a eu espionnage sur le canal quantique.&lt;br /&gt;
&lt;br /&gt;
==== Attaque de l&#039;homme du milieu ====&lt;br /&gt;
&lt;br /&gt;
Comme toute méthode d&#039;échange de clé privée, cette méthode reste vulnérable à une attaque de type &amp;quot;homme du milieu&amp;quot;. Il faut donc la combiner avec un mécanisme de certification afin de s&#039;assurer de l&#039;identité des protagonistes.&lt;br /&gt;
&lt;br /&gt;
== Ressources ==&lt;br /&gt;
&lt;br /&gt;
* Hamlin, N., &amp;amp; Webb, W. A. (2012). Representing Positive Integers as a Sum of Linear Recurrence Sequences, Fibonacci Quart. 50 (2012), no. 2, 99–105. Fibonacci Quart, 50(2), 99-105.&lt;br /&gt;
&lt;br /&gt;
* Moyer, N. T. (2010). A knapsack-type cryptographic system using algebraic number rings (Doctoral dissertation, Washington State University).&lt;/div&gt;</summary>
		<author><name>JulianaLeclaire</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8719</id>
		<title>Projets étudiants cryptographie et sécurité/Leclaire DeRoland Crypto Quantique</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8719"/>
		<updated>2016-03-18T13:02:33Z</updated>

		<summary type="html">&lt;p&gt;JulianaLeclaire : /* Photons polarisés */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Auteurs : Juliana Leclaire, Céline de Roland ===&lt;br /&gt;
&lt;br /&gt;
== La cryptographie et la cryptanalyse dans le contexte de l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
L&#039;informatique quantique se base sur la superposition de plusieurs états quantiques pour améliorer les capacités de calculs. Ce domaine pose un vrai problème dans la sécurité de l&#039;internet qui utilise des algorithmes de chiffrement asymétriques pour les connexions SSL/TLS, paiements en ligne. Les nouveaux ordinateurs avec leur rapidité de calcul va pouvoir casser ces différents algorithmes de chiffrement asymétriques présents dans le Web.&lt;br /&gt;
&lt;br /&gt;
Il existe différents acteurs qui se penchent sur ce domaine. Notamment, la NSA, Google qui tentent de construire leur propre ordinateur quantique, des scientifiques qui se réunissent pour trouver des solutions.&lt;br /&gt;
Dans cette page, nous allons nous demander en quoi l&#039;informatique quantique peut changer le Web d&#039;aujourd&#039;hui et comment faire face à cette arrivée ?&lt;br /&gt;
&lt;br /&gt;
=== Fonctionnement de l&#039;informatique quantique ===&lt;br /&gt;
&lt;br /&gt;
==== Qubit ====&lt;br /&gt;
&lt;br /&gt;
C&#039;est la plus petite unité de stockage de l&#039;information. Etant donné deux états de base &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;, un qubit non mesuré se trouve dans l&#039;état &amp;lt;math&amp;gt;\alpha \left|0\right\rangle + \beta \left|1\right\rangle&amp;lt;/math&amp;gt;, avec &amp;lt;math&amp;gt;\left|\alpha\right|^2 + \left|\beta\right|^2 = 1&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Lorsqu&#039;on mesure la valeur du qubit, on obtient soit &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; soit &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\left|\alpha\right|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et  &amp;lt;math&amp;gt;\left|\beta\right|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Théorème de non clonage ====&lt;br /&gt;
&lt;br /&gt;
Ce théorème, découvert en 1982 par Wootters, Zurek, et Dieks, consiste à dire qu&#039;il est impossible de recopier un qubit à l&#039;identique. La démonstration (par l&#039;absurde) repose sur le fait que pouvoir mettre le qubit B dans le même état que le qubit A implique que le qubit B soit déjà dans le même état que le qubit A.&lt;br /&gt;
On en déduit qu&#039;il est impossible de faire une opération de type copier/coller en informatique quantique.&lt;br /&gt;
&lt;br /&gt;
==== Téléportation quantique ====&lt;br /&gt;
&lt;br /&gt;
La téléportation quantique consiste à transférer l&#039;état du qubit A dans le qubit B. Il s&#039;agit donc cette fois d&#039;une opération de couper/coller.&lt;br /&gt;
L&#039;intrication quantique se produit lorsque deux qubits sont dépendants l&#039;un de l&#039;autre même s&#039;ils sont éloignés l&#039;un de l&#039;autre. Dans cet état, si on mesure l&#039;un des deux, alors la mesure du deuxième est déterminée.&lt;br /&gt;
Sans entrer dans la théorie physique sous jacente, nous pouvons dire qu&#039;un canal EPR permet de réaliser cette opération de couper/coller en transmettant une information entre deux ordinateurs quantiques.&lt;br /&gt;
&lt;br /&gt;
== Chiffrement asymétrique face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
=== Mise en danger de la sécurité du Web ===&lt;br /&gt;
&lt;br /&gt;
Les ordinateurs quantiques présentent une rapidité de calculs extrêmement plus rapide que les ordinateurs classiques. Ces ordinateurs n&#039;auraient aucune difficulté pour casser les codes de sécurité actuels reposant principalement sur des chiffrements à clé publique. Un chiffrement asymétrique chiffre avec sa clé publique et déchiffre avec sa clé privée. Si nous prenons l&#039;exemple de RSA, un chiffrement asymétrique, qui a la particularité d&#039;être couramment utilisé dans la sécurité du Web. RSA repose sur la génération de grands nombres premiers.&lt;br /&gt;
&lt;br /&gt;
* Initialisation : &lt;br /&gt;
** module &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; (grand nombre entier codé sur 2048 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;p, q&amp;lt;/math&amp;gt; : nombres premiers de même taille (codés sur 1024 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;\phi\left(N\right) = \left(p-1\right) * \left(q - 1\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd\left(e, \phi\left(N\right)\right) = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
** Choisir &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;ed \equiv 1 [\phi(N)]&amp;lt;/math&amp;gt; et donc &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; est l&#039;inverse modulaire de &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; avec &amp;lt;math&amp;gt;d = e^{-1} \left[\phi\left(N\right)\right]&amp;lt;/math&amp;gt;&lt;br /&gt;
** Clé publique : &amp;lt;math&amp;gt;pk\left(n, e\right)&amp;lt;/math&amp;gt;, Clé privée : &amp;lt;math&amp;gt;sk\left(d, p, q\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
* Chiffrement : &amp;lt;math&amp;gt;c = m^e \left[N\right]&amp;lt;/math&amp;gt;&lt;br /&gt;
* Déchiffrement : &amp;lt;math&amp;gt;m = c^d \left[N\right]&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La sécurité de RSA repose sur la difficulté à factoriser des grands nombres en nombres premiers. En effet avec &amp;lt;math&amp;gt;\left(N, e\right)&amp;lt;/math&amp;gt; il faudrait pouvoir retrouver &amp;lt;math&amp;gt;\left(d, p, q\right)&amp;lt;/math&amp;gt; où &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt; correspondant à un cassage total. D&#039;après le théorème de factorisation unique tout entier &amp;lt;math&amp;gt;n \ge 2&amp;lt;/math&amp;gt; admet une factorisation unique en produit de puissances de nombres entiers. Des algorithmes de factorisation ont été trouvés pour différentes tailles de module &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; mais pour pallier à ces attaques on augmente la longueur du module. De nos jours pour sécuriser le chiffrement il faut utiliser des modules strictement supérieur à 2048 bits. Cependant avec l&#039;informatique quantique il ne suffira plus d&#039;augmenter la taille du module car la puissance de calcul permettra de casser le chiffrement, peu importe la taille du module.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Exemple : &amp;lt;math&amp;gt;N=15&amp;lt;/math&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* Je choisis &amp;lt;math&amp;gt;x=7&amp;lt;/math&amp;gt;&lt;br /&gt;
* En calculant successivement les valeurs de &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; on trouve &amp;lt;math&amp;gt;7^{4} \equiv 1 [15]&amp;lt;/math&amp;gt;.&lt;br /&gt;
* &amp;lt;math&amp;gt;r=4&amp;lt;/math&amp;gt; est pair&lt;br /&gt;
* &amp;lt;math&amp;gt;pgcd(x^{\frac{r}{2}}+1,15) = 5&amp;lt;/math&amp;gt;. Donc &amp;lt;math&amp;gt;P = 5&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;Q = pgcd(x^{\frac{r}{2}}-1,15) = 3&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Chiffrement symétrique face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
=== Mise en danger de la sécurité ===&lt;br /&gt;
&lt;br /&gt;
Si les ordinateurs quantiques présentent une rapidité de calcul permettant d&#039;effectuer des factorisations impossibles pour un ordinateur classique, il nous semble logique qu&#039;ils soient également performants pour effectuer des attaques de type force brute sur des messages chiffrés par une clé privée qui aurait été transmise par un moyen plus sûr que RSA.&lt;br /&gt;
 &lt;br /&gt;
Un ordinateur quantique pourrait réaliser le déchiffrement avec toutes les clés possibles en parallèle. Ce qui permettrait de cryptanalyser le message en une seule opération. Le principe se base sur la superposition quantique. On superposerait toutes les clés possibles et on déchiffrerait. On obtiendrait alors une superposition de résultats. Le point le plus difficile est de trouver le résultat correct à partir de la superposition obtenue. En effet, le principe selon lequel mesurer une valeur modifie cette valeur fait qu&#039;en observant une superposition, on obtient un seul état aléatoire. Une solution à ce problème a été trouvé par Lov Grover en &amp;lt;math&amp;gt;O\left(\sqrt{n}\right)&amp;lt;/math&amp;gt; étapes.&lt;br /&gt;
&lt;br /&gt;
== Résistances aux attaques quantiques ==&lt;br /&gt;
&lt;br /&gt;
=== Chiffrement asyémétrique ===&lt;br /&gt;
&lt;br /&gt;
Depuis 2006, une conférence internationnale se produit chaque année nommée &amp;quot;Post Quantum Cryptography&amp;quot; dans l&#039;intention de trouver des algorithmes résistants aux ordinateurs quantiques. Nathan Hamlin et William Webb, des mathématiciens, ont présenté récemment un algorithme de chiffrement asymétrique possiblement capable de faire face aux attaques quantiques. Cet algorithme part de l&#039;ancien chiffrement de Merkle-Hellman qui se base sur le problème du sac à dos nommé &amp;quot;Knapsack code&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
==== Problème du sac-à-dos ====&lt;br /&gt;
&lt;br /&gt;
Etant donné un sac avec une capacité &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; et plusieurs objets de poids différents. Le problème du sac-à-dos consiste à trouver la suite d&#039;objets qui entre dans le sac et qui maximise sa capacité. En partant d&#039;un n-uplet &amp;lt;math&amp;gt;\left(a_1, a_2, ..., a_n\right) \in N^n&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;S \in N&amp;lt;/math&amp;gt;, il faut trouver un n-uplet binaire &amp;lt;math&amp;gt;\left(x_1, x_2, ..., x_n\right) \in \left\{0,1\right\}^n&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;S = \sum_{i=1}^{n} \left(a_{i}*x_{i}\right) &amp;lt;/math&amp;gt;. La somme &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; des poids des objets choisi ne doit pas dépasser la capacité du sac à dos.&lt;br /&gt;
&lt;br /&gt;
==== Chiffrement de Merkle-Hellman ====&lt;br /&gt;
&lt;br /&gt;
Cet algorithme de chiffrement à clé publique repose sur la complexité algorithmique du problème du sac-à-dos et utilise une suite de poids super-croissante pour le secret et une suite non super-croissante pour la clé publique. Si les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt; n&#039;ont pas de propriétés particulières, la recherche du message codé en binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt; est un problème difficile. Il n&#039;existe pas d&#039;algorithme polynomial pour le résoudre. Pour pouvoir retrouver facilement ce n-uplet une propriété super-croissante est appliquée sur les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt;. Un n-uplet b est super-croissant si &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\forall i \in [2,n] b_{i} &amp;gt; \sum_{j=1}^{i-1} {b_{j}}&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ainsi en utilisant un algorithme glouton nous pouvons retrouver le n-uplet binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt;. L&#039;objet le plus lourd est dans le sac si le poids du sac est supérieur au poids de celui-ci. La propriété super-croissante assure que la somme des poids des autres objets sera toujours inférieur au poids de l&#039;objet le plus lourd. L&#039;algorithme est le suivant :&lt;br /&gt;
&lt;br /&gt;
  Pour i de n à 1 faire&lt;br /&gt;
    Si &amp;lt;math&amp;gt;b_{i} \le S&amp;lt;/math&amp;gt; alors&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i}  = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
    Sinon&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i} = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
    &amp;lt;math&amp;gt;S = S - x_{i} * b_{i}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Par exemple en prenant la suite des puissances de 2 comme suite super-croissante  avec : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = \left\{4,8\right\}, b = \left\{2,4,8\right\}, S = 12 \left(4+8\right), n = 3&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 3 : 8 \le 12 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_3 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 2 : 4 \le 4 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_2 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 1 : 2 \le 0 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    non donc &amp;lt;math&amp;gt;x_1 = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  =&amp;gt; &amp;lt;math&amp;gt;m = \left\{0,1,1\right\}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour chiffrer un n-uplet binaire &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;, l&#039;idée de Merkle et Hellman est de &amp;quot;tordre&amp;quot; les &amp;lt;math&amp;gt;b_{i}&amp;lt;/math&amp;gt; pour obtenir un n-uplet qui n&#039;est plus super-croissant. On choisit un nombre &amp;lt;math&amp;gt;u &amp;gt; \sum_{i=1}^{n} {b_{i}}&amp;lt;/math&amp;gt;, un entier &amp;lt;math&amp;gt;v \in \mathbb{N}&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd\left(u,v\right) = 1&amp;lt;/math&amp;gt;. Ce qui donne &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; inversible dans &amp;lt;math&amp;gt;\mathbb{Z}/u\mathbb{Z}&amp;lt;/math&amp;gt;. On prend &amp;lt;math&amp;gt;w = v^{-1} \in \mathbb{Z}/u\mathbb{Z}&amp;lt;/math&amp;gt;. On calcule ensuite le n-uplet &amp;lt;math&amp;gt;a = \left(a_1, ..., a_n\right)&amp;lt;/math&amp;gt; tel que pour tout &amp;lt;math&amp;gt;i \in [1,n]&amp;lt;/math&amp;gt; on a : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = a * b_i \left[u\right]&amp;lt;/math&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
Le n-uplet &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; détermine la clé public tandis que &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt; sont gardés secrets. &amp;lt;br/&amp;gt;&lt;br /&gt;
Pour envoyer le message m à Bob, Alice va, à partir de l&#039;écriture de m en binaire, calculer la somme : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;c = \sum_{i=1}^{n} {m_i * a_i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
qu&#039;elle va envoyer à Bob. Bob pour déchiffrer va devoir procéder à plusieurs étapes : &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt;c = \sum_{i=1}^{n} {m_i * a_i}&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * a_i * w} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * a_i * v^{-1}} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * v * b_i * v^{-1}} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * b_i} [u]&amp;lt;/math&amp;gt;                      =&amp;gt; Comme &amp;lt;math&amp;gt; \sum_{i=1}^{n} {m_i * b_i} &amp;lt; \sum_{i=1}^{n} {b_i}&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt; u &amp;gt; \sum_{i=1}^{n} {b_i}&amp;lt;/math&amp;gt; le modulo &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; peut s&#039;enlever&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * b_i}&amp;lt;/math&amp;gt;                           =&amp;gt; Comme &amp;lt;math&amp;gt;b_i&amp;lt;/math&amp;gt; est super-croissant Bob peut facilement retrouver &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Nouveau chiffrement de Hamlin-Webb ====&lt;br /&gt;
&lt;br /&gt;
Le chiffrement de Merkle et Hellman a été abandonné à la suite des découvertes de Shamir prouvant l&#039;existence d&#039;une attaque permettant de retrouver le message secret en utilisant un algorithme de réduction des réseaux. Nathan Hamlin et William Webb reprennent cet algorithme en le renforçant par un changement de représentation des entiers. Ils ont prouvé q&#039;un entier pouvait être représenté de manière unique avec des suites récurrentes. Le secret &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; n&#039;est alors plus modélisé en binaire mais en une suite récurrente plus complexe à craquer.&lt;br /&gt;
&lt;br /&gt;
===== Représentation du message =====&lt;br /&gt;
La représentation d&#039;un nombre &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; en une suite récurrente &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt; se fait en utilisant une suite augmentée &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; de &amp;lt;math&amp;gt;1 \le j \le 10&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;0 \le i \le n&amp;lt;/math&amp;gt; donné par : &amp;lt;br/&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{1,i}= u_i&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{2,i}= u_i + u_{i-2}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{3,i}= u_i + u_{i-2} + u_{i-3}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{4,i}= u_i + u_{i-2} + 2u_{i-3}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{5,i}= u_i + u_{i-2} +2u_{i-3} + u_{i-4}&amp;lt;/math&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{10,i}= u_i + u_{i-2} +2u_{i-3} + 6u_{i-4}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le suite &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; correspond au blocs de chiffre autorisés. Dans l&#039;exemple &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; se calcule dans des groupes de taille 10 mais ce nombre peut varier. La suite &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; se calcule en utilisant un algorithme glouton sur &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; où l&#039;on remplace la somme en une expression dans la suite &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
Le message secret &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; est représenté par : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; M = \sum_{i=0}^{n-1} {d_i * u_i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
avec &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt; calculé grâce à &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
où les &amp;lt;math&amp;gt;d_i&amp;lt;/math&amp;gt; sont des blocs de chiffre lexicographiquement inférieur à &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Chiffrement symétrique et distribution quantique de clés privées ===&lt;br /&gt;
&lt;br /&gt;
==== Photons polarisés ====&lt;br /&gt;
&lt;br /&gt;
Les photons sont des particules qui composent la lumière. Ils sont composés d&#039;un champ électrique et d&#039;un champ magnétique. Une lumière non-polarisée se caractérise par une différence d&#039;orientation du champ électrique suivant les photons. Ainsi la polarisation consiste, grâce à un polarisateur, d&#039;obtenir des photons avec un champ électrique orienté de manière identique. Les filtres polarisants permettent d&#039;appliquer un angle d&#039;orientation sur les photons afin :&lt;br /&gt;
* de récupérer les photons polarisés correctement orienté&lt;br /&gt;
* d&#039;éliminer les photons polarisés perpendiculairement&lt;br /&gt;
* de récupérer les photons polarisés intermédiaires avec une probabilité de &amp;lt;math&amp;gt;\cos\left(\alpha\right)&amp;lt;/math&amp;gt; en les réinitialisant avec une polarisation égale à l&#039;angle d&#039;orientation du filtre.&lt;br /&gt;
&lt;br /&gt;
Du fait de la transformation de polarisation il est impossible de connaître l&#039;information sur les polarisations précédentes du photons.&lt;br /&gt;
&lt;br /&gt;
==== Distribution des clés ====&lt;br /&gt;
&lt;br /&gt;
Le chiffrement quantique offre un moyen sécurisé d’échanger des clés privées pour réaliser des chiffrements symétriques. Cette distribution s’appuie sur l’envoi de photons polarisés par fibre optique. Les personnes s&#039;échangeant les clés doivent avoir accès à un canal quantique et un canal classique. Le principe est le suivant :&lt;br /&gt;
* Alice envoie par le canal quantique une suite de photons polarisés aléatoirement.&lt;br /&gt;
* Bob applique un filtre de polarisation qui lui donne 1 chance sur 2 (et 1 chance sur 4 s&#039;il y a eu un espion) d&#039;appliquer le bon filtre et les renvoit à Alice.&lt;br /&gt;
* Alice et Bob s&#039;échangent par le canal classique leur choix des axes de polarisation éliminant ainsi les erreurs.&lt;br /&gt;
* Alice communique une partie de ses résultats.&lt;br /&gt;
* Maintenant que Bob connait les axes qu&#039;Alice a appliqué et les résultats il peut savoir si la communication a été écoutée ou non. Ceci étant grâce au théorème de non clonage où il est impossible de cloner des états quantiques inconnus.&lt;br /&gt;
&lt;br /&gt;
Ce principe permet de détecter facilement s&#039;il y a eu des intrusions durant la communication de la clé privée. En effet si un attaquant écoute il lui faut récupérer les photons envoyés par Alice mesurer la polarisation et renvoyer le photon à Bob. Pour mesurer la polarisation l&#039;attaquant doit appliquer, comme Bob, un filtre pour deviner la base qu&#039;Alice a envoyé. Ainsi cette intrusion a 1 chance sur 2 d&#039;introduire des incohérences dans les données d&#039;Alice et Bob en envoyant 1 fois sur 2 un mauvais photon. Par la suite Bob obtient donc 1 chance sur 4 d&#039;appliquer le bon filtre. Par analyses statistiques, Alice et Bob peuvent détecter de manière sure s&#039;il y a eu espionnage sur le canal quantique.&lt;br /&gt;
&lt;br /&gt;
==== Attaque de l&#039;homme du milieu ====&lt;br /&gt;
&lt;br /&gt;
Comme toute méthode d&#039;échange de clé privée, cette méthode reste vulnérable à une attaque de type &amp;quot;homme du milieu&amp;quot;. Il faut donc la combiner avec un mécanisme de certification afin de s&#039;assurer de l&#039;identité des protagonistes.&lt;br /&gt;
&lt;br /&gt;
== Ressources ==&lt;br /&gt;
&lt;br /&gt;
* Hamlin, N., &amp;amp; Webb, W. A. (2012). Representing Positive Integers as a Sum of Linear Recurrence Sequences, Fibonacci Quart. 50 (2012), no. 2, 99–105. Fibonacci Quart, 50(2), 99-105.&lt;br /&gt;
&lt;br /&gt;
* Moyer, N. T. (2010). A knapsack-type cryptographic system using algebraic number rings (Doctoral dissertation, Washington State University).&lt;/div&gt;</summary>
		<author><name>JulianaLeclaire</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8716</id>
		<title>Projets étudiants cryptographie et sécurité/Leclaire DeRoland Crypto Quantique</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8716"/>
		<updated>2016-03-18T12:59:32Z</updated>

		<summary type="html">&lt;p&gt;JulianaLeclaire : /* Chiffrement symétrique */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Auteurs : Juliana Leclaire, Céline de Roland ===&lt;br /&gt;
&lt;br /&gt;
== La cryptographie et la cryptanalyse dans le contexte de l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
L&#039;informatique quantique se base sur la superposition de plusieurs états quantiques pour améliorer les capacités de calculs. Ce domaine pose un vrai problème dans la sécurité de l&#039;internet qui utilise des algorithmes de chiffrement asymétriques pour les connexions SSL/TLS, paiements en ligne. Les nouveaux ordinateurs avec leur rapidité de calcul va pouvoir casser ces différents algorithmes de chiffrement asymétriques présents dans le Web.&lt;br /&gt;
&lt;br /&gt;
Il existe différents acteurs qui se penchent sur ce domaine. Notamment, la NSA, Google qui tentent de construire leur propre ordinateur quantique, des scientifiques qui se réunissent pour trouver des solutions.&lt;br /&gt;
Dans cette page, nous allons nous demander en quoi l&#039;informatique quantique peut changer le Web d&#039;aujourd&#039;hui et comment faire face à cette arrivée ?&lt;br /&gt;
&lt;br /&gt;
=== Fonctionnement de l&#039;informatique quantique ===&lt;br /&gt;
&lt;br /&gt;
==== Qubit ====&lt;br /&gt;
&lt;br /&gt;
C&#039;est la plus petite unité de stockage de l&#039;information. Etant donné deux états de base &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;, un qubit non mesuré se trouve dans l&#039;état &amp;lt;math&amp;gt;\alpha \left|0\right\rangle + \beta \left|1\right\rangle&amp;lt;/math&amp;gt;, avec &amp;lt;math&amp;gt;\left|\alpha\right|^2 + \left|\beta\right|^2 = 1&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Lorsqu&#039;on mesure la valeur du qubit, on obtient soit &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; soit &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\left|\alpha\right|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et  &amp;lt;math&amp;gt;\left|\beta\right|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Théorème de non clonage ====&lt;br /&gt;
&lt;br /&gt;
Ce théorème, découvert en 1982 par Wootters, Zurek, et Dieks, consiste à dire qu&#039;il est impossible de recopier un qubit à l&#039;identique. La démonstration (par l&#039;absurde) repose sur le fait que pouvoir mettre le qubit B dans le même état que le qubit A implique que le qubit B soit déjà dans le même état que le qubit A.&lt;br /&gt;
On en déduit qu&#039;il est impossible de faire une opération de type copier/coller en informatique quantique.&lt;br /&gt;
&lt;br /&gt;
==== Téléportation quantique ====&lt;br /&gt;
&lt;br /&gt;
La téléportation quantique consiste à transférer l&#039;état du qubit A dans le qubit B. Il s&#039;agit donc cette fois d&#039;une opération de couper/coller.&lt;br /&gt;
L&#039;intrication quantique se produit lorsque deux qubits sont dépendants l&#039;un de l&#039;autre même s&#039;ils sont éloignés l&#039;un de l&#039;autre. Dans cet état, si on mesure l&#039;un des deux, alors la mesure du deuxième est déterminée.&lt;br /&gt;
Sans entrer dans la théorie physique sous jacente, nous pouvons dire qu&#039;un canal EPR permet de réaliser cette opération de couper/coller en transmettant une information entre deux ordinateurs quantiques.&lt;br /&gt;
&lt;br /&gt;
== Chiffrement asymétrique face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
=== Mise en danger de la sécurité du Web ===&lt;br /&gt;
&lt;br /&gt;
Les ordinateurs quantiques présentent une rapidité de calculs extrêmement plus rapide que les ordinateurs classiques. Ces ordinateurs n&#039;auraient aucune difficulté pour casser les codes de sécurité actuels reposant principalement sur des chiffrements à clé publique. Un chiffrement asymétrique chiffre avec sa clé publique et déchiffre avec sa clé privée. Si nous prenons l&#039;exemple de RSA, un chiffrement asymétrique, qui a la particularité d&#039;être couramment utilisé dans la sécurité du Web. RSA repose sur la génération de grands nombres premiers.&lt;br /&gt;
&lt;br /&gt;
* Initialisation : &lt;br /&gt;
** module &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; (grand nombre entier codé sur 2048 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;p, q&amp;lt;/math&amp;gt; : nombres premiers de même taille (codés sur 1024 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;\phi\left(N\right) = \left(p-1\right) * \left(q - 1\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd\left(e, \phi\left(N\right)\right) = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
** Choisir &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;ed \equiv 1 [\phi(N)]&amp;lt;/math&amp;gt; et donc &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; est l&#039;inverse modulaire de &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; avec &amp;lt;math&amp;gt;d = e^{-1} \left[\phi\left(N\right)\right]&amp;lt;/math&amp;gt;&lt;br /&gt;
** Clé publique : &amp;lt;math&amp;gt;pk\left(n, e\right)&amp;lt;/math&amp;gt;, Clé privée : &amp;lt;math&amp;gt;sk\left(d, p, q\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
* Chiffrement : &amp;lt;math&amp;gt;c = m^e \left[N\right]&amp;lt;/math&amp;gt;&lt;br /&gt;
* Déchiffrement : &amp;lt;math&amp;gt;m = c^d \left[N\right]&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La sécurité de RSA repose sur la difficulté à factoriser des grands nombres en nombres premiers. En effet avec &amp;lt;math&amp;gt;\left(N, e\right)&amp;lt;/math&amp;gt; il faudrait pouvoir retrouver &amp;lt;math&amp;gt;\left(d, p, q\right)&amp;lt;/math&amp;gt; où &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt; correspondant à un cassage total. D&#039;après le théorème de factorisation unique tout entier &amp;lt;math&amp;gt;n \ge 2&amp;lt;/math&amp;gt; admet une factorisation unique en produit de puissances de nombres entiers. Des algorithmes de factorisation ont été trouvés pour différentes tailles de module &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; mais pour pallier à ces attaques on augmente la longueur du module. De nos jours pour sécuriser le chiffrement il faut utiliser des modules strictement supérieur à 2048 bits. Cependant avec l&#039;informatique quantique il ne suffira plus d&#039;augmenter la taille du module car la puissance de calcul permettra de casser le chiffrement, peu importe la taille du module.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Exemple : &amp;lt;math&amp;gt;N=15&amp;lt;/math&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* Je choisis &amp;lt;math&amp;gt;x=7&amp;lt;/math&amp;gt;&lt;br /&gt;
* En calculant successivement les valeurs de &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; on trouve &amp;lt;math&amp;gt;7^{4} \equiv 1 [15]&amp;lt;/math&amp;gt;.&lt;br /&gt;
* &amp;lt;math&amp;gt;r=4&amp;lt;/math&amp;gt; est pair&lt;br /&gt;
* &amp;lt;math&amp;gt;pgcd(x^{\frac{r}{2}}+1,15) = 5&amp;lt;/math&amp;gt;. Donc &amp;lt;math&amp;gt;P = 5&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;Q = pgcd(x^{\frac{r}{2}}-1,15) = 3&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Chiffrement symétrique face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
=== Mise en danger de la sécurité ===&lt;br /&gt;
&lt;br /&gt;
Si les ordinateurs quantiques présentent une rapidité de calcul permettant d&#039;effectuer des factorisations impossibles pour un ordinateur classique, il nous semble logique qu&#039;ils soient également performants pour effectuer des attaques de type force brute sur des messages chiffrés par une clé privée qui aurait été transmise par un moyen plus sûr que RSA.&lt;br /&gt;
 &lt;br /&gt;
Un ordinateur quantique pourrait réaliser le déchiffrement avec toutes les clés possibles en parallèle. Ce qui permettrait de cryptanalyser le message en une seule opération. Le principe se base sur la superposition quantique. On superposerait toutes les clés possibles et on déchiffrerait. On obtiendrait alors une superposition de résultats. Le point le plus difficile est de trouver le résultat correct à partir de la superposition obtenue. En effet, le principe selon lequel mesurer une valeur modifie cette valeur fait qu&#039;en observant une superposition, on obtient un seul état aléatoire. Une solution à ce problème a été trouvé par Lov Grover en &amp;lt;math&amp;gt;O\left(\sqrt{n}\right)&amp;lt;/math&amp;gt; étapes.&lt;br /&gt;
&lt;br /&gt;
== Résistances aux attaques quantiques ==&lt;br /&gt;
&lt;br /&gt;
=== Chiffrement asyémétrique ===&lt;br /&gt;
&lt;br /&gt;
Depuis 2006, une conférence internationnale se produit chaque année nommée &amp;quot;Post Quantum Cryptography&amp;quot; dans l&#039;intention de trouver des algorithmes résistants aux ordinateurs quantiques. Nathan Hamlin et William Webb, des mathématiciens, ont présenté récemment un algorithme de chiffrement asymétrique possiblement capable de faire face aux attaques quantiques. Cet algorithme part de l&#039;ancien chiffrement de Merkle-Hellman qui se base sur le problème du sac à dos nommé &amp;quot;Knapsack code&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
==== Problème du sac-à-dos ====&lt;br /&gt;
&lt;br /&gt;
Etant donné un sac avec une capacité &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; et plusieurs objets de poids différents. Le problème du sac-à-dos consiste à trouver la suite d&#039;objets qui entre dans le sac et qui maximise sa capacité. En partant d&#039;un n-uplet &amp;lt;math&amp;gt;\left(a_1, a_2, ..., a_n\right) \in N^n&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;S \in N&amp;lt;/math&amp;gt;, il faut trouver un n-uplet binaire &amp;lt;math&amp;gt;\left(x_1, x_2, ..., x_n\right) \in \left\{0,1\right\}^n&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;S = \sum_{i=1}^{n} \left(a_{i}*x_{i}\right) &amp;lt;/math&amp;gt;. La somme &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; des poids des objets choisi ne doit pas dépasser la capacité du sac à dos.&lt;br /&gt;
&lt;br /&gt;
==== Chiffrement de Merkle-Hellman ====&lt;br /&gt;
&lt;br /&gt;
Cet algorithme de chiffrement à clé publique repose sur la complexité algorithmique du problème du sac-à-dos et utilise une suite de poids super-croissante pour le secret et une suite non super-croissante pour la clé publique. Si les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt; n&#039;ont pas de propriétés particulières, la recherche du message codé en binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt; est un problème difficile. Il n&#039;existe pas d&#039;algorithme polynomial pour le résoudre. Pour pouvoir retrouver facilement ce n-uplet une propriété super-croissante est appliquée sur les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt;. Un n-uplet b est super-croissant si &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\forall i \in [2,n] b_{i} &amp;gt; \sum_{j=1}^{i-1} {b_{j}}&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ainsi en utilisant un algorithme glouton nous pouvons retrouver le n-uplet binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt;. L&#039;objet le plus lourd est dans le sac si le poids du sac est supérieur au poids de celui-ci. La propriété super-croissante assure que la somme des poids des autres objets sera toujours inférieur au poids de l&#039;objet le plus lourd. L&#039;algorithme est le suivant :&lt;br /&gt;
&lt;br /&gt;
  Pour i de n à 1 faire&lt;br /&gt;
    Si &amp;lt;math&amp;gt;b_{i} \le S&amp;lt;/math&amp;gt; alors&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i}  = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
    Sinon&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i} = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
    &amp;lt;math&amp;gt;S = S - x_{i} * b_{i}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Par exemple en prenant la suite des puissances de 2 comme suite super-croissante  avec : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = \left\{4,8\right\}, b = \left\{2,4,8\right\}, S = 12 \left(4+8\right), n = 3&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 3 : 8 \le 12 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_3 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 2 : 4 \le 4 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_2 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 1 : 2 \le 0 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    non donc &amp;lt;math&amp;gt;x_1 = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  =&amp;gt; &amp;lt;math&amp;gt;m = \left\{0,1,1\right\}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour chiffrer un n-uplet binaire &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;, l&#039;idée de Merkle et Hellman est de &amp;quot;tordre&amp;quot; les &amp;lt;math&amp;gt;b_{i}&amp;lt;/math&amp;gt; pour obtenir un n-uplet qui n&#039;est plus super-croissant. On choisit un nombre &amp;lt;math&amp;gt;u &amp;gt; \sum_{i=1}^{n} {b_{i}}&amp;lt;/math&amp;gt;, un entier &amp;lt;math&amp;gt;v \in \mathbb{N}&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd\left(u,v\right) = 1&amp;lt;/math&amp;gt;. Ce qui donne &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; inversible dans &amp;lt;math&amp;gt;\mathbb{Z}/u\mathbb{Z}&amp;lt;/math&amp;gt;. On prend &amp;lt;math&amp;gt;w = v^{-1} \in \mathbb{Z}/u\mathbb{Z}&amp;lt;/math&amp;gt;. On calcule ensuite le n-uplet &amp;lt;math&amp;gt;a = \left(a_1, ..., a_n\right)&amp;lt;/math&amp;gt; tel que pour tout &amp;lt;math&amp;gt;i \in [1,n]&amp;lt;/math&amp;gt; on a : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = a * b_i \left[u\right]&amp;lt;/math&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
Le n-uplet &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; détermine la clé public tandis que &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt; sont gardés secrets. &amp;lt;br/&amp;gt;&lt;br /&gt;
Pour envoyer le message m à Bob, Alice va, à partir de l&#039;écriture de m en binaire, calculer la somme : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;c = \sum_{i=1}^{n} {m_i * a_i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
qu&#039;elle va envoyer à Bob. Bob pour déchiffrer va devoir procéder à plusieurs étapes : &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt;c = \sum_{i=1}^{n} {m_i * a_i}&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * a_i * w} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * a_i * v^{-1}} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * v * b_i * v^{-1}} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * b_i} [u]&amp;lt;/math&amp;gt;                      =&amp;gt; Comme &amp;lt;math&amp;gt; \sum_{i=1}^{n} {m_i * b_i} &amp;lt; \sum_{i=1}^{n} {b_i}&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt; u &amp;gt; \sum_{i=1}^{n} {b_i}&amp;lt;/math&amp;gt; le modulo &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; peut s&#039;enlever&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * b_i}&amp;lt;/math&amp;gt;                           =&amp;gt; Comme &amp;lt;math&amp;gt;b_i&amp;lt;/math&amp;gt; est super-croissant Bob peut facilement retrouver &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Nouveau chiffrement de Hamlin-Webb ====&lt;br /&gt;
&lt;br /&gt;
Le chiffrement de Merkle et Hellman a été abandonné à la suite des découvertes de Shamir prouvant l&#039;existence d&#039;une attaque permettant de retrouver le message secret en utilisant un algorithme de réduction des réseaux. Nathan Hamlin et William Webb reprennent cet algorithme en le renforçant par un changement de représentation des entiers. Ils ont prouvé q&#039;un entier pouvait être représenté de manière unique avec des suites récurrentes. Le secret &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; n&#039;est alors plus modélisé en binaire mais en une suite récurrente plus complexe à craquer.&lt;br /&gt;
&lt;br /&gt;
===== Représentation du message =====&lt;br /&gt;
La représentation d&#039;un nombre &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; en une suite récurrente &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt; se fait en utilisant une suite augmentée &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; de &amp;lt;math&amp;gt;1 \le j \le 10&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;0 \le i \le n&amp;lt;/math&amp;gt; donné par : &amp;lt;br/&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{1,i}= u_i&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{2,i}= u_i + u_{i-2}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{3,i}= u_i + u_{i-2} + u_{i-3}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{4,i}= u_i + u_{i-2} + 2u_{i-3}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{5,i}= u_i + u_{i-2} +2u_{i-3} + u_{i-4}&amp;lt;/math&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{10,i}= u_i + u_{i-2} +2u_{i-3} + 6u_{i-4}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le suite &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; correspond au blocs de chiffre autorisés. Dans l&#039;exemple &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; se calcule dans des groupes de taille 10 mais ce nombre peut varier. La suite &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; se calcule en utilisant un algorithme glouton sur &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; où l&#039;on remplace la somme en une expression dans la suite &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
Le message secret &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; est représenté par : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; M = \sum_{i=0}^{n-1} {d_i * u_i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
avec &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt; calculé grâce à &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
où les &amp;lt;math&amp;gt;d_i&amp;lt;/math&amp;gt; sont des blocs de chiffre lexicographiquement inférieur à &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Chiffrement symétrique et distribution quantique de clés privées ===&lt;br /&gt;
&lt;br /&gt;
==== Photons polarisés ====&lt;br /&gt;
&lt;br /&gt;
Les photons sont des particules qui composent la lumière. Ils sont composés d&#039;un champ électrique et d&#039;un champ magnétique. Une lumière non-polarisée se caractérise par une différence d&#039;orientation du champ électrique suivant les photons. Ainsi la polarisation consiste, grâce à un polarisateur, d&#039;obtenir des photons avec un champ électrique orienté de manière identique. Les filtres polarisants permettent d&#039;appliquer un angle d&#039;orientation sur les photons afin :&lt;br /&gt;
* de récupérer les photons polarisés parallèlement par rapport à cet angle&lt;br /&gt;
* d&#039;éliminer les photons polarisés perpendiculairement&lt;br /&gt;
* de récupérer les photons polarisés intermédiaires avec une probabilité de &amp;lt;math&amp;gt;\cos\left(\alpha\right)&amp;lt;/math&amp;gt; en les réinitialisant avec une polarisation égale à l&#039;angle d&#039;orientation du filtre.&lt;br /&gt;
&lt;br /&gt;
Du fait de la transformation de polarisation il est impossible de connaître l&#039;information sur les polarisations précédentes du photons.&lt;br /&gt;
&lt;br /&gt;
==== Distribution des clés ====&lt;br /&gt;
&lt;br /&gt;
Le chiffrement quantique offre un moyen sécurisé d’échanger des clés privées pour réaliser des chiffrements symétriques. Cette distribution s’appuie sur l’envoi de photons polarisés par fibre optique. Les personnes s&#039;échangeant les clés doivent avoir accès à un canal quantique et un canal classique. Le principe est le suivant :&lt;br /&gt;
* Alice envoie par le canal quantique une suite de photons polarisés aléatoirement.&lt;br /&gt;
* Bob applique un filtre de polarisation qui lui donne 1 chance sur 2 (et 1 chance sur 4 s&#039;il y a eu un espion) d&#039;appliquer le bon filtre et les renvoit à Alice.&lt;br /&gt;
* Alice et Bob s&#039;échangent par le canal classique leur choix des axes de polarisation éliminant ainsi les erreurs.&lt;br /&gt;
* Alice communique une partie de ses résultats.&lt;br /&gt;
* Maintenant que Bob connait les axes qu&#039;Alice a appliqué et les résultats il peut savoir si la communication a été écoutée ou non. Ceci étant grâce au théorème de non clonage où il est impossible de cloner des états quantiques inconnus.&lt;br /&gt;
&lt;br /&gt;
Ce principe permet de détecter facilement s&#039;il y a eu des intrusions durant la communication de la clé privée. En effet si un attaquant écoute il lui faut récupérer les photons envoyés par Alice mesurer la polarisation et renvoyer le photon à Bob. Pour mesurer la polarisation l&#039;attaquant doit appliquer, comme Bob, un filtre pour deviner la base qu&#039;Alice a envoyé. Ainsi cette intrusion a 1 chance sur 2 d&#039;introduire des incohérences dans les données d&#039;Alice et Bob en envoyant 1 fois sur 2 un mauvais photon. Par la suite Bob obtient donc 1 chance sur 4 d&#039;appliquer le bon filtre. Par analyses statistiques, Alice et Bob peuvent détecter de manière sure s&#039;il y a eu espionnage sur le canal quantique.&lt;br /&gt;
&lt;br /&gt;
==== Attaque de l&#039;homme du milieu ====&lt;br /&gt;
&lt;br /&gt;
Comme toute méthode d&#039;échange de clé privée, cette méthode reste vulnérable à une attaque de type &amp;quot;homme du milieu&amp;quot;. Il faut donc la combiner avec un mécanisme de certification afin de s&#039;assurer de l&#039;identité des protagonistes.&lt;br /&gt;
&lt;br /&gt;
== Ressources ==&lt;br /&gt;
&lt;br /&gt;
* Hamlin, N., &amp;amp; Webb, W. A. (2012). Representing Positive Integers as a Sum of Linear Recurrence Sequences, Fibonacci Quart. 50 (2012), no. 2, 99–105. Fibonacci Quart, 50(2), 99-105.&lt;br /&gt;
&lt;br /&gt;
* Moyer, N. T. (2010). A knapsack-type cryptographic system using algebraic number rings (Doctoral dissertation, Washington State University).&lt;/div&gt;</summary>
		<author><name>JulianaLeclaire</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8715</id>
		<title>Projets étudiants cryptographie et sécurité/Leclaire DeRoland Crypto Quantique</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8715"/>
		<updated>2016-03-18T12:58:46Z</updated>

		<summary type="html">&lt;p&gt;JulianaLeclaire : /* Chiffrement symétrique quantique */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Auteurs : Juliana Leclaire, Céline de Roland ===&lt;br /&gt;
&lt;br /&gt;
== La cryptographie et la cryptanalyse dans le contexte de l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
L&#039;informatique quantique se base sur la superposition de plusieurs états quantiques pour améliorer les capacités de calculs. Ce domaine pose un vrai problème dans la sécurité de l&#039;internet qui utilise des algorithmes de chiffrement asymétriques pour les connexions SSL/TLS, paiements en ligne. Les nouveaux ordinateurs avec leur rapidité de calcul va pouvoir casser ces différents algorithmes de chiffrement asymétriques présents dans le Web.&lt;br /&gt;
&lt;br /&gt;
Il existe différents acteurs qui se penchent sur ce domaine. Notamment, la NSA, Google qui tentent de construire leur propre ordinateur quantique, des scientifiques qui se réunissent pour trouver des solutions.&lt;br /&gt;
Dans cette page, nous allons nous demander en quoi l&#039;informatique quantique peut changer le Web d&#039;aujourd&#039;hui et comment faire face à cette arrivée ?&lt;br /&gt;
&lt;br /&gt;
=== Fonctionnement de l&#039;informatique quantique ===&lt;br /&gt;
&lt;br /&gt;
==== Qubit ====&lt;br /&gt;
&lt;br /&gt;
C&#039;est la plus petite unité de stockage de l&#039;information. Etant donné deux états de base &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;, un qubit non mesuré se trouve dans l&#039;état &amp;lt;math&amp;gt;\alpha \left|0\right\rangle + \beta \left|1\right\rangle&amp;lt;/math&amp;gt;, avec &amp;lt;math&amp;gt;\left|\alpha\right|^2 + \left|\beta\right|^2 = 1&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Lorsqu&#039;on mesure la valeur du qubit, on obtient soit &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; soit &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\left|\alpha\right|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et  &amp;lt;math&amp;gt;\left|\beta\right|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Théorème de non clonage ====&lt;br /&gt;
&lt;br /&gt;
Ce théorème, découvert en 1982 par Wootters, Zurek, et Dieks, consiste à dire qu&#039;il est impossible de recopier un qubit à l&#039;identique. La démonstration (par l&#039;absurde) repose sur le fait que pouvoir mettre le qubit B dans le même état que le qubit A implique que le qubit B soit déjà dans le même état que le qubit A.&lt;br /&gt;
On en déduit qu&#039;il est impossible de faire une opération de type copier/coller en informatique quantique.&lt;br /&gt;
&lt;br /&gt;
==== Téléportation quantique ====&lt;br /&gt;
&lt;br /&gt;
La téléportation quantique consiste à transférer l&#039;état du qubit A dans le qubit B. Il s&#039;agit donc cette fois d&#039;une opération de couper/coller.&lt;br /&gt;
L&#039;intrication quantique se produit lorsque deux qubits sont dépendants l&#039;un de l&#039;autre même s&#039;ils sont éloignés l&#039;un de l&#039;autre. Dans cet état, si on mesure l&#039;un des deux, alors la mesure du deuxième est déterminée.&lt;br /&gt;
Sans entrer dans la théorie physique sous jacente, nous pouvons dire qu&#039;un canal EPR permet de réaliser cette opération de couper/coller en transmettant une information entre deux ordinateurs quantiques.&lt;br /&gt;
&lt;br /&gt;
== Chiffrement asymétrique face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
=== Mise en danger de la sécurité du Web ===&lt;br /&gt;
&lt;br /&gt;
Les ordinateurs quantiques présentent une rapidité de calculs extrêmement plus rapide que les ordinateurs classiques. Ces ordinateurs n&#039;auraient aucune difficulté pour casser les codes de sécurité actuels reposant principalement sur des chiffrements à clé publique. Un chiffrement asymétrique chiffre avec sa clé publique et déchiffre avec sa clé privée. Si nous prenons l&#039;exemple de RSA, un chiffrement asymétrique, qui a la particularité d&#039;être couramment utilisé dans la sécurité du Web. RSA repose sur la génération de grands nombres premiers.&lt;br /&gt;
&lt;br /&gt;
* Initialisation : &lt;br /&gt;
** module &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; (grand nombre entier codé sur 2048 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;p, q&amp;lt;/math&amp;gt; : nombres premiers de même taille (codés sur 1024 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;\phi\left(N\right) = \left(p-1\right) * \left(q - 1\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd\left(e, \phi\left(N\right)\right) = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
** Choisir &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;ed \equiv 1 [\phi(N)]&amp;lt;/math&amp;gt; et donc &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; est l&#039;inverse modulaire de &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; avec &amp;lt;math&amp;gt;d = e^{-1} \left[\phi\left(N\right)\right]&amp;lt;/math&amp;gt;&lt;br /&gt;
** Clé publique : &amp;lt;math&amp;gt;pk\left(n, e\right)&amp;lt;/math&amp;gt;, Clé privée : &amp;lt;math&amp;gt;sk\left(d, p, q\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
* Chiffrement : &amp;lt;math&amp;gt;c = m^e \left[N\right]&amp;lt;/math&amp;gt;&lt;br /&gt;
* Déchiffrement : &amp;lt;math&amp;gt;m = c^d \left[N\right]&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La sécurité de RSA repose sur la difficulté à factoriser des grands nombres en nombres premiers. En effet avec &amp;lt;math&amp;gt;\left(N, e\right)&amp;lt;/math&amp;gt; il faudrait pouvoir retrouver &amp;lt;math&amp;gt;\left(d, p, q\right)&amp;lt;/math&amp;gt; où &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt; correspondant à un cassage total. D&#039;après le théorème de factorisation unique tout entier &amp;lt;math&amp;gt;n \ge 2&amp;lt;/math&amp;gt; admet une factorisation unique en produit de puissances de nombres entiers. Des algorithmes de factorisation ont été trouvés pour différentes tailles de module &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; mais pour pallier à ces attaques on augmente la longueur du module. De nos jours pour sécuriser le chiffrement il faut utiliser des modules strictement supérieur à 2048 bits. Cependant avec l&#039;informatique quantique il ne suffira plus d&#039;augmenter la taille du module car la puissance de calcul permettra de casser le chiffrement, peu importe la taille du module.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Exemple : &amp;lt;math&amp;gt;N=15&amp;lt;/math&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* Je choisis &amp;lt;math&amp;gt;x=7&amp;lt;/math&amp;gt;&lt;br /&gt;
* En calculant successivement les valeurs de &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; on trouve &amp;lt;math&amp;gt;7^{4} \equiv 1 [15]&amp;lt;/math&amp;gt;.&lt;br /&gt;
* &amp;lt;math&amp;gt;r=4&amp;lt;/math&amp;gt; est pair&lt;br /&gt;
* &amp;lt;math&amp;gt;pgcd(x^{\frac{r}{2}}+1,15) = 5&amp;lt;/math&amp;gt;. Donc &amp;lt;math&amp;gt;P = 5&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;Q = pgcd(x^{\frac{r}{2}}-1,15) = 3&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Chiffrement symétrique face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
=== Mise en danger de la sécurité ===&lt;br /&gt;
&lt;br /&gt;
Si les ordinateurs quantiques présentent une rapidité de calcul permettant d&#039;effectuer des factorisations impossibles pour un ordinateur classique, il nous semble logique qu&#039;ils soient également performants pour effectuer des attaques de type force brute sur des messages chiffrés par une clé privée qui aurait été transmise par un moyen plus sûr que RSA.&lt;br /&gt;
 &lt;br /&gt;
Un ordinateur quantique pourrait réaliser le déchiffrement avec toutes les clés possibles en parallèle. Ce qui permettrait de cryptanalyser le message en une seule opération. Le principe se base sur la superposition quantique. On superposerait toutes les clés possibles et on déchiffrerait. On obtiendrait alors une superposition de résultats. Le point le plus difficile est de trouver le résultat correct à partir de la superposition obtenue. En effet, le principe selon lequel mesurer une valeur modifie cette valeur fait qu&#039;en observant une superposition, on obtient un seul état aléatoire. Une solution à ce problème a été trouvé par Lov Grover en &amp;lt;math&amp;gt;O\left(\sqrt{n}\right)&amp;lt;/math&amp;gt; étapes.&lt;br /&gt;
&lt;br /&gt;
== Résistances aux attaques quantiques ==&lt;br /&gt;
&lt;br /&gt;
=== Chiffrement asyémétrique ===&lt;br /&gt;
&lt;br /&gt;
Depuis 2006, une conférence internationnale se produit chaque année nommée &amp;quot;Post Quantum Cryptography&amp;quot; dans l&#039;intention de trouver des algorithmes résistants aux ordinateurs quantiques. Nathan Hamlin et William Webb, des mathématiciens, ont présenté récemment un algorithme de chiffrement asymétrique possiblement capable de faire face aux attaques quantiques. Cet algorithme part de l&#039;ancien chiffrement de Merkle-Hellman qui se base sur le problème du sac à dos nommé &amp;quot;Knapsack code&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
==== Problème du sac-à-dos ====&lt;br /&gt;
&lt;br /&gt;
Etant donné un sac avec une capacité &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; et plusieurs objets de poids différents. Le problème du sac-à-dos consiste à trouver la suite d&#039;objets qui entre dans le sac et qui maximise sa capacité. En partant d&#039;un n-uplet &amp;lt;math&amp;gt;\left(a_1, a_2, ..., a_n\right) \in N^n&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;S \in N&amp;lt;/math&amp;gt;, il faut trouver un n-uplet binaire &amp;lt;math&amp;gt;\left(x_1, x_2, ..., x_n\right) \in \left\{0,1\right\}^n&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;S = \sum_{i=1}^{n} \left(a_{i}*x_{i}\right) &amp;lt;/math&amp;gt;. La somme &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; des poids des objets choisi ne doit pas dépasser la capacité du sac à dos.&lt;br /&gt;
&lt;br /&gt;
==== Chiffrement de Merkle-Hellman ====&lt;br /&gt;
&lt;br /&gt;
Cet algorithme de chiffrement à clé publique repose sur la complexité algorithmique du problème du sac-à-dos et utilise une suite de poids super-croissante pour le secret et une suite non super-croissante pour la clé publique. Si les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt; n&#039;ont pas de propriétés particulières, la recherche du message codé en binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt; est un problème difficile. Il n&#039;existe pas d&#039;algorithme polynomial pour le résoudre. Pour pouvoir retrouver facilement ce n-uplet une propriété super-croissante est appliquée sur les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt;. Un n-uplet b est super-croissant si &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\forall i \in [2,n] b_{i} &amp;gt; \sum_{j=1}^{i-1} {b_{j}}&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ainsi en utilisant un algorithme glouton nous pouvons retrouver le n-uplet binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt;. L&#039;objet le plus lourd est dans le sac si le poids du sac est supérieur au poids de celui-ci. La propriété super-croissante assure que la somme des poids des autres objets sera toujours inférieur au poids de l&#039;objet le plus lourd. L&#039;algorithme est le suivant :&lt;br /&gt;
&lt;br /&gt;
  Pour i de n à 1 faire&lt;br /&gt;
    Si &amp;lt;math&amp;gt;b_{i} \le S&amp;lt;/math&amp;gt; alors&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i}  = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
    Sinon&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i} = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
    &amp;lt;math&amp;gt;S = S - x_{i} * b_{i}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Par exemple en prenant la suite des puissances de 2 comme suite super-croissante  avec : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = \left\{4,8\right\}, b = \left\{2,4,8\right\}, S = 12 \left(4+8\right), n = 3&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 3 : 8 \le 12 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_3 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 2 : 4 \le 4 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_2 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 1 : 2 \le 0 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    non donc &amp;lt;math&amp;gt;x_1 = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  =&amp;gt; &amp;lt;math&amp;gt;m = \left\{0,1,1\right\}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour chiffrer un n-uplet binaire &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;, l&#039;idée de Merkle et Hellman est de &amp;quot;tordre&amp;quot; les &amp;lt;math&amp;gt;b_{i}&amp;lt;/math&amp;gt; pour obtenir un n-uplet qui n&#039;est plus super-croissant. On choisit un nombre &amp;lt;math&amp;gt;u &amp;gt; \sum_{i=1}^{n} {b_{i}}&amp;lt;/math&amp;gt;, un entier &amp;lt;math&amp;gt;v \in \mathbb{N}&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd\left(u,v\right) = 1&amp;lt;/math&amp;gt;. Ce qui donne &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; inversible dans &amp;lt;math&amp;gt;\mathbb{Z}/u\mathbb{Z}&amp;lt;/math&amp;gt;. On prend &amp;lt;math&amp;gt;w = v^{-1} \in \mathbb{Z}/u\mathbb{Z}&amp;lt;/math&amp;gt;. On calcule ensuite le n-uplet &amp;lt;math&amp;gt;a = \left(a_1, ..., a_n\right)&amp;lt;/math&amp;gt; tel que pour tout &amp;lt;math&amp;gt;i \in [1,n]&amp;lt;/math&amp;gt; on a : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = a * b_i \left[u\right]&amp;lt;/math&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
Le n-uplet &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; détermine la clé public tandis que &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt; sont gardés secrets. &amp;lt;br/&amp;gt;&lt;br /&gt;
Pour envoyer le message m à Bob, Alice va, à partir de l&#039;écriture de m en binaire, calculer la somme : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;c = \sum_{i=1}^{n} {m_i * a_i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
qu&#039;elle va envoyer à Bob. Bob pour déchiffrer va devoir procéder à plusieurs étapes : &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt;c = \sum_{i=1}^{n} {m_i * a_i}&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * a_i * w} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * a_i * v^{-1}} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * v * b_i * v^{-1}} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * b_i} [u]&amp;lt;/math&amp;gt;                      =&amp;gt; Comme &amp;lt;math&amp;gt; \sum_{i=1}^{n} {m_i * b_i} &amp;lt; \sum_{i=1}^{n} {b_i}&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt; u &amp;gt; \sum_{i=1}^{n} {b_i}&amp;lt;/math&amp;gt; le modulo &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; peut s&#039;enlever&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * b_i}&amp;lt;/math&amp;gt;                           =&amp;gt; Comme &amp;lt;math&amp;gt;b_i&amp;lt;/math&amp;gt; est super-croissant Bob peut facilement retrouver &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Nouveau chiffrement de Hamlin-Webb ====&lt;br /&gt;
&lt;br /&gt;
Le chiffrement de Merkle et Hellman a été abandonné à la suite des découvertes de Shamir prouvant l&#039;existence d&#039;une attaque permettant de retrouver le message secret en utilisant un algorithme de réduction des réseaux. Nathan Hamlin et William Webb reprennent cet algorithme en le renforçant par un changement de représentation des entiers. Ils ont prouvé q&#039;un entier pouvait être représenté de manière unique avec des suites récurrentes. Le secret &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; n&#039;est alors plus modélisé en binaire mais en une suite récurrente plus complexe à craquer.&lt;br /&gt;
&lt;br /&gt;
===== Représentation du message =====&lt;br /&gt;
La représentation d&#039;un nombre &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; en une suite récurrente &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt; se fait en utilisant une suite augmentée &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; de &amp;lt;math&amp;gt;1 \le j \le 10&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;0 \le i \le n&amp;lt;/math&amp;gt; donné par : &amp;lt;br/&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{1,i}= u_i&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{2,i}= u_i + u_{i-2}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{3,i}= u_i + u_{i-2} + u_{i-3}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{4,i}= u_i + u_{i-2} + 2u_{i-3}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{5,i}= u_i + u_{i-2} +2u_{i-3} + u_{i-4}&amp;lt;/math&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{10,i}= u_i + u_{i-2} +2u_{i-3} + 6u_{i-4}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le suite &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; correspond au blocs de chiffre autorisés. Dans l&#039;exemple &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; se calcule dans des groupes de taille 10 mais ce nombre peut varier. La suite &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; se calcule en utilisant un algorithme glouton sur &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; où l&#039;on remplace la somme en une expression dans la suite &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
Le message secret &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; est représenté par : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; M = \sum_{i=0}^{n-1} {d_i * u_i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
avec &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt; calculé grâce à &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
où les &amp;lt;math&amp;gt;d_i&amp;lt;/math&amp;gt; sont des blocs de chiffre lexicographiquement inférieur à &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Chiffrement symétrique ===&lt;br /&gt;
&lt;br /&gt;
==== Photons polarisés ====&lt;br /&gt;
&lt;br /&gt;
Les photons sont des particules qui composent la lumière. Ils sont composés d&#039;un champ électrique et d&#039;un champ magnétique. Une lumière non-polarisée se caractérise par une différence d&#039;orientation du champ électrique suivant les photons. Ainsi la polarisation consiste, grâce à un polarisateur, d&#039;obtenir des photons avec un champ électrique orienté de manière identique. Les filtres polarisants permettent d&#039;appliquer un angle d&#039;orientation sur les photons afin :&lt;br /&gt;
* de récupérer les photons polarisés parallèlement par rapport à cet angle&lt;br /&gt;
* d&#039;éliminer les photons polarisés perpendiculairement&lt;br /&gt;
* de récupérer les photons polarisés intermédiaires avec une probabilité de &amp;lt;math&amp;gt;\cos\left(\alpha\right)&amp;lt;/math&amp;gt; en les réinitialisant avec une polarisation égale à l&#039;angle d&#039;orientation du filtre.&lt;br /&gt;
&lt;br /&gt;
Du fait de la transformation de polarisation il est impossible de connaître l&#039;information sur les polarisations précédentes du photons.&lt;br /&gt;
&lt;br /&gt;
==== Distribution des clés ====&lt;br /&gt;
&lt;br /&gt;
Le chiffrement quantique offre un moyen sécurisé d’échanger des clés privées pour réaliser des chiffrements symétriques. Cette distribution s’appuie sur l’envoi de photons polarisés par fibre optique. Les personnes s&#039;échangeant les clés doivent avoir accès à un canal quantique et un canal classique. Le principe est le suivant :&lt;br /&gt;
* Alice envoie par le canal quantique une suite de photons polarisés aléatoirement.&lt;br /&gt;
* Bob applique un filtre de polarisation qui lui donne 1 chance sur 2 (et 1 chance sur 4 s&#039;il y a eu un espion) d&#039;appliquer le bon filtre et les renvoit à Alice.&lt;br /&gt;
* Alice et Bob s&#039;échangent par le canal classique leur choix des axes de polarisation éliminant ainsi les erreurs.&lt;br /&gt;
* Alice communique une partie de ses résultats.&lt;br /&gt;
* Maintenant que Bob connait les axes qu&#039;Alice a appliqué et les résultats il peut savoir si la communication a été écoutée ou non. Ceci étant grâce au théorème de non clonage où il est impossible de cloner des états quantiques inconnus.&lt;br /&gt;
&lt;br /&gt;
Ce principe permet de détecter facilement s&#039;il y a eu des intrusions durant la communication de la clé privée. En effet si un attaquant écoute il lui faut récupérer les photons envoyés par Alice mesurer la polarisation et renvoyer le photon à Bob. Pour mesurer la polarisation l&#039;attaquant doit appliquer, comme Bob, un filtre pour deviner la base qu&#039;Alice a envoyé. Ainsi cette intrusion a 1 chance sur 2 d&#039;introduire des incohérences dans les données d&#039;Alice et Bob en envoyant 1 fois sur 2 un mauvais photon. Par la suite Bob obtient donc 1 chance sur 4 d&#039;appliquer le bon filtre. Par analyses statistiques, Alice et Bob peuvent détecter de manière sure s&#039;il y a eu espionnage sur le canal quantique.&lt;br /&gt;
&lt;br /&gt;
==== Attaque de l&#039;homme du milieu ====&lt;br /&gt;
&lt;br /&gt;
Comme toute méthode d&#039;échange de clé privée, cette méthode reste vulnérable à une attaque de type &amp;quot;homme du milieu&amp;quot;. Il faut donc la combiner avec un mécanisme de certification afin de s&#039;assurer de l&#039;identité des protagonistes.&lt;br /&gt;
&lt;br /&gt;
== Ressources ==&lt;br /&gt;
&lt;br /&gt;
* Hamlin, N., &amp;amp; Webb, W. A. (2012). Representing Positive Integers as a Sum of Linear Recurrence Sequences, Fibonacci Quart. 50 (2012), no. 2, 99–105. Fibonacci Quart, 50(2), 99-105.&lt;br /&gt;
&lt;br /&gt;
* Moyer, N. T. (2010). A knapsack-type cryptographic system using algebraic number rings (Doctoral dissertation, Washington State University).&lt;/div&gt;</summary>
		<author><name>JulianaLeclaire</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8714</id>
		<title>Projets étudiants cryptographie et sécurité/Leclaire DeRoland Crypto Quantique</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8714"/>
		<updated>2016-03-18T12:57:22Z</updated>

		<summary type="html">&lt;p&gt;JulianaLeclaire : /* Nouveau chiffrement de Hamlin-Webb */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Auteurs : Juliana Leclaire, Céline de Roland ===&lt;br /&gt;
&lt;br /&gt;
== La cryptographie et la cryptanalyse dans le contexte de l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
L&#039;informatique quantique se base sur la superposition de plusieurs états quantiques pour améliorer les capacités de calculs. Ce domaine pose un vrai problème dans la sécurité de l&#039;internet qui utilise des algorithmes de chiffrement asymétriques pour les connexions SSL/TLS, paiements en ligne. Les nouveaux ordinateurs avec leur rapidité de calcul va pouvoir casser ces différents algorithmes de chiffrement asymétriques présents dans le Web.&lt;br /&gt;
&lt;br /&gt;
Il existe différents acteurs qui se penchent sur ce domaine. Notamment, la NSA, Google qui tentent de construire leur propre ordinateur quantique, des scientifiques qui se réunissent pour trouver des solutions.&lt;br /&gt;
Dans cette page, nous allons nous demander en quoi l&#039;informatique quantique peut changer le Web d&#039;aujourd&#039;hui et comment faire face à cette arrivée ?&lt;br /&gt;
&lt;br /&gt;
=== Fonctionnement de l&#039;informatique quantique ===&lt;br /&gt;
&lt;br /&gt;
==== Qubit ====&lt;br /&gt;
&lt;br /&gt;
C&#039;est la plus petite unité de stockage de l&#039;information. Etant donné deux états de base &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;, un qubit non mesuré se trouve dans l&#039;état &amp;lt;math&amp;gt;\alpha \left|0\right\rangle + \beta \left|1\right\rangle&amp;lt;/math&amp;gt;, avec &amp;lt;math&amp;gt;\left|\alpha\right|^2 + \left|\beta\right|^2 = 1&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Lorsqu&#039;on mesure la valeur du qubit, on obtient soit &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; soit &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\left|\alpha\right|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et  &amp;lt;math&amp;gt;\left|\beta\right|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Théorème de non clonage ====&lt;br /&gt;
&lt;br /&gt;
Ce théorème, découvert en 1982 par Wootters, Zurek, et Dieks, consiste à dire qu&#039;il est impossible de recopier un qubit à l&#039;identique. La démonstration (par l&#039;absurde) repose sur le fait que pouvoir mettre le qubit B dans le même état que le qubit A implique que le qubit B soit déjà dans le même état que le qubit A.&lt;br /&gt;
On en déduit qu&#039;il est impossible de faire une opération de type copier/coller en informatique quantique.&lt;br /&gt;
&lt;br /&gt;
==== Téléportation quantique ====&lt;br /&gt;
&lt;br /&gt;
La téléportation quantique consiste à transférer l&#039;état du qubit A dans le qubit B. Il s&#039;agit donc cette fois d&#039;une opération de couper/coller.&lt;br /&gt;
L&#039;intrication quantique se produit lorsque deux qubits sont dépendants l&#039;un de l&#039;autre même s&#039;ils sont éloignés l&#039;un de l&#039;autre. Dans cet état, si on mesure l&#039;un des deux, alors la mesure du deuxième est déterminée.&lt;br /&gt;
Sans entrer dans la théorie physique sous jacente, nous pouvons dire qu&#039;un canal EPR permet de réaliser cette opération de couper/coller en transmettant une information entre deux ordinateurs quantiques.&lt;br /&gt;
&lt;br /&gt;
== Chiffrement asymétrique face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
=== Mise en danger de la sécurité du Web ===&lt;br /&gt;
&lt;br /&gt;
Les ordinateurs quantiques présentent une rapidité de calculs extrêmement plus rapide que les ordinateurs classiques. Ces ordinateurs n&#039;auraient aucune difficulté pour casser les codes de sécurité actuels reposant principalement sur des chiffrements à clé publique. Un chiffrement asymétrique chiffre avec sa clé publique et déchiffre avec sa clé privée. Si nous prenons l&#039;exemple de RSA, un chiffrement asymétrique, qui a la particularité d&#039;être couramment utilisé dans la sécurité du Web. RSA repose sur la génération de grands nombres premiers.&lt;br /&gt;
&lt;br /&gt;
* Initialisation : &lt;br /&gt;
** module &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; (grand nombre entier codé sur 2048 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;p, q&amp;lt;/math&amp;gt; : nombres premiers de même taille (codés sur 1024 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;\phi\left(N\right) = \left(p-1\right) * \left(q - 1\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd\left(e, \phi\left(N\right)\right) = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
** Choisir &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;ed \equiv 1 [\phi(N)]&amp;lt;/math&amp;gt; et donc &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; est l&#039;inverse modulaire de &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; avec &amp;lt;math&amp;gt;d = e^{-1} \left[\phi\left(N\right)\right]&amp;lt;/math&amp;gt;&lt;br /&gt;
** Clé publique : &amp;lt;math&amp;gt;pk\left(n, e\right)&amp;lt;/math&amp;gt;, Clé privée : &amp;lt;math&amp;gt;sk\left(d, p, q\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
* Chiffrement : &amp;lt;math&amp;gt;c = m^e \left[N\right]&amp;lt;/math&amp;gt;&lt;br /&gt;
* Déchiffrement : &amp;lt;math&amp;gt;m = c^d \left[N\right]&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La sécurité de RSA repose sur la difficulté à factoriser des grands nombres en nombres premiers. En effet avec &amp;lt;math&amp;gt;\left(N, e\right)&amp;lt;/math&amp;gt; il faudrait pouvoir retrouver &amp;lt;math&amp;gt;\left(d, p, q\right)&amp;lt;/math&amp;gt; où &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt; correspondant à un cassage total. D&#039;après le théorème de factorisation unique tout entier &amp;lt;math&amp;gt;n \ge 2&amp;lt;/math&amp;gt; admet une factorisation unique en produit de puissances de nombres entiers. Des algorithmes de factorisation ont été trouvés pour différentes tailles de module &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; mais pour pallier à ces attaques on augmente la longueur du module. De nos jours pour sécuriser le chiffrement il faut utiliser des modules strictement supérieur à 2048 bits. Cependant avec l&#039;informatique quantique il ne suffira plus d&#039;augmenter la taille du module car la puissance de calcul permettra de casser le chiffrement, peu importe la taille du module.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Exemple : &amp;lt;math&amp;gt;N=15&amp;lt;/math&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* Je choisis &amp;lt;math&amp;gt;x=7&amp;lt;/math&amp;gt;&lt;br /&gt;
* En calculant successivement les valeurs de &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; on trouve &amp;lt;math&amp;gt;7^{4} \equiv 1 [15]&amp;lt;/math&amp;gt;.&lt;br /&gt;
* &amp;lt;math&amp;gt;r=4&amp;lt;/math&amp;gt; est pair&lt;br /&gt;
* &amp;lt;math&amp;gt;pgcd(x^{\frac{r}{2}}+1,15) = 5&amp;lt;/math&amp;gt;. Donc &amp;lt;math&amp;gt;P = 5&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;Q = pgcd(x^{\frac{r}{2}}-1,15) = 3&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Chiffrement symétrique face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
=== Mise en danger de la sécurité ===&lt;br /&gt;
&lt;br /&gt;
Si les ordinateurs quantiques présentent une rapidité de calcul permettant d&#039;effectuer des factorisations impossibles pour un ordinateur classique, il nous semble logique qu&#039;ils soient également performants pour effectuer des attaques de type force brute sur des messages chiffrés par une clé privée qui aurait été transmise par un moyen plus sûr que RSA.&lt;br /&gt;
 &lt;br /&gt;
Un ordinateur quantique pourrait réaliser le déchiffrement avec toutes les clés possibles en parallèle. Ce qui permettrait de cryptanalyser le message en une seule opération. Le principe se base sur la superposition quantique. On superposerait toutes les clés possibles et on déchiffrerait. On obtiendrait alors une superposition de résultats. Le point le plus difficile est de trouver le résultat correct à partir de la superposition obtenue. En effet, le principe selon lequel mesurer une valeur modifie cette valeur fait qu&#039;en observant une superposition, on obtient un seul état aléatoire. Une solution à ce problème a été trouvé par Lov Grover en &amp;lt;math&amp;gt;O\left(\sqrt{n}\right)&amp;lt;/math&amp;gt; étapes.&lt;br /&gt;
&lt;br /&gt;
== Résistances aux attaques quantiques ==&lt;br /&gt;
&lt;br /&gt;
=== Chiffrement asyémétrique ===&lt;br /&gt;
&lt;br /&gt;
Depuis 2006, une conférence internationnale se produit chaque année nommée &amp;quot;Post Quantum Cryptography&amp;quot; dans l&#039;intention de trouver des algorithmes résistants aux ordinateurs quantiques. Nathan Hamlin et William Webb, des mathématiciens, ont présenté récemment un algorithme de chiffrement asymétrique possiblement capable de faire face aux attaques quantiques. Cet algorithme part de l&#039;ancien chiffrement de Merkle-Hellman qui se base sur le problème du sac à dos nommé &amp;quot;Knapsack code&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
==== Problème du sac-à-dos ====&lt;br /&gt;
&lt;br /&gt;
Etant donné un sac avec une capacité &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; et plusieurs objets de poids différents. Le problème du sac-à-dos consiste à trouver la suite d&#039;objets qui entre dans le sac et qui maximise sa capacité. En partant d&#039;un n-uplet &amp;lt;math&amp;gt;\left(a_1, a_2, ..., a_n\right) \in N^n&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;S \in N&amp;lt;/math&amp;gt;, il faut trouver un n-uplet binaire &amp;lt;math&amp;gt;\left(x_1, x_2, ..., x_n\right) \in \left\{0,1\right\}^n&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;S = \sum_{i=1}^{n} \left(a_{i}*x_{i}\right) &amp;lt;/math&amp;gt;. La somme &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; des poids des objets choisi ne doit pas dépasser la capacité du sac à dos.&lt;br /&gt;
&lt;br /&gt;
==== Chiffrement de Merkle-Hellman ====&lt;br /&gt;
&lt;br /&gt;
Cet algorithme de chiffrement à clé publique repose sur la complexité algorithmique du problème du sac-à-dos et utilise une suite de poids super-croissante pour le secret et une suite non super-croissante pour la clé publique. Si les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt; n&#039;ont pas de propriétés particulières, la recherche du message codé en binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt; est un problème difficile. Il n&#039;existe pas d&#039;algorithme polynomial pour le résoudre. Pour pouvoir retrouver facilement ce n-uplet une propriété super-croissante est appliquée sur les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt;. Un n-uplet b est super-croissant si &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\forall i \in [2,n] b_{i} &amp;gt; \sum_{j=1}^{i-1} {b_{j}}&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ainsi en utilisant un algorithme glouton nous pouvons retrouver le n-uplet binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt;. L&#039;objet le plus lourd est dans le sac si le poids du sac est supérieur au poids de celui-ci. La propriété super-croissante assure que la somme des poids des autres objets sera toujours inférieur au poids de l&#039;objet le plus lourd. L&#039;algorithme est le suivant :&lt;br /&gt;
&lt;br /&gt;
  Pour i de n à 1 faire&lt;br /&gt;
    Si &amp;lt;math&amp;gt;b_{i} \le S&amp;lt;/math&amp;gt; alors&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i}  = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
    Sinon&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i} = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
    &amp;lt;math&amp;gt;S = S - x_{i} * b_{i}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Par exemple en prenant la suite des puissances de 2 comme suite super-croissante  avec : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = \left\{4,8\right\}, b = \left\{2,4,8\right\}, S = 12 \left(4+8\right), n = 3&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 3 : 8 \le 12 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_3 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 2 : 4 \le 4 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_2 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 1 : 2 \le 0 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    non donc &amp;lt;math&amp;gt;x_1 = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  =&amp;gt; &amp;lt;math&amp;gt;m = \left\{0,1,1\right\}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour chiffrer un n-uplet binaire &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;, l&#039;idée de Merkle et Hellman est de &amp;quot;tordre&amp;quot; les &amp;lt;math&amp;gt;b_{i}&amp;lt;/math&amp;gt; pour obtenir un n-uplet qui n&#039;est plus super-croissant. On choisit un nombre &amp;lt;math&amp;gt;u &amp;gt; \sum_{i=1}^{n} {b_{i}}&amp;lt;/math&amp;gt;, un entier &amp;lt;math&amp;gt;v \in \mathbb{N}&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd\left(u,v\right) = 1&amp;lt;/math&amp;gt;. Ce qui donne &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; inversible dans &amp;lt;math&amp;gt;\mathbb{Z}/u\mathbb{Z}&amp;lt;/math&amp;gt;. On prend &amp;lt;math&amp;gt;w = v^{-1} \in \mathbb{Z}/u\mathbb{Z}&amp;lt;/math&amp;gt;. On calcule ensuite le n-uplet &amp;lt;math&amp;gt;a = \left(a_1, ..., a_n\right)&amp;lt;/math&amp;gt; tel que pour tout &amp;lt;math&amp;gt;i \in [1,n]&amp;lt;/math&amp;gt; on a : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = a * b_i \left[u\right]&amp;lt;/math&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
Le n-uplet &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; détermine la clé public tandis que &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt; sont gardés secrets. &amp;lt;br/&amp;gt;&lt;br /&gt;
Pour envoyer le message m à Bob, Alice va, à partir de l&#039;écriture de m en binaire, calculer la somme : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;c = \sum_{i=1}^{n} {m_i * a_i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
qu&#039;elle va envoyer à Bob. Bob pour déchiffrer va devoir procéder à plusieurs étapes : &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt;c = \sum_{i=1}^{n} {m_i * a_i}&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * a_i * w} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * a_i * v^{-1}} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * v * b_i * v^{-1}} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * b_i} [u]&amp;lt;/math&amp;gt;                      =&amp;gt; Comme &amp;lt;math&amp;gt; \sum_{i=1}^{n} {m_i * b_i} &amp;lt; \sum_{i=1}^{n} {b_i}&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt; u &amp;gt; \sum_{i=1}^{n} {b_i}&amp;lt;/math&amp;gt; le modulo &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; peut s&#039;enlever&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * b_i}&amp;lt;/math&amp;gt;                           =&amp;gt; Comme &amp;lt;math&amp;gt;b_i&amp;lt;/math&amp;gt; est super-croissant Bob peut facilement retrouver &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Nouveau chiffrement de Hamlin-Webb ====&lt;br /&gt;
&lt;br /&gt;
Le chiffrement de Merkle et Hellman a été abandonné à la suite des découvertes de Shamir prouvant l&#039;existence d&#039;une attaque permettant de retrouver le message secret en utilisant un algorithme de réduction des réseaux. Nathan Hamlin et William Webb reprennent cet algorithme en le renforçant par un changement de représentation des entiers. Ils ont prouvé q&#039;un entier pouvait être représenté de manière unique avec des suites récurrentes. Le secret &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; n&#039;est alors plus modélisé en binaire mais en une suite récurrente plus complexe à craquer.&lt;br /&gt;
&lt;br /&gt;
===== Représentation du message =====&lt;br /&gt;
La représentation d&#039;un nombre &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; en une suite récurrente &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt; se fait en utilisant une suite augmentée &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; de &amp;lt;math&amp;gt;1 \le j \le 10&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;0 \le i \le n&amp;lt;/math&amp;gt; donné par : &amp;lt;br/&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{1,i}= u_i&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{2,i}= u_i + u_{i-2}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{3,i}= u_i + u_{i-2} + u_{i-3}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{4,i}= u_i + u_{i-2} + 2u_{i-3}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{5,i}= u_i + u_{i-2} +2u_{i-3} + u_{i-4}&amp;lt;/math&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{10,i}= u_i + u_{i-2} +2u_{i-3} + 6u_{i-4}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le suite &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; correspond au blocs de chiffre autorisés. Dans l&#039;exemple &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; se calcule dans des groupes de taille 10 mais ce nombre peut varier. La suite &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; se calcule en utilisant un algorithme glouton sur &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; où l&#039;on remplace la somme en une expression dans la suite &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
Le message secret &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; est représenté par : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; M = \sum_{i=0}^{n-1} {d_i * u_i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
avec &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt; calculé grâce à &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
où les &amp;lt;math&amp;gt;d_i&amp;lt;/math&amp;gt; sont des blocs de chiffre lexicographiquement inférieur à &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Chiffrement symétrique quantique ===&lt;br /&gt;
&lt;br /&gt;
==== Photons polarisés ====&lt;br /&gt;
&lt;br /&gt;
Les photons sont des particules qui composent la lumière. Ils sont composés d&#039;un champ électrique et d&#039;un champ magnétique. Une lumière non-polarisée se caractérise par une différence d&#039;orientation du champ électrique suivant les photons. Ainsi la polarisation consiste, grâce à un polarisateur, d&#039;obtenir des photons avec un champ électrique orienté de manière identique. Les filtres polarisants permettent d&#039;appliquer un angle d&#039;orientation sur les photons afin :&lt;br /&gt;
* de récupérer les photons polarisés parallèlement par rapport à cet angle&lt;br /&gt;
* d&#039;éliminer les photons polarisés perpendiculairement&lt;br /&gt;
* de récupérer les photons polarisés intermédiaires avec une probabilité de &amp;lt;math&amp;gt;\cos\left(\alpha\right)&amp;lt;/math&amp;gt; en les réinitialisant avec une polarisation égale à l&#039;angle d&#039;orientation du filtre.&lt;br /&gt;
&lt;br /&gt;
Du fait de la transformation de polarisation il est impossible de connaître l&#039;information sur les polarisations précédentes du photons.&lt;br /&gt;
&lt;br /&gt;
==== Distribution des clés ====&lt;br /&gt;
&lt;br /&gt;
Le chiffrement quantique offre un moyen sécurisé d’échanger des clés privées pour réaliser des chiffrements symétriques. Cette distribution s’appuie sur l’envoi de photons polarisés par fibre optique. Les personnes s&#039;échangeant les clés doivent avoir accès à un canal quantique et un canal classique. Le principe est le suivant :&lt;br /&gt;
* Alice envoie par le canal quantique une suite de photons polarisés aléatoirement.&lt;br /&gt;
* Bob applique un filtre de polarisation qui lui donne 1 chance sur 2 (et 1 chance sur 4 s&#039;il y a eu un espion) d&#039;appliquer le bon filtre et les renvoit à Alice.&lt;br /&gt;
* Alice et Bob s&#039;échangent par le canal classique leur choix des axes de polarisation éliminant ainsi les erreurs.&lt;br /&gt;
* Alice communique une partie de ses résultats.&lt;br /&gt;
* Maintenant que Bob connait les axes qu&#039;Alice a appliqué et les résultats il peut savoir si la communication a été écoutée ou non. Ceci étant grâce au théorème de non clonage où il est impossible de cloner des états quantiques inconnus.&lt;br /&gt;
&lt;br /&gt;
Ce principe permet de détecter facilement s&#039;il y a eu des intrusions durant la communication de la clé privée. En effet si un attaquant écoute il lui faut récupérer les photons envoyés par Alice mesurer la polarisation et renvoyer le photon à Bob. Pour mesurer la polarisation l&#039;attaquant doit appliquer, comme Bob, un filtre pour deviner la base qu&#039;Alice a envoyé. Ainsi cette intrusion a 1 chance sur 2 d&#039;introduire des incohérences dans les données d&#039;Alice et Bob en envoyant 1 fois sur 2 un mauvais photon. Par la suite Bob obtient donc 1 chance sur 4 d&#039;appliquer le bon filtre. Par analyses statistiques, Alice et Bob peuvent détecter de manière sure s&#039;il y a eu espionnage sur le canal quantique.&lt;br /&gt;
&lt;br /&gt;
==== Attaque de l&#039;homme du milieu ====&lt;br /&gt;
&lt;br /&gt;
Comme toute méthode d&#039;échange de clé privée, cette méthode reste vulnérable à une attaque de type &amp;quot;homme du milieu&amp;quot;. Il faut donc la combiner avec un mécanisme de certification afin de s&#039;assurer de l&#039;identité des protagonistes.&lt;br /&gt;
&lt;br /&gt;
== Ressources ==&lt;br /&gt;
&lt;br /&gt;
* Hamlin, N., &amp;amp; Webb, W. A. (2012). Representing Positive Integers as a Sum of Linear Recurrence Sequences, Fibonacci Quart. 50 (2012), no. 2, 99–105. Fibonacci Quart, 50(2), 99-105.&lt;br /&gt;
&lt;br /&gt;
* Moyer, N. T. (2010). A knapsack-type cryptographic system using algebraic number rings (Doctoral dissertation, Washington State University).&lt;/div&gt;</summary>
		<author><name>JulianaLeclaire</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8712</id>
		<title>Projets étudiants cryptographie et sécurité/Leclaire DeRoland Crypto Quantique</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8712"/>
		<updated>2016-03-18T12:56:12Z</updated>

		<summary type="html">&lt;p&gt;JulianaLeclaire : /* Chiffrement de Merkle-Hellman */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Auteurs : Juliana Leclaire, Céline de Roland ===&lt;br /&gt;
&lt;br /&gt;
== La cryptographie et la cryptanalyse dans le contexte de l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
L&#039;informatique quantique se base sur la superposition de plusieurs états quantiques pour améliorer les capacités de calculs. Ce domaine pose un vrai problème dans la sécurité de l&#039;internet qui utilise des algorithmes de chiffrement asymétriques pour les connexions SSL/TLS, paiements en ligne. Les nouveaux ordinateurs avec leur rapidité de calcul va pouvoir casser ces différents algorithmes de chiffrement asymétriques présents dans le Web.&lt;br /&gt;
&lt;br /&gt;
Il existe différents acteurs qui se penchent sur ce domaine. Notamment, la NSA, Google qui tentent de construire leur propre ordinateur quantique, des scientifiques qui se réunissent pour trouver des solutions.&lt;br /&gt;
Dans cette page, nous allons nous demander en quoi l&#039;informatique quantique peut changer le Web d&#039;aujourd&#039;hui et comment faire face à cette arrivée ?&lt;br /&gt;
&lt;br /&gt;
=== Fonctionnement de l&#039;informatique quantique ===&lt;br /&gt;
&lt;br /&gt;
==== Qubit ====&lt;br /&gt;
&lt;br /&gt;
C&#039;est la plus petite unité de stockage de l&#039;information. Etant donné deux états de base &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;, un qubit non mesuré se trouve dans l&#039;état &amp;lt;math&amp;gt;\alpha \left|0\right\rangle + \beta \left|1\right\rangle&amp;lt;/math&amp;gt;, avec &amp;lt;math&amp;gt;\left|\alpha\right|^2 + \left|\beta\right|^2 = 1&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Lorsqu&#039;on mesure la valeur du qubit, on obtient soit &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; soit &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\left|\alpha\right|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et  &amp;lt;math&amp;gt;\left|\beta\right|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Théorème de non clonage ====&lt;br /&gt;
&lt;br /&gt;
Ce théorème, découvert en 1982 par Wootters, Zurek, et Dieks, consiste à dire qu&#039;il est impossible de recopier un qubit à l&#039;identique. La démonstration (par l&#039;absurde) repose sur le fait que pouvoir mettre le qubit B dans le même état que le qubit A implique que le qubit B soit déjà dans le même état que le qubit A.&lt;br /&gt;
On en déduit qu&#039;il est impossible de faire une opération de type copier/coller en informatique quantique.&lt;br /&gt;
&lt;br /&gt;
==== Téléportation quantique ====&lt;br /&gt;
&lt;br /&gt;
La téléportation quantique consiste à transférer l&#039;état du qubit A dans le qubit B. Il s&#039;agit donc cette fois d&#039;une opération de couper/coller.&lt;br /&gt;
L&#039;intrication quantique se produit lorsque deux qubits sont dépendants l&#039;un de l&#039;autre même s&#039;ils sont éloignés l&#039;un de l&#039;autre. Dans cet état, si on mesure l&#039;un des deux, alors la mesure du deuxième est déterminée.&lt;br /&gt;
Sans entrer dans la théorie physique sous jacente, nous pouvons dire qu&#039;un canal EPR permet de réaliser cette opération de couper/coller en transmettant une information entre deux ordinateurs quantiques.&lt;br /&gt;
&lt;br /&gt;
== Chiffrement asymétrique face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
=== Mise en danger de la sécurité du Web ===&lt;br /&gt;
&lt;br /&gt;
Les ordinateurs quantiques présentent une rapidité de calculs extrêmement plus rapide que les ordinateurs classiques. Ces ordinateurs n&#039;auraient aucune difficulté pour casser les codes de sécurité actuels reposant principalement sur des chiffrements à clé publique. Un chiffrement asymétrique chiffre avec sa clé publique et déchiffre avec sa clé privée. Si nous prenons l&#039;exemple de RSA, un chiffrement asymétrique, qui a la particularité d&#039;être couramment utilisé dans la sécurité du Web. RSA repose sur la génération de grands nombres premiers.&lt;br /&gt;
&lt;br /&gt;
* Initialisation : &lt;br /&gt;
** module &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; (grand nombre entier codé sur 2048 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;p, q&amp;lt;/math&amp;gt; : nombres premiers de même taille (codés sur 1024 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;\phi\left(N\right) = \left(p-1\right) * \left(q - 1\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd\left(e, \phi\left(N\right)\right) = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
** Choisir &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;ed \equiv 1 [\phi(N)]&amp;lt;/math&amp;gt; et donc &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; est l&#039;inverse modulaire de &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; avec &amp;lt;math&amp;gt;d = e^{-1} \left[\phi\left(N\right)\right]&amp;lt;/math&amp;gt;&lt;br /&gt;
** Clé publique : &amp;lt;math&amp;gt;pk\left(n, e\right)&amp;lt;/math&amp;gt;, Clé privée : &amp;lt;math&amp;gt;sk\left(d, p, q\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
* Chiffrement : &amp;lt;math&amp;gt;c = m^e \left[N\right]&amp;lt;/math&amp;gt;&lt;br /&gt;
* Déchiffrement : &amp;lt;math&amp;gt;m = c^d \left[N\right]&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La sécurité de RSA repose sur la difficulté à factoriser des grands nombres en nombres premiers. En effet avec &amp;lt;math&amp;gt;\left(N, e\right)&amp;lt;/math&amp;gt; il faudrait pouvoir retrouver &amp;lt;math&amp;gt;\left(d, p, q\right)&amp;lt;/math&amp;gt; où &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt; correspondant à un cassage total. D&#039;après le théorème de factorisation unique tout entier &amp;lt;math&amp;gt;n \ge 2&amp;lt;/math&amp;gt; admet une factorisation unique en produit de puissances de nombres entiers. Des algorithmes de factorisation ont été trouvés pour différentes tailles de module &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; mais pour pallier à ces attaques on augmente la longueur du module. De nos jours pour sécuriser le chiffrement il faut utiliser des modules strictement supérieur à 2048 bits. Cependant avec l&#039;informatique quantique il ne suffira plus d&#039;augmenter la taille du module car la puissance de calcul permettra de casser le chiffrement, peu importe la taille du module.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Exemple : &amp;lt;math&amp;gt;N=15&amp;lt;/math&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* Je choisis &amp;lt;math&amp;gt;x=7&amp;lt;/math&amp;gt;&lt;br /&gt;
* En calculant successivement les valeurs de &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; on trouve &amp;lt;math&amp;gt;7^{4} \equiv 1 [15]&amp;lt;/math&amp;gt;.&lt;br /&gt;
* &amp;lt;math&amp;gt;r=4&amp;lt;/math&amp;gt; est pair&lt;br /&gt;
* &amp;lt;math&amp;gt;pgcd(x^{\frac{r}{2}}+1,15) = 5&amp;lt;/math&amp;gt;. Donc &amp;lt;math&amp;gt;P = 5&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;Q = pgcd(x^{\frac{r}{2}}-1,15) = 3&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Chiffrement symétrique face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
=== Mise en danger de la sécurité ===&lt;br /&gt;
&lt;br /&gt;
Si les ordinateurs quantiques présentent une rapidité de calcul permettant d&#039;effectuer des factorisations impossibles pour un ordinateur classique, il nous semble logique qu&#039;ils soient également performants pour effectuer des attaques de type force brute sur des messages chiffrés par une clé privée qui aurait été transmise par un moyen plus sûr que RSA.&lt;br /&gt;
 &lt;br /&gt;
Un ordinateur quantique pourrait réaliser le déchiffrement avec toutes les clés possibles en parallèle. Ce qui permettrait de cryptanalyser le message en une seule opération. Le principe se base sur la superposition quantique. On superposerait toutes les clés possibles et on déchiffrerait. On obtiendrait alors une superposition de résultats. Le point le plus difficile est de trouver le résultat correct à partir de la superposition obtenue. En effet, le principe selon lequel mesurer une valeur modifie cette valeur fait qu&#039;en observant une superposition, on obtient un seul état aléatoire. Une solution à ce problème a été trouvé par Lov Grover en &amp;lt;math&amp;gt;O\left(\sqrt{n}\right)&amp;lt;/math&amp;gt; étapes.&lt;br /&gt;
&lt;br /&gt;
== Résistances aux attaques quantiques ==&lt;br /&gt;
&lt;br /&gt;
=== Chiffrement asyémétrique ===&lt;br /&gt;
&lt;br /&gt;
Depuis 2006, une conférence internationnale se produit chaque année nommée &amp;quot;Post Quantum Cryptography&amp;quot; dans l&#039;intention de trouver des algorithmes résistants aux ordinateurs quantiques. Nathan Hamlin et William Webb, des mathématiciens, ont présenté récemment un algorithme de chiffrement asymétrique possiblement capable de faire face aux attaques quantiques. Cet algorithme part de l&#039;ancien chiffrement de Merkle-Hellman qui se base sur le problème du sac à dos nommé &amp;quot;Knapsack code&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
==== Problème du sac-à-dos ====&lt;br /&gt;
&lt;br /&gt;
Etant donné un sac avec une capacité &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; et plusieurs objets de poids différents. Le problème du sac-à-dos consiste à trouver la suite d&#039;objets qui entre dans le sac et qui maximise sa capacité. En partant d&#039;un n-uplet &amp;lt;math&amp;gt;\left(a_1, a_2, ..., a_n\right) \in N^n&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;S \in N&amp;lt;/math&amp;gt;, il faut trouver un n-uplet binaire &amp;lt;math&amp;gt;\left(x_1, x_2, ..., x_n\right) \in \left\{0,1\right\}^n&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;S = \sum_{i=1}^{n} \left(a_{i}*x_{i}\right) &amp;lt;/math&amp;gt;. La somme &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; des poids des objets choisi ne doit pas dépasser la capacité du sac à dos.&lt;br /&gt;
&lt;br /&gt;
==== Chiffrement de Merkle-Hellman ====&lt;br /&gt;
&lt;br /&gt;
Cet algorithme de chiffrement à clé publique repose sur la complexité algorithmique du problème du sac-à-dos et utilise une suite de poids super-croissante pour le secret et une suite non super-croissante pour la clé publique. Si les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt; n&#039;ont pas de propriétés particulières, la recherche du message codé en binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt; est un problème difficile. Il n&#039;existe pas d&#039;algorithme polynomial pour le résoudre. Pour pouvoir retrouver facilement ce n-uplet une propriété super-croissante est appliquée sur les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt;. Un n-uplet b est super-croissant si &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\forall i \in [2,n] b_{i} &amp;gt; \sum_{j=1}^{i-1} {b_{j}}&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ainsi en utilisant un algorithme glouton nous pouvons retrouver le n-uplet binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt;. L&#039;objet le plus lourd est dans le sac si le poids du sac est supérieur au poids de celui-ci. La propriété super-croissante assure que la somme des poids des autres objets sera toujours inférieur au poids de l&#039;objet le plus lourd. L&#039;algorithme est le suivant :&lt;br /&gt;
&lt;br /&gt;
  Pour i de n à 1 faire&lt;br /&gt;
    Si &amp;lt;math&amp;gt;b_{i} \le S&amp;lt;/math&amp;gt; alors&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i}  = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
    Sinon&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i} = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
    &amp;lt;math&amp;gt;S = S - x_{i} * b_{i}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Par exemple en prenant la suite des puissances de 2 comme suite super-croissante  avec : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = \left\{4,8\right\}, b = \left\{2,4,8\right\}, S = 12 \left(4+8\right), n = 3&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 3 : 8 \le 12 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_3 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 2 : 4 \le 4 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_2 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 1 : 2 \le 0 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    non donc &amp;lt;math&amp;gt;x_1 = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  =&amp;gt; &amp;lt;math&amp;gt;m = \left\{0,1,1\right\}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour chiffrer un n-uplet binaire &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;, l&#039;idée de Merkle et Hellman est de &amp;quot;tordre&amp;quot; les &amp;lt;math&amp;gt;b_{i}&amp;lt;/math&amp;gt; pour obtenir un n-uplet qui n&#039;est plus super-croissant. On choisit un nombre &amp;lt;math&amp;gt;u &amp;gt; \sum_{i=1}^{n} {b_{i}}&amp;lt;/math&amp;gt;, un entier &amp;lt;math&amp;gt;v \in \mathbb{N}&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd\left(u,v\right) = 1&amp;lt;/math&amp;gt;. Ce qui donne &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; inversible dans &amp;lt;math&amp;gt;\mathbb{Z}/u\mathbb{Z}&amp;lt;/math&amp;gt;. On prend &amp;lt;math&amp;gt;w = v^{-1} \in \mathbb{Z}/u\mathbb{Z}&amp;lt;/math&amp;gt;. On calcule ensuite le n-uplet &amp;lt;math&amp;gt;a = \left(a_1, ..., a_n\right)&amp;lt;/math&amp;gt; tel que pour tout &amp;lt;math&amp;gt;i \in [1,n]&amp;lt;/math&amp;gt; on a : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = a * b_i \left[u\right]&amp;lt;/math&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
Le n-uplet &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; détermine la clé public tandis que &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt; sont gardés secrets. &amp;lt;br/&amp;gt;&lt;br /&gt;
Pour envoyer le message m à Bob, Alice va, à partir de l&#039;écriture de m en binaire, calculer la somme : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;c = \sum_{i=1}^{n} {m_i * a_i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
qu&#039;elle va envoyer à Bob. Bob pour déchiffrer va devoir procéder à plusieurs étapes : &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt;c = \sum_{i=1}^{n} {m_i * a_i}&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * a_i * w} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * a_i * v^{-1}} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * v * b_i * v^{-1}} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * b_i} [u]&amp;lt;/math&amp;gt;                      =&amp;gt; Comme &amp;lt;math&amp;gt; \sum_{i=1}^{n} {m_i * b_i} &amp;lt; \sum_{i=1}^{n} {b_i}&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt; u &amp;gt; \sum_{i=1}^{n} {b_i}&amp;lt;/math&amp;gt; le modulo &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; peut s&#039;enlever&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * b_i}&amp;lt;/math&amp;gt;                           =&amp;gt; Comme &amp;lt;math&amp;gt;b_i&amp;lt;/math&amp;gt; est super-croissant Bob peut facilement retrouver &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Nouveau chiffrement de Hamlin-Webb ====&lt;br /&gt;
&lt;br /&gt;
Le chiffrement de Merkle et Hellman a été abandonné à la suite des découvertes de Shamir qui a découvert une attaque permettant de retrouver le message secret en utilisant un algorithme de la réduction des réseaux. Nathan Hamlin et William Webb reprennent cet algorithme en le renforçant par un changement de représentation des entiers. Ils ont prouvé q&#039;un entier pouvait être représenté de manière unique avec des suites récurrentes. Le secret &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; n&#039;est alors plus modélisé en binaire mais en une suite récurrente plus complexe à craquer.&lt;br /&gt;
&lt;br /&gt;
===== Représentation du message =====&lt;br /&gt;
La représentation d&#039;un nombre &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; en une suite récurrente &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt; se fait en utilisant une suite augmentée &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; de &amp;lt;math&amp;gt;1 \le j \le 10&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;0 \le i \le n&amp;lt;/math&amp;gt; donné par : &amp;lt;br/&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{1,i}= u_i&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{2,i}= u_i + u_{i-2}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{3,i}= u_i + u_{i-2} + u_{i-3}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{4,i}= u_i + u_{i-2} + 2u_{i-3}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{5,i}= u_i + u_{i-2} +2u_{i-3} + u_{i-4}&amp;lt;/math&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{10,i}= u_i + u_{i-2} +2u_{i-3} + 6u_{i-4}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le suite &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; correspond au blocs de chiffre autorisés. Dans l&#039;exemple &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; se calcule dans des groupes de taille 10 mais ce nombre peut varier. La suite &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; se calcule en utilisant un algorithme glouton sur &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; où l&#039;on remplace la somme en une expression dans la suite &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
Le message secret &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; est représenté par : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; M = \sum_{i=0}^{n-1} {d_i * u_i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
avec &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt; calculé grâce à &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
où les &amp;lt;math&amp;gt;d_i&amp;lt;/math&amp;gt; sont des blocs de chiffre lexicographiquement inférieur à &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Chiffrement symétrique quantique ===&lt;br /&gt;
&lt;br /&gt;
==== Photons polarisés ====&lt;br /&gt;
&lt;br /&gt;
Les photons sont des particules qui composent la lumière. Ils sont composés d&#039;un champ électrique et d&#039;un champ magnétique. Une lumière non-polarisée se caractérise par une différence d&#039;orientation du champ électrique suivant les photons. Ainsi la polarisation consiste, grâce à un polarisateur, d&#039;obtenir des photons avec un champ électrique orienté de manière identique. Les filtres polarisants permettent d&#039;appliquer un angle d&#039;orientation sur les photons afin :&lt;br /&gt;
* de récupérer les photons polarisés parallèlement par rapport à cet angle&lt;br /&gt;
* d&#039;éliminer les photons polarisés perpendiculairement&lt;br /&gt;
* de récupérer les photons polarisés intermédiaires avec une probabilité de &amp;lt;math&amp;gt;\cos\left(\alpha\right)&amp;lt;/math&amp;gt; en les réinitialisant avec une polarisation égale à l&#039;angle d&#039;orientation du filtre.&lt;br /&gt;
&lt;br /&gt;
Du fait de la transformation de polarisation il est impossible de connaître l&#039;information sur les polarisations précédentes du photons.&lt;br /&gt;
&lt;br /&gt;
==== Distribution des clés ====&lt;br /&gt;
&lt;br /&gt;
Le chiffrement quantique offre un moyen sécurisé d’échanger des clés privées pour réaliser des chiffrements symétriques. Cette distribution s’appuie sur l’envoi de photons polarisés par fibre optique. Les personnes s&#039;échangeant les clés doivent avoir accès à un canal quantique et un canal classique. Le principe est le suivant :&lt;br /&gt;
* Alice envoie par le canal quantique une suite de photons polarisés aléatoirement.&lt;br /&gt;
* Bob applique un filtre de polarisation qui lui donne 1 chance sur 2 (et 1 chance sur 4 s&#039;il y a eu un espion) d&#039;appliquer le bon filtre et les renvoit à Alice.&lt;br /&gt;
* Alice et Bob s&#039;échangent par le canal classique leur choix des axes de polarisation éliminant ainsi les erreurs.&lt;br /&gt;
* Alice communique une partie de ses résultats.&lt;br /&gt;
* Maintenant que Bob connait les axes qu&#039;Alice a appliqué et les résultats il peut savoir si la communication a été écoutée ou non. Ceci étant grâce au théorème de non clonage où il est impossible de cloner des états quantiques inconnus.&lt;br /&gt;
&lt;br /&gt;
Ce principe permet de détecter facilement s&#039;il y a eu des intrusions durant la communication de la clé privée. En effet si un attaquant écoute il lui faut récupérer les photons envoyés par Alice mesurer la polarisation et renvoyer le photon à Bob. Pour mesurer la polarisation l&#039;attaquant doit appliquer, comme Bob, un filtre pour deviner la base qu&#039;Alice a envoyé. Ainsi cette intrusion a 1 chance sur 2 d&#039;introduire des incohérences dans les données d&#039;Alice et Bob en envoyant 1 fois sur 2 un mauvais photon. Par la suite Bob obtient donc 1 chance sur 4 d&#039;appliquer le bon filtre. Par analyses statistiques, Alice et Bob peuvent détecter de manière sure s&#039;il y a eu espionnage sur le canal quantique.&lt;br /&gt;
&lt;br /&gt;
==== Attaque de l&#039;homme du milieu ====&lt;br /&gt;
&lt;br /&gt;
Comme toute méthode d&#039;échange de clé privée, cette méthode reste vulnérable à une attaque de type &amp;quot;homme du milieu&amp;quot;. Il faut donc la combiner avec un mécanisme de certification afin de s&#039;assurer de l&#039;identité des protagonistes.&lt;br /&gt;
&lt;br /&gt;
== Ressources ==&lt;br /&gt;
&lt;br /&gt;
* Hamlin, N., &amp;amp; Webb, W. A. (2012). Representing Positive Integers as a Sum of Linear Recurrence Sequences, Fibonacci Quart. 50 (2012), no. 2, 99–105. Fibonacci Quart, 50(2), 99-105.&lt;br /&gt;
&lt;br /&gt;
* Moyer, N. T. (2010). A knapsack-type cryptographic system using algebraic number rings (Doctoral dissertation, Washington State University).&lt;/div&gt;</summary>
		<author><name>JulianaLeclaire</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8711</id>
		<title>Projets étudiants cryptographie et sécurité/Leclaire DeRoland Crypto Quantique</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8711"/>
		<updated>2016-03-18T12:46:21Z</updated>

		<summary type="html">&lt;p&gt;JulianaLeclaire : /* Chiffrement de Merkle-Hellman */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Auteurs : Juliana Leclaire, Céline de Roland ===&lt;br /&gt;
&lt;br /&gt;
== La cryptographie et la cryptanalyse dans le contexte de l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
L&#039;informatique quantique se base sur la superposition de plusieurs états quantiques pour améliorer les capacités de calculs. Ce domaine pose un vrai problème dans la sécurité de l&#039;internet qui utilise des algorithmes de chiffrement asymétriques pour les connexions SSL/TLS, paiements en ligne. Les nouveaux ordinateurs avec leur rapidité de calcul va pouvoir casser ces différents algorithmes de chiffrement asymétriques présents dans le Web.&lt;br /&gt;
&lt;br /&gt;
Il existe différents acteurs qui se penchent sur ce domaine. Notamment, la NSA, Google qui tentent de construire leur propre ordinateur quantique, des scientifiques qui se réunissent pour trouver des solutions.&lt;br /&gt;
Dans cette page, nous allons nous demander en quoi l&#039;informatique quantique peut changer le Web d&#039;aujourd&#039;hui et comment faire face à cette arrivée ?&lt;br /&gt;
&lt;br /&gt;
=== Fonctionnement de l&#039;informatique quantique ===&lt;br /&gt;
&lt;br /&gt;
==== Qubit ====&lt;br /&gt;
&lt;br /&gt;
C&#039;est la plus petite unité de stockage de l&#039;information. Etant donné deux états de base &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;, un qubit non mesuré se trouve dans l&#039;état &amp;lt;math&amp;gt;\alpha \left|0\right\rangle + \beta \left|1\right\rangle&amp;lt;/math&amp;gt;, avec &amp;lt;math&amp;gt;\left|\alpha\right|^2 + \left|\beta\right|^2 = 1&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Lorsqu&#039;on mesure la valeur du qubit, on obtient soit &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; soit &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\left|\alpha\right|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et  &amp;lt;math&amp;gt;\left|\beta\right|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Théorème de non clonage ====&lt;br /&gt;
&lt;br /&gt;
Ce théorème, découvert en 1982 par Wootters, Zurek, et Dieks, consiste à dire qu&#039;il est impossible de recopier un qubit à l&#039;identique. La démonstration (par l&#039;absurde) repose sur le fait que pouvoir mettre le qubit B dans le même état que le qubit A implique que le qubit B soit déjà dans le même état que le qubit A.&lt;br /&gt;
On en déduit qu&#039;il est impossible de faire une opération de type copier/coller en informatique quantique.&lt;br /&gt;
&lt;br /&gt;
==== Téléportation quantique ====&lt;br /&gt;
&lt;br /&gt;
La téléportation quantique consiste à transférer l&#039;état du qubit A dans le qubit B. Il s&#039;agit donc cette fois d&#039;une opération de couper/coller.&lt;br /&gt;
L&#039;intrication quantique se produit lorsque deux qubits sont dépendants l&#039;un de l&#039;autre même s&#039;ils sont éloignés l&#039;un de l&#039;autre. Dans cet état, si on mesure l&#039;un des deux, alors la mesure du deuxième est déterminée.&lt;br /&gt;
Sans entrer dans la théorie physique sous jacente, nous pouvons dire qu&#039;un canal EPR permet de réaliser cette opération de couper/coller en transmettant une information entre deux ordinateurs quantiques.&lt;br /&gt;
&lt;br /&gt;
== Chiffrement asymétrique face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
=== Mise en danger de la sécurité du Web ===&lt;br /&gt;
&lt;br /&gt;
Les ordinateurs quantiques présentent une rapidité de calculs extrêmement plus rapide que les ordinateurs classiques. Ces ordinateurs n&#039;auraient aucune difficulté pour casser les codes de sécurité actuels reposant principalement sur des chiffrements à clé publique. Un chiffrement asymétrique chiffre avec sa clé publique et déchiffre avec sa clé privée. Si nous prenons l&#039;exemple de RSA, un chiffrement asymétrique, qui a la particularité d&#039;être couramment utilisé dans la sécurité du Web. RSA repose sur la génération de grands nombres premiers.&lt;br /&gt;
&lt;br /&gt;
* Initialisation : &lt;br /&gt;
** module &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; (grand nombre entier codé sur 2048 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;p, q&amp;lt;/math&amp;gt; : nombres premiers de même taille (codés sur 1024 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;\phi\left(N\right) = \left(p-1\right) * \left(q - 1\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd\left(e, \phi\left(N\right)\right) = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
** Choisir &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;ed \equiv 1 [\phi(N)]&amp;lt;/math&amp;gt; et donc &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; est l&#039;inverse modulaire de &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; avec &amp;lt;math&amp;gt;d = e^{-1} \left[\phi\left(N\right)\right]&amp;lt;/math&amp;gt;&lt;br /&gt;
** Clé publique : &amp;lt;math&amp;gt;pk\left(n, e\right)&amp;lt;/math&amp;gt;, Clé privée : &amp;lt;math&amp;gt;sk\left(d, p, q\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
* Chiffrement : &amp;lt;math&amp;gt;c = m^e \left[N\right]&amp;lt;/math&amp;gt;&lt;br /&gt;
* Déchiffrement : &amp;lt;math&amp;gt;m = c^d \left[N\right]&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La sécurité de RSA repose sur la difficulté à factoriser des grands nombres en nombres premiers. En effet avec &amp;lt;math&amp;gt;\left(N, e\right)&amp;lt;/math&amp;gt; il faudrait pouvoir retrouver &amp;lt;math&amp;gt;\left(d, p, q\right)&amp;lt;/math&amp;gt; où &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt; correspondant à un cassage total. D&#039;après le théorème de factorisation unique tout entier &amp;lt;math&amp;gt;n \ge 2&amp;lt;/math&amp;gt; admet une factorisation unique en produit de puissances de nombres entiers. Des algorithmes de factorisation ont été trouvés pour différentes tailles de module &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; mais pour pallier à ces attaques on augmente la longueur du module. De nos jours pour sécuriser le chiffrement il faut utiliser des modules strictement supérieur à 2048 bits. Cependant avec l&#039;informatique quantique il ne suffira plus d&#039;augmenter la taille du module car la puissance de calcul permettra de casser le chiffrement, peu importe la taille du module.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Exemple : &amp;lt;math&amp;gt;N=15&amp;lt;/math&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* Je choisis &amp;lt;math&amp;gt;x=7&amp;lt;/math&amp;gt;&lt;br /&gt;
* En calculant successivement les valeurs de &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; on trouve &amp;lt;math&amp;gt;7^{4} \equiv 1 [15]&amp;lt;/math&amp;gt;.&lt;br /&gt;
* &amp;lt;math&amp;gt;r=4&amp;lt;/math&amp;gt; est pair&lt;br /&gt;
* &amp;lt;math&amp;gt;pgcd(x^{\frac{r}{2}}+1,15) = 5&amp;lt;/math&amp;gt;. Donc &amp;lt;math&amp;gt;P = 5&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;Q = pgcd(x^{\frac{r}{2}}-1,15) = 3&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Chiffrement symétrique face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
=== Mise en danger de la sécurité ===&lt;br /&gt;
&lt;br /&gt;
Si les ordinateurs quantiques présentent une rapidité de calcul permettant d&#039;effectuer des factorisations impossibles pour un ordinateur classique, il nous semble logique qu&#039;ils soient également performants pour effectuer des attaques de type force brute sur des messages chiffrés par une clé privée qui aurait été transmise par un moyen plus sûr que RSA.&lt;br /&gt;
 &lt;br /&gt;
Un ordinateur quantique pourrait réaliser le déchiffrement avec toutes les clés possibles en parallèle. Ce qui permettrait de cryptanalyser le message en une seule opération. Le principe se base sur la superposition quantique. On superposerait toutes les clés possibles et on déchiffrerait. On obtiendrait alors une superposition de résultats. Le point le plus difficile est de trouver le résultat correct à partir de la superposition obtenue. En effet, le principe selon lequel mesurer une valeur modifie cette valeur fait qu&#039;en observant une superposition, on obtient un seul état aléatoire. Une solution à ce problème a été trouvé par Lov Grover en &amp;lt;math&amp;gt;O\left(\sqrt{n}\right)&amp;lt;/math&amp;gt; étapes.&lt;br /&gt;
&lt;br /&gt;
== Résistances aux attaques quantiques ==&lt;br /&gt;
&lt;br /&gt;
=== Chiffrement asyémétrique ===&lt;br /&gt;
&lt;br /&gt;
Depuis 2006, une conférence internationnale se produit chaque année nommée &amp;quot;Post Quantum Cryptography&amp;quot; dans l&#039;intention de trouver des algorithmes résistants aux ordinateurs quantiques. Nathan Hamlin et William Webb, des mathématiciens, ont présenté récemment un algorithme de chiffrement asymétrique possiblement capable de faire face aux attaques quantiques. Cet algorithme part de l&#039;ancien chiffrement de Merkle-Hellman qui se base sur le problème du sac à dos nommé &amp;quot;Knapsack code&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
==== Problème du sac-à-dos ====&lt;br /&gt;
&lt;br /&gt;
Etant donné un sac avec une capacité &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; et plusieurs objets de poids différents. Le problème du sac-à-dos consiste à trouver la suite d&#039;objets qui entre dans le sac et qui maximise sa capacité. En partant d&#039;un n-uplet &amp;lt;math&amp;gt;\left(a_1, a_2, ..., a_n\right) \in N^n&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;S \in N&amp;lt;/math&amp;gt;, il faut trouver un n-uplet binaire &amp;lt;math&amp;gt;\left(x_1, x_2, ..., x_n\right) \in \left\{0,1\right\}^n&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;S = \sum_{i=1}^{n} \left(a_{i}*x_{i}\right) &amp;lt;/math&amp;gt;. La somme &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; des poids des objets choisi ne doit pas dépasser la capacité du sac à dos.&lt;br /&gt;
&lt;br /&gt;
==== Chiffrement de Merkle-Hellman ====&lt;br /&gt;
&lt;br /&gt;
Cet algorithme de chiffrement à clé publique repose sur la complexité algorithmique du problème du sac-à-dos et utilise une suite de poids super-croissante pour le secret et une suite non super-croissante pour la clé publique. Si les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt; n&#039;ont pas de propriétés particulières, la recherche du message codé en binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt; est un problème difficile. Il n&#039;existe pas d&#039;algorithme polynomial pour le résoudre. Pour pouvoir retrouver facilement ce n-uplet une propriété super-croissante est appliquée sur les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt;. Un n-uplet b est super-croissant si &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\forall i \in [2,n] b_{i} &amp;gt; \sum_{j=1}^{i-1} {b_{j}}&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ainsi en utilisant un algorithme glouton nous pouvons retrouver le n-uplet binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt;. L&#039;objet le plus lourd est dans le sac si le poids du sac est supérieur au poids de celui-ci. La propriété super-croissante assure que la somme des poids des autres objets sera toujours inférieur au poids de l&#039;objet le plus lourd. L&#039;algorithme est le suivant :&lt;br /&gt;
&lt;br /&gt;
  Pour i de n à 1 faire&lt;br /&gt;
    Si &amp;lt;math&amp;gt;b_{i} \le S&amp;lt;/math&amp;gt; alors&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i}  = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
    Sinon&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i} = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
    &amp;lt;math&amp;gt;S = S - x_{i} * b_{i}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Par exemple en prenant la suite des puissances de 2 comme suite super-croissante  avec : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = \left\{ 1,4,8 \right\}, b = \left\{ 1,2,4,8 \right\}, S = 13 \left(1+4+8\right), n = 4&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 4 : 8 \le 13 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_4 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 3 : 4 \le 5 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_3 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 2 : 2 \le 1 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    non donc &amp;lt;math&amp;gt;x_2 = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 1 : 1 \le 1 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_1 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  =&amp;gt; &amp;lt;math&amp;gt;m = \left\{ 1,0,1,1 \right\}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour chiffrer un n-uplet binaire &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;, l&#039;idée de Merkle et Hellman est de &amp;quot;tordre&amp;quot; les &amp;lt;math&amp;gt;b_{i}&amp;lt;/math&amp;gt; pour obtenir un n-uplet qui n&#039;est plus super-croissant. On choisit un nombre &amp;lt;math&amp;gt;u &amp;gt; \sum_{i=1}^{n} {b_{i}}&amp;lt;/math&amp;gt;, un entier &amp;lt;math&amp;gt;v \in N&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd\left(u,v\right) = 1&amp;lt;/math&amp;gt;. Ce qui donne &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; inversible dans &amp;lt;math&amp;gt;Z/uZ&amp;lt;/math&amp;gt;. On prend &amp;lt;math&amp;gt;w = v^{-1} \in Z/uZ&amp;lt;/math&amp;gt;. On calcule ensuite le n-uplet &amp;lt;math&amp;gt;a = \left(a_1, ..., a_n\right)&amp;lt;/math&amp;gt; tel que pour tout &amp;lt;math&amp;gt;i \in [1,n]&amp;lt;/math&amp;gt; on a : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = a * b_i (mod u)&amp;lt;/math&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
Le n-uplet &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; détermine la clé public tandis que &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt; sont gardés secrets. &amp;lt;br/&amp;gt;&lt;br /&gt;
Pour envoyer le message m à Bob, Alice va, à partir de l&#039;écriture de m en binaire, calculer la somme : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;c = \sum_{i=1}^{n} {m_i * a_i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
qu&#039;elle va envoyer à Bob. Bob pour déchiffrer va devoir procéder à plusieurs étapes : &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt;c = \sum_{i=1}^{n} {m_i * a_i}&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * a_i * w} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * a_i * v^{-1}} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * v * b_i * v^{-1}} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * b_i} [u]&amp;lt;/math&amp;gt;                      =&amp;gt; Comme &amp;lt;math&amp;gt; \sum_{i=1}^{n} {m_i * b_i} &amp;lt; \sum_{i=1}^{n} {b_i}&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt; u &amp;gt; \sum_{i=1}^{n} {b_i}&amp;lt;/math&amp;gt; le modulo &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; peut s&#039;enlever&lt;br /&gt;
* &amp;lt;math&amp;gt;= \sum_{i=1}^{n} {m_i * b_i}&amp;lt;/math&amp;gt;                           =&amp;gt; Comme &amp;lt;math&amp;gt;b_i&amp;lt;/math&amp;gt; est super-croissant Bob peut facilement retrouver &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Nouveau chiffrement de Hamlin-Webb ====&lt;br /&gt;
&lt;br /&gt;
Le chiffrement de Merkle et Hellman a été abandonné à la suite des découvertes de Shamir qui a découvert une attaque permettant de retrouver le message secret en utilisant un algorithme de la réduction des réseaux. Nathan Hamlin et William Webb reprennent cet algorithme en le renforçant par un changement de représentation des entiers. Ils ont prouvé q&#039;un entier pouvait être représenté de manière unique avec des suites récurrentes. Le secret &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; n&#039;est alors plus modélisé en binaire mais en une suite récurrente plus complexe à craquer.&lt;br /&gt;
&lt;br /&gt;
===== Représentation du message =====&lt;br /&gt;
La représentation d&#039;un nombre &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; en une suite récurrente &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt; se fait en utilisant une suite augmentée &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; de &amp;lt;math&amp;gt;1 \le j \le 10&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;0 \le i \le n&amp;lt;/math&amp;gt; donné par : &amp;lt;br/&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{1,i}= u_i&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{2,i}= u_i + u_{i-2}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{3,i}= u_i + u_{i-2} + u_{i-3}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{4,i}= u_i + u_{i-2} + 2u_{i-3}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{5,i}= u_i + u_{i-2} +2u_{i-3} + u_{i-4}&amp;lt;/math&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{10,i}= u_i + u_{i-2} +2u_{i-3} + 6u_{i-4}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le suite &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; correspond au blocs de chiffre autorisés. Dans l&#039;exemple &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; se calcule dans des groupes de taille 10 mais ce nombre peut varier. La suite &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; se calcule en utilisant un algorithme glouton sur &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; où l&#039;on remplace la somme en une expression dans la suite &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
Le message secret &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; est représenté par : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; M = \sum_{i=0}^{n-1} {d_i * u_i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
avec &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt; calculé grâce à &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
où les &amp;lt;math&amp;gt;d_i&amp;lt;/math&amp;gt; sont des blocs de chiffre lexicographiquement inférieur à &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Chiffrement symétrique quantique ===&lt;br /&gt;
&lt;br /&gt;
==== Photons polarisés ====&lt;br /&gt;
&lt;br /&gt;
Les photons sont des particules qui composent la lumière. Ils sont composés d&#039;un champ électrique et d&#039;un champ magnétique. Une lumière non-polarisée se caractérise par une différence d&#039;orientation du champ électrique suivant les photons. Ainsi la polarisation consiste, grâce à un polarisateur, d&#039;obtenir des photons avec un champ électrique orienté de manière identique. Les filtres polarisants permettent d&#039;appliquer un angle d&#039;orientation sur les photons afin :&lt;br /&gt;
* de récupérer les photons polarisés parallèlement par rapport à cet angle&lt;br /&gt;
* d&#039;éliminer les photons polarisés perpendiculairement&lt;br /&gt;
* de récupérer les photons polarisés intermédiaires avec une probabilité de &amp;lt;math&amp;gt;\cos\left(\alpha\right)&amp;lt;/math&amp;gt; en les réinitialisant avec une polarisation égale à l&#039;angle d&#039;orientation du filtre.&lt;br /&gt;
&lt;br /&gt;
Du fait de la transformation de polarisation il est impossible de connaître l&#039;information sur les polarisations précédentes du photons.&lt;br /&gt;
&lt;br /&gt;
==== Distribution des clés ====&lt;br /&gt;
&lt;br /&gt;
Le chiffrement quantique offre un moyen sécurisé d’échanger des clés privées pour réaliser des chiffrements symétriques. Cette distribution s’appuie sur l’envoi de photons polarisés par fibre optique. Les personnes s&#039;échangeant les clés doivent avoir accès à un canal quantique et un canal classique. Le principe est le suivant :&lt;br /&gt;
* Alice envoie par le canal quantique une suite de photons polarisés aléatoirement.&lt;br /&gt;
* Bob applique un filtre de polarisation qui lui donne 1 chance sur 2 (et 1 chance sur 4 s&#039;il y a eu un espion) d&#039;appliquer le bon filtre et les renvoit à Alice.&lt;br /&gt;
* Alice et Bob s&#039;échangent par le canal classique leur choix des axes de polarisation éliminant ainsi les erreurs.&lt;br /&gt;
* Alice communique une partie de ses résultats.&lt;br /&gt;
* Maintenant que Bob connait les axes qu&#039;Alice a appliqué et les résultats il peut savoir si la communication a été écoutée ou non. Ceci étant grâce au théorème de non clonage où il est impossible de cloner des états quantiques inconnus.&lt;br /&gt;
&lt;br /&gt;
Ce principe permet de détecter facilement s&#039;il y a eu des intrusions durant la communication de la clé privée. En effet si un attaquant écoute il lui faut récupérer les photons envoyés par Alice mesurer la polarisation et renvoyer le photon à Bob. Pour mesurer la polarisation l&#039;attaquant doit appliquer, comme Bob, un filtre pour deviner la base qu&#039;Alice a envoyé. Ainsi cette intrusion a 1 chance sur 2 d&#039;introduire des incohérences dans les données d&#039;Alice et Bob en envoyant 1 fois sur 2 un mauvais photon. Par la suite Bob obtient donc 1 chance sur 4 d&#039;appliquer le bon filtre. Par analyses statistiques, Alice et Bob peuvent détecter de manière sure s&#039;il y a eu espionnage sur le canal quantique.&lt;br /&gt;
&lt;br /&gt;
==== Attaque de l&#039;homme du milieu ====&lt;br /&gt;
&lt;br /&gt;
Comme toute méthode d&#039;échange de clé privée, cette méthode reste vulnérable à une attaque de type &amp;quot;homme du milieu&amp;quot;. Il faut donc la combiner avec un mécanisme de certification afin de s&#039;assurer de l&#039;identité des protagonistes.&lt;br /&gt;
&lt;br /&gt;
== Ressources ==&lt;br /&gt;
&lt;br /&gt;
* Hamlin, N., &amp;amp; Webb, W. A. (2012). Representing Positive Integers as a Sum of Linear Recurrence Sequences, Fibonacci Quart. 50 (2012), no. 2, 99–105. Fibonacci Quart, 50(2), 99-105.&lt;br /&gt;
&lt;br /&gt;
* Moyer, N. T. (2010). A knapsack-type cryptographic system using algebraic number rings (Doctoral dissertation, Washington State University).&lt;/div&gt;</summary>
		<author><name>JulianaLeclaire</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8710</id>
		<title>Projets étudiants cryptographie et sécurité/Leclaire DeRoland Crypto Quantique</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8710"/>
		<updated>2016-03-18T12:45:59Z</updated>

		<summary type="html">&lt;p&gt;JulianaLeclaire : /* Chiffrement de Merkle-Hellman */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Auteurs : Juliana Leclaire, Céline de Roland ===&lt;br /&gt;
&lt;br /&gt;
== La cryptographie et la cryptanalyse dans le contexte de l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
L&#039;informatique quantique se base sur la superposition de plusieurs états quantiques pour améliorer les capacités de calculs. Ce domaine pose un vrai problème dans la sécurité de l&#039;internet qui utilise des algorithmes de chiffrement asymétriques pour les connexions SSL/TLS, paiements en ligne. Les nouveaux ordinateurs avec leur rapidité de calcul va pouvoir casser ces différents algorithmes de chiffrement asymétriques présents dans le Web.&lt;br /&gt;
&lt;br /&gt;
Il existe différents acteurs qui se penchent sur ce domaine. Notamment, la NSA, Google qui tentent de construire leur propre ordinateur quantique, des scientifiques qui se réunissent pour trouver des solutions.&lt;br /&gt;
Dans cette page, nous allons nous demander en quoi l&#039;informatique quantique peut changer le Web d&#039;aujourd&#039;hui et comment faire face à cette arrivée ?&lt;br /&gt;
&lt;br /&gt;
=== Fonctionnement de l&#039;informatique quantique ===&lt;br /&gt;
&lt;br /&gt;
==== Qubit ====&lt;br /&gt;
&lt;br /&gt;
C&#039;est la plus petite unité de stockage de l&#039;information. Etant donné deux états de base &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;, un qubit non mesuré se trouve dans l&#039;état &amp;lt;math&amp;gt;\alpha \left|0\right\rangle + \beta \left|1\right\rangle&amp;lt;/math&amp;gt;, avec &amp;lt;math&amp;gt;\left|\alpha\right|^2 + \left|\beta\right|^2 = 1&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Lorsqu&#039;on mesure la valeur du qubit, on obtient soit &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; soit &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\left|\alpha\right|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et  &amp;lt;math&amp;gt;\left|\beta\right|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Théorème de non clonage ====&lt;br /&gt;
&lt;br /&gt;
Ce théorème, découvert en 1982 par Wootters, Zurek, et Dieks, consiste à dire qu&#039;il est impossible de recopier un qubit à l&#039;identique. La démonstration (par l&#039;absurde) repose sur le fait que pouvoir mettre le qubit B dans le même état que le qubit A implique que le qubit B soit déjà dans le même état que le qubit A.&lt;br /&gt;
On en déduit qu&#039;il est impossible de faire une opération de type copier/coller en informatique quantique.&lt;br /&gt;
&lt;br /&gt;
==== Téléportation quantique ====&lt;br /&gt;
&lt;br /&gt;
La téléportation quantique consiste à transférer l&#039;état du qubit A dans le qubit B. Il s&#039;agit donc cette fois d&#039;une opération de couper/coller.&lt;br /&gt;
L&#039;intrication quantique se produit lorsque deux qubits sont dépendants l&#039;un de l&#039;autre même s&#039;ils sont éloignés l&#039;un de l&#039;autre. Dans cet état, si on mesure l&#039;un des deux, alors la mesure du deuxième est déterminée.&lt;br /&gt;
Sans entrer dans la théorie physique sous jacente, nous pouvons dire qu&#039;un canal EPR permet de réaliser cette opération de couper/coller en transmettant une information entre deux ordinateurs quantiques.&lt;br /&gt;
&lt;br /&gt;
== Chiffrement asymétrique face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
=== Mise en danger de la sécurité du Web ===&lt;br /&gt;
&lt;br /&gt;
Les ordinateurs quantiques présentent une rapidité de calculs extrêmement plus rapide que les ordinateurs classiques. Ces ordinateurs n&#039;auraient aucune difficulté pour casser les codes de sécurité actuels reposant principalement sur des chiffrements à clé publique. Un chiffrement asymétrique chiffre avec sa clé publique et déchiffre avec sa clé privée. Si nous prenons l&#039;exemple de RSA, un chiffrement asymétrique, qui a la particularité d&#039;être couramment utilisé dans la sécurité du Web. RSA repose sur la génération de grands nombres premiers.&lt;br /&gt;
&lt;br /&gt;
* Initialisation : &lt;br /&gt;
** module &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; (grand nombre entier codé sur 2048 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;p, q&amp;lt;/math&amp;gt; : nombres premiers de même taille (codés sur 1024 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;\phi\left(N\right) = \left(p-1\right) * \left(q - 1\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd\left(e, \phi\left(N\right)\right) = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
** Choisir &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;ed \equiv 1 [\phi(N)]&amp;lt;/math&amp;gt; et donc &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; est l&#039;inverse modulaire de &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; avec &amp;lt;math&amp;gt;d = e^{-1} \left[\phi\left(N\right)\right]&amp;lt;/math&amp;gt;&lt;br /&gt;
** Clé publique : &amp;lt;math&amp;gt;pk\left(n, e\right)&amp;lt;/math&amp;gt;, Clé privée : &amp;lt;math&amp;gt;sk\left(d, p, q\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
* Chiffrement : &amp;lt;math&amp;gt;c = m^e \left[N\right]&amp;lt;/math&amp;gt;&lt;br /&gt;
* Déchiffrement : &amp;lt;math&amp;gt;m = c^d \left[N\right]&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La sécurité de RSA repose sur la difficulté à factoriser des grands nombres en nombres premiers. En effet avec &amp;lt;math&amp;gt;\left(N, e\right)&amp;lt;/math&amp;gt; il faudrait pouvoir retrouver &amp;lt;math&amp;gt;\left(d, p, q\right)&amp;lt;/math&amp;gt; où &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt; correspondant à un cassage total. D&#039;après le théorème de factorisation unique tout entier &amp;lt;math&amp;gt;n \ge 2&amp;lt;/math&amp;gt; admet une factorisation unique en produit de puissances de nombres entiers. Des algorithmes de factorisation ont été trouvés pour différentes tailles de module &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; mais pour pallier à ces attaques on augmente la longueur du module. De nos jours pour sécuriser le chiffrement il faut utiliser des modules strictement supérieur à 2048 bits. Cependant avec l&#039;informatique quantique il ne suffira plus d&#039;augmenter la taille du module car la puissance de calcul permettra de casser le chiffrement, peu importe la taille du module.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Exemple : &amp;lt;math&amp;gt;N=15&amp;lt;/math&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* Je choisis &amp;lt;math&amp;gt;x=7&amp;lt;/math&amp;gt;&lt;br /&gt;
* En calculant successivement les valeurs de &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; on trouve &amp;lt;math&amp;gt;7^{4} \equiv 1 [15]&amp;lt;/math&amp;gt;.&lt;br /&gt;
* &amp;lt;math&amp;gt;r=4&amp;lt;/math&amp;gt; est pair&lt;br /&gt;
* &amp;lt;math&amp;gt;pgcd(x^{\frac{r}{2}}+1,15) = 5&amp;lt;/math&amp;gt;. Donc &amp;lt;math&amp;gt;P = 5&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;Q = pgcd(x^{\frac{r}{2}}-1,15) = 3&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Chiffrement symétrique face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
=== Mise en danger de la sécurité ===&lt;br /&gt;
&lt;br /&gt;
Si les ordinateurs quantiques présentent une rapidité de calcul permettant d&#039;effectuer des factorisations impossibles pour un ordinateur classique, il nous semble logique qu&#039;ils soient également performants pour effectuer des attaques de type force brute sur des messages chiffrés par une clé privée qui aurait été transmise par un moyen plus sûr que RSA.&lt;br /&gt;
 &lt;br /&gt;
Un ordinateur quantique pourrait réaliser le déchiffrement avec toutes les clés possibles en parallèle. Ce qui permettrait de cryptanalyser le message en une seule opération. Le principe se base sur la superposition quantique. On superposerait toutes les clés possibles et on déchiffrerait. On obtiendrait alors une superposition de résultats. Le point le plus difficile est de trouver le résultat correct à partir de la superposition obtenue. En effet, le principe selon lequel mesurer une valeur modifie cette valeur fait qu&#039;en observant une superposition, on obtient un seul état aléatoire. Une solution à ce problème a été trouvé par Lov Grover en &amp;lt;math&amp;gt;O\left(\sqrt{n}\right)&amp;lt;/math&amp;gt; étapes.&lt;br /&gt;
&lt;br /&gt;
== Résistances aux attaques quantiques ==&lt;br /&gt;
&lt;br /&gt;
=== Chiffrement asyémétrique ===&lt;br /&gt;
&lt;br /&gt;
Depuis 2006, une conférence internationnale se produit chaque année nommée &amp;quot;Post Quantum Cryptography&amp;quot; dans l&#039;intention de trouver des algorithmes résistants aux ordinateurs quantiques. Nathan Hamlin et William Webb, des mathématiciens, ont présenté récemment un algorithme de chiffrement asymétrique possiblement capable de faire face aux attaques quantiques. Cet algorithme part de l&#039;ancien chiffrement de Merkle-Hellman qui se base sur le problème du sac à dos nommé &amp;quot;Knapsack code&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
==== Problème du sac-à-dos ====&lt;br /&gt;
&lt;br /&gt;
Etant donné un sac avec une capacité &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; et plusieurs objets de poids différents. Le problème du sac-à-dos consiste à trouver la suite d&#039;objets qui entre dans le sac et qui maximise sa capacité. En partant d&#039;un n-uplet &amp;lt;math&amp;gt;\left(a_1, a_2, ..., a_n\right) \in N^n&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;S \in N&amp;lt;/math&amp;gt;, il faut trouver un n-uplet binaire &amp;lt;math&amp;gt;\left(x_1, x_2, ..., x_n\right) \in \left\{0,1\right\}^n&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;S = \sum_{i=1}^{n} \left(a_{i}*x_{i}\right) &amp;lt;/math&amp;gt;. La somme &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; des poids des objets choisi ne doit pas dépasser la capacité du sac à dos.&lt;br /&gt;
&lt;br /&gt;
==== Chiffrement de Merkle-Hellman ====&lt;br /&gt;
&lt;br /&gt;
Cet algorithme de chiffrement à clé publique repose sur la complexité algorithmique du problème du sac-à-dos et utilise une suite de poids super-croissante pour le secret et une suite non super-croissante pour la clé publique. Si les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt; n&#039;ont pas de propriétés particulières, la recherche du message codé en binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt; est un problème difficile. Il n&#039;existe pas d&#039;algorithme polynomial pour le résoudre. Pour pouvoir retrouver facilement ce n-uplet une propriété super-croissante est utilisée sur les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt;. Un n-uplet b est super-croissant si &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\forall i \in [2,n] b_{i} &amp;gt; \sum_{j=1}^{i-1} {b_{j}}&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ainsi en utilisant un algorithme glouton nous pouvons retrouver le n-uplet binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt;. L&#039;objet le plus lourd est dans le sac si le poids du sac est supérieur au poids de celui-ci. La propriété super-croissante assure que la somme des poids des autres objets sera toujours inférieur au poids de l&#039;objet le plus lourd. L&#039;algorithme est le suivant :&lt;br /&gt;
&lt;br /&gt;
  Pour i de n à 1 faire&lt;br /&gt;
    Si &amp;lt;math&amp;gt;b_{i} \le S&amp;lt;/math&amp;gt; alors&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i}  = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
    Sinon&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i} = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
    &amp;lt;math&amp;gt;S = S - x_{i} * b_{i}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Par exemple en prenant la suite des puissances de 2 comme suite super-croissante  avec : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = \left\{ 1,4,8 \right\}, b = \left\{ 1,2,4,8 \right\}, S = 13 \left(1+4+8\right), n = 4&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 4 : 8 \le 13 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_4 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 3 : 4 \le 5 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_3 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 2 : 2 \le 1 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    non donc &amp;lt;math&amp;gt;x_2 = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 1 : 1 \le 1 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_1 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  =&amp;gt; &amp;lt;math&amp;gt;m = \left\{ 1,0,1,1 \right\}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour chiffrer un n-uplet binaire &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;, l&#039;idée de Merkle et Hellman est de &amp;quot;tordre&amp;quot; les &amp;lt;math&amp;gt;b_{i}&amp;lt;/math&amp;gt; pour obtenir un n-uplet qui n&#039;est plus super-croissant. On choisit un nombre &amp;lt;math&amp;gt;u &amp;gt; \sum_{i=1}^{n} {b_{i}}&amp;lt;/math&amp;gt;, un entier &amp;lt;math&amp;gt;v \in N&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd\left(u,v\right) = 1&amp;lt;/math&amp;gt;. Ce qui donne &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; inversible dans &amp;lt;math&amp;gt;Z/uZ&amp;lt;/math&amp;gt;. On prend &amp;lt;math&amp;gt;w = v^{-1} \in Z/uZ&amp;lt;/math&amp;gt;. On calcule ensuite le n-uplet &amp;lt;math&amp;gt;a = \left(a_1, ..., a_n\right)&amp;lt;/math&amp;gt; tel que pour tout &amp;lt;math&amp;gt;i \in [1,n]&amp;lt;/math&amp;gt; on a : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = a * b_i (mod u)&amp;lt;/math&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
Le n-uplet &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; détermine la clé public tandis que &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt; sont gardés secrets. &amp;lt;br/&amp;gt;&lt;br /&gt;
Pour envoyer le message m à Bob, Alice va, à partir de l&#039;écriture de m en binaire, calculer la somme : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;c = \sum_{i=1}^{n} {m_i * a_i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
qu&#039;elle va envoyer à Bob. Bob pour déchiffrer va devoir procéder à plusieurs étapes : &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt;c = \sum_{i=1}^{n} {m_i * a_i}&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * a_i * w} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * a_i * v^{-1}} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * v * b_i * v^{-1}} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * b_i} [u]&amp;lt;/math&amp;gt;                      =&amp;gt; Comme &amp;lt;math&amp;gt; \sum_{i=1}^{n} {m_i * b_i} &amp;lt; \sum_{i=1}^{n} {b_i}&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt; u &amp;gt; \sum_{i=1}^{n} {b_i}&amp;lt;/math&amp;gt; le modulo &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; peut s&#039;enlever&lt;br /&gt;
* &amp;lt;math&amp;gt;= \sum_{i=1}^{n} {m_i * b_i}&amp;lt;/math&amp;gt;                           =&amp;gt; Comme &amp;lt;math&amp;gt;b_i&amp;lt;/math&amp;gt; est super-croissant Bob peut facilement retrouver &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Nouveau chiffrement de Hamlin-Webb ====&lt;br /&gt;
&lt;br /&gt;
Le chiffrement de Merkle et Hellman a été abandonné à la suite des découvertes de Shamir qui a découvert une attaque permettant de retrouver le message secret en utilisant un algorithme de la réduction des réseaux. Nathan Hamlin et William Webb reprennent cet algorithme en le renforçant par un changement de représentation des entiers. Ils ont prouvé q&#039;un entier pouvait être représenté de manière unique avec des suites récurrentes. Le secret &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; n&#039;est alors plus modélisé en binaire mais en une suite récurrente plus complexe à craquer.&lt;br /&gt;
&lt;br /&gt;
===== Représentation du message =====&lt;br /&gt;
La représentation d&#039;un nombre &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; en une suite récurrente &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt; se fait en utilisant une suite augmentée &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; de &amp;lt;math&amp;gt;1 \le j \le 10&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;0 \le i \le n&amp;lt;/math&amp;gt; donné par : &amp;lt;br/&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{1,i}= u_i&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{2,i}= u_i + u_{i-2}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{3,i}= u_i + u_{i-2} + u_{i-3}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{4,i}= u_i + u_{i-2} + 2u_{i-3}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{5,i}= u_i + u_{i-2} +2u_{i-3} + u_{i-4}&amp;lt;/math&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{10,i}= u_i + u_{i-2} +2u_{i-3} + 6u_{i-4}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le suite &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; correspond au blocs de chiffre autorisés. Dans l&#039;exemple &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; se calcule dans des groupes de taille 10 mais ce nombre peut varier. La suite &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; se calcule en utilisant un algorithme glouton sur &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; où l&#039;on remplace la somme en une expression dans la suite &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
Le message secret &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; est représenté par : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; M = \sum_{i=0}^{n-1} {d_i * u_i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
avec &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt; calculé grâce à &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
où les &amp;lt;math&amp;gt;d_i&amp;lt;/math&amp;gt; sont des blocs de chiffre lexicographiquement inférieur à &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Chiffrement symétrique quantique ===&lt;br /&gt;
&lt;br /&gt;
==== Photons polarisés ====&lt;br /&gt;
&lt;br /&gt;
Les photons sont des particules qui composent la lumière. Ils sont composés d&#039;un champ électrique et d&#039;un champ magnétique. Une lumière non-polarisée se caractérise par une différence d&#039;orientation du champ électrique suivant les photons. Ainsi la polarisation consiste, grâce à un polarisateur, d&#039;obtenir des photons avec un champ électrique orienté de manière identique. Les filtres polarisants permettent d&#039;appliquer un angle d&#039;orientation sur les photons afin :&lt;br /&gt;
* de récupérer les photons polarisés parallèlement par rapport à cet angle&lt;br /&gt;
* d&#039;éliminer les photons polarisés perpendiculairement&lt;br /&gt;
* de récupérer les photons polarisés intermédiaires avec une probabilité de &amp;lt;math&amp;gt;\cos\left(\alpha\right)&amp;lt;/math&amp;gt; en les réinitialisant avec une polarisation égale à l&#039;angle d&#039;orientation du filtre.&lt;br /&gt;
&lt;br /&gt;
Du fait de la transformation de polarisation il est impossible de connaître l&#039;information sur les polarisations précédentes du photons.&lt;br /&gt;
&lt;br /&gt;
==== Distribution des clés ====&lt;br /&gt;
&lt;br /&gt;
Le chiffrement quantique offre un moyen sécurisé d’échanger des clés privées pour réaliser des chiffrements symétriques. Cette distribution s’appuie sur l’envoi de photons polarisés par fibre optique. Les personnes s&#039;échangeant les clés doivent avoir accès à un canal quantique et un canal classique. Le principe est le suivant :&lt;br /&gt;
* Alice envoie par le canal quantique une suite de photons polarisés aléatoirement.&lt;br /&gt;
* Bob applique un filtre de polarisation qui lui donne 1 chance sur 2 (et 1 chance sur 4 s&#039;il y a eu un espion) d&#039;appliquer le bon filtre et les renvoit à Alice.&lt;br /&gt;
* Alice et Bob s&#039;échangent par le canal classique leur choix des axes de polarisation éliminant ainsi les erreurs.&lt;br /&gt;
* Alice communique une partie de ses résultats.&lt;br /&gt;
* Maintenant que Bob connait les axes qu&#039;Alice a appliqué et les résultats il peut savoir si la communication a été écoutée ou non. Ceci étant grâce au théorème de non clonage où il est impossible de cloner des états quantiques inconnus.&lt;br /&gt;
&lt;br /&gt;
Ce principe permet de détecter facilement s&#039;il y a eu des intrusions durant la communication de la clé privée. En effet si un attaquant écoute il lui faut récupérer les photons envoyés par Alice mesurer la polarisation et renvoyer le photon à Bob. Pour mesurer la polarisation l&#039;attaquant doit appliquer, comme Bob, un filtre pour deviner la base qu&#039;Alice a envoyé. Ainsi cette intrusion a 1 chance sur 2 d&#039;introduire des incohérences dans les données d&#039;Alice et Bob en envoyant 1 fois sur 2 un mauvais photon. Par la suite Bob obtient donc 1 chance sur 4 d&#039;appliquer le bon filtre. Par analyses statistiques, Alice et Bob peuvent détecter de manière sure s&#039;il y a eu espionnage sur le canal quantique.&lt;br /&gt;
&lt;br /&gt;
==== Attaque de l&#039;homme du milieu ====&lt;br /&gt;
&lt;br /&gt;
Comme toute méthode d&#039;échange de clé privée, cette méthode reste vulnérable à une attaque de type &amp;quot;homme du milieu&amp;quot;. Il faut donc la combiner avec un mécanisme de certification afin de s&#039;assurer de l&#039;identité des protagonistes.&lt;br /&gt;
&lt;br /&gt;
== Ressources ==&lt;br /&gt;
&lt;br /&gt;
* Hamlin, N., &amp;amp; Webb, W. A. (2012). Representing Positive Integers as a Sum of Linear Recurrence Sequences, Fibonacci Quart. 50 (2012), no. 2, 99–105. Fibonacci Quart, 50(2), 99-105.&lt;br /&gt;
&lt;br /&gt;
* Moyer, N. T. (2010). A knapsack-type cryptographic system using algebraic number rings (Doctoral dissertation, Washington State University).&lt;/div&gt;</summary>
		<author><name>JulianaLeclaire</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8709</id>
		<title>Projets étudiants cryptographie et sécurité/Leclaire DeRoland Crypto Quantique</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8709"/>
		<updated>2016-03-18T12:45:32Z</updated>

		<summary type="html">&lt;p&gt;JulianaLeclaire : /* Problème du sac-à-dos */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Auteurs : Juliana Leclaire, Céline de Roland ===&lt;br /&gt;
&lt;br /&gt;
== La cryptographie et la cryptanalyse dans le contexte de l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
L&#039;informatique quantique se base sur la superposition de plusieurs états quantiques pour améliorer les capacités de calculs. Ce domaine pose un vrai problème dans la sécurité de l&#039;internet qui utilise des algorithmes de chiffrement asymétriques pour les connexions SSL/TLS, paiements en ligne. Les nouveaux ordinateurs avec leur rapidité de calcul va pouvoir casser ces différents algorithmes de chiffrement asymétriques présents dans le Web.&lt;br /&gt;
&lt;br /&gt;
Il existe différents acteurs qui se penchent sur ce domaine. Notamment, la NSA, Google qui tentent de construire leur propre ordinateur quantique, des scientifiques qui se réunissent pour trouver des solutions.&lt;br /&gt;
Dans cette page, nous allons nous demander en quoi l&#039;informatique quantique peut changer le Web d&#039;aujourd&#039;hui et comment faire face à cette arrivée ?&lt;br /&gt;
&lt;br /&gt;
=== Fonctionnement de l&#039;informatique quantique ===&lt;br /&gt;
&lt;br /&gt;
==== Qubit ====&lt;br /&gt;
&lt;br /&gt;
C&#039;est la plus petite unité de stockage de l&#039;information. Etant donné deux états de base &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;, un qubit non mesuré se trouve dans l&#039;état &amp;lt;math&amp;gt;\alpha \left|0\right\rangle + \beta \left|1\right\rangle&amp;lt;/math&amp;gt;, avec &amp;lt;math&amp;gt;\left|\alpha\right|^2 + \left|\beta\right|^2 = 1&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Lorsqu&#039;on mesure la valeur du qubit, on obtient soit &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; soit &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\left|\alpha\right|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et  &amp;lt;math&amp;gt;\left|\beta\right|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Théorème de non clonage ====&lt;br /&gt;
&lt;br /&gt;
Ce théorème, découvert en 1982 par Wootters, Zurek, et Dieks, consiste à dire qu&#039;il est impossible de recopier un qubit à l&#039;identique. La démonstration (par l&#039;absurde) repose sur le fait que pouvoir mettre le qubit B dans le même état que le qubit A implique que le qubit B soit déjà dans le même état que le qubit A.&lt;br /&gt;
On en déduit qu&#039;il est impossible de faire une opération de type copier/coller en informatique quantique.&lt;br /&gt;
&lt;br /&gt;
==== Téléportation quantique ====&lt;br /&gt;
&lt;br /&gt;
La téléportation quantique consiste à transférer l&#039;état du qubit A dans le qubit B. Il s&#039;agit donc cette fois d&#039;une opération de couper/coller.&lt;br /&gt;
L&#039;intrication quantique se produit lorsque deux qubits sont dépendants l&#039;un de l&#039;autre même s&#039;ils sont éloignés l&#039;un de l&#039;autre. Dans cet état, si on mesure l&#039;un des deux, alors la mesure du deuxième est déterminée.&lt;br /&gt;
Sans entrer dans la théorie physique sous jacente, nous pouvons dire qu&#039;un canal EPR permet de réaliser cette opération de couper/coller en transmettant une information entre deux ordinateurs quantiques.&lt;br /&gt;
&lt;br /&gt;
== Chiffrement asymétrique face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
=== Mise en danger de la sécurité du Web ===&lt;br /&gt;
&lt;br /&gt;
Les ordinateurs quantiques présentent une rapidité de calculs extrêmement plus rapide que les ordinateurs classiques. Ces ordinateurs n&#039;auraient aucune difficulté pour casser les codes de sécurité actuels reposant principalement sur des chiffrements à clé publique. Un chiffrement asymétrique chiffre avec sa clé publique et déchiffre avec sa clé privée. Si nous prenons l&#039;exemple de RSA, un chiffrement asymétrique, qui a la particularité d&#039;être couramment utilisé dans la sécurité du Web. RSA repose sur la génération de grands nombres premiers.&lt;br /&gt;
&lt;br /&gt;
* Initialisation : &lt;br /&gt;
** module &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; (grand nombre entier codé sur 2048 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;p, q&amp;lt;/math&amp;gt; : nombres premiers de même taille (codés sur 1024 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;\phi\left(N\right) = \left(p-1\right) * \left(q - 1\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd\left(e, \phi\left(N\right)\right) = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
** Choisir &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;ed \equiv 1 [\phi(N)]&amp;lt;/math&amp;gt; et donc &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; est l&#039;inverse modulaire de &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; avec &amp;lt;math&amp;gt;d = e^{-1} \left[\phi\left(N\right)\right]&amp;lt;/math&amp;gt;&lt;br /&gt;
** Clé publique : &amp;lt;math&amp;gt;pk\left(n, e\right)&amp;lt;/math&amp;gt;, Clé privée : &amp;lt;math&amp;gt;sk\left(d, p, q\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
* Chiffrement : &amp;lt;math&amp;gt;c = m^e \left[N\right]&amp;lt;/math&amp;gt;&lt;br /&gt;
* Déchiffrement : &amp;lt;math&amp;gt;m = c^d \left[N\right]&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La sécurité de RSA repose sur la difficulté à factoriser des grands nombres en nombres premiers. En effet avec &amp;lt;math&amp;gt;\left(N, e\right)&amp;lt;/math&amp;gt; il faudrait pouvoir retrouver &amp;lt;math&amp;gt;\left(d, p, q\right)&amp;lt;/math&amp;gt; où &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt; correspondant à un cassage total. D&#039;après le théorème de factorisation unique tout entier &amp;lt;math&amp;gt;n \ge 2&amp;lt;/math&amp;gt; admet une factorisation unique en produit de puissances de nombres entiers. Des algorithmes de factorisation ont été trouvés pour différentes tailles de module &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; mais pour pallier à ces attaques on augmente la longueur du module. De nos jours pour sécuriser le chiffrement il faut utiliser des modules strictement supérieur à 2048 bits. Cependant avec l&#039;informatique quantique il ne suffira plus d&#039;augmenter la taille du module car la puissance de calcul permettra de casser le chiffrement, peu importe la taille du module.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Exemple : &amp;lt;math&amp;gt;N=15&amp;lt;/math&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* Je choisis &amp;lt;math&amp;gt;x=7&amp;lt;/math&amp;gt;&lt;br /&gt;
* En calculant successivement les valeurs de &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; on trouve &amp;lt;math&amp;gt;7^{4} \equiv 1 [15]&amp;lt;/math&amp;gt;.&lt;br /&gt;
* &amp;lt;math&amp;gt;r=4&amp;lt;/math&amp;gt; est pair&lt;br /&gt;
* &amp;lt;math&amp;gt;pgcd(x^{\frac{r}{2}}+1,15) = 5&amp;lt;/math&amp;gt;. Donc &amp;lt;math&amp;gt;P = 5&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;Q = pgcd(x^{\frac{r}{2}}-1,15) = 3&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Chiffrement symétrique face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
=== Mise en danger de la sécurité ===&lt;br /&gt;
&lt;br /&gt;
Si les ordinateurs quantiques présentent une rapidité de calcul permettant d&#039;effectuer des factorisations impossibles pour un ordinateur classique, il nous semble logique qu&#039;ils soient également performants pour effectuer des attaques de type force brute sur des messages chiffrés par une clé privée qui aurait été transmise par un moyen plus sûr que RSA.&lt;br /&gt;
 &lt;br /&gt;
Un ordinateur quantique pourrait réaliser le déchiffrement avec toutes les clés possibles en parallèle. Ce qui permettrait de cryptanalyser le message en une seule opération. Le principe se base sur la superposition quantique. On superposerait toutes les clés possibles et on déchiffrerait. On obtiendrait alors une superposition de résultats. Le point le plus difficile est de trouver le résultat correct à partir de la superposition obtenue. En effet, le principe selon lequel mesurer une valeur modifie cette valeur fait qu&#039;en observant une superposition, on obtient un seul état aléatoire. Une solution à ce problème a été trouvé par Lov Grover en &amp;lt;math&amp;gt;O\left(\sqrt{n}\right)&amp;lt;/math&amp;gt; étapes.&lt;br /&gt;
&lt;br /&gt;
== Résistances aux attaques quantiques ==&lt;br /&gt;
&lt;br /&gt;
=== Chiffrement asyémétrique ===&lt;br /&gt;
&lt;br /&gt;
Depuis 2006, une conférence internationnale se produit chaque année nommée &amp;quot;Post Quantum Cryptography&amp;quot; dans l&#039;intention de trouver des algorithmes résistants aux ordinateurs quantiques. Nathan Hamlin et William Webb, des mathématiciens, ont présenté récemment un algorithme de chiffrement asymétrique possiblement capable de faire face aux attaques quantiques. Cet algorithme part de l&#039;ancien chiffrement de Merkle-Hellman qui se base sur le problème du sac à dos nommé &amp;quot;Knapsack code&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
==== Problème du sac-à-dos ====&lt;br /&gt;
&lt;br /&gt;
Etant donné un sac avec une capacité &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; et plusieurs objets de poids différents. Le problème du sac-à-dos consiste à trouver la suite d&#039;objets qui entre dans le sac et qui maximise sa capacité. En partant d&#039;un n-uplet &amp;lt;math&amp;gt;\left(a_1, a_2, ..., a_n\right) \in N^n&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;S \in N&amp;lt;/math&amp;gt;, il faut trouver un n-uplet binaire &amp;lt;math&amp;gt;\left(x_1, x_2, ..., x_n\right) \in \left\{0,1\right\}^n&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;S = \sum_{i=1}^{n} \left(a_{i}*x_{i}\right) &amp;lt;/math&amp;gt;. La somme &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; des poids des objets choisi ne doit pas dépasser la capacité du sac à dos.&lt;br /&gt;
&lt;br /&gt;
==== Chiffrement de Merkle-Hellman ====&lt;br /&gt;
&lt;br /&gt;
Cet algorithme de chiffrement à clé publique repose sur la complexité algorithmique du problème du sac-à-dos et utilise une suite de poids super-croissante pour le secret et une suite non super-croissante pour la clé publique. Si les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt; n&#039;ont pas de propriétés particulières, la recherche du message codé en binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt; est un problème difficile. Il n&#039;existe pas d&#039;algorithme polynomial pour le résoudre. Pour pouvoir retrouver facilement ce n-uplet une propriété super-croissante est utilisé sur les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt;. Un n-uplet b est super-croissant si &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\forall i \in [2,n] b_{i} &amp;gt; \sum_{j=1}^{i-1} {b_{j}}&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ainsi en utilisant un algorithme glouton nous pouvons retrouver le n-uplet binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt;. L&#039;objet le plus lourd est dans le sac si le poids du sac est supérieur au poids de celui-ci. La propriété super-croissante assure que la somme des poids des autres objets sera toujours inférieur au poids de l&#039;objet le plus lourd. L&#039;algorithme est le suivant :&lt;br /&gt;
&lt;br /&gt;
  Pour i de n à 1 faire&lt;br /&gt;
    Si &amp;lt;math&amp;gt;b_{i} \le S&amp;lt;/math&amp;gt; alors&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i}  = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
    Sinon&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i} = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
    &amp;lt;math&amp;gt;S = S - x_{i} * b_{i}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Par exemple en prenant la suite des puissances de 2 comme suite super-croissante  avec : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = \left\{ 1,4,8 \right\}, b = \left\{ 1,2,4,8 \right\}, S = 13 \left(1+4+8\right), n = 4&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 4 : 8 \le 13 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_4 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 3 : 4 \le 5 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_3 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 2 : 2 \le 1 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    non donc &amp;lt;math&amp;gt;x_2 = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 1 : 1 \le 1 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_1 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  =&amp;gt; &amp;lt;math&amp;gt;m = \left\{ 1,0,1,1 \right\}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour chiffrer un n-uplet binaire &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;, l&#039;idée de Merkle et Hellman est de &amp;quot;tordre&amp;quot; les &amp;lt;math&amp;gt;b_{i}&amp;lt;/math&amp;gt; pour obtenir un n-uplet qui n&#039;est plus super-croissant. On choisit un nombre &amp;lt;math&amp;gt;u &amp;gt; \sum_{i=1}^{n} {b_{i}}&amp;lt;/math&amp;gt;, un entier &amp;lt;math&amp;gt;v \in N&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd\left(u,v\right) = 1&amp;lt;/math&amp;gt;. Ce qui donne &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; inversible dans &amp;lt;math&amp;gt;Z/uZ&amp;lt;/math&amp;gt;. On prend &amp;lt;math&amp;gt;w = v^{-1} \in Z/uZ&amp;lt;/math&amp;gt;. On calcule ensuite le n-uplet &amp;lt;math&amp;gt;a = \left(a_1, ..., a_n\right)&amp;lt;/math&amp;gt; tel que pour tout &amp;lt;math&amp;gt;i \in [1,n]&amp;lt;/math&amp;gt; on a : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = a * b_i (mod u)&amp;lt;/math&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
Le n-uplet &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; détermine la clé public tandis que &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt; sont gardés secrets. &amp;lt;br/&amp;gt;&lt;br /&gt;
Pour envoyer le message m à Bob, Alice va, à partir de l&#039;écriture de m en binaire, calculer la somme : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;c = \sum_{i=1}^{n} {m_i * a_i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
qu&#039;elle va envoyer à Bob. Bob pour déchiffrer va devoir procéder à plusieurs étapes : &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt;c = \sum_{i=1}^{n} {m_i * a_i}&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * a_i * w} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * a_i * v^{-1}} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * v * b_i * v^{-1}} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * b_i} [u]&amp;lt;/math&amp;gt;                      =&amp;gt; Comme &amp;lt;math&amp;gt; \sum_{i=1}^{n} {m_i * b_i} &amp;lt; \sum_{i=1}^{n} {b_i}&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt; u &amp;gt; \sum_{i=1}^{n} {b_i}&amp;lt;/math&amp;gt; le modulo &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; peut s&#039;enlever&lt;br /&gt;
* &amp;lt;math&amp;gt;= \sum_{i=1}^{n} {m_i * b_i}&amp;lt;/math&amp;gt;                           =&amp;gt; Comme &amp;lt;math&amp;gt;b_i&amp;lt;/math&amp;gt; est super-croissant Bob peut facilement retrouver &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Nouveau chiffrement de Hamlin-Webb ====&lt;br /&gt;
&lt;br /&gt;
Le chiffrement de Merkle et Hellman a été abandonné à la suite des découvertes de Shamir qui a découvert une attaque permettant de retrouver le message secret en utilisant un algorithme de la réduction des réseaux. Nathan Hamlin et William Webb reprennent cet algorithme en le renforçant par un changement de représentation des entiers. Ils ont prouvé q&#039;un entier pouvait être représenté de manière unique avec des suites récurrentes. Le secret &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; n&#039;est alors plus modélisé en binaire mais en une suite récurrente plus complexe à craquer.&lt;br /&gt;
&lt;br /&gt;
===== Représentation du message =====&lt;br /&gt;
La représentation d&#039;un nombre &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; en une suite récurrente &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt; se fait en utilisant une suite augmentée &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; de &amp;lt;math&amp;gt;1 \le j \le 10&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;0 \le i \le n&amp;lt;/math&amp;gt; donné par : &amp;lt;br/&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{1,i}= u_i&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{2,i}= u_i + u_{i-2}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{3,i}= u_i + u_{i-2} + u_{i-3}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{4,i}= u_i + u_{i-2} + 2u_{i-3}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{5,i}= u_i + u_{i-2} +2u_{i-3} + u_{i-4}&amp;lt;/math&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{10,i}= u_i + u_{i-2} +2u_{i-3} + 6u_{i-4}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le suite &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; correspond au blocs de chiffre autorisés. Dans l&#039;exemple &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; se calcule dans des groupes de taille 10 mais ce nombre peut varier. La suite &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; se calcule en utilisant un algorithme glouton sur &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; où l&#039;on remplace la somme en une expression dans la suite &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
Le message secret &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; est représenté par : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; M = \sum_{i=0}^{n-1} {d_i * u_i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
avec &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt; calculé grâce à &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
où les &amp;lt;math&amp;gt;d_i&amp;lt;/math&amp;gt; sont des blocs de chiffre lexicographiquement inférieur à &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Chiffrement symétrique quantique ===&lt;br /&gt;
&lt;br /&gt;
==== Photons polarisés ====&lt;br /&gt;
&lt;br /&gt;
Les photons sont des particules qui composent la lumière. Ils sont composés d&#039;un champ électrique et d&#039;un champ magnétique. Une lumière non-polarisée se caractérise par une différence d&#039;orientation du champ électrique suivant les photons. Ainsi la polarisation consiste, grâce à un polarisateur, d&#039;obtenir des photons avec un champ électrique orienté de manière identique. Les filtres polarisants permettent d&#039;appliquer un angle d&#039;orientation sur les photons afin :&lt;br /&gt;
* de récupérer les photons polarisés parallèlement par rapport à cet angle&lt;br /&gt;
* d&#039;éliminer les photons polarisés perpendiculairement&lt;br /&gt;
* de récupérer les photons polarisés intermédiaires avec une probabilité de &amp;lt;math&amp;gt;\cos\left(\alpha\right)&amp;lt;/math&amp;gt; en les réinitialisant avec une polarisation égale à l&#039;angle d&#039;orientation du filtre.&lt;br /&gt;
&lt;br /&gt;
Du fait de la transformation de polarisation il est impossible de connaître l&#039;information sur les polarisations précédentes du photons.&lt;br /&gt;
&lt;br /&gt;
==== Distribution des clés ====&lt;br /&gt;
&lt;br /&gt;
Le chiffrement quantique offre un moyen sécurisé d’échanger des clés privées pour réaliser des chiffrements symétriques. Cette distribution s’appuie sur l’envoi de photons polarisés par fibre optique. Les personnes s&#039;échangeant les clés doivent avoir accès à un canal quantique et un canal classique. Le principe est le suivant :&lt;br /&gt;
* Alice envoie par le canal quantique une suite de photons polarisés aléatoirement.&lt;br /&gt;
* Bob applique un filtre de polarisation qui lui donne 1 chance sur 2 (et 1 chance sur 4 s&#039;il y a eu un espion) d&#039;appliquer le bon filtre et les renvoit à Alice.&lt;br /&gt;
* Alice et Bob s&#039;échangent par le canal classique leur choix des axes de polarisation éliminant ainsi les erreurs.&lt;br /&gt;
* Alice communique une partie de ses résultats.&lt;br /&gt;
* Maintenant que Bob connait les axes qu&#039;Alice a appliqué et les résultats il peut savoir si la communication a été écoutée ou non. Ceci étant grâce au théorème de non clonage où il est impossible de cloner des états quantiques inconnus.&lt;br /&gt;
&lt;br /&gt;
Ce principe permet de détecter facilement s&#039;il y a eu des intrusions durant la communication de la clé privée. En effet si un attaquant écoute il lui faut récupérer les photons envoyés par Alice mesurer la polarisation et renvoyer le photon à Bob. Pour mesurer la polarisation l&#039;attaquant doit appliquer, comme Bob, un filtre pour deviner la base qu&#039;Alice a envoyé. Ainsi cette intrusion a 1 chance sur 2 d&#039;introduire des incohérences dans les données d&#039;Alice et Bob en envoyant 1 fois sur 2 un mauvais photon. Par la suite Bob obtient donc 1 chance sur 4 d&#039;appliquer le bon filtre. Par analyses statistiques, Alice et Bob peuvent détecter de manière sure s&#039;il y a eu espionnage sur le canal quantique.&lt;br /&gt;
&lt;br /&gt;
==== Attaque de l&#039;homme du milieu ====&lt;br /&gt;
&lt;br /&gt;
Comme toute méthode d&#039;échange de clé privée, cette méthode reste vulnérable à une attaque de type &amp;quot;homme du milieu&amp;quot;. Il faut donc la combiner avec un mécanisme de certification afin de s&#039;assurer de l&#039;identité des protagonistes.&lt;br /&gt;
&lt;br /&gt;
== Ressources ==&lt;br /&gt;
&lt;br /&gt;
* Hamlin, N., &amp;amp; Webb, W. A. (2012). Representing Positive Integers as a Sum of Linear Recurrence Sequences, Fibonacci Quart. 50 (2012), no. 2, 99–105. Fibonacci Quart, 50(2), 99-105.&lt;br /&gt;
&lt;br /&gt;
* Moyer, N. T. (2010). A knapsack-type cryptographic system using algebraic number rings (Doctoral dissertation, Washington State University).&lt;/div&gt;</summary>
		<author><name>JulianaLeclaire</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8708</id>
		<title>Projets étudiants cryptographie et sécurité/Leclaire DeRoland Crypto Quantique</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8708"/>
		<updated>2016-03-18T12:44:40Z</updated>

		<summary type="html">&lt;p&gt;JulianaLeclaire : /* Chiffrement de Merkle-Hellman */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Auteurs : Juliana Leclaire, Céline de Roland ===&lt;br /&gt;
&lt;br /&gt;
== La cryptographie et la cryptanalyse dans le contexte de l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
L&#039;informatique quantique se base sur la superposition de plusieurs états quantiques pour améliorer les capacités de calculs. Ce domaine pose un vrai problème dans la sécurité de l&#039;internet qui utilise des algorithmes de chiffrement asymétriques pour les connexions SSL/TLS, paiements en ligne. Les nouveaux ordinateurs avec leur rapidité de calcul va pouvoir casser ces différents algorithmes de chiffrement asymétriques présents dans le Web.&lt;br /&gt;
&lt;br /&gt;
Il existe différents acteurs qui se penchent sur ce domaine. Notamment, la NSA, Google qui tentent de construire leur propre ordinateur quantique, des scientifiques qui se réunissent pour trouver des solutions.&lt;br /&gt;
Dans cette page, nous allons nous demander en quoi l&#039;informatique quantique peut changer le Web d&#039;aujourd&#039;hui et comment faire face à cette arrivée ?&lt;br /&gt;
&lt;br /&gt;
=== Fonctionnement de l&#039;informatique quantique ===&lt;br /&gt;
&lt;br /&gt;
==== Qubit ====&lt;br /&gt;
&lt;br /&gt;
C&#039;est la plus petite unité de stockage de l&#039;information. Etant donné deux états de base &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;, un qubit non mesuré se trouve dans l&#039;état &amp;lt;math&amp;gt;\alpha \left|0\right\rangle + \beta \left|1\right\rangle&amp;lt;/math&amp;gt;, avec &amp;lt;math&amp;gt;\left|\alpha\right|^2 + \left|\beta\right|^2 = 1&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Lorsqu&#039;on mesure la valeur du qubit, on obtient soit &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; soit &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\left|\alpha\right|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et  &amp;lt;math&amp;gt;\left|\beta\right|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Théorème de non clonage ====&lt;br /&gt;
&lt;br /&gt;
Ce théorème, découvert en 1982 par Wootters, Zurek, et Dieks, consiste à dire qu&#039;il est impossible de recopier un qubit à l&#039;identique. La démonstration (par l&#039;absurde) repose sur le fait que pouvoir mettre le qubit B dans le même état que le qubit A implique que le qubit B soit déjà dans le même état que le qubit A.&lt;br /&gt;
On en déduit qu&#039;il est impossible de faire une opération de type copier/coller en informatique quantique.&lt;br /&gt;
&lt;br /&gt;
==== Téléportation quantique ====&lt;br /&gt;
&lt;br /&gt;
La téléportation quantique consiste à transférer l&#039;état du qubit A dans le qubit B. Il s&#039;agit donc cette fois d&#039;une opération de couper/coller.&lt;br /&gt;
L&#039;intrication quantique se produit lorsque deux qubits sont dépendants l&#039;un de l&#039;autre même s&#039;ils sont éloignés l&#039;un de l&#039;autre. Dans cet état, si on mesure l&#039;un des deux, alors la mesure du deuxième est déterminée.&lt;br /&gt;
Sans entrer dans la théorie physique sous jacente, nous pouvons dire qu&#039;un canal EPR permet de réaliser cette opération de couper/coller en transmettant une information entre deux ordinateurs quantiques.&lt;br /&gt;
&lt;br /&gt;
== Chiffrement asymétrique face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
=== Mise en danger de la sécurité du Web ===&lt;br /&gt;
&lt;br /&gt;
Les ordinateurs quantiques présentent une rapidité de calculs extrêmement plus rapide que les ordinateurs classiques. Ces ordinateurs n&#039;auraient aucune difficulté pour casser les codes de sécurité actuels reposant principalement sur des chiffrements à clé publique. Un chiffrement asymétrique chiffre avec sa clé publique et déchiffre avec sa clé privée. Si nous prenons l&#039;exemple de RSA, un chiffrement asymétrique, qui a la particularité d&#039;être couramment utilisé dans la sécurité du Web. RSA repose sur la génération de grands nombres premiers.&lt;br /&gt;
&lt;br /&gt;
* Initialisation : &lt;br /&gt;
** module &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; (grand nombre entier codé sur 2048 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;p, q&amp;lt;/math&amp;gt; : nombres premiers de même taille (codés sur 1024 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;\phi\left(N\right) = \left(p-1\right) * \left(q - 1\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd\left(e, \phi\left(N\right)\right) = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
** Choisir &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;ed \equiv 1 [\phi(N)]&amp;lt;/math&amp;gt; et donc &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; est l&#039;inverse modulaire de &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; avec &amp;lt;math&amp;gt;d = e^{-1} \left[\phi\left(N\right)\right]&amp;lt;/math&amp;gt;&lt;br /&gt;
** Clé publique : &amp;lt;math&amp;gt;pk\left(n, e\right)&amp;lt;/math&amp;gt;, Clé privée : &amp;lt;math&amp;gt;sk\left(d, p, q\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
* Chiffrement : &amp;lt;math&amp;gt;c = m^e \left[N\right]&amp;lt;/math&amp;gt;&lt;br /&gt;
* Déchiffrement : &amp;lt;math&amp;gt;m = c^d \left[N\right]&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La sécurité de RSA repose sur la difficulté à factoriser des grands nombres en nombres premiers. En effet avec &amp;lt;math&amp;gt;\left(N, e\right)&amp;lt;/math&amp;gt; il faudrait pouvoir retrouver &amp;lt;math&amp;gt;\left(d, p, q\right)&amp;lt;/math&amp;gt; où &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt; correspondant à un cassage total. D&#039;après le théorème de factorisation unique tout entier &amp;lt;math&amp;gt;n \ge 2&amp;lt;/math&amp;gt; admet une factorisation unique en produit de puissances de nombres entiers. Des algorithmes de factorisation ont été trouvés pour différentes tailles de module &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; mais pour pallier à ces attaques on augmente la longueur du module. De nos jours pour sécuriser le chiffrement il faut utiliser des modules strictement supérieur à 2048 bits. Cependant avec l&#039;informatique quantique il ne suffira plus d&#039;augmenter la taille du module car la puissance de calcul permettra de casser le chiffrement, peu importe la taille du module.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Exemple : &amp;lt;math&amp;gt;N=15&amp;lt;/math&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* Je choisis &amp;lt;math&amp;gt;x=7&amp;lt;/math&amp;gt;&lt;br /&gt;
* En calculant successivement les valeurs de &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; on trouve &amp;lt;math&amp;gt;7^{4} \equiv 1 [15]&amp;lt;/math&amp;gt;.&lt;br /&gt;
* &amp;lt;math&amp;gt;r=4&amp;lt;/math&amp;gt; est pair&lt;br /&gt;
* &amp;lt;math&amp;gt;pgcd(x^{\frac{r}{2}}+1,15) = 5&amp;lt;/math&amp;gt;. Donc &amp;lt;math&amp;gt;P = 5&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;Q = pgcd(x^{\frac{r}{2}}-1,15) = 3&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Chiffrement symétrique face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
=== Mise en danger de la sécurité ===&lt;br /&gt;
&lt;br /&gt;
Si les ordinateurs quantiques présentent une rapidité de calcul permettant d&#039;effectuer des factorisations impossibles pour un ordinateur classique, il nous semble logique qu&#039;ils soient également performants pour effectuer des attaques de type force brute sur des messages chiffrés par une clé privée qui aurait été transmise par un moyen plus sûr que RSA.&lt;br /&gt;
 &lt;br /&gt;
Un ordinateur quantique pourrait réaliser le déchiffrement avec toutes les clés possibles en parallèle. Ce qui permettrait de cryptanalyser le message en une seule opération. Le principe se base sur la superposition quantique. On superposerait toutes les clés possibles et on déchiffrerait. On obtiendrait alors une superposition de résultats. Le point le plus difficile est de trouver le résultat correct à partir de la superposition obtenue. En effet, le principe selon lequel mesurer une valeur modifie cette valeur fait qu&#039;en observant une superposition, on obtient un seul état aléatoire. Une solution à ce problème a été trouvé par Lov Grover en &amp;lt;math&amp;gt;O\left(\sqrt{n}\right)&amp;lt;/math&amp;gt; étapes.&lt;br /&gt;
&lt;br /&gt;
== Résistances aux attaques quantiques ==&lt;br /&gt;
&lt;br /&gt;
=== Chiffrement asyémétrique ===&lt;br /&gt;
&lt;br /&gt;
Depuis 2006, une conférence internationnale se produit chaque année nommée &amp;quot;Post Quantum Cryptography&amp;quot; dans l&#039;intention de trouver des algorithmes résistants aux ordinateurs quantiques. Nathan Hamlin et William Webb, des mathématiciens, ont présenté récemment un algorithme de chiffrement asymétrique possiblement capable de faire face aux attaques quantiques. Cet algorithme part de l&#039;ancien chiffrement de Merkle-Hellman qui se base sur le problème du sac à dos nommé &amp;quot;Knapsack code&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
==== Problème du sac-à-dos ====&lt;br /&gt;
&lt;br /&gt;
Etant donné un sac avec une capacité &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; et plusieurs objets de poids différents. Le problème du sac-à-dos consiste à trouver la suite d&#039;objets qui entre dans le sac et qui maximise sa capacité. En partant d&#039;un n-uplet &amp;lt;math&amp;gt;\left(a_1, a_2, ..., a_n\right) \in N^n&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;S \in N&amp;lt;/math&amp;gt;, il faut trouver un n-uplet binaire &amp;lt;math&amp;gt;\left(x_1, x_2, ..., x_n\right) \in \left\{0,1\right\}^n&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;S = \sum_{i=1}^{n} \left(a_{i}*x_{i}\right) &amp;lt;/math&amp;gt;. La somme &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; des poids des objets choisi ne doit pas dépasser la capacité du sac à dos. Pour résoudre ce problème il n&#039;existe pas d&#039;algorithme avec une compléxité polynomial.&lt;br /&gt;
&lt;br /&gt;
==== Chiffrement de Merkle-Hellman ====&lt;br /&gt;
&lt;br /&gt;
Cet algorithme de chiffrement à clé publique repose sur la complexité algorithmique du problème du sac-à-dos et utilise une suite de poids super-croissante pour le secret et une suite non super-croissante pour la clé publique. Si les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt; n&#039;ont pas de propriétés particulières, la recherche du message codé en binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt; est un problème difficile. Il n&#039;existe pas d&#039;algorithme polynomial pour le résoudre. Pour pouvoir retrouver facilement ce n-uplet une propriété super-croissante est utilisé sur les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt;. Un n-uplet b est super-croissant si &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\forall i \in [2,n] b_{i} &amp;gt; \sum_{j=1}^{i-1} {b_{j}}&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ainsi en utilisant un algorithme glouton nous pouvons retrouver le n-uplet binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt;. L&#039;objet le plus lourd est dans le sac si le poids du sac est supérieur au poids de celui-ci. La propriété super-croissante assure que la somme des poids des autres objets sera toujours inférieur au poids de l&#039;objet le plus lourd. L&#039;algorithme est le suivant :&lt;br /&gt;
&lt;br /&gt;
  Pour i de n à 1 faire&lt;br /&gt;
    Si &amp;lt;math&amp;gt;b_{i} \le S&amp;lt;/math&amp;gt; alors&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i}  = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
    Sinon&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i} = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
    &amp;lt;math&amp;gt;S = S - x_{i} * b_{i}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Par exemple en prenant la suite des puissances de 2 comme suite super-croissante  avec : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = \left\{ 1,4,8 \right\}, b = \left\{ 1,2,4,8 \right\}, S = 13 \left(1+4+8\right), n = 4&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 4 : 8 \le 13 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_4 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 3 : 4 \le 5 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_3 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 2 : 2 \le 1 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    non donc &amp;lt;math&amp;gt;x_2 = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 1 : 1 \le 1 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_1 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  =&amp;gt; &amp;lt;math&amp;gt;m = \left\{ 1,0,1,1 \right\}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour chiffrer un n-uplet binaire &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;, l&#039;idée de Merkle et Hellman est de &amp;quot;tordre&amp;quot; les &amp;lt;math&amp;gt;b_{i}&amp;lt;/math&amp;gt; pour obtenir un n-uplet qui n&#039;est plus super-croissant. On choisit un nombre &amp;lt;math&amp;gt;u &amp;gt; \sum_{i=1}^{n} {b_{i}}&amp;lt;/math&amp;gt;, un entier &amp;lt;math&amp;gt;v \in N&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd\left(u,v\right) = 1&amp;lt;/math&amp;gt;. Ce qui donne &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; inversible dans &amp;lt;math&amp;gt;Z/uZ&amp;lt;/math&amp;gt;. On prend &amp;lt;math&amp;gt;w = v^{-1} \in Z/uZ&amp;lt;/math&amp;gt;. On calcule ensuite le n-uplet &amp;lt;math&amp;gt;a = \left(a_1, ..., a_n\right)&amp;lt;/math&amp;gt; tel que pour tout &amp;lt;math&amp;gt;i \in [1,n]&amp;lt;/math&amp;gt; on a : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = a * b_i (mod u)&amp;lt;/math&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
Le n-uplet &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; détermine la clé public tandis que &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt; sont gardés secrets. &amp;lt;br/&amp;gt;&lt;br /&gt;
Pour envoyer le message m à Bob, Alice va, à partir de l&#039;écriture de m en binaire, calculer la somme : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;c = \sum_{i=1}^{n} {m_i * a_i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
qu&#039;elle va envoyer à Bob. Bob pour déchiffrer va devoir procéder à plusieurs étapes : &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt;c = \sum_{i=1}^{n} {m_i * a_i}&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * a_i * w} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * a_i * v^{-1}} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * v * b_i * v^{-1}} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * b_i} [u]&amp;lt;/math&amp;gt;                      =&amp;gt; Comme &amp;lt;math&amp;gt; \sum_{i=1}^{n} {m_i * b_i} &amp;lt; \sum_{i=1}^{n} {b_i}&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt; u &amp;gt; \sum_{i=1}^{n} {b_i}&amp;lt;/math&amp;gt; le modulo &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; peut s&#039;enlever&lt;br /&gt;
* &amp;lt;math&amp;gt;= \sum_{i=1}^{n} {m_i * b_i}&amp;lt;/math&amp;gt;                           =&amp;gt; Comme &amp;lt;math&amp;gt;b_i&amp;lt;/math&amp;gt; est super-croissant Bob peut facilement retrouver &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Nouveau chiffrement de Hamlin-Webb ====&lt;br /&gt;
&lt;br /&gt;
Le chiffrement de Merkle et Hellman a été abandonné à la suite des découvertes de Shamir qui a découvert une attaque permettant de retrouver le message secret en utilisant un algorithme de la réduction des réseaux. Nathan Hamlin et William Webb reprennent cet algorithme en le renforçant par un changement de représentation des entiers. Ils ont prouvé q&#039;un entier pouvait être représenté de manière unique avec des suites récurrentes. Le secret &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; n&#039;est alors plus modélisé en binaire mais en une suite récurrente plus complexe à craquer.&lt;br /&gt;
&lt;br /&gt;
===== Représentation du message =====&lt;br /&gt;
La représentation d&#039;un nombre &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; en une suite récurrente &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt; se fait en utilisant une suite augmentée &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; de &amp;lt;math&amp;gt;1 \le j \le 10&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;0 \le i \le n&amp;lt;/math&amp;gt; donné par : &amp;lt;br/&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{1,i}= u_i&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{2,i}= u_i + u_{i-2}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{3,i}= u_i + u_{i-2} + u_{i-3}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{4,i}= u_i + u_{i-2} + 2u_{i-3}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{5,i}= u_i + u_{i-2} +2u_{i-3} + u_{i-4}&amp;lt;/math&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{10,i}= u_i + u_{i-2} +2u_{i-3} + 6u_{i-4}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le suite &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; correspond au blocs de chiffre autorisés. Dans l&#039;exemple &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; se calcule dans des groupes de taille 10 mais ce nombre peut varier. La suite &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; se calcule en utilisant un algorithme glouton sur &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; où l&#039;on remplace la somme en une expression dans la suite &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
Le message secret &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; est représenté par : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; M = \sum_{i=0}^{n-1} {d_i * u_i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
avec &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt; calculé grâce à &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
où les &amp;lt;math&amp;gt;d_i&amp;lt;/math&amp;gt; sont des blocs de chiffre lexicographiquement inférieur à &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Chiffrement symétrique quantique ===&lt;br /&gt;
&lt;br /&gt;
==== Photons polarisés ====&lt;br /&gt;
&lt;br /&gt;
Les photons sont des particules qui composent la lumière. Ils sont composés d&#039;un champ électrique et d&#039;un champ magnétique. Une lumière non-polarisée se caractérise par une différence d&#039;orientation du champ électrique suivant les photons. Ainsi la polarisation consiste, grâce à un polarisateur, d&#039;obtenir des photons avec un champ électrique orienté de manière identique. Les filtres polarisants permettent d&#039;appliquer un angle d&#039;orientation sur les photons afin :&lt;br /&gt;
* de récupérer les photons polarisés parallèlement par rapport à cet angle&lt;br /&gt;
* d&#039;éliminer les photons polarisés perpendiculairement&lt;br /&gt;
* de récupérer les photons polarisés intermédiaires avec une probabilité de &amp;lt;math&amp;gt;\cos\left(\alpha\right)&amp;lt;/math&amp;gt; en les réinitialisant avec une polarisation égale à l&#039;angle d&#039;orientation du filtre.&lt;br /&gt;
&lt;br /&gt;
Du fait de la transformation de polarisation il est impossible de connaître l&#039;information sur les polarisations précédentes du photons.&lt;br /&gt;
&lt;br /&gt;
==== Distribution des clés ====&lt;br /&gt;
&lt;br /&gt;
Le chiffrement quantique offre un moyen sécurisé d’échanger des clés privées pour réaliser des chiffrements symétriques. Cette distribution s’appuie sur l’envoi de photons polarisés par fibre optique. Les personnes s&#039;échangeant les clés doivent avoir accès à un canal quantique et un canal classique. Le principe est le suivant :&lt;br /&gt;
* Alice envoie par le canal quantique une suite de photons polarisés aléatoirement.&lt;br /&gt;
* Bob applique un filtre de polarisation qui lui donne 1 chance sur 2 (et 1 chance sur 4 s&#039;il y a eu un espion) d&#039;appliquer le bon filtre et les renvoit à Alice.&lt;br /&gt;
* Alice et Bob s&#039;échangent par le canal classique leur choix des axes de polarisation éliminant ainsi les erreurs.&lt;br /&gt;
* Alice communique une partie de ses résultats.&lt;br /&gt;
* Maintenant que Bob connait les axes qu&#039;Alice a appliqué et les résultats il peut savoir si la communication a été écoutée ou non. Ceci étant grâce au théorème de non clonage où il est impossible de cloner des états quantiques inconnus.&lt;br /&gt;
&lt;br /&gt;
Ce principe permet de détecter facilement s&#039;il y a eu des intrusions durant la communication de la clé privée. En effet si un attaquant écoute il lui faut récupérer les photons envoyés par Alice mesurer la polarisation et renvoyer le photon à Bob. Pour mesurer la polarisation l&#039;attaquant doit appliquer, comme Bob, un filtre pour deviner la base qu&#039;Alice a envoyé. Ainsi cette intrusion a 1 chance sur 2 d&#039;introduire des incohérences dans les données d&#039;Alice et Bob en envoyant 1 fois sur 2 un mauvais photon. Par la suite Bob obtient donc 1 chance sur 4 d&#039;appliquer le bon filtre. Par analyses statistiques, Alice et Bob peuvent détecter de manière sure s&#039;il y a eu espionnage sur le canal quantique.&lt;br /&gt;
&lt;br /&gt;
==== Attaque de l&#039;homme du milieu ====&lt;br /&gt;
&lt;br /&gt;
Comme toute méthode d&#039;échange de clé privée, cette méthode reste vulnérable à une attaque de type &amp;quot;homme du milieu&amp;quot;. Il faut donc la combiner avec un mécanisme de certification afin de s&#039;assurer de l&#039;identité des protagonistes.&lt;br /&gt;
&lt;br /&gt;
== Ressources ==&lt;br /&gt;
&lt;br /&gt;
* Hamlin, N., &amp;amp; Webb, W. A. (2012). Representing Positive Integers as a Sum of Linear Recurrence Sequences, Fibonacci Quart. 50 (2012), no. 2, 99–105. Fibonacci Quart, 50(2), 99-105.&lt;br /&gt;
&lt;br /&gt;
* Moyer, N. T. (2010). A knapsack-type cryptographic system using algebraic number rings (Doctoral dissertation, Washington State University).&lt;/div&gt;</summary>
		<author><name>JulianaLeclaire</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8707</id>
		<title>Projets étudiants cryptographie et sécurité/Leclaire DeRoland Crypto Quantique</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8707"/>
		<updated>2016-03-18T12:44:15Z</updated>

		<summary type="html">&lt;p&gt;JulianaLeclaire : /* Chiffrement de Merkle-Hellman */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Auteurs : Juliana Leclaire, Céline de Roland ===&lt;br /&gt;
&lt;br /&gt;
== La cryptographie et la cryptanalyse dans le contexte de l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
L&#039;informatique quantique se base sur la superposition de plusieurs états quantiques pour améliorer les capacités de calculs. Ce domaine pose un vrai problème dans la sécurité de l&#039;internet qui utilise des algorithmes de chiffrement asymétriques pour les connexions SSL/TLS, paiements en ligne. Les nouveaux ordinateurs avec leur rapidité de calcul va pouvoir casser ces différents algorithmes de chiffrement asymétriques présents dans le Web.&lt;br /&gt;
&lt;br /&gt;
Il existe différents acteurs qui se penchent sur ce domaine. Notamment, la NSA, Google qui tentent de construire leur propre ordinateur quantique, des scientifiques qui se réunissent pour trouver des solutions.&lt;br /&gt;
Dans cette page, nous allons nous demander en quoi l&#039;informatique quantique peut changer le Web d&#039;aujourd&#039;hui et comment faire face à cette arrivée ?&lt;br /&gt;
&lt;br /&gt;
=== Fonctionnement de l&#039;informatique quantique ===&lt;br /&gt;
&lt;br /&gt;
==== Qubit ====&lt;br /&gt;
&lt;br /&gt;
C&#039;est la plus petite unité de stockage de l&#039;information. Etant donné deux états de base &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;, un qubit non mesuré se trouve dans l&#039;état &amp;lt;math&amp;gt;\alpha \left|0\right\rangle + \beta \left|1\right\rangle&amp;lt;/math&amp;gt;, avec &amp;lt;math&amp;gt;\left|\alpha\right|^2 + \left|\beta\right|^2 = 1&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Lorsqu&#039;on mesure la valeur du qubit, on obtient soit &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; soit &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\left|\alpha\right|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et  &amp;lt;math&amp;gt;\left|\beta\right|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Théorème de non clonage ====&lt;br /&gt;
&lt;br /&gt;
Ce théorème, découvert en 1982 par Wootters, Zurek, et Dieks, consiste à dire qu&#039;il est impossible de recopier un qubit à l&#039;identique. La démonstration (par l&#039;absurde) repose sur le fait que pouvoir mettre le qubit B dans le même état que le qubit A implique que le qubit B soit déjà dans le même état que le qubit A.&lt;br /&gt;
On en déduit qu&#039;il est impossible de faire une opération de type copier/coller en informatique quantique.&lt;br /&gt;
&lt;br /&gt;
==== Téléportation quantique ====&lt;br /&gt;
&lt;br /&gt;
La téléportation quantique consiste à transférer l&#039;état du qubit A dans le qubit B. Il s&#039;agit donc cette fois d&#039;une opération de couper/coller.&lt;br /&gt;
L&#039;intrication quantique se produit lorsque deux qubits sont dépendants l&#039;un de l&#039;autre même s&#039;ils sont éloignés l&#039;un de l&#039;autre. Dans cet état, si on mesure l&#039;un des deux, alors la mesure du deuxième est déterminée.&lt;br /&gt;
Sans entrer dans la théorie physique sous jacente, nous pouvons dire qu&#039;un canal EPR permet de réaliser cette opération de couper/coller en transmettant une information entre deux ordinateurs quantiques.&lt;br /&gt;
&lt;br /&gt;
== Chiffrement asymétrique face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
=== Mise en danger de la sécurité du Web ===&lt;br /&gt;
&lt;br /&gt;
Les ordinateurs quantiques présentent une rapidité de calculs extrêmement plus rapide que les ordinateurs classiques. Ces ordinateurs n&#039;auraient aucune difficulté pour casser les codes de sécurité actuels reposant principalement sur des chiffrements à clé publique. Un chiffrement asymétrique chiffre avec sa clé publique et déchiffre avec sa clé privée. Si nous prenons l&#039;exemple de RSA, un chiffrement asymétrique, qui a la particularité d&#039;être couramment utilisé dans la sécurité du Web. RSA repose sur la génération de grands nombres premiers.&lt;br /&gt;
&lt;br /&gt;
* Initialisation : &lt;br /&gt;
** module &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; (grand nombre entier codé sur 2048 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;p, q&amp;lt;/math&amp;gt; : nombres premiers de même taille (codés sur 1024 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;\phi\left(N\right) = \left(p-1\right) * \left(q - 1\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd\left(e, \phi\left(N\right)\right) = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
** Choisir &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;ed \equiv 1 [\phi(N)]&amp;lt;/math&amp;gt; et donc &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; est l&#039;inverse modulaire de &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; avec &amp;lt;math&amp;gt;d = e^{-1} \left[\phi\left(N\right)\right]&amp;lt;/math&amp;gt;&lt;br /&gt;
** Clé publique : &amp;lt;math&amp;gt;pk\left(n, e\right)&amp;lt;/math&amp;gt;, Clé privée : &amp;lt;math&amp;gt;sk\left(d, p, q\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
* Chiffrement : &amp;lt;math&amp;gt;c = m^e \left[N\right]&amp;lt;/math&amp;gt;&lt;br /&gt;
* Déchiffrement : &amp;lt;math&amp;gt;m = c^d \left[N\right]&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La sécurité de RSA repose sur la difficulté à factoriser des grands nombres en nombres premiers. En effet avec &amp;lt;math&amp;gt;\left(N, e\right)&amp;lt;/math&amp;gt; il faudrait pouvoir retrouver &amp;lt;math&amp;gt;\left(d, p, q\right)&amp;lt;/math&amp;gt; où &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt; correspondant à un cassage total. D&#039;après le théorème de factorisation unique tout entier &amp;lt;math&amp;gt;n \ge 2&amp;lt;/math&amp;gt; admet une factorisation unique en produit de puissances de nombres entiers. Des algorithmes de factorisation ont été trouvés pour différentes tailles de module &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; mais pour pallier à ces attaques on augmente la longueur du module. De nos jours pour sécuriser le chiffrement il faut utiliser des modules strictement supérieur à 2048 bits. Cependant avec l&#039;informatique quantique il ne suffira plus d&#039;augmenter la taille du module car la puissance de calcul permettra de casser le chiffrement, peu importe la taille du module.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Exemple : &amp;lt;math&amp;gt;N=15&amp;lt;/math&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* Je choisis &amp;lt;math&amp;gt;x=7&amp;lt;/math&amp;gt;&lt;br /&gt;
* En calculant successivement les valeurs de &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; on trouve &amp;lt;math&amp;gt;7^{4} \equiv 1 [15]&amp;lt;/math&amp;gt;.&lt;br /&gt;
* &amp;lt;math&amp;gt;r=4&amp;lt;/math&amp;gt; est pair&lt;br /&gt;
* &amp;lt;math&amp;gt;pgcd(x^{\frac{r}{2}}+1,15) = 5&amp;lt;/math&amp;gt;. Donc &amp;lt;math&amp;gt;P = 5&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;Q = pgcd(x^{\frac{r}{2}}-1,15) = 3&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Chiffrement symétrique face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
=== Mise en danger de la sécurité ===&lt;br /&gt;
&lt;br /&gt;
Si les ordinateurs quantiques présentent une rapidité de calcul permettant d&#039;effectuer des factorisations impossibles pour un ordinateur classique, il nous semble logique qu&#039;ils soient également performants pour effectuer des attaques de type force brute sur des messages chiffrés par une clé privée qui aurait été transmise par un moyen plus sûr que RSA.&lt;br /&gt;
 &lt;br /&gt;
Un ordinateur quantique pourrait réaliser le déchiffrement avec toutes les clés possibles en parallèle. Ce qui permettrait de cryptanalyser le message en une seule opération. Le principe se base sur la superposition quantique. On superposerait toutes les clés possibles et on déchiffrerait. On obtiendrait alors une superposition de résultats. Le point le plus difficile est de trouver le résultat correct à partir de la superposition obtenue. En effet, le principe selon lequel mesurer une valeur modifie cette valeur fait qu&#039;en observant une superposition, on obtient un seul état aléatoire. Une solution à ce problème a été trouvé par Lov Grover en &amp;lt;math&amp;gt;O\left(\sqrt{n}\right)&amp;lt;/math&amp;gt; étapes.&lt;br /&gt;
&lt;br /&gt;
== Résistances aux attaques quantiques ==&lt;br /&gt;
&lt;br /&gt;
=== Chiffrement asyémétrique ===&lt;br /&gt;
&lt;br /&gt;
Depuis 2006, une conférence internationnale se produit chaque année nommée &amp;quot;Post Quantum Cryptography&amp;quot; dans l&#039;intention de trouver des algorithmes résistants aux ordinateurs quantiques. Nathan Hamlin et William Webb, des mathématiciens, ont présenté récemment un algorithme de chiffrement asymétrique possiblement capable de faire face aux attaques quantiques. Cet algorithme part de l&#039;ancien chiffrement de Merkle-Hellman qui se base sur le problème du sac à dos nommé &amp;quot;Knapsack code&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
==== Problème du sac-à-dos ====&lt;br /&gt;
&lt;br /&gt;
Etant donné un sac avec une capacité &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; et plusieurs objets de poids différents. Le problème du sac-à-dos consiste à trouver la suite d&#039;objets qui entre dans le sac et qui maximise sa capacité. En partant d&#039;un n-uplet &amp;lt;math&amp;gt;\left(a_1, a_2, ..., a_n\right) \in N^n&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;S \in N&amp;lt;/math&amp;gt;, il faut trouver un n-uplet binaire &amp;lt;math&amp;gt;\left(x_1, x_2, ..., x_n\right) \in \left\{0,1\right\}^n&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;S = \sum_{i=1}^{n} \left(a_{i}*x_{i}\right) &amp;lt;/math&amp;gt;. La somme &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; des poids des objets choisi ne doit pas dépasser la capacité du sac à dos. Pour résoudre ce problème il n&#039;existe pas d&#039;algorithme avec une compléxité polynomial.&lt;br /&gt;
&lt;br /&gt;
==== Chiffrement de Merkle-Hellman ====&lt;br /&gt;
&lt;br /&gt;
Cet algorithme de chiffrement à clé publique repose sur la complexité algorithmique du problème du sac-à-dos et utilise une suite de poids super-croissante pour le secret et non super-croissante pour la clé publique. Si les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt; n&#039;ont pas de propriétés particulières, la recherche du message codé en binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt; est un problème difficile. Il n&#039;existe pas d&#039;algorithme polynomial pour le résoudre. Pour pouvoir retrouver facilement ce n-uplet une propriété super-croissante est utilisé sur les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt;. Un n-uplet b est super-croissant si &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\forall i \in [2,n] b_{i} &amp;gt; \sum_{j=1}^{i-1} {b_{j}}&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ainsi en utilisant un algorithme glouton nous pouvons retrouver le n-uplet binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt;. L&#039;objet le plus lourd est dans le sac si le poids du sac est supérieur au poids de celui-ci. La propriété super-croissante assure que la somme des poids des autres objets sera toujours inférieur au poids de l&#039;objet le plus lourd. L&#039;algorithme est le suivant :&lt;br /&gt;
&lt;br /&gt;
  Pour i de n à 1 faire&lt;br /&gt;
    Si &amp;lt;math&amp;gt;b_{i} \le S&amp;lt;/math&amp;gt; alors&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i}  = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
    Sinon&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i} = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
    &amp;lt;math&amp;gt;S = S - x_{i} * b_{i}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Par exemple en prenant la suite des puissances de 2 comme suite super-croissante  avec : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = \left\{ 1,4,8 \right\}, b = \left\{ 1,2,4,8 \right\}, S = 13 \left(1+4+8\right), n = 4&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 4 : 8 \le 13 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_4 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 3 : 4 \le 5 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_3 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 2 : 2 \le 1 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    non donc &amp;lt;math&amp;gt;x_2 = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 1 : 1 \le 1 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_1 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  =&amp;gt; &amp;lt;math&amp;gt;m = \left\{ 1,0,1,1 \right\}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour chiffrer un n-uplet binaire &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;, l&#039;idée de Merkle et Hellman est de &amp;quot;tordre&amp;quot; les &amp;lt;math&amp;gt;b_{i}&amp;lt;/math&amp;gt; pour obtenir un n-uplet qui n&#039;est plus super-croissant. On choisit un nombre &amp;lt;math&amp;gt;u &amp;gt; \sum_{i=1}^{n} {b_{i}}&amp;lt;/math&amp;gt;, un entier &amp;lt;math&amp;gt;v \in N&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd\left(u,v\right) = 1&amp;lt;/math&amp;gt;. Ce qui donne &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; inversible dans &amp;lt;math&amp;gt;Z/uZ&amp;lt;/math&amp;gt;. On prend &amp;lt;math&amp;gt;w = v^{-1} \in Z/uZ&amp;lt;/math&amp;gt;. On calcule ensuite le n-uplet &amp;lt;math&amp;gt;a = \left(a_1, ..., a_n\right)&amp;lt;/math&amp;gt; tel que pour tout &amp;lt;math&amp;gt;i \in [1,n]&amp;lt;/math&amp;gt; on a : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = a * b_i (mod u)&amp;lt;/math&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
Le n-uplet &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; détermine la clé public tandis que &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt; sont gardés secrets. &amp;lt;br/&amp;gt;&lt;br /&gt;
Pour envoyer le message m à Bob, Alice va, à partir de l&#039;écriture de m en binaire, calculer la somme : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;c = \sum_{i=1}^{n} {m_i * a_i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
qu&#039;elle va envoyer à Bob. Bob pour déchiffrer va devoir procéder à plusieurs étapes : &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt;c = \sum_{i=1}^{n} {m_i * a_i}&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * a_i * w} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * a_i * v^{-1}} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * v * b_i * v^{-1}} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * b_i} [u]&amp;lt;/math&amp;gt;                      =&amp;gt; Comme &amp;lt;math&amp;gt; \sum_{i=1}^{n} {m_i * b_i} &amp;lt; \sum_{i=1}^{n} {b_i}&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt; u &amp;gt; \sum_{i=1}^{n} {b_i}&amp;lt;/math&amp;gt; le modulo &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; peut s&#039;enlever&lt;br /&gt;
* &amp;lt;math&amp;gt;= \sum_{i=1}^{n} {m_i * b_i}&amp;lt;/math&amp;gt;                           =&amp;gt; Comme &amp;lt;math&amp;gt;b_i&amp;lt;/math&amp;gt; est super-croissant Bob peut facilement retrouver &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Nouveau chiffrement de Hamlin-Webb ====&lt;br /&gt;
&lt;br /&gt;
Le chiffrement de Merkle et Hellman a été abandonné à la suite des découvertes de Shamir qui a découvert une attaque permettant de retrouver le message secret en utilisant un algorithme de la réduction des réseaux. Nathan Hamlin et William Webb reprennent cet algorithme en le renforçant par un changement de représentation des entiers. Ils ont prouvé q&#039;un entier pouvait être représenté de manière unique avec des suites récurrentes. Le secret &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; n&#039;est alors plus modélisé en binaire mais en une suite récurrente plus complexe à craquer.&lt;br /&gt;
&lt;br /&gt;
===== Représentation du message =====&lt;br /&gt;
La représentation d&#039;un nombre &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; en une suite récurrente &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt; se fait en utilisant une suite augmentée &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; de &amp;lt;math&amp;gt;1 \le j \le 10&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;0 \le i \le n&amp;lt;/math&amp;gt; donné par : &amp;lt;br/&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{1,i}= u_i&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{2,i}= u_i + u_{i-2}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{3,i}= u_i + u_{i-2} + u_{i-3}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{4,i}= u_i + u_{i-2} + 2u_{i-3}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{5,i}= u_i + u_{i-2} +2u_{i-3} + u_{i-4}&amp;lt;/math&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{10,i}= u_i + u_{i-2} +2u_{i-3} + 6u_{i-4}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le suite &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; correspond au blocs de chiffre autorisés. Dans l&#039;exemple &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; se calcule dans des groupes de taille 10 mais ce nombre peut varier. La suite &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; se calcule en utilisant un algorithme glouton sur &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; où l&#039;on remplace la somme en une expression dans la suite &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
Le message secret &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; est représenté par : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; M = \sum_{i=0}^{n-1} {d_i * u_i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
avec &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt; calculé grâce à &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
où les &amp;lt;math&amp;gt;d_i&amp;lt;/math&amp;gt; sont des blocs de chiffre lexicographiquement inférieur à &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Chiffrement symétrique quantique ===&lt;br /&gt;
&lt;br /&gt;
==== Photons polarisés ====&lt;br /&gt;
&lt;br /&gt;
Les photons sont des particules qui composent la lumière. Ils sont composés d&#039;un champ électrique et d&#039;un champ magnétique. Une lumière non-polarisée se caractérise par une différence d&#039;orientation du champ électrique suivant les photons. Ainsi la polarisation consiste, grâce à un polarisateur, d&#039;obtenir des photons avec un champ électrique orienté de manière identique. Les filtres polarisants permettent d&#039;appliquer un angle d&#039;orientation sur les photons afin :&lt;br /&gt;
* de récupérer les photons polarisés parallèlement par rapport à cet angle&lt;br /&gt;
* d&#039;éliminer les photons polarisés perpendiculairement&lt;br /&gt;
* de récupérer les photons polarisés intermédiaires avec une probabilité de &amp;lt;math&amp;gt;\cos\left(\alpha\right)&amp;lt;/math&amp;gt; en les réinitialisant avec une polarisation égale à l&#039;angle d&#039;orientation du filtre.&lt;br /&gt;
&lt;br /&gt;
Du fait de la transformation de polarisation il est impossible de connaître l&#039;information sur les polarisations précédentes du photons.&lt;br /&gt;
&lt;br /&gt;
==== Distribution des clés ====&lt;br /&gt;
&lt;br /&gt;
Le chiffrement quantique offre un moyen sécurisé d’échanger des clés privées pour réaliser des chiffrements symétriques. Cette distribution s’appuie sur l’envoi de photons polarisés par fibre optique. Les personnes s&#039;échangeant les clés doivent avoir accès à un canal quantique et un canal classique. Le principe est le suivant :&lt;br /&gt;
* Alice envoie par le canal quantique une suite de photons polarisés aléatoirement.&lt;br /&gt;
* Bob applique un filtre de polarisation qui lui donne 1 chance sur 2 (et 1 chance sur 4 s&#039;il y a eu un espion) d&#039;appliquer le bon filtre et les renvoit à Alice.&lt;br /&gt;
* Alice et Bob s&#039;échangent par le canal classique leur choix des axes de polarisation éliminant ainsi les erreurs.&lt;br /&gt;
* Alice communique une partie de ses résultats.&lt;br /&gt;
* Maintenant que Bob connait les axes qu&#039;Alice a appliqué et les résultats il peut savoir si la communication a été écoutée ou non. Ceci étant grâce au théorème de non clonage où il est impossible de cloner des états quantiques inconnus.&lt;br /&gt;
&lt;br /&gt;
Ce principe permet de détecter facilement s&#039;il y a eu des intrusions durant la communication de la clé privée. En effet si un attaquant écoute il lui faut récupérer les photons envoyés par Alice mesurer la polarisation et renvoyer le photon à Bob. Pour mesurer la polarisation l&#039;attaquant doit appliquer, comme Bob, un filtre pour deviner la base qu&#039;Alice a envoyé. Ainsi cette intrusion a 1 chance sur 2 d&#039;introduire des incohérences dans les données d&#039;Alice et Bob en envoyant 1 fois sur 2 un mauvais photon. Par la suite Bob obtient donc 1 chance sur 4 d&#039;appliquer le bon filtre. Par analyses statistiques, Alice et Bob peuvent détecter de manière sure s&#039;il y a eu espionnage sur le canal quantique.&lt;br /&gt;
&lt;br /&gt;
==== Attaque de l&#039;homme du milieu ====&lt;br /&gt;
&lt;br /&gt;
Comme toute méthode d&#039;échange de clé privée, cette méthode reste vulnérable à une attaque de type &amp;quot;homme du milieu&amp;quot;. Il faut donc la combiner avec un mécanisme de certification afin de s&#039;assurer de l&#039;identité des protagonistes.&lt;br /&gt;
&lt;br /&gt;
== Ressources ==&lt;br /&gt;
&lt;br /&gt;
* Hamlin, N., &amp;amp; Webb, W. A. (2012). Representing Positive Integers as a Sum of Linear Recurrence Sequences, Fibonacci Quart. 50 (2012), no. 2, 99–105. Fibonacci Quart, 50(2), 99-105.&lt;br /&gt;
&lt;br /&gt;
* Moyer, N. T. (2010). A knapsack-type cryptographic system using algebraic number rings (Doctoral dissertation, Washington State University).&lt;/div&gt;</summary>
		<author><name>JulianaLeclaire</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8706</id>
		<title>Projets étudiants cryptographie et sécurité/Leclaire DeRoland Crypto Quantique</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8706"/>
		<updated>2016-03-18T12:43:33Z</updated>

		<summary type="html">&lt;p&gt;JulianaLeclaire : /* Chiffrement de Merkle-Hellman */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Auteurs : Juliana Leclaire, Céline de Roland ===&lt;br /&gt;
&lt;br /&gt;
== La cryptographie et la cryptanalyse dans le contexte de l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
L&#039;informatique quantique se base sur la superposition de plusieurs états quantiques pour améliorer les capacités de calculs. Ce domaine pose un vrai problème dans la sécurité de l&#039;internet qui utilise des algorithmes de chiffrement asymétriques pour les connexions SSL/TLS, paiements en ligne. Les nouveaux ordinateurs avec leur rapidité de calcul va pouvoir casser ces différents algorithmes de chiffrement asymétriques présents dans le Web.&lt;br /&gt;
&lt;br /&gt;
Il existe différents acteurs qui se penchent sur ce domaine. Notamment, la NSA, Google qui tentent de construire leur propre ordinateur quantique, des scientifiques qui se réunissent pour trouver des solutions.&lt;br /&gt;
Dans cette page, nous allons nous demander en quoi l&#039;informatique quantique peut changer le Web d&#039;aujourd&#039;hui et comment faire face à cette arrivée ?&lt;br /&gt;
&lt;br /&gt;
=== Fonctionnement de l&#039;informatique quantique ===&lt;br /&gt;
&lt;br /&gt;
==== Qubit ====&lt;br /&gt;
&lt;br /&gt;
C&#039;est la plus petite unité de stockage de l&#039;information. Etant donné deux états de base &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;, un qubit non mesuré se trouve dans l&#039;état &amp;lt;math&amp;gt;\alpha \left|0\right\rangle + \beta \left|1\right\rangle&amp;lt;/math&amp;gt;, avec &amp;lt;math&amp;gt;\left|\alpha\right|^2 + \left|\beta\right|^2 = 1&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Lorsqu&#039;on mesure la valeur du qubit, on obtient soit &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; soit &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\left|\alpha\right|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et  &amp;lt;math&amp;gt;\left|\beta\right|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Théorème de non clonage ====&lt;br /&gt;
&lt;br /&gt;
Ce théorème, découvert en 1982 par Wootters, Zurek, et Dieks, consiste à dire qu&#039;il est impossible de recopier un qubit à l&#039;identique. La démonstration (par l&#039;absurde) repose sur le fait que pouvoir mettre le qubit B dans le même état que le qubit A implique que le qubit B soit déjà dans le même état que le qubit A.&lt;br /&gt;
On en déduit qu&#039;il est impossible de faire une opération de type copier/coller en informatique quantique.&lt;br /&gt;
&lt;br /&gt;
==== Téléportation quantique ====&lt;br /&gt;
&lt;br /&gt;
La téléportation quantique consiste à transférer l&#039;état du qubit A dans le qubit B. Il s&#039;agit donc cette fois d&#039;une opération de couper/coller.&lt;br /&gt;
L&#039;intrication quantique se produit lorsque deux qubits sont dépendants l&#039;un de l&#039;autre même s&#039;ils sont éloignés l&#039;un de l&#039;autre. Dans cet état, si on mesure l&#039;un des deux, alors la mesure du deuxième est déterminée.&lt;br /&gt;
Sans entrer dans la théorie physique sous jacente, nous pouvons dire qu&#039;un canal EPR permet de réaliser cette opération de couper/coller en transmettant une information entre deux ordinateurs quantiques.&lt;br /&gt;
&lt;br /&gt;
== Chiffrement asymétrique face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
=== Mise en danger de la sécurité du Web ===&lt;br /&gt;
&lt;br /&gt;
Les ordinateurs quantiques présentent une rapidité de calculs extrêmement plus rapide que les ordinateurs classiques. Ces ordinateurs n&#039;auraient aucune difficulté pour casser les codes de sécurité actuels reposant principalement sur des chiffrements à clé publique. Un chiffrement asymétrique chiffre avec sa clé publique et déchiffre avec sa clé privée. Si nous prenons l&#039;exemple de RSA, un chiffrement asymétrique, qui a la particularité d&#039;être couramment utilisé dans la sécurité du Web. RSA repose sur la génération de grands nombres premiers.&lt;br /&gt;
&lt;br /&gt;
* Initialisation : &lt;br /&gt;
** module &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; (grand nombre entier codé sur 2048 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;p, q&amp;lt;/math&amp;gt; : nombres premiers de même taille (codés sur 1024 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;\phi\left(N\right) = \left(p-1\right) * \left(q - 1\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd\left(e, \phi\left(N\right)\right) = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
** Choisir &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;ed \equiv 1 [\phi(N)]&amp;lt;/math&amp;gt; et donc &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; est l&#039;inverse modulaire de &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; avec &amp;lt;math&amp;gt;d = e^{-1} \left[\phi\left(N\right)\right]&amp;lt;/math&amp;gt;&lt;br /&gt;
** Clé publique : &amp;lt;math&amp;gt;pk\left(n, e\right)&amp;lt;/math&amp;gt;, Clé privée : &amp;lt;math&amp;gt;sk\left(d, p, q\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
* Chiffrement : &amp;lt;math&amp;gt;c = m^e \left[N\right]&amp;lt;/math&amp;gt;&lt;br /&gt;
* Déchiffrement : &amp;lt;math&amp;gt;m = c^d \left[N\right]&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La sécurité de RSA repose sur la difficulté à factoriser des grands nombres en nombres premiers. En effet avec &amp;lt;math&amp;gt;\left(N, e\right)&amp;lt;/math&amp;gt; il faudrait pouvoir retrouver &amp;lt;math&amp;gt;\left(d, p, q\right)&amp;lt;/math&amp;gt; où &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt; correspondant à un cassage total. D&#039;après le théorème de factorisation unique tout entier &amp;lt;math&amp;gt;n \ge 2&amp;lt;/math&amp;gt; admet une factorisation unique en produit de puissances de nombres entiers. Des algorithmes de factorisation ont été trouvés pour différentes tailles de module &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; mais pour pallier à ces attaques on augmente la longueur du module. De nos jours pour sécuriser le chiffrement il faut utiliser des modules strictement supérieur à 2048 bits. Cependant avec l&#039;informatique quantique il ne suffira plus d&#039;augmenter la taille du module car la puissance de calcul permettra de casser le chiffrement, peu importe la taille du module.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Exemple : &amp;lt;math&amp;gt;N=15&amp;lt;/math&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* Je choisis &amp;lt;math&amp;gt;x=7&amp;lt;/math&amp;gt;&lt;br /&gt;
* En calculant successivement les valeurs de &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; on trouve &amp;lt;math&amp;gt;7^{4} \equiv 1 [15]&amp;lt;/math&amp;gt;.&lt;br /&gt;
* &amp;lt;math&amp;gt;r=4&amp;lt;/math&amp;gt; est pair&lt;br /&gt;
* &amp;lt;math&amp;gt;pgcd(x^{\frac{r}{2}}+1,15) = 5&amp;lt;/math&amp;gt;. Donc &amp;lt;math&amp;gt;P = 5&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;Q = pgcd(x^{\frac{r}{2}}-1,15) = 3&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Chiffrement symétrique face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
=== Mise en danger de la sécurité ===&lt;br /&gt;
&lt;br /&gt;
Si les ordinateurs quantiques présentent une rapidité de calcul permettant d&#039;effectuer des factorisations impossibles pour un ordinateur classique, il nous semble logique qu&#039;ils soient également performants pour effectuer des attaques de type force brute sur des messages chiffrés par une clé privée qui aurait été transmise par un moyen plus sûr que RSA.&lt;br /&gt;
 &lt;br /&gt;
Un ordinateur quantique pourrait réaliser le déchiffrement avec toutes les clés possibles en parallèle. Ce qui permettrait de cryptanalyser le message en une seule opération. Le principe se base sur la superposition quantique. On superposerait toutes les clés possibles et on déchiffrerait. On obtiendrait alors une superposition de résultats. Le point le plus difficile est de trouver le résultat correct à partir de la superposition obtenue. En effet, le principe selon lequel mesurer une valeur modifie cette valeur fait qu&#039;en observant une superposition, on obtient un seul état aléatoire. Une solution à ce problème a été trouvé par Lov Grover en &amp;lt;math&amp;gt;O\left(\sqrt{n}\right)&amp;lt;/math&amp;gt; étapes.&lt;br /&gt;
&lt;br /&gt;
== Résistances aux attaques quantiques ==&lt;br /&gt;
&lt;br /&gt;
=== Chiffrement asyémétrique ===&lt;br /&gt;
&lt;br /&gt;
Depuis 2006, une conférence internationnale se produit chaque année nommée &amp;quot;Post Quantum Cryptography&amp;quot; dans l&#039;intention de trouver des algorithmes résistants aux ordinateurs quantiques. Nathan Hamlin et William Webb, des mathématiciens, ont présenté récemment un algorithme de chiffrement asymétrique possiblement capable de faire face aux attaques quantiques. Cet algorithme part de l&#039;ancien chiffrement de Merkle-Hellman qui se base sur le problème du sac à dos nommé &amp;quot;Knapsack code&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
==== Problème du sac-à-dos ====&lt;br /&gt;
&lt;br /&gt;
Etant donné un sac avec une capacité &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; et plusieurs objets de poids différents. Le problème du sac-à-dos consiste à trouver la suite d&#039;objets qui entre dans le sac et qui maximise sa capacité. En partant d&#039;un n-uplet &amp;lt;math&amp;gt;\left(a_1, a_2, ..., a_n\right) \in N^n&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;S \in N&amp;lt;/math&amp;gt;, il faut trouver un n-uplet binaire &amp;lt;math&amp;gt;\left(x_1, x_2, ..., x_n\right) \in \left\{0,1\right\}^n&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;S = \sum_{i=1}^{n} \left(a_{i}*x_{i}\right) &amp;lt;/math&amp;gt;. La somme &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; des poids des objets choisi ne doit pas dépasser la capacité du sac à dos. Pour résoudre ce problème il n&#039;existe pas d&#039;algorithme avec une compléxité polynomial.&lt;br /&gt;
&lt;br /&gt;
==== Chiffrement de Merkle-Hellman ====&lt;br /&gt;
&lt;br /&gt;
Cet algorithme de chiffrement à clé publique repose sur la complexité algorithmique du problème du sac-à-dos et utilise des suites de poids super-croissante pour le secret et non super-croissante pour la clé publique. Si les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt; n&#039;ont pas de propriétés particulières, la recherche du message codé en binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt; est un problème difficile. Il n&#039;existe pas d&#039;algorithme polynomial pour le résoudre. Pour pouvoir retrouver facilement ce n-uplet une propriété super-croissante est utilisé sur les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt;. Un n-uplet b est super-croissant si &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\forall i \in [2,n] b_{i} &amp;gt; \sum_{j=1}^{i-1} {b_{j}}&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ainsi en utilisant un algorithme glouton nous pouvons retrouver le n-uplet binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt;. L&#039;objet le plus lourd est dans le sac si le poids du sac est supérieur au poids de celui-ci. La propriété super-croissante assure que la somme des poids des autres objets sera toujours inférieur au poids de l&#039;objet le plus lourd. L&#039;algorithme est le suivant :&lt;br /&gt;
&lt;br /&gt;
  Pour i de n à 1 faire&lt;br /&gt;
    Si &amp;lt;math&amp;gt;b_{i} \le S&amp;lt;/math&amp;gt; alors&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i}  = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
    Sinon&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i} = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
    &amp;lt;math&amp;gt;S = S - x_{i} * b_{i}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Par exemple en prenant la suite des puissances de 2 comme suite super-croissante  avec : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = \left\{ 1,4,8 \right\}, b = \left\{ 1,2,4,8 \right\}, S = 13 \left(1+4+8\right), n = 4&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 4 : 8 \le 13 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_4 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 3 : 4 \le 5 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_3 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 2 : 2 \le 1 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    non donc &amp;lt;math&amp;gt;x_2 = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 1 : 1 \le 1 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_1 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  =&amp;gt; &amp;lt;math&amp;gt;m = \left\{ 1,0,1,1 \right\}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour chiffrer un n-uplet binaire &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;, l&#039;idée de Merkle et Hellman est de &amp;quot;tordre&amp;quot; les &amp;lt;math&amp;gt;b_{i}&amp;lt;/math&amp;gt; pour obtenir un n-uplet qui n&#039;est plus super-croissant. On choisit un nombre &amp;lt;math&amp;gt;u &amp;gt; \sum_{i=1}^{n} {b_{i}}&amp;lt;/math&amp;gt;, un entier &amp;lt;math&amp;gt;v \in N&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd\left(u,v\right) = 1&amp;lt;/math&amp;gt;. Ce qui donne &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; inversible dans &amp;lt;math&amp;gt;Z/uZ&amp;lt;/math&amp;gt;. On prend &amp;lt;math&amp;gt;w = v^{-1} \in Z/uZ&amp;lt;/math&amp;gt;. On calcule ensuite le n-uplet &amp;lt;math&amp;gt;a = \left(a_1, ..., a_n\right)&amp;lt;/math&amp;gt; tel que pour tout &amp;lt;math&amp;gt;i \in [1,n]&amp;lt;/math&amp;gt; on a : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = a * b_i (mod u)&amp;lt;/math&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
Le n-uplet &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; détermine la clé public tandis que &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt; sont gardés secrets. &amp;lt;br/&amp;gt;&lt;br /&gt;
Pour envoyer le message m à Bob, Alice va, à partir de l&#039;écriture de m en binaire, calculer la somme : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;c = \sum_{i=1}^{n} {m_i * a_i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
qu&#039;elle va envoyer à Bob. Bob pour déchiffrer va devoir procéder à plusieurs étapes : &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt;c = \sum_{i=1}^{n} {m_i * a_i}&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * a_i * w} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * a_i * v^{-1}} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * v * b_i * v^{-1}} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * b_i} [u]&amp;lt;/math&amp;gt;                      =&amp;gt; Comme &amp;lt;math&amp;gt; \sum_{i=1}^{n} {m_i * b_i} &amp;lt; \sum_{i=1}^{n} {b_i}&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt; u &amp;gt; \sum_{i=1}^{n} {b_i}&amp;lt;/math&amp;gt; le modulo &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; peut s&#039;enlever&lt;br /&gt;
* &amp;lt;math&amp;gt;= \sum_{i=1}^{n} {m_i * b_i}&amp;lt;/math&amp;gt;                           =&amp;gt; Comme &amp;lt;math&amp;gt;b_i&amp;lt;/math&amp;gt; est super-croissant Bob peut facilement retrouver &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Nouveau chiffrement de Hamlin-Webb ====&lt;br /&gt;
&lt;br /&gt;
Le chiffrement de Merkle et Hellman a été abandonné à la suite des découvertes de Shamir qui a découvert une attaque permettant de retrouver le message secret en utilisant un algorithme de la réduction des réseaux. Nathan Hamlin et William Webb reprennent cet algorithme en le renforçant par un changement de représentation des entiers. Ils ont prouvé q&#039;un entier pouvait être représenté de manière unique avec des suites récurrentes. Le secret &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; n&#039;est alors plus modélisé en binaire mais en une suite récurrente plus complexe à craquer.&lt;br /&gt;
&lt;br /&gt;
===== Représentation du message =====&lt;br /&gt;
La représentation d&#039;un nombre &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; en une suite récurrente &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt; se fait en utilisant une suite augmentée &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; de &amp;lt;math&amp;gt;1 \le j \le 10&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;0 \le i \le n&amp;lt;/math&amp;gt; donné par : &amp;lt;br/&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{1,i}= u_i&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{2,i}= u_i + u_{i-2}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{3,i}= u_i + u_{i-2} + u_{i-3}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{4,i}= u_i + u_{i-2} + 2u_{i-3}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{5,i}= u_i + u_{i-2} +2u_{i-3} + u_{i-4}&amp;lt;/math&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{10,i}= u_i + u_{i-2} +2u_{i-3} + 6u_{i-4}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le suite &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; correspond au blocs de chiffre autorisés. Dans l&#039;exemple &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; se calcule dans des groupes de taille 10 mais ce nombre peut varier. La suite &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; se calcule en utilisant un algorithme glouton sur &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; où l&#039;on remplace la somme en une expression dans la suite &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
Le message secret &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; est représenté par : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; M = \sum_{i=0}^{n-1} {d_i * u_i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
avec &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt; calculé grâce à &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
où les &amp;lt;math&amp;gt;d_i&amp;lt;/math&amp;gt; sont des blocs de chiffre lexicographiquement inférieur à &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Chiffrement symétrique quantique ===&lt;br /&gt;
&lt;br /&gt;
==== Photons polarisés ====&lt;br /&gt;
&lt;br /&gt;
Les photons sont des particules qui composent la lumière. Ils sont composés d&#039;un champ électrique et d&#039;un champ magnétique. Une lumière non-polarisée se caractérise par une différence d&#039;orientation du champ électrique suivant les photons. Ainsi la polarisation consiste, grâce à un polarisateur, d&#039;obtenir des photons avec un champ électrique orienté de manière identique. Les filtres polarisants permettent d&#039;appliquer un angle d&#039;orientation sur les photons afin :&lt;br /&gt;
* de récupérer les photons polarisés parallèlement par rapport à cet angle&lt;br /&gt;
* d&#039;éliminer les photons polarisés perpendiculairement&lt;br /&gt;
* de récupérer les photons polarisés intermédiaires avec une probabilité de &amp;lt;math&amp;gt;\cos\left(\alpha\right)&amp;lt;/math&amp;gt; en les réinitialisant avec une polarisation égale à l&#039;angle d&#039;orientation du filtre.&lt;br /&gt;
&lt;br /&gt;
Du fait de la transformation de polarisation il est impossible de connaître l&#039;information sur les polarisations précédentes du photons.&lt;br /&gt;
&lt;br /&gt;
==== Distribution des clés ====&lt;br /&gt;
&lt;br /&gt;
Le chiffrement quantique offre un moyen sécurisé d’échanger des clés privées pour réaliser des chiffrements symétriques. Cette distribution s’appuie sur l’envoi de photons polarisés par fibre optique. Les personnes s&#039;échangeant les clés doivent avoir accès à un canal quantique et un canal classique. Le principe est le suivant :&lt;br /&gt;
* Alice envoie par le canal quantique une suite de photons polarisés aléatoirement.&lt;br /&gt;
* Bob applique un filtre de polarisation qui lui donne 1 chance sur 2 (et 1 chance sur 4 s&#039;il y a eu un espion) d&#039;appliquer le bon filtre et les renvoit à Alice.&lt;br /&gt;
* Alice et Bob s&#039;échangent par le canal classique leur choix des axes de polarisation éliminant ainsi les erreurs.&lt;br /&gt;
* Alice communique une partie de ses résultats.&lt;br /&gt;
* Maintenant que Bob connait les axes qu&#039;Alice a appliqué et les résultats il peut savoir si la communication a été écoutée ou non. Ceci étant grâce au théorème de non clonage où il est impossible de cloner des états quantiques inconnus.&lt;br /&gt;
&lt;br /&gt;
Ce principe permet de détecter facilement s&#039;il y a eu des intrusions durant la communication de la clé privée. En effet si un attaquant écoute il lui faut récupérer les photons envoyés par Alice mesurer la polarisation et renvoyer le photon à Bob. Pour mesurer la polarisation l&#039;attaquant doit appliquer, comme Bob, un filtre pour deviner la base qu&#039;Alice a envoyé. Ainsi cette intrusion a 1 chance sur 2 d&#039;introduire des incohérences dans les données d&#039;Alice et Bob en envoyant 1 fois sur 2 un mauvais photon. Par la suite Bob obtient donc 1 chance sur 4 d&#039;appliquer le bon filtre. Par analyses statistiques, Alice et Bob peuvent détecter de manière sure s&#039;il y a eu espionnage sur le canal quantique.&lt;br /&gt;
&lt;br /&gt;
==== Attaque de l&#039;homme du milieu ====&lt;br /&gt;
&lt;br /&gt;
Comme toute méthode d&#039;échange de clé privée, cette méthode reste vulnérable à une attaque de type &amp;quot;homme du milieu&amp;quot;. Il faut donc la combiner avec un mécanisme de certification afin de s&#039;assurer de l&#039;identité des protagonistes.&lt;br /&gt;
&lt;br /&gt;
== Ressources ==&lt;br /&gt;
&lt;br /&gt;
* Hamlin, N., &amp;amp; Webb, W. A. (2012). Representing Positive Integers as a Sum of Linear Recurrence Sequences, Fibonacci Quart. 50 (2012), no. 2, 99–105. Fibonacci Quart, 50(2), 99-105.&lt;br /&gt;
&lt;br /&gt;
* Moyer, N. T. (2010). A knapsack-type cryptographic system using algebraic number rings (Doctoral dissertation, Washington State University).&lt;/div&gt;</summary>
		<author><name>JulianaLeclaire</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8705</id>
		<title>Projets étudiants cryptographie et sécurité/Leclaire DeRoland Crypto Quantique</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8705"/>
		<updated>2016-03-18T12:42:42Z</updated>

		<summary type="html">&lt;p&gt;JulianaLeclaire : /* Problème du sac-à-dos */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Auteurs : Juliana Leclaire, Céline de Roland ===&lt;br /&gt;
&lt;br /&gt;
== La cryptographie et la cryptanalyse dans le contexte de l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
L&#039;informatique quantique se base sur la superposition de plusieurs états quantiques pour améliorer les capacités de calculs. Ce domaine pose un vrai problème dans la sécurité de l&#039;internet qui utilise des algorithmes de chiffrement asymétriques pour les connexions SSL/TLS, paiements en ligne. Les nouveaux ordinateurs avec leur rapidité de calcul va pouvoir casser ces différents algorithmes de chiffrement asymétriques présents dans le Web.&lt;br /&gt;
&lt;br /&gt;
Il existe différents acteurs qui se penchent sur ce domaine. Notamment, la NSA, Google qui tentent de construire leur propre ordinateur quantique, des scientifiques qui se réunissent pour trouver des solutions.&lt;br /&gt;
Dans cette page, nous allons nous demander en quoi l&#039;informatique quantique peut changer le Web d&#039;aujourd&#039;hui et comment faire face à cette arrivée ?&lt;br /&gt;
&lt;br /&gt;
=== Fonctionnement de l&#039;informatique quantique ===&lt;br /&gt;
&lt;br /&gt;
==== Qubit ====&lt;br /&gt;
&lt;br /&gt;
C&#039;est la plus petite unité de stockage de l&#039;information. Etant donné deux états de base &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;, un qubit non mesuré se trouve dans l&#039;état &amp;lt;math&amp;gt;\alpha \left|0\right\rangle + \beta \left|1\right\rangle&amp;lt;/math&amp;gt;, avec &amp;lt;math&amp;gt;\left|\alpha\right|^2 + \left|\beta\right|^2 = 1&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Lorsqu&#039;on mesure la valeur du qubit, on obtient soit &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; soit &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\left|\alpha\right|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et  &amp;lt;math&amp;gt;\left|\beta\right|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Théorème de non clonage ====&lt;br /&gt;
&lt;br /&gt;
Ce théorème, découvert en 1982 par Wootters, Zurek, et Dieks, consiste à dire qu&#039;il est impossible de recopier un qubit à l&#039;identique. La démonstration (par l&#039;absurde) repose sur le fait que pouvoir mettre le qubit B dans le même état que le qubit A implique que le qubit B soit déjà dans le même état que le qubit A.&lt;br /&gt;
On en déduit qu&#039;il est impossible de faire une opération de type copier/coller en informatique quantique.&lt;br /&gt;
&lt;br /&gt;
==== Téléportation quantique ====&lt;br /&gt;
&lt;br /&gt;
La téléportation quantique consiste à transférer l&#039;état du qubit A dans le qubit B. Il s&#039;agit donc cette fois d&#039;une opération de couper/coller.&lt;br /&gt;
L&#039;intrication quantique se produit lorsque deux qubits sont dépendants l&#039;un de l&#039;autre même s&#039;ils sont éloignés l&#039;un de l&#039;autre. Dans cet état, si on mesure l&#039;un des deux, alors la mesure du deuxième est déterminée.&lt;br /&gt;
Sans entrer dans la théorie physique sous jacente, nous pouvons dire qu&#039;un canal EPR permet de réaliser cette opération de couper/coller en transmettant une information entre deux ordinateurs quantiques.&lt;br /&gt;
&lt;br /&gt;
== Chiffrement asymétrique face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
=== Mise en danger de la sécurité du Web ===&lt;br /&gt;
&lt;br /&gt;
Les ordinateurs quantiques présentent une rapidité de calculs extrêmement plus rapide que les ordinateurs classiques. Ces ordinateurs n&#039;auraient aucune difficulté pour casser les codes de sécurité actuels reposant principalement sur des chiffrements à clé publique. Un chiffrement asymétrique chiffre avec sa clé publique et déchiffre avec sa clé privée. Si nous prenons l&#039;exemple de RSA, un chiffrement asymétrique, qui a la particularité d&#039;être couramment utilisé dans la sécurité du Web. RSA repose sur la génération de grands nombres premiers.&lt;br /&gt;
&lt;br /&gt;
* Initialisation : &lt;br /&gt;
** module &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; (grand nombre entier codé sur 2048 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;p, q&amp;lt;/math&amp;gt; : nombres premiers de même taille (codés sur 1024 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;\phi\left(N\right) = \left(p-1\right) * \left(q - 1\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd\left(e, \phi\left(N\right)\right) = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
** Choisir &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;ed \equiv 1 [\phi(N)]&amp;lt;/math&amp;gt; et donc &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; est l&#039;inverse modulaire de &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; avec &amp;lt;math&amp;gt;d = e^{-1} \left[\phi\left(N\right)\right]&amp;lt;/math&amp;gt;&lt;br /&gt;
** Clé publique : &amp;lt;math&amp;gt;pk\left(n, e\right)&amp;lt;/math&amp;gt;, Clé privée : &amp;lt;math&amp;gt;sk\left(d, p, q\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
* Chiffrement : &amp;lt;math&amp;gt;c = m^e \left[N\right]&amp;lt;/math&amp;gt;&lt;br /&gt;
* Déchiffrement : &amp;lt;math&amp;gt;m = c^d \left[N\right]&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La sécurité de RSA repose sur la difficulté à factoriser des grands nombres en nombres premiers. En effet avec &amp;lt;math&amp;gt;\left(N, e\right)&amp;lt;/math&amp;gt; il faudrait pouvoir retrouver &amp;lt;math&amp;gt;\left(d, p, q\right)&amp;lt;/math&amp;gt; où &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt; correspondant à un cassage total. D&#039;après le théorème de factorisation unique tout entier &amp;lt;math&amp;gt;n \ge 2&amp;lt;/math&amp;gt; admet une factorisation unique en produit de puissances de nombres entiers. Des algorithmes de factorisation ont été trouvés pour différentes tailles de module &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; mais pour pallier à ces attaques on augmente la longueur du module. De nos jours pour sécuriser le chiffrement il faut utiliser des modules strictement supérieur à 2048 bits. Cependant avec l&#039;informatique quantique il ne suffira plus d&#039;augmenter la taille du module car la puissance de calcul permettra de casser le chiffrement, peu importe la taille du module.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Exemple : &amp;lt;math&amp;gt;N=15&amp;lt;/math&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* Je choisis &amp;lt;math&amp;gt;x=7&amp;lt;/math&amp;gt;&lt;br /&gt;
* En calculant successivement les valeurs de &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; on trouve &amp;lt;math&amp;gt;7^{4} \equiv 1 [15]&amp;lt;/math&amp;gt;.&lt;br /&gt;
* &amp;lt;math&amp;gt;r=4&amp;lt;/math&amp;gt; est pair&lt;br /&gt;
* &amp;lt;math&amp;gt;pgcd(x^{\frac{r}{2}}+1,15) = 5&amp;lt;/math&amp;gt;. Donc &amp;lt;math&amp;gt;P = 5&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;Q = pgcd(x^{\frac{r}{2}}-1,15) = 3&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Chiffrement symétrique face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
=== Mise en danger de la sécurité ===&lt;br /&gt;
&lt;br /&gt;
Si les ordinateurs quantiques présentent une rapidité de calcul permettant d&#039;effectuer des factorisations impossibles pour un ordinateur classique, il nous semble logique qu&#039;ils soient également performants pour effectuer des attaques de type force brute sur des messages chiffrés par une clé privée qui aurait été transmise par un moyen plus sûr que RSA.&lt;br /&gt;
 &lt;br /&gt;
Un ordinateur quantique pourrait réaliser le déchiffrement avec toutes les clés possibles en parallèle. Ce qui permettrait de cryptanalyser le message en une seule opération. Le principe se base sur la superposition quantique. On superposerait toutes les clés possibles et on déchiffrerait. On obtiendrait alors une superposition de résultats. Le point le plus difficile est de trouver le résultat correct à partir de la superposition obtenue. En effet, le principe selon lequel mesurer une valeur modifie cette valeur fait qu&#039;en observant une superposition, on obtient un seul état aléatoire. Une solution à ce problème a été trouvé par Lov Grover en &amp;lt;math&amp;gt;O\left(\sqrt{n}\right)&amp;lt;/math&amp;gt; étapes.&lt;br /&gt;
&lt;br /&gt;
== Résistances aux attaques quantiques ==&lt;br /&gt;
&lt;br /&gt;
=== Chiffrement asyémétrique ===&lt;br /&gt;
&lt;br /&gt;
Depuis 2006, une conférence internationnale se produit chaque année nommée &amp;quot;Post Quantum Cryptography&amp;quot; dans l&#039;intention de trouver des algorithmes résistants aux ordinateurs quantiques. Nathan Hamlin et William Webb, des mathématiciens, ont présenté récemment un algorithme de chiffrement asymétrique possiblement capable de faire face aux attaques quantiques. Cet algorithme part de l&#039;ancien chiffrement de Merkle-Hellman qui se base sur le problème du sac à dos nommé &amp;quot;Knapsack code&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
==== Problème du sac-à-dos ====&lt;br /&gt;
&lt;br /&gt;
Etant donné un sac avec une capacité &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; et plusieurs objets de poids différents. Le problème du sac-à-dos consiste à trouver la suite d&#039;objets qui entre dans le sac et qui maximise sa capacité. En partant d&#039;un n-uplet &amp;lt;math&amp;gt;\left(a_1, a_2, ..., a_n\right) \in N^n&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;S \in N&amp;lt;/math&amp;gt;, il faut trouver un n-uplet binaire &amp;lt;math&amp;gt;\left(x_1, x_2, ..., x_n\right) \in \left\{0,1\right\}^n&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;S = \sum_{i=1}^{n} \left(a_{i}*x_{i}\right) &amp;lt;/math&amp;gt;. La somme &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; des poids des objets choisi ne doit pas dépasser la capacité du sac à dos. Pour résoudre ce problème il n&#039;existe pas d&#039;algorithme avec une compléxité polynomial.&lt;br /&gt;
&lt;br /&gt;
==== Chiffrement de Merkle-Hellman ====&lt;br /&gt;
&lt;br /&gt;
Cet algorithme de chiffrement à clé publique repose sur la complexité algorithmique du problème de sac-à-dos et utilise des suites de poids super-croissante pour le secret et non super-croissante pour la clé publique. Si les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt; n&#039;ont pas de propriétés particulières, la recherche du message codé en binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt; est un problème difficile. Il n&#039;existe pas d&#039;algorithme polynomial pour le résoudre. Pour pouvoir retrouver facilement ce n-uplet une propriété super-croissante est utilisé sur les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt;. Un n-uplet b est super-croissant si &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\forall i \in [2,n] b_{i} &amp;gt; \sum_{j=1}^{i-1} {b_{j}}&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ainsi en utilisant un algorithme glouton nous pouvons retrouver le n-uplet binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt;. L&#039;objet le plus lourd est dans le sac si le poids du sac est supérieur au poids de celui-ci. La propriété super-croissante assure que la somme des poids des autres objets sera toujours inférieur au poids de l&#039;objet le plus lourd. L&#039;algorithme est le suivant :&lt;br /&gt;
&lt;br /&gt;
  Pour i de n à 1 faire&lt;br /&gt;
    Si &amp;lt;math&amp;gt;b_{i} \le S&amp;lt;/math&amp;gt; alors&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i}  = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
    Sinon&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i} = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
    &amp;lt;math&amp;gt;S = S - x_{i} * b_{i}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Par exemple en prenant la suite des puissances de 2 comme suite super-croissante  avec : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = \left\{ 1,4,8 \right\}, b = \left\{ 1,2,4,8 \right\}, S = 13 \left(1+4+8\right), n = 4&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 4 : 8 \le 13 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_4 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 3 : 4 \le 5 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_3 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 2 : 2 \le 1 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    non donc &amp;lt;math&amp;gt;x_2 = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 1 : 1 \le 1 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_1 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  =&amp;gt; &amp;lt;math&amp;gt;m = \left\{ 1,0,1,1 \right\}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour chiffrer un n-uplet binaire &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;, l&#039;idée de Merkle et Hellman est de &amp;quot;tordre&amp;quot; les &amp;lt;math&amp;gt;b_{i}&amp;lt;/math&amp;gt; pour obtenir un n-uplet qui n&#039;est plus super-croissant. On choisit un nombre &amp;lt;math&amp;gt;u &amp;gt; \sum_{i=1}^{n} {b_{i}}&amp;lt;/math&amp;gt;, un entier &amp;lt;math&amp;gt;v \in N&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd\left(u,v\right) = 1&amp;lt;/math&amp;gt;. Ce qui donne &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; inversible dans &amp;lt;math&amp;gt;Z/uZ&amp;lt;/math&amp;gt;. On prend &amp;lt;math&amp;gt;w = v^{-1} \in Z/uZ&amp;lt;/math&amp;gt;. On calcule ensuite le n-uplet &amp;lt;math&amp;gt;a = \left(a_1, ..., a_n\right)&amp;lt;/math&amp;gt; tel que pour tout &amp;lt;math&amp;gt;i \in [1,n]&amp;lt;/math&amp;gt; on a : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = a * b_i (mod u)&amp;lt;/math&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
Le n-uplet &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; détermine la clé public tandis que &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt; sont gardés secrets. &amp;lt;br/&amp;gt;&lt;br /&gt;
Pour envoyer le message m à Bob, Alice va, à partir de l&#039;écriture de m en binaire, calculer la somme : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;c = \sum_{i=1}^{n} {m_i * a_i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
qu&#039;elle va envoyer à Bob. Bob pour déchiffrer va devoir procéder à plusieurs étapes : &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt;c = \sum_{i=1}^{n} {m_i * a_i}&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * a_i * w} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * a_i * v^{-1}} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * v * b_i * v^{-1}} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * b_i} [u]&amp;lt;/math&amp;gt;                      =&amp;gt; Comme &amp;lt;math&amp;gt; \sum_{i=1}^{n} {m_i * b_i} &amp;lt; \sum_{i=1}^{n} {b_i}&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt; u &amp;gt; \sum_{i=1}^{n} {b_i}&amp;lt;/math&amp;gt; le modulo &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; peut s&#039;enlever&lt;br /&gt;
* &amp;lt;math&amp;gt;= \sum_{i=1}^{n} {m_i * b_i}&amp;lt;/math&amp;gt;                           =&amp;gt; Comme &amp;lt;math&amp;gt;b_i&amp;lt;/math&amp;gt; est super-croissant Bob peut facilement retrouver &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Nouveau chiffrement de Hamlin-Webb ====&lt;br /&gt;
&lt;br /&gt;
Le chiffrement de Merkle et Hellman a été abandonné à la suite des découvertes de Shamir qui a découvert une attaque permettant de retrouver le message secret en utilisant un algorithme de la réduction des réseaux. Nathan Hamlin et William Webb reprennent cet algorithme en le renforçant par un changement de représentation des entiers. Ils ont prouvé q&#039;un entier pouvait être représenté de manière unique avec des suites récurrentes. Le secret &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; n&#039;est alors plus modélisé en binaire mais en une suite récurrente plus complexe à craquer.&lt;br /&gt;
&lt;br /&gt;
===== Représentation du message =====&lt;br /&gt;
La représentation d&#039;un nombre &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; en une suite récurrente &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt; se fait en utilisant une suite augmentée &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; de &amp;lt;math&amp;gt;1 \le j \le 10&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;0 \le i \le n&amp;lt;/math&amp;gt; donné par : &amp;lt;br/&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{1,i}= u_i&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{2,i}= u_i + u_{i-2}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{3,i}= u_i + u_{i-2} + u_{i-3}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{4,i}= u_i + u_{i-2} + 2u_{i-3}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{5,i}= u_i + u_{i-2} +2u_{i-3} + u_{i-4}&amp;lt;/math&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{10,i}= u_i + u_{i-2} +2u_{i-3} + 6u_{i-4}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le suite &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; correspond au blocs de chiffre autorisés. Dans l&#039;exemple &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; se calcule dans des groupes de taille 10 mais ce nombre peut varier. La suite &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; se calcule en utilisant un algorithme glouton sur &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; où l&#039;on remplace la somme en une expression dans la suite &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
Le message secret &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; est représenté par : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; M = \sum_{i=0}^{n-1} {d_i * u_i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
avec &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt; calculé grâce à &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
où les &amp;lt;math&amp;gt;d_i&amp;lt;/math&amp;gt; sont des blocs de chiffre lexicographiquement inférieur à &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Chiffrement symétrique quantique ===&lt;br /&gt;
&lt;br /&gt;
==== Photons polarisés ====&lt;br /&gt;
&lt;br /&gt;
Les photons sont des particules qui composent la lumière. Ils sont composés d&#039;un champ électrique et d&#039;un champ magnétique. Une lumière non-polarisée se caractérise par une différence d&#039;orientation du champ électrique suivant les photons. Ainsi la polarisation consiste, grâce à un polarisateur, d&#039;obtenir des photons avec un champ électrique orienté de manière identique. Les filtres polarisants permettent d&#039;appliquer un angle d&#039;orientation sur les photons afin :&lt;br /&gt;
* de récupérer les photons polarisés parallèlement par rapport à cet angle&lt;br /&gt;
* d&#039;éliminer les photons polarisés perpendiculairement&lt;br /&gt;
* de récupérer les photons polarisés intermédiaires avec une probabilité de &amp;lt;math&amp;gt;\cos\left(\alpha\right)&amp;lt;/math&amp;gt; en les réinitialisant avec une polarisation égale à l&#039;angle d&#039;orientation du filtre.&lt;br /&gt;
&lt;br /&gt;
Du fait de la transformation de polarisation il est impossible de connaître l&#039;information sur les polarisations précédentes du photons.&lt;br /&gt;
&lt;br /&gt;
==== Distribution des clés ====&lt;br /&gt;
&lt;br /&gt;
Le chiffrement quantique offre un moyen sécurisé d’échanger des clés privées pour réaliser des chiffrements symétriques. Cette distribution s’appuie sur l’envoi de photons polarisés par fibre optique. Les personnes s&#039;échangeant les clés doivent avoir accès à un canal quantique et un canal classique. Le principe est le suivant :&lt;br /&gt;
* Alice envoie par le canal quantique une suite de photons polarisés aléatoirement.&lt;br /&gt;
* Bob applique un filtre de polarisation qui lui donne 1 chance sur 2 (et 1 chance sur 4 s&#039;il y a eu un espion) d&#039;appliquer le bon filtre et les renvoit à Alice.&lt;br /&gt;
* Alice et Bob s&#039;échangent par le canal classique leur choix des axes de polarisation éliminant ainsi les erreurs.&lt;br /&gt;
* Alice communique une partie de ses résultats.&lt;br /&gt;
* Maintenant que Bob connait les axes qu&#039;Alice a appliqué et les résultats il peut savoir si la communication a été écoutée ou non. Ceci étant grâce au théorème de non clonage où il est impossible de cloner des états quantiques inconnus.&lt;br /&gt;
&lt;br /&gt;
Ce principe permet de détecter facilement s&#039;il y a eu des intrusions durant la communication de la clé privée. En effet si un attaquant écoute il lui faut récupérer les photons envoyés par Alice mesurer la polarisation et renvoyer le photon à Bob. Pour mesurer la polarisation l&#039;attaquant doit appliquer, comme Bob, un filtre pour deviner la base qu&#039;Alice a envoyé. Ainsi cette intrusion a 1 chance sur 2 d&#039;introduire des incohérences dans les données d&#039;Alice et Bob en envoyant 1 fois sur 2 un mauvais photon. Par la suite Bob obtient donc 1 chance sur 4 d&#039;appliquer le bon filtre. Par analyses statistiques, Alice et Bob peuvent détecter de manière sure s&#039;il y a eu espionnage sur le canal quantique.&lt;br /&gt;
&lt;br /&gt;
==== Attaque de l&#039;homme du milieu ====&lt;br /&gt;
&lt;br /&gt;
Comme toute méthode d&#039;échange de clé privée, cette méthode reste vulnérable à une attaque de type &amp;quot;homme du milieu&amp;quot;. Il faut donc la combiner avec un mécanisme de certification afin de s&#039;assurer de l&#039;identité des protagonistes.&lt;br /&gt;
&lt;br /&gt;
== Ressources ==&lt;br /&gt;
&lt;br /&gt;
* Hamlin, N., &amp;amp; Webb, W. A. (2012). Representing Positive Integers as a Sum of Linear Recurrence Sequences, Fibonacci Quart. 50 (2012), no. 2, 99–105. Fibonacci Quart, 50(2), 99-105.&lt;br /&gt;
&lt;br /&gt;
* Moyer, N. T. (2010). A knapsack-type cryptographic system using algebraic number rings (Doctoral dissertation, Washington State University).&lt;/div&gt;</summary>
		<author><name>JulianaLeclaire</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8704</id>
		<title>Projets étudiants cryptographie et sécurité/Leclaire DeRoland Crypto Quantique</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8704"/>
		<updated>2016-03-18T12:41:04Z</updated>

		<summary type="html">&lt;p&gt;JulianaLeclaire : /* Mise en danger de la sécurité */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Auteurs : Juliana Leclaire, Céline de Roland ===&lt;br /&gt;
&lt;br /&gt;
== La cryptographie et la cryptanalyse dans le contexte de l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
L&#039;informatique quantique se base sur la superposition de plusieurs états quantiques pour améliorer les capacités de calculs. Ce domaine pose un vrai problème dans la sécurité de l&#039;internet qui utilise des algorithmes de chiffrement asymétriques pour les connexions SSL/TLS, paiements en ligne. Les nouveaux ordinateurs avec leur rapidité de calcul va pouvoir casser ces différents algorithmes de chiffrement asymétriques présents dans le Web.&lt;br /&gt;
&lt;br /&gt;
Il existe différents acteurs qui se penchent sur ce domaine. Notamment, la NSA, Google qui tentent de construire leur propre ordinateur quantique, des scientifiques qui se réunissent pour trouver des solutions.&lt;br /&gt;
Dans cette page, nous allons nous demander en quoi l&#039;informatique quantique peut changer le Web d&#039;aujourd&#039;hui et comment faire face à cette arrivée ?&lt;br /&gt;
&lt;br /&gt;
=== Fonctionnement de l&#039;informatique quantique ===&lt;br /&gt;
&lt;br /&gt;
==== Qubit ====&lt;br /&gt;
&lt;br /&gt;
C&#039;est la plus petite unité de stockage de l&#039;information. Etant donné deux états de base &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;, un qubit non mesuré se trouve dans l&#039;état &amp;lt;math&amp;gt;\alpha \left|0\right\rangle + \beta \left|1\right\rangle&amp;lt;/math&amp;gt;, avec &amp;lt;math&amp;gt;\left|\alpha\right|^2 + \left|\beta\right|^2 = 1&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Lorsqu&#039;on mesure la valeur du qubit, on obtient soit &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; soit &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\left|\alpha\right|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et  &amp;lt;math&amp;gt;\left|\beta\right|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Théorème de non clonage ====&lt;br /&gt;
&lt;br /&gt;
Ce théorème, découvert en 1982 par Wootters, Zurek, et Dieks, consiste à dire qu&#039;il est impossible de recopier un qubit à l&#039;identique. La démonstration (par l&#039;absurde) repose sur le fait que pouvoir mettre le qubit B dans le même état que le qubit A implique que le qubit B soit déjà dans le même état que le qubit A.&lt;br /&gt;
On en déduit qu&#039;il est impossible de faire une opération de type copier/coller en informatique quantique.&lt;br /&gt;
&lt;br /&gt;
==== Téléportation quantique ====&lt;br /&gt;
&lt;br /&gt;
La téléportation quantique consiste à transférer l&#039;état du qubit A dans le qubit B. Il s&#039;agit donc cette fois d&#039;une opération de couper/coller.&lt;br /&gt;
L&#039;intrication quantique se produit lorsque deux qubits sont dépendants l&#039;un de l&#039;autre même s&#039;ils sont éloignés l&#039;un de l&#039;autre. Dans cet état, si on mesure l&#039;un des deux, alors la mesure du deuxième est déterminée.&lt;br /&gt;
Sans entrer dans la théorie physique sous jacente, nous pouvons dire qu&#039;un canal EPR permet de réaliser cette opération de couper/coller en transmettant une information entre deux ordinateurs quantiques.&lt;br /&gt;
&lt;br /&gt;
== Chiffrement asymétrique face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
=== Mise en danger de la sécurité du Web ===&lt;br /&gt;
&lt;br /&gt;
Les ordinateurs quantiques présentent une rapidité de calculs extrêmement plus rapide que les ordinateurs classiques. Ces ordinateurs n&#039;auraient aucune difficulté pour casser les codes de sécurité actuels reposant principalement sur des chiffrements à clé publique. Un chiffrement asymétrique chiffre avec sa clé publique et déchiffre avec sa clé privée. Si nous prenons l&#039;exemple de RSA, un chiffrement asymétrique, qui a la particularité d&#039;être couramment utilisé dans la sécurité du Web. RSA repose sur la génération de grands nombres premiers.&lt;br /&gt;
&lt;br /&gt;
* Initialisation : &lt;br /&gt;
** module &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; (grand nombre entier codé sur 2048 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;p, q&amp;lt;/math&amp;gt; : nombres premiers de même taille (codés sur 1024 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;\phi\left(N\right) = \left(p-1\right) * \left(q - 1\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd\left(e, \phi\left(N\right)\right) = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
** Choisir &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;ed \equiv 1 [\phi(N)]&amp;lt;/math&amp;gt; et donc &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; est l&#039;inverse modulaire de &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; avec &amp;lt;math&amp;gt;d = e^{-1} \left[\phi\left(N\right)\right]&amp;lt;/math&amp;gt;&lt;br /&gt;
** Clé publique : &amp;lt;math&amp;gt;pk\left(n, e\right)&amp;lt;/math&amp;gt;, Clé privée : &amp;lt;math&amp;gt;sk\left(d, p, q\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
* Chiffrement : &amp;lt;math&amp;gt;c = m^e \left[N\right]&amp;lt;/math&amp;gt;&lt;br /&gt;
* Déchiffrement : &amp;lt;math&amp;gt;m = c^d \left[N\right]&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La sécurité de RSA repose sur la difficulté à factoriser des grands nombres en nombres premiers. En effet avec &amp;lt;math&amp;gt;\left(N, e\right)&amp;lt;/math&amp;gt; il faudrait pouvoir retrouver &amp;lt;math&amp;gt;\left(d, p, q\right)&amp;lt;/math&amp;gt; où &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt; correspondant à un cassage total. D&#039;après le théorème de factorisation unique tout entier &amp;lt;math&amp;gt;n \ge 2&amp;lt;/math&amp;gt; admet une factorisation unique en produit de puissances de nombres entiers. Des algorithmes de factorisation ont été trouvés pour différentes tailles de module &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; mais pour pallier à ces attaques on augmente la longueur du module. De nos jours pour sécuriser le chiffrement il faut utiliser des modules strictement supérieur à 2048 bits. Cependant avec l&#039;informatique quantique il ne suffira plus d&#039;augmenter la taille du module car la puissance de calcul permettra de casser le chiffrement, peu importe la taille du module.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Exemple : &amp;lt;math&amp;gt;N=15&amp;lt;/math&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* Je choisis &amp;lt;math&amp;gt;x=7&amp;lt;/math&amp;gt;&lt;br /&gt;
* En calculant successivement les valeurs de &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; on trouve &amp;lt;math&amp;gt;7^{4} \equiv 1 [15]&amp;lt;/math&amp;gt;.&lt;br /&gt;
* &amp;lt;math&amp;gt;r=4&amp;lt;/math&amp;gt; est pair&lt;br /&gt;
* &amp;lt;math&amp;gt;pgcd(x^{\frac{r}{2}}+1,15) = 5&amp;lt;/math&amp;gt;. Donc &amp;lt;math&amp;gt;P = 5&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;Q = pgcd(x^{\frac{r}{2}}-1,15) = 3&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Chiffrement symétrique face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
=== Mise en danger de la sécurité ===&lt;br /&gt;
&lt;br /&gt;
Si les ordinateurs quantiques présentent une rapidité de calcul permettant d&#039;effectuer des factorisations impossibles pour un ordinateur classique, il nous semble logique qu&#039;ils soient également performants pour effectuer des attaques de type force brute sur des messages chiffrés par une clé privée qui aurait été transmise par un moyen plus sûr que RSA.&lt;br /&gt;
 &lt;br /&gt;
Un ordinateur quantique pourrait réaliser le déchiffrement avec toutes les clés possibles en parallèle. Ce qui permettrait de cryptanalyser le message en une seule opération. Le principe se base sur la superposition quantique. On superposerait toutes les clés possibles et on déchiffrerait. On obtiendrait alors une superposition de résultats. Le point le plus difficile est de trouver le résultat correct à partir de la superposition obtenue. En effet, le principe selon lequel mesurer une valeur modifie cette valeur fait qu&#039;en observant une superposition, on obtient un seul état aléatoire. Une solution à ce problème a été trouvé par Lov Grover en &amp;lt;math&amp;gt;O\left(\sqrt{n}\right)&amp;lt;/math&amp;gt; étapes.&lt;br /&gt;
&lt;br /&gt;
== Résistances aux attaques quantiques ==&lt;br /&gt;
&lt;br /&gt;
=== Chiffrement asyémétrique ===&lt;br /&gt;
&lt;br /&gt;
Depuis 2006, une conférence internationnale se produit chaque année nommée &amp;quot;Post Quantum Cryptography&amp;quot; dans l&#039;intention de trouver des algorithmes résistants aux ordinateurs quantiques. Nathan Hamlin et William Webb, des mathématiciens, ont présenté récemment un algorithme de chiffrement asymétrique possiblement capable de faire face aux attaques quantiques. Cet algorithme part de l&#039;ancien chiffrement de Merkle-Hellman qui se base sur le problème du sac à dos nommé &amp;quot;Knapsack code&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
==== Problème du sac-à-dos ====&lt;br /&gt;
&lt;br /&gt;
Etant donné un sac avec une capacité &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; et plusieurs objets de poids différents. Le problème du sac-à-dos consiste à trouver la suite d&#039;objets qui entre dans le sac et qui maximise sa capacité. En partant d&#039;un n-uplet &amp;lt;math&amp;gt;\left(a_1, a_2, ..., a_n\right) \in N^n&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;S \in N&amp;lt;/math&amp;gt;, il faut trouver un n-uplet binaire &amp;lt;math&amp;gt;\left(x_1, x_2, ..., x_n\right) \in {0,1}^n&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;S = \sum_{i=1}^{n} \left(a_{i}*x_{i}\right) &amp;lt;/math&amp;gt;. La somme &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; des poids des objets choisi ne doit pas dépasser la capacité du sac à dos. Pour résoudre ce problème il n&#039;existe pas d&#039;algorithme avec une compléxité polynomial.&lt;br /&gt;
&lt;br /&gt;
==== Chiffrement de Merkle-Hellman ====&lt;br /&gt;
&lt;br /&gt;
Cet algorithme de chiffrement à clé publique repose sur la complexité algorithmique du problème de sac-à-dos et utilise des suites de poids super-croissante pour le secret et non super-croissante pour la clé publique. Si les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt; n&#039;ont pas de propriétés particulières, la recherche du message codé en binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt; est un problème difficile. Il n&#039;existe pas d&#039;algorithme polynomial pour le résoudre. Pour pouvoir retrouver facilement ce n-uplet une propriété super-croissante est utilisé sur les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt;. Un n-uplet b est super-croissant si &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\forall i \in [2,n] b_{i} &amp;gt; \sum_{j=1}^{i-1} {b_{j}}&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ainsi en utilisant un algorithme glouton nous pouvons retrouver le n-uplet binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt;. L&#039;objet le plus lourd est dans le sac si le poids du sac est supérieur au poids de celui-ci. La propriété super-croissante assure que la somme des poids des autres objets sera toujours inférieur au poids de l&#039;objet le plus lourd. L&#039;algorithme est le suivant :&lt;br /&gt;
&lt;br /&gt;
  Pour i de n à 1 faire&lt;br /&gt;
    Si &amp;lt;math&amp;gt;b_{i} \le S&amp;lt;/math&amp;gt; alors&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i}  = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
    Sinon&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i} = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
    &amp;lt;math&amp;gt;S = S - x_{i} * b_{i}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Par exemple en prenant la suite des puissances de 2 comme suite super-croissante  avec : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = \left\{ 1,4,8 \right\}, b = \left\{ 1,2,4,8 \right\}, S = 13 \left(1+4+8\right), n = 4&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 4 : 8 \le 13 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_4 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 3 : 4 \le 5 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_3 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 2 : 2 \le 1 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    non donc &amp;lt;math&amp;gt;x_2 = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 1 : 1 \le 1 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_1 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  =&amp;gt; &amp;lt;math&amp;gt;m = \left\{ 1,0,1,1 \right\}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour chiffrer un n-uplet binaire &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;, l&#039;idée de Merkle et Hellman est de &amp;quot;tordre&amp;quot; les &amp;lt;math&amp;gt;b_{i}&amp;lt;/math&amp;gt; pour obtenir un n-uplet qui n&#039;est plus super-croissant. On choisit un nombre &amp;lt;math&amp;gt;u &amp;gt; \sum_{i=1}^{n} {b_{i}}&amp;lt;/math&amp;gt;, un entier &amp;lt;math&amp;gt;v \in N&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd\left(u,v\right) = 1&amp;lt;/math&amp;gt;. Ce qui donne &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; inversible dans &amp;lt;math&amp;gt;Z/uZ&amp;lt;/math&amp;gt;. On prend &amp;lt;math&amp;gt;w = v^{-1} \in Z/uZ&amp;lt;/math&amp;gt;. On calcule ensuite le n-uplet &amp;lt;math&amp;gt;a = \left(a_1, ..., a_n\right)&amp;lt;/math&amp;gt; tel que pour tout &amp;lt;math&amp;gt;i \in [1,n]&amp;lt;/math&amp;gt; on a : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = a * b_i (mod u)&amp;lt;/math&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
Le n-uplet &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; détermine la clé public tandis que &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt; sont gardés secrets. &amp;lt;br/&amp;gt;&lt;br /&gt;
Pour envoyer le message m à Bob, Alice va, à partir de l&#039;écriture de m en binaire, calculer la somme : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;c = \sum_{i=1}^{n} {m_i * a_i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
qu&#039;elle va envoyer à Bob. Bob pour déchiffrer va devoir procéder à plusieurs étapes : &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt;c = \sum_{i=1}^{n} {m_i * a_i}&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * a_i * w} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * a_i * v^{-1}} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * v * b_i * v^{-1}} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * b_i} [u]&amp;lt;/math&amp;gt;                      =&amp;gt; Comme &amp;lt;math&amp;gt; \sum_{i=1}^{n} {m_i * b_i} &amp;lt; \sum_{i=1}^{n} {b_i}&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt; u &amp;gt; \sum_{i=1}^{n} {b_i}&amp;lt;/math&amp;gt; le modulo &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; peut s&#039;enlever&lt;br /&gt;
* &amp;lt;math&amp;gt;= \sum_{i=1}^{n} {m_i * b_i}&amp;lt;/math&amp;gt;                           =&amp;gt; Comme &amp;lt;math&amp;gt;b_i&amp;lt;/math&amp;gt; est super-croissant Bob peut facilement retrouver &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Nouveau chiffrement de Hamlin-Webb ====&lt;br /&gt;
&lt;br /&gt;
Le chiffrement de Merkle et Hellman a été abandonné à la suite des découvertes de Shamir qui a découvert une attaque permettant de retrouver le message secret en utilisant un algorithme de la réduction des réseaux. Nathan Hamlin et William Webb reprennent cet algorithme en le renforçant par un changement de représentation des entiers. Ils ont prouvé q&#039;un entier pouvait être représenté de manière unique avec des suites récurrentes. Le secret &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; n&#039;est alors plus modélisé en binaire mais en une suite récurrente plus complexe à craquer.&lt;br /&gt;
&lt;br /&gt;
===== Représentation du message =====&lt;br /&gt;
La représentation d&#039;un nombre &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; en une suite récurrente &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt; se fait en utilisant une suite augmentée &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; de &amp;lt;math&amp;gt;1 \le j \le 10&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;0 \le i \le n&amp;lt;/math&amp;gt; donné par : &amp;lt;br/&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{1,i}= u_i&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{2,i}= u_i + u_{i-2}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{3,i}= u_i + u_{i-2} + u_{i-3}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{4,i}= u_i + u_{i-2} + 2u_{i-3}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{5,i}= u_i + u_{i-2} +2u_{i-3} + u_{i-4}&amp;lt;/math&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{10,i}= u_i + u_{i-2} +2u_{i-3} + 6u_{i-4}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le suite &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; correspond au blocs de chiffre autorisés. Dans l&#039;exemple &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; se calcule dans des groupes de taille 10 mais ce nombre peut varier. La suite &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; se calcule en utilisant un algorithme glouton sur &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; où l&#039;on remplace la somme en une expression dans la suite &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
Le message secret &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; est représenté par : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; M = \sum_{i=0}^{n-1} {d_i * u_i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
avec &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt; calculé grâce à &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
où les &amp;lt;math&amp;gt;d_i&amp;lt;/math&amp;gt; sont des blocs de chiffre lexicographiquement inférieur à &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Chiffrement symétrique quantique ===&lt;br /&gt;
&lt;br /&gt;
==== Photons polarisés ====&lt;br /&gt;
&lt;br /&gt;
Les photons sont des particules qui composent la lumière. Ils sont composés d&#039;un champ électrique et d&#039;un champ magnétique. Une lumière non-polarisée se caractérise par une différence d&#039;orientation du champ électrique suivant les photons. Ainsi la polarisation consiste, grâce à un polarisateur, d&#039;obtenir des photons avec un champ électrique orienté de manière identique. Les filtres polarisants permettent d&#039;appliquer un angle d&#039;orientation sur les photons afin :&lt;br /&gt;
* de récupérer les photons polarisés parallèlement par rapport à cet angle&lt;br /&gt;
* d&#039;éliminer les photons polarisés perpendiculairement&lt;br /&gt;
* de récupérer les photons polarisés intermédiaires avec une probabilité de &amp;lt;math&amp;gt;\cos\left(\alpha\right)&amp;lt;/math&amp;gt; en les réinitialisant avec une polarisation égale à l&#039;angle d&#039;orientation du filtre.&lt;br /&gt;
&lt;br /&gt;
Du fait de la transformation de polarisation il est impossible de connaître l&#039;information sur les polarisations précédentes du photons.&lt;br /&gt;
&lt;br /&gt;
==== Distribution des clés ====&lt;br /&gt;
&lt;br /&gt;
Le chiffrement quantique offre un moyen sécurisé d’échanger des clés privées pour réaliser des chiffrements symétriques. Cette distribution s’appuie sur l’envoi de photons polarisés par fibre optique. Les personnes s&#039;échangeant les clés doivent avoir accès à un canal quantique et un canal classique. Le principe est le suivant :&lt;br /&gt;
* Alice envoie par le canal quantique une suite de photons polarisés aléatoirement.&lt;br /&gt;
* Bob applique un filtre de polarisation qui lui donne 1 chance sur 2 (et 1 chance sur 4 s&#039;il y a eu un espion) d&#039;appliquer le bon filtre et les renvoit à Alice.&lt;br /&gt;
* Alice et Bob s&#039;échangent par le canal classique leur choix des axes de polarisation éliminant ainsi les erreurs.&lt;br /&gt;
* Alice communique une partie de ses résultats.&lt;br /&gt;
* Maintenant que Bob connait les axes qu&#039;Alice a appliqué et les résultats il peut savoir si la communication a été écoutée ou non. Ceci étant grâce au théorème de non clonage où il est impossible de cloner des états quantiques inconnus.&lt;br /&gt;
&lt;br /&gt;
Ce principe permet de détecter facilement s&#039;il y a eu des intrusions durant la communication de la clé privée. En effet si un attaquant écoute il lui faut récupérer les photons envoyés par Alice mesurer la polarisation et renvoyer le photon à Bob. Pour mesurer la polarisation l&#039;attaquant doit appliquer, comme Bob, un filtre pour deviner la base qu&#039;Alice a envoyé. Ainsi cette intrusion a 1 chance sur 2 d&#039;introduire des incohérences dans les données d&#039;Alice et Bob en envoyant 1 fois sur 2 un mauvais photon. Par la suite Bob obtient donc 1 chance sur 4 d&#039;appliquer le bon filtre. Par analyses statistiques, Alice et Bob peuvent détecter de manière sure s&#039;il y a eu espionnage sur le canal quantique.&lt;br /&gt;
&lt;br /&gt;
==== Attaque de l&#039;homme du milieu ====&lt;br /&gt;
&lt;br /&gt;
Comme toute méthode d&#039;échange de clé privée, cette méthode reste vulnérable à une attaque de type &amp;quot;homme du milieu&amp;quot;. Il faut donc la combiner avec un mécanisme de certification afin de s&#039;assurer de l&#039;identité des protagonistes.&lt;br /&gt;
&lt;br /&gt;
== Ressources ==&lt;br /&gt;
&lt;br /&gt;
* Hamlin, N., &amp;amp; Webb, W. A. (2012). Representing Positive Integers as a Sum of Linear Recurrence Sequences, Fibonacci Quart. 50 (2012), no. 2, 99–105. Fibonacci Quart, 50(2), 99-105.&lt;br /&gt;
&lt;br /&gt;
* Moyer, N. T. (2010). A knapsack-type cryptographic system using algebraic number rings (Doctoral dissertation, Washington State University).&lt;/div&gt;</summary>
		<author><name>JulianaLeclaire</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8703</id>
		<title>Projets étudiants cryptographie et sécurité/Leclaire DeRoland Crypto Quantique</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8703"/>
		<updated>2016-03-18T12:40:12Z</updated>

		<summary type="html">&lt;p&gt;JulianaLeclaire : /* Chiffrement à clé privée face à l&amp;#039;informatique quantique */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Auteurs : Juliana Leclaire, Céline de Roland ===&lt;br /&gt;
&lt;br /&gt;
== La cryptographie et la cryptanalyse dans le contexte de l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
L&#039;informatique quantique se base sur la superposition de plusieurs états quantiques pour améliorer les capacités de calculs. Ce domaine pose un vrai problème dans la sécurité de l&#039;internet qui utilise des algorithmes de chiffrement asymétriques pour les connexions SSL/TLS, paiements en ligne. Les nouveaux ordinateurs avec leur rapidité de calcul va pouvoir casser ces différents algorithmes de chiffrement asymétriques présents dans le Web.&lt;br /&gt;
&lt;br /&gt;
Il existe différents acteurs qui se penchent sur ce domaine. Notamment, la NSA, Google qui tentent de construire leur propre ordinateur quantique, des scientifiques qui se réunissent pour trouver des solutions.&lt;br /&gt;
Dans cette page, nous allons nous demander en quoi l&#039;informatique quantique peut changer le Web d&#039;aujourd&#039;hui et comment faire face à cette arrivée ?&lt;br /&gt;
&lt;br /&gt;
=== Fonctionnement de l&#039;informatique quantique ===&lt;br /&gt;
&lt;br /&gt;
==== Qubit ====&lt;br /&gt;
&lt;br /&gt;
C&#039;est la plus petite unité de stockage de l&#039;information. Etant donné deux états de base &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;, un qubit non mesuré se trouve dans l&#039;état &amp;lt;math&amp;gt;\alpha \left|0\right\rangle + \beta \left|1\right\rangle&amp;lt;/math&amp;gt;, avec &amp;lt;math&amp;gt;\left|\alpha\right|^2 + \left|\beta\right|^2 = 1&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Lorsqu&#039;on mesure la valeur du qubit, on obtient soit &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; soit &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\left|\alpha\right|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et  &amp;lt;math&amp;gt;\left|\beta\right|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Théorème de non clonage ====&lt;br /&gt;
&lt;br /&gt;
Ce théorème, découvert en 1982 par Wootters, Zurek, et Dieks, consiste à dire qu&#039;il est impossible de recopier un qubit à l&#039;identique. La démonstration (par l&#039;absurde) repose sur le fait que pouvoir mettre le qubit B dans le même état que le qubit A implique que le qubit B soit déjà dans le même état que le qubit A.&lt;br /&gt;
On en déduit qu&#039;il est impossible de faire une opération de type copier/coller en informatique quantique.&lt;br /&gt;
&lt;br /&gt;
==== Téléportation quantique ====&lt;br /&gt;
&lt;br /&gt;
La téléportation quantique consiste à transférer l&#039;état du qubit A dans le qubit B. Il s&#039;agit donc cette fois d&#039;une opération de couper/coller.&lt;br /&gt;
L&#039;intrication quantique se produit lorsque deux qubits sont dépendants l&#039;un de l&#039;autre même s&#039;ils sont éloignés l&#039;un de l&#039;autre. Dans cet état, si on mesure l&#039;un des deux, alors la mesure du deuxième est déterminée.&lt;br /&gt;
Sans entrer dans la théorie physique sous jacente, nous pouvons dire qu&#039;un canal EPR permet de réaliser cette opération de couper/coller en transmettant une information entre deux ordinateurs quantiques.&lt;br /&gt;
&lt;br /&gt;
== Chiffrement asymétrique face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
=== Mise en danger de la sécurité du Web ===&lt;br /&gt;
&lt;br /&gt;
Les ordinateurs quantiques présentent une rapidité de calculs extrêmement plus rapide que les ordinateurs classiques. Ces ordinateurs n&#039;auraient aucune difficulté pour casser les codes de sécurité actuels reposant principalement sur des chiffrements à clé publique. Un chiffrement asymétrique chiffre avec sa clé publique et déchiffre avec sa clé privée. Si nous prenons l&#039;exemple de RSA, un chiffrement asymétrique, qui a la particularité d&#039;être couramment utilisé dans la sécurité du Web. RSA repose sur la génération de grands nombres premiers.&lt;br /&gt;
&lt;br /&gt;
* Initialisation : &lt;br /&gt;
** module &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; (grand nombre entier codé sur 2048 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;p, q&amp;lt;/math&amp;gt; : nombres premiers de même taille (codés sur 1024 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;\phi\left(N\right) = \left(p-1\right) * \left(q - 1\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd\left(e, \phi\left(N\right)\right) = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
** Choisir &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;ed \equiv 1 [\phi(N)]&amp;lt;/math&amp;gt; et donc &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; est l&#039;inverse modulaire de &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; avec &amp;lt;math&amp;gt;d = e^{-1} \left[\phi\left(N\right)\right]&amp;lt;/math&amp;gt;&lt;br /&gt;
** Clé publique : &amp;lt;math&amp;gt;pk\left(n, e\right)&amp;lt;/math&amp;gt;, Clé privée : &amp;lt;math&amp;gt;sk\left(d, p, q\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
* Chiffrement : &amp;lt;math&amp;gt;c = m^e \left[N\right]&amp;lt;/math&amp;gt;&lt;br /&gt;
* Déchiffrement : &amp;lt;math&amp;gt;m = c^d \left[N\right]&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La sécurité de RSA repose sur la difficulté à factoriser des grands nombres en nombres premiers. En effet avec &amp;lt;math&amp;gt;\left(N, e\right)&amp;lt;/math&amp;gt; il faudrait pouvoir retrouver &amp;lt;math&amp;gt;\left(d, p, q\right)&amp;lt;/math&amp;gt; où &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt; correspondant à un cassage total. D&#039;après le théorème de factorisation unique tout entier &amp;lt;math&amp;gt;n \ge 2&amp;lt;/math&amp;gt; admet une factorisation unique en produit de puissances de nombres entiers. Des algorithmes de factorisation ont été trouvés pour différentes tailles de module &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; mais pour pallier à ces attaques on augmente la longueur du module. De nos jours pour sécuriser le chiffrement il faut utiliser des modules strictement supérieur à 2048 bits. Cependant avec l&#039;informatique quantique il ne suffira plus d&#039;augmenter la taille du module car la puissance de calcul permettra de casser le chiffrement, peu importe la taille du module.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Exemple : &amp;lt;math&amp;gt;N=15&amp;lt;/math&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* Je choisis &amp;lt;math&amp;gt;x=7&amp;lt;/math&amp;gt;&lt;br /&gt;
* En calculant successivement les valeurs de &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; on trouve &amp;lt;math&amp;gt;7^{4} \equiv 1 [15]&amp;lt;/math&amp;gt;.&lt;br /&gt;
* &amp;lt;math&amp;gt;r=4&amp;lt;/math&amp;gt; est pair&lt;br /&gt;
* &amp;lt;math&amp;gt;pgcd(x^{\frac{r}{2}}+1,15) = 5&amp;lt;/math&amp;gt;. Donc &amp;lt;math&amp;gt;P = 5&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;Q = pgcd(x^{\frac{r}{2}}-1,15) = 3&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Chiffrement symétrique face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
=== Mise en danger de la sécurité ===&lt;br /&gt;
&lt;br /&gt;
Si les ordinateurs quantiques présentent une rapidité de calcul permettant d&#039;effectuer des factorisations impossibles pour un ordinateur classique, il nous semble logique qu&#039;ils soient également performants pour effectuer des attaques de type force brute sur des messages chiffrés par une clé privée qui aurait été transmise par un moyen plus sûr que RSA.&lt;br /&gt;
 &lt;br /&gt;
Un ordinateur quantique pourrait réaliser le déchiffrement avec toutes les clés possibles en parallèle. Ce qui permettrait de cryptanalyser le message en une seule opération. Le principe se base sur la superposition quantique. On superposerait toutes les clés possibles et on déchiffrerait. On obtiendrait alors une superposition de résultats. Le point le plus difficile est de trouver le résultat correct à partir de la superposition obtenue. En effet, le principe selon lequel mesurer une valeur modifie cette valeur fait qu&#039;en observant une superposition, on obtient un seul état aléatoire. Une solution à ce problème a été trouvé par Lov Grover en $O(\sqrt{n})$ étapes.&lt;br /&gt;
&lt;br /&gt;
== Résistances aux attaques quantiques ==&lt;br /&gt;
&lt;br /&gt;
=== Chiffrement asyémétrique ===&lt;br /&gt;
&lt;br /&gt;
Depuis 2006, une conférence internationnale se produit chaque année nommée &amp;quot;Post Quantum Cryptography&amp;quot; dans l&#039;intention de trouver des algorithmes résistants aux ordinateurs quantiques. Nathan Hamlin et William Webb, des mathématiciens, ont présenté récemment un algorithme de chiffrement asymétrique possiblement capable de faire face aux attaques quantiques. Cet algorithme part de l&#039;ancien chiffrement de Merkle-Hellman qui se base sur le problème du sac à dos nommé &amp;quot;Knapsack code&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
==== Problème du sac-à-dos ====&lt;br /&gt;
&lt;br /&gt;
Etant donné un sac avec une capacité &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; et plusieurs objets de poids différents. Le problème du sac-à-dos consiste à trouver la suite d&#039;objets qui entre dans le sac et qui maximise sa capacité. En partant d&#039;un n-uplet &amp;lt;math&amp;gt;\left(a_1, a_2, ..., a_n\right) \in N^n&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;S \in N&amp;lt;/math&amp;gt;, il faut trouver un n-uplet binaire &amp;lt;math&amp;gt;\left(x_1, x_2, ..., x_n\right) \in {0,1}^n&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;S = \sum_{i=1}^{n} \left(a_{i}*x_{i}\right) &amp;lt;/math&amp;gt;. La somme &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; des poids des objets choisi ne doit pas dépasser la capacité du sac à dos. Pour résoudre ce problème il n&#039;existe pas d&#039;algorithme avec une compléxité polynomial.&lt;br /&gt;
&lt;br /&gt;
==== Chiffrement de Merkle-Hellman ====&lt;br /&gt;
&lt;br /&gt;
Cet algorithme de chiffrement à clé publique repose sur la complexité algorithmique du problème de sac-à-dos et utilise des suites de poids super-croissante pour le secret et non super-croissante pour la clé publique. Si les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt; n&#039;ont pas de propriétés particulières, la recherche du message codé en binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt; est un problème difficile. Il n&#039;existe pas d&#039;algorithme polynomial pour le résoudre. Pour pouvoir retrouver facilement ce n-uplet une propriété super-croissante est utilisé sur les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt;. Un n-uplet b est super-croissant si &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\forall i \in [2,n] b_{i} &amp;gt; \sum_{j=1}^{i-1} {b_{j}}&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ainsi en utilisant un algorithme glouton nous pouvons retrouver le n-uplet binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt;. L&#039;objet le plus lourd est dans le sac si le poids du sac est supérieur au poids de celui-ci. La propriété super-croissante assure que la somme des poids des autres objets sera toujours inférieur au poids de l&#039;objet le plus lourd. L&#039;algorithme est le suivant :&lt;br /&gt;
&lt;br /&gt;
  Pour i de n à 1 faire&lt;br /&gt;
    Si &amp;lt;math&amp;gt;b_{i} \le S&amp;lt;/math&amp;gt; alors&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i}  = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
    Sinon&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i} = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
    &amp;lt;math&amp;gt;S = S - x_{i} * b_{i}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Par exemple en prenant la suite des puissances de 2 comme suite super-croissante  avec : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = \left\{ 1,4,8 \right\}, b = \left\{ 1,2,4,8 \right\}, S = 13 \left(1+4+8\right), n = 4&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 4 : 8 \le 13 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_4 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 3 : 4 \le 5 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_3 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 2 : 2 \le 1 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    non donc &amp;lt;math&amp;gt;x_2 = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 1 : 1 \le 1 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_1 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  =&amp;gt; &amp;lt;math&amp;gt;m = \left\{ 1,0,1,1 \right\}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour chiffrer un n-uplet binaire &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;, l&#039;idée de Merkle et Hellman est de &amp;quot;tordre&amp;quot; les &amp;lt;math&amp;gt;b_{i}&amp;lt;/math&amp;gt; pour obtenir un n-uplet qui n&#039;est plus super-croissant. On choisit un nombre &amp;lt;math&amp;gt;u &amp;gt; \sum_{i=1}^{n} {b_{i}}&amp;lt;/math&amp;gt;, un entier &amp;lt;math&amp;gt;v \in N&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd\left(u,v\right) = 1&amp;lt;/math&amp;gt;. Ce qui donne &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; inversible dans &amp;lt;math&amp;gt;Z/uZ&amp;lt;/math&amp;gt;. On prend &amp;lt;math&amp;gt;w = v^{-1} \in Z/uZ&amp;lt;/math&amp;gt;. On calcule ensuite le n-uplet &amp;lt;math&amp;gt;a = \left(a_1, ..., a_n\right)&amp;lt;/math&amp;gt; tel que pour tout &amp;lt;math&amp;gt;i \in [1,n]&amp;lt;/math&amp;gt; on a : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = a * b_i (mod u)&amp;lt;/math&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
Le n-uplet &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; détermine la clé public tandis que &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt; sont gardés secrets. &amp;lt;br/&amp;gt;&lt;br /&gt;
Pour envoyer le message m à Bob, Alice va, à partir de l&#039;écriture de m en binaire, calculer la somme : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;c = \sum_{i=1}^{n} {m_i * a_i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
qu&#039;elle va envoyer à Bob. Bob pour déchiffrer va devoir procéder à plusieurs étapes : &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt;c = \sum_{i=1}^{n} {m_i * a_i}&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * a_i * w} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * a_i * v^{-1}} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * v * b_i * v^{-1}} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * b_i} [u]&amp;lt;/math&amp;gt;                      =&amp;gt; Comme &amp;lt;math&amp;gt; \sum_{i=1}^{n} {m_i * b_i} &amp;lt; \sum_{i=1}^{n} {b_i}&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt; u &amp;gt; \sum_{i=1}^{n} {b_i}&amp;lt;/math&amp;gt; le modulo &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; peut s&#039;enlever&lt;br /&gt;
* &amp;lt;math&amp;gt;= \sum_{i=1}^{n} {m_i * b_i}&amp;lt;/math&amp;gt;                           =&amp;gt; Comme &amp;lt;math&amp;gt;b_i&amp;lt;/math&amp;gt; est super-croissant Bob peut facilement retrouver &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Nouveau chiffrement de Hamlin-Webb ====&lt;br /&gt;
&lt;br /&gt;
Le chiffrement de Merkle et Hellman a été abandonné à la suite des découvertes de Shamir qui a découvert une attaque permettant de retrouver le message secret en utilisant un algorithme de la réduction des réseaux. Nathan Hamlin et William Webb reprennent cet algorithme en le renforçant par un changement de représentation des entiers. Ils ont prouvé q&#039;un entier pouvait être représenté de manière unique avec des suites récurrentes. Le secret &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; n&#039;est alors plus modélisé en binaire mais en une suite récurrente plus complexe à craquer.&lt;br /&gt;
&lt;br /&gt;
===== Représentation du message =====&lt;br /&gt;
La représentation d&#039;un nombre &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; en une suite récurrente &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt; se fait en utilisant une suite augmentée &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; de &amp;lt;math&amp;gt;1 \le j \le 10&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;0 \le i \le n&amp;lt;/math&amp;gt; donné par : &amp;lt;br/&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{1,i}= u_i&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{2,i}= u_i + u_{i-2}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{3,i}= u_i + u_{i-2} + u_{i-3}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{4,i}= u_i + u_{i-2} + 2u_{i-3}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{5,i}= u_i + u_{i-2} +2u_{i-3} + u_{i-4}&amp;lt;/math&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{10,i}= u_i + u_{i-2} +2u_{i-3} + 6u_{i-4}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le suite &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; correspond au blocs de chiffre autorisés. Dans l&#039;exemple &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; se calcule dans des groupes de taille 10 mais ce nombre peut varier. La suite &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; se calcule en utilisant un algorithme glouton sur &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; où l&#039;on remplace la somme en une expression dans la suite &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
Le message secret &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; est représenté par : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; M = \sum_{i=0}^{n-1} {d_i * u_i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
avec &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt; calculé grâce à &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
où les &amp;lt;math&amp;gt;d_i&amp;lt;/math&amp;gt; sont des blocs de chiffre lexicographiquement inférieur à &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Chiffrement symétrique quantique ===&lt;br /&gt;
&lt;br /&gt;
==== Photons polarisés ====&lt;br /&gt;
&lt;br /&gt;
Les photons sont des particules qui composent la lumière. Ils sont composés d&#039;un champ électrique et d&#039;un champ magnétique. Une lumière non-polarisée se caractérise par une différence d&#039;orientation du champ électrique suivant les photons. Ainsi la polarisation consiste, grâce à un polarisateur, d&#039;obtenir des photons avec un champ électrique orienté de manière identique. Les filtres polarisants permettent d&#039;appliquer un angle d&#039;orientation sur les photons afin :&lt;br /&gt;
* de récupérer les photons polarisés parallèlement par rapport à cet angle&lt;br /&gt;
* d&#039;éliminer les photons polarisés perpendiculairement&lt;br /&gt;
* de récupérer les photons polarisés intermédiaires avec une probabilité de &amp;lt;math&amp;gt;\cos\left(\alpha\right)&amp;lt;/math&amp;gt; en les réinitialisant avec une polarisation égale à l&#039;angle d&#039;orientation du filtre.&lt;br /&gt;
&lt;br /&gt;
Du fait de la transformation de polarisation il est impossible de connaître l&#039;information sur les polarisations précédentes du photons.&lt;br /&gt;
&lt;br /&gt;
==== Distribution des clés ====&lt;br /&gt;
&lt;br /&gt;
Le chiffrement quantique offre un moyen sécurisé d’échanger des clés privées pour réaliser des chiffrements symétriques. Cette distribution s’appuie sur l’envoi de photons polarisés par fibre optique. Les personnes s&#039;échangeant les clés doivent avoir accès à un canal quantique et un canal classique. Le principe est le suivant :&lt;br /&gt;
* Alice envoie par le canal quantique une suite de photons polarisés aléatoirement.&lt;br /&gt;
* Bob applique un filtre de polarisation qui lui donne 1 chance sur 2 (et 1 chance sur 4 s&#039;il y a eu un espion) d&#039;appliquer le bon filtre et les renvoit à Alice.&lt;br /&gt;
* Alice et Bob s&#039;échangent par le canal classique leur choix des axes de polarisation éliminant ainsi les erreurs.&lt;br /&gt;
* Alice communique une partie de ses résultats.&lt;br /&gt;
* Maintenant que Bob connait les axes qu&#039;Alice a appliqué et les résultats il peut savoir si la communication a été écoutée ou non. Ceci étant grâce au théorème de non clonage où il est impossible de cloner des états quantiques inconnus.&lt;br /&gt;
&lt;br /&gt;
Ce principe permet de détecter facilement s&#039;il y a eu des intrusions durant la communication de la clé privée. En effet si un attaquant écoute il lui faut récupérer les photons envoyés par Alice mesurer la polarisation et renvoyer le photon à Bob. Pour mesurer la polarisation l&#039;attaquant doit appliquer, comme Bob, un filtre pour deviner la base qu&#039;Alice a envoyé. Ainsi cette intrusion a 1 chance sur 2 d&#039;introduire des incohérences dans les données d&#039;Alice et Bob en envoyant 1 fois sur 2 un mauvais photon. Par la suite Bob obtient donc 1 chance sur 4 d&#039;appliquer le bon filtre. Par analyses statistiques, Alice et Bob peuvent détecter de manière sure s&#039;il y a eu espionnage sur le canal quantique.&lt;br /&gt;
&lt;br /&gt;
==== Attaque de l&#039;homme du milieu ====&lt;br /&gt;
&lt;br /&gt;
Comme toute méthode d&#039;échange de clé privée, cette méthode reste vulnérable à une attaque de type &amp;quot;homme du milieu&amp;quot;. Il faut donc la combiner avec un mécanisme de certification afin de s&#039;assurer de l&#039;identité des protagonistes.&lt;br /&gt;
&lt;br /&gt;
== Ressources ==&lt;br /&gt;
&lt;br /&gt;
* Hamlin, N., &amp;amp; Webb, W. A. (2012). Representing Positive Integers as a Sum of Linear Recurrence Sequences, Fibonacci Quart. 50 (2012), no. 2, 99–105. Fibonacci Quart, 50(2), 99-105.&lt;br /&gt;
&lt;br /&gt;
* Moyer, N. T. (2010). A knapsack-type cryptographic system using algebraic number rings (Doctoral dissertation, Washington State University).&lt;/div&gt;</summary>
		<author><name>JulianaLeclaire</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8702</id>
		<title>Projets étudiants cryptographie et sécurité/Leclaire DeRoland Crypto Quantique</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8702"/>
		<updated>2016-03-18T12:39:58Z</updated>

		<summary type="html">&lt;p&gt;JulianaLeclaire : /* Chiffrement à clé publique face à l&amp;#039;informatique quantique */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Auteurs : Juliana Leclaire, Céline de Roland ===&lt;br /&gt;
&lt;br /&gt;
== La cryptographie et la cryptanalyse dans le contexte de l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
L&#039;informatique quantique se base sur la superposition de plusieurs états quantiques pour améliorer les capacités de calculs. Ce domaine pose un vrai problème dans la sécurité de l&#039;internet qui utilise des algorithmes de chiffrement asymétriques pour les connexions SSL/TLS, paiements en ligne. Les nouveaux ordinateurs avec leur rapidité de calcul va pouvoir casser ces différents algorithmes de chiffrement asymétriques présents dans le Web.&lt;br /&gt;
&lt;br /&gt;
Il existe différents acteurs qui se penchent sur ce domaine. Notamment, la NSA, Google qui tentent de construire leur propre ordinateur quantique, des scientifiques qui se réunissent pour trouver des solutions.&lt;br /&gt;
Dans cette page, nous allons nous demander en quoi l&#039;informatique quantique peut changer le Web d&#039;aujourd&#039;hui et comment faire face à cette arrivée ?&lt;br /&gt;
&lt;br /&gt;
=== Fonctionnement de l&#039;informatique quantique ===&lt;br /&gt;
&lt;br /&gt;
==== Qubit ====&lt;br /&gt;
&lt;br /&gt;
C&#039;est la plus petite unité de stockage de l&#039;information. Etant donné deux états de base &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;, un qubit non mesuré se trouve dans l&#039;état &amp;lt;math&amp;gt;\alpha \left|0\right\rangle + \beta \left|1\right\rangle&amp;lt;/math&amp;gt;, avec &amp;lt;math&amp;gt;\left|\alpha\right|^2 + \left|\beta\right|^2 = 1&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Lorsqu&#039;on mesure la valeur du qubit, on obtient soit &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; soit &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\left|\alpha\right|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et  &amp;lt;math&amp;gt;\left|\beta\right|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Théorème de non clonage ====&lt;br /&gt;
&lt;br /&gt;
Ce théorème, découvert en 1982 par Wootters, Zurek, et Dieks, consiste à dire qu&#039;il est impossible de recopier un qubit à l&#039;identique. La démonstration (par l&#039;absurde) repose sur le fait que pouvoir mettre le qubit B dans le même état que le qubit A implique que le qubit B soit déjà dans le même état que le qubit A.&lt;br /&gt;
On en déduit qu&#039;il est impossible de faire une opération de type copier/coller en informatique quantique.&lt;br /&gt;
&lt;br /&gt;
==== Téléportation quantique ====&lt;br /&gt;
&lt;br /&gt;
La téléportation quantique consiste à transférer l&#039;état du qubit A dans le qubit B. Il s&#039;agit donc cette fois d&#039;une opération de couper/coller.&lt;br /&gt;
L&#039;intrication quantique se produit lorsque deux qubits sont dépendants l&#039;un de l&#039;autre même s&#039;ils sont éloignés l&#039;un de l&#039;autre. Dans cet état, si on mesure l&#039;un des deux, alors la mesure du deuxième est déterminée.&lt;br /&gt;
Sans entrer dans la théorie physique sous jacente, nous pouvons dire qu&#039;un canal EPR permet de réaliser cette opération de couper/coller en transmettant une information entre deux ordinateurs quantiques.&lt;br /&gt;
&lt;br /&gt;
== Chiffrement asymétrique face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
=== Mise en danger de la sécurité du Web ===&lt;br /&gt;
&lt;br /&gt;
Les ordinateurs quantiques présentent une rapidité de calculs extrêmement plus rapide que les ordinateurs classiques. Ces ordinateurs n&#039;auraient aucune difficulté pour casser les codes de sécurité actuels reposant principalement sur des chiffrements à clé publique. Un chiffrement asymétrique chiffre avec sa clé publique et déchiffre avec sa clé privée. Si nous prenons l&#039;exemple de RSA, un chiffrement asymétrique, qui a la particularité d&#039;être couramment utilisé dans la sécurité du Web. RSA repose sur la génération de grands nombres premiers.&lt;br /&gt;
&lt;br /&gt;
* Initialisation : &lt;br /&gt;
** module &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; (grand nombre entier codé sur 2048 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;p, q&amp;lt;/math&amp;gt; : nombres premiers de même taille (codés sur 1024 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;\phi\left(N\right) = \left(p-1\right) * \left(q - 1\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd\left(e, \phi\left(N\right)\right) = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
** Choisir &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;ed \equiv 1 [\phi(N)]&amp;lt;/math&amp;gt; et donc &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; est l&#039;inverse modulaire de &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; avec &amp;lt;math&amp;gt;d = e^{-1} \left[\phi\left(N\right)\right]&amp;lt;/math&amp;gt;&lt;br /&gt;
** Clé publique : &amp;lt;math&amp;gt;pk\left(n, e\right)&amp;lt;/math&amp;gt;, Clé privée : &amp;lt;math&amp;gt;sk\left(d, p, q\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
* Chiffrement : &amp;lt;math&amp;gt;c = m^e \left[N\right]&amp;lt;/math&amp;gt;&lt;br /&gt;
* Déchiffrement : &amp;lt;math&amp;gt;m = c^d \left[N\right]&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La sécurité de RSA repose sur la difficulté à factoriser des grands nombres en nombres premiers. En effet avec &amp;lt;math&amp;gt;\left(N, e\right)&amp;lt;/math&amp;gt; il faudrait pouvoir retrouver &amp;lt;math&amp;gt;\left(d, p, q\right)&amp;lt;/math&amp;gt; où &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt; correspondant à un cassage total. D&#039;après le théorème de factorisation unique tout entier &amp;lt;math&amp;gt;n \ge 2&amp;lt;/math&amp;gt; admet une factorisation unique en produit de puissances de nombres entiers. Des algorithmes de factorisation ont été trouvés pour différentes tailles de module &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; mais pour pallier à ces attaques on augmente la longueur du module. De nos jours pour sécuriser le chiffrement il faut utiliser des modules strictement supérieur à 2048 bits. Cependant avec l&#039;informatique quantique il ne suffira plus d&#039;augmenter la taille du module car la puissance de calcul permettra de casser le chiffrement, peu importe la taille du module.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Exemple : &amp;lt;math&amp;gt;N=15&amp;lt;/math&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* Je choisis &amp;lt;math&amp;gt;x=7&amp;lt;/math&amp;gt;&lt;br /&gt;
* En calculant successivement les valeurs de &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; on trouve &amp;lt;math&amp;gt;7^{4} \equiv 1 [15]&amp;lt;/math&amp;gt;.&lt;br /&gt;
* &amp;lt;math&amp;gt;r=4&amp;lt;/math&amp;gt; est pair&lt;br /&gt;
* &amp;lt;math&amp;gt;pgcd(x^{\frac{r}{2}}+1,15) = 5&amp;lt;/math&amp;gt;. Donc &amp;lt;math&amp;gt;P = 5&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;Q = pgcd(x^{\frac{r}{2}}-1,15) = 3&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Chiffrement à clé privée face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
=== Mise en danger de la sécurité ===&lt;br /&gt;
&lt;br /&gt;
Si les ordinateurs quantiques présentent une rapidité de calcul permettant d&#039;effectuer des factorisations impossibles pour un ordinateur classique, il nous semble logique qu&#039;ils soient également performants pour effectuer des attaques de type force brute sur des messages chiffrés par une clé privée qui aurait été transmise par un moyen plus sûr que RSA.&lt;br /&gt;
 &lt;br /&gt;
Un ordinateur quantique pourrait réaliser le déchiffrement avec toutes les clés possibles en parallèle. Ce qui permettrait de cryptanalyser le message en une seule opération. Le principe se base sur la superposition quantique. On superposerait toutes les clés possibles et on déchiffrerait. On obtiendrait alors une superposition de résultats. Le point le plus difficile est de trouver le résultat correct à partir de la superposition obtenue. En effet, le principe selon lequel mesurer une valeur modifie cette valeur fait qu&#039;en observant une superposition, on obtient un seul état aléatoire. Une solution à ce problème a été trouvé par Lov Grover en $O(\sqrt{n})$ étapes.&lt;br /&gt;
&lt;br /&gt;
== Résistances aux attaques quantiques ==&lt;br /&gt;
&lt;br /&gt;
=== Chiffrement asyémétrique ===&lt;br /&gt;
&lt;br /&gt;
Depuis 2006, une conférence internationnale se produit chaque année nommée &amp;quot;Post Quantum Cryptography&amp;quot; dans l&#039;intention de trouver des algorithmes résistants aux ordinateurs quantiques. Nathan Hamlin et William Webb, des mathématiciens, ont présenté récemment un algorithme de chiffrement asymétrique possiblement capable de faire face aux attaques quantiques. Cet algorithme part de l&#039;ancien chiffrement de Merkle-Hellman qui se base sur le problème du sac à dos nommé &amp;quot;Knapsack code&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
==== Problème du sac-à-dos ====&lt;br /&gt;
&lt;br /&gt;
Etant donné un sac avec une capacité &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; et plusieurs objets de poids différents. Le problème du sac-à-dos consiste à trouver la suite d&#039;objets qui entre dans le sac et qui maximise sa capacité. En partant d&#039;un n-uplet &amp;lt;math&amp;gt;\left(a_1, a_2, ..., a_n\right) \in N^n&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;S \in N&amp;lt;/math&amp;gt;, il faut trouver un n-uplet binaire &amp;lt;math&amp;gt;\left(x_1, x_2, ..., x_n\right) \in {0,1}^n&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;S = \sum_{i=1}^{n} \left(a_{i}*x_{i}\right) &amp;lt;/math&amp;gt;. La somme &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; des poids des objets choisi ne doit pas dépasser la capacité du sac à dos. Pour résoudre ce problème il n&#039;existe pas d&#039;algorithme avec une compléxité polynomial.&lt;br /&gt;
&lt;br /&gt;
==== Chiffrement de Merkle-Hellman ====&lt;br /&gt;
&lt;br /&gt;
Cet algorithme de chiffrement à clé publique repose sur la complexité algorithmique du problème de sac-à-dos et utilise des suites de poids super-croissante pour le secret et non super-croissante pour la clé publique. Si les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt; n&#039;ont pas de propriétés particulières, la recherche du message codé en binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt; est un problème difficile. Il n&#039;existe pas d&#039;algorithme polynomial pour le résoudre. Pour pouvoir retrouver facilement ce n-uplet une propriété super-croissante est utilisé sur les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt;. Un n-uplet b est super-croissant si &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\forall i \in [2,n] b_{i} &amp;gt; \sum_{j=1}^{i-1} {b_{j}}&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ainsi en utilisant un algorithme glouton nous pouvons retrouver le n-uplet binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt;. L&#039;objet le plus lourd est dans le sac si le poids du sac est supérieur au poids de celui-ci. La propriété super-croissante assure que la somme des poids des autres objets sera toujours inférieur au poids de l&#039;objet le plus lourd. L&#039;algorithme est le suivant :&lt;br /&gt;
&lt;br /&gt;
  Pour i de n à 1 faire&lt;br /&gt;
    Si &amp;lt;math&amp;gt;b_{i} \le S&amp;lt;/math&amp;gt; alors&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i}  = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
    Sinon&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i} = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
    &amp;lt;math&amp;gt;S = S - x_{i} * b_{i}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Par exemple en prenant la suite des puissances de 2 comme suite super-croissante  avec : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = \left\{ 1,4,8 \right\}, b = \left\{ 1,2,4,8 \right\}, S = 13 \left(1+4+8\right), n = 4&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 4 : 8 \le 13 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_4 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 3 : 4 \le 5 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_3 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 2 : 2 \le 1 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    non donc &amp;lt;math&amp;gt;x_2 = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 1 : 1 \le 1 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_1 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  =&amp;gt; &amp;lt;math&amp;gt;m = \left\{ 1,0,1,1 \right\}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour chiffrer un n-uplet binaire &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;, l&#039;idée de Merkle et Hellman est de &amp;quot;tordre&amp;quot; les &amp;lt;math&amp;gt;b_{i}&amp;lt;/math&amp;gt; pour obtenir un n-uplet qui n&#039;est plus super-croissant. On choisit un nombre &amp;lt;math&amp;gt;u &amp;gt; \sum_{i=1}^{n} {b_{i}}&amp;lt;/math&amp;gt;, un entier &amp;lt;math&amp;gt;v \in N&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd\left(u,v\right) = 1&amp;lt;/math&amp;gt;. Ce qui donne &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; inversible dans &amp;lt;math&amp;gt;Z/uZ&amp;lt;/math&amp;gt;. On prend &amp;lt;math&amp;gt;w = v^{-1} \in Z/uZ&amp;lt;/math&amp;gt;. On calcule ensuite le n-uplet &amp;lt;math&amp;gt;a = \left(a_1, ..., a_n\right)&amp;lt;/math&amp;gt; tel que pour tout &amp;lt;math&amp;gt;i \in [1,n]&amp;lt;/math&amp;gt; on a : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = a * b_i (mod u)&amp;lt;/math&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
Le n-uplet &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; détermine la clé public tandis que &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt; sont gardés secrets. &amp;lt;br/&amp;gt;&lt;br /&gt;
Pour envoyer le message m à Bob, Alice va, à partir de l&#039;écriture de m en binaire, calculer la somme : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;c = \sum_{i=1}^{n} {m_i * a_i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
qu&#039;elle va envoyer à Bob. Bob pour déchiffrer va devoir procéder à plusieurs étapes : &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt;c = \sum_{i=1}^{n} {m_i * a_i}&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * a_i * w} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * a_i * v^{-1}} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * v * b_i * v^{-1}} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * b_i} [u]&amp;lt;/math&amp;gt;                      =&amp;gt; Comme &amp;lt;math&amp;gt; \sum_{i=1}^{n} {m_i * b_i} &amp;lt; \sum_{i=1}^{n} {b_i}&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt; u &amp;gt; \sum_{i=1}^{n} {b_i}&amp;lt;/math&amp;gt; le modulo &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; peut s&#039;enlever&lt;br /&gt;
* &amp;lt;math&amp;gt;= \sum_{i=1}^{n} {m_i * b_i}&amp;lt;/math&amp;gt;                           =&amp;gt; Comme &amp;lt;math&amp;gt;b_i&amp;lt;/math&amp;gt; est super-croissant Bob peut facilement retrouver &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Nouveau chiffrement de Hamlin-Webb ====&lt;br /&gt;
&lt;br /&gt;
Le chiffrement de Merkle et Hellman a été abandonné à la suite des découvertes de Shamir qui a découvert une attaque permettant de retrouver le message secret en utilisant un algorithme de la réduction des réseaux. Nathan Hamlin et William Webb reprennent cet algorithme en le renforçant par un changement de représentation des entiers. Ils ont prouvé q&#039;un entier pouvait être représenté de manière unique avec des suites récurrentes. Le secret &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; n&#039;est alors plus modélisé en binaire mais en une suite récurrente plus complexe à craquer.&lt;br /&gt;
&lt;br /&gt;
===== Représentation du message =====&lt;br /&gt;
La représentation d&#039;un nombre &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; en une suite récurrente &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt; se fait en utilisant une suite augmentée &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; de &amp;lt;math&amp;gt;1 \le j \le 10&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;0 \le i \le n&amp;lt;/math&amp;gt; donné par : &amp;lt;br/&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{1,i}= u_i&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{2,i}= u_i + u_{i-2}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{3,i}= u_i + u_{i-2} + u_{i-3}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{4,i}= u_i + u_{i-2} + 2u_{i-3}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{5,i}= u_i + u_{i-2} +2u_{i-3} + u_{i-4}&amp;lt;/math&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{10,i}= u_i + u_{i-2} +2u_{i-3} + 6u_{i-4}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le suite &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; correspond au blocs de chiffre autorisés. Dans l&#039;exemple &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; se calcule dans des groupes de taille 10 mais ce nombre peut varier. La suite &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; se calcule en utilisant un algorithme glouton sur &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; où l&#039;on remplace la somme en une expression dans la suite &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
Le message secret &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; est représenté par : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; M = \sum_{i=0}^{n-1} {d_i * u_i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
avec &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt; calculé grâce à &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
où les &amp;lt;math&amp;gt;d_i&amp;lt;/math&amp;gt; sont des blocs de chiffre lexicographiquement inférieur à &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Chiffrement symétrique quantique ===&lt;br /&gt;
&lt;br /&gt;
==== Photons polarisés ====&lt;br /&gt;
&lt;br /&gt;
Les photons sont des particules qui composent la lumière. Ils sont composés d&#039;un champ électrique et d&#039;un champ magnétique. Une lumière non-polarisée se caractérise par une différence d&#039;orientation du champ électrique suivant les photons. Ainsi la polarisation consiste, grâce à un polarisateur, d&#039;obtenir des photons avec un champ électrique orienté de manière identique. Les filtres polarisants permettent d&#039;appliquer un angle d&#039;orientation sur les photons afin :&lt;br /&gt;
* de récupérer les photons polarisés parallèlement par rapport à cet angle&lt;br /&gt;
* d&#039;éliminer les photons polarisés perpendiculairement&lt;br /&gt;
* de récupérer les photons polarisés intermédiaires avec une probabilité de &amp;lt;math&amp;gt;\cos\left(\alpha\right)&amp;lt;/math&amp;gt; en les réinitialisant avec une polarisation égale à l&#039;angle d&#039;orientation du filtre.&lt;br /&gt;
&lt;br /&gt;
Du fait de la transformation de polarisation il est impossible de connaître l&#039;information sur les polarisations précédentes du photons.&lt;br /&gt;
&lt;br /&gt;
==== Distribution des clés ====&lt;br /&gt;
&lt;br /&gt;
Le chiffrement quantique offre un moyen sécurisé d’échanger des clés privées pour réaliser des chiffrements symétriques. Cette distribution s’appuie sur l’envoi de photons polarisés par fibre optique. Les personnes s&#039;échangeant les clés doivent avoir accès à un canal quantique et un canal classique. Le principe est le suivant :&lt;br /&gt;
* Alice envoie par le canal quantique une suite de photons polarisés aléatoirement.&lt;br /&gt;
* Bob applique un filtre de polarisation qui lui donne 1 chance sur 2 (et 1 chance sur 4 s&#039;il y a eu un espion) d&#039;appliquer le bon filtre et les renvoit à Alice.&lt;br /&gt;
* Alice et Bob s&#039;échangent par le canal classique leur choix des axes de polarisation éliminant ainsi les erreurs.&lt;br /&gt;
* Alice communique une partie de ses résultats.&lt;br /&gt;
* Maintenant que Bob connait les axes qu&#039;Alice a appliqué et les résultats il peut savoir si la communication a été écoutée ou non. Ceci étant grâce au théorème de non clonage où il est impossible de cloner des états quantiques inconnus.&lt;br /&gt;
&lt;br /&gt;
Ce principe permet de détecter facilement s&#039;il y a eu des intrusions durant la communication de la clé privée. En effet si un attaquant écoute il lui faut récupérer les photons envoyés par Alice mesurer la polarisation et renvoyer le photon à Bob. Pour mesurer la polarisation l&#039;attaquant doit appliquer, comme Bob, un filtre pour deviner la base qu&#039;Alice a envoyé. Ainsi cette intrusion a 1 chance sur 2 d&#039;introduire des incohérences dans les données d&#039;Alice et Bob en envoyant 1 fois sur 2 un mauvais photon. Par la suite Bob obtient donc 1 chance sur 4 d&#039;appliquer le bon filtre. Par analyses statistiques, Alice et Bob peuvent détecter de manière sure s&#039;il y a eu espionnage sur le canal quantique.&lt;br /&gt;
&lt;br /&gt;
==== Attaque de l&#039;homme du milieu ====&lt;br /&gt;
&lt;br /&gt;
Comme toute méthode d&#039;échange de clé privée, cette méthode reste vulnérable à une attaque de type &amp;quot;homme du milieu&amp;quot;. Il faut donc la combiner avec un mécanisme de certification afin de s&#039;assurer de l&#039;identité des protagonistes.&lt;br /&gt;
&lt;br /&gt;
== Ressources ==&lt;br /&gt;
&lt;br /&gt;
* Hamlin, N., &amp;amp; Webb, W. A. (2012). Representing Positive Integers as a Sum of Linear Recurrence Sequences, Fibonacci Quart. 50 (2012), no. 2, 99–105. Fibonacci Quart, 50(2), 99-105.&lt;br /&gt;
&lt;br /&gt;
* Moyer, N. T. (2010). A knapsack-type cryptographic system using algebraic number rings (Doctoral dissertation, Washington State University).&lt;/div&gt;</summary>
		<author><name>JulianaLeclaire</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8701</id>
		<title>Projets étudiants cryptographie et sécurité/Leclaire DeRoland Crypto Quantique</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8701"/>
		<updated>2016-03-18T12:39:04Z</updated>

		<summary type="html">&lt;p&gt;JulianaLeclaire : /* Mise en danger de la sécurité du Web */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Auteurs : Juliana Leclaire, Céline de Roland ===&lt;br /&gt;
&lt;br /&gt;
== La cryptographie et la cryptanalyse dans le contexte de l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
L&#039;informatique quantique se base sur la superposition de plusieurs états quantiques pour améliorer les capacités de calculs. Ce domaine pose un vrai problème dans la sécurité de l&#039;internet qui utilise des algorithmes de chiffrement asymétriques pour les connexions SSL/TLS, paiements en ligne. Les nouveaux ordinateurs avec leur rapidité de calcul va pouvoir casser ces différents algorithmes de chiffrement asymétriques présents dans le Web.&lt;br /&gt;
&lt;br /&gt;
Il existe différents acteurs qui se penchent sur ce domaine. Notamment, la NSA, Google qui tentent de construire leur propre ordinateur quantique, des scientifiques qui se réunissent pour trouver des solutions.&lt;br /&gt;
Dans cette page, nous allons nous demander en quoi l&#039;informatique quantique peut changer le Web d&#039;aujourd&#039;hui et comment faire face à cette arrivée ?&lt;br /&gt;
&lt;br /&gt;
=== Fonctionnement de l&#039;informatique quantique ===&lt;br /&gt;
&lt;br /&gt;
==== Qubit ====&lt;br /&gt;
&lt;br /&gt;
C&#039;est la plus petite unité de stockage de l&#039;information. Etant donné deux états de base &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;, un qubit non mesuré se trouve dans l&#039;état &amp;lt;math&amp;gt;\alpha \left|0\right\rangle + \beta \left|1\right\rangle&amp;lt;/math&amp;gt;, avec &amp;lt;math&amp;gt;\left|\alpha\right|^2 + \left|\beta\right|^2 = 1&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Lorsqu&#039;on mesure la valeur du qubit, on obtient soit &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; soit &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\left|\alpha\right|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et  &amp;lt;math&amp;gt;\left|\beta\right|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Théorème de non clonage ====&lt;br /&gt;
&lt;br /&gt;
Ce théorème, découvert en 1982 par Wootters, Zurek, et Dieks, consiste à dire qu&#039;il est impossible de recopier un qubit à l&#039;identique. La démonstration (par l&#039;absurde) repose sur le fait que pouvoir mettre le qubit B dans le même état que le qubit A implique que le qubit B soit déjà dans le même état que le qubit A.&lt;br /&gt;
On en déduit qu&#039;il est impossible de faire une opération de type copier/coller en informatique quantique.&lt;br /&gt;
&lt;br /&gt;
==== Téléportation quantique ====&lt;br /&gt;
&lt;br /&gt;
La téléportation quantique consiste à transférer l&#039;état du qubit A dans le qubit B. Il s&#039;agit donc cette fois d&#039;une opération de couper/coller.&lt;br /&gt;
L&#039;intrication quantique se produit lorsque deux qubits sont dépendants l&#039;un de l&#039;autre même s&#039;ils sont éloignés l&#039;un de l&#039;autre. Dans cet état, si on mesure l&#039;un des deux, alors la mesure du deuxième est déterminée.&lt;br /&gt;
Sans entrer dans la théorie physique sous jacente, nous pouvons dire qu&#039;un canal EPR permet de réaliser cette opération de couper/coller en transmettant une information entre deux ordinateurs quantiques.&lt;br /&gt;
&lt;br /&gt;
== Chiffrement à clé publique face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
=== Mise en danger de la sécurité du Web ===&lt;br /&gt;
&lt;br /&gt;
Les ordinateurs quantiques présentent une rapidité de calculs extrêmement plus rapide que les ordinateurs classiques. Ces ordinateurs n&#039;auraient aucune difficulté pour casser les codes de sécurité actuels reposant principalement sur des chiffrements à clé publique. Un chiffrement asymétrique chiffre avec sa clé publique et déchiffre avec sa clé privée. Si nous prenons l&#039;exemple de RSA, un chiffrement asymétrique, qui a la particularité d&#039;être couramment utilisé dans la sécurité du Web. RSA repose sur la génération de grands nombres premiers.&lt;br /&gt;
&lt;br /&gt;
* Initialisation : &lt;br /&gt;
** module &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; (grand nombre entier codé sur 2048 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;p, q&amp;lt;/math&amp;gt; : nombres premiers de même taille (codés sur 1024 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;\phi\left(N\right) = \left(p-1\right) * \left(q - 1\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd\left(e, \phi\left(N\right)\right) = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
** Choisir &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;ed \equiv 1 [\phi(N)]&amp;lt;/math&amp;gt; et donc &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; est l&#039;inverse modulaire de &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; avec &amp;lt;math&amp;gt;d = e^{-1} \left[\phi\left(N\right)\right]&amp;lt;/math&amp;gt;&lt;br /&gt;
** Clé publique : &amp;lt;math&amp;gt;pk\left(n, e\right)&amp;lt;/math&amp;gt;, Clé privée : &amp;lt;math&amp;gt;sk\left(d, p, q\right)&amp;lt;/math&amp;gt;&lt;br /&gt;
* Chiffrement : &amp;lt;math&amp;gt;c = m^e \left[N\right]&amp;lt;/math&amp;gt;&lt;br /&gt;
* Déchiffrement : &amp;lt;math&amp;gt;m = c^d \left[N\right]&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La sécurité de RSA repose sur la difficulté à factoriser des grands nombres en nombres premiers. En effet avec &amp;lt;math&amp;gt;\left(N, e\right)&amp;lt;/math&amp;gt; il faudrait pouvoir retrouver &amp;lt;math&amp;gt;\left(d, p, q\right)&amp;lt;/math&amp;gt; où &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt; correspondant à un cassage total. D&#039;après le théorème de factorisation unique tout entier &amp;lt;math&amp;gt;n \ge 2&amp;lt;/math&amp;gt; admet une factorisation unique en produit de puissances de nombres entiers. Des algorithmes de factorisation ont été trouvés pour différentes tailles de module &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; mais pour pallier à ces attaques on augmente la longueur du module. De nos jours pour sécuriser le chiffrement il faut utiliser des modules strictement supérieur à 2048 bits. Cependant avec l&#039;informatique quantique il ne suffira plus d&#039;augmenter la taille du module car la puissance de calcul permettra de casser le chiffrement, peu importe la taille du module.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Exemple : &amp;lt;math&amp;gt;N=15&amp;lt;/math&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* Je choisis &amp;lt;math&amp;gt;x=7&amp;lt;/math&amp;gt;&lt;br /&gt;
* En calculant successivement les valeurs de &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; on trouve &amp;lt;math&amp;gt;7^{4} \equiv 1 [15]&amp;lt;/math&amp;gt;.&lt;br /&gt;
* &amp;lt;math&amp;gt;r=4&amp;lt;/math&amp;gt; est pair&lt;br /&gt;
* &amp;lt;math&amp;gt;pgcd(x^{\frac{r}{2}}+1,15) = 5&amp;lt;/math&amp;gt;. Donc &amp;lt;math&amp;gt;P = 5&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;Q = pgcd(x^{\frac{r}{2}}-1,15) = 3&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Chiffrement à clé privée face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
=== Mise en danger de la sécurité ===&lt;br /&gt;
&lt;br /&gt;
Si les ordinateurs quantiques présentent une rapidité de calcul permettant d&#039;effectuer des factorisations impossibles pour un ordinateur classique, il nous semble logique qu&#039;ils soient également performants pour effectuer des attaques de type force brute sur des messages chiffrés par une clé privée qui aurait été transmise par un moyen plus sûr que RSA.&lt;br /&gt;
 &lt;br /&gt;
Un ordinateur quantique pourrait réaliser le déchiffrement avec toutes les clés possibles en parallèle. Ce qui permettrait de cryptanalyser le message en une seule opération. Le principe se base sur la superposition quantique. On superposerait toutes les clés possibles et on déchiffrerait. On obtiendrait alors une superposition de résultats. Le point le plus difficile est de trouver le résultat correct à partir de la superposition obtenue. En effet, le principe selon lequel mesurer une valeur modifie cette valeur fait qu&#039;en observant une superposition, on obtient un seul état aléatoire. Une solution à ce problème a été trouvé par Lov Grover en $O(\sqrt{n})$ étapes.&lt;br /&gt;
&lt;br /&gt;
== Résistances aux attaques quantiques ==&lt;br /&gt;
&lt;br /&gt;
=== Chiffrement asyémétrique ===&lt;br /&gt;
&lt;br /&gt;
Depuis 2006, une conférence internationnale se produit chaque année nommée &amp;quot;Post Quantum Cryptography&amp;quot; dans l&#039;intention de trouver des algorithmes résistants aux ordinateurs quantiques. Nathan Hamlin et William Webb, des mathématiciens, ont présenté récemment un algorithme de chiffrement asymétrique possiblement capable de faire face aux attaques quantiques. Cet algorithme part de l&#039;ancien chiffrement de Merkle-Hellman qui se base sur le problème du sac à dos nommé &amp;quot;Knapsack code&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
==== Problème du sac-à-dos ====&lt;br /&gt;
&lt;br /&gt;
Etant donné un sac avec une capacité &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; et plusieurs objets de poids différents. Le problème du sac-à-dos consiste à trouver la suite d&#039;objets qui entre dans le sac et qui maximise sa capacité. En partant d&#039;un n-uplet &amp;lt;math&amp;gt;\left(a_1, a_2, ..., a_n\right) \in N^n&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;S \in N&amp;lt;/math&amp;gt;, il faut trouver un n-uplet binaire &amp;lt;math&amp;gt;\left(x_1, x_2, ..., x_n\right) \in {0,1}^n&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;S = \sum_{i=1}^{n} \left(a_{i}*x_{i}\right) &amp;lt;/math&amp;gt;. La somme &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; des poids des objets choisi ne doit pas dépasser la capacité du sac à dos. Pour résoudre ce problème il n&#039;existe pas d&#039;algorithme avec une compléxité polynomial.&lt;br /&gt;
&lt;br /&gt;
==== Chiffrement de Merkle-Hellman ====&lt;br /&gt;
&lt;br /&gt;
Cet algorithme de chiffrement à clé publique repose sur la complexité algorithmique du problème de sac-à-dos et utilise des suites de poids super-croissante pour le secret et non super-croissante pour la clé publique. Si les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt; n&#039;ont pas de propriétés particulières, la recherche du message codé en binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt; est un problème difficile. Il n&#039;existe pas d&#039;algorithme polynomial pour le résoudre. Pour pouvoir retrouver facilement ce n-uplet une propriété super-croissante est utilisé sur les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt;. Un n-uplet b est super-croissant si &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\forall i \in [2,n] b_{i} &amp;gt; \sum_{j=1}^{i-1} {b_{j}}&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ainsi en utilisant un algorithme glouton nous pouvons retrouver le n-uplet binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt;. L&#039;objet le plus lourd est dans le sac si le poids du sac est supérieur au poids de celui-ci. La propriété super-croissante assure que la somme des poids des autres objets sera toujours inférieur au poids de l&#039;objet le plus lourd. L&#039;algorithme est le suivant :&lt;br /&gt;
&lt;br /&gt;
  Pour i de n à 1 faire&lt;br /&gt;
    Si &amp;lt;math&amp;gt;b_{i} \le S&amp;lt;/math&amp;gt; alors&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i}  = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
    Sinon&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i} = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
    &amp;lt;math&amp;gt;S = S - x_{i} * b_{i}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Par exemple en prenant la suite des puissances de 2 comme suite super-croissante  avec : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = \left\{ 1,4,8 \right\}, b = \left\{ 1,2,4,8 \right\}, S = 13 \left(1+4+8\right), n = 4&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 4 : 8 \le 13 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_4 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 3 : 4 \le 5 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_3 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 2 : 2 \le 1 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    non donc &amp;lt;math&amp;gt;x_2 = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 1 : 1 \le 1 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_1 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  =&amp;gt; &amp;lt;math&amp;gt;m = \left\{ 1,0,1,1 \right\}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour chiffrer un n-uplet binaire &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;, l&#039;idée de Merkle et Hellman est de &amp;quot;tordre&amp;quot; les &amp;lt;math&amp;gt;b_{i}&amp;lt;/math&amp;gt; pour obtenir un n-uplet qui n&#039;est plus super-croissant. On choisit un nombre &amp;lt;math&amp;gt;u &amp;gt; \sum_{i=1}^{n} {b_{i}}&amp;lt;/math&amp;gt;, un entier &amp;lt;math&amp;gt;v \in N&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd\left(u,v\right) = 1&amp;lt;/math&amp;gt;. Ce qui donne &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; inversible dans &amp;lt;math&amp;gt;Z/uZ&amp;lt;/math&amp;gt;. On prend &amp;lt;math&amp;gt;w = v^{-1} \in Z/uZ&amp;lt;/math&amp;gt;. On calcule ensuite le n-uplet &amp;lt;math&amp;gt;a = \left(a_1, ..., a_n\right)&amp;lt;/math&amp;gt; tel que pour tout &amp;lt;math&amp;gt;i \in [1,n]&amp;lt;/math&amp;gt; on a : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = a * b_i (mod u)&amp;lt;/math&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
Le n-uplet &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; détermine la clé public tandis que &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt; sont gardés secrets. &amp;lt;br/&amp;gt;&lt;br /&gt;
Pour envoyer le message m à Bob, Alice va, à partir de l&#039;écriture de m en binaire, calculer la somme : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;c = \sum_{i=1}^{n} {m_i * a_i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
qu&#039;elle va envoyer à Bob. Bob pour déchiffrer va devoir procéder à plusieurs étapes : &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt;c = \sum_{i=1}^{n} {m_i * a_i}&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * a_i * w} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * a_i * v^{-1}} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * v * b_i * v^{-1}} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * b_i} [u]&amp;lt;/math&amp;gt;                      =&amp;gt; Comme &amp;lt;math&amp;gt; \sum_{i=1}^{n} {m_i * b_i} &amp;lt; \sum_{i=1}^{n} {b_i}&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt; u &amp;gt; \sum_{i=1}^{n} {b_i}&amp;lt;/math&amp;gt; le modulo &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; peut s&#039;enlever&lt;br /&gt;
* &amp;lt;math&amp;gt;= \sum_{i=1}^{n} {m_i * b_i}&amp;lt;/math&amp;gt;                           =&amp;gt; Comme &amp;lt;math&amp;gt;b_i&amp;lt;/math&amp;gt; est super-croissant Bob peut facilement retrouver &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Nouveau chiffrement de Hamlin-Webb ====&lt;br /&gt;
&lt;br /&gt;
Le chiffrement de Merkle et Hellman a été abandonné à la suite des découvertes de Shamir qui a découvert une attaque permettant de retrouver le message secret en utilisant un algorithme de la réduction des réseaux. Nathan Hamlin et William Webb reprennent cet algorithme en le renforçant par un changement de représentation des entiers. Ils ont prouvé q&#039;un entier pouvait être représenté de manière unique avec des suites récurrentes. Le secret &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; n&#039;est alors plus modélisé en binaire mais en une suite récurrente plus complexe à craquer.&lt;br /&gt;
&lt;br /&gt;
===== Représentation du message =====&lt;br /&gt;
La représentation d&#039;un nombre &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; en une suite récurrente &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt; se fait en utilisant une suite augmentée &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; de &amp;lt;math&amp;gt;1 \le j \le 10&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;0 \le i \le n&amp;lt;/math&amp;gt; donné par : &amp;lt;br/&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{1,i}= u_i&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{2,i}= u_i + u_{i-2}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{3,i}= u_i + u_{i-2} + u_{i-3}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{4,i}= u_i + u_{i-2} + 2u_{i-3}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{5,i}= u_i + u_{i-2} +2u_{i-3} + u_{i-4}&amp;lt;/math&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{10,i}= u_i + u_{i-2} +2u_{i-3} + 6u_{i-4}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le suite &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; correspond au blocs de chiffre autorisés. Dans l&#039;exemple &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; se calcule dans des groupes de taille 10 mais ce nombre peut varier. La suite &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; se calcule en utilisant un algorithme glouton sur &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; où l&#039;on remplace la somme en une expression dans la suite &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
Le message secret &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; est représenté par : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; M = \sum_{i=0}^{n-1} {d_i * u_i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
avec &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt; calculé grâce à &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
où les &amp;lt;math&amp;gt;d_i&amp;lt;/math&amp;gt; sont des blocs de chiffre lexicographiquement inférieur à &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Chiffrement symétrique quantique ===&lt;br /&gt;
&lt;br /&gt;
==== Photons polarisés ====&lt;br /&gt;
&lt;br /&gt;
Les photons sont des particules qui composent la lumière. Ils sont composés d&#039;un champ électrique et d&#039;un champ magnétique. Une lumière non-polarisée se caractérise par une différence d&#039;orientation du champ électrique suivant les photons. Ainsi la polarisation consiste, grâce à un polarisateur, d&#039;obtenir des photons avec un champ électrique orienté de manière identique. Les filtres polarisants permettent d&#039;appliquer un angle d&#039;orientation sur les photons afin :&lt;br /&gt;
* de récupérer les photons polarisés parallèlement par rapport à cet angle&lt;br /&gt;
* d&#039;éliminer les photons polarisés perpendiculairement&lt;br /&gt;
* de récupérer les photons polarisés intermédiaires avec une probabilité de &amp;lt;math&amp;gt;\cos\left(\alpha\right)&amp;lt;/math&amp;gt; en les réinitialisant avec une polarisation égale à l&#039;angle d&#039;orientation du filtre.&lt;br /&gt;
&lt;br /&gt;
Du fait de la transformation de polarisation il est impossible de connaître l&#039;information sur les polarisations précédentes du photons.&lt;br /&gt;
&lt;br /&gt;
==== Distribution des clés ====&lt;br /&gt;
&lt;br /&gt;
Le chiffrement quantique offre un moyen sécurisé d’échanger des clés privées pour réaliser des chiffrements symétriques. Cette distribution s’appuie sur l’envoi de photons polarisés par fibre optique. Les personnes s&#039;échangeant les clés doivent avoir accès à un canal quantique et un canal classique. Le principe est le suivant :&lt;br /&gt;
* Alice envoie par le canal quantique une suite de photons polarisés aléatoirement.&lt;br /&gt;
* Bob applique un filtre de polarisation qui lui donne 1 chance sur 2 (et 1 chance sur 4 s&#039;il y a eu un espion) d&#039;appliquer le bon filtre et les renvoit à Alice.&lt;br /&gt;
* Alice et Bob s&#039;échangent par le canal classique leur choix des axes de polarisation éliminant ainsi les erreurs.&lt;br /&gt;
* Alice communique une partie de ses résultats.&lt;br /&gt;
* Maintenant que Bob connait les axes qu&#039;Alice a appliqué et les résultats il peut savoir si la communication a été écoutée ou non. Ceci étant grâce au théorème de non clonage où il est impossible de cloner des états quantiques inconnus.&lt;br /&gt;
&lt;br /&gt;
Ce principe permet de détecter facilement s&#039;il y a eu des intrusions durant la communication de la clé privée. En effet si un attaquant écoute il lui faut récupérer les photons envoyés par Alice mesurer la polarisation et renvoyer le photon à Bob. Pour mesurer la polarisation l&#039;attaquant doit appliquer, comme Bob, un filtre pour deviner la base qu&#039;Alice a envoyé. Ainsi cette intrusion a 1 chance sur 2 d&#039;introduire des incohérences dans les données d&#039;Alice et Bob en envoyant 1 fois sur 2 un mauvais photon. Par la suite Bob obtient donc 1 chance sur 4 d&#039;appliquer le bon filtre. Par analyses statistiques, Alice et Bob peuvent détecter de manière sure s&#039;il y a eu espionnage sur le canal quantique.&lt;br /&gt;
&lt;br /&gt;
==== Attaque de l&#039;homme du milieu ====&lt;br /&gt;
&lt;br /&gt;
Comme toute méthode d&#039;échange de clé privée, cette méthode reste vulnérable à une attaque de type &amp;quot;homme du milieu&amp;quot;. Il faut donc la combiner avec un mécanisme de certification afin de s&#039;assurer de l&#039;identité des protagonistes.&lt;br /&gt;
&lt;br /&gt;
== Ressources ==&lt;br /&gt;
&lt;br /&gt;
* Hamlin, N., &amp;amp; Webb, W. A. (2012). Representing Positive Integers as a Sum of Linear Recurrence Sequences, Fibonacci Quart. 50 (2012), no. 2, 99–105. Fibonacci Quart, 50(2), 99-105.&lt;br /&gt;
&lt;br /&gt;
* Moyer, N. T. (2010). A knapsack-type cryptographic system using algebraic number rings (Doctoral dissertation, Washington State University).&lt;/div&gt;</summary>
		<author><name>JulianaLeclaire</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8700</id>
		<title>Projets étudiants cryptographie et sécurité/Leclaire DeRoland Crypto Quantique</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8700"/>
		<updated>2016-03-18T12:35:52Z</updated>

		<summary type="html">&lt;p&gt;JulianaLeclaire : /* Mise en danger de la sécurité du Web */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Auteurs : Juliana Leclaire, Céline de Roland ===&lt;br /&gt;
&lt;br /&gt;
== La cryptographie et la cryptanalyse dans le contexte de l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
L&#039;informatique quantique se base sur la superposition de plusieurs états quantiques pour améliorer les capacités de calculs. Ce domaine pose un vrai problème dans la sécurité de l&#039;internet qui utilise des algorithmes de chiffrement asymétriques pour les connexions SSL/TLS, paiements en ligne. Les nouveaux ordinateurs avec leur rapidité de calcul va pouvoir casser ces différents algorithmes de chiffrement asymétriques présents dans le Web.&lt;br /&gt;
&lt;br /&gt;
Il existe différents acteurs qui se penchent sur ce domaine. Notamment, la NSA, Google qui tentent de construire leur propre ordinateur quantique, des scientifiques qui se réunissent pour trouver des solutions.&lt;br /&gt;
Dans cette page, nous allons nous demander en quoi l&#039;informatique quantique peut changer le Web d&#039;aujourd&#039;hui et comment faire face à cette arrivée ?&lt;br /&gt;
&lt;br /&gt;
=== Fonctionnement de l&#039;informatique quantique ===&lt;br /&gt;
&lt;br /&gt;
==== Qubit ====&lt;br /&gt;
&lt;br /&gt;
C&#039;est la plus petite unité de stockage de l&#039;information. Etant donné deux états de base &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;, un qubit non mesuré se trouve dans l&#039;état &amp;lt;math&amp;gt;\alpha \left|0\right\rangle + \beta \left|1\right\rangle&amp;lt;/math&amp;gt;, avec &amp;lt;math&amp;gt;\left|\alpha\right|^2 + \left|\beta\right|^2 = 1&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Lorsqu&#039;on mesure la valeur du qubit, on obtient soit &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; soit &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\left|\alpha\right|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et  &amp;lt;math&amp;gt;\left|\beta\right|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Théorème de non clonage ====&lt;br /&gt;
&lt;br /&gt;
Ce théorème, découvert en 1982 par Wootters, Zurek, et Dieks, consiste à dire qu&#039;il est impossible de recopier un qubit à l&#039;identique. La démonstration (par l&#039;absurde) repose sur le fait que pouvoir mettre le qubit B dans le même état que le qubit A implique que le qubit B soit déjà dans le même état que le qubit A.&lt;br /&gt;
On en déduit qu&#039;il est impossible de faire une opération de type copier/coller en informatique quantique.&lt;br /&gt;
&lt;br /&gt;
==== Téléportation quantique ====&lt;br /&gt;
&lt;br /&gt;
La téléportation quantique consiste à transférer l&#039;état du qubit A dans le qubit B. Il s&#039;agit donc cette fois d&#039;une opération de couper/coller.&lt;br /&gt;
L&#039;intrication quantique se produit lorsque deux qubits sont dépendants l&#039;un de l&#039;autre même s&#039;ils sont éloignés l&#039;un de l&#039;autre. Dans cet état, si on mesure l&#039;un des deux, alors la mesure du deuxième est déterminée.&lt;br /&gt;
Sans entrer dans la théorie physique sous jacente, nous pouvons dire qu&#039;un canal EPR permet de réaliser cette opération de couper/coller en transmettant une information entre deux ordinateurs quantiques.&lt;br /&gt;
&lt;br /&gt;
== Chiffrement à clé publique face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
=== Mise en danger de la sécurité du Web ===&lt;br /&gt;
&lt;br /&gt;
Les ordinateurs quantiques présentent une rapidité de calculs extrêmement plus rapide que les ordinateurs classiques. Ces ordinateurs n&#039;auraient aucune difficulté pour casser les codes de sécurité actuels reposant principalement sur des chiffrements à clé publique. Un chiffrement asymétrique chiffre avec sa clé publique et déchiffre avec sa clé privée. Si nous prenons l&#039;exemple de RSA, un chiffrement asymétrique, qui a la particularité d&#039;être couramment utilisé dans la sécurité du Web. RSA repose sur la génération de grands nombres premiers.&lt;br /&gt;
&lt;br /&gt;
* Initialisation : &lt;br /&gt;
** module &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; (grand nombre entier codé sur 2048 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;p, q&amp;lt;/math&amp;gt; : nombres premiers de même taille (codés sur 1024 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;\phi(N) = (p-1) * (q - 1)&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd(e, \phi(N)) = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
** Choisir &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;ed \equiv 1 [\phi(N)]&amp;lt;/math&amp;gt; et donc &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; est l&#039;inverse modulaire de &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; avec &amp;lt;math&amp;gt;d = e^-1 [\phi(N)]&amp;lt;/math&amp;gt;&lt;br /&gt;
** Clé publique : &amp;lt;math&amp;gt;pk(n, e)&amp;lt;/math&amp;gt;, Clé privée : &amp;lt;math&amp;gt;sk(d, p, q)&amp;lt;/math&amp;gt;&lt;br /&gt;
* Chiffrement : &amp;lt;math&amp;gt;c = m^e [N]&amp;lt;/math&amp;gt;&lt;br /&gt;
* Déchiffrement : &amp;lt;math&amp;gt;m = c^d [N]&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La sécurité de RSA repose sur la difficulté à factoriser des grands nombres en nombres premiers. En effet avec &amp;lt;math&amp;gt;\left(N, e\right)&amp;lt;/math&amp;gt; il faudrait pouvoir retrouver &amp;lt;math&amp;gt;\left(d, p, q\right)&amp;lt;/math&amp;gt; où &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt; correspondant à un cassage total. D&#039;après le théorème de factorisation unique tout entier &amp;lt;math&amp;gt;n \ge 2&amp;lt;/math&amp;gt; admet une factorisation unique en produit de puissances de nombres entiers. Des algorithmes de factorisation ont été trouvés pour différentes tailles de module &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; mais pour pallier à ces attaques on augmente la longueur du module. De nos jours pour sécuriser le chiffrement il faut utiliser des modules strictement supérieur à 2048 bits. Cependant avec l&#039;informatique quantique il ne suffira plus d&#039;augmenter la taille du module car la puissance de calcul permettra de casser le chiffrement, peu importe la taille du module.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Exemple : &amp;lt;math&amp;gt;N=15&amp;lt;/math&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* Je choisis &amp;lt;math&amp;gt;x=7&amp;lt;/math&amp;gt;&lt;br /&gt;
* En calculant successivement les valeurs de &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; on trouve &amp;lt;math&amp;gt;7^{4} \equiv 1 [15]&amp;lt;/math&amp;gt;.&lt;br /&gt;
* &amp;lt;math&amp;gt;r=4&amp;lt;/math&amp;gt; est pair&lt;br /&gt;
* &amp;lt;math&amp;gt;pgcd(x^{\frac{r}{2}}+1,15) = 5&amp;lt;/math&amp;gt;. Donc &amp;lt;math&amp;gt;P = 5&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;Q = pgcd(x^{\frac{r}{2}}-1,15) = 3&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Chiffrement à clé privée face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
=== Mise en danger de la sécurité ===&lt;br /&gt;
&lt;br /&gt;
Si les ordinateurs quantiques présentent une rapidité de calcul permettant d&#039;effectuer des factorisations impossibles pour un ordinateur classique, il nous semble logique qu&#039;ils soient également performants pour effectuer des attaques de type force brute sur des messages chiffrés par une clé privée qui aurait été transmise par un moyen plus sûr que RSA.&lt;br /&gt;
 &lt;br /&gt;
Un ordinateur quantique pourrait réaliser le déchiffrement avec toutes les clés possibles en parallèle. Ce qui permettrait de cryptanalyser le message en une seule opération. Le principe se base sur la superposition quantique. On superposerait toutes les clés possibles et on déchiffrerait. On obtiendrait alors une superposition de résultats. Le point le plus difficile est de trouver le résultat correct à partir de la superposition obtenue. En effet, le principe selon lequel mesurer une valeur modifie cette valeur fait qu&#039;en observant une superposition, on obtient un seul état aléatoire. Une solution à ce problème a été trouvé par Lov Grover en $O(\sqrt{n})$ étapes.&lt;br /&gt;
&lt;br /&gt;
== Résistances aux attaques quantiques ==&lt;br /&gt;
&lt;br /&gt;
=== Chiffrement asyémétrique ===&lt;br /&gt;
&lt;br /&gt;
Depuis 2006, une conférence internationnale se produit chaque année nommée &amp;quot;Post Quantum Cryptography&amp;quot; dans l&#039;intention de trouver des algorithmes résistants aux ordinateurs quantiques. Nathan Hamlin et William Webb, des mathématiciens, ont présenté récemment un algorithme de chiffrement asymétrique possiblement capable de faire face aux attaques quantiques. Cet algorithme part de l&#039;ancien chiffrement de Merkle-Hellman qui se base sur le problème du sac à dos nommé &amp;quot;Knapsack code&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
==== Problème du sac-à-dos ====&lt;br /&gt;
&lt;br /&gt;
Etant donné un sac avec une capacité &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; et plusieurs objets de poids différents. Le problème du sac-à-dos consiste à trouver la suite d&#039;objets qui entre dans le sac et qui maximise sa capacité. En partant d&#039;un n-uplet &amp;lt;math&amp;gt;\left(a_1, a_2, ..., a_n\right) \in N^n&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;S \in N&amp;lt;/math&amp;gt;, il faut trouver un n-uplet binaire &amp;lt;math&amp;gt;\left(x_1, x_2, ..., x_n\right) \in {0,1}^n&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;S = \sum_{i=1}^{n} \left(a_{i}*x_{i}\right) &amp;lt;/math&amp;gt;. La somme &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; des poids des objets choisi ne doit pas dépasser la capacité du sac à dos. Pour résoudre ce problème il n&#039;existe pas d&#039;algorithme avec une compléxité polynomial.&lt;br /&gt;
&lt;br /&gt;
==== Chiffrement de Merkle-Hellman ====&lt;br /&gt;
&lt;br /&gt;
Cet algorithme de chiffrement à clé publique repose sur la complexité algorithmique du problème de sac-à-dos et utilise des suites de poids super-croissante pour le secret et non super-croissante pour la clé publique. Si les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt; n&#039;ont pas de propriétés particulières, la recherche du message codé en binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt; est un problème difficile. Il n&#039;existe pas d&#039;algorithme polynomial pour le résoudre. Pour pouvoir retrouver facilement ce n-uplet une propriété super-croissante est utilisé sur les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt;. Un n-uplet b est super-croissant si &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\forall i \in [2,n] b_{i} &amp;gt; \sum_{j=1}^{i-1} {b_{j}}&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ainsi en utilisant un algorithme glouton nous pouvons retrouver le n-uplet binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt;. L&#039;objet le plus lourd est dans le sac si le poids du sac est supérieur au poids de celui-ci. La propriété super-croissante assure que la somme des poids des autres objets sera toujours inférieur au poids de l&#039;objet le plus lourd. L&#039;algorithme est le suivant :&lt;br /&gt;
&lt;br /&gt;
  Pour i de n à 1 faire&lt;br /&gt;
    Si &amp;lt;math&amp;gt;b_{i} \le S&amp;lt;/math&amp;gt; alors&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i}  = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
    Sinon&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i} = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
    &amp;lt;math&amp;gt;S = S - x_{i} * b_{i}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Par exemple en prenant la suite des puissances de 2 comme suite super-croissante  avec : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = \left\{ 1,4,8 \right\}, b = \left\{ 1,2,4,8 \right\}, S = 13 \left(1+4+8\right), n = 4&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 4 : 8 \le 13 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_4 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 3 : 4 \le 5 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_3 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 2 : 2 \le 1 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    non donc &amp;lt;math&amp;gt;x_2 = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 1 : 1 \le 1 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_1 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  =&amp;gt; &amp;lt;math&amp;gt;m = \left\{ 1,0,1,1 \right\}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour chiffrer un n-uplet binaire &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;, l&#039;idée de Merkle et Hellman est de &amp;quot;tordre&amp;quot; les &amp;lt;math&amp;gt;b_{i}&amp;lt;/math&amp;gt; pour obtenir un n-uplet qui n&#039;est plus super-croissant. On choisit un nombre &amp;lt;math&amp;gt;u &amp;gt; \sum_{i=1}^{n} {b_{i}}&amp;lt;/math&amp;gt;, un entier &amp;lt;math&amp;gt;v \in N&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd\left(u,v\right) = 1&amp;lt;/math&amp;gt;. Ce qui donne &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; inversible dans &amp;lt;math&amp;gt;Z/uZ&amp;lt;/math&amp;gt;. On prend &amp;lt;math&amp;gt;w = v^{-1} \in Z/uZ&amp;lt;/math&amp;gt;. On calcule ensuite le n-uplet &amp;lt;math&amp;gt;a = \left(a_1, ..., a_n\right)&amp;lt;/math&amp;gt; tel que pour tout &amp;lt;math&amp;gt;i \in [1,n]&amp;lt;/math&amp;gt; on a : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = a * b_i (mod u)&amp;lt;/math&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
Le n-uplet &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; détermine la clé public tandis que &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt; sont gardés secrets. &amp;lt;br/&amp;gt;&lt;br /&gt;
Pour envoyer le message m à Bob, Alice va, à partir de l&#039;écriture de m en binaire, calculer la somme : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;c = \sum_{i=1}^{n} {m_i * a_i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
qu&#039;elle va envoyer à Bob. Bob pour déchiffrer va devoir procéder à plusieurs étapes : &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt;c = \sum_{i=1}^{n} {m_i * a_i}&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * a_i * w} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * a_i * v^{-1}} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * v * b_i * v^{-1}} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * b_i} [u]&amp;lt;/math&amp;gt;                      =&amp;gt; Comme &amp;lt;math&amp;gt; \sum_{i=1}^{n} {m_i * b_i} &amp;lt; \sum_{i=1}^{n} {b_i}&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt; u &amp;gt; \sum_{i=1}^{n} {b_i}&amp;lt;/math&amp;gt; le modulo &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; peut s&#039;enlever&lt;br /&gt;
* &amp;lt;math&amp;gt;= \sum_{i=1}^{n} {m_i * b_i}&amp;lt;/math&amp;gt;                           =&amp;gt; Comme &amp;lt;math&amp;gt;b_i&amp;lt;/math&amp;gt; est super-croissant Bob peut facilement retrouver &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Nouveau chiffrement de Hamlin-Webb ====&lt;br /&gt;
&lt;br /&gt;
Le chiffrement de Merkle et Hellman a été abandonné à la suite des découvertes de Shamir qui a découvert une attaque permettant de retrouver le message secret en utilisant un algorithme de la réduction des réseaux. Nathan Hamlin et William Webb reprennent cet algorithme en le renforçant par un changement de représentation des entiers. Ils ont prouvé q&#039;un entier pouvait être représenté de manière unique avec des suites récurrentes. Le secret &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; n&#039;est alors plus modélisé en binaire mais en une suite récurrente plus complexe à craquer.&lt;br /&gt;
&lt;br /&gt;
===== Représentation du message =====&lt;br /&gt;
La représentation d&#039;un nombre &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; en une suite récurrente &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt; se fait en utilisant une suite augmentée &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; de &amp;lt;math&amp;gt;1 \le j \le 10&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;0 \le i \le n&amp;lt;/math&amp;gt; donné par : &amp;lt;br/&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{1,i}= u_i&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{2,i}= u_i + u_{i-2}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{3,i}= u_i + u_{i-2} + u_{i-3}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{4,i}= u_i + u_{i-2} + 2u_{i-3}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{5,i}= u_i + u_{i-2} +2u_{i-3} + u_{i-4}&amp;lt;/math&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{10,i}= u_i + u_{i-2} +2u_{i-3} + 6u_{i-4}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le suite &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; correspond au blocs de chiffre autorisés. Dans l&#039;exemple &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; se calcule dans des groupes de taille 10 mais ce nombre peut varier. La suite &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; se calcule en utilisant un algorithme glouton sur &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; où l&#039;on remplace la somme en une expression dans la suite &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
Le message secret &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; est représenté par : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; M = \sum_{i=0}^{n-1} {d_i * u_i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
avec &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt; calculé grâce à &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
où les &amp;lt;math&amp;gt;d_i&amp;lt;/math&amp;gt; sont des blocs de chiffre lexicographiquement inférieur à &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Chiffrement symétrique quantique ===&lt;br /&gt;
&lt;br /&gt;
==== Photons polarisés ====&lt;br /&gt;
&lt;br /&gt;
Les photons sont des particules qui composent la lumière. Ils sont composés d&#039;un champ électrique et d&#039;un champ magnétique. Une lumière non-polarisée se caractérise par une différence d&#039;orientation du champ électrique suivant les photons. Ainsi la polarisation consiste, grâce à un polarisateur, d&#039;obtenir des photons avec un champ électrique orienté de manière identique. Les filtres polarisants permettent d&#039;appliquer un angle d&#039;orientation sur les photons afin :&lt;br /&gt;
* de récupérer les photons polarisés parallèlement par rapport à cet angle&lt;br /&gt;
* d&#039;éliminer les photons polarisés perpendiculairement&lt;br /&gt;
* de récupérer les photons polarisés intermédiaires avec une probabilité de &amp;lt;math&amp;gt;\cos\left(\alpha\right)&amp;lt;/math&amp;gt; en les réinitialisant avec une polarisation égale à l&#039;angle d&#039;orientation du filtre.&lt;br /&gt;
&lt;br /&gt;
Du fait de la transformation de polarisation il est impossible de connaître l&#039;information sur les polarisations précédentes du photons.&lt;br /&gt;
&lt;br /&gt;
==== Distribution des clés ====&lt;br /&gt;
&lt;br /&gt;
Le chiffrement quantique offre un moyen sécurisé d’échanger des clés privées pour réaliser des chiffrements symétriques. Cette distribution s’appuie sur l’envoi de photons polarisés par fibre optique. Les personnes s&#039;échangeant les clés doivent avoir accès à un canal quantique et un canal classique. Le principe est le suivant :&lt;br /&gt;
* Alice envoie par le canal quantique une suite de photons polarisés aléatoirement.&lt;br /&gt;
* Bob applique un filtre de polarisation qui lui donne 1 chance sur 2 (et 1 chance sur 4 s&#039;il y a eu un espion) d&#039;appliquer le bon filtre et les renvoit à Alice.&lt;br /&gt;
* Alice et Bob s&#039;échangent par le canal classique leur choix des axes de polarisation éliminant ainsi les erreurs.&lt;br /&gt;
* Alice communique une partie de ses résultats.&lt;br /&gt;
* Maintenant que Bob connait les axes qu&#039;Alice a appliqué et les résultats il peut savoir si la communication a été écoutée ou non. Ceci étant grâce au théorème de non clonage où il est impossible de cloner des états quantiques inconnus.&lt;br /&gt;
&lt;br /&gt;
Ce principe permet de détecter facilement s&#039;il y a eu des intrusions durant la communication de la clé privée. En effet si un attaquant écoute il lui faut récupérer les photons envoyés par Alice mesurer la polarisation et renvoyer le photon à Bob. Pour mesurer la polarisation l&#039;attaquant doit appliquer, comme Bob, un filtre pour deviner la base qu&#039;Alice a envoyé. Ainsi cette intrusion a 1 chance sur 2 d&#039;introduire des incohérences dans les données d&#039;Alice et Bob en envoyant 1 fois sur 2 un mauvais photon. Par la suite Bob obtient donc 1 chance sur 4 d&#039;appliquer le bon filtre. Par analyses statistiques, Alice et Bob peuvent détecter de manière sure s&#039;il y a eu espionnage sur le canal quantique.&lt;br /&gt;
&lt;br /&gt;
==== Attaque de l&#039;homme du milieu ====&lt;br /&gt;
&lt;br /&gt;
Comme toute méthode d&#039;échange de clé privée, cette méthode reste vulnérable à une attaque de type &amp;quot;homme du milieu&amp;quot;. Il faut donc la combiner avec un mécanisme de certification afin de s&#039;assurer de l&#039;identité des protagonistes.&lt;br /&gt;
&lt;br /&gt;
== Ressources ==&lt;br /&gt;
&lt;br /&gt;
* Hamlin, N., &amp;amp; Webb, W. A. (2012). Representing Positive Integers as a Sum of Linear Recurrence Sequences, Fibonacci Quart. 50 (2012), no. 2, 99–105. Fibonacci Quart, 50(2), 99-105.&lt;br /&gt;
&lt;br /&gt;
* Moyer, N. T. (2010). A knapsack-type cryptographic system using algebraic number rings (Doctoral dissertation, Washington State University).&lt;/div&gt;</summary>
		<author><name>JulianaLeclaire</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8699</id>
		<title>Projets étudiants cryptographie et sécurité/Leclaire DeRoland Crypto Quantique</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8699"/>
		<updated>2016-03-18T12:35:16Z</updated>

		<summary type="html">&lt;p&gt;JulianaLeclaire : /* Mise en danger de la sécurité du Web */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Auteurs : Juliana Leclaire, Céline de Roland ===&lt;br /&gt;
&lt;br /&gt;
== La cryptographie et la cryptanalyse dans le contexte de l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
L&#039;informatique quantique se base sur la superposition de plusieurs états quantiques pour améliorer les capacités de calculs. Ce domaine pose un vrai problème dans la sécurité de l&#039;internet qui utilise des algorithmes de chiffrement asymétriques pour les connexions SSL/TLS, paiements en ligne. Les nouveaux ordinateurs avec leur rapidité de calcul va pouvoir casser ces différents algorithmes de chiffrement asymétriques présents dans le Web.&lt;br /&gt;
&lt;br /&gt;
Il existe différents acteurs qui se penchent sur ce domaine. Notamment, la NSA, Google qui tentent de construire leur propre ordinateur quantique, des scientifiques qui se réunissent pour trouver des solutions.&lt;br /&gt;
Dans cette page, nous allons nous demander en quoi l&#039;informatique quantique peut changer le Web d&#039;aujourd&#039;hui et comment faire face à cette arrivée ?&lt;br /&gt;
&lt;br /&gt;
=== Fonctionnement de l&#039;informatique quantique ===&lt;br /&gt;
&lt;br /&gt;
==== Qubit ====&lt;br /&gt;
&lt;br /&gt;
C&#039;est la plus petite unité de stockage de l&#039;information. Etant donné deux états de base &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;, un qubit non mesuré se trouve dans l&#039;état &amp;lt;math&amp;gt;\alpha \left|0\right\rangle + \beta \left|1\right\rangle&amp;lt;/math&amp;gt;, avec &amp;lt;math&amp;gt;\left|\alpha\right|^2 + \left|\beta\right|^2 = 1&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Lorsqu&#039;on mesure la valeur du qubit, on obtient soit &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; soit &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\left|\alpha\right|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et  &amp;lt;math&amp;gt;\left|\beta\right|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Théorème de non clonage ====&lt;br /&gt;
&lt;br /&gt;
Ce théorème, découvert en 1982 par Wootters, Zurek, et Dieks, consiste à dire qu&#039;il est impossible de recopier un qubit à l&#039;identique. La démonstration (par l&#039;absurde) repose sur le fait que pouvoir mettre le qubit B dans le même état que le qubit A implique que le qubit B soit déjà dans le même état que le qubit A.&lt;br /&gt;
On en déduit qu&#039;il est impossible de faire une opération de type copier/coller en informatique quantique.&lt;br /&gt;
&lt;br /&gt;
==== Téléportation quantique ====&lt;br /&gt;
&lt;br /&gt;
La téléportation quantique consiste à transférer l&#039;état du qubit A dans le qubit B. Il s&#039;agit donc cette fois d&#039;une opération de couper/coller.&lt;br /&gt;
L&#039;intrication quantique se produit lorsque deux qubits sont dépendants l&#039;un de l&#039;autre même s&#039;ils sont éloignés l&#039;un de l&#039;autre. Dans cet état, si on mesure l&#039;un des deux, alors la mesure du deuxième est déterminée.&lt;br /&gt;
Sans entrer dans la théorie physique sous jacente, nous pouvons dire qu&#039;un canal EPR permet de réaliser cette opération de couper/coller en transmettant une information entre deux ordinateurs quantiques.&lt;br /&gt;
&lt;br /&gt;
== Chiffrement à clé publique face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
=== Mise en danger de la sécurité du Web ===&lt;br /&gt;
&lt;br /&gt;
Les ordinateurs quantiques présentent une rapidité de calculs extrêmement plus rapide que les ordinateurs classiques. Ces ordinateurs n&#039;auraient aucune difficulté pour casser les codes de sécurité actuels reposant principalement sur des chiffrements à clé publique. Un chiffrement asymétrique chiffre avec sa clé publique et déchiffre avec sa clé privée. Si nous prenons l&#039;exemple de RSA, un chiffrement asymétrique, qui a la particularité d&#039;être couramment utilisé dans la sécurité du Web. RSA repose sur la génération de grands nombres premiers.&lt;br /&gt;
&lt;br /&gt;
* Initialisation : &lt;br /&gt;
** module &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; (grand nombre entier codé sur 2048 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;p, q&amp;lt;/math&amp;gt; : nombres premiers de même taille (codés sur 1024 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;\phi(N) = (p-1) * (q - 1)&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd(e, \phi(N)) = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
** Choisir &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;ed \equiv 1 [\phi(N)]&amp;lt;/math&amp;gt; et donc &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; est l&#039;inverse modulaire de &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; avec &amp;lt;math&amp;gt;d = e^-1 [\phi(N)]&amp;lt;/math&amp;gt;&lt;br /&gt;
** Clé publique : &amp;lt;math&amp;gt;pk(n, e)&amp;lt;/math&amp;gt;, Clé privée : &amp;lt;math&amp;gt;sk(d, p, q)&amp;lt;/math&amp;gt;&lt;br /&gt;
* Chiffrement : &amp;lt;math&amp;gt;c = m^e [N]&amp;lt;/math&amp;gt;&lt;br /&gt;
* Déchiffrement : &amp;lt;math&amp;gt;m = c^d [N]&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La sécurité de RSA repose sur la difficulté à factoriser des grands nombres en nombres premiers. En effet avec &amp;lt;math&amp;gt;\left(N, e\right)&amp;lt;/math&amp;gt; il faudrait pouvoir retrouver &amp;lt;math&amp;gt;\left(d, p, q\right)&amp;lt;/math&amp;gt; où &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt; correspondant à un cassage total. D&#039;après le théorème de factorisation unique tout entier &amp;lt;math&amp;gt;n \ge 2&amp;lt;/math&amp;gt; admet une factorisation unique en produit de puissances de nombres entiers. Des algorithmes de factorisation ont été trouvés pour différentes tailles de module $N$ mais pour pallier à ces attaques on augmente la longueur du module. De nos jours pour sécuriser le chiffrement il faut utiliser des modules strictement supérieur à 2048 bits. Cependant avec l&#039;informatique quantique il ne suffira plus d&#039;augmenter la taille du module car la puissance de calcul permettra de casser le chiffrement, peu importe la taille du module.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Exemple : &amp;lt;math&amp;gt;N=15&amp;lt;/math&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* Je choisis &amp;lt;math&amp;gt;x=7&amp;lt;/math&amp;gt;&lt;br /&gt;
* En calculant successivement les valeurs de &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; on trouve &amp;lt;math&amp;gt;7^{4} \equiv 1 [15]&amp;lt;/math&amp;gt;.&lt;br /&gt;
* &amp;lt;math&amp;gt;r=4&amp;lt;/math&amp;gt; est pair&lt;br /&gt;
* &amp;lt;math&amp;gt;pgcd(x^{\frac{r}{2}}+1,15) = 5&amp;lt;/math&amp;gt;. Donc &amp;lt;math&amp;gt;P = 5&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;Q = pgcd(x^{\frac{r}{2}}-1,15) = 3&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Chiffrement à clé privée face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
=== Mise en danger de la sécurité ===&lt;br /&gt;
&lt;br /&gt;
Si les ordinateurs quantiques présentent une rapidité de calcul permettant d&#039;effectuer des factorisations impossibles pour un ordinateur classique, il nous semble logique qu&#039;ils soient également performants pour effectuer des attaques de type force brute sur des messages chiffrés par une clé privée qui aurait été transmise par un moyen plus sûr que RSA.&lt;br /&gt;
 &lt;br /&gt;
Un ordinateur quantique pourrait réaliser le déchiffrement avec toutes les clés possibles en parallèle. Ce qui permettrait de cryptanalyser le message en une seule opération. Le principe se base sur la superposition quantique. On superposerait toutes les clés possibles et on déchiffrerait. On obtiendrait alors une superposition de résultats. Le point le plus difficile est de trouver le résultat correct à partir de la superposition obtenue. En effet, le principe selon lequel mesurer une valeur modifie cette valeur fait qu&#039;en observant une superposition, on obtient un seul état aléatoire. Une solution à ce problème a été trouvé par Lov Grover en $O(\sqrt{n})$ étapes.&lt;br /&gt;
&lt;br /&gt;
== Résistances aux attaques quantiques ==&lt;br /&gt;
&lt;br /&gt;
=== Chiffrement asyémétrique ===&lt;br /&gt;
&lt;br /&gt;
Depuis 2006, une conférence internationnale se produit chaque année nommée &amp;quot;Post Quantum Cryptography&amp;quot; dans l&#039;intention de trouver des algorithmes résistants aux ordinateurs quantiques. Nathan Hamlin et William Webb, des mathématiciens, ont présenté récemment un algorithme de chiffrement asymétrique possiblement capable de faire face aux attaques quantiques. Cet algorithme part de l&#039;ancien chiffrement de Merkle-Hellman qui se base sur le problème du sac à dos nommé &amp;quot;Knapsack code&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
==== Problème du sac-à-dos ====&lt;br /&gt;
&lt;br /&gt;
Etant donné un sac avec une capacité &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; et plusieurs objets de poids différents. Le problème du sac-à-dos consiste à trouver la suite d&#039;objets qui entre dans le sac et qui maximise sa capacité. En partant d&#039;un n-uplet &amp;lt;math&amp;gt;\left(a_1, a_2, ..., a_n\right) \in N^n&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;S \in N&amp;lt;/math&amp;gt;, il faut trouver un n-uplet binaire &amp;lt;math&amp;gt;\left(x_1, x_2, ..., x_n\right) \in {0,1}^n&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;S = \sum_{i=1}^{n} \left(a_{i}*x_{i}\right) &amp;lt;/math&amp;gt;. La somme &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; des poids des objets choisi ne doit pas dépasser la capacité du sac à dos. Pour résoudre ce problème il n&#039;existe pas d&#039;algorithme avec une compléxité polynomial.&lt;br /&gt;
&lt;br /&gt;
==== Chiffrement de Merkle-Hellman ====&lt;br /&gt;
&lt;br /&gt;
Cet algorithme de chiffrement à clé publique repose sur la complexité algorithmique du problème de sac-à-dos et utilise des suites de poids super-croissante pour le secret et non super-croissante pour la clé publique. Si les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt; n&#039;ont pas de propriétés particulières, la recherche du message codé en binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt; est un problème difficile. Il n&#039;existe pas d&#039;algorithme polynomial pour le résoudre. Pour pouvoir retrouver facilement ce n-uplet une propriété super-croissante est utilisé sur les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt;. Un n-uplet b est super-croissant si &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\forall i \in [2,n] b_{i} &amp;gt; \sum_{j=1}^{i-1} {b_{j}}&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ainsi en utilisant un algorithme glouton nous pouvons retrouver le n-uplet binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt;. L&#039;objet le plus lourd est dans le sac si le poids du sac est supérieur au poids de celui-ci. La propriété super-croissante assure que la somme des poids des autres objets sera toujours inférieur au poids de l&#039;objet le plus lourd. L&#039;algorithme est le suivant :&lt;br /&gt;
&lt;br /&gt;
  Pour i de n à 1 faire&lt;br /&gt;
    Si &amp;lt;math&amp;gt;b_{i} \le S&amp;lt;/math&amp;gt; alors&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i}  = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
    Sinon&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i} = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
    &amp;lt;math&amp;gt;S = S - x_{i} * b_{i}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Par exemple en prenant la suite des puissances de 2 comme suite super-croissante  avec : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = \left\{ 1,4,8 \right\}, b = \left\{ 1,2,4,8 \right\}, S = 13 \left(1+4+8\right), n = 4&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 4 : 8 \le 13 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_4 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 3 : 4 \le 5 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_3 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 2 : 2 \le 1 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    non donc &amp;lt;math&amp;gt;x_2 = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 1 : 1 \le 1 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_1 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  =&amp;gt; &amp;lt;math&amp;gt;m = \left\{ 1,0,1,1 \right\}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour chiffrer un n-uplet binaire &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;, l&#039;idée de Merkle et Hellman est de &amp;quot;tordre&amp;quot; les &amp;lt;math&amp;gt;b_{i}&amp;lt;/math&amp;gt; pour obtenir un n-uplet qui n&#039;est plus super-croissant. On choisit un nombre &amp;lt;math&amp;gt;u &amp;gt; \sum_{i=1}^{n} {b_{i}}&amp;lt;/math&amp;gt;, un entier &amp;lt;math&amp;gt;v \in N&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd\left(u,v\right) = 1&amp;lt;/math&amp;gt;. Ce qui donne &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; inversible dans &amp;lt;math&amp;gt;Z/uZ&amp;lt;/math&amp;gt;. On prend &amp;lt;math&amp;gt;w = v^{-1} \in Z/uZ&amp;lt;/math&amp;gt;. On calcule ensuite le n-uplet &amp;lt;math&amp;gt;a = \left(a_1, ..., a_n\right)&amp;lt;/math&amp;gt; tel que pour tout &amp;lt;math&amp;gt;i \in [1,n]&amp;lt;/math&amp;gt; on a : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = a * b_i (mod u)&amp;lt;/math&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
Le n-uplet &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; détermine la clé public tandis que &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt; sont gardés secrets. &amp;lt;br/&amp;gt;&lt;br /&gt;
Pour envoyer le message m à Bob, Alice va, à partir de l&#039;écriture de m en binaire, calculer la somme : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;c = \sum_{i=1}^{n} {m_i * a_i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
qu&#039;elle va envoyer à Bob. Bob pour déchiffrer va devoir procéder à plusieurs étapes : &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt;c = \sum_{i=1}^{n} {m_i * a_i}&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * a_i * w} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * a_i * v^{-1}} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * v * b_i * v^{-1}} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * b_i} [u]&amp;lt;/math&amp;gt;                      =&amp;gt; Comme &amp;lt;math&amp;gt; \sum_{i=1}^{n} {m_i * b_i} &amp;lt; \sum_{i=1}^{n} {b_i}&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt; u &amp;gt; \sum_{i=1}^{n} {b_i}&amp;lt;/math&amp;gt; le modulo &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; peut s&#039;enlever&lt;br /&gt;
* &amp;lt;math&amp;gt;= \sum_{i=1}^{n} {m_i * b_i}&amp;lt;/math&amp;gt;                           =&amp;gt; Comme &amp;lt;math&amp;gt;b_i&amp;lt;/math&amp;gt; est super-croissant Bob peut facilement retrouver &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Nouveau chiffrement de Hamlin-Webb ====&lt;br /&gt;
&lt;br /&gt;
Le chiffrement de Merkle et Hellman a été abandonné à la suite des découvertes de Shamir qui a découvert une attaque permettant de retrouver le message secret en utilisant un algorithme de la réduction des réseaux. Nathan Hamlin et William Webb reprennent cet algorithme en le renforçant par un changement de représentation des entiers. Ils ont prouvé q&#039;un entier pouvait être représenté de manière unique avec des suites récurrentes. Le secret &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; n&#039;est alors plus modélisé en binaire mais en une suite récurrente plus complexe à craquer.&lt;br /&gt;
&lt;br /&gt;
===== Représentation du message =====&lt;br /&gt;
La représentation d&#039;un nombre &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; en une suite récurrente &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt; se fait en utilisant une suite augmentée &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; de &amp;lt;math&amp;gt;1 \le j \le 10&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;0 \le i \le n&amp;lt;/math&amp;gt; donné par : &amp;lt;br/&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{1,i}= u_i&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{2,i}= u_i + u_{i-2}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{3,i}= u_i + u_{i-2} + u_{i-3}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{4,i}= u_i + u_{i-2} + 2u_{i-3}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{5,i}= u_i + u_{i-2} +2u_{i-3} + u_{i-4}&amp;lt;/math&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{10,i}= u_i + u_{i-2} +2u_{i-3} + 6u_{i-4}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le suite &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; correspond au blocs de chiffre autorisés. Dans l&#039;exemple &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; se calcule dans des groupes de taille 10 mais ce nombre peut varier. La suite &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; se calcule en utilisant un algorithme glouton sur &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; où l&#039;on remplace la somme en une expression dans la suite &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
Le message secret &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; est représenté par : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; M = \sum_{i=0}^{n-1} {d_i * u_i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
avec &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt; calculé grâce à &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
où les &amp;lt;math&amp;gt;d_i&amp;lt;/math&amp;gt; sont des blocs de chiffre lexicographiquement inférieur à &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Chiffrement symétrique quantique ===&lt;br /&gt;
&lt;br /&gt;
==== Photons polarisés ====&lt;br /&gt;
&lt;br /&gt;
Les photons sont des particules qui composent la lumière. Ils sont composés d&#039;un champ électrique et d&#039;un champ magnétique. Une lumière non-polarisée se caractérise par une différence d&#039;orientation du champ électrique suivant les photons. Ainsi la polarisation consiste, grâce à un polarisateur, d&#039;obtenir des photons avec un champ électrique orienté de manière identique. Les filtres polarisants permettent d&#039;appliquer un angle d&#039;orientation sur les photons afin :&lt;br /&gt;
* de récupérer les photons polarisés parallèlement par rapport à cet angle&lt;br /&gt;
* d&#039;éliminer les photons polarisés perpendiculairement&lt;br /&gt;
* de récupérer les photons polarisés intermédiaires avec une probabilité de &amp;lt;math&amp;gt;\cos\left(\alpha\right)&amp;lt;/math&amp;gt; en les réinitialisant avec une polarisation égale à l&#039;angle d&#039;orientation du filtre.&lt;br /&gt;
&lt;br /&gt;
Du fait de la transformation de polarisation il est impossible de connaître l&#039;information sur les polarisations précédentes du photons.&lt;br /&gt;
&lt;br /&gt;
==== Distribution des clés ====&lt;br /&gt;
&lt;br /&gt;
Le chiffrement quantique offre un moyen sécurisé d’échanger des clés privées pour réaliser des chiffrements symétriques. Cette distribution s’appuie sur l’envoi de photons polarisés par fibre optique. Les personnes s&#039;échangeant les clés doivent avoir accès à un canal quantique et un canal classique. Le principe est le suivant :&lt;br /&gt;
* Alice envoie par le canal quantique une suite de photons polarisés aléatoirement.&lt;br /&gt;
* Bob applique un filtre de polarisation qui lui donne 1 chance sur 2 (et 1 chance sur 4 s&#039;il y a eu un espion) d&#039;appliquer le bon filtre et les renvoit à Alice.&lt;br /&gt;
* Alice et Bob s&#039;échangent par le canal classique leur choix des axes de polarisation éliminant ainsi les erreurs.&lt;br /&gt;
* Alice communique une partie de ses résultats.&lt;br /&gt;
* Maintenant que Bob connait les axes qu&#039;Alice a appliqué et les résultats il peut savoir si la communication a été écoutée ou non. Ceci étant grâce au théorème de non clonage où il est impossible de cloner des états quantiques inconnus.&lt;br /&gt;
&lt;br /&gt;
Ce principe permet de détecter facilement s&#039;il y a eu des intrusions durant la communication de la clé privée. En effet si un attaquant écoute il lui faut récupérer les photons envoyés par Alice mesurer la polarisation et renvoyer le photon à Bob. Pour mesurer la polarisation l&#039;attaquant doit appliquer, comme Bob, un filtre pour deviner la base qu&#039;Alice a envoyé. Ainsi cette intrusion a 1 chance sur 2 d&#039;introduire des incohérences dans les données d&#039;Alice et Bob en envoyant 1 fois sur 2 un mauvais photon. Par la suite Bob obtient donc 1 chance sur 4 d&#039;appliquer le bon filtre. Par analyses statistiques, Alice et Bob peuvent détecter de manière sure s&#039;il y a eu espionnage sur le canal quantique.&lt;br /&gt;
&lt;br /&gt;
==== Attaque de l&#039;homme du milieu ====&lt;br /&gt;
&lt;br /&gt;
Comme toute méthode d&#039;échange de clé privée, cette méthode reste vulnérable à une attaque de type &amp;quot;homme du milieu&amp;quot;. Il faut donc la combiner avec un mécanisme de certification afin de s&#039;assurer de l&#039;identité des protagonistes.&lt;br /&gt;
&lt;br /&gt;
== Ressources ==&lt;br /&gt;
&lt;br /&gt;
* Hamlin, N., &amp;amp; Webb, W. A. (2012). Representing Positive Integers as a Sum of Linear Recurrence Sequences, Fibonacci Quart. 50 (2012), no. 2, 99–105. Fibonacci Quart, 50(2), 99-105.&lt;br /&gt;
&lt;br /&gt;
* Moyer, N. T. (2010). A knapsack-type cryptographic system using algebraic number rings (Doctoral dissertation, Washington State University).&lt;/div&gt;</summary>
		<author><name>JulianaLeclaire</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8698</id>
		<title>Projets étudiants cryptographie et sécurité/Leclaire DeRoland Crypto Quantique</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8698"/>
		<updated>2016-03-18T12:33:44Z</updated>

		<summary type="html">&lt;p&gt;JulianaLeclaire : /* Mise en danger de la sécurité du Web */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Auteurs : Juliana Leclaire, Céline de Roland ===&lt;br /&gt;
&lt;br /&gt;
== La cryptographie et la cryptanalyse dans le contexte de l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
L&#039;informatique quantique se base sur la superposition de plusieurs états quantiques pour améliorer les capacités de calculs. Ce domaine pose un vrai problème dans la sécurité de l&#039;internet qui utilise des algorithmes de chiffrement asymétriques pour les connexions SSL/TLS, paiements en ligne. Les nouveaux ordinateurs avec leur rapidité de calcul va pouvoir casser ces différents algorithmes de chiffrement asymétriques présents dans le Web.&lt;br /&gt;
&lt;br /&gt;
Il existe différents acteurs qui se penchent sur ce domaine. Notamment, la NSA, Google qui tentent de construire leur propre ordinateur quantique, des scientifiques qui se réunissent pour trouver des solutions.&lt;br /&gt;
Dans cette page, nous allons nous demander en quoi l&#039;informatique quantique peut changer le Web d&#039;aujourd&#039;hui et comment faire face à cette arrivée ?&lt;br /&gt;
&lt;br /&gt;
=== Fonctionnement de l&#039;informatique quantique ===&lt;br /&gt;
&lt;br /&gt;
==== Qubit ====&lt;br /&gt;
&lt;br /&gt;
C&#039;est la plus petite unité de stockage de l&#039;information. Etant donné deux états de base &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;, un qubit non mesuré se trouve dans l&#039;état &amp;lt;math&amp;gt;\alpha \left|0\right\rangle + \beta \left|1\right\rangle&amp;lt;/math&amp;gt;, avec &amp;lt;math&amp;gt;\left|\alpha\right|^2 + \left|\beta\right|^2 = 1&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Lorsqu&#039;on mesure la valeur du qubit, on obtient soit &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; soit &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\left|\alpha\right|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et  &amp;lt;math&amp;gt;\left|\beta\right|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Théorème de non clonage ====&lt;br /&gt;
&lt;br /&gt;
Ce théorème, découvert en 1982 par Wootters, Zurek, et Dieks, consiste à dire qu&#039;il est impossible de recopier un qubit à l&#039;identique. La démonstration (par l&#039;absurde) repose sur le fait que pouvoir mettre le qubit B dans le même état que le qubit A implique que le qubit B soit déjà dans le même état que le qubit A.&lt;br /&gt;
On en déduit qu&#039;il est impossible de faire une opération de type copier/coller en informatique quantique.&lt;br /&gt;
&lt;br /&gt;
==== Téléportation quantique ====&lt;br /&gt;
&lt;br /&gt;
La téléportation quantique consiste à transférer l&#039;état du qubit A dans le qubit B. Il s&#039;agit donc cette fois d&#039;une opération de couper/coller.&lt;br /&gt;
L&#039;intrication quantique se produit lorsque deux qubits sont dépendants l&#039;un de l&#039;autre même s&#039;ils sont éloignés l&#039;un de l&#039;autre. Dans cet état, si on mesure l&#039;un des deux, alors la mesure du deuxième est déterminée.&lt;br /&gt;
Sans entrer dans la théorie physique sous jacente, nous pouvons dire qu&#039;un canal EPR permet de réaliser cette opération de couper/coller en transmettant une information entre deux ordinateurs quantiques.&lt;br /&gt;
&lt;br /&gt;
== Chiffrement à clé publique face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
=== Mise en danger de la sécurité du Web ===&lt;br /&gt;
&lt;br /&gt;
Les ordinateurs quantiques présentent une rapidité de calculs extrêmement plus rapide que les ordinateurs classiques. Ces ordinateurs n&#039;auraient aucune difficulté pour casser les codes de sécurité actuels reposant principalement sur des chiffrements à clé publique. Un chiffrement asymétrique chiffre avec sa clé publique et déchiffre avec sa clé privée. Si nous prenons l&#039;exemple de RSA, un chiffrement asymétrique, qui a la particularité d&#039;être couramment utilisé dans la sécurité du Web. RSA repose sur la génération de grands nombres premiers.&lt;br /&gt;
&lt;br /&gt;
* Initialisation : &lt;br /&gt;
** module &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; (grand nombre entier codé sur 2048 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;p, q&amp;lt;/math&amp;gt; : nombres premiers de même taille (codés sur 1024 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;\phi(N) = (p-1) * (q - 1)&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd(e, \phi(N)) = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
** Choisir &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;ed \equiv 1 [\phi(N)]&amp;lt;/math&amp;gt; et donc &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; est l&#039;inverse modulaire de &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; avec &amp;lt;math&amp;gt;d = e^-1 [\phi(N)]&amp;lt;/math&amp;gt;&lt;br /&gt;
** Clé publique : &amp;lt;math&amp;gt;pk(n, e)&amp;lt;/math&amp;gt;, Clé privée : &amp;lt;math&amp;gt;sk(d, p, q)&amp;lt;/math&amp;gt;&lt;br /&gt;
* Chiffrement : &amp;lt;math&amp;gt;c = m^e [N]&amp;lt;/math&amp;gt;&lt;br /&gt;
* Déchiffrement : &amp;lt;math&amp;gt;m = c^d [N]&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Exemple : &amp;lt;math&amp;gt;N=15&amp;lt;/math&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* Je choisis &amp;lt;math&amp;gt;x=7&amp;lt;/math&amp;gt;&lt;br /&gt;
* En calculant successivement les valeurs de &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; on trouve &amp;lt;math&amp;gt;7^{4} \equiv 1 [15]&amp;lt;/math&amp;gt;.&lt;br /&gt;
* &amp;lt;math&amp;gt;r=4&amp;lt;/math&amp;gt; est pair&lt;br /&gt;
* &amp;lt;math&amp;gt;pgcd(x^{\frac{r}{2}}+1,15) = 5&amp;lt;/math&amp;gt;. Donc &amp;lt;math&amp;gt;P = 5&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;Q = pgcd(x^{\frac{r}{2}}-1,15) = 3&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La sécurité de RSA repose sur la difficulté à factoriser des grands nombres en nombres premiers. En effet avec &amp;lt;math&amp;gt;(N, e)&amp;lt;/math&amp;gt; il faudrait pouvoir retrouver &amp;lt;math&amp;gt;(d, p, q)&amp;lt;/math&amp;gt; où &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt; correspondant à un cassage total. D&#039;après le théorème de factorisation unique tout entier &amp;lt;math&amp;gt;n \ge 2&amp;lt;/math&amp;gt; admet une factorisation unique en produit de puissances de nombres entiers. Des algorithmes de factorisation ont été trouvés pour différentes tailles de module $N$ mais pour pallier à ces attaques on augmente la longueur du module. De nos jours pour sécuriser le chiffrement il faut utiliser des modules strictement supérieur à 2048 bits. Cependant avec l&#039;informatique quantique il ne suffira plus d&#039;augmenter la taille du module car la puissance de calcul permettra de casser le chiffrement, peu importe la taille du module.&lt;br /&gt;
&lt;br /&gt;
== Chiffrement à clé privée face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
=== Mise en danger de la sécurité ===&lt;br /&gt;
&lt;br /&gt;
Si les ordinateurs quantiques présentent une rapidité de calcul permettant d&#039;effectuer des factorisations impossibles pour un ordinateur classique, il nous semble logique qu&#039;ils soient également performants pour effectuer des attaques de type force brute sur des messages chiffrés par une clé privée qui aurait été transmise par un moyen plus sûr que RSA.&lt;br /&gt;
 &lt;br /&gt;
Un ordinateur quantique pourrait réaliser le déchiffrement avec toutes les clés possibles en parallèle. Ce qui permettrait de cryptanalyser le message en une seule opération. Le principe se base sur la superposition quantique. On superposerait toutes les clés possibles et on déchiffrerait. On obtiendrait alors une superposition de résultats. Le point le plus difficile est de trouver le résultat correct à partir de la superposition obtenue. En effet, le principe selon lequel mesurer une valeur modifie cette valeur fait qu&#039;en observant une superposition, on obtient un seul état aléatoire. Une solution à ce problème a été trouvé par Lov Grover en $O(\sqrt{n})$ étapes.&lt;br /&gt;
&lt;br /&gt;
== Résistances aux attaques quantiques ==&lt;br /&gt;
&lt;br /&gt;
=== Chiffrement asyémétrique ===&lt;br /&gt;
&lt;br /&gt;
Depuis 2006, une conférence internationnale se produit chaque année nommée &amp;quot;Post Quantum Cryptography&amp;quot; dans l&#039;intention de trouver des algorithmes résistants aux ordinateurs quantiques. Nathan Hamlin et William Webb, des mathématiciens, ont présenté récemment un algorithme de chiffrement asymétrique possiblement capable de faire face aux attaques quantiques. Cet algorithme part de l&#039;ancien chiffrement de Merkle-Hellman qui se base sur le problème du sac à dos nommé &amp;quot;Knapsack code&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
==== Problème du sac-à-dos ====&lt;br /&gt;
&lt;br /&gt;
Etant donné un sac avec une capacité &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; et plusieurs objets de poids différents. Le problème du sac-à-dos consiste à trouver la suite d&#039;objets qui entre dans le sac et qui maximise sa capacité. En partant d&#039;un n-uplet &amp;lt;math&amp;gt;\left(a_1, a_2, ..., a_n\right) \in N^n&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;S \in N&amp;lt;/math&amp;gt;, il faut trouver un n-uplet binaire &amp;lt;math&amp;gt;\left(x_1, x_2, ..., x_n\right) \in {0,1}^n&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;S = \sum_{i=1}^{n} \left(a_{i}*x_{i}\right) &amp;lt;/math&amp;gt;. La somme &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; des poids des objets choisi ne doit pas dépasser la capacité du sac à dos. Pour résoudre ce problème il n&#039;existe pas d&#039;algorithme avec une compléxité polynomial.&lt;br /&gt;
&lt;br /&gt;
==== Chiffrement de Merkle-Hellman ====&lt;br /&gt;
&lt;br /&gt;
Cet algorithme de chiffrement à clé publique repose sur la complexité algorithmique du problème de sac-à-dos et utilise des suites de poids super-croissante pour le secret et non super-croissante pour la clé publique. Si les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt; n&#039;ont pas de propriétés particulières, la recherche du message codé en binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt; est un problème difficile. Il n&#039;existe pas d&#039;algorithme polynomial pour le résoudre. Pour pouvoir retrouver facilement ce n-uplet une propriété super-croissante est utilisé sur les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt;. Un n-uplet b est super-croissant si &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\forall i \in [2,n] b_{i} &amp;gt; \sum_{j=1}^{i-1} {b_{j}}&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ainsi en utilisant un algorithme glouton nous pouvons retrouver le n-uplet binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt;. L&#039;objet le plus lourd est dans le sac si le poids du sac est supérieur au poids de celui-ci. La propriété super-croissante assure que la somme des poids des autres objets sera toujours inférieur au poids de l&#039;objet le plus lourd. L&#039;algorithme est le suivant :&lt;br /&gt;
&lt;br /&gt;
  Pour i de n à 1 faire&lt;br /&gt;
    Si &amp;lt;math&amp;gt;b_{i} \le S&amp;lt;/math&amp;gt; alors&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i}  = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
    Sinon&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i} = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
    &amp;lt;math&amp;gt;S = S - x_{i} * b_{i}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Par exemple en prenant la suite des puissances de 2 comme suite super-croissante  avec : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = \left\{ 1,4,8 \right\}, b = \left\{ 1,2,4,8 \right\}, S = 13 \left(1+4+8\right), n = 4&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 4 : 8 \le 13 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_4 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 3 : 4 \le 5 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_3 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 2 : 2 \le 1 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    non donc &amp;lt;math&amp;gt;x_2 = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 1 : 1 \le 1 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_1 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  =&amp;gt; &amp;lt;math&amp;gt;m = \left\{ 1,0,1,1 \right\}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour chiffrer un n-uplet binaire &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;, l&#039;idée de Merkle et Hellman est de &amp;quot;tordre&amp;quot; les &amp;lt;math&amp;gt;b_{i}&amp;lt;/math&amp;gt; pour obtenir un n-uplet qui n&#039;est plus super-croissant. On choisit un nombre &amp;lt;math&amp;gt;u &amp;gt; \sum_{i=1}^{n} {b_{i}}&amp;lt;/math&amp;gt;, un entier &amp;lt;math&amp;gt;v \in N&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd\left(u,v\right) = 1&amp;lt;/math&amp;gt;. Ce qui donne &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; inversible dans &amp;lt;math&amp;gt;Z/uZ&amp;lt;/math&amp;gt;. On prend &amp;lt;math&amp;gt;w = v^{-1} \in Z/uZ&amp;lt;/math&amp;gt;. On calcule ensuite le n-uplet &amp;lt;math&amp;gt;a = \left(a_1, ..., a_n\right)&amp;lt;/math&amp;gt; tel que pour tout &amp;lt;math&amp;gt;i \in [1,n]&amp;lt;/math&amp;gt; on a : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = a * b_i (mod u)&amp;lt;/math&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
Le n-uplet &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; détermine la clé public tandis que &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt; sont gardés secrets. &amp;lt;br/&amp;gt;&lt;br /&gt;
Pour envoyer le message m à Bob, Alice va, à partir de l&#039;écriture de m en binaire, calculer la somme : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;c = \sum_{i=1}^{n} {m_i * a_i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
qu&#039;elle va envoyer à Bob. Bob pour déchiffrer va devoir procéder à plusieurs étapes : &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt;c = \sum_{i=1}^{n} {m_i * a_i}&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * a_i * w} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * a_i * v^{-1}} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * v * b_i * v^{-1}} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * b_i} [u]&amp;lt;/math&amp;gt;                      =&amp;gt; Comme &amp;lt;math&amp;gt; \sum_{i=1}^{n} {m_i * b_i} &amp;lt; \sum_{i=1}^{n} {b_i}&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt; u &amp;gt; \sum_{i=1}^{n} {b_i}&amp;lt;/math&amp;gt; le modulo &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; peut s&#039;enlever&lt;br /&gt;
* &amp;lt;math&amp;gt;= \sum_{i=1}^{n} {m_i * b_i}&amp;lt;/math&amp;gt;                           =&amp;gt; Comme &amp;lt;math&amp;gt;b_i&amp;lt;/math&amp;gt; est super-croissant Bob peut facilement retrouver &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Nouveau chiffrement de Hamlin-Webb ====&lt;br /&gt;
&lt;br /&gt;
Le chiffrement de Merkle et Hellman a été abandonné à la suite des découvertes de Shamir qui a découvert une attaque permettant de retrouver le message secret en utilisant un algorithme de la réduction des réseaux. Nathan Hamlin et William Webb reprennent cet algorithme en le renforçant par un changement de représentation des entiers. Ils ont prouvé q&#039;un entier pouvait être représenté de manière unique avec des suites récurrentes. Le secret &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; n&#039;est alors plus modélisé en binaire mais en une suite récurrente plus complexe à craquer.&lt;br /&gt;
&lt;br /&gt;
===== Représentation du message =====&lt;br /&gt;
La représentation d&#039;un nombre &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; en une suite récurrente &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt; se fait en utilisant une suite augmentée &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; de &amp;lt;math&amp;gt;1 \le j \le 10&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;0 \le i \le n&amp;lt;/math&amp;gt; donné par : &amp;lt;br/&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{1,i}= u_i&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{2,i}= u_i + u_{i-2}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{3,i}= u_i + u_{i-2} + u_{i-3}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{4,i}= u_i + u_{i-2} + 2u_{i-3}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{5,i}= u_i + u_{i-2} +2u_{i-3} + u_{i-4}&amp;lt;/math&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{10,i}= u_i + u_{i-2} +2u_{i-3} + 6u_{i-4}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le suite &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; correspond au blocs de chiffre autorisés. Dans l&#039;exemple &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; se calcule dans des groupes de taille 10 mais ce nombre peut varier. La suite &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; se calcule en utilisant un algorithme glouton sur &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; où l&#039;on remplace la somme en une expression dans la suite &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
Le message secret &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; est représenté par : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; M = \sum_{i=0}^{n-1} {d_i * u_i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
avec &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt; calculé grâce à &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
où les &amp;lt;math&amp;gt;d_i&amp;lt;/math&amp;gt; sont des blocs de chiffre lexicographiquement inférieur à &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Chiffrement symétrique quantique ===&lt;br /&gt;
&lt;br /&gt;
==== Photons polarisés ====&lt;br /&gt;
&lt;br /&gt;
Les photons sont des particules qui composent la lumière. Ils sont composés d&#039;un champ électrique et d&#039;un champ magnétique. Une lumière non-polarisée se caractérise par une différence d&#039;orientation du champ électrique suivant les photons. Ainsi la polarisation consiste, grâce à un polarisateur, d&#039;obtenir des photons avec un champ électrique orienté de manière identique. Les filtres polarisants permettent d&#039;appliquer un angle d&#039;orientation sur les photons afin :&lt;br /&gt;
* de récupérer les photons polarisés parallèlement par rapport à cet angle&lt;br /&gt;
* d&#039;éliminer les photons polarisés perpendiculairement&lt;br /&gt;
* de récupérer les photons polarisés intermédiaires avec une probabilité de &amp;lt;math&amp;gt;\cos\left(\alpha\right)&amp;lt;/math&amp;gt; en les réinitialisant avec une polarisation égale à l&#039;angle d&#039;orientation du filtre.&lt;br /&gt;
&lt;br /&gt;
Du fait de la transformation de polarisation il est impossible de connaître l&#039;information sur les polarisations précédentes du photons.&lt;br /&gt;
&lt;br /&gt;
==== Distribution des clés ====&lt;br /&gt;
&lt;br /&gt;
Le chiffrement quantique offre un moyen sécurisé d’échanger des clés privées pour réaliser des chiffrements symétriques. Cette distribution s’appuie sur l’envoi de photons polarisés par fibre optique. Les personnes s&#039;échangeant les clés doivent avoir accès à un canal quantique et un canal classique. Le principe est le suivant :&lt;br /&gt;
* Alice envoie par le canal quantique une suite de photons polarisés aléatoirement.&lt;br /&gt;
* Bob applique un filtre de polarisation qui lui donne 1 chance sur 2 (et 1 chance sur 4 s&#039;il y a eu un espion) d&#039;appliquer le bon filtre et les renvoit à Alice.&lt;br /&gt;
* Alice et Bob s&#039;échangent par le canal classique leur choix des axes de polarisation éliminant ainsi les erreurs.&lt;br /&gt;
* Alice communique une partie de ses résultats.&lt;br /&gt;
* Maintenant que Bob connait les axes qu&#039;Alice a appliqué et les résultats il peut savoir si la communication a été écoutée ou non. Ceci étant grâce au théorème de non clonage où il est impossible de cloner des états quantiques inconnus.&lt;br /&gt;
&lt;br /&gt;
Ce principe permet de détecter facilement s&#039;il y a eu des intrusions durant la communication de la clé privée. En effet si un attaquant écoute il lui faut récupérer les photons envoyés par Alice mesurer la polarisation et renvoyer le photon à Bob. Pour mesurer la polarisation l&#039;attaquant doit appliquer, comme Bob, un filtre pour deviner la base qu&#039;Alice a envoyé. Ainsi cette intrusion a 1 chance sur 2 d&#039;introduire des incohérences dans les données d&#039;Alice et Bob en envoyant 1 fois sur 2 un mauvais photon. Par la suite Bob obtient donc 1 chance sur 4 d&#039;appliquer le bon filtre. Par analyses statistiques, Alice et Bob peuvent détecter de manière sure s&#039;il y a eu espionnage sur le canal quantique.&lt;br /&gt;
&lt;br /&gt;
==== Attaque de l&#039;homme du milieu ====&lt;br /&gt;
&lt;br /&gt;
Comme toute méthode d&#039;échange de clé privée, cette méthode reste vulnérable à une attaque de type &amp;quot;homme du milieu&amp;quot;. Il faut donc la combiner avec un mécanisme de certification afin de s&#039;assurer de l&#039;identité des protagonistes.&lt;br /&gt;
&lt;br /&gt;
== Ressources ==&lt;br /&gt;
&lt;br /&gt;
* Hamlin, N., &amp;amp; Webb, W. A. (2012). Representing Positive Integers as a Sum of Linear Recurrence Sequences, Fibonacci Quart. 50 (2012), no. 2, 99–105. Fibonacci Quart, 50(2), 99-105.&lt;br /&gt;
&lt;br /&gt;
* Moyer, N. T. (2010). A knapsack-type cryptographic system using algebraic number rings (Doctoral dissertation, Washington State University).&lt;/div&gt;</summary>
		<author><name>JulianaLeclaire</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8696</id>
		<title>Projets étudiants cryptographie et sécurité/Leclaire DeRoland Crypto Quantique</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8696"/>
		<updated>2016-03-18T12:23:48Z</updated>

		<summary type="html">&lt;p&gt;JulianaLeclaire : /* Exemple de chiffrement asymétrique: RSA */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Auteurs : Juliana Leclaire, Céline de Roland ===&lt;br /&gt;
&lt;br /&gt;
== La cryptographie et la cryptanalyse dans le contexte de l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
L&#039;informatique quantique se base sur la superposition de plusieurs états quantiques pour améliorer les capacités de calculs. Ce domaine pose un vrai problème dans la sécurité de l&#039;internet qui utilise des algorithmes de chiffrement asymétriques pour les connexions SSL/TLS, paiements en ligne. Les nouveaux ordinateurs avec leur rapidité de calcul va pouvoir casser ces différents algorithmes de chiffrement asymétriques présents dans le Web.&lt;br /&gt;
&lt;br /&gt;
Il existe différents acteurs qui se penchent sur ce domaine. Notamment, la NSA, Google qui tentent de construire leur propre ordinateur quantique, des scientifiques qui se réunissent pour trouver des solutions.&lt;br /&gt;
Dans cette page, nous allons nous demander en quoi l&#039;informatique quantique peut changer le Web d&#039;aujourd&#039;hui et comment faire face à cette arrivée ?&lt;br /&gt;
&lt;br /&gt;
=== Fonctionnement de l&#039;informatique quantique ===&lt;br /&gt;
&lt;br /&gt;
==== Qubit ====&lt;br /&gt;
&lt;br /&gt;
C&#039;est la plus petite unité de stockage de l&#039;information. Etant donné deux états de base &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;, un qubit non mesuré se trouve dans l&#039;état &amp;lt;math&amp;gt;\alpha \left|0\right\rangle + \beta \left|1\right\rangle&amp;lt;/math&amp;gt;, avec &amp;lt;math&amp;gt;\left|\alpha\right|^2 + \left|\beta\right|^2 = 1&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Lorsqu&#039;on mesure la valeur du qubit, on obtient soit &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; soit &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\left|\alpha\right|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et  &amp;lt;math&amp;gt;\left|\beta\right|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Théorème de non clonage ====&lt;br /&gt;
&lt;br /&gt;
Ce théorème, découvert en 1982 par Wootters, Zurek, et Dieks, consiste à dire qu&#039;il est impossible de recopier un qubit à l&#039;identique. La démonstration (par l&#039;absurde) repose sur le fait que pouvoir mettre le qubit B dans le même état que le qubit A implique que le qubit B soit déjà dans le même état que le qubit A.&lt;br /&gt;
On en déduit qu&#039;il est impossible de faire une opération de type copier/coller en informatique quantique.&lt;br /&gt;
&lt;br /&gt;
==== Téléportation quantique ====&lt;br /&gt;
&lt;br /&gt;
La téléportation quantique consiste à transférer l&#039;état du qubit A dans le qubit B. Il s&#039;agit donc cette fois d&#039;une opération de couper/coller.&lt;br /&gt;
L&#039;intrication quantique se produit lorsque deux qubits sont dépendants l&#039;un de l&#039;autre même s&#039;ils sont éloignés l&#039;un de l&#039;autre. Dans cet état, si on mesure l&#039;un des deux, alors la mesure du deuxième est déterminée.&lt;br /&gt;
Sans entrer dans la théorie physique sous jacente, nous pouvons dire qu&#039;un canal EPR permet de réaliser cette opération de couper/coller en transmettant une information entre deux ordinateurs quantiques.&lt;br /&gt;
&lt;br /&gt;
== Chiffrement à clé publique face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
=== Mise en danger de la sécurité du Web ===&lt;br /&gt;
&lt;br /&gt;
Les ordinateurs quantiques présentent une rapidité de calculs extrêmement plus rapide que les ordinateurs classiques. Ces ordinateurs n&#039;auraient aucune difficulté pour casser les codes de sécurité actuels reposant principalement sur des chiffrements à clé publique. Par définition le chiffrement asymétrique chiffre avec une clé publique et déchiffre avec une clé privée. La complexité de craquage se base sur l&#039;utilisation de grands nombres. Si nous prenons l&#039;exemple de RSA.&lt;br /&gt;
&lt;br /&gt;
Ce chiffrement est couramment utilisé dans la sécurité du Web. &lt;br /&gt;
RSA repose sur la génération de grands nombres premiers, d&#039;un chiffrement avec une clé publique et d&#039;un déchiffrement avec une clé privée. &lt;br /&gt;
&lt;br /&gt;
* Initialisation : &lt;br /&gt;
** module &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; (grand nombre entier codé sur 2048 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;p, q&amp;lt;/math&amp;gt; : nombres premiers de même taille (codés sur 1024 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;\phi(N) = (p-1) * (q - 1)&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd(e, \phi(N)) = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
** Choisir &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;ed \equiv 1 [\phi(N)]&amp;lt;/math&amp;gt; et donc &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; est l&#039;inverse modulaire de &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; avec &amp;lt;math&amp;gt;d = e^-1 [\phi(N)]&amp;lt;/math&amp;gt;&lt;br /&gt;
** Clé publique : &amp;lt;math&amp;gt;pk(n, e)&amp;lt;/math&amp;gt;, Clé privée : &amp;lt;math&amp;gt;sk(d, p, q)&amp;lt;/math&amp;gt;&lt;br /&gt;
* Chiffrement : &amp;lt;math&amp;gt;c = m^e [N]&amp;lt;/math&amp;gt;&lt;br /&gt;
* Déchiffrement : &amp;lt;math&amp;gt;m = c^d [N]&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Exemple : &amp;lt;math&amp;gt;N=15&amp;lt;/math&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* Je choisis &amp;lt;math&amp;gt;x=7&amp;lt;/math&amp;gt;&lt;br /&gt;
* En calculant successivement les valeurs de &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; on trouve &amp;lt;math&amp;gt;7^{4} \equiv 1 [15]&amp;lt;/math&amp;gt;.&lt;br /&gt;
* &amp;lt;math&amp;gt;r=4&amp;lt;/math&amp;gt; est pair&lt;br /&gt;
* &amp;lt;math&amp;gt;pgcd(x^{\frac{r}{2}}+1,15) = 5&amp;lt;/math&amp;gt;. Donc &amp;lt;math&amp;gt;P = 5&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;Q = pgcd(x^{\frac{r}{2}}-1,15) = 3&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La sécurité de RSA repose sur la difficulté à factoriser des grands nombres en nombres premiers. En effet avec &amp;lt;math&amp;gt;(N, e)&amp;lt;/math&amp;gt; il faudrait pouvoir retrouver &amp;lt;math&amp;gt;(d, p, q)&amp;lt;/math&amp;gt; où &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt; correspondant à un cassage total. D&#039;après le théorème de factorisation unique tout entier &amp;lt;math&amp;gt;n \ge 2&amp;lt;/math&amp;gt; admet une factorisation unique en produit de puissances de nombres entiers. Des algorithmes de factorisation ont été trouvés pour différentes tailles de module $N$ mais pour pallier à ces attaques on augmente la longueur du module. De nos jours pour sécuriser le chiffrement il faut utiliser des modules strictement supérieur à 2048 bits. Cependant avec l&#039;informatique quantique il ne suffira plus d&#039;augmenter la taille du module car la puissance de calcul permettra de casser le chiffrement, peu importe la taille du module.&lt;br /&gt;
&lt;br /&gt;
== Chiffrement à clé privée face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
=== Mise en danger de la sécurité ===&lt;br /&gt;
&lt;br /&gt;
Si les ordinateurs quantiques présentent une rapidité de calcul permettant d&#039;effectuer des factorisations impossibles pour un ordinateur classique, il nous semble logique qu&#039;ils soient également performants pour effectuer des attaques de type force brute sur des messages chiffrés par une clé privée qui aurait été transmise par un moyen plus sûr que RSA.&lt;br /&gt;
 &lt;br /&gt;
Un ordinateur quantique pourrait réaliser le déchiffrement avec toutes les clés possibles en parallèle. Ce qui permettrait de cryptanalyser le message en une seule opération. Le principe se base sur la superposition quantique. On superposerait toutes les clés possibles et on déchiffrerait. On obtiendrait alors une superposition de résultats. Le point le plus difficile est de trouver le résultat correct à partir de la superposition obtenue. En effet, le principe selon lequel mesurer une valeur modifie cette valeur fait qu&#039;en observant une superposition, on obtient un seul état aléatoire. Une solution à ce problème a été trouvé par Lov Grover en $O(\sqrt{n})$ étapes.&lt;br /&gt;
&lt;br /&gt;
== Résistances aux attaques quantiques ==&lt;br /&gt;
&lt;br /&gt;
=== Chiffrement asyémétrique ===&lt;br /&gt;
&lt;br /&gt;
Depuis 2006, une conférence internationnale se produit chaque année nommée &amp;quot;Post Quantum Cryptography&amp;quot; dans l&#039;intention de trouver des algorithmes résistants aux ordinateurs quantiques. Nathan Hamlin et William Webb, des mathématiciens, ont présenté récemment un algorithme de chiffrement asymétrique possiblement capable de faire face aux attaques quantiques. Cet algorithme part de l&#039;ancien chiffrement de Merkle-Hellman qui se base sur le problème du sac à dos nommé &amp;quot;Knapsack code&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
==== Problème du sac-à-dos ====&lt;br /&gt;
&lt;br /&gt;
Etant donné un sac avec une capacité &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; et plusieurs objets de poids différents. Le problème du sac-à-dos consiste à trouver la suite d&#039;objets qui entre dans le sac et qui maximise sa capacité. En partant d&#039;un n-uplet &amp;lt;math&amp;gt;\left(a_1, a_2, ..., a_n\right) \in N^n&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;S \in N&amp;lt;/math&amp;gt;, il faut trouver un n-uplet binaire &amp;lt;math&amp;gt;\left(x_1, x_2, ..., x_n\right) \in {0,1}^n&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;S = \sum_{i=1}^{n} \left(a_{i}*x_{i}\right) &amp;lt;/math&amp;gt;. La somme &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; des poids des objets choisi ne doit pas dépasser la capacité du sac à dos. Pour résoudre ce problème il n&#039;existe pas d&#039;algorithme avec une compléxité polynomial.&lt;br /&gt;
&lt;br /&gt;
==== Chiffrement de Merkle-Hellman ====&lt;br /&gt;
&lt;br /&gt;
Cet algorithme de chiffrement à clé publique repose sur la complexité algorithmique du problème de sac-à-dos et utilise des suites de poids super-croissante pour le secret et non super-croissante pour la clé publique. Si les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt; n&#039;ont pas de propriétés particulières, la recherche du message codé en binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt; est un problème difficile. Il n&#039;existe pas d&#039;algorithme polynomial pour le résoudre. Pour pouvoir retrouver facilement ce n-uplet une propriété super-croissante est utilisé sur les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt;. Un n-uplet b est super-croissant si &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\forall i \in [2,n] b_{i} &amp;gt; \sum_{j=1}^{i-1} {b_{j}}&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ainsi en utilisant un algorithme glouton nous pouvons retrouver le n-uplet binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt;. L&#039;objet le plus lourd est dans le sac si le poids du sac est supérieur au poids de celui-ci. La propriété super-croissante assure que la somme des poids des autres objets sera toujours inférieur au poids de l&#039;objet le plus lourd. L&#039;algorithme est le suivant :&lt;br /&gt;
&lt;br /&gt;
  Pour i de n à 1 faire&lt;br /&gt;
    Si &amp;lt;math&amp;gt;b_{i} \le S&amp;lt;/math&amp;gt; alors&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i}  = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
    Sinon&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i} = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
    &amp;lt;math&amp;gt;S = S - x_{i} * b_{i}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Par exemple en prenant la suite des puissances de 2 comme suite super-croissante  avec : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = \left\{ 1,4,8 \right\}, b = \left\{ 1,2,4,8 \right\}, S = 13 \left(1+4+8\right), n = 4&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 4 : 8 \le 13 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_4 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 3 : 4 \le 5 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_3 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 2 : 2 \le 1 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    non donc &amp;lt;math&amp;gt;x_2 = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 1 : 1 \le 1 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_1 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  =&amp;gt; &amp;lt;math&amp;gt;m = \left\{ 1,0,1,1 \right\}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour chiffrer un n-uplet binaire &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;, l&#039;idée de Merkle et Hellman est de &amp;quot;tordre&amp;quot; les &amp;lt;math&amp;gt;b_{i}&amp;lt;/math&amp;gt; pour obtenir un n-uplet qui n&#039;est plus super-croissant. On choisit un nombre &amp;lt;math&amp;gt;u &amp;gt; \sum_{i=1}^{n} {b_{i}}&amp;lt;/math&amp;gt;, un entier &amp;lt;math&amp;gt;v \in N&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd\left(u,v\right) = 1&amp;lt;/math&amp;gt;. Ce qui donne &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; inversible dans &amp;lt;math&amp;gt;Z/uZ&amp;lt;/math&amp;gt;. On prend &amp;lt;math&amp;gt;w = v^{-1} \in Z/uZ&amp;lt;/math&amp;gt;. On calcule ensuite le n-uplet &amp;lt;math&amp;gt;a = \left(a_1, ..., a_n\right)&amp;lt;/math&amp;gt; tel que pour tout &amp;lt;math&amp;gt;i \in [1,n]&amp;lt;/math&amp;gt; on a : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = a * b_i (mod u)&amp;lt;/math&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
Le n-uplet &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; détermine la clé public tandis que &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt; sont gardés secrets. &amp;lt;br/&amp;gt;&lt;br /&gt;
Pour envoyer le message m à Bob, Alice va, à partir de l&#039;écriture de m en binaire, calculer la somme : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;c = \sum_{i=1}^{n} {m_i * a_i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
qu&#039;elle va envoyer à Bob. Bob pour déchiffrer va devoir procéder à plusieurs étapes : &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt;c = \sum_{i=1}^{n} {m_i * a_i}&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * a_i * w} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * a_i * v^{-1}} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * v * b_i * v^{-1}} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * b_i} [u]&amp;lt;/math&amp;gt;                      =&amp;gt; Comme &amp;lt;math&amp;gt; \sum_{i=1}^{n} {m_i * b_i} &amp;lt; \sum_{i=1}^{n} {b_i}&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt; u &amp;gt; \sum_{i=1}^{n} {b_i}&amp;lt;/math&amp;gt; le modulo &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; peut s&#039;enlever&lt;br /&gt;
* &amp;lt;math&amp;gt;= \sum_{i=1}^{n} {m_i * b_i}&amp;lt;/math&amp;gt;                           =&amp;gt; Comme &amp;lt;math&amp;gt;b_i&amp;lt;/math&amp;gt; est super-croissant Bob peut facilement retrouver &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Nouveau chiffrement de Hamlin-Webb ====&lt;br /&gt;
&lt;br /&gt;
Le chiffrement de Merkle et Hellman a été abandonné à la suite des découvertes de Shamir qui a découvert une attaque permettant de retrouver le message secret en utilisant un algorithme de la réduction des réseaux. Nathan Hamlin et William Webb reprennent cet algorithme en le renforçant par un changement de représentation des entiers. Ils ont prouvé q&#039;un entier pouvait être représenté de manière unique avec des suites récurrentes. Le secret &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; n&#039;est alors plus modélisé en binaire mais en une suite récurrente plus complexe à craquer.&lt;br /&gt;
&lt;br /&gt;
===== Représentation du message =====&lt;br /&gt;
La représentation d&#039;un nombre &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; en une suite récurrente &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt; se fait en utilisant une suite augmentée &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; de &amp;lt;math&amp;gt;1 \le j \le 10&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;0 \le i \le n&amp;lt;/math&amp;gt; donné par : &amp;lt;br/&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{1,i}= u_i&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{2,i}= u_i + u_{i-2}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{3,i}= u_i + u_{i-2} + u_{i-3}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{4,i}= u_i + u_{i-2} + 2u_{i-3}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{5,i}= u_i + u_{i-2} +2u_{i-3} + u_{i-4}&amp;lt;/math&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{10,i}= u_i + u_{i-2} +2u_{i-3} + 6u_{i-4}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le suite &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; correspond au blocs de chiffre autorisés. Dans l&#039;exemple &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; se calcule dans des groupes de taille 10 mais ce nombre peut varier. La suite &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; se calcule en utilisant un algorithme glouton sur &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; où l&#039;on remplace la somme en une expression dans la suite &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
Le message secret &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; est représenté par : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; M = \sum_{i=0}^{n-1} {d_i * u_i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
avec &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt; calculé grâce à &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
où les &amp;lt;math&amp;gt;d_i&amp;lt;/math&amp;gt; sont des blocs de chiffre lexicographiquement inférieur à &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Chiffrement symétrique quantique ===&lt;br /&gt;
&lt;br /&gt;
==== Photons polarisés ====&lt;br /&gt;
&lt;br /&gt;
Les photons sont des particules qui composent la lumière. Ils sont composés d&#039;un champ électrique et d&#039;un champ magnétique. Une lumière non-polarisée se caractérise par une différence d&#039;orientation du champ électrique suivant les photons. Ainsi la polarisation consiste, grâce à un polarisateur, d&#039;obtenir des photons avec un champ électrique orienté de manière identique. Les filtres polarisants permettent d&#039;appliquer un angle d&#039;orientation sur les photons afin :&lt;br /&gt;
* de récupérer les photons polarisés parallèlement par rapport à cet angle&lt;br /&gt;
* d&#039;éliminer les photons polarisés perpendiculairement&lt;br /&gt;
* de récupérer les photons polarisés intermédiaires avec une probabilité de &amp;lt;math&amp;gt;\cos\left(\alpha\right)&amp;lt;/math&amp;gt; en les réinitialisant avec une polarisation égale à l&#039;angle d&#039;orientation du filtre.&lt;br /&gt;
&lt;br /&gt;
Du fait de la transformation de polarisation il est impossible de connaître l&#039;information sur les polarisations précédentes du photons.&lt;br /&gt;
&lt;br /&gt;
==== Distribution des clés ====&lt;br /&gt;
&lt;br /&gt;
Le chiffrement quantique offre un moyen sécurisé d’échanger des clés privées pour réaliser des chiffrements symétriques. Cette distribution s’appuie sur l’envoi de photons polarisés par fibre optique. Les personnes s&#039;échangeant les clés doivent avoir accès à un canal quantique et un canal classique. Le principe est le suivant :&lt;br /&gt;
* Alice envoie par le canal quantique une suite de photons polarisés aléatoirement.&lt;br /&gt;
* Bob applique un filtre de polarisation qui lui donne 1 chance sur 2 (et 1 chance sur 4 s&#039;il y a eu un espion) d&#039;appliquer le bon filtre et les renvoit à Alice.&lt;br /&gt;
* Alice et Bob s&#039;échangent par le canal classique leur choix des axes de polarisation éliminant ainsi les erreurs.&lt;br /&gt;
* Alice communique une partie de ses résultats.&lt;br /&gt;
* Maintenant que Bob connait les axes qu&#039;Alice a appliqué et les résultats il peut savoir si la communication a été écoutée ou non. Ceci étant grâce au théorème de non clonage où il est impossible de cloner des états quantiques inconnus.&lt;br /&gt;
&lt;br /&gt;
Ce principe permet de détecter facilement s&#039;il y a eu des intrusions durant la communication de la clé privée. En effet si un attaquant écoute il lui faut récupérer les photons envoyés par Alice mesurer la polarisation et renvoyer le photon à Bob. Pour mesurer la polarisation l&#039;attaquant doit appliquer, comme Bob, un filtre pour deviner la base qu&#039;Alice a envoyé. Ainsi cette intrusion a 1 chance sur 2 d&#039;introduire des incohérences dans les données d&#039;Alice et Bob en envoyant 1 fois sur 2 un mauvais photon. Par la suite Bob obtient donc 1 chance sur 4 d&#039;appliquer le bon filtre. Par analyses statistiques, Alice et Bob peuvent détecter de manière sure s&#039;il y a eu espionnage sur le canal quantique.&lt;br /&gt;
&lt;br /&gt;
==== Attaque de l&#039;homme du milieu ====&lt;br /&gt;
&lt;br /&gt;
Comme toute méthode d&#039;échange de clé privée, cette méthode reste vulnérable à une attaque de type &amp;quot;homme du milieu&amp;quot;. Il faut donc la combiner avec un mécanisme de certification afin de s&#039;assurer de l&#039;identité des protagonistes.&lt;br /&gt;
&lt;br /&gt;
== Ressources ==&lt;br /&gt;
&lt;br /&gt;
* Hamlin, N., &amp;amp; Webb, W. A. (2012). Representing Positive Integers as a Sum of Linear Recurrence Sequences, Fibonacci Quart. 50 (2012), no. 2, 99–105. Fibonacci Quart, 50(2), 99-105.&lt;br /&gt;
&lt;br /&gt;
* Moyer, N. T. (2010). A knapsack-type cryptographic system using algebraic number rings (Doctoral dissertation, Washington State University).&lt;/div&gt;</summary>
		<author><name>JulianaLeclaire</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8695</id>
		<title>Projets étudiants cryptographie et sécurité/Leclaire DeRoland Crypto Quantique</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8695"/>
		<updated>2016-03-18T12:23:36Z</updated>

		<summary type="html">&lt;p&gt;JulianaLeclaire : /* Mise en danger de la sécurité du Web */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Auteurs : Juliana Leclaire, Céline de Roland ===&lt;br /&gt;
&lt;br /&gt;
== La cryptographie et la cryptanalyse dans le contexte de l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
L&#039;informatique quantique se base sur la superposition de plusieurs états quantiques pour améliorer les capacités de calculs. Ce domaine pose un vrai problème dans la sécurité de l&#039;internet qui utilise des algorithmes de chiffrement asymétriques pour les connexions SSL/TLS, paiements en ligne. Les nouveaux ordinateurs avec leur rapidité de calcul va pouvoir casser ces différents algorithmes de chiffrement asymétriques présents dans le Web.&lt;br /&gt;
&lt;br /&gt;
Il existe différents acteurs qui se penchent sur ce domaine. Notamment, la NSA, Google qui tentent de construire leur propre ordinateur quantique, des scientifiques qui se réunissent pour trouver des solutions.&lt;br /&gt;
Dans cette page, nous allons nous demander en quoi l&#039;informatique quantique peut changer le Web d&#039;aujourd&#039;hui et comment faire face à cette arrivée ?&lt;br /&gt;
&lt;br /&gt;
=== Fonctionnement de l&#039;informatique quantique ===&lt;br /&gt;
&lt;br /&gt;
==== Qubit ====&lt;br /&gt;
&lt;br /&gt;
C&#039;est la plus petite unité de stockage de l&#039;information. Etant donné deux états de base &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;, un qubit non mesuré se trouve dans l&#039;état &amp;lt;math&amp;gt;\alpha \left|0\right\rangle + \beta \left|1\right\rangle&amp;lt;/math&amp;gt;, avec &amp;lt;math&amp;gt;\left|\alpha\right|^2 + \left|\beta\right|^2 = 1&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Lorsqu&#039;on mesure la valeur du qubit, on obtient soit &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; soit &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\left|\alpha\right|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et  &amp;lt;math&amp;gt;\left|\beta\right|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Théorème de non clonage ====&lt;br /&gt;
&lt;br /&gt;
Ce théorème, découvert en 1982 par Wootters, Zurek, et Dieks, consiste à dire qu&#039;il est impossible de recopier un qubit à l&#039;identique. La démonstration (par l&#039;absurde) repose sur le fait que pouvoir mettre le qubit B dans le même état que le qubit A implique que le qubit B soit déjà dans le même état que le qubit A.&lt;br /&gt;
On en déduit qu&#039;il est impossible de faire une opération de type copier/coller en informatique quantique.&lt;br /&gt;
&lt;br /&gt;
==== Téléportation quantique ====&lt;br /&gt;
&lt;br /&gt;
La téléportation quantique consiste à transférer l&#039;état du qubit A dans le qubit B. Il s&#039;agit donc cette fois d&#039;une opération de couper/coller.&lt;br /&gt;
L&#039;intrication quantique se produit lorsque deux qubits sont dépendants l&#039;un de l&#039;autre même s&#039;ils sont éloignés l&#039;un de l&#039;autre. Dans cet état, si on mesure l&#039;un des deux, alors la mesure du deuxième est déterminée.&lt;br /&gt;
Sans entrer dans la théorie physique sous jacente, nous pouvons dire qu&#039;un canal EPR permet de réaliser cette opération de couper/coller en transmettant une information entre deux ordinateurs quantiques.&lt;br /&gt;
&lt;br /&gt;
== Chiffrement à clé publique face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
=== Mise en danger de la sécurité du Web ===&lt;br /&gt;
&lt;br /&gt;
Les ordinateurs quantiques présentent une rapidité de calculs extrêmement plus rapide que les ordinateurs classiques. Ces ordinateurs n&#039;auraient aucune difficulté pour casser les codes de sécurité actuels reposant principalement sur des chiffrements à clé publique. Par définition le chiffrement asymétrique chiffre avec une clé publique et déchiffre avec une clé privée. La complexité de craquage se base sur l&#039;utilisation de grands nombres. Si nous prenons l&#039;exemple de RSA.&lt;br /&gt;
&lt;br /&gt;
=== Exemple de chiffrement asymétrique: RSA ===&lt;br /&gt;
&lt;br /&gt;
Ce chiffrement est couramment utilisé dans la sécurité du Web. &lt;br /&gt;
RSA repose sur la génération de grands nombres premiers, d&#039;un chiffrement avec une clé publique et d&#039;un déchiffrement avec une clé privée. &lt;br /&gt;
&lt;br /&gt;
* Initialisation : &lt;br /&gt;
** module &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; (grand nombre entier codé sur 2048 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;p, q&amp;lt;/math&amp;gt; : nombres premiers de même taille (codés sur 1024 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;\phi(N) = (p-1) * (q - 1)&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd(e, \phi(N)) = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
** Choisir &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;ed \equiv 1 [\phi(N)]&amp;lt;/math&amp;gt; et donc &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; est l&#039;inverse modulaire de &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; avec &amp;lt;math&amp;gt;d = e^-1 [\phi(N)]&amp;lt;/math&amp;gt;&lt;br /&gt;
** Clé publique : &amp;lt;math&amp;gt;pk(n, e)&amp;lt;/math&amp;gt;, Clé privée : &amp;lt;math&amp;gt;sk(d, p, q)&amp;lt;/math&amp;gt;&lt;br /&gt;
* Chiffrement : &amp;lt;math&amp;gt;c = m^e [N]&amp;lt;/math&amp;gt;&lt;br /&gt;
* Déchiffrement : &amp;lt;math&amp;gt;m = c^d [N]&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Exemple : &amp;lt;math&amp;gt;N=15&amp;lt;/math&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* Je choisis &amp;lt;math&amp;gt;x=7&amp;lt;/math&amp;gt;&lt;br /&gt;
* En calculant successivement les valeurs de &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; on trouve &amp;lt;math&amp;gt;7^{4} \equiv 1 [15]&amp;lt;/math&amp;gt;.&lt;br /&gt;
* &amp;lt;math&amp;gt;r=4&amp;lt;/math&amp;gt; est pair&lt;br /&gt;
* &amp;lt;math&amp;gt;pgcd(x^{\frac{r}{2}}+1,15) = 5&amp;lt;/math&amp;gt;. Donc &amp;lt;math&amp;gt;P = 5&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;Q = pgcd(x^{\frac{r}{2}}-1,15) = 3&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La sécurité de RSA repose sur la difficulté à factoriser des grands nombres en nombres premiers. En effet avec &amp;lt;math&amp;gt;(N, e)&amp;lt;/math&amp;gt; il faudrait pouvoir retrouver &amp;lt;math&amp;gt;(d, p, q)&amp;lt;/math&amp;gt; où &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt; correspondant à un cassage total. D&#039;après le théorème de factorisation unique tout entier &amp;lt;math&amp;gt;n \ge 2&amp;lt;/math&amp;gt; admet une factorisation unique en produit de puissances de nombres entiers. Des algorithmes de factorisation ont été trouvés pour différentes tailles de module $N$ mais pour pallier à ces attaques on augmente la longueur du module. De nos jours pour sécuriser le chiffrement il faut utiliser des modules strictement supérieur à 2048 bits. Cependant avec l&#039;informatique quantique il ne suffira plus d&#039;augmenter la taille du module car la puissance de calcul permettra de casser le chiffrement, peu importe la taille du module.&lt;br /&gt;
&lt;br /&gt;
== Chiffrement à clé privée face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
=== Mise en danger de la sécurité ===&lt;br /&gt;
&lt;br /&gt;
Si les ordinateurs quantiques présentent une rapidité de calcul permettant d&#039;effectuer des factorisations impossibles pour un ordinateur classique, il nous semble logique qu&#039;ils soient également performants pour effectuer des attaques de type force brute sur des messages chiffrés par une clé privée qui aurait été transmise par un moyen plus sûr que RSA.&lt;br /&gt;
 &lt;br /&gt;
Un ordinateur quantique pourrait réaliser le déchiffrement avec toutes les clés possibles en parallèle. Ce qui permettrait de cryptanalyser le message en une seule opération. Le principe se base sur la superposition quantique. On superposerait toutes les clés possibles et on déchiffrerait. On obtiendrait alors une superposition de résultats. Le point le plus difficile est de trouver le résultat correct à partir de la superposition obtenue. En effet, le principe selon lequel mesurer une valeur modifie cette valeur fait qu&#039;en observant une superposition, on obtient un seul état aléatoire. Une solution à ce problème a été trouvé par Lov Grover en $O(\sqrt{n})$ étapes.&lt;br /&gt;
&lt;br /&gt;
== Résistances aux attaques quantiques ==&lt;br /&gt;
&lt;br /&gt;
=== Chiffrement asyémétrique ===&lt;br /&gt;
&lt;br /&gt;
Depuis 2006, une conférence internationnale se produit chaque année nommée &amp;quot;Post Quantum Cryptography&amp;quot; dans l&#039;intention de trouver des algorithmes résistants aux ordinateurs quantiques. Nathan Hamlin et William Webb, des mathématiciens, ont présenté récemment un algorithme de chiffrement asymétrique possiblement capable de faire face aux attaques quantiques. Cet algorithme part de l&#039;ancien chiffrement de Merkle-Hellman qui se base sur le problème du sac à dos nommé &amp;quot;Knapsack code&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
==== Problème du sac-à-dos ====&lt;br /&gt;
&lt;br /&gt;
Etant donné un sac avec une capacité &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; et plusieurs objets de poids différents. Le problème du sac-à-dos consiste à trouver la suite d&#039;objets qui entre dans le sac et qui maximise sa capacité. En partant d&#039;un n-uplet &amp;lt;math&amp;gt;\left(a_1, a_2, ..., a_n\right) \in N^n&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;S \in N&amp;lt;/math&amp;gt;, il faut trouver un n-uplet binaire &amp;lt;math&amp;gt;\left(x_1, x_2, ..., x_n\right) \in {0,1}^n&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;S = \sum_{i=1}^{n} \left(a_{i}*x_{i}\right) &amp;lt;/math&amp;gt;. La somme &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; des poids des objets choisi ne doit pas dépasser la capacité du sac à dos. Pour résoudre ce problème il n&#039;existe pas d&#039;algorithme avec une compléxité polynomial.&lt;br /&gt;
&lt;br /&gt;
==== Chiffrement de Merkle-Hellman ====&lt;br /&gt;
&lt;br /&gt;
Cet algorithme de chiffrement à clé publique repose sur la complexité algorithmique du problème de sac-à-dos et utilise des suites de poids super-croissante pour le secret et non super-croissante pour la clé publique. Si les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt; n&#039;ont pas de propriétés particulières, la recherche du message codé en binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt; est un problème difficile. Il n&#039;existe pas d&#039;algorithme polynomial pour le résoudre. Pour pouvoir retrouver facilement ce n-uplet une propriété super-croissante est utilisé sur les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt;. Un n-uplet b est super-croissant si &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\forall i \in [2,n] b_{i} &amp;gt; \sum_{j=1}^{i-1} {b_{j}}&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ainsi en utilisant un algorithme glouton nous pouvons retrouver le n-uplet binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt;. L&#039;objet le plus lourd est dans le sac si le poids du sac est supérieur au poids de celui-ci. La propriété super-croissante assure que la somme des poids des autres objets sera toujours inférieur au poids de l&#039;objet le plus lourd. L&#039;algorithme est le suivant :&lt;br /&gt;
&lt;br /&gt;
  Pour i de n à 1 faire&lt;br /&gt;
    Si &amp;lt;math&amp;gt;b_{i} \le S&amp;lt;/math&amp;gt; alors&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i}  = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
    Sinon&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i} = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
    &amp;lt;math&amp;gt;S = S - x_{i} * b_{i}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Par exemple en prenant la suite des puissances de 2 comme suite super-croissante  avec : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = \left\{ 1,4,8 \right\}, b = \left\{ 1,2,4,8 \right\}, S = 13 \left(1+4+8\right), n = 4&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 4 : 8 \le 13 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_4 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 3 : 4 \le 5 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_3 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 2 : 2 \le 1 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    non donc &amp;lt;math&amp;gt;x_2 = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 1 : 1 \le 1 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_1 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  =&amp;gt; &amp;lt;math&amp;gt;m = \left\{ 1,0,1,1 \right\}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour chiffrer un n-uplet binaire &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;, l&#039;idée de Merkle et Hellman est de &amp;quot;tordre&amp;quot; les &amp;lt;math&amp;gt;b_{i}&amp;lt;/math&amp;gt; pour obtenir un n-uplet qui n&#039;est plus super-croissant. On choisit un nombre &amp;lt;math&amp;gt;u &amp;gt; \sum_{i=1}^{n} {b_{i}}&amp;lt;/math&amp;gt;, un entier &amp;lt;math&amp;gt;v \in N&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd\left(u,v\right) = 1&amp;lt;/math&amp;gt;. Ce qui donne &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; inversible dans &amp;lt;math&amp;gt;Z/uZ&amp;lt;/math&amp;gt;. On prend &amp;lt;math&amp;gt;w = v^{-1} \in Z/uZ&amp;lt;/math&amp;gt;. On calcule ensuite le n-uplet &amp;lt;math&amp;gt;a = \left(a_1, ..., a_n\right)&amp;lt;/math&amp;gt; tel que pour tout &amp;lt;math&amp;gt;i \in [1,n]&amp;lt;/math&amp;gt; on a : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = a * b_i (mod u)&amp;lt;/math&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
Le n-uplet &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; détermine la clé public tandis que &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt; sont gardés secrets. &amp;lt;br/&amp;gt;&lt;br /&gt;
Pour envoyer le message m à Bob, Alice va, à partir de l&#039;écriture de m en binaire, calculer la somme : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;c = \sum_{i=1}^{n} {m_i * a_i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
qu&#039;elle va envoyer à Bob. Bob pour déchiffrer va devoir procéder à plusieurs étapes : &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt;c = \sum_{i=1}^{n} {m_i * a_i}&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * a_i * w} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * a_i * v^{-1}} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * v * b_i * v^{-1}} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * b_i} [u]&amp;lt;/math&amp;gt;                      =&amp;gt; Comme &amp;lt;math&amp;gt; \sum_{i=1}^{n} {m_i * b_i} &amp;lt; \sum_{i=1}^{n} {b_i}&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt; u &amp;gt; \sum_{i=1}^{n} {b_i}&amp;lt;/math&amp;gt; le modulo &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; peut s&#039;enlever&lt;br /&gt;
* &amp;lt;math&amp;gt;= \sum_{i=1}^{n} {m_i * b_i}&amp;lt;/math&amp;gt;                           =&amp;gt; Comme &amp;lt;math&amp;gt;b_i&amp;lt;/math&amp;gt; est super-croissant Bob peut facilement retrouver &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Nouveau chiffrement de Hamlin-Webb ====&lt;br /&gt;
&lt;br /&gt;
Le chiffrement de Merkle et Hellman a été abandonné à la suite des découvertes de Shamir qui a découvert une attaque permettant de retrouver le message secret en utilisant un algorithme de la réduction des réseaux. Nathan Hamlin et William Webb reprennent cet algorithme en le renforçant par un changement de représentation des entiers. Ils ont prouvé q&#039;un entier pouvait être représenté de manière unique avec des suites récurrentes. Le secret &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; n&#039;est alors plus modélisé en binaire mais en une suite récurrente plus complexe à craquer.&lt;br /&gt;
&lt;br /&gt;
===== Représentation du message =====&lt;br /&gt;
La représentation d&#039;un nombre &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; en une suite récurrente &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt; se fait en utilisant une suite augmentée &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; de &amp;lt;math&amp;gt;1 \le j \le 10&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;0 \le i \le n&amp;lt;/math&amp;gt; donné par : &amp;lt;br/&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{1,i}= u_i&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{2,i}= u_i + u_{i-2}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{3,i}= u_i + u_{i-2} + u_{i-3}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{4,i}= u_i + u_{i-2} + 2u_{i-3}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{5,i}= u_i + u_{i-2} +2u_{i-3} + u_{i-4}&amp;lt;/math&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{10,i}= u_i + u_{i-2} +2u_{i-3} + 6u_{i-4}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le suite &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; correspond au blocs de chiffre autorisés. Dans l&#039;exemple &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; se calcule dans des groupes de taille 10 mais ce nombre peut varier. La suite &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; se calcule en utilisant un algorithme glouton sur &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; où l&#039;on remplace la somme en une expression dans la suite &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
Le message secret &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; est représenté par : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; M = \sum_{i=0}^{n-1} {d_i * u_i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
avec &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt; calculé grâce à &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
où les &amp;lt;math&amp;gt;d_i&amp;lt;/math&amp;gt; sont des blocs de chiffre lexicographiquement inférieur à &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Chiffrement symétrique quantique ===&lt;br /&gt;
&lt;br /&gt;
==== Photons polarisés ====&lt;br /&gt;
&lt;br /&gt;
Les photons sont des particules qui composent la lumière. Ils sont composés d&#039;un champ électrique et d&#039;un champ magnétique. Une lumière non-polarisée se caractérise par une différence d&#039;orientation du champ électrique suivant les photons. Ainsi la polarisation consiste, grâce à un polarisateur, d&#039;obtenir des photons avec un champ électrique orienté de manière identique. Les filtres polarisants permettent d&#039;appliquer un angle d&#039;orientation sur les photons afin :&lt;br /&gt;
* de récupérer les photons polarisés parallèlement par rapport à cet angle&lt;br /&gt;
* d&#039;éliminer les photons polarisés perpendiculairement&lt;br /&gt;
* de récupérer les photons polarisés intermédiaires avec une probabilité de &amp;lt;math&amp;gt;\cos\left(\alpha\right)&amp;lt;/math&amp;gt; en les réinitialisant avec une polarisation égale à l&#039;angle d&#039;orientation du filtre.&lt;br /&gt;
&lt;br /&gt;
Du fait de la transformation de polarisation il est impossible de connaître l&#039;information sur les polarisations précédentes du photons.&lt;br /&gt;
&lt;br /&gt;
==== Distribution des clés ====&lt;br /&gt;
&lt;br /&gt;
Le chiffrement quantique offre un moyen sécurisé d’échanger des clés privées pour réaliser des chiffrements symétriques. Cette distribution s’appuie sur l’envoi de photons polarisés par fibre optique. Les personnes s&#039;échangeant les clés doivent avoir accès à un canal quantique et un canal classique. Le principe est le suivant :&lt;br /&gt;
* Alice envoie par le canal quantique une suite de photons polarisés aléatoirement.&lt;br /&gt;
* Bob applique un filtre de polarisation qui lui donne 1 chance sur 2 (et 1 chance sur 4 s&#039;il y a eu un espion) d&#039;appliquer le bon filtre et les renvoit à Alice.&lt;br /&gt;
* Alice et Bob s&#039;échangent par le canal classique leur choix des axes de polarisation éliminant ainsi les erreurs.&lt;br /&gt;
* Alice communique une partie de ses résultats.&lt;br /&gt;
* Maintenant que Bob connait les axes qu&#039;Alice a appliqué et les résultats il peut savoir si la communication a été écoutée ou non. Ceci étant grâce au théorème de non clonage où il est impossible de cloner des états quantiques inconnus.&lt;br /&gt;
&lt;br /&gt;
Ce principe permet de détecter facilement s&#039;il y a eu des intrusions durant la communication de la clé privée. En effet si un attaquant écoute il lui faut récupérer les photons envoyés par Alice mesurer la polarisation et renvoyer le photon à Bob. Pour mesurer la polarisation l&#039;attaquant doit appliquer, comme Bob, un filtre pour deviner la base qu&#039;Alice a envoyé. Ainsi cette intrusion a 1 chance sur 2 d&#039;introduire des incohérences dans les données d&#039;Alice et Bob en envoyant 1 fois sur 2 un mauvais photon. Par la suite Bob obtient donc 1 chance sur 4 d&#039;appliquer le bon filtre. Par analyses statistiques, Alice et Bob peuvent détecter de manière sure s&#039;il y a eu espionnage sur le canal quantique.&lt;br /&gt;
&lt;br /&gt;
==== Attaque de l&#039;homme du milieu ====&lt;br /&gt;
&lt;br /&gt;
Comme toute méthode d&#039;échange de clé privée, cette méthode reste vulnérable à une attaque de type &amp;quot;homme du milieu&amp;quot;. Il faut donc la combiner avec un mécanisme de certification afin de s&#039;assurer de l&#039;identité des protagonistes.&lt;br /&gt;
&lt;br /&gt;
== Ressources ==&lt;br /&gt;
&lt;br /&gt;
* Hamlin, N., &amp;amp; Webb, W. A. (2012). Representing Positive Integers as a Sum of Linear Recurrence Sequences, Fibonacci Quart. 50 (2012), no. 2, 99–105. Fibonacci Quart, 50(2), 99-105.&lt;br /&gt;
&lt;br /&gt;
* Moyer, N. T. (2010). A knapsack-type cryptographic system using algebraic number rings (Doctoral dissertation, Washington State University).&lt;/div&gt;</summary>
		<author><name>JulianaLeclaire</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8694</id>
		<title>Projets étudiants cryptographie et sécurité/Leclaire DeRoland Crypto Quantique</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8694"/>
		<updated>2016-03-18T12:23:00Z</updated>

		<summary type="html">&lt;p&gt;JulianaLeclaire : /* Mise en danger de la sécurité du Web */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Auteurs : Juliana Leclaire, Céline de Roland ===&lt;br /&gt;
&lt;br /&gt;
== La cryptographie et la cryptanalyse dans le contexte de l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
L&#039;informatique quantique se base sur la superposition de plusieurs états quantiques pour améliorer les capacités de calculs. Ce domaine pose un vrai problème dans la sécurité de l&#039;internet qui utilise des algorithmes de chiffrement asymétriques pour les connexions SSL/TLS, paiements en ligne. Les nouveaux ordinateurs avec leur rapidité de calcul va pouvoir casser ces différents algorithmes de chiffrement asymétriques présents dans le Web.&lt;br /&gt;
&lt;br /&gt;
Il existe différents acteurs qui se penchent sur ce domaine. Notamment, la NSA, Google qui tentent de construire leur propre ordinateur quantique, des scientifiques qui se réunissent pour trouver des solutions.&lt;br /&gt;
Dans cette page, nous allons nous demander en quoi l&#039;informatique quantique peut changer le Web d&#039;aujourd&#039;hui et comment faire face à cette arrivée ?&lt;br /&gt;
&lt;br /&gt;
=== Fonctionnement de l&#039;informatique quantique ===&lt;br /&gt;
&lt;br /&gt;
==== Qubit ====&lt;br /&gt;
&lt;br /&gt;
C&#039;est la plus petite unité de stockage de l&#039;information. Etant donné deux états de base &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;, un qubit non mesuré se trouve dans l&#039;état &amp;lt;math&amp;gt;\alpha \left|0\right\rangle + \beta \left|1\right\rangle&amp;lt;/math&amp;gt;, avec &amp;lt;math&amp;gt;\left|\alpha\right|^2 + \left|\beta\right|^2 = 1&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Lorsqu&#039;on mesure la valeur du qubit, on obtient soit &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; soit &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\left|\alpha\right|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et  &amp;lt;math&amp;gt;\left|\beta\right|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Théorème de non clonage ====&lt;br /&gt;
&lt;br /&gt;
Ce théorème, découvert en 1982 par Wootters, Zurek, et Dieks, consiste à dire qu&#039;il est impossible de recopier un qubit à l&#039;identique. La démonstration (par l&#039;absurde) repose sur le fait que pouvoir mettre le qubit B dans le même état que le qubit A implique que le qubit B soit déjà dans le même état que le qubit A.&lt;br /&gt;
On en déduit qu&#039;il est impossible de faire une opération de type copier/coller en informatique quantique.&lt;br /&gt;
&lt;br /&gt;
==== Téléportation quantique ====&lt;br /&gt;
&lt;br /&gt;
La téléportation quantique consiste à transférer l&#039;état du qubit A dans le qubit B. Il s&#039;agit donc cette fois d&#039;une opération de couper/coller.&lt;br /&gt;
L&#039;intrication quantique se produit lorsque deux qubits sont dépendants l&#039;un de l&#039;autre même s&#039;ils sont éloignés l&#039;un de l&#039;autre. Dans cet état, si on mesure l&#039;un des deux, alors la mesure du deuxième est déterminée.&lt;br /&gt;
Sans entrer dans la théorie physique sous jacente, nous pouvons dire qu&#039;un canal EPR permet de réaliser cette opération de couper/coller en transmettant une information entre deux ordinateurs quantiques.&lt;br /&gt;
&lt;br /&gt;
== Chiffrement à clé publique face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
=== Mise en danger de la sécurité du Web ===&lt;br /&gt;
&lt;br /&gt;
Les ordinateurs quantiques présentent une rapidité de calculs extrêmement plus rapide que les ordinateurs classiques. Ces ordinateurs n&#039;auraient aucune difficulté pour casser les codes de sécurité actuels reposant principalement sur des chiffrements à clé publique. Par définition le chiffrement asymétrique chiffre avec une clé publique et déchiffre avec une clé privée. La complexité de craquage se base sur l&#039;utilisation de grands nombres.&lt;br /&gt;
&lt;br /&gt;
=== Exemple de chiffrement asymétrique: RSA ===&lt;br /&gt;
&lt;br /&gt;
Ce chiffrement est couramment utilisé dans la sécurité du Web. &lt;br /&gt;
RSA repose sur la génération de grands nombres premiers, d&#039;un chiffrement avec une clé publique et d&#039;un déchiffrement avec une clé privée. &lt;br /&gt;
&lt;br /&gt;
* Initialisation : &lt;br /&gt;
** module &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; (grand nombre entier codé sur 2048 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;p, q&amp;lt;/math&amp;gt; : nombres premiers de même taille (codés sur 1024 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;\phi(N) = (p-1) * (q - 1)&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd(e, \phi(N)) = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
** Choisir &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;ed \equiv 1 [\phi(N)]&amp;lt;/math&amp;gt; et donc &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; est l&#039;inverse modulaire de &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; avec &amp;lt;math&amp;gt;d = e^-1 [\phi(N)]&amp;lt;/math&amp;gt;&lt;br /&gt;
** Clé publique : &amp;lt;math&amp;gt;pk(n, e)&amp;lt;/math&amp;gt;, Clé privée : &amp;lt;math&amp;gt;sk(d, p, q)&amp;lt;/math&amp;gt;&lt;br /&gt;
* Chiffrement : &amp;lt;math&amp;gt;c = m^e [N]&amp;lt;/math&amp;gt;&lt;br /&gt;
* Déchiffrement : &amp;lt;math&amp;gt;m = c^d [N]&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Exemple : &amp;lt;math&amp;gt;N=15&amp;lt;/math&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* Je choisis &amp;lt;math&amp;gt;x=7&amp;lt;/math&amp;gt;&lt;br /&gt;
* En calculant successivement les valeurs de &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; on trouve &amp;lt;math&amp;gt;7^{4} \equiv 1 [15]&amp;lt;/math&amp;gt;.&lt;br /&gt;
* &amp;lt;math&amp;gt;r=4&amp;lt;/math&amp;gt; est pair&lt;br /&gt;
* &amp;lt;math&amp;gt;pgcd(x^{\frac{r}{2}}+1,15) = 5&amp;lt;/math&amp;gt;. Donc &amp;lt;math&amp;gt;P = 5&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;Q = pgcd(x^{\frac{r}{2}}-1,15) = 3&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La sécurité de RSA repose sur la difficulté à factoriser des grands nombres en nombres premiers. En effet avec &amp;lt;math&amp;gt;(N, e)&amp;lt;/math&amp;gt; il faudrait pouvoir retrouver &amp;lt;math&amp;gt;(d, p, q)&amp;lt;/math&amp;gt; où &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt; correspondant à un cassage total. D&#039;après le théorème de factorisation unique tout entier &amp;lt;math&amp;gt;n \ge 2&amp;lt;/math&amp;gt; admet une factorisation unique en produit de puissances de nombres entiers. Des algorithmes de factorisation ont été trouvés pour différentes tailles de module $N$ mais pour pallier à ces attaques on augmente la longueur du module. De nos jours pour sécuriser le chiffrement il faut utiliser des modules strictement supérieur à 2048 bits. Cependant avec l&#039;informatique quantique il ne suffira plus d&#039;augmenter la taille du module car la puissance de calcul permettra de casser le chiffrement, peu importe la taille du module.&lt;br /&gt;
&lt;br /&gt;
== Chiffrement à clé privée face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
=== Mise en danger de la sécurité ===&lt;br /&gt;
&lt;br /&gt;
Si les ordinateurs quantiques présentent une rapidité de calcul permettant d&#039;effectuer des factorisations impossibles pour un ordinateur classique, il nous semble logique qu&#039;ils soient également performants pour effectuer des attaques de type force brute sur des messages chiffrés par une clé privée qui aurait été transmise par un moyen plus sûr que RSA.&lt;br /&gt;
 &lt;br /&gt;
Un ordinateur quantique pourrait réaliser le déchiffrement avec toutes les clés possibles en parallèle. Ce qui permettrait de cryptanalyser le message en une seule opération. Le principe se base sur la superposition quantique. On superposerait toutes les clés possibles et on déchiffrerait. On obtiendrait alors une superposition de résultats. Le point le plus difficile est de trouver le résultat correct à partir de la superposition obtenue. En effet, le principe selon lequel mesurer une valeur modifie cette valeur fait qu&#039;en observant une superposition, on obtient un seul état aléatoire. Une solution à ce problème a été trouvé par Lov Grover en $O(\sqrt{n})$ étapes.&lt;br /&gt;
&lt;br /&gt;
== Résistances aux attaques quantiques ==&lt;br /&gt;
&lt;br /&gt;
=== Chiffrement asyémétrique ===&lt;br /&gt;
&lt;br /&gt;
Depuis 2006, une conférence internationnale se produit chaque année nommée &amp;quot;Post Quantum Cryptography&amp;quot; dans l&#039;intention de trouver des algorithmes résistants aux ordinateurs quantiques. Nathan Hamlin et William Webb, des mathématiciens, ont présenté récemment un algorithme de chiffrement asymétrique possiblement capable de faire face aux attaques quantiques. Cet algorithme part de l&#039;ancien chiffrement de Merkle-Hellman qui se base sur le problème du sac à dos nommé &amp;quot;Knapsack code&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
==== Problème du sac-à-dos ====&lt;br /&gt;
&lt;br /&gt;
Etant donné un sac avec une capacité &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; et plusieurs objets de poids différents. Le problème du sac-à-dos consiste à trouver la suite d&#039;objets qui entre dans le sac et qui maximise sa capacité. En partant d&#039;un n-uplet &amp;lt;math&amp;gt;\left(a_1, a_2, ..., a_n\right) \in N^n&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;S \in N&amp;lt;/math&amp;gt;, il faut trouver un n-uplet binaire &amp;lt;math&amp;gt;\left(x_1, x_2, ..., x_n\right) \in {0,1}^n&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;S = \sum_{i=1}^{n} \left(a_{i}*x_{i}\right) &amp;lt;/math&amp;gt;. La somme &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; des poids des objets choisi ne doit pas dépasser la capacité du sac à dos. Pour résoudre ce problème il n&#039;existe pas d&#039;algorithme avec une compléxité polynomial.&lt;br /&gt;
&lt;br /&gt;
==== Chiffrement de Merkle-Hellman ====&lt;br /&gt;
&lt;br /&gt;
Cet algorithme de chiffrement à clé publique repose sur la complexité algorithmique du problème de sac-à-dos et utilise des suites de poids super-croissante pour le secret et non super-croissante pour la clé publique. Si les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt; n&#039;ont pas de propriétés particulières, la recherche du message codé en binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt; est un problème difficile. Il n&#039;existe pas d&#039;algorithme polynomial pour le résoudre. Pour pouvoir retrouver facilement ce n-uplet une propriété super-croissante est utilisé sur les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt;. Un n-uplet b est super-croissant si &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\forall i \in [2,n] b_{i} &amp;gt; \sum_{j=1}^{i-1} {b_{j}}&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ainsi en utilisant un algorithme glouton nous pouvons retrouver le n-uplet binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt;. L&#039;objet le plus lourd est dans le sac si le poids du sac est supérieur au poids de celui-ci. La propriété super-croissante assure que la somme des poids des autres objets sera toujours inférieur au poids de l&#039;objet le plus lourd. L&#039;algorithme est le suivant :&lt;br /&gt;
&lt;br /&gt;
  Pour i de n à 1 faire&lt;br /&gt;
    Si &amp;lt;math&amp;gt;b_{i} \le S&amp;lt;/math&amp;gt; alors&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i}  = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
    Sinon&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i} = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
    &amp;lt;math&amp;gt;S = S - x_{i} * b_{i}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Par exemple en prenant la suite des puissances de 2 comme suite super-croissante  avec : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = \left\{ 1,4,8 \right\}, b = \left\{ 1,2,4,8 \right\}, S = 13 \left(1+4+8\right), n = 4&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 4 : 8 \le 13 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_4 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 3 : 4 \le 5 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_3 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 2 : 2 \le 1 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    non donc &amp;lt;math&amp;gt;x_2 = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 1 : 1 \le 1 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_1 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  =&amp;gt; &amp;lt;math&amp;gt;m = \left\{ 1,0,1,1 \right\}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour chiffrer un n-uplet binaire &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;, l&#039;idée de Merkle et Hellman est de &amp;quot;tordre&amp;quot; les &amp;lt;math&amp;gt;b_{i}&amp;lt;/math&amp;gt; pour obtenir un n-uplet qui n&#039;est plus super-croissant. On choisit un nombre &amp;lt;math&amp;gt;u &amp;gt; \sum_{i=1}^{n} {b_{i}}&amp;lt;/math&amp;gt;, un entier &amp;lt;math&amp;gt;v \in N&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd\left(u,v\right) = 1&amp;lt;/math&amp;gt;. Ce qui donne &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; inversible dans &amp;lt;math&amp;gt;Z/uZ&amp;lt;/math&amp;gt;. On prend &amp;lt;math&amp;gt;w = v^{-1} \in Z/uZ&amp;lt;/math&amp;gt;. On calcule ensuite le n-uplet &amp;lt;math&amp;gt;a = \left(a_1, ..., a_n\right)&amp;lt;/math&amp;gt; tel que pour tout &amp;lt;math&amp;gt;i \in [1,n]&amp;lt;/math&amp;gt; on a : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = a * b_i (mod u)&amp;lt;/math&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
Le n-uplet &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; détermine la clé public tandis que &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt; sont gardés secrets. &amp;lt;br/&amp;gt;&lt;br /&gt;
Pour envoyer le message m à Bob, Alice va, à partir de l&#039;écriture de m en binaire, calculer la somme : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;c = \sum_{i=1}^{n} {m_i * a_i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
qu&#039;elle va envoyer à Bob. Bob pour déchiffrer va devoir procéder à plusieurs étapes : &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt;c = \sum_{i=1}^{n} {m_i * a_i}&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * a_i * w} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * a_i * v^{-1}} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * v * b_i * v^{-1}} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * b_i} [u]&amp;lt;/math&amp;gt;                      =&amp;gt; Comme &amp;lt;math&amp;gt; \sum_{i=1}^{n} {m_i * b_i} &amp;lt; \sum_{i=1}^{n} {b_i}&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt; u &amp;gt; \sum_{i=1}^{n} {b_i}&amp;lt;/math&amp;gt; le modulo &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; peut s&#039;enlever&lt;br /&gt;
* &amp;lt;math&amp;gt;= \sum_{i=1}^{n} {m_i * b_i}&amp;lt;/math&amp;gt;                           =&amp;gt; Comme &amp;lt;math&amp;gt;b_i&amp;lt;/math&amp;gt; est super-croissant Bob peut facilement retrouver &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Nouveau chiffrement de Hamlin-Webb ====&lt;br /&gt;
&lt;br /&gt;
Le chiffrement de Merkle et Hellman a été abandonné à la suite des découvertes de Shamir qui a découvert une attaque permettant de retrouver le message secret en utilisant un algorithme de la réduction des réseaux. Nathan Hamlin et William Webb reprennent cet algorithme en le renforçant par un changement de représentation des entiers. Ils ont prouvé q&#039;un entier pouvait être représenté de manière unique avec des suites récurrentes. Le secret &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; n&#039;est alors plus modélisé en binaire mais en une suite récurrente plus complexe à craquer.&lt;br /&gt;
&lt;br /&gt;
===== Représentation du message =====&lt;br /&gt;
La représentation d&#039;un nombre &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; en une suite récurrente &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt; se fait en utilisant une suite augmentée &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; de &amp;lt;math&amp;gt;1 \le j \le 10&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;0 \le i \le n&amp;lt;/math&amp;gt; donné par : &amp;lt;br/&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{1,i}= u_i&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{2,i}= u_i + u_{i-2}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{3,i}= u_i + u_{i-2} + u_{i-3}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{4,i}= u_i + u_{i-2} + 2u_{i-3}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{5,i}= u_i + u_{i-2} +2u_{i-3} + u_{i-4}&amp;lt;/math&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{10,i}= u_i + u_{i-2} +2u_{i-3} + 6u_{i-4}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le suite &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; correspond au blocs de chiffre autorisés. Dans l&#039;exemple &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; se calcule dans des groupes de taille 10 mais ce nombre peut varier. La suite &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; se calcule en utilisant un algorithme glouton sur &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; où l&#039;on remplace la somme en une expression dans la suite &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
Le message secret &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; est représenté par : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; M = \sum_{i=0}^{n-1} {d_i * u_i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
avec &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt; calculé grâce à &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
où les &amp;lt;math&amp;gt;d_i&amp;lt;/math&amp;gt; sont des blocs de chiffre lexicographiquement inférieur à &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Chiffrement symétrique quantique ===&lt;br /&gt;
&lt;br /&gt;
==== Photons polarisés ====&lt;br /&gt;
&lt;br /&gt;
Les photons sont des particules qui composent la lumière. Ils sont composés d&#039;un champ électrique et d&#039;un champ magnétique. Une lumière non-polarisée se caractérise par une différence d&#039;orientation du champ électrique suivant les photons. Ainsi la polarisation consiste, grâce à un polarisateur, d&#039;obtenir des photons avec un champ électrique orienté de manière identique. Les filtres polarisants permettent d&#039;appliquer un angle d&#039;orientation sur les photons afin :&lt;br /&gt;
* de récupérer les photons polarisés parallèlement par rapport à cet angle&lt;br /&gt;
* d&#039;éliminer les photons polarisés perpendiculairement&lt;br /&gt;
* de récupérer les photons polarisés intermédiaires avec une probabilité de &amp;lt;math&amp;gt;\cos\left(\alpha\right)&amp;lt;/math&amp;gt; en les réinitialisant avec une polarisation égale à l&#039;angle d&#039;orientation du filtre.&lt;br /&gt;
&lt;br /&gt;
Du fait de la transformation de polarisation il est impossible de connaître l&#039;information sur les polarisations précédentes du photons.&lt;br /&gt;
&lt;br /&gt;
==== Distribution des clés ====&lt;br /&gt;
&lt;br /&gt;
Le chiffrement quantique offre un moyen sécurisé d’échanger des clés privées pour réaliser des chiffrements symétriques. Cette distribution s’appuie sur l’envoi de photons polarisés par fibre optique. Les personnes s&#039;échangeant les clés doivent avoir accès à un canal quantique et un canal classique. Le principe est le suivant :&lt;br /&gt;
* Alice envoie par le canal quantique une suite de photons polarisés aléatoirement.&lt;br /&gt;
* Bob applique un filtre de polarisation qui lui donne 1 chance sur 2 (et 1 chance sur 4 s&#039;il y a eu un espion) d&#039;appliquer le bon filtre et les renvoit à Alice.&lt;br /&gt;
* Alice et Bob s&#039;échangent par le canal classique leur choix des axes de polarisation éliminant ainsi les erreurs.&lt;br /&gt;
* Alice communique une partie de ses résultats.&lt;br /&gt;
* Maintenant que Bob connait les axes qu&#039;Alice a appliqué et les résultats il peut savoir si la communication a été écoutée ou non. Ceci étant grâce au théorème de non clonage où il est impossible de cloner des états quantiques inconnus.&lt;br /&gt;
&lt;br /&gt;
Ce principe permet de détecter facilement s&#039;il y a eu des intrusions durant la communication de la clé privée. En effet si un attaquant écoute il lui faut récupérer les photons envoyés par Alice mesurer la polarisation et renvoyer le photon à Bob. Pour mesurer la polarisation l&#039;attaquant doit appliquer, comme Bob, un filtre pour deviner la base qu&#039;Alice a envoyé. Ainsi cette intrusion a 1 chance sur 2 d&#039;introduire des incohérences dans les données d&#039;Alice et Bob en envoyant 1 fois sur 2 un mauvais photon. Par la suite Bob obtient donc 1 chance sur 4 d&#039;appliquer le bon filtre. Par analyses statistiques, Alice et Bob peuvent détecter de manière sure s&#039;il y a eu espionnage sur le canal quantique.&lt;br /&gt;
&lt;br /&gt;
==== Attaque de l&#039;homme du milieu ====&lt;br /&gt;
&lt;br /&gt;
Comme toute méthode d&#039;échange de clé privée, cette méthode reste vulnérable à une attaque de type &amp;quot;homme du milieu&amp;quot;. Il faut donc la combiner avec un mécanisme de certification afin de s&#039;assurer de l&#039;identité des protagonistes.&lt;br /&gt;
&lt;br /&gt;
== Ressources ==&lt;br /&gt;
&lt;br /&gt;
* Hamlin, N., &amp;amp; Webb, W. A. (2012). Representing Positive Integers as a Sum of Linear Recurrence Sequences, Fibonacci Quart. 50 (2012), no. 2, 99–105. Fibonacci Quart, 50(2), 99-105.&lt;br /&gt;
&lt;br /&gt;
* Moyer, N. T. (2010). A knapsack-type cryptographic system using algebraic number rings (Doctoral dissertation, Washington State University).&lt;/div&gt;</summary>
		<author><name>JulianaLeclaire</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8693</id>
		<title>Projets étudiants cryptographie et sécurité/Leclaire DeRoland Crypto Quantique</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8693"/>
		<updated>2016-03-18T12:19:17Z</updated>

		<summary type="html">&lt;p&gt;JulianaLeclaire : /* Qubit */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Auteurs : Juliana Leclaire, Céline de Roland ===&lt;br /&gt;
&lt;br /&gt;
== La cryptographie et la cryptanalyse dans le contexte de l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
L&#039;informatique quantique se base sur la superposition de plusieurs états quantiques pour améliorer les capacités de calculs. Ce domaine pose un vrai problème dans la sécurité de l&#039;internet qui utilise des algorithmes de chiffrement asymétriques pour les connexions SSL/TLS, paiements en ligne. Les nouveaux ordinateurs avec leur rapidité de calcul va pouvoir casser ces différents algorithmes de chiffrement asymétriques présents dans le Web.&lt;br /&gt;
&lt;br /&gt;
Il existe différents acteurs qui se penchent sur ce domaine. Notamment, la NSA, Google qui tentent de construire leur propre ordinateur quantique, des scientifiques qui se réunissent pour trouver des solutions.&lt;br /&gt;
Dans cette page, nous allons nous demander en quoi l&#039;informatique quantique peut changer le Web d&#039;aujourd&#039;hui et comment faire face à cette arrivée ?&lt;br /&gt;
&lt;br /&gt;
=== Fonctionnement de l&#039;informatique quantique ===&lt;br /&gt;
&lt;br /&gt;
==== Qubit ====&lt;br /&gt;
&lt;br /&gt;
C&#039;est la plus petite unité de stockage de l&#039;information. Etant donné deux états de base &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;, un qubit non mesuré se trouve dans l&#039;état &amp;lt;math&amp;gt;\alpha \left|0\right\rangle + \beta \left|1\right\rangle&amp;lt;/math&amp;gt;, avec &amp;lt;math&amp;gt;\left|\alpha\right|^2 + \left|\beta\right|^2 = 1&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Lorsqu&#039;on mesure la valeur du qubit, on obtient soit &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; soit &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\left|\alpha\right|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et  &amp;lt;math&amp;gt;\left|\beta\right|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Théorème de non clonage ====&lt;br /&gt;
&lt;br /&gt;
Ce théorème, découvert en 1982 par Wootters, Zurek, et Dieks, consiste à dire qu&#039;il est impossible de recopier un qubit à l&#039;identique. La démonstration (par l&#039;absurde) repose sur le fait que pouvoir mettre le qubit B dans le même état que le qubit A implique que le qubit B soit déjà dans le même état que le qubit A.&lt;br /&gt;
On en déduit qu&#039;il est impossible de faire une opération de type copier/coller en informatique quantique.&lt;br /&gt;
&lt;br /&gt;
==== Téléportation quantique ====&lt;br /&gt;
&lt;br /&gt;
La téléportation quantique consiste à transférer l&#039;état du qubit A dans le qubit B. Il s&#039;agit donc cette fois d&#039;une opération de couper/coller.&lt;br /&gt;
L&#039;intrication quantique se produit lorsque deux qubits sont dépendants l&#039;un de l&#039;autre même s&#039;ils sont éloignés l&#039;un de l&#039;autre. Dans cet état, si on mesure l&#039;un des deux, alors la mesure du deuxième est déterminée.&lt;br /&gt;
Sans entrer dans la théorie physique sous jacente, nous pouvons dire qu&#039;un canal EPR permet de réaliser cette opération de couper/coller en transmettant une information entre deux ordinateurs quantiques.&lt;br /&gt;
&lt;br /&gt;
== Chiffrement à clé publique face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
=== Mise en danger de la sécurité du Web ===&lt;br /&gt;
&lt;br /&gt;
Les ordinateurs quantiques présentent une rapidité de calculs extrèmement plus rapide que les ordinateurs à base de sillicium. Ces ordinateurs auraient aucune difficulté pour casser les codes de sécurité actuels reposant principalement sur un chiffrement à clé publique. Par définition le chiffrement à clé publique utilise une clé publique pour le chiffrement et une clé privée pour le décodage en se basant sur des grands nombres. Cependant ces grands nombres peuvent être vite retrouvés par des ordinateurs quantiques.&lt;br /&gt;
&lt;br /&gt;
=== Exemple de chiffrement asymétrique: RSA ===&lt;br /&gt;
&lt;br /&gt;
Ce chiffrement est couramment utilisé dans la sécurité du Web. &lt;br /&gt;
RSA repose sur la génération de grands nombres premiers, d&#039;un chiffrement avec une clé publique et d&#039;un déchiffrement avec une clé privée. &lt;br /&gt;
&lt;br /&gt;
* Initialisation : &lt;br /&gt;
** module &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; (grand nombre entier codé sur 2048 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;p, q&amp;lt;/math&amp;gt; : nombres premiers de même taille (codés sur 1024 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;\phi(N) = (p-1) * (q - 1)&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd(e, \phi(N)) = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
** Choisir &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;ed \equiv 1 [\phi(N)]&amp;lt;/math&amp;gt; et donc &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; est l&#039;inverse modulaire de &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; avec &amp;lt;math&amp;gt;d = e^-1 [\phi(N)]&amp;lt;/math&amp;gt;&lt;br /&gt;
** Clé publique : &amp;lt;math&amp;gt;pk(n, e)&amp;lt;/math&amp;gt;, Clé privée : &amp;lt;math&amp;gt;sk(d, p, q)&amp;lt;/math&amp;gt;&lt;br /&gt;
* Chiffrement : &amp;lt;math&amp;gt;c = m^e [N]&amp;lt;/math&amp;gt;&lt;br /&gt;
* Déchiffrement : &amp;lt;math&amp;gt;m = c^d [N]&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Exemple : &amp;lt;math&amp;gt;N=15&amp;lt;/math&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* Je choisis &amp;lt;math&amp;gt;x=7&amp;lt;/math&amp;gt;&lt;br /&gt;
* En calculant successivement les valeurs de &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; on trouve &amp;lt;math&amp;gt;7^{4} \equiv 1 [15]&amp;lt;/math&amp;gt;.&lt;br /&gt;
* &amp;lt;math&amp;gt;r=4&amp;lt;/math&amp;gt; est pair&lt;br /&gt;
* &amp;lt;math&amp;gt;pgcd(x^{\frac{r}{2}}+1,15) = 5&amp;lt;/math&amp;gt;. Donc &amp;lt;math&amp;gt;P = 5&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;Q = pgcd(x^{\frac{r}{2}}-1,15) = 3&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La sécurité de RSA repose sur la difficulté à factoriser des grands nombres en nombres premiers. En effet avec &amp;lt;math&amp;gt;(N, e)&amp;lt;/math&amp;gt; il faudrait pouvoir retrouver &amp;lt;math&amp;gt;(d, p, q)&amp;lt;/math&amp;gt; où &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt; correspondant à un cassage total. D&#039;après le théorème de factorisation unique tout entier &amp;lt;math&amp;gt;n \ge 2&amp;lt;/math&amp;gt; admet une factorisation unique en produit de puissances de nombres entiers. Des algorithmes de factorisation ont été trouvés pour différentes tailles de module $N$ mais pour pallier à ces attaques on augmente la longueur du module. De nos jours pour sécuriser le chiffrement il faut utiliser des modules strictement supérieur à 2048 bits. Cependant avec l&#039;informatique quantique il ne suffira plus d&#039;augmenter la taille du module car la puissance de calcul permettra de casser le chiffrement, peu importe la taille du module.&lt;br /&gt;
&lt;br /&gt;
== Chiffrement à clé privée face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
=== Mise en danger de la sécurité ===&lt;br /&gt;
&lt;br /&gt;
Si les ordinateurs quantiques présentent une rapidité de calcul permettant d&#039;effectuer des factorisations impossibles pour un ordinateur classique, il nous semble logique qu&#039;ils soient également performants pour effectuer des attaques de type force brute sur des messages chiffrés par une clé privée qui aurait été transmise par un moyen plus sûr que RSA.&lt;br /&gt;
 &lt;br /&gt;
Un ordinateur quantique pourrait réaliser le déchiffrement avec toutes les clés possibles en parallèle. Ce qui permettrait de cryptanalyser le message en une seule opération. Le principe se base sur la superposition quantique. On superposerait toutes les clés possibles et on déchiffrerait. On obtiendrait alors une superposition de résultats. Le point le plus difficile est de trouver le résultat correct à partir de la superposition obtenue. En effet, le principe selon lequel mesurer une valeur modifie cette valeur fait qu&#039;en observant une superposition, on obtient un seul état aléatoire. Une solution à ce problème a été trouvé par Lov Grover en $O(\sqrt{n})$ étapes.&lt;br /&gt;
&lt;br /&gt;
== Résistances aux attaques quantiques ==&lt;br /&gt;
&lt;br /&gt;
=== Chiffrement asyémétrique ===&lt;br /&gt;
&lt;br /&gt;
Depuis 2006, une conférence internationnale se produit chaque année nommée &amp;quot;Post Quantum Cryptography&amp;quot; dans l&#039;intention de trouver des algorithmes résistants aux ordinateurs quantiques. Nathan Hamlin et William Webb, des mathématiciens, ont présenté récemment un algorithme de chiffrement asymétrique possiblement capable de faire face aux attaques quantiques. Cet algorithme part de l&#039;ancien chiffrement de Merkle-Hellman qui se base sur le problème du sac à dos nommé &amp;quot;Knapsack code&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
==== Problème du sac-à-dos ====&lt;br /&gt;
&lt;br /&gt;
Etant donné un sac avec une capacité &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; et plusieurs objets de poids différents. Le problème du sac-à-dos consiste à trouver la suite d&#039;objets qui entre dans le sac et qui maximise sa capacité. En partant d&#039;un n-uplet &amp;lt;math&amp;gt;\left(a_1, a_2, ..., a_n\right) \in N^n&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;S \in N&amp;lt;/math&amp;gt;, il faut trouver un n-uplet binaire &amp;lt;math&amp;gt;\left(x_1, x_2, ..., x_n\right) \in {0,1}^n&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;S = \sum_{i=1}^{n} \left(a_{i}*x_{i}\right) &amp;lt;/math&amp;gt;. La somme &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; des poids des objets choisi ne doit pas dépasser la capacité du sac à dos. Pour résoudre ce problème il n&#039;existe pas d&#039;algorithme avec une compléxité polynomial.&lt;br /&gt;
&lt;br /&gt;
==== Chiffrement de Merkle-Hellman ====&lt;br /&gt;
&lt;br /&gt;
Cet algorithme de chiffrement à clé publique repose sur la complexité algorithmique du problème de sac-à-dos et utilise des suites de poids super-croissante pour le secret et non super-croissante pour la clé publique. Si les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt; n&#039;ont pas de propriétés particulières, la recherche du message codé en binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt; est un problème difficile. Il n&#039;existe pas d&#039;algorithme polynomial pour le résoudre. Pour pouvoir retrouver facilement ce n-uplet une propriété super-croissante est utilisé sur les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt;. Un n-uplet b est super-croissant si &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\forall i \in [2,n] b_{i} &amp;gt; \sum_{j=1}^{i-1} {b_{j}}&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ainsi en utilisant un algorithme glouton nous pouvons retrouver le n-uplet binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt;. L&#039;objet le plus lourd est dans le sac si le poids du sac est supérieur au poids de celui-ci. La propriété super-croissante assure que la somme des poids des autres objets sera toujours inférieur au poids de l&#039;objet le plus lourd. L&#039;algorithme est le suivant :&lt;br /&gt;
&lt;br /&gt;
  Pour i de n à 1 faire&lt;br /&gt;
    Si &amp;lt;math&amp;gt;b_{i} \le S&amp;lt;/math&amp;gt; alors&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i}  = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
    Sinon&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i} = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
    &amp;lt;math&amp;gt;S = S - x_{i} * b_{i}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Par exemple en prenant la suite des puissances de 2 comme suite super-croissante  avec : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = \left\{ 1,4,8 \right\}, b = \left\{ 1,2,4,8 \right\}, S = 13 \left(1+4+8\right), n = 4&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 4 : 8 \le 13 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_4 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 3 : 4 \le 5 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_3 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 2 : 2 \le 1 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    non donc &amp;lt;math&amp;gt;x_2 = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 1 : 1 \le 1 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_1 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  =&amp;gt; &amp;lt;math&amp;gt;m = \left\{ 1,0,1,1 \right\}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour chiffrer un n-uplet binaire &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;, l&#039;idée de Merkle et Hellman est de &amp;quot;tordre&amp;quot; les &amp;lt;math&amp;gt;b_{i}&amp;lt;/math&amp;gt; pour obtenir un n-uplet qui n&#039;est plus super-croissant. On choisit un nombre &amp;lt;math&amp;gt;u &amp;gt; \sum_{i=1}^{n} {b_{i}}&amp;lt;/math&amp;gt;, un entier &amp;lt;math&amp;gt;v \in N&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd\left(u,v\right) = 1&amp;lt;/math&amp;gt;. Ce qui donne &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; inversible dans &amp;lt;math&amp;gt;Z/uZ&amp;lt;/math&amp;gt;. On prend &amp;lt;math&amp;gt;w = v^{-1} \in Z/uZ&amp;lt;/math&amp;gt;. On calcule ensuite le n-uplet &amp;lt;math&amp;gt;a = \left(a_1, ..., a_n\right)&amp;lt;/math&amp;gt; tel que pour tout &amp;lt;math&amp;gt;i \in [1,n]&amp;lt;/math&amp;gt; on a : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = a * b_i (mod u)&amp;lt;/math&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
Le n-uplet &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; détermine la clé public tandis que &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt; sont gardés secrets. &amp;lt;br/&amp;gt;&lt;br /&gt;
Pour envoyer le message m à Bob, Alice va, à partir de l&#039;écriture de m en binaire, calculer la somme : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;c = \sum_{i=1}^{n} {m_i * a_i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
qu&#039;elle va envoyer à Bob. Bob pour déchiffrer va devoir procéder à plusieurs étapes : &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt;c = \sum_{i=1}^{n} {m_i * a_i}&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * a_i * w} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * a_i * v^{-1}} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * v * b_i * v^{-1}} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * b_i} [u]&amp;lt;/math&amp;gt;                      =&amp;gt; Comme &amp;lt;math&amp;gt; \sum_{i=1}^{n} {m_i * b_i} &amp;lt; \sum_{i=1}^{n} {b_i}&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt; u &amp;gt; \sum_{i=1}^{n} {b_i}&amp;lt;/math&amp;gt; le modulo &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; peut s&#039;enlever&lt;br /&gt;
* &amp;lt;math&amp;gt;= \sum_{i=1}^{n} {m_i * b_i}&amp;lt;/math&amp;gt;                           =&amp;gt; Comme &amp;lt;math&amp;gt;b_i&amp;lt;/math&amp;gt; est super-croissant Bob peut facilement retrouver &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Nouveau chiffrement de Hamlin-Webb ====&lt;br /&gt;
&lt;br /&gt;
Le chiffrement de Merkle et Hellman a été abandonné à la suite des découvertes de Shamir qui a découvert une attaque permettant de retrouver le message secret en utilisant un algorithme de la réduction des réseaux. Nathan Hamlin et William Webb reprennent cet algorithme en le renforçant par un changement de représentation des entiers. Ils ont prouvé q&#039;un entier pouvait être représenté de manière unique avec des suites récurrentes. Le secret &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; n&#039;est alors plus modélisé en binaire mais en une suite récurrente plus complexe à craquer.&lt;br /&gt;
&lt;br /&gt;
===== Représentation du message =====&lt;br /&gt;
La représentation d&#039;un nombre &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; en une suite récurrente &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt; se fait en utilisant une suite augmentée &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; de &amp;lt;math&amp;gt;1 \le j \le 10&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;0 \le i \le n&amp;lt;/math&amp;gt; donné par : &amp;lt;br/&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{1,i}= u_i&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{2,i}= u_i + u_{i-2}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{3,i}= u_i + u_{i-2} + u_{i-3}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{4,i}= u_i + u_{i-2} + 2u_{i-3}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{5,i}= u_i + u_{i-2} +2u_{i-3} + u_{i-4}&amp;lt;/math&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{10,i}= u_i + u_{i-2} +2u_{i-3} + 6u_{i-4}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le suite &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; correspond au blocs de chiffre autorisés. Dans l&#039;exemple &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; se calcule dans des groupes de taille 10 mais ce nombre peut varier. La suite &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; se calcule en utilisant un algorithme glouton sur &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; où l&#039;on remplace la somme en une expression dans la suite &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
Le message secret &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; est représenté par : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; M = \sum_{i=0}^{n-1} {d_i * u_i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
avec &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt; calculé grâce à &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
où les &amp;lt;math&amp;gt;d_i&amp;lt;/math&amp;gt; sont des blocs de chiffre lexicographiquement inférieur à &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Chiffrement symétrique quantique ===&lt;br /&gt;
&lt;br /&gt;
==== Photons polarisés ====&lt;br /&gt;
&lt;br /&gt;
Les photons sont des particules qui composent la lumière. Ils sont composés d&#039;un champ électrique et d&#039;un champ magnétique. Une lumière non-polarisée se caractérise par une différence d&#039;orientation du champ électrique suivant les photons. Ainsi la polarisation consiste, grâce à un polarisateur, d&#039;obtenir des photons avec un champ électrique orienté de manière identique. Les filtres polarisants permettent d&#039;appliquer un angle d&#039;orientation sur les photons afin :&lt;br /&gt;
* de récupérer les photons polarisés parallèlement par rapport à cet angle&lt;br /&gt;
* d&#039;éliminer les photons polarisés perpendiculairement&lt;br /&gt;
* de récupérer les photons polarisés intermédiaires avec une probabilité de &amp;lt;math&amp;gt;\cos\left(\alpha\right)&amp;lt;/math&amp;gt; en les réinitialisant avec une polarisation égale à l&#039;angle d&#039;orientation du filtre.&lt;br /&gt;
&lt;br /&gt;
Du fait de la transformation de polarisation il est impossible de connaître l&#039;information sur les polarisations précédentes du photons.&lt;br /&gt;
&lt;br /&gt;
==== Distribution des clés ====&lt;br /&gt;
&lt;br /&gt;
Le chiffrement quantique offre un moyen sécurisé d’échanger des clés privées pour réaliser des chiffrements symétriques. Cette distribution s’appuie sur l’envoi de photons polarisés par fibre optique. Les personnes s&#039;échangeant les clés doivent avoir accès à un canal quantique et un canal classique. Le principe est le suivant :&lt;br /&gt;
* Alice envoie par le canal quantique une suite de photons polarisés aléatoirement.&lt;br /&gt;
* Bob applique un filtre de polarisation qui lui donne 1 chance sur 2 (et 1 chance sur 4 s&#039;il y a eu un espion) d&#039;appliquer le bon filtre et les renvoit à Alice.&lt;br /&gt;
* Alice et Bob s&#039;échangent par le canal classique leur choix des axes de polarisation éliminant ainsi les erreurs.&lt;br /&gt;
* Alice communique une partie de ses résultats.&lt;br /&gt;
* Maintenant que Bob connait les axes qu&#039;Alice a appliqué et les résultats il peut savoir si la communication a été écoutée ou non. Ceci étant grâce au théorème de non clonage où il est impossible de cloner des états quantiques inconnus.&lt;br /&gt;
&lt;br /&gt;
Ce principe permet de détecter facilement s&#039;il y a eu des intrusions durant la communication de la clé privée. En effet si un attaquant écoute il lui faut récupérer les photons envoyés par Alice mesurer la polarisation et renvoyer le photon à Bob. Pour mesurer la polarisation l&#039;attaquant doit appliquer, comme Bob, un filtre pour deviner la base qu&#039;Alice a envoyé. Ainsi cette intrusion a 1 chance sur 2 d&#039;introduire des incohérences dans les données d&#039;Alice et Bob en envoyant 1 fois sur 2 un mauvais photon. Par la suite Bob obtient donc 1 chance sur 4 d&#039;appliquer le bon filtre. Par analyses statistiques, Alice et Bob peuvent détecter de manière sure s&#039;il y a eu espionnage sur le canal quantique.&lt;br /&gt;
&lt;br /&gt;
==== Attaque de l&#039;homme du milieu ====&lt;br /&gt;
&lt;br /&gt;
Comme toute méthode d&#039;échange de clé privée, cette méthode reste vulnérable à une attaque de type &amp;quot;homme du milieu&amp;quot;. Il faut donc la combiner avec un mécanisme de certification afin de s&#039;assurer de l&#039;identité des protagonistes.&lt;br /&gt;
&lt;br /&gt;
== Ressources ==&lt;br /&gt;
&lt;br /&gt;
* Hamlin, N., &amp;amp; Webb, W. A. (2012). Representing Positive Integers as a Sum of Linear Recurrence Sequences, Fibonacci Quart. 50 (2012), no. 2, 99–105. Fibonacci Quart, 50(2), 99-105.&lt;br /&gt;
&lt;br /&gt;
* Moyer, N. T. (2010). A knapsack-type cryptographic system using algebraic number rings (Doctoral dissertation, Washington State University).&lt;/div&gt;</summary>
		<author><name>JulianaLeclaire</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8692</id>
		<title>Projets étudiants cryptographie et sécurité/Leclaire DeRoland Crypto Quantique</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8692"/>
		<updated>2016-03-18T12:17:45Z</updated>

		<summary type="html">&lt;p&gt;JulianaLeclaire : /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Auteurs : Juliana Leclaire, Céline de Roland ===&lt;br /&gt;
&lt;br /&gt;
== La cryptographie et la cryptanalyse dans le contexte de l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
L&#039;informatique quantique se base sur la superposition de plusieurs états quantiques pour améliorer les capacités de calculs. Ce domaine pose un vrai problème dans la sécurité de l&#039;internet qui utilise des algorithmes de chiffrement asymétriques pour les connexions SSL/TLS, paiements en ligne. Les nouveaux ordinateurs avec leur rapidité de calcul va pouvoir casser ces différents algorithmes de chiffrement asymétriques présents dans le Web.&lt;br /&gt;
&lt;br /&gt;
Il existe différents acteurs qui se penchent sur ce domaine. Notamment, la NSA, Google qui tentent de construire leur propre ordinateur quantique, des scientifiques qui se réunissent pour trouver des solutions.&lt;br /&gt;
Dans cette page, nous allons nous demander en quoi l&#039;informatique quantique peut changer le Web d&#039;aujourd&#039;hui et comment faire face à cette arrivée ?&lt;br /&gt;
&lt;br /&gt;
=== Fonctionnement de l&#039;informatique quantique ===&lt;br /&gt;
&lt;br /&gt;
==== Qubit ====&lt;br /&gt;
&lt;br /&gt;
C&#039;est la plus petite unité de stockage de l&#039;information. Etant donné deux états de base &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;, un qubit non mesuré se trouve dans l&#039;état &amp;lt;math&amp;gt;\alpha \left|0\right\rangle + \beta \left|1\right\rangle&amp;lt;/math&amp;gt;, avec &amp;lt;math&amp;gt;|\alpha|^2 + |\beta|^2 = 1&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Lorsqu&#039;on mesure la valeur du qubit, on obtient soit &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; soit &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;|\alpha|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et  &amp;lt;math&amp;gt;|\beta|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
    &lt;br /&gt;
==== Théorème de non clonage ====&lt;br /&gt;
&lt;br /&gt;
Ce théorème, découvert en 1982 par Wootters, Zurek, et Dieks, consiste à dire qu&#039;il est impossible de recopier un qubit à l&#039;identique. La démonstration (par l&#039;absurde) repose sur le fait que pouvoir mettre le qubit B dans le même état que le qubit A implique que le qubit B soit déjà dans le même état que le qubit A.&lt;br /&gt;
On en déduit qu&#039;il est impossible de faire une opération de type copier/coller en informatique quantique.&lt;br /&gt;
&lt;br /&gt;
==== Téléportation quantique ====&lt;br /&gt;
&lt;br /&gt;
La téléportation quantique consiste à transférer l&#039;état du qubit A dans le qubit B. Il s&#039;agit donc cette fois d&#039;une opération de couper/coller.&lt;br /&gt;
L&#039;intrication quantique se produit lorsque deux qubits sont dépendants l&#039;un de l&#039;autre même s&#039;ils sont éloignés l&#039;un de l&#039;autre. Dans cet état, si on mesure l&#039;un des deux, alors la mesure du deuxième est déterminée.&lt;br /&gt;
Sans entrer dans la théorie physique sous jacente, nous pouvons dire qu&#039;un canal EPR permet de réaliser cette opération de couper/coller en transmettant une information entre deux ordinateurs quantiques.&lt;br /&gt;
&lt;br /&gt;
== Chiffrement à clé publique face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
=== Mise en danger de la sécurité du Web ===&lt;br /&gt;
&lt;br /&gt;
Les ordinateurs quantiques présentent une rapidité de calculs extrèmement plus rapide que les ordinateurs à base de sillicium. Ces ordinateurs auraient aucune difficulté pour casser les codes de sécurité actuels reposant principalement sur un chiffrement à clé publique. Par définition le chiffrement à clé publique utilise une clé publique pour le chiffrement et une clé privée pour le décodage en se basant sur des grands nombres. Cependant ces grands nombres peuvent être vite retrouvés par des ordinateurs quantiques.&lt;br /&gt;
&lt;br /&gt;
=== Exemple de chiffrement asymétrique: RSA ===&lt;br /&gt;
&lt;br /&gt;
Ce chiffrement est couramment utilisé dans la sécurité du Web. &lt;br /&gt;
RSA repose sur la génération de grands nombres premiers, d&#039;un chiffrement avec une clé publique et d&#039;un déchiffrement avec une clé privée. &lt;br /&gt;
&lt;br /&gt;
* Initialisation : &lt;br /&gt;
** module &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; (grand nombre entier codé sur 2048 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;p, q&amp;lt;/math&amp;gt; : nombres premiers de même taille (codés sur 1024 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;\phi(N) = (p-1) * (q - 1)&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd(e, \phi(N)) = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
** Choisir &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;ed \equiv 1 [\phi(N)]&amp;lt;/math&amp;gt; et donc &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; est l&#039;inverse modulaire de &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; avec &amp;lt;math&amp;gt;d = e^-1 [\phi(N)]&amp;lt;/math&amp;gt;&lt;br /&gt;
** Clé publique : &amp;lt;math&amp;gt;pk(n, e)&amp;lt;/math&amp;gt;, Clé privée : &amp;lt;math&amp;gt;sk(d, p, q)&amp;lt;/math&amp;gt;&lt;br /&gt;
* Chiffrement : &amp;lt;math&amp;gt;c = m^e [N]&amp;lt;/math&amp;gt;&lt;br /&gt;
* Déchiffrement : &amp;lt;math&amp;gt;m = c^d [N]&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Exemple : &amp;lt;math&amp;gt;N=15&amp;lt;/math&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* Je choisis &amp;lt;math&amp;gt;x=7&amp;lt;/math&amp;gt;&lt;br /&gt;
* En calculant successivement les valeurs de &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; on trouve &amp;lt;math&amp;gt;7^{4} \equiv 1 [15]&amp;lt;/math&amp;gt;.&lt;br /&gt;
* &amp;lt;math&amp;gt;r=4&amp;lt;/math&amp;gt; est pair&lt;br /&gt;
* &amp;lt;math&amp;gt;pgcd(x^{\frac{r}{2}}+1,15) = 5&amp;lt;/math&amp;gt;. Donc &amp;lt;math&amp;gt;P = 5&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;Q = pgcd(x^{\frac{r}{2}}-1,15) = 3&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La sécurité de RSA repose sur la difficulté à factoriser des grands nombres en nombres premiers. En effet avec &amp;lt;math&amp;gt;(N, e)&amp;lt;/math&amp;gt; il faudrait pouvoir retrouver &amp;lt;math&amp;gt;(d, p, q)&amp;lt;/math&amp;gt; où &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt; correspondant à un cassage total. D&#039;après le théorème de factorisation unique tout entier &amp;lt;math&amp;gt;n \ge 2&amp;lt;/math&amp;gt; admet une factorisation unique en produit de puissances de nombres entiers. Des algorithmes de factorisation ont été trouvés pour différentes tailles de module $N$ mais pour pallier à ces attaques on augmente la longueur du module. De nos jours pour sécuriser le chiffrement il faut utiliser des modules strictement supérieur à 2048 bits. Cependant avec l&#039;informatique quantique il ne suffira plus d&#039;augmenter la taille du module car la puissance de calcul permettra de casser le chiffrement, peu importe la taille du module.&lt;br /&gt;
&lt;br /&gt;
== Chiffrement à clé privée face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
=== Mise en danger de la sécurité ===&lt;br /&gt;
&lt;br /&gt;
Si les ordinateurs quantiques présentent une rapidité de calcul permettant d&#039;effectuer des factorisations impossibles pour un ordinateur classique, il nous semble logique qu&#039;ils soient également performants pour effectuer des attaques de type force brute sur des messages chiffrés par une clé privée qui aurait été transmise par un moyen plus sûr que RSA.&lt;br /&gt;
 &lt;br /&gt;
Un ordinateur quantique pourrait réaliser le déchiffrement avec toutes les clés possibles en parallèle. Ce qui permettrait de cryptanalyser le message en une seule opération. Le principe se base sur la superposition quantique. On superposerait toutes les clés possibles et on déchiffrerait. On obtiendrait alors une superposition de résultats. Le point le plus difficile est de trouver le résultat correct à partir de la superposition obtenue. En effet, le principe selon lequel mesurer une valeur modifie cette valeur fait qu&#039;en observant une superposition, on obtient un seul état aléatoire. Une solution à ce problème a été trouvé par Lov Grover en $O(\sqrt{n})$ étapes.&lt;br /&gt;
&lt;br /&gt;
== Résistances aux attaques quantiques ==&lt;br /&gt;
&lt;br /&gt;
=== Chiffrement asyémétrique ===&lt;br /&gt;
&lt;br /&gt;
Depuis 2006, une conférence internationnale se produit chaque année nommée &amp;quot;Post Quantum Cryptography&amp;quot; dans l&#039;intention de trouver des algorithmes résistants aux ordinateurs quantiques. Nathan Hamlin et William Webb, des mathématiciens, ont présenté récemment un algorithme de chiffrement asymétrique possiblement capable de faire face aux attaques quantiques. Cet algorithme part de l&#039;ancien chiffrement de Merkle-Hellman qui se base sur le problème du sac à dos nommé &amp;quot;Knapsack code&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
==== Problème du sac-à-dos ====&lt;br /&gt;
&lt;br /&gt;
Etant donné un sac avec une capacité &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; et plusieurs objets de poids différents. Le problème du sac-à-dos consiste à trouver la suite d&#039;objets qui entre dans le sac et qui maximise sa capacité. En partant d&#039;un n-uplet &amp;lt;math&amp;gt;\left(a_1, a_2, ..., a_n\right) \in N^n&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;S \in N&amp;lt;/math&amp;gt;, il faut trouver un n-uplet binaire &amp;lt;math&amp;gt;\left(x_1, x_2, ..., x_n\right) \in {0,1}^n&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;S = \sum_{i=1}^{n} \left(a_{i}*x_{i}\right) &amp;lt;/math&amp;gt;. La somme &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; des poids des objets choisi ne doit pas dépasser la capacité du sac à dos. Pour résoudre ce problème il n&#039;existe pas d&#039;algorithme avec une compléxité polynomial.&lt;br /&gt;
&lt;br /&gt;
==== Chiffrement de Merkle-Hellman ====&lt;br /&gt;
&lt;br /&gt;
Cet algorithme de chiffrement à clé publique repose sur la complexité algorithmique du problème de sac-à-dos et utilise des suites de poids super-croissante pour le secret et non super-croissante pour la clé publique. Si les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt; n&#039;ont pas de propriétés particulières, la recherche du message codé en binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt; est un problème difficile. Il n&#039;existe pas d&#039;algorithme polynomial pour le résoudre. Pour pouvoir retrouver facilement ce n-uplet une propriété super-croissante est utilisé sur les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt;. Un n-uplet b est super-croissant si &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\forall i \in [2,n] b_{i} &amp;gt; \sum_{j=1}^{i-1} {b_{j}}&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ainsi en utilisant un algorithme glouton nous pouvons retrouver le n-uplet binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt;. L&#039;objet le plus lourd est dans le sac si le poids du sac est supérieur au poids de celui-ci. La propriété super-croissante assure que la somme des poids des autres objets sera toujours inférieur au poids de l&#039;objet le plus lourd. L&#039;algorithme est le suivant :&lt;br /&gt;
&lt;br /&gt;
  Pour i de n à 1 faire&lt;br /&gt;
    Si &amp;lt;math&amp;gt;b_{i} \le S&amp;lt;/math&amp;gt; alors&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i}  = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
    Sinon&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i} = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
    &amp;lt;math&amp;gt;S = S - x_{i} * b_{i}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Par exemple en prenant la suite des puissances de 2 comme suite super-croissante  avec : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = \left\{ 1,4,8 \right\}, b = \left\{ 1,2,4,8 \right\}, S = 13 \left(1+4+8\right), n = 4&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 4 : 8 \le 13 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_4 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 3 : 4 \le 5 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_3 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 2 : 2 \le 1 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    non donc &amp;lt;math&amp;gt;x_2 = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 1 : 1 \le 1 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_1 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  =&amp;gt; &amp;lt;math&amp;gt;m = \left\{ 1,0,1,1 \right\}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour chiffrer un n-uplet binaire &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;, l&#039;idée de Merkle et Hellman est de &amp;quot;tordre&amp;quot; les &amp;lt;math&amp;gt;b_{i}&amp;lt;/math&amp;gt; pour obtenir un n-uplet qui n&#039;est plus super-croissant. On choisit un nombre &amp;lt;math&amp;gt;u &amp;gt; \sum_{i=1}^{n} {b_{i}}&amp;lt;/math&amp;gt;, un entier &amp;lt;math&amp;gt;v \in N&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd\left(u,v\right) = 1&amp;lt;/math&amp;gt;. Ce qui donne &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; inversible dans &amp;lt;math&amp;gt;Z/uZ&amp;lt;/math&amp;gt;. On prend &amp;lt;math&amp;gt;w = v^{-1} \in Z/uZ&amp;lt;/math&amp;gt;. On calcule ensuite le n-uplet &amp;lt;math&amp;gt;a = \left(a_1, ..., a_n\right)&amp;lt;/math&amp;gt; tel que pour tout &amp;lt;math&amp;gt;i \in [1,n]&amp;lt;/math&amp;gt; on a : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = a * b_i (mod u)&amp;lt;/math&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
Le n-uplet &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; détermine la clé public tandis que &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt; sont gardés secrets. &amp;lt;br/&amp;gt;&lt;br /&gt;
Pour envoyer le message m à Bob, Alice va, à partir de l&#039;écriture de m en binaire, calculer la somme : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;c = \sum_{i=1}^{n} {m_i * a_i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
qu&#039;elle va envoyer à Bob. Bob pour déchiffrer va devoir procéder à plusieurs étapes : &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt;c = \sum_{i=1}^{n} {m_i * a_i}&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * a_i * w} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * a_i * v^{-1}} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * v * b_i * v^{-1}} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * b_i} [u]&amp;lt;/math&amp;gt;                      =&amp;gt; Comme &amp;lt;math&amp;gt; \sum_{i=1}^{n} {m_i * b_i} &amp;lt; \sum_{i=1}^{n} {b_i}&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt; u &amp;gt; \sum_{i=1}^{n} {b_i}&amp;lt;/math&amp;gt; le modulo &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; peut s&#039;enlever&lt;br /&gt;
* &amp;lt;math&amp;gt;= \sum_{i=1}^{n} {m_i * b_i}&amp;lt;/math&amp;gt;                           =&amp;gt; Comme &amp;lt;math&amp;gt;b_i&amp;lt;/math&amp;gt; est super-croissant Bob peut facilement retrouver &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Nouveau chiffrement de Hamlin-Webb ====&lt;br /&gt;
&lt;br /&gt;
Le chiffrement de Merkle et Hellman a été abandonné à la suite des découvertes de Shamir qui a découvert une attaque permettant de retrouver le message secret en utilisant un algorithme de la réduction des réseaux. Nathan Hamlin et William Webb reprennent cet algorithme en le renforçant par un changement de représentation des entiers. Ils ont prouvé q&#039;un entier pouvait être représenté de manière unique avec des suites récurrentes. Le secret &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; n&#039;est alors plus modélisé en binaire mais en une suite récurrente plus complexe à craquer.&lt;br /&gt;
&lt;br /&gt;
===== Représentation du message =====&lt;br /&gt;
La représentation d&#039;un nombre &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; en une suite récurrente &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt; se fait en utilisant une suite augmentée &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; de &amp;lt;math&amp;gt;1 \le j \le 10&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;0 \le i \le n&amp;lt;/math&amp;gt; donné par : &amp;lt;br/&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{1,i}= u_i&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{2,i}= u_i + u_{i-2}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{3,i}= u_i + u_{i-2} + u_{i-3}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{4,i}= u_i + u_{i-2} + 2u_{i-3}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{5,i}= u_i + u_{i-2} +2u_{i-3} + u_{i-4}&amp;lt;/math&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{10,i}= u_i + u_{i-2} +2u_{i-3} + 6u_{i-4}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le suite &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; correspond au blocs de chiffre autorisés. Dans l&#039;exemple &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; se calcule dans des groupes de taille 10 mais ce nombre peut varier. La suite &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; se calcule en utilisant un algorithme glouton sur &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; où l&#039;on remplace la somme en une expression dans la suite &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
Le message secret &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; est représenté par : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; M = \sum_{i=0}^{n-1} {d_i * u_i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
avec &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt; calculé grâce à &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
où les &amp;lt;math&amp;gt;d_i&amp;lt;/math&amp;gt; sont des blocs de chiffre lexicographiquement inférieur à &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Chiffrement symétrique quantique ===&lt;br /&gt;
&lt;br /&gt;
==== Photons polarisés ====&lt;br /&gt;
&lt;br /&gt;
Les photons sont des particules qui composent la lumière. Ils sont composés d&#039;un champ électrique et d&#039;un champ magnétique. Une lumière non-polarisée se caractérise par une différence d&#039;orientation du champ électrique suivant les photons. Ainsi la polarisation consiste, grâce à un polarisateur, d&#039;obtenir des photons avec un champ électrique orienté de manière identique. Les filtres polarisants permettent d&#039;appliquer un angle d&#039;orientation sur les photons afin :&lt;br /&gt;
* de récupérer les photons polarisés parallèlement par rapport à cet angle&lt;br /&gt;
* d&#039;éliminer les photons polarisés perpendiculairement&lt;br /&gt;
* de récupérer les photons polarisés intermédiaires avec une probabilité de &amp;lt;math&amp;gt;\cos\left(\alpha\right)&amp;lt;/math&amp;gt; en les réinitialisant avec une polarisation égale à l&#039;angle d&#039;orientation du filtre.&lt;br /&gt;
&lt;br /&gt;
Du fait de la transformation de polarisation il est impossible de connaître l&#039;information sur les polarisations précédentes du photons.&lt;br /&gt;
&lt;br /&gt;
==== Distribution des clés ====&lt;br /&gt;
&lt;br /&gt;
Le chiffrement quantique offre un moyen sécurisé d’échanger des clés privées pour réaliser des chiffrements symétriques. Cette distribution s’appuie sur l’envoi de photons polarisés par fibre optique. Les personnes s&#039;échangeant les clés doivent avoir accès à un canal quantique et un canal classique. Le principe est le suivant :&lt;br /&gt;
* Alice envoie par le canal quantique une suite de photons polarisés aléatoirement.&lt;br /&gt;
* Bob applique un filtre de polarisation qui lui donne 1 chance sur 2 (et 1 chance sur 4 s&#039;il y a eu un espion) d&#039;appliquer le bon filtre et les renvoit à Alice.&lt;br /&gt;
* Alice et Bob s&#039;échangent par le canal classique leur choix des axes de polarisation éliminant ainsi les erreurs.&lt;br /&gt;
* Alice communique une partie de ses résultats.&lt;br /&gt;
* Maintenant que Bob connait les axes qu&#039;Alice a appliqué et les résultats il peut savoir si la communication a été écoutée ou non. Ceci étant grâce au théorème de non clonage où il est impossible de cloner des états quantiques inconnus.&lt;br /&gt;
&lt;br /&gt;
Ce principe permet de détecter facilement s&#039;il y a eu des intrusions durant la communication de la clé privée. En effet si un attaquant écoute il lui faut récupérer les photons envoyés par Alice mesurer la polarisation et renvoyer le photon à Bob. Pour mesurer la polarisation l&#039;attaquant doit appliquer, comme Bob, un filtre pour deviner la base qu&#039;Alice a envoyé. Ainsi cette intrusion a 1 chance sur 2 d&#039;introduire des incohérences dans les données d&#039;Alice et Bob en envoyant 1 fois sur 2 un mauvais photon. Par la suite Bob obtient donc 1 chance sur 4 d&#039;appliquer le bon filtre. Par analyses statistiques, Alice et Bob peuvent détecter de manière sure s&#039;il y a eu espionnage sur le canal quantique.&lt;br /&gt;
&lt;br /&gt;
==== Attaque de l&#039;homme du milieu ====&lt;br /&gt;
&lt;br /&gt;
Comme toute méthode d&#039;échange de clé privée, cette méthode reste vulnérable à une attaque de type &amp;quot;homme du milieu&amp;quot;. Il faut donc la combiner avec un mécanisme de certification afin de s&#039;assurer de l&#039;identité des protagonistes.&lt;br /&gt;
&lt;br /&gt;
== Ressources ==&lt;br /&gt;
&lt;br /&gt;
* Hamlin, N., &amp;amp; Webb, W. A. (2012). Representing Positive Integers as a Sum of Linear Recurrence Sequences, Fibonacci Quart. 50 (2012), no. 2, 99–105. Fibonacci Quart, 50(2), 99-105.&lt;br /&gt;
&lt;br /&gt;
* Moyer, N. T. (2010). A knapsack-type cryptographic system using algebraic number rings (Doctoral dissertation, Washington State University).&lt;/div&gt;</summary>
		<author><name>JulianaLeclaire</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8691</id>
		<title>Projets étudiants cryptographie et sécurité/Leclaire DeRoland Crypto Quantique</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8691"/>
		<updated>2016-03-18T12:16:01Z</updated>

		<summary type="html">&lt;p&gt;JulianaLeclaire : /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Auteurs : Juliana Leclaire, Céline de Roland ===&lt;br /&gt;
&lt;br /&gt;
== La cryptographie et la cryptanalyse dans le contexte de l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
L&#039;informatique quantique se base sur la superposition de plusieurs états quantiques pour améliorer les capacités de calculs. Ce domaine pose un vrai problème dans la sécurité de l&#039;internet qui utilise des algorithmes de chiffrement asymétriques pour les connexions SSL/TLS, paiements en ligne. Les nouveaux ordinateurs avec leur rapidité de calcul va pouvoir casser ces différents algorithmes de chiffrement asymétriques qui sont présents dans le Web.&lt;br /&gt;
&lt;br /&gt;
Il existe différents acteurs qui se penchent sur ce domaine. Notamment, la NSA, Google qui tentent de construire leur propre ordinateur quantique, des scientifiques qui se réunissent pour trouver des solutions.&lt;br /&gt;
Dans cette page, nous allons nous demander en quoi l&#039;informatique quantique peut changer le Web d&#039;aujourd&#039;hui et comment faire face à cette arrivée ?&lt;br /&gt;
&lt;br /&gt;
=== Fonctionnement de l&#039;informatique quantique ===&lt;br /&gt;
&lt;br /&gt;
==== Qubit ====&lt;br /&gt;
&lt;br /&gt;
C&#039;est la plus petite unité de stockage de l&#039;information. Etant donné deux états de base &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;, un qubit non mesuré se trouve dans l&#039;état &amp;lt;math&amp;gt;\alpha \left|0\right\rangle + \beta \left|1\right\rangle&amp;lt;/math&amp;gt;, avec &amp;lt;math&amp;gt;|\alpha|^2 + |\beta|^2 = 1&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Lorsqu&#039;on mesure la valeur du qubit, on obtient soit &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; soit &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;|\alpha|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et  &amp;lt;math&amp;gt;|\beta|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
    &lt;br /&gt;
==== Théorème de non clonage ====&lt;br /&gt;
&lt;br /&gt;
Ce théorème, découvert en 1982 par Wootters, Zurek, et Dieks, consiste à dire qu&#039;il est impossible de recopier un qubit à l&#039;identique. La démonstration (par l&#039;absurde) repose sur le fait que pouvoir mettre le qubit B dans le même état que le qubit A implique que le qubit B soit déjà dans le même état que le qubit A.&lt;br /&gt;
On en déduit qu&#039;il est impossible de faire une opération de type copier/coller en informatique quantique.&lt;br /&gt;
&lt;br /&gt;
==== Téléportation quantique ====&lt;br /&gt;
&lt;br /&gt;
La téléportation quantique consiste à transférer l&#039;état du qubit A dans le qubit B. Il s&#039;agit donc cette fois d&#039;une opération de couper/coller.&lt;br /&gt;
L&#039;intrication quantique se produit lorsque deux qubits sont dépendants l&#039;un de l&#039;autre même s&#039;ils sont éloignés l&#039;un de l&#039;autre. Dans cet état, si on mesure l&#039;un des deux, alors la mesure du deuxième est déterminée.&lt;br /&gt;
Sans entrer dans la théorie physique sous jacente, nous pouvons dire qu&#039;un canal EPR permet de réaliser cette opération de couper/coller en transmettant une information entre deux ordinateurs quantiques.&lt;br /&gt;
&lt;br /&gt;
== Chiffrement à clé publique face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
=== Mise en danger de la sécurité du Web ===&lt;br /&gt;
&lt;br /&gt;
Les ordinateurs quantiques présentent une rapidité de calculs extrèmement plus rapide que les ordinateurs à base de sillicium. Ces ordinateurs auraient aucune difficulté pour casser les codes de sécurité actuels reposant principalement sur un chiffrement à clé publique. Par définition le chiffrement à clé publique utilise une clé publique pour le chiffrement et une clé privée pour le décodage en se basant sur des grands nombres. Cependant ces grands nombres peuvent être vite retrouvés par des ordinateurs quantiques.&lt;br /&gt;
&lt;br /&gt;
=== Exemple de chiffrement asymétrique: RSA ===&lt;br /&gt;
&lt;br /&gt;
Ce chiffrement est couramment utilisé dans la sécurité du Web. &lt;br /&gt;
RSA repose sur la génération de grands nombres premiers, d&#039;un chiffrement avec une clé publique et d&#039;un déchiffrement avec une clé privée. &lt;br /&gt;
&lt;br /&gt;
* Initialisation : &lt;br /&gt;
** module &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; (grand nombre entier codé sur 2048 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;p, q&amp;lt;/math&amp;gt; : nombres premiers de même taille (codés sur 1024 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;\phi(N) = (p-1) * (q - 1)&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd(e, \phi(N)) = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
** Choisir &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;ed \equiv 1 [\phi(N)]&amp;lt;/math&amp;gt; et donc &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; est l&#039;inverse modulaire de &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; avec &amp;lt;math&amp;gt;d = e^-1 [\phi(N)]&amp;lt;/math&amp;gt;&lt;br /&gt;
** Clé publique : &amp;lt;math&amp;gt;pk(n, e)&amp;lt;/math&amp;gt;, Clé privée : &amp;lt;math&amp;gt;sk(d, p, q)&amp;lt;/math&amp;gt;&lt;br /&gt;
* Chiffrement : &amp;lt;math&amp;gt;c = m^e [N]&amp;lt;/math&amp;gt;&lt;br /&gt;
* Déchiffrement : &amp;lt;math&amp;gt;m = c^d [N]&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Exemple : &amp;lt;math&amp;gt;N=15&amp;lt;/math&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* Je choisis &amp;lt;math&amp;gt;x=7&amp;lt;/math&amp;gt;&lt;br /&gt;
* En calculant successivement les valeurs de &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; on trouve &amp;lt;math&amp;gt;7^{4} \equiv 1 [15]&amp;lt;/math&amp;gt;.&lt;br /&gt;
* &amp;lt;math&amp;gt;r=4&amp;lt;/math&amp;gt; est pair&lt;br /&gt;
* &amp;lt;math&amp;gt;pgcd(x^{\frac{r}{2}}+1,15) = 5&amp;lt;/math&amp;gt;. Donc &amp;lt;math&amp;gt;P = 5&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;Q = pgcd(x^{\frac{r}{2}}-1,15) = 3&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La sécurité de RSA repose sur la difficulté à factoriser des grands nombres en nombres premiers. En effet avec &amp;lt;math&amp;gt;(N, e)&amp;lt;/math&amp;gt; il faudrait pouvoir retrouver &amp;lt;math&amp;gt;(d, p, q)&amp;lt;/math&amp;gt; où &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt; correspondant à un cassage total. D&#039;après le théorème de factorisation unique tout entier &amp;lt;math&amp;gt;n \ge 2&amp;lt;/math&amp;gt; admet une factorisation unique en produit de puissances de nombres entiers. Des algorithmes de factorisation ont été trouvés pour différentes tailles de module $N$ mais pour pallier à ces attaques on augmente la longueur du module. De nos jours pour sécuriser le chiffrement il faut utiliser des modules strictement supérieur à 2048 bits. Cependant avec l&#039;informatique quantique il ne suffira plus d&#039;augmenter la taille du module car la puissance de calcul permettra de casser le chiffrement, peu importe la taille du module.&lt;br /&gt;
&lt;br /&gt;
== Chiffrement à clé privée face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
=== Mise en danger de la sécurité ===&lt;br /&gt;
&lt;br /&gt;
Si les ordinateurs quantiques présentent une rapidité de calcul permettant d&#039;effectuer des factorisations impossibles pour un ordinateur classique, il nous semble logique qu&#039;ils soient également performants pour effectuer des attaques de type force brute sur des messages chiffrés par une clé privée qui aurait été transmise par un moyen plus sûr que RSA.&lt;br /&gt;
 &lt;br /&gt;
Un ordinateur quantique pourrait réaliser le déchiffrement avec toutes les clés possibles en parallèle. Ce qui permettrait de cryptanalyser le message en une seule opération. Le principe se base sur la superposition quantique. On superposerait toutes les clés possibles et on déchiffrerait. On obtiendrait alors une superposition de résultats. Le point le plus difficile est de trouver le résultat correct à partir de la superposition obtenue. En effet, le principe selon lequel mesurer une valeur modifie cette valeur fait qu&#039;en observant une superposition, on obtient un seul état aléatoire. Une solution à ce problème a été trouvé par Lov Grover en $O(\sqrt{n})$ étapes.&lt;br /&gt;
&lt;br /&gt;
== Résistances aux attaques quantiques ==&lt;br /&gt;
&lt;br /&gt;
=== Chiffrement asyémétrique ===&lt;br /&gt;
&lt;br /&gt;
Depuis 2006, une conférence internationnale se produit chaque année nommée &amp;quot;Post Quantum Cryptography&amp;quot; dans l&#039;intention de trouver des algorithmes résistants aux ordinateurs quantiques. Nathan Hamlin et William Webb, des mathématiciens, ont présenté récemment un algorithme de chiffrement asymétrique possiblement capable de faire face aux attaques quantiques. Cet algorithme part de l&#039;ancien chiffrement de Merkle-Hellman qui se base sur le problème du sac à dos nommé &amp;quot;Knapsack code&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
==== Problème du sac-à-dos ====&lt;br /&gt;
&lt;br /&gt;
Etant donné un sac avec une capacité &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; et plusieurs objets de poids différents. Le problème du sac-à-dos consiste à trouver la suite d&#039;objets qui entre dans le sac et qui maximise sa capacité. En partant d&#039;un n-uplet &amp;lt;math&amp;gt;\left(a_1, a_2, ..., a_n\right) \in N^n&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;S \in N&amp;lt;/math&amp;gt;, il faut trouver un n-uplet binaire &amp;lt;math&amp;gt;\left(x_1, x_2, ..., x_n\right) \in {0,1}^n&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;S = \sum_{i=1}^{n} \left(a_{i}*x_{i}\right) &amp;lt;/math&amp;gt;. La somme &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; des poids des objets choisi ne doit pas dépasser la capacité du sac à dos. Pour résoudre ce problème il n&#039;existe pas d&#039;algorithme avec une compléxité polynomial.&lt;br /&gt;
&lt;br /&gt;
==== Chiffrement de Merkle-Hellman ====&lt;br /&gt;
&lt;br /&gt;
Cet algorithme de chiffrement à clé publique repose sur la complexité algorithmique du problème de sac-à-dos et utilise des suites de poids super-croissante pour le secret et non super-croissante pour la clé publique. Si les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt; n&#039;ont pas de propriétés particulières, la recherche du message codé en binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt; est un problème difficile. Il n&#039;existe pas d&#039;algorithme polynomial pour le résoudre. Pour pouvoir retrouver facilement ce n-uplet une propriété super-croissante est utilisé sur les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt;. Un n-uplet b est super-croissant si &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\forall i \in [2,n] b_{i} &amp;gt; \sum_{j=1}^{i-1} {b_{j}}&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ainsi en utilisant un algorithme glouton nous pouvons retrouver le n-uplet binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt;. L&#039;objet le plus lourd est dans le sac si le poids du sac est supérieur au poids de celui-ci. La propriété super-croissante assure que la somme des poids des autres objets sera toujours inférieur au poids de l&#039;objet le plus lourd. L&#039;algorithme est le suivant :&lt;br /&gt;
&lt;br /&gt;
  Pour i de n à 1 faire&lt;br /&gt;
    Si &amp;lt;math&amp;gt;b_{i} \le S&amp;lt;/math&amp;gt; alors&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i}  = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
    Sinon&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i} = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
    &amp;lt;math&amp;gt;S = S - x_{i} * b_{i}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Par exemple en prenant la suite des puissances de 2 comme suite super-croissante  avec : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = \left\{ 1,4,8 \right\}, b = \left\{ 1,2,4,8 \right\}, S = 13 \left(1+4+8\right), n = 4&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 4 : 8 \le 13 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_4 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 3 : 4 \le 5 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_3 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 2 : 2 \le 1 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    non donc &amp;lt;math&amp;gt;x_2 = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 1 : 1 \le 1 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_1 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  =&amp;gt; &amp;lt;math&amp;gt;m = \left\{ 1,0,1,1 \right\}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour chiffrer un n-uplet binaire &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;, l&#039;idée de Merkle et Hellman est de &amp;quot;tordre&amp;quot; les &amp;lt;math&amp;gt;b_{i}&amp;lt;/math&amp;gt; pour obtenir un n-uplet qui n&#039;est plus super-croissant. On choisit un nombre &amp;lt;math&amp;gt;u &amp;gt; \sum_{i=1}^{n} {b_{i}}&amp;lt;/math&amp;gt;, un entier &amp;lt;math&amp;gt;v \in N&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd\left(u,v\right) = 1&amp;lt;/math&amp;gt;. Ce qui donne &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; inversible dans &amp;lt;math&amp;gt;Z/uZ&amp;lt;/math&amp;gt;. On prend &amp;lt;math&amp;gt;w = v^{-1} \in Z/uZ&amp;lt;/math&amp;gt;. On calcule ensuite le n-uplet &amp;lt;math&amp;gt;a = \left(a_1, ..., a_n\right)&amp;lt;/math&amp;gt; tel que pour tout &amp;lt;math&amp;gt;i \in [1,n]&amp;lt;/math&amp;gt; on a : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = a * b_i (mod u)&amp;lt;/math&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
Le n-uplet &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; détermine la clé public tandis que &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt; sont gardés secrets. &amp;lt;br/&amp;gt;&lt;br /&gt;
Pour envoyer le message m à Bob, Alice va, à partir de l&#039;écriture de m en binaire, calculer la somme : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;c = \sum_{i=1}^{n} {m_i * a_i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
qu&#039;elle va envoyer à Bob. Bob pour déchiffrer va devoir procéder à plusieurs étapes : &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt;c = \sum_{i=1}^{n} {m_i * a_i}&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * a_i * w} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * a_i * v^{-1}} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * v * b_i * v^{-1}} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * b_i} [u]&amp;lt;/math&amp;gt;                      =&amp;gt; Comme &amp;lt;math&amp;gt; \sum_{i=1}^{n} {m_i * b_i} &amp;lt; \sum_{i=1}^{n} {b_i}&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt; u &amp;gt; \sum_{i=1}^{n} {b_i}&amp;lt;/math&amp;gt; le modulo &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; peut s&#039;enlever&lt;br /&gt;
* &amp;lt;math&amp;gt;= \sum_{i=1}^{n} {m_i * b_i}&amp;lt;/math&amp;gt;                           =&amp;gt; Comme &amp;lt;math&amp;gt;b_i&amp;lt;/math&amp;gt; est super-croissant Bob peut facilement retrouver &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Nouveau chiffrement de Hamlin-Webb ====&lt;br /&gt;
&lt;br /&gt;
Le chiffrement de Merkle et Hellman a été abandonné à la suite des découvertes de Shamir qui a découvert une attaque permettant de retrouver le message secret en utilisant un algorithme de la réduction des réseaux. Nathan Hamlin et William Webb reprennent cet algorithme en le renforçant par un changement de représentation des entiers. Ils ont prouvé q&#039;un entier pouvait être représenté de manière unique avec des suites récurrentes. Le secret &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; n&#039;est alors plus modélisé en binaire mais en une suite récurrente plus complexe à craquer.&lt;br /&gt;
&lt;br /&gt;
===== Représentation du message =====&lt;br /&gt;
La représentation d&#039;un nombre &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; en une suite récurrente &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt; se fait en utilisant une suite augmentée &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; de &amp;lt;math&amp;gt;1 \le j \le 10&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;0 \le i \le n&amp;lt;/math&amp;gt; donné par : &amp;lt;br/&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{1,i}= u_i&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{2,i}= u_i + u_{i-2}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{3,i}= u_i + u_{i-2} + u_{i-3}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{4,i}= u_i + u_{i-2} + 2u_{i-3}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{5,i}= u_i + u_{i-2} +2u_{i-3} + u_{i-4}&amp;lt;/math&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{10,i}= u_i + u_{i-2} +2u_{i-3} + 6u_{i-4}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le suite &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; correspond au blocs de chiffre autorisés. Dans l&#039;exemple &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; se calcule dans des groupes de taille 10 mais ce nombre peut varier. La suite &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; se calcule en utilisant un algorithme glouton sur &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; où l&#039;on remplace la somme en une expression dans la suite &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
Le message secret &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; est représenté par : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; M = \sum_{i=0}^{n-1} {d_i * u_i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
avec &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt; calculé grâce à &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
où les &amp;lt;math&amp;gt;d_i&amp;lt;/math&amp;gt; sont des blocs de chiffre lexicographiquement inférieur à &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Chiffrement symétrique quantique ===&lt;br /&gt;
&lt;br /&gt;
==== Photons polarisés ====&lt;br /&gt;
&lt;br /&gt;
Les photons sont des particules qui composent la lumière. Ils sont composés d&#039;un champ électrique et d&#039;un champ magnétique. Une lumière non-polarisée se caractérise par une différence d&#039;orientation du champ électrique suivant les photons. Ainsi la polarisation consiste, grâce à un polarisateur, d&#039;obtenir des photons avec un champ électrique orienté de manière identique. Les filtres polarisants permettent d&#039;appliquer un angle d&#039;orientation sur les photons afin :&lt;br /&gt;
* de récupérer les photons polarisés parallèlement par rapport à cet angle&lt;br /&gt;
* d&#039;éliminer les photons polarisés perpendiculairement&lt;br /&gt;
* de récupérer les photons polarisés intermédiaires avec une probabilité de &amp;lt;math&amp;gt;\cos\left(\alpha\right)&amp;lt;/math&amp;gt; en les réinitialisant avec une polarisation égale à l&#039;angle d&#039;orientation du filtre.&lt;br /&gt;
&lt;br /&gt;
Du fait de la transformation de polarisation il est impossible de connaître l&#039;information sur les polarisations précédentes du photons.&lt;br /&gt;
&lt;br /&gt;
==== Distribution des clés ====&lt;br /&gt;
&lt;br /&gt;
Le chiffrement quantique offre un moyen sécurisé d’échanger des clés privées pour réaliser des chiffrements symétriques. Cette distribution s’appuie sur l’envoi de photons polarisés par fibre optique. Les personnes s&#039;échangeant les clés doivent avoir accès à un canal quantique et un canal classique. Le principe est le suivant :&lt;br /&gt;
* Alice envoie par le canal quantique une suite de photons polarisés aléatoirement.&lt;br /&gt;
* Bob applique un filtre de polarisation qui lui donne 1 chance sur 2 (et 1 chance sur 4 s&#039;il y a eu un espion) d&#039;appliquer le bon filtre et les renvoit à Alice.&lt;br /&gt;
* Alice et Bob s&#039;échangent par le canal classique leur choix des axes de polarisation éliminant ainsi les erreurs.&lt;br /&gt;
* Alice communique une partie de ses résultats.&lt;br /&gt;
* Maintenant que Bob connait les axes qu&#039;Alice a appliqué et les résultats il peut savoir si la communication a été écoutée ou non. Ceci étant grâce au théorème de non clonage où il est impossible de cloner des états quantiques inconnus.&lt;br /&gt;
&lt;br /&gt;
Ce principe permet de détecter facilement s&#039;il y a eu des intrusions durant la communication de la clé privée. En effet si un attaquant écoute il lui faut récupérer les photons envoyés par Alice mesurer la polarisation et renvoyer le photon à Bob. Pour mesurer la polarisation l&#039;attaquant doit appliquer, comme Bob, un filtre pour deviner la base qu&#039;Alice a envoyé. Ainsi cette intrusion a 1 chance sur 2 d&#039;introduire des incohérences dans les données d&#039;Alice et Bob en envoyant 1 fois sur 2 un mauvais photon. Par la suite Bob obtient donc 1 chance sur 4 d&#039;appliquer le bon filtre. Par analyses statistiques, Alice et Bob peuvent détecter de manière sure s&#039;il y a eu espionnage sur le canal quantique.&lt;br /&gt;
&lt;br /&gt;
==== Attaque de l&#039;homme du milieu ====&lt;br /&gt;
&lt;br /&gt;
Comme toute méthode d&#039;échange de clé privée, cette méthode reste vulnérable à une attaque de type &amp;quot;homme du milieu&amp;quot;. Il faut donc la combiner avec un mécanisme de certification afin de s&#039;assurer de l&#039;identité des protagonistes.&lt;br /&gt;
&lt;br /&gt;
== Ressources ==&lt;br /&gt;
&lt;br /&gt;
* Hamlin, N., &amp;amp; Webb, W. A. (2012). Representing Positive Integers as a Sum of Linear Recurrence Sequences, Fibonacci Quart. 50 (2012), no. 2, 99–105. Fibonacci Quart, 50(2), 99-105.&lt;br /&gt;
&lt;br /&gt;
* Moyer, N. T. (2010). A knapsack-type cryptographic system using algebraic number rings (Doctoral dissertation, Washington State University).&lt;/div&gt;</summary>
		<author><name>JulianaLeclaire</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8690</id>
		<title>Projets étudiants cryptographie et sécurité/Leclaire DeRoland Crypto Quantique</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8690"/>
		<updated>2016-03-18T12:15:22Z</updated>

		<summary type="html">&lt;p&gt;JulianaLeclaire : /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Auteurs : Juliana Leclaire, Céline de Roland ===&lt;br /&gt;
&lt;br /&gt;
== La cryptographie et la cryptanalyse dans le contexte de l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
L&#039;informatique quantique se base sur la superposition de plusieurs états quantiques pour améliorer les capacités de calculs. Ce domaine pose un vrai problème dans la sécurité de l&#039;internet qui utilisent des algorithmes de chiffrement asymétriques pour les connexions SSL/TLS, paiements en ligne. Les nouveaux ordinateurs avec leur rapidité de calcul va pouvoir casser ces différents algorithmes de chiffrement asymétriques qui sont présents dans le Web.&lt;br /&gt;
&lt;br /&gt;
Il existe différents acteurs qui se penchent sur ce domaine. Notamment, la NSA, Google qui tentent de construire leur propre ordinateur quantique, des scientifiques qui se réunissent pour trouver des solutions.&lt;br /&gt;
Dans cette page, nous allons nous demander en quoi l&#039;informatique quantique peut changer le Web d&#039;aujourd&#039;hui et comment faire face à cette arrivée ?&lt;br /&gt;
&lt;br /&gt;
=== Fonctionnement de l&#039;informatique quantique ===&lt;br /&gt;
&lt;br /&gt;
==== Qubit ====&lt;br /&gt;
&lt;br /&gt;
C&#039;est la plus petite unité de stockage de l&#039;information. Etant donné deux états de base &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;, un qubit non mesuré se trouve dans l&#039;état &amp;lt;math&amp;gt;\alpha \left|0\right\rangle + \beta \left|1\right\rangle&amp;lt;/math&amp;gt;, avec &amp;lt;math&amp;gt;|\alpha|^2 + |\beta|^2 = 1&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Lorsqu&#039;on mesure la valeur du qubit, on obtient soit &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; soit &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;|\alpha|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et  &amp;lt;math&amp;gt;|\beta|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
    &lt;br /&gt;
==== Théorème de non clonage ====&lt;br /&gt;
&lt;br /&gt;
Ce théorème, découvert en 1982 par Wootters, Zurek, et Dieks, consiste à dire qu&#039;il est impossible de recopier un qubit à l&#039;identique. La démonstration (par l&#039;absurde) repose sur le fait que pouvoir mettre le qubit B dans le même état que le qubit A implique que le qubit B soit déjà dans le même état que le qubit A.&lt;br /&gt;
On en déduit qu&#039;il est impossible de faire une opération de type copier/coller en informatique quantique.&lt;br /&gt;
&lt;br /&gt;
==== Téléportation quantique ====&lt;br /&gt;
&lt;br /&gt;
La téléportation quantique consiste à transférer l&#039;état du qubit A dans le qubit B. Il s&#039;agit donc cette fois d&#039;une opération de couper/coller.&lt;br /&gt;
L&#039;intrication quantique se produit lorsque deux qubits sont dépendants l&#039;un de l&#039;autre même s&#039;ils sont éloignés l&#039;un de l&#039;autre. Dans cet état, si on mesure l&#039;un des deux, alors la mesure du deuxième est déterminée.&lt;br /&gt;
Sans entrer dans la théorie physique sous jacente, nous pouvons dire qu&#039;un canal EPR permet de réaliser cette opération de couper/coller en transmettant une information entre deux ordinateurs quantiques.&lt;br /&gt;
&lt;br /&gt;
== Chiffrement à clé publique face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
=== Mise en danger de la sécurité du Web ===&lt;br /&gt;
&lt;br /&gt;
Les ordinateurs quantiques présentent une rapidité de calculs extrèmement plus rapide que les ordinateurs à base de sillicium. Ces ordinateurs auraient aucune difficulté pour casser les codes de sécurité actuels reposant principalement sur un chiffrement à clé publique. Par définition le chiffrement à clé publique utilise une clé publique pour le chiffrement et une clé privée pour le décodage en se basant sur des grands nombres. Cependant ces grands nombres peuvent être vite retrouvés par des ordinateurs quantiques.&lt;br /&gt;
&lt;br /&gt;
=== Exemple de chiffrement asymétrique: RSA ===&lt;br /&gt;
&lt;br /&gt;
Ce chiffrement est couramment utilisé dans la sécurité du Web. &lt;br /&gt;
RSA repose sur la génération de grands nombres premiers, d&#039;un chiffrement avec une clé publique et d&#039;un déchiffrement avec une clé privée. &lt;br /&gt;
&lt;br /&gt;
* Initialisation : &lt;br /&gt;
** module &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; (grand nombre entier codé sur 2048 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;p, q&amp;lt;/math&amp;gt; : nombres premiers de même taille (codés sur 1024 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;\phi(N) = (p-1) * (q - 1)&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd(e, \phi(N)) = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
** Choisir &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;ed \equiv 1 [\phi(N)]&amp;lt;/math&amp;gt; et donc &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; est l&#039;inverse modulaire de &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; avec &amp;lt;math&amp;gt;d = e^-1 [\phi(N)]&amp;lt;/math&amp;gt;&lt;br /&gt;
** Clé publique : &amp;lt;math&amp;gt;pk(n, e)&amp;lt;/math&amp;gt;, Clé privée : &amp;lt;math&amp;gt;sk(d, p, q)&amp;lt;/math&amp;gt;&lt;br /&gt;
* Chiffrement : &amp;lt;math&amp;gt;c = m^e [N]&amp;lt;/math&amp;gt;&lt;br /&gt;
* Déchiffrement : &amp;lt;math&amp;gt;m = c^d [N]&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Exemple : &amp;lt;math&amp;gt;N=15&amp;lt;/math&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* Je choisis &amp;lt;math&amp;gt;x=7&amp;lt;/math&amp;gt;&lt;br /&gt;
* En calculant successivement les valeurs de &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; on trouve &amp;lt;math&amp;gt;7^{4} \equiv 1 [15]&amp;lt;/math&amp;gt;.&lt;br /&gt;
* &amp;lt;math&amp;gt;r=4&amp;lt;/math&amp;gt; est pair&lt;br /&gt;
* &amp;lt;math&amp;gt;pgcd(x^{\frac{r}{2}}+1,15) = 5&amp;lt;/math&amp;gt;. Donc &amp;lt;math&amp;gt;P = 5&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;Q = pgcd(x^{\frac{r}{2}}-1,15) = 3&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La sécurité de RSA repose sur la difficulté à factoriser des grands nombres en nombres premiers. En effet avec &amp;lt;math&amp;gt;(N, e)&amp;lt;/math&amp;gt; il faudrait pouvoir retrouver &amp;lt;math&amp;gt;(d, p, q)&amp;lt;/math&amp;gt; où &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt; correspondant à un cassage total. D&#039;après le théorème de factorisation unique tout entier &amp;lt;math&amp;gt;n \ge 2&amp;lt;/math&amp;gt; admet une factorisation unique en produit de puissances de nombres entiers. Des algorithmes de factorisation ont été trouvés pour différentes tailles de module $N$ mais pour pallier à ces attaques on augmente la longueur du module. De nos jours pour sécuriser le chiffrement il faut utiliser des modules strictement supérieur à 2048 bits. Cependant avec l&#039;informatique quantique il ne suffira plus d&#039;augmenter la taille du module car la puissance de calcul permettra de casser le chiffrement, peu importe la taille du module.&lt;br /&gt;
&lt;br /&gt;
== Chiffrement à clé privée face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
=== Mise en danger de la sécurité ===&lt;br /&gt;
&lt;br /&gt;
Si les ordinateurs quantiques présentent une rapidité de calcul permettant d&#039;effectuer des factorisations impossibles pour un ordinateur classique, il nous semble logique qu&#039;ils soient également performants pour effectuer des attaques de type force brute sur des messages chiffrés par une clé privée qui aurait été transmise par un moyen plus sûr que RSA.&lt;br /&gt;
 &lt;br /&gt;
Un ordinateur quantique pourrait réaliser le déchiffrement avec toutes les clés possibles en parallèle. Ce qui permettrait de cryptanalyser le message en une seule opération. Le principe se base sur la superposition quantique. On superposerait toutes les clés possibles et on déchiffrerait. On obtiendrait alors une superposition de résultats. Le point le plus difficile est de trouver le résultat correct à partir de la superposition obtenue. En effet, le principe selon lequel mesurer une valeur modifie cette valeur fait qu&#039;en observant une superposition, on obtient un seul état aléatoire. Une solution à ce problème a été trouvé par Lov Grover en $O(\sqrt{n})$ étapes.&lt;br /&gt;
&lt;br /&gt;
== Résistances aux attaques quantiques ==&lt;br /&gt;
&lt;br /&gt;
=== Chiffrement asyémétrique ===&lt;br /&gt;
&lt;br /&gt;
Depuis 2006, une conférence internationnale se produit chaque année nommée &amp;quot;Post Quantum Cryptography&amp;quot; dans l&#039;intention de trouver des algorithmes résistants aux ordinateurs quantiques. Nathan Hamlin et William Webb, des mathématiciens, ont présenté récemment un algorithme de chiffrement asymétrique possiblement capable de faire face aux attaques quantiques. Cet algorithme part de l&#039;ancien chiffrement de Merkle-Hellman qui se base sur le problème du sac à dos nommé &amp;quot;Knapsack code&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
==== Problème du sac-à-dos ====&lt;br /&gt;
&lt;br /&gt;
Etant donné un sac avec une capacité &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; et plusieurs objets de poids différents. Le problème du sac-à-dos consiste à trouver la suite d&#039;objets qui entre dans le sac et qui maximise sa capacité. En partant d&#039;un n-uplet &amp;lt;math&amp;gt;\left(a_1, a_2, ..., a_n\right) \in N^n&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;S \in N&amp;lt;/math&amp;gt;, il faut trouver un n-uplet binaire &amp;lt;math&amp;gt;\left(x_1, x_2, ..., x_n\right) \in {0,1}^n&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;S = \sum_{i=1}^{n} \left(a_{i}*x_{i}\right) &amp;lt;/math&amp;gt;. La somme &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; des poids des objets choisi ne doit pas dépasser la capacité du sac à dos. Pour résoudre ce problème il n&#039;existe pas d&#039;algorithme avec une compléxité polynomial.&lt;br /&gt;
&lt;br /&gt;
==== Chiffrement de Merkle-Hellman ====&lt;br /&gt;
&lt;br /&gt;
Cet algorithme de chiffrement à clé publique repose sur la complexité algorithmique du problème de sac-à-dos et utilise des suites de poids super-croissante pour le secret et non super-croissante pour la clé publique. Si les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt; n&#039;ont pas de propriétés particulières, la recherche du message codé en binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt; est un problème difficile. Il n&#039;existe pas d&#039;algorithme polynomial pour le résoudre. Pour pouvoir retrouver facilement ce n-uplet une propriété super-croissante est utilisé sur les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt;. Un n-uplet b est super-croissant si &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\forall i \in [2,n] b_{i} &amp;gt; \sum_{j=1}^{i-1} {b_{j}}&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ainsi en utilisant un algorithme glouton nous pouvons retrouver le n-uplet binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt;. L&#039;objet le plus lourd est dans le sac si le poids du sac est supérieur au poids de celui-ci. La propriété super-croissante assure que la somme des poids des autres objets sera toujours inférieur au poids de l&#039;objet le plus lourd. L&#039;algorithme est le suivant :&lt;br /&gt;
&lt;br /&gt;
  Pour i de n à 1 faire&lt;br /&gt;
    Si &amp;lt;math&amp;gt;b_{i} \le S&amp;lt;/math&amp;gt; alors&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i}  = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
    Sinon&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i} = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
    &amp;lt;math&amp;gt;S = S - x_{i} * b_{i}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Par exemple en prenant la suite des puissances de 2 comme suite super-croissante  avec : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = \left\{ 1,4,8 \right\}, b = \left\{ 1,2,4,8 \right\}, S = 13 \left(1+4+8\right), n = 4&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 4 : 8 \le 13 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_4 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 3 : 4 \le 5 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_3 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 2 : 2 \le 1 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    non donc &amp;lt;math&amp;gt;x_2 = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 1 : 1 \le 1 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_1 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  =&amp;gt; &amp;lt;math&amp;gt;m = \left\{ 1,0,1,1 \right\}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour chiffrer un n-uplet binaire &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;, l&#039;idée de Merkle et Hellman est de &amp;quot;tordre&amp;quot; les &amp;lt;math&amp;gt;b_{i}&amp;lt;/math&amp;gt; pour obtenir un n-uplet qui n&#039;est plus super-croissant. On choisit un nombre &amp;lt;math&amp;gt;u &amp;gt; \sum_{i=1}^{n} {b_{i}}&amp;lt;/math&amp;gt;, un entier &amp;lt;math&amp;gt;v \in N&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd\left(u,v\right) = 1&amp;lt;/math&amp;gt;. Ce qui donne &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; inversible dans &amp;lt;math&amp;gt;Z/uZ&amp;lt;/math&amp;gt;. On prend &amp;lt;math&amp;gt;w = v^{-1} \in Z/uZ&amp;lt;/math&amp;gt;. On calcule ensuite le n-uplet &amp;lt;math&amp;gt;a = \left(a_1, ..., a_n\right)&amp;lt;/math&amp;gt; tel que pour tout &amp;lt;math&amp;gt;i \in [1,n]&amp;lt;/math&amp;gt; on a : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = a * b_i (mod u)&amp;lt;/math&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
Le n-uplet &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; détermine la clé public tandis que &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt; sont gardés secrets. &amp;lt;br/&amp;gt;&lt;br /&gt;
Pour envoyer le message m à Bob, Alice va, à partir de l&#039;écriture de m en binaire, calculer la somme : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;c = \sum_{i=1}^{n} {m_i * a_i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
qu&#039;elle va envoyer à Bob. Bob pour déchiffrer va devoir procéder à plusieurs étapes : &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt;c = \sum_{i=1}^{n} {m_i * a_i}&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * a_i * w} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * a_i * v^{-1}} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * v * b_i * v^{-1}} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * b_i} [u]&amp;lt;/math&amp;gt;                      =&amp;gt; Comme &amp;lt;math&amp;gt; \sum_{i=1}^{n} {m_i * b_i} &amp;lt; \sum_{i=1}^{n} {b_i}&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt; u &amp;gt; \sum_{i=1}^{n} {b_i}&amp;lt;/math&amp;gt; le modulo &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; peut s&#039;enlever&lt;br /&gt;
* &amp;lt;math&amp;gt;= \sum_{i=1}^{n} {m_i * b_i}&amp;lt;/math&amp;gt;                           =&amp;gt; Comme &amp;lt;math&amp;gt;b_i&amp;lt;/math&amp;gt; est super-croissant Bob peut facilement retrouver &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Nouveau chiffrement de Hamlin-Webb ====&lt;br /&gt;
&lt;br /&gt;
Le chiffrement de Merkle et Hellman a été abandonné à la suite des découvertes de Shamir qui a découvert une attaque permettant de retrouver le message secret en utilisant un algorithme de la réduction des réseaux. Nathan Hamlin et William Webb reprennent cet algorithme en le renforçant par un changement de représentation des entiers. Ils ont prouvé q&#039;un entier pouvait être représenté de manière unique avec des suites récurrentes. Le secret &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; n&#039;est alors plus modélisé en binaire mais en une suite récurrente plus complexe à craquer.&lt;br /&gt;
&lt;br /&gt;
===== Représentation du message =====&lt;br /&gt;
La représentation d&#039;un nombre &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; en une suite récurrente &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt; se fait en utilisant une suite augmentée &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; de &amp;lt;math&amp;gt;1 \le j \le 10&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;0 \le i \le n&amp;lt;/math&amp;gt; donné par : &amp;lt;br/&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{1,i}= u_i&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{2,i}= u_i + u_{i-2}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{3,i}= u_i + u_{i-2} + u_{i-3}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{4,i}= u_i + u_{i-2} + 2u_{i-3}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{5,i}= u_i + u_{i-2} +2u_{i-3} + u_{i-4}&amp;lt;/math&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{10,i}= u_i + u_{i-2} +2u_{i-3} + 6u_{i-4}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le suite &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; correspond au blocs de chiffre autorisés. Dans l&#039;exemple &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; se calcule dans des groupes de taille 10 mais ce nombre peut varier. La suite &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; se calcule en utilisant un algorithme glouton sur &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; où l&#039;on remplace la somme en une expression dans la suite &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
Le message secret &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; est représenté par : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; M = \sum_{i=0}^{n-1} {d_i * u_i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
avec &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt; calculé grâce à &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
où les &amp;lt;math&amp;gt;d_i&amp;lt;/math&amp;gt; sont des blocs de chiffre lexicographiquement inférieur à &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Chiffrement symétrique quantique ===&lt;br /&gt;
&lt;br /&gt;
==== Photons polarisés ====&lt;br /&gt;
&lt;br /&gt;
Les photons sont des particules qui composent la lumière. Ils sont composés d&#039;un champ électrique et d&#039;un champ magnétique. Une lumière non-polarisée se caractérise par une différence d&#039;orientation du champ électrique suivant les photons. Ainsi la polarisation consiste, grâce à un polarisateur, d&#039;obtenir des photons avec un champ électrique orienté de manière identique. Les filtres polarisants permettent d&#039;appliquer un angle d&#039;orientation sur les photons afin :&lt;br /&gt;
* de récupérer les photons polarisés parallèlement par rapport à cet angle&lt;br /&gt;
* d&#039;éliminer les photons polarisés perpendiculairement&lt;br /&gt;
* de récupérer les photons polarisés intermédiaires avec une probabilité de &amp;lt;math&amp;gt;\cos\left(\alpha\right)&amp;lt;/math&amp;gt; en les réinitialisant avec une polarisation égale à l&#039;angle d&#039;orientation du filtre.&lt;br /&gt;
&lt;br /&gt;
Du fait de la transformation de polarisation il est impossible de connaître l&#039;information sur les polarisations précédentes du photons.&lt;br /&gt;
&lt;br /&gt;
==== Distribution des clés ====&lt;br /&gt;
&lt;br /&gt;
Le chiffrement quantique offre un moyen sécurisé d’échanger des clés privées pour réaliser des chiffrements symétriques. Cette distribution s’appuie sur l’envoi de photons polarisés par fibre optique. Les personnes s&#039;échangeant les clés doivent avoir accès à un canal quantique et un canal classique. Le principe est le suivant :&lt;br /&gt;
* Alice envoie par le canal quantique une suite de photons polarisés aléatoirement.&lt;br /&gt;
* Bob applique un filtre de polarisation qui lui donne 1 chance sur 2 (et 1 chance sur 4 s&#039;il y a eu un espion) d&#039;appliquer le bon filtre et les renvoit à Alice.&lt;br /&gt;
* Alice et Bob s&#039;échangent par le canal classique leur choix des axes de polarisation éliminant ainsi les erreurs.&lt;br /&gt;
* Alice communique une partie de ses résultats.&lt;br /&gt;
* Maintenant que Bob connait les axes qu&#039;Alice a appliqué et les résultats il peut savoir si la communication a été écoutée ou non. Ceci étant grâce au théorème de non clonage où il est impossible de cloner des états quantiques inconnus.&lt;br /&gt;
&lt;br /&gt;
Ce principe permet de détecter facilement s&#039;il y a eu des intrusions durant la communication de la clé privée. En effet si un attaquant écoute il lui faut récupérer les photons envoyés par Alice mesurer la polarisation et renvoyer le photon à Bob. Pour mesurer la polarisation l&#039;attaquant doit appliquer, comme Bob, un filtre pour deviner la base qu&#039;Alice a envoyé. Ainsi cette intrusion a 1 chance sur 2 d&#039;introduire des incohérences dans les données d&#039;Alice et Bob en envoyant 1 fois sur 2 un mauvais photon. Par la suite Bob obtient donc 1 chance sur 4 d&#039;appliquer le bon filtre. Par analyses statistiques, Alice et Bob peuvent détecter de manière sure s&#039;il y a eu espionnage sur le canal quantique.&lt;br /&gt;
&lt;br /&gt;
==== Attaque de l&#039;homme du milieu ====&lt;br /&gt;
&lt;br /&gt;
Comme toute méthode d&#039;échange de clé privée, cette méthode reste vulnérable à une attaque de type &amp;quot;homme du milieu&amp;quot;. Il faut donc la combiner avec un mécanisme de certification afin de s&#039;assurer de l&#039;identité des protagonistes.&lt;br /&gt;
&lt;br /&gt;
== Ressources ==&lt;br /&gt;
&lt;br /&gt;
* Hamlin, N., &amp;amp; Webb, W. A. (2012). Representing Positive Integers as a Sum of Linear Recurrence Sequences, Fibonacci Quart. 50 (2012), no. 2, 99–105. Fibonacci Quart, 50(2), 99-105.&lt;br /&gt;
&lt;br /&gt;
* Moyer, N. T. (2010). A knapsack-type cryptographic system using algebraic number rings (Doctoral dissertation, Washington State University).&lt;/div&gt;</summary>
		<author><name>JulianaLeclaire</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8689</id>
		<title>Projets étudiants cryptographie et sécurité/Leclaire DeRoland Crypto Quantique</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8689"/>
		<updated>2016-03-18T12:14:42Z</updated>

		<summary type="html">&lt;p&gt;JulianaLeclaire : /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Auteurs : Juliana Leclaire, Céline de Roland ===&lt;br /&gt;
&lt;br /&gt;
== La cryptographie et la cryptanalyse dans le contexte de l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
L&#039;informatique quantique se base sur la superposition de plusieurs états quantiques pour améliorer les capacités de calculs. Ce domaine pose un vrai problème dans la sécurité de l&#039;internet qui utilisent des algorithmes de chiffrement asymétriques pour les connexions SSL/TLS, paiements en ligne. Les nouveaux ordinateurs avec leur rapidité de calculs va pouvoir casser ces différents algorithmes de chiffrement asymétriques qui sont présents dans le Web.&lt;br /&gt;
&lt;br /&gt;
Il existe différents acteurs qui se penchent sur ce domaine. Notamment, la NSA, Google qui tentent de construire leur propre ordinateur quantique, des scientifiques qui se réunissent pour trouver des solutions.&lt;br /&gt;
Dans cette page, nous allons nous demander en quoi l&#039;informatique quantique peut changer le Web d&#039;aujourd&#039;hui et comment faire face à cette arrivée ?&lt;br /&gt;
&lt;br /&gt;
=== Fonctionnement de l&#039;informatique quantique ===&lt;br /&gt;
&lt;br /&gt;
==== Qubit ====&lt;br /&gt;
&lt;br /&gt;
C&#039;est la plus petite unité de stockage de l&#039;information. Etant donné deux états de base &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;, un qubit non mesuré se trouve dans l&#039;état &amp;lt;math&amp;gt;\alpha \left|0\right\rangle + \beta \left|1\right\rangle&amp;lt;/math&amp;gt;, avec &amp;lt;math&amp;gt;|\alpha|^2 + |\beta|^2 = 1&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Lorsqu&#039;on mesure la valeur du qubit, on obtient soit &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; soit &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;|\alpha|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et  &amp;lt;math&amp;gt;|\beta|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
    &lt;br /&gt;
==== Théorème de non clonage ====&lt;br /&gt;
&lt;br /&gt;
Ce théorème, découvert en 1982 par Wootters, Zurek, et Dieks, consiste à dire qu&#039;il est impossible de recopier un qubit à l&#039;identique. La démonstration (par l&#039;absurde) repose sur le fait que pouvoir mettre le qubit B dans le même état que le qubit A implique que le qubit B soit déjà dans le même état que le qubit A.&lt;br /&gt;
On en déduit qu&#039;il est impossible de faire une opération de type copier/coller en informatique quantique.&lt;br /&gt;
&lt;br /&gt;
==== Téléportation quantique ====&lt;br /&gt;
&lt;br /&gt;
La téléportation quantique consiste à transférer l&#039;état du qubit A dans le qubit B. Il s&#039;agit donc cette fois d&#039;une opération de couper/coller.&lt;br /&gt;
L&#039;intrication quantique se produit lorsque deux qubits sont dépendants l&#039;un de l&#039;autre même s&#039;ils sont éloignés l&#039;un de l&#039;autre. Dans cet état, si on mesure l&#039;un des deux, alors la mesure du deuxième est déterminée.&lt;br /&gt;
Sans entrer dans la théorie physique sous jacente, nous pouvons dire qu&#039;un canal EPR permet de réaliser cette opération de couper/coller en transmettant une information entre deux ordinateurs quantiques.&lt;br /&gt;
&lt;br /&gt;
== Chiffrement à clé publique face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
=== Mise en danger de la sécurité du Web ===&lt;br /&gt;
&lt;br /&gt;
Les ordinateurs quantiques présentent une rapidité de calculs extrèmement plus rapide que les ordinateurs à base de sillicium. Ces ordinateurs auraient aucune difficulté pour casser les codes de sécurité actuels reposant principalement sur un chiffrement à clé publique. Par définition le chiffrement à clé publique utilise une clé publique pour le chiffrement et une clé privée pour le décodage en se basant sur des grands nombres. Cependant ces grands nombres peuvent être vite retrouvés par des ordinateurs quantiques.&lt;br /&gt;
&lt;br /&gt;
=== Exemple de chiffrement asymétrique: RSA ===&lt;br /&gt;
&lt;br /&gt;
Ce chiffrement est couramment utilisé dans la sécurité du Web. &lt;br /&gt;
RSA repose sur la génération de grands nombres premiers, d&#039;un chiffrement avec une clé publique et d&#039;un déchiffrement avec une clé privée. &lt;br /&gt;
&lt;br /&gt;
* Initialisation : &lt;br /&gt;
** module &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; (grand nombre entier codé sur 2048 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;p, q&amp;lt;/math&amp;gt; : nombres premiers de même taille (codés sur 1024 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;\phi(N) = (p-1) * (q - 1)&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd(e, \phi(N)) = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
** Choisir &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;ed \equiv 1 [\phi(N)]&amp;lt;/math&amp;gt; et donc &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; est l&#039;inverse modulaire de &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; avec &amp;lt;math&amp;gt;d = e^-1 [\phi(N)]&amp;lt;/math&amp;gt;&lt;br /&gt;
** Clé publique : &amp;lt;math&amp;gt;pk(n, e)&amp;lt;/math&amp;gt;, Clé privée : &amp;lt;math&amp;gt;sk(d, p, q)&amp;lt;/math&amp;gt;&lt;br /&gt;
* Chiffrement : &amp;lt;math&amp;gt;c = m^e [N]&amp;lt;/math&amp;gt;&lt;br /&gt;
* Déchiffrement : &amp;lt;math&amp;gt;m = c^d [N]&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Exemple : &amp;lt;math&amp;gt;N=15&amp;lt;/math&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* Je choisis &amp;lt;math&amp;gt;x=7&amp;lt;/math&amp;gt;&lt;br /&gt;
* En calculant successivement les valeurs de &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; on trouve &amp;lt;math&amp;gt;7^{4} \equiv 1 [15]&amp;lt;/math&amp;gt;.&lt;br /&gt;
* &amp;lt;math&amp;gt;r=4&amp;lt;/math&amp;gt; est pair&lt;br /&gt;
* &amp;lt;math&amp;gt;pgcd(x^{\frac{r}{2}}+1,15) = 5&amp;lt;/math&amp;gt;. Donc &amp;lt;math&amp;gt;P = 5&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;Q = pgcd(x^{\frac{r}{2}}-1,15) = 3&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La sécurité de RSA repose sur la difficulté à factoriser des grands nombres en nombres premiers. En effet avec &amp;lt;math&amp;gt;(N, e)&amp;lt;/math&amp;gt; il faudrait pouvoir retrouver &amp;lt;math&amp;gt;(d, p, q)&amp;lt;/math&amp;gt; où &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt; correspondant à un cassage total. D&#039;après le théorème de factorisation unique tout entier &amp;lt;math&amp;gt;n \ge 2&amp;lt;/math&amp;gt; admet une factorisation unique en produit de puissances de nombres entiers. Des algorithmes de factorisation ont été trouvés pour différentes tailles de module $N$ mais pour pallier à ces attaques on augmente la longueur du module. De nos jours pour sécuriser le chiffrement il faut utiliser des modules strictement supérieur à 2048 bits. Cependant avec l&#039;informatique quantique il ne suffira plus d&#039;augmenter la taille du module car la puissance de calcul permettra de casser le chiffrement, peu importe la taille du module.&lt;br /&gt;
&lt;br /&gt;
== Chiffrement à clé privée face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
=== Mise en danger de la sécurité ===&lt;br /&gt;
&lt;br /&gt;
Si les ordinateurs quantiques présentent une rapidité de calcul permettant d&#039;effectuer des factorisations impossibles pour un ordinateur classique, il nous semble logique qu&#039;ils soient également performants pour effectuer des attaques de type force brute sur des messages chiffrés par une clé privée qui aurait été transmise par un moyen plus sûr que RSA.&lt;br /&gt;
 &lt;br /&gt;
Un ordinateur quantique pourrait réaliser le déchiffrement avec toutes les clés possibles en parallèle. Ce qui permettrait de cryptanalyser le message en une seule opération. Le principe se base sur la superposition quantique. On superposerait toutes les clés possibles et on déchiffrerait. On obtiendrait alors une superposition de résultats. Le point le plus difficile est de trouver le résultat correct à partir de la superposition obtenue. En effet, le principe selon lequel mesurer une valeur modifie cette valeur fait qu&#039;en observant une superposition, on obtient un seul état aléatoire. Une solution à ce problème a été trouvé par Lov Grover en $O(\sqrt{n})$ étapes.&lt;br /&gt;
&lt;br /&gt;
== Résistances aux attaques quantiques ==&lt;br /&gt;
&lt;br /&gt;
=== Chiffrement asyémétrique ===&lt;br /&gt;
&lt;br /&gt;
Depuis 2006, une conférence internationnale se produit chaque année nommée &amp;quot;Post Quantum Cryptography&amp;quot; dans l&#039;intention de trouver des algorithmes résistants aux ordinateurs quantiques. Nathan Hamlin et William Webb, des mathématiciens, ont présenté récemment un algorithme de chiffrement asymétrique possiblement capable de faire face aux attaques quantiques. Cet algorithme part de l&#039;ancien chiffrement de Merkle-Hellman qui se base sur le problème du sac à dos nommé &amp;quot;Knapsack code&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
==== Problème du sac-à-dos ====&lt;br /&gt;
&lt;br /&gt;
Etant donné un sac avec une capacité &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; et plusieurs objets de poids différents. Le problème du sac-à-dos consiste à trouver la suite d&#039;objets qui entre dans le sac et qui maximise sa capacité. En partant d&#039;un n-uplet &amp;lt;math&amp;gt;\left(a_1, a_2, ..., a_n\right) \in N^n&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;S \in N&amp;lt;/math&amp;gt;, il faut trouver un n-uplet binaire &amp;lt;math&amp;gt;\left(x_1, x_2, ..., x_n\right) \in {0,1}^n&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;S = \sum_{i=1}^{n} \left(a_{i}*x_{i}\right) &amp;lt;/math&amp;gt;. La somme &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; des poids des objets choisi ne doit pas dépasser la capacité du sac à dos. Pour résoudre ce problème il n&#039;existe pas d&#039;algorithme avec une compléxité polynomial.&lt;br /&gt;
&lt;br /&gt;
==== Chiffrement de Merkle-Hellman ====&lt;br /&gt;
&lt;br /&gt;
Cet algorithme de chiffrement à clé publique repose sur la complexité algorithmique du problème de sac-à-dos et utilise des suites de poids super-croissante pour le secret et non super-croissante pour la clé publique. Si les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt; n&#039;ont pas de propriétés particulières, la recherche du message codé en binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt; est un problème difficile. Il n&#039;existe pas d&#039;algorithme polynomial pour le résoudre. Pour pouvoir retrouver facilement ce n-uplet une propriété super-croissante est utilisé sur les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt;. Un n-uplet b est super-croissant si &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\forall i \in [2,n] b_{i} &amp;gt; \sum_{j=1}^{i-1} {b_{j}}&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ainsi en utilisant un algorithme glouton nous pouvons retrouver le n-uplet binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt;. L&#039;objet le plus lourd est dans le sac si le poids du sac est supérieur au poids de celui-ci. La propriété super-croissante assure que la somme des poids des autres objets sera toujours inférieur au poids de l&#039;objet le plus lourd. L&#039;algorithme est le suivant :&lt;br /&gt;
&lt;br /&gt;
  Pour i de n à 1 faire&lt;br /&gt;
    Si &amp;lt;math&amp;gt;b_{i} \le S&amp;lt;/math&amp;gt; alors&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i}  = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
    Sinon&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i} = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
    &amp;lt;math&amp;gt;S = S - x_{i} * b_{i}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Par exemple en prenant la suite des puissances de 2 comme suite super-croissante  avec : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = \left\{ 1,4,8 \right\}, b = \left\{ 1,2,4,8 \right\}, S = 13 \left(1+4+8\right), n = 4&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 4 : 8 \le 13 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_4 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 3 : 4 \le 5 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_3 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 2 : 2 \le 1 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    non donc &amp;lt;math&amp;gt;x_2 = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 1 : 1 \le 1 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_1 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  =&amp;gt; &amp;lt;math&amp;gt;m = \left\{ 1,0,1,1 \right\}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour chiffrer un n-uplet binaire &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;, l&#039;idée de Merkle et Hellman est de &amp;quot;tordre&amp;quot; les &amp;lt;math&amp;gt;b_{i}&amp;lt;/math&amp;gt; pour obtenir un n-uplet qui n&#039;est plus super-croissant. On choisit un nombre &amp;lt;math&amp;gt;u &amp;gt; \sum_{i=1}^{n} {b_{i}}&amp;lt;/math&amp;gt;, un entier &amp;lt;math&amp;gt;v \in N&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd\left(u,v\right) = 1&amp;lt;/math&amp;gt;. Ce qui donne &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; inversible dans &amp;lt;math&amp;gt;Z/uZ&amp;lt;/math&amp;gt;. On prend &amp;lt;math&amp;gt;w = v^{-1} \in Z/uZ&amp;lt;/math&amp;gt;. On calcule ensuite le n-uplet &amp;lt;math&amp;gt;a = \left(a_1, ..., a_n\right)&amp;lt;/math&amp;gt; tel que pour tout &amp;lt;math&amp;gt;i \in [1,n]&amp;lt;/math&amp;gt; on a : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = a * b_i (mod u)&amp;lt;/math&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
Le n-uplet &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; détermine la clé public tandis que &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt; sont gardés secrets. &amp;lt;br/&amp;gt;&lt;br /&gt;
Pour envoyer le message m à Bob, Alice va, à partir de l&#039;écriture de m en binaire, calculer la somme : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;c = \sum_{i=1}^{n} {m_i * a_i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
qu&#039;elle va envoyer à Bob. Bob pour déchiffrer va devoir procéder à plusieurs étapes : &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt;c = \sum_{i=1}^{n} {m_i * a_i}&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * a_i * w} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * a_i * v^{-1}} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * v * b_i * v^{-1}} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * b_i} [u]&amp;lt;/math&amp;gt;                      =&amp;gt; Comme &amp;lt;math&amp;gt; \sum_{i=1}^{n} {m_i * b_i} &amp;lt; \sum_{i=1}^{n} {b_i}&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt; u &amp;gt; \sum_{i=1}^{n} {b_i}&amp;lt;/math&amp;gt; le modulo &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; peut s&#039;enlever&lt;br /&gt;
* &amp;lt;math&amp;gt;= \sum_{i=1}^{n} {m_i * b_i}&amp;lt;/math&amp;gt;                           =&amp;gt; Comme &amp;lt;math&amp;gt;b_i&amp;lt;/math&amp;gt; est super-croissant Bob peut facilement retrouver &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Nouveau chiffrement de Hamlin-Webb ====&lt;br /&gt;
&lt;br /&gt;
Le chiffrement de Merkle et Hellman a été abandonné à la suite des découvertes de Shamir qui a découvert une attaque permettant de retrouver le message secret en utilisant un algorithme de la réduction des réseaux. Nathan Hamlin et William Webb reprennent cet algorithme en le renforçant par un changement de représentation des entiers. Ils ont prouvé q&#039;un entier pouvait être représenté de manière unique avec des suites récurrentes. Le secret &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; n&#039;est alors plus modélisé en binaire mais en une suite récurrente plus complexe à craquer.&lt;br /&gt;
&lt;br /&gt;
===== Représentation du message =====&lt;br /&gt;
La représentation d&#039;un nombre &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; en une suite récurrente &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt; se fait en utilisant une suite augmentée &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; de &amp;lt;math&amp;gt;1 \le j \le 10&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;0 \le i \le n&amp;lt;/math&amp;gt; donné par : &amp;lt;br/&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{1,i}= u_i&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{2,i}= u_i + u_{i-2}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{3,i}= u_i + u_{i-2} + u_{i-3}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{4,i}= u_i + u_{i-2} + 2u_{i-3}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{5,i}= u_i + u_{i-2} +2u_{i-3} + u_{i-4}&amp;lt;/math&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{10,i}= u_i + u_{i-2} +2u_{i-3} + 6u_{i-4}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le suite &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; correspond au blocs de chiffre autorisés. Dans l&#039;exemple &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; se calcule dans des groupes de taille 10 mais ce nombre peut varier. La suite &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; se calcule en utilisant un algorithme glouton sur &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; où l&#039;on remplace la somme en une expression dans la suite &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
Le message secret &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; est représenté par : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; M = \sum_{i=0}^{n-1} {d_i * u_i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
avec &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt; calculé grâce à &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
où les &amp;lt;math&amp;gt;d_i&amp;lt;/math&amp;gt; sont des blocs de chiffre lexicographiquement inférieur à &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Chiffrement symétrique quantique ===&lt;br /&gt;
&lt;br /&gt;
==== Photons polarisés ====&lt;br /&gt;
&lt;br /&gt;
Les photons sont des particules qui composent la lumière. Ils sont composés d&#039;un champ électrique et d&#039;un champ magnétique. Une lumière non-polarisée se caractérise par une différence d&#039;orientation du champ électrique suivant les photons. Ainsi la polarisation consiste, grâce à un polarisateur, d&#039;obtenir des photons avec un champ électrique orienté de manière identique. Les filtres polarisants permettent d&#039;appliquer un angle d&#039;orientation sur les photons afin :&lt;br /&gt;
* de récupérer les photons polarisés parallèlement par rapport à cet angle&lt;br /&gt;
* d&#039;éliminer les photons polarisés perpendiculairement&lt;br /&gt;
* de récupérer les photons polarisés intermédiaires avec une probabilité de &amp;lt;math&amp;gt;\cos\left(\alpha\right)&amp;lt;/math&amp;gt; en les réinitialisant avec une polarisation égale à l&#039;angle d&#039;orientation du filtre.&lt;br /&gt;
&lt;br /&gt;
Du fait de la transformation de polarisation il est impossible de connaître l&#039;information sur les polarisations précédentes du photons.&lt;br /&gt;
&lt;br /&gt;
==== Distribution des clés ====&lt;br /&gt;
&lt;br /&gt;
Le chiffrement quantique offre un moyen sécurisé d’échanger des clés privées pour réaliser des chiffrements symétriques. Cette distribution s’appuie sur l’envoi de photons polarisés par fibre optique. Les personnes s&#039;échangeant les clés doivent avoir accès à un canal quantique et un canal classique. Le principe est le suivant :&lt;br /&gt;
* Alice envoie par le canal quantique une suite de photons polarisés aléatoirement.&lt;br /&gt;
* Bob applique un filtre de polarisation qui lui donne 1 chance sur 2 (et 1 chance sur 4 s&#039;il y a eu un espion) d&#039;appliquer le bon filtre et les renvoit à Alice.&lt;br /&gt;
* Alice et Bob s&#039;échangent par le canal classique leur choix des axes de polarisation éliminant ainsi les erreurs.&lt;br /&gt;
* Alice communique une partie de ses résultats.&lt;br /&gt;
* Maintenant que Bob connait les axes qu&#039;Alice a appliqué et les résultats il peut savoir si la communication a été écoutée ou non. Ceci étant grâce au théorème de non clonage où il est impossible de cloner des états quantiques inconnus.&lt;br /&gt;
&lt;br /&gt;
Ce principe permet de détecter facilement s&#039;il y a eu des intrusions durant la communication de la clé privée. En effet si un attaquant écoute il lui faut récupérer les photons envoyés par Alice mesurer la polarisation et renvoyer le photon à Bob. Pour mesurer la polarisation l&#039;attaquant doit appliquer, comme Bob, un filtre pour deviner la base qu&#039;Alice a envoyé. Ainsi cette intrusion a 1 chance sur 2 d&#039;introduire des incohérences dans les données d&#039;Alice et Bob en envoyant 1 fois sur 2 un mauvais photon. Par la suite Bob obtient donc 1 chance sur 4 d&#039;appliquer le bon filtre. Par analyses statistiques, Alice et Bob peuvent détecter de manière sure s&#039;il y a eu espionnage sur le canal quantique.&lt;br /&gt;
&lt;br /&gt;
==== Attaque de l&#039;homme du milieu ====&lt;br /&gt;
&lt;br /&gt;
Comme toute méthode d&#039;échange de clé privée, cette méthode reste vulnérable à une attaque de type &amp;quot;homme du milieu&amp;quot;. Il faut donc la combiner avec un mécanisme de certification afin de s&#039;assurer de l&#039;identité des protagonistes.&lt;br /&gt;
&lt;br /&gt;
== Ressources ==&lt;br /&gt;
&lt;br /&gt;
* Hamlin, N., &amp;amp; Webb, W. A. (2012). Representing Positive Integers as a Sum of Linear Recurrence Sequences, Fibonacci Quart. 50 (2012), no. 2, 99–105. Fibonacci Quart, 50(2), 99-105.&lt;br /&gt;
&lt;br /&gt;
* Moyer, N. T. (2010). A knapsack-type cryptographic system using algebraic number rings (Doctoral dissertation, Washington State University).&lt;/div&gt;</summary>
		<author><name>JulianaLeclaire</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8657</id>
		<title>Projets étudiants cryptographie et sécurité/Leclaire DeRoland Crypto Quantique</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8657"/>
		<updated>2016-03-17T10:49:37Z</updated>

		<summary type="html">&lt;p&gt;JulianaLeclaire : /* Ressources */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Auteurs : Juliana Leclaire, Céline de Roland ===&lt;br /&gt;
&lt;br /&gt;
== La cryptographie et la cryptanalyse dans le contexte de l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
L&#039;informatique quantique se base sur la superposition de plusieurs états quantiques pour améliorer les capacités de calculs. &lt;br /&gt;
&lt;br /&gt;
Ce domaine nous amène à un vrai problème dans le sécurité de l&#039;internet. Car l&#039;informatique quantique, avec ses capacités de calculs va pouvoir casser les algorithmes de chiffrement asymétriques qui sont présents dans le Web. Les chiffrements asymétriques sont utilisés dans le connexions SSL/TLS, les paiements en ligne, etc.&lt;br /&gt;
&lt;br /&gt;
En partie pour ces raisons, il existe différents acteurs qui se penchent sur ce domaine. Notamment, la NSA, Google qui cherche à construire son propre ordinateur quantique.&lt;br /&gt;
Dans cette page, nous allons nous demander en quoi l&#039;informatique quantique peut changer le Web d&#039;aujourd&#039;hui et comment faire face à cette arrivée ?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Fonctionnement de l&#039;informatique quantique ===&lt;br /&gt;
&lt;br /&gt;
==== Qubit ====&lt;br /&gt;
&lt;br /&gt;
C&#039;est la plus petite unité de stockage de l&#039;information. Etant donné deux états de base &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;, un qubit non mesuré se trouve dans l&#039;état &amp;lt;math&amp;gt;\alpha \left|0\right\rangle + \beta \left|1\right\rangle&amp;lt;/math&amp;gt;, avec &amp;lt;math&amp;gt;|\alpha|^2 + |\beta|^2 = 1&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Lorsqu&#039;on mesure la valeur du qubit, on obtient soit &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; soit &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;|\alpha|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et  &amp;lt;math&amp;gt;|\beta|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
    &lt;br /&gt;
==== Théorème de non clonage ====&lt;br /&gt;
&lt;br /&gt;
Ce théorème, découvert en 1982 par Wootters, Zurek, et Dieks, consiste à dire qu&#039;il est impossible de recopier un qubit à l&#039;identique. La démonstration (par l&#039;absurde) repose sur le fait que pouvoir mettre le qubit B dans le même état que le qubit A implique que le qubit B soit déjà dans le même état que le qubit A.&lt;br /&gt;
On en déduit qu&#039;il est impossible de faire une opération de type copier/coller en informatique quantique.&lt;br /&gt;
&lt;br /&gt;
==== Téléportation quantique ====&lt;br /&gt;
&lt;br /&gt;
La téléportation quantique consiste à transférer l&#039;état du qubit A dans le qubit B. Il s&#039;agit donc cette fois d&#039;une opération de couper/coller.&lt;br /&gt;
L&#039;intrication quantique se produit lorsque deux qubits sont dépendants l&#039;un de l&#039;autre même s&#039;ils sont éloignés l&#039;un de l&#039;autre. Dans cet état, si on mesure l&#039;un des deux, alors la mesure du deuxième est déterminée.&lt;br /&gt;
Sans entrer dans la théorie physique sous jacente, nous pouvons dire qu&#039;un canal EPR permet de réaliser cette opération de couper/coller en transmettant une information entre deux ordinateurs quantiques.&lt;br /&gt;
&lt;br /&gt;
== Chiffrement à clé publique face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
=== Mise en danger de la sécurité du Web ===&lt;br /&gt;
&lt;br /&gt;
Les ordinateurs quantiques présentent une rapidité de calculs extrèmement plus rapide que les ordinateurs à base de sillicium. Ces ordinateurs auraient aucune difficulté pour casser les codes de sécurité actuels reposant principalement sur un chiffrement à clé publique. Par définition le chiffrement à clé publique utilise une clé publique pour le chiffrement et une clé privée pour le décodage en se basant sur des grands nombres. Cependant ces grands nombres peuvent être vite retrouvés par des ordinateurs quantiques.&lt;br /&gt;
&lt;br /&gt;
=== Exemple de chiffrement asymétrique: RSA ===&lt;br /&gt;
&lt;br /&gt;
Ce chiffrement est couramment utilisé dans la sécurité du Web. &lt;br /&gt;
RSA repose sur la génération de grands nombres premiers, d&#039;un chiffrement avec une clé publique et d&#039;un déchiffrement avec une clé privée. &lt;br /&gt;
&lt;br /&gt;
* Initialisation : &lt;br /&gt;
** module &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; (grand nombre entier codé sur 2048 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;p, q&amp;lt;/math&amp;gt; : nombres premiers de même taille (codés sur 1024 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;\phi(N) = (p-1) * (q - 1)&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd(e, \phi(N)) = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
** Choisir &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;ed \equiv 1 [\phi(N)]&amp;lt;/math&amp;gt; et donc &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; est l&#039;inverse modulaire de &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; avec &amp;lt;math&amp;gt;d = e^-1 [\phi(N)]&amp;lt;/math&amp;gt;&lt;br /&gt;
** Clé publique : &amp;lt;math&amp;gt;pk(n, e)&amp;lt;/math&amp;gt;, Clé privée : &amp;lt;math&amp;gt;sk(d, p, q)&amp;lt;/math&amp;gt;&lt;br /&gt;
* Chiffrement : &amp;lt;math&amp;gt;c = m^e [N]&amp;lt;/math&amp;gt;&lt;br /&gt;
* Déchiffrement : &amp;lt;math&amp;gt;m = c^d [N]&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Exemple : &amp;lt;math&amp;gt;N=15&amp;lt;/math&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* Je choisis &amp;lt;math&amp;gt;x=7&amp;lt;/math&amp;gt;&lt;br /&gt;
* En calculant successivement les valeurs de &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; on trouve &amp;lt;math&amp;gt;7^{4} \equiv 1 [15]&amp;lt;/math&amp;gt;.&lt;br /&gt;
* &amp;lt;math&amp;gt;r=4&amp;lt;/math&amp;gt; est pair&lt;br /&gt;
* &amp;lt;math&amp;gt;pgcd(x^{\frac{r}{2}}+1,15) = 5&amp;lt;/math&amp;gt;. Donc &amp;lt;math&amp;gt;P = 5&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;Q = pgcd(x^{\frac{r}{2}}-1,15) = 3&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La sécurité de RSA repose sur la difficulté à factoriser des grands nombres en nombres premiers. En effet avec &amp;lt;math&amp;gt;(N, e)&amp;lt;/math&amp;gt; il faudrait pouvoir retrouver &amp;lt;math&amp;gt;(d, p, q)&amp;lt;/math&amp;gt; où &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt; correspondant à un cassage total. D&#039;après le théorème de factorisation unique tout entier &amp;lt;math&amp;gt;n \ge 2&amp;lt;/math&amp;gt; admet une factorisation unique en produit de puissances de nombres entiers. Des algorithmes de factorisation ont été trouvés pour différentes tailles de module $N$ mais pour pallier à ces attaques on augmente la longueur du module. De nos jours pour sécuriser le chiffrement il faut utiliser des modules strictement supérieur à 2048 bits. Cependant avec l&#039;informatique quantique il ne suffira plus d&#039;augmenter la taille du module car la puissance de calcul permettra de casser le chiffrement, peu importe la taille du module.&lt;br /&gt;
&lt;br /&gt;
== Chiffrement à clé privée face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
=== Mise en danger de la sécurité ===&lt;br /&gt;
&lt;br /&gt;
Si les ordinateurs quantiques présentent une rapidité de calcul permettant d&#039;effectuer des factorisations impossibles pour un ordinateur classique, il nous semble logique qu&#039;ils soient également performants pour effectuer des attaques de type force brute sur des messages chiffrés par une clé privée qui aurait été transmise par un moyen plus sûr que RSA.&lt;br /&gt;
 &lt;br /&gt;
Un ordinateur quantique pourrait réaliser le déchiffrement avec toutes les clés possibles en parallèle. Ce qui permettrait de cryptanalyser le message en une seule opération. Le principe se base sur la superposition quantique. On superposerait toutes les clés possibles et on déchiffrerait. On obtiendrait alors une superposition de résultats. Le point le plus difficile est de trouver le résultat correct à partir de la superposition obtenue. En effet, le principe selon lequel mesurer une valeur modifie cette valeur fait qu&#039;en observant une superposition, on obtient un seul état aléatoire. Une solution à ce problème a été trouvé par Lov Grover en $O(\sqrt{n})$ étapes.&lt;br /&gt;
&lt;br /&gt;
== Résistances aux attaques quantiques ==&lt;br /&gt;
&lt;br /&gt;
=== Chiffrement asyémétrique ===&lt;br /&gt;
&lt;br /&gt;
Depuis 2006, une conférence internationnale se produit chaque année nommée &amp;quot;Post Quantum Cryptography&amp;quot; dans l&#039;intention de trouver des algorithmes résistants aux ordinateurs quantiques. Nathan Hamlin et William Webb, des mathématiciens, ont présenté récemment un algorithme de chiffrement asymétrique possiblement capable de faire face aux attaques quantiques. Cet algorithme part de l&#039;ancien chiffrement de Merkle-Hellman qui se base sur le problème du sac à dos nommé &amp;quot;Knapsack code&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
==== Problème du sac-à-dos ====&lt;br /&gt;
&lt;br /&gt;
Etant donné un sac avec une capacité &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; et plusieurs objets de poids différents. Le problème du sac-à-dos consiste à trouver la suite d&#039;objets qui entre dans le sac et qui maximise sa capacité. En partant d&#039;un n-uplet &amp;lt;math&amp;gt;\left(a_1, a_2, ..., a_n\right) \in N^n&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;S \in N&amp;lt;/math&amp;gt;, il faut trouver un n-uplet binaire &amp;lt;math&amp;gt;\left(x_1, x_2, ..., x_n\right) \in {0,1}^n&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;S = \sum_{i=1}^{n} \left(a_{i}*x_{i}\right) &amp;lt;/math&amp;gt;. La somme &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; des poids des objets choisi ne doit pas dépasser la capacité du sac à dos. Pour résoudre ce problème il n&#039;existe pas d&#039;algorithme avec une compléxité polynomial.&lt;br /&gt;
&lt;br /&gt;
==== Chiffrement de Merkle-Hellman ====&lt;br /&gt;
&lt;br /&gt;
Cet algorithme de chiffrement à clé publique repose sur la complexité algorithmique du problème de sac-à-dos et utilise des suites de poids super-croissante pour le secret et non super-croissante pour la clé publique. Si les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt; n&#039;ont pas de propriétés particulières, la recherche du message codé en binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt; est un problème difficile. Il n&#039;existe pas d&#039;algorithme polynomial pour le résoudre. Pour pouvoir retrouver facilement ce n-uplet une propriété super-croissante est utilisé sur les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt;. Un n-uplet b est super-croissant si &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\forall i \in [2,n] b_{i} &amp;gt; \sum_{j=1}^{i-1} {b_{j}}&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ainsi en utilisant un algorithme glouton nous pouvons retrouver le n-uplet binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt;. L&#039;objet le plus lourd est dans le sac si le poids du sac est supérieur au poids de celui-ci. La propriété super-croissante assure que la somme des poids des autres objets sera toujours inférieur au poids de l&#039;objet le plus lourd. L&#039;algorithme est le suivant :&lt;br /&gt;
&lt;br /&gt;
  Pour i de n à 1 faire&lt;br /&gt;
    Si &amp;lt;math&amp;gt;b_{i} \le S&amp;lt;/math&amp;gt; alors&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i}  = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
    Sinon&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i} = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
    &amp;lt;math&amp;gt;S = S - x_{i} * b_{i}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Par exemple en prenant la suite des puissances de 2 comme suite super-croissante  avec : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = \left\{ 1,4,8 \right\}, b = \left\{ 1,2,4,8 \right\}, S = 13 \left(1+4+8\right), n = 4&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 4 : 8 \le 13 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_4 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 3 : 4 \le 5 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_3 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 2 : 2 \le 1 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    non donc &amp;lt;math&amp;gt;x_2 = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 1 : 1 \le 1 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_1 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  =&amp;gt; &amp;lt;math&amp;gt;m = \left\{ 1,0,1,1 \right\}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour chiffrer un n-uplet binaire &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;, l&#039;idée de Merkle et Hellman est de &amp;quot;tordre&amp;quot; les &amp;lt;math&amp;gt;b_{i}&amp;lt;/math&amp;gt; pour obtenir un n-uplet qui n&#039;est plus super-croissant. On choisit un nombre &amp;lt;math&amp;gt;u &amp;gt; \sum_{i=1}^{n} {b_{i}}&amp;lt;/math&amp;gt;, un entier &amp;lt;math&amp;gt;v \in N&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd\left(u,v\right) = 1&amp;lt;/math&amp;gt;. Ce qui donne &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; inversible dans &amp;lt;math&amp;gt;Z/uZ&amp;lt;/math&amp;gt;. On prend &amp;lt;math&amp;gt;w = v^{-1} \in Z/uZ&amp;lt;/math&amp;gt;. On calcule ensuite le n-uplet &amp;lt;math&amp;gt;a = \left(a_1, ..., a_n\right)&amp;lt;/math&amp;gt; tel que pour tout &amp;lt;math&amp;gt;i \in [1,n]&amp;lt;/math&amp;gt; on a : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = a * b_i (mod u)&amp;lt;/math&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
Le n-uplet &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; détermine la clé public tandis que &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt; sont gardés secrets. &amp;lt;br/&amp;gt;&lt;br /&gt;
Pour envoyer le message m à Bob, Alice va, à partir de l&#039;écriture de m en binaire, calculer la somme : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;c = \sum_{i=1}^{n} {m_i * a_i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
qu&#039;elle va envoyer à Bob. Bob pour déchiffrer va devoir procéder à plusieurs étapes : &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt;c = \sum_{i=1}^{n} {m_i * a_i}&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * a_i * w} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * a_i * v^{-1}} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * v * b_i * v^{-1}} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * b_i} [u]&amp;lt;/math&amp;gt;                      =&amp;gt; Comme &amp;lt;math&amp;gt; \sum_{i=1}^{n} {m_i * b_i} &amp;lt; \sum_{i=1}^{n} {b_i}&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt; u &amp;gt; \sum_{i=1}^{n} {b_i}&amp;lt;/math&amp;gt; le modulo &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; peut s&#039;enlever&lt;br /&gt;
* &amp;lt;math&amp;gt;= \sum_{i=1}^{n} {m_i * b_i}&amp;lt;/math&amp;gt;                           =&amp;gt; Comme &amp;lt;math&amp;gt;b_i&amp;lt;/math&amp;gt; est super-croissant Bob peut facilement retrouver &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Nouveau chiffrement de Hamlin-Webb ====&lt;br /&gt;
&lt;br /&gt;
Le chiffrement de Merkle et Hellman a été abandonné à la suite des découvertes de Shamir qui a découvert une attaque permettant de retrouver le message secret en utilisant un algorithme de la réduction des réseaux. Nathan Hamlin et William Webb reprennent cet algorithme en le renforçant par un changement de représentation des entiers. Ils ont prouvé q&#039;un entier pouvait être représenté de manière unique avec des suites récurrentes. Le secret &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; n&#039;est alors plus modélisé en binaire mais en une suite récurrente plus complexe à craquer.&lt;br /&gt;
&lt;br /&gt;
===== Représentation du message =====&lt;br /&gt;
La représentation d&#039;un nombre &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; en une suite récurrente &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt; se fait en utilisant une suite augmentée &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; de &amp;lt;math&amp;gt;1 \le j \le 10&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;0 \le i \le n&amp;lt;/math&amp;gt; donné par : &amp;lt;br/&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{1,i}= u_i&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{2,i}= u_i + u_{i-2}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{3,i}= u_i + u_{i-2} + u_{i-3}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{4,i}= u_i + u_{i-2} + 2u_{i-3}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{5,i}= u_i + u_{i-2} +2u_{i-3} + u_{i-4}&amp;lt;/math&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{10,i}= u_i + u_{i-2} +2u_{i-3} + 6u_{i-4}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le suite &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; correspond au blocs de chiffre autorisés. Dans l&#039;exemple &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; se calcule dans des groupes de taille 10 mais ce nombre peut varier. La suite &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; se calcule en utilisant un algorithme glouton sur &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; où l&#039;on remplace la somme en une expression dans la suite &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
Le message secret &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; est représenté par : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; M = \sum_{i=0}^{n-1} {d_i * u_i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
avec &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt; calculé grâce à &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
où les &amp;lt;math&amp;gt;d_i&amp;lt;/math&amp;gt; sont des blocs de chiffre lexicographiquement inférieur à &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Chiffrement symétrique quantique ===&lt;br /&gt;
&lt;br /&gt;
==== Photons polarisés ====&lt;br /&gt;
&lt;br /&gt;
Les photons sont des particules qui composent la lumière. Ils sont composés d&#039;un champ électrique et d&#039;un champ magnétique. Une lumière non-polarisée se caractérise par une différence d&#039;orientation du champ électrique suivant les photons. Ainsi la polarisation consiste, grâce à un polarisateur, d&#039;obtenir des photons avec un champ électrique orienté de manière identique. Les filtres polarisants permettent d&#039;appliquer un angle d&#039;orientation sur les photons afin :&lt;br /&gt;
* de récupérer les photons polarisés parallèlement par rapport à cet angle&lt;br /&gt;
* d&#039;éliminer les photons polarisés perpendiculairement&lt;br /&gt;
* de récupérer les photons polarisés intermédiaires avec une probabilité de &amp;lt;math&amp;gt;\cos\left(\alpha\right)&amp;lt;/math&amp;gt; en les réinitialisant avec une polarisation égale à l&#039;angle d&#039;orientation du filtre.&lt;br /&gt;
&lt;br /&gt;
Du fait de la transformation de polarisation il est impossible de connaître l&#039;information sur les polarisations précédentes du photons.&lt;br /&gt;
&lt;br /&gt;
==== Distribution des clés ====&lt;br /&gt;
&lt;br /&gt;
Le chiffrement quantique offre un moyen sécurisé d’échanger des clés privées pour réaliser des chiffrements symétriques. Cette distribution s’appuie sur l’envoi de photons polarisés par fibre optique. Les personnes s&#039;échangeant les clés doivent avoir accès à un canal quantique et un canal classique. Le principe est le suivant :&lt;br /&gt;
* Alice envoie par le canal quantique une suite de photons polarisés aléatoirement.&lt;br /&gt;
* Bob applique un filtre de polarisation qui lui donne 1 chance sur 2 (et 1 chance sur 4 s&#039;il y a eu un espion) d&#039;appliquer le bon filtre et les renvoit à Alice.&lt;br /&gt;
* Alice et Bob s&#039;échangent par le canal classique leur choix des axes de polarisation éliminant ainsi les erreurs.&lt;br /&gt;
* Alice communique une partie de ses résultats.&lt;br /&gt;
* Maintenant que Bob connait les axes qu&#039;Alice a appliqué et les résultats il peut savoir si la communication a été écoutée ou non. Ceci étant grâce au théorème de non clonage où il est impossible de cloner des états quantiques inconnus.&lt;br /&gt;
&lt;br /&gt;
Ce principe permet de détecter facilement s&#039;il y a eu des intrusions durant la communication de la clé privée. En effet si un attaquant écoute il lui faut récupérer les photons envoyés par Alice mesurer la polarisation et renvoyer le photon à Bob. Pour mesurer la polarisation l&#039;attaquant doit appliquer, comme Bob, un filtre pour deviner la base qu&#039;Alice a envoyé. Ainsi cette intrusion a 1 chance sur 2 d&#039;introduire des incohérences dans les données d&#039;Alice et Bob en envoyant 1 fois sur 2 un mauvais photon. Par la suite Bob obtient donc 1 chance sur 4 d&#039;appliquer le bon filtre. Par analyses statistiques, Alice et Bob peuvent détecter de manière sure s&#039;il y a eu espionnage sur le canal quantique.&lt;br /&gt;
&lt;br /&gt;
==== Attaque de l&#039;homme du milieu ====&lt;br /&gt;
&lt;br /&gt;
Comme toute méthode d&#039;échange de clé privée, cette méthode reste vulnérable à une attaque de type &amp;quot;homme du milieu&amp;quot;. Il faut donc la combiner avec un mécanisme de certification afin de s&#039;assurer de l&#039;identité des protagonistes.&lt;br /&gt;
&lt;br /&gt;
== Ressources ==&lt;br /&gt;
&lt;br /&gt;
* Hamlin, N., &amp;amp; Webb, W. A. (2012). Representing Positive Integers as a Sum of Linear Recurrence Sequences, Fibonacci Quart. 50 (2012), no. 2, 99–105. Fibonacci Quart, 50(2), 99-105.&lt;br /&gt;
&lt;br /&gt;
* Moyer, N. T. (2010). A knapsack-type cryptographic system using algebraic number rings (Doctoral dissertation, Washington State University).&lt;/div&gt;</summary>
		<author><name>JulianaLeclaire</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8656</id>
		<title>Projets étudiants cryptographie et sécurité/Leclaire DeRoland Crypto Quantique</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8656"/>
		<updated>2016-03-17T10:38:16Z</updated>

		<summary type="html">&lt;p&gt;JulianaLeclaire : /* Attaque de l&amp;#039;homme du milieu */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Auteurs : Juliana Leclaire, Céline de Roland ===&lt;br /&gt;
&lt;br /&gt;
== La cryptographie et la cryptanalyse dans le contexte de l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
L&#039;informatique quantique se base sur la superposition de plusieurs états quantiques pour améliorer les capacités de calculs. &lt;br /&gt;
&lt;br /&gt;
Ce domaine nous amène à un vrai problème dans le sécurité de l&#039;internet. Car l&#039;informatique quantique, avec ses capacités de calculs va pouvoir casser les algorithmes de chiffrement asymétriques qui sont présents dans le Web. Les chiffrements asymétriques sont utilisés dans le connexions SSL/TLS, les paiements en ligne, etc.&lt;br /&gt;
&lt;br /&gt;
En partie pour ces raisons, il existe différents acteurs qui se penchent sur ce domaine. Notamment, la NSA, Google qui cherche à construire son propre ordinateur quantique.&lt;br /&gt;
Dans cette page, nous allons nous demander en quoi l&#039;informatique quantique peut changer le Web d&#039;aujourd&#039;hui et comment faire face à cette arrivée ?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Fonctionnement de l&#039;informatique quantique ===&lt;br /&gt;
&lt;br /&gt;
==== Qubit ====&lt;br /&gt;
&lt;br /&gt;
C&#039;est la plus petite unité de stockage de l&#039;information. Etant donné deux états de base &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;, un qubit non mesuré se trouve dans l&#039;état &amp;lt;math&amp;gt;\alpha \left|0\right\rangle + \beta \left|1\right\rangle&amp;lt;/math&amp;gt;, avec &amp;lt;math&amp;gt;|\alpha|^2 + |\beta|^2 = 1&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Lorsqu&#039;on mesure la valeur du qubit, on obtient soit &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; soit &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;|\alpha|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et  &amp;lt;math&amp;gt;|\beta|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
    &lt;br /&gt;
==== Théorème de non clonage ====&lt;br /&gt;
&lt;br /&gt;
Ce théorème, découvert en 1982 par Wootters, Zurek, et Dieks, consiste à dire qu&#039;il est impossible de recopier un qubit à l&#039;identique. La démonstration (par l&#039;absurde) repose sur le fait que pouvoir mettre le qubit B dans le même état que le qubit A implique que le qubit B soit déjà dans le même état que le qubit A.&lt;br /&gt;
On en déduit qu&#039;il est impossible de faire une opération de type copier/coller en informatique quantique.&lt;br /&gt;
&lt;br /&gt;
==== Téléportation quantique ====&lt;br /&gt;
&lt;br /&gt;
La téléportation quantique consiste à transférer l&#039;état du qubit A dans le qubit B. Il s&#039;agit donc cette fois d&#039;une opération de couper/coller.&lt;br /&gt;
L&#039;intrication quantique se produit lorsque deux qubits sont dépendants l&#039;un de l&#039;autre même s&#039;ils sont éloignés l&#039;un de l&#039;autre. Dans cet état, si on mesure l&#039;un des deux, alors la mesure du deuxième est déterminée.&lt;br /&gt;
Sans entrer dans la théorie physique sous jacente, nous pouvons dire qu&#039;un canal EPR permet de réaliser cette opération de couper/coller en transmettant une information entre deux ordinateurs quantiques.&lt;br /&gt;
&lt;br /&gt;
== Chiffrement à clé publique face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
=== Mise en danger de la sécurité du Web ===&lt;br /&gt;
&lt;br /&gt;
Les ordinateurs quantiques présentent une rapidité de calculs extrèmement plus rapide que les ordinateurs à base de sillicium. Ces ordinateurs auraient aucune difficulté pour casser les codes de sécurité actuels reposant principalement sur un chiffrement à clé publique. Par définition le chiffrement à clé publique utilise une clé publique pour le chiffrement et une clé privée pour le décodage en se basant sur des grands nombres. Cependant ces grands nombres peuvent être vite retrouvés par des ordinateurs quantiques.&lt;br /&gt;
&lt;br /&gt;
=== Exemple de chiffrement asymétrique: RSA ===&lt;br /&gt;
&lt;br /&gt;
Ce chiffrement est couramment utilisé dans la sécurité du Web. &lt;br /&gt;
RSA repose sur la génération de grands nombres premiers, d&#039;un chiffrement avec une clé publique et d&#039;un déchiffrement avec une clé privée. &lt;br /&gt;
&lt;br /&gt;
* Initialisation : &lt;br /&gt;
** module &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; (grand nombre entier codé sur 2048 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;p, q&amp;lt;/math&amp;gt; : nombres premiers de même taille (codés sur 1024 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;\phi(N) = (p-1) * (q - 1)&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd(e, \phi(N)) = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
** Choisir &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;ed \equiv 1 [\phi(N)]&amp;lt;/math&amp;gt; et donc &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; est l&#039;inverse modulaire de &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; avec &amp;lt;math&amp;gt;d = e^-1 [\phi(N)]&amp;lt;/math&amp;gt;&lt;br /&gt;
** Clé publique : &amp;lt;math&amp;gt;pk(n, e)&amp;lt;/math&amp;gt;, Clé privée : &amp;lt;math&amp;gt;sk(d, p, q)&amp;lt;/math&amp;gt;&lt;br /&gt;
* Chiffrement : &amp;lt;math&amp;gt;c = m^e [N]&amp;lt;/math&amp;gt;&lt;br /&gt;
* Déchiffrement : &amp;lt;math&amp;gt;m = c^d [N]&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Exemple : &amp;lt;math&amp;gt;N=15&amp;lt;/math&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* Je choisis &amp;lt;math&amp;gt;x=7&amp;lt;/math&amp;gt;&lt;br /&gt;
* En calculant successivement les valeurs de &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; on trouve &amp;lt;math&amp;gt;7^{4} \equiv 1 [15]&amp;lt;/math&amp;gt;.&lt;br /&gt;
* &amp;lt;math&amp;gt;r=4&amp;lt;/math&amp;gt; est pair&lt;br /&gt;
* &amp;lt;math&amp;gt;pgcd(x^{\frac{r}{2}}+1,15) = 5&amp;lt;/math&amp;gt;. Donc &amp;lt;math&amp;gt;P = 5&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;Q = pgcd(x^{\frac{r}{2}}-1,15) = 3&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La sécurité de RSA repose sur la difficulté à factoriser des grands nombres en nombres premiers. En effet avec &amp;lt;math&amp;gt;(N, e)&amp;lt;/math&amp;gt; il faudrait pouvoir retrouver &amp;lt;math&amp;gt;(d, p, q)&amp;lt;/math&amp;gt; où &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt; correspondant à un cassage total. D&#039;après le théorème de factorisation unique tout entier &amp;lt;math&amp;gt;n \ge 2&amp;lt;/math&amp;gt; admet une factorisation unique en produit de puissances de nombres entiers. Des algorithmes de factorisation ont été trouvés pour différentes tailles de module $N$ mais pour pallier à ces attaques on augmente la longueur du module. De nos jours pour sécuriser le chiffrement il faut utiliser des modules strictement supérieur à 2048 bits. Cependant avec l&#039;informatique quantique il ne suffira plus d&#039;augmenter la taille du module car la puissance de calcul permettra de casser le chiffrement, peu importe la taille du module.&lt;br /&gt;
&lt;br /&gt;
== Chiffrement à clé privée face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
=== Mise en danger de la sécurité ===&lt;br /&gt;
&lt;br /&gt;
Si les ordinateurs quantiques présentent une rapidité de calcul permettant d&#039;effectuer des factorisations impossibles pour un ordinateur classique, il nous semble logique qu&#039;ils soient également performants pour effectuer des attaques de type force brute sur des messages chiffrés par une clé privée qui aurait été transmise par un moyen plus sûr que RSA.&lt;br /&gt;
 &lt;br /&gt;
Un ordinateur quantique pourrait réaliser le déchiffrement avec toutes les clés possibles en parallèle. Ce qui permettrait de cryptanalyser le message en une seule opération. Le principe se base sur la superposition quantique. On superposerait toutes les clés possibles et on déchiffrerait. On obtiendrait alors une superposition de résultats. Le point le plus difficile est de trouver le résultat correct à partir de la superposition obtenue. En effet, le principe selon lequel mesurer une valeur modifie cette valeur fait qu&#039;en observant une superposition, on obtient un seul état aléatoire. Une solution à ce problème a été trouvé par Lov Grover en $O(\sqrt{n})$ étapes.&lt;br /&gt;
&lt;br /&gt;
== Résistances aux attaques quantiques ==&lt;br /&gt;
&lt;br /&gt;
=== Chiffrement asyémétrique ===&lt;br /&gt;
&lt;br /&gt;
Depuis 2006, une conférence internationnale se produit chaque année nommée &amp;quot;Post Quantum Cryptography&amp;quot; dans l&#039;intention de trouver des algorithmes résistants aux ordinateurs quantiques. Nathan Hamlin et William Webb, des mathématiciens, ont présenté récemment un algorithme de chiffrement asymétrique possiblement capable de faire face aux attaques quantiques. Cet algorithme part de l&#039;ancien chiffrement de Merkle-Hellman qui se base sur le problème du sac à dos nommé &amp;quot;Knapsack code&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
==== Problème du sac-à-dos ====&lt;br /&gt;
&lt;br /&gt;
Etant donné un sac avec une capacité &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; et plusieurs objets de poids différents. Le problème du sac-à-dos consiste à trouver la suite d&#039;objets qui entre dans le sac et qui maximise sa capacité. En partant d&#039;un n-uplet &amp;lt;math&amp;gt;\left(a_1, a_2, ..., a_n\right) \in N^n&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;S \in N&amp;lt;/math&amp;gt;, il faut trouver un n-uplet binaire &amp;lt;math&amp;gt;\left(x_1, x_2, ..., x_n\right) \in {0,1}^n&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;S = \sum_{i=1}^{n} \left(a_{i}*x_{i}\right) &amp;lt;/math&amp;gt;. La somme &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; des poids des objets choisi ne doit pas dépasser la capacité du sac à dos. Pour résoudre ce problème il n&#039;existe pas d&#039;algorithme avec une compléxité polynomial.&lt;br /&gt;
&lt;br /&gt;
==== Chiffrement de Merkle-Hellman ====&lt;br /&gt;
&lt;br /&gt;
Cet algorithme de chiffrement à clé publique repose sur la complexité algorithmique du problème de sac-à-dos et utilise des suites de poids super-croissante pour le secret et non super-croissante pour la clé publique. Si les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt; n&#039;ont pas de propriétés particulières, la recherche du message codé en binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt; est un problème difficile. Il n&#039;existe pas d&#039;algorithme polynomial pour le résoudre. Pour pouvoir retrouver facilement ce n-uplet une propriété super-croissante est utilisé sur les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt;. Un n-uplet b est super-croissant si &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\forall i \in [2,n] b_{i} &amp;gt; \sum_{j=1}^{i-1} {b_{j}}&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ainsi en utilisant un algorithme glouton nous pouvons retrouver le n-uplet binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt;. L&#039;objet le plus lourd est dans le sac si le poids du sac est supérieur au poids de celui-ci. La propriété super-croissante assure que la somme des poids des autres objets sera toujours inférieur au poids de l&#039;objet le plus lourd. L&#039;algorithme est le suivant :&lt;br /&gt;
&lt;br /&gt;
  Pour i de n à 1 faire&lt;br /&gt;
    Si &amp;lt;math&amp;gt;b_{i} \le S&amp;lt;/math&amp;gt; alors&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i}  = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
    Sinon&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i} = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
    &amp;lt;math&amp;gt;S = S - x_{i} * b_{i}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Par exemple en prenant la suite des puissances de 2 comme suite super-croissante  avec : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = \left\{ 1,4,8 \right\}, b = \left\{ 1,2,4,8 \right\}, S = 13 \left(1+4+8\right), n = 4&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 4 : 8 \le 13 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_4 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 3 : 4 \le 5 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_3 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 2 : 2 \le 1 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    non donc &amp;lt;math&amp;gt;x_2 = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 1 : 1 \le 1 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_1 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  =&amp;gt; &amp;lt;math&amp;gt;m = \left\{ 1,0,1,1 \right\}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour chiffrer un n-uplet binaire &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;, l&#039;idée de Merkle et Hellman est de &amp;quot;tordre&amp;quot; les &amp;lt;math&amp;gt;b_{i}&amp;lt;/math&amp;gt; pour obtenir un n-uplet qui n&#039;est plus super-croissant. On choisit un nombre &amp;lt;math&amp;gt;u &amp;gt; \sum_{i=1}^{n} {b_{i}}&amp;lt;/math&amp;gt;, un entier &amp;lt;math&amp;gt;v \in N&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd\left(u,v\right) = 1&amp;lt;/math&amp;gt;. Ce qui donne &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; inversible dans &amp;lt;math&amp;gt;Z/uZ&amp;lt;/math&amp;gt;. On prend &amp;lt;math&amp;gt;w = v^{-1} \in Z/uZ&amp;lt;/math&amp;gt;. On calcule ensuite le n-uplet &amp;lt;math&amp;gt;a = \left(a_1, ..., a_n\right)&amp;lt;/math&amp;gt; tel que pour tout &amp;lt;math&amp;gt;i \in [1,n]&amp;lt;/math&amp;gt; on a : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = a * b_i (mod u)&amp;lt;/math&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
Le n-uplet &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; détermine la clé public tandis que &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt; sont gardés secrets. &amp;lt;br/&amp;gt;&lt;br /&gt;
Pour envoyer le message m à Bob, Alice va, à partir de l&#039;écriture de m en binaire, calculer la somme : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;c = \sum_{i=1}^{n} {m_i * a_i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
qu&#039;elle va envoyer à Bob. Bob pour déchiffrer va devoir procéder à plusieurs étapes : &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt;c = \sum_{i=1}^{n} {m_i * a_i}&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * a_i * w} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * a_i * v^{-1}} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * v * b_i * v^{-1}} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * b_i} [u]&amp;lt;/math&amp;gt;                      =&amp;gt; Comme &amp;lt;math&amp;gt; \sum_{i=1}^{n} {m_i * b_i} &amp;lt; \sum_{i=1}^{n} {b_i}&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt; u &amp;gt; \sum_{i=1}^{n} {b_i}&amp;lt;/math&amp;gt; le modulo &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; peut s&#039;enlever&lt;br /&gt;
* &amp;lt;math&amp;gt;= \sum_{i=1}^{n} {m_i * b_i}&amp;lt;/math&amp;gt;                           =&amp;gt; Comme &amp;lt;math&amp;gt;b_i&amp;lt;/math&amp;gt; est super-croissant Bob peut facilement retrouver &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Nouveau chiffrement de Hamlin-Webb ====&lt;br /&gt;
&lt;br /&gt;
Le chiffrement de Merkle et Hellman a été abandonné à la suite des découvertes de Shamir qui a découvert une attaque permettant de retrouver le message secret en utilisant un algorithme de la réduction des réseaux. Nathan Hamlin et William Webb reprennent cet algorithme en le renforçant par un changement de représentation des entiers. Ils ont prouvé q&#039;un entier pouvait être représenté de manière unique avec des suites récurrentes. Le secret &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; n&#039;est alors plus modélisé en binaire mais en une suite récurrente plus complexe à craquer.&lt;br /&gt;
&lt;br /&gt;
===== Représentation du message =====&lt;br /&gt;
La représentation d&#039;un nombre &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; en une suite récurrente &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt; se fait en utilisant une suite augmentée &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; de &amp;lt;math&amp;gt;1 \le j \le 10&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;0 \le i \le n&amp;lt;/math&amp;gt; donné par : &amp;lt;br/&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{1,i}= u_i&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{2,i}= u_i + u_{i-2}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{3,i}= u_i + u_{i-2} + u_{i-3}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{4,i}= u_i + u_{i-2} + 2u_{i-3}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{5,i}= u_i + u_{i-2} +2u_{i-3} + u_{i-4}&amp;lt;/math&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{10,i}= u_i + u_{i-2} +2u_{i-3} + 6u_{i-4}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le suite &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; correspond au blocs de chiffre autorisés. Dans l&#039;exemple &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; se calcule dans des groupes de taille 10 mais ce nombre peut varier. La suite &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; se calcule en utilisant un algorithme glouton sur &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; où l&#039;on remplace la somme en une expression dans la suite &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
Le message secret &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; est représenté par : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; M = \sum_{i=0}^{n-1} {d_i * u_i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
avec &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt; calculé grâce à &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
où les &amp;lt;math&amp;gt;d_i&amp;lt;/math&amp;gt; sont des blocs de chiffre lexicographiquement inférieur à &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Chiffrement symétrique quantique ===&lt;br /&gt;
&lt;br /&gt;
==== Photons polarisés ====&lt;br /&gt;
&lt;br /&gt;
Les photons sont des particules qui composent la lumière. Ils sont composés d&#039;un champ électrique et d&#039;un champ magnétique. Une lumière non-polarisée se caractérise par une différence d&#039;orientation du champ électrique suivant les photons. Ainsi la polarisation consiste, grâce à un polarisateur, d&#039;obtenir des photons avec un champ électrique orienté de manière identique. Les filtres polarisants permettent d&#039;appliquer un angle d&#039;orientation sur les photons afin :&lt;br /&gt;
* de récupérer les photons polarisés parallèlement par rapport à cet angle&lt;br /&gt;
* d&#039;éliminer les photons polarisés perpendiculairement&lt;br /&gt;
* de récupérer les photons polarisés intermédiaires avec une probabilité de &amp;lt;math&amp;gt;\cos\left(\alpha\right)&amp;lt;/math&amp;gt; en les réinitialisant avec une polarisation égale à l&#039;angle d&#039;orientation du filtre.&lt;br /&gt;
&lt;br /&gt;
Du fait de la transformation de polarisation il est impossible de connaître l&#039;information sur les polarisations précédentes du photons.&lt;br /&gt;
&lt;br /&gt;
==== Distribution des clés ====&lt;br /&gt;
&lt;br /&gt;
Le chiffrement quantique offre un moyen sécurisé d’échanger des clés privées pour réaliser des chiffrements symétriques. Cette distribution s’appuie sur l’envoi de photons polarisés par fibre optique. Les personnes s&#039;échangeant les clés doivent avoir accès à un canal quantique et un canal classique. Le principe est le suivant :&lt;br /&gt;
* Alice envoie par le canal quantique une suite de photons polarisés aléatoirement.&lt;br /&gt;
* Bob applique un filtre de polarisation qui lui donne 1 chance sur 2 (et 1 chance sur 4 s&#039;il y a eu un espion) d&#039;appliquer le bon filtre et les renvoit à Alice.&lt;br /&gt;
* Alice et Bob s&#039;échangent par le canal classique leur choix des axes de polarisation éliminant ainsi les erreurs.&lt;br /&gt;
* Alice communique une partie de ses résultats.&lt;br /&gt;
* Maintenant que Bob connait les axes qu&#039;Alice a appliqué et les résultats il peut savoir si la communication a été écoutée ou non. Ceci étant grâce au théorème de non clonage où il est impossible de cloner des états quantiques inconnus.&lt;br /&gt;
&lt;br /&gt;
Ce principe permet de détecter facilement s&#039;il y a eu des intrusions durant la communication de la clé privée. En effet si un attaquant écoute il lui faut récupérer les photons envoyés par Alice mesurer la polarisation et renvoyer le photon à Bob. Pour mesurer la polarisation l&#039;attaquant doit appliquer, comme Bob, un filtre pour deviner la base qu&#039;Alice a envoyé. Ainsi cette intrusion a 1 chance sur 2 d&#039;introduire des incohérences dans les données d&#039;Alice et Bob en envoyant 1 fois sur 2 un mauvais photon. Par la suite Bob obtient donc 1 chance sur 4 d&#039;appliquer le bon filtre. Par analyses statistiques, Alice et Bob peuvent détecter de manière sure s&#039;il y a eu espionnage sur le canal quantique.&lt;br /&gt;
&lt;br /&gt;
==== Attaque de l&#039;homme du milieu ====&lt;br /&gt;
&lt;br /&gt;
Comme toute méthode d&#039;échange de clé privée, cette méthode reste vulnérable à une attaque de type &amp;quot;homme du milieu&amp;quot;. Il faut donc la combiner avec un mécanisme de certification afin de s&#039;assurer de l&#039;identité des protagonistes.&lt;br /&gt;
&lt;br /&gt;
== Ressources ==&lt;/div&gt;</summary>
		<author><name>JulianaLeclaire</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8655</id>
		<title>Projets étudiants cryptographie et sécurité/Leclaire DeRoland Crypto Quantique</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8655"/>
		<updated>2016-03-17T10:37:33Z</updated>

		<summary type="html">&lt;p&gt;JulianaLeclaire : /* Nouveau chiffrement de Hamlin-Webb */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Auteurs : Juliana Leclaire, Céline de Roland ===&lt;br /&gt;
&lt;br /&gt;
== La cryptographie et la cryptanalyse dans le contexte de l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
L&#039;informatique quantique se base sur la superposition de plusieurs états quantiques pour améliorer les capacités de calculs. &lt;br /&gt;
&lt;br /&gt;
Ce domaine nous amène à un vrai problème dans le sécurité de l&#039;internet. Car l&#039;informatique quantique, avec ses capacités de calculs va pouvoir casser les algorithmes de chiffrement asymétriques qui sont présents dans le Web. Les chiffrements asymétriques sont utilisés dans le connexions SSL/TLS, les paiements en ligne, etc.&lt;br /&gt;
&lt;br /&gt;
En partie pour ces raisons, il existe différents acteurs qui se penchent sur ce domaine. Notamment, la NSA, Google qui cherche à construire son propre ordinateur quantique.&lt;br /&gt;
Dans cette page, nous allons nous demander en quoi l&#039;informatique quantique peut changer le Web d&#039;aujourd&#039;hui et comment faire face à cette arrivée ?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Fonctionnement de l&#039;informatique quantique ===&lt;br /&gt;
&lt;br /&gt;
==== Qubit ====&lt;br /&gt;
&lt;br /&gt;
C&#039;est la plus petite unité de stockage de l&#039;information. Etant donné deux états de base &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;, un qubit non mesuré se trouve dans l&#039;état &amp;lt;math&amp;gt;\alpha \left|0\right\rangle + \beta \left|1\right\rangle&amp;lt;/math&amp;gt;, avec &amp;lt;math&amp;gt;|\alpha|^2 + |\beta|^2 = 1&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Lorsqu&#039;on mesure la valeur du qubit, on obtient soit &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; soit &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;|\alpha|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et  &amp;lt;math&amp;gt;|\beta|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
    &lt;br /&gt;
==== Théorème de non clonage ====&lt;br /&gt;
&lt;br /&gt;
Ce théorème, découvert en 1982 par Wootters, Zurek, et Dieks, consiste à dire qu&#039;il est impossible de recopier un qubit à l&#039;identique. La démonstration (par l&#039;absurde) repose sur le fait que pouvoir mettre le qubit B dans le même état que le qubit A implique que le qubit B soit déjà dans le même état que le qubit A.&lt;br /&gt;
On en déduit qu&#039;il est impossible de faire une opération de type copier/coller en informatique quantique.&lt;br /&gt;
&lt;br /&gt;
==== Téléportation quantique ====&lt;br /&gt;
&lt;br /&gt;
La téléportation quantique consiste à transférer l&#039;état du qubit A dans le qubit B. Il s&#039;agit donc cette fois d&#039;une opération de couper/coller.&lt;br /&gt;
L&#039;intrication quantique se produit lorsque deux qubits sont dépendants l&#039;un de l&#039;autre même s&#039;ils sont éloignés l&#039;un de l&#039;autre. Dans cet état, si on mesure l&#039;un des deux, alors la mesure du deuxième est déterminée.&lt;br /&gt;
Sans entrer dans la théorie physique sous jacente, nous pouvons dire qu&#039;un canal EPR permet de réaliser cette opération de couper/coller en transmettant une information entre deux ordinateurs quantiques.&lt;br /&gt;
&lt;br /&gt;
== Chiffrement à clé publique face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
=== Mise en danger de la sécurité du Web ===&lt;br /&gt;
&lt;br /&gt;
Les ordinateurs quantiques présentent une rapidité de calculs extrèmement plus rapide que les ordinateurs à base de sillicium. Ces ordinateurs auraient aucune difficulté pour casser les codes de sécurité actuels reposant principalement sur un chiffrement à clé publique. Par définition le chiffrement à clé publique utilise une clé publique pour le chiffrement et une clé privée pour le décodage en se basant sur des grands nombres. Cependant ces grands nombres peuvent être vite retrouvés par des ordinateurs quantiques.&lt;br /&gt;
&lt;br /&gt;
=== Exemple de chiffrement asymétrique: RSA ===&lt;br /&gt;
&lt;br /&gt;
Ce chiffrement est couramment utilisé dans la sécurité du Web. &lt;br /&gt;
RSA repose sur la génération de grands nombres premiers, d&#039;un chiffrement avec une clé publique et d&#039;un déchiffrement avec une clé privée. &lt;br /&gt;
&lt;br /&gt;
* Initialisation : &lt;br /&gt;
** module &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; (grand nombre entier codé sur 2048 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;p, q&amp;lt;/math&amp;gt; : nombres premiers de même taille (codés sur 1024 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;\phi(N) = (p-1) * (q - 1)&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd(e, \phi(N)) = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
** Choisir &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;ed \equiv 1 [\phi(N)]&amp;lt;/math&amp;gt; et donc &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; est l&#039;inverse modulaire de &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; avec &amp;lt;math&amp;gt;d = e^-1 [\phi(N)]&amp;lt;/math&amp;gt;&lt;br /&gt;
** Clé publique : &amp;lt;math&amp;gt;pk(n, e)&amp;lt;/math&amp;gt;, Clé privée : &amp;lt;math&amp;gt;sk(d, p, q)&amp;lt;/math&amp;gt;&lt;br /&gt;
* Chiffrement : &amp;lt;math&amp;gt;c = m^e [N]&amp;lt;/math&amp;gt;&lt;br /&gt;
* Déchiffrement : &amp;lt;math&amp;gt;m = c^d [N]&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Exemple : &amp;lt;math&amp;gt;N=15&amp;lt;/math&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* Je choisis &amp;lt;math&amp;gt;x=7&amp;lt;/math&amp;gt;&lt;br /&gt;
* En calculant successivement les valeurs de &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; on trouve &amp;lt;math&amp;gt;7^{4} \equiv 1 [15]&amp;lt;/math&amp;gt;.&lt;br /&gt;
* &amp;lt;math&amp;gt;r=4&amp;lt;/math&amp;gt; est pair&lt;br /&gt;
* &amp;lt;math&amp;gt;pgcd(x^{\frac{r}{2}}+1,15) = 5&amp;lt;/math&amp;gt;. Donc &amp;lt;math&amp;gt;P = 5&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;Q = pgcd(x^{\frac{r}{2}}-1,15) = 3&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La sécurité de RSA repose sur la difficulté à factoriser des grands nombres en nombres premiers. En effet avec &amp;lt;math&amp;gt;(N, e)&amp;lt;/math&amp;gt; il faudrait pouvoir retrouver &amp;lt;math&amp;gt;(d, p, q)&amp;lt;/math&amp;gt; où &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt; correspondant à un cassage total. D&#039;après le théorème de factorisation unique tout entier &amp;lt;math&amp;gt;n \ge 2&amp;lt;/math&amp;gt; admet une factorisation unique en produit de puissances de nombres entiers. Des algorithmes de factorisation ont été trouvés pour différentes tailles de module $N$ mais pour pallier à ces attaques on augmente la longueur du module. De nos jours pour sécuriser le chiffrement il faut utiliser des modules strictement supérieur à 2048 bits. Cependant avec l&#039;informatique quantique il ne suffira plus d&#039;augmenter la taille du module car la puissance de calcul permettra de casser le chiffrement, peu importe la taille du module.&lt;br /&gt;
&lt;br /&gt;
== Chiffrement à clé privée face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
=== Mise en danger de la sécurité ===&lt;br /&gt;
&lt;br /&gt;
Si les ordinateurs quantiques présentent une rapidité de calcul permettant d&#039;effectuer des factorisations impossibles pour un ordinateur classique, il nous semble logique qu&#039;ils soient également performants pour effectuer des attaques de type force brute sur des messages chiffrés par une clé privée qui aurait été transmise par un moyen plus sûr que RSA.&lt;br /&gt;
 &lt;br /&gt;
Un ordinateur quantique pourrait réaliser le déchiffrement avec toutes les clés possibles en parallèle. Ce qui permettrait de cryptanalyser le message en une seule opération. Le principe se base sur la superposition quantique. On superposerait toutes les clés possibles et on déchiffrerait. On obtiendrait alors une superposition de résultats. Le point le plus difficile est de trouver le résultat correct à partir de la superposition obtenue. En effet, le principe selon lequel mesurer une valeur modifie cette valeur fait qu&#039;en observant une superposition, on obtient un seul état aléatoire. Une solution à ce problème a été trouvé par Lov Grover en $O(\sqrt{n})$ étapes.&lt;br /&gt;
&lt;br /&gt;
== Résistances aux attaques quantiques ==&lt;br /&gt;
&lt;br /&gt;
=== Chiffrement asyémétrique ===&lt;br /&gt;
&lt;br /&gt;
Depuis 2006, une conférence internationnale se produit chaque année nommée &amp;quot;Post Quantum Cryptography&amp;quot; dans l&#039;intention de trouver des algorithmes résistants aux ordinateurs quantiques. Nathan Hamlin et William Webb, des mathématiciens, ont présenté récemment un algorithme de chiffrement asymétrique possiblement capable de faire face aux attaques quantiques. Cet algorithme part de l&#039;ancien chiffrement de Merkle-Hellman qui se base sur le problème du sac à dos nommé &amp;quot;Knapsack code&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
==== Problème du sac-à-dos ====&lt;br /&gt;
&lt;br /&gt;
Etant donné un sac avec une capacité &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; et plusieurs objets de poids différents. Le problème du sac-à-dos consiste à trouver la suite d&#039;objets qui entre dans le sac et qui maximise sa capacité. En partant d&#039;un n-uplet &amp;lt;math&amp;gt;\left(a_1, a_2, ..., a_n\right) \in N^n&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;S \in N&amp;lt;/math&amp;gt;, il faut trouver un n-uplet binaire &amp;lt;math&amp;gt;\left(x_1, x_2, ..., x_n\right) \in {0,1}^n&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;S = \sum_{i=1}^{n} \left(a_{i}*x_{i}\right) &amp;lt;/math&amp;gt;. La somme &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; des poids des objets choisi ne doit pas dépasser la capacité du sac à dos. Pour résoudre ce problème il n&#039;existe pas d&#039;algorithme avec une compléxité polynomial.&lt;br /&gt;
&lt;br /&gt;
==== Chiffrement de Merkle-Hellman ====&lt;br /&gt;
&lt;br /&gt;
Cet algorithme de chiffrement à clé publique repose sur la complexité algorithmique du problème de sac-à-dos et utilise des suites de poids super-croissante pour le secret et non super-croissante pour la clé publique. Si les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt; n&#039;ont pas de propriétés particulières, la recherche du message codé en binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt; est un problème difficile. Il n&#039;existe pas d&#039;algorithme polynomial pour le résoudre. Pour pouvoir retrouver facilement ce n-uplet une propriété super-croissante est utilisé sur les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt;. Un n-uplet b est super-croissant si &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\forall i \in [2,n] b_{i} &amp;gt; \sum_{j=1}^{i-1} {b_{j}}&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ainsi en utilisant un algorithme glouton nous pouvons retrouver le n-uplet binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt;. L&#039;objet le plus lourd est dans le sac si le poids du sac est supérieur au poids de celui-ci. La propriété super-croissante assure que la somme des poids des autres objets sera toujours inférieur au poids de l&#039;objet le plus lourd. L&#039;algorithme est le suivant :&lt;br /&gt;
&lt;br /&gt;
  Pour i de n à 1 faire&lt;br /&gt;
    Si &amp;lt;math&amp;gt;b_{i} \le S&amp;lt;/math&amp;gt; alors&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i}  = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
    Sinon&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i} = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
    &amp;lt;math&amp;gt;S = S - x_{i} * b_{i}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Par exemple en prenant la suite des puissances de 2 comme suite super-croissante  avec : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = \left\{ 1,4,8 \right\}, b = \left\{ 1,2,4,8 \right\}, S = 13 \left(1+4+8\right), n = 4&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 4 : 8 \le 13 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_4 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 3 : 4 \le 5 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_3 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 2 : 2 \le 1 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    non donc &amp;lt;math&amp;gt;x_2 = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 1 : 1 \le 1 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_1 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  =&amp;gt; &amp;lt;math&amp;gt;m = \left\{ 1,0,1,1 \right\}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour chiffrer un n-uplet binaire &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;, l&#039;idée de Merkle et Hellman est de &amp;quot;tordre&amp;quot; les &amp;lt;math&amp;gt;b_{i}&amp;lt;/math&amp;gt; pour obtenir un n-uplet qui n&#039;est plus super-croissant. On choisit un nombre &amp;lt;math&amp;gt;u &amp;gt; \sum_{i=1}^{n} {b_{i}}&amp;lt;/math&amp;gt;, un entier &amp;lt;math&amp;gt;v \in N&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd\left(u,v\right) = 1&amp;lt;/math&amp;gt;. Ce qui donne &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; inversible dans &amp;lt;math&amp;gt;Z/uZ&amp;lt;/math&amp;gt;. On prend &amp;lt;math&amp;gt;w = v^{-1} \in Z/uZ&amp;lt;/math&amp;gt;. On calcule ensuite le n-uplet &amp;lt;math&amp;gt;a = \left(a_1, ..., a_n\right)&amp;lt;/math&amp;gt; tel que pour tout &amp;lt;math&amp;gt;i \in [1,n]&amp;lt;/math&amp;gt; on a : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = a * b_i (mod u)&amp;lt;/math&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
Le n-uplet &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; détermine la clé public tandis que &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt; sont gardés secrets. &amp;lt;br/&amp;gt;&lt;br /&gt;
Pour envoyer le message m à Bob, Alice va, à partir de l&#039;écriture de m en binaire, calculer la somme : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;c = \sum_{i=1}^{n} {m_i * a_i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
qu&#039;elle va envoyer à Bob. Bob pour déchiffrer va devoir procéder à plusieurs étapes : &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt;c = \sum_{i=1}^{n} {m_i * a_i}&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * a_i * w} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * a_i * v^{-1}} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * v * b_i * v^{-1}} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * b_i} [u]&amp;lt;/math&amp;gt;                      =&amp;gt; Comme &amp;lt;math&amp;gt; \sum_{i=1}^{n} {m_i * b_i} &amp;lt; \sum_{i=1}^{n} {b_i}&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt; u &amp;gt; \sum_{i=1}^{n} {b_i}&amp;lt;/math&amp;gt; le modulo &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; peut s&#039;enlever&lt;br /&gt;
* &amp;lt;math&amp;gt;= \sum_{i=1}^{n} {m_i * b_i}&amp;lt;/math&amp;gt;                           =&amp;gt; Comme &amp;lt;math&amp;gt;b_i&amp;lt;/math&amp;gt; est super-croissant Bob peut facilement retrouver &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Nouveau chiffrement de Hamlin-Webb ====&lt;br /&gt;
&lt;br /&gt;
Le chiffrement de Merkle et Hellman a été abandonné à la suite des découvertes de Shamir qui a découvert une attaque permettant de retrouver le message secret en utilisant un algorithme de la réduction des réseaux. Nathan Hamlin et William Webb reprennent cet algorithme en le renforçant par un changement de représentation des entiers. Ils ont prouvé q&#039;un entier pouvait être représenté de manière unique avec des suites récurrentes. Le secret &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; n&#039;est alors plus modélisé en binaire mais en une suite récurrente plus complexe à craquer.&lt;br /&gt;
&lt;br /&gt;
===== Représentation du message =====&lt;br /&gt;
La représentation d&#039;un nombre &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; en une suite récurrente &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt; se fait en utilisant une suite augmentée &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; de &amp;lt;math&amp;gt;1 \le j \le 10&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;0 \le i \le n&amp;lt;/math&amp;gt; donné par : &amp;lt;br/&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{1,i}= u_i&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{2,i}= u_i + u_{i-2}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{3,i}= u_i + u_{i-2} + u_{i-3}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{4,i}= u_i + u_{i-2} + 2u_{i-3}&amp;lt;/math&amp;gt;&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{5,i}= u_i + u_{i-2} +2u_{i-3} + u_{i-4}&amp;lt;/math&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
  &amp;lt;math&amp;gt;v_{10,i}= u_i + u_{i-2} +2u_{i-3} + 6u_{i-4}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le suite &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; correspond au blocs de chiffre autorisés. Dans l&#039;exemple &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; se calcule dans des groupes de taille 10 mais ce nombre peut varier. La suite &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; se calcule en utilisant un algorithme glouton sur &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; où l&#039;on remplace la somme en une expression dans la suite &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
Le message secret &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; est représenté par : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; M = \sum_{i=0}^{n-1} {d_i * u_i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
avec &amp;lt;math&amp;gt;u_i&amp;lt;/math&amp;gt; calculé grâce à &amp;lt;math&amp;gt;v_{j,i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
où les &amp;lt;math&amp;gt;d_i&amp;lt;/math&amp;gt; sont des blocs de chiffre lexicographiquement inférieur à &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Chiffrement symétrique quantique ===&lt;br /&gt;
&lt;br /&gt;
==== Photons polarisés ====&lt;br /&gt;
&lt;br /&gt;
Les photons sont des particules qui composent la lumière. Ils sont composés d&#039;un champ électrique et d&#039;un champ magnétique. Une lumière non-polarisée se caractérise par une différence d&#039;orientation du champ électrique suivant les photons. Ainsi la polarisation consiste, grâce à un polarisateur, d&#039;obtenir des photons avec un champ électrique orienté de manière identique. Les filtres polarisants permettent d&#039;appliquer un angle d&#039;orientation sur les photons afin :&lt;br /&gt;
* de récupérer les photons polarisés parallèlement par rapport à cet angle&lt;br /&gt;
* d&#039;éliminer les photons polarisés perpendiculairement&lt;br /&gt;
* de récupérer les photons polarisés intermédiaires avec une probabilité de &amp;lt;math&amp;gt;\cos\left(\alpha\right)&amp;lt;/math&amp;gt; en les réinitialisant avec une polarisation égale à l&#039;angle d&#039;orientation du filtre.&lt;br /&gt;
&lt;br /&gt;
Du fait de la transformation de polarisation il est impossible de connaître l&#039;information sur les polarisations précédentes du photons.&lt;br /&gt;
&lt;br /&gt;
==== Distribution des clés ====&lt;br /&gt;
&lt;br /&gt;
Le chiffrement quantique offre un moyen sécurisé d’échanger des clés privées pour réaliser des chiffrements symétriques. Cette distribution s’appuie sur l’envoi de photons polarisés par fibre optique. Les personnes s&#039;échangeant les clés doivent avoir accès à un canal quantique et un canal classique. Le principe est le suivant :&lt;br /&gt;
* Alice envoie par le canal quantique une suite de photons polarisés aléatoirement.&lt;br /&gt;
* Bob applique un filtre de polarisation qui lui donne 1 chance sur 2 (et 1 chance sur 4 s&#039;il y a eu un espion) d&#039;appliquer le bon filtre et les renvoit à Alice.&lt;br /&gt;
* Alice et Bob s&#039;échangent par le canal classique leur choix des axes de polarisation éliminant ainsi les erreurs.&lt;br /&gt;
* Alice communique une partie de ses résultats.&lt;br /&gt;
* Maintenant que Bob connait les axes qu&#039;Alice a appliqué et les résultats il peut savoir si la communication a été écoutée ou non. Ceci étant grâce au théorème de non clonage où il est impossible de cloner des états quantiques inconnus.&lt;br /&gt;
&lt;br /&gt;
Ce principe permet de détecter facilement s&#039;il y a eu des intrusions durant la communication de la clé privée. En effet si un attaquant écoute il lui faut récupérer les photons envoyés par Alice mesurer la polarisation et renvoyer le photon à Bob. Pour mesurer la polarisation l&#039;attaquant doit appliquer, comme Bob, un filtre pour deviner la base qu&#039;Alice a envoyé. Ainsi cette intrusion a 1 chance sur 2 d&#039;introduire des incohérences dans les données d&#039;Alice et Bob en envoyant 1 fois sur 2 un mauvais photon. Par la suite Bob obtient donc 1 chance sur 4 d&#039;appliquer le bon filtre. Par analyses statistiques, Alice et Bob peuvent détecter de manière sure s&#039;il y a eu espionnage sur le canal quantique.&lt;br /&gt;
&lt;br /&gt;
==== Attaque de l&#039;homme du milieu ====&lt;br /&gt;
&lt;br /&gt;
Comme toute méthode d&#039;échange de clé privée, cette méthode reste vulnérable à une attaque de type &amp;quot;homme du milieu&amp;quot;. Il faut donc la combiner avec un mécanisme de certification afin de s&#039;assurer de l&#039;identité des protagonistes.&lt;/div&gt;</summary>
		<author><name>JulianaLeclaire</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8654</id>
		<title>Projets étudiants cryptographie et sécurité/Leclaire DeRoland Crypto Quantique</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8654"/>
		<updated>2016-03-17T09:52:10Z</updated>

		<summary type="html">&lt;p&gt;JulianaLeclaire : /* Nouveau chiffrement de Hamlin-Webb */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Auteurs : Juliana Leclaire, Céline de Roland ===&lt;br /&gt;
&lt;br /&gt;
== La cryptographie et la cryptanalyse dans le contexte de l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
L&#039;informatique quantique se base sur la superposition de plusieurs états quantiques pour améliorer les capacités de calculs. &lt;br /&gt;
&lt;br /&gt;
Ce domaine nous amène à un vrai problème dans le sécurité de l&#039;internet. Car l&#039;informatique quantique, avec ses capacités de calculs va pouvoir casser les algorithmes de chiffrement asymétriques qui sont présents dans le Web. Les chiffrements asymétriques sont utilisés dans le connexions SSL/TLS, les paiements en ligne, etc.&lt;br /&gt;
&lt;br /&gt;
En partie pour ces raisons, il existe différents acteurs qui se penchent sur ce domaine. Notamment, la NSA, Google qui cherche à construire son propre ordinateur quantique.&lt;br /&gt;
Dans cette page, nous allons nous demander en quoi l&#039;informatique quantique peut changer le Web d&#039;aujourd&#039;hui et comment faire face à cette arrivée ?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Fonctionnement de l&#039;informatique quantique ===&lt;br /&gt;
&lt;br /&gt;
==== Qubit ====&lt;br /&gt;
&lt;br /&gt;
C&#039;est la plus petite unité de stockage de l&#039;information. Etant donné deux états de base &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;, un qubit non mesuré se trouve dans l&#039;état &amp;lt;math&amp;gt;\alpha \left|0\right\rangle + \beta \left|1\right\rangle&amp;lt;/math&amp;gt;, avec &amp;lt;math&amp;gt;|\alpha|^2 + |\beta|^2 = 1&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Lorsqu&#039;on mesure la valeur du qubit, on obtient soit &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; soit &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;|\alpha|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et  &amp;lt;math&amp;gt;|\beta|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
    &lt;br /&gt;
==== Théorème de non clonage ====&lt;br /&gt;
&lt;br /&gt;
Ce théorème, découvert en 1982 par Wootters, Zurek, et Dieks, consiste à dire qu&#039;il est impossible de recopier un qubit à l&#039;identique. La démonstration (par l&#039;absurde) repose sur le fait que pouvoir mettre le qubit B dans le même état que le qubit A implique que le qubit B soit déjà dans le même état que le qubit A.&lt;br /&gt;
On en déduit qu&#039;il est impossible de faire une opération de type copier/coller en informatique quantique.&lt;br /&gt;
&lt;br /&gt;
==== Téléportation quantique ====&lt;br /&gt;
&lt;br /&gt;
La téléportation quantique consiste à transférer l&#039;état du qubit A dans le qubit B. Il s&#039;agit donc cette fois d&#039;une opération de couper/coller.&lt;br /&gt;
L&#039;intrication quantique se produit lorsque deux qubits sont dépendants l&#039;un de l&#039;autre même s&#039;ils sont éloignés l&#039;un de l&#039;autre. Dans cet état, si on mesure l&#039;un des deux, alors la mesure du deuxième est déterminée.&lt;br /&gt;
Sans entrer dans la théorie physique sous jacente, nous pouvons dire qu&#039;un canal EPR permet de réaliser cette opération de couper/coller en transmettant une information entre deux ordinateurs quantiques.&lt;br /&gt;
&lt;br /&gt;
== Chiffrement à clé publique face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
=== Mise en danger de la sécurité du Web ===&lt;br /&gt;
&lt;br /&gt;
Les ordinateurs quantiques présentent une rapidité de calculs extrèmement plus rapide que les ordinateurs à base de sillicium. Ces ordinateurs auraient aucune difficulté pour casser les codes de sécurité actuels reposant principalement sur un chiffrement à clé publique. Par définition le chiffrement à clé publique utilise une clé publique pour le chiffrement et une clé privée pour le décodage en se basant sur des grands nombres. Cependant ces grands nombres peuvent être vite retrouvés par des ordinateurs quantiques.&lt;br /&gt;
&lt;br /&gt;
=== Exemple de chiffrement asymétrique: RSA ===&lt;br /&gt;
&lt;br /&gt;
Ce chiffrement est couramment utilisé dans la sécurité du Web. &lt;br /&gt;
RSA repose sur la génération de grands nombres premiers, d&#039;un chiffrement avec une clé publique et d&#039;un déchiffrement avec une clé privée. &lt;br /&gt;
&lt;br /&gt;
* Initialisation : &lt;br /&gt;
** module &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; (grand nombre entier codé sur 2048 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;p, q&amp;lt;/math&amp;gt; : nombres premiers de même taille (codés sur 1024 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;\phi(N) = (p-1) * (q - 1)&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd(e, \phi(N)) = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
** Choisir &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;ed \equiv 1 [\phi(N)]&amp;lt;/math&amp;gt; et donc &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; est l&#039;inverse modulaire de &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; avec &amp;lt;math&amp;gt;d = e^-1 [\phi(N)]&amp;lt;/math&amp;gt;&lt;br /&gt;
** Clé publique : &amp;lt;math&amp;gt;pk(n, e)&amp;lt;/math&amp;gt;, Clé privée : &amp;lt;math&amp;gt;sk(d, p, q)&amp;lt;/math&amp;gt;&lt;br /&gt;
* Chiffrement : &amp;lt;math&amp;gt;c = m^e [N]&amp;lt;/math&amp;gt;&lt;br /&gt;
* Déchiffrement : &amp;lt;math&amp;gt;m = c^d [N]&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Exemple : &amp;lt;math&amp;gt;N=15&amp;lt;/math&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* Je choisis &amp;lt;math&amp;gt;x=7&amp;lt;/math&amp;gt;&lt;br /&gt;
* En calculant successivement les valeurs de &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; on trouve &amp;lt;math&amp;gt;7^{4} \equiv 1 [15]&amp;lt;/math&amp;gt;.&lt;br /&gt;
* &amp;lt;math&amp;gt;r=4&amp;lt;/math&amp;gt; est pair&lt;br /&gt;
* &amp;lt;math&amp;gt;pgcd(x^{\frac{r}{2}}+1,15) = 5&amp;lt;/math&amp;gt;. Donc &amp;lt;math&amp;gt;P = 5&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;Q = pgcd(x^{\frac{r}{2}}-1,15) = 3&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La sécurité de RSA repose sur la difficulté à factoriser des grands nombres en nombres premiers. En effet avec &amp;lt;math&amp;gt;(N, e)&amp;lt;/math&amp;gt; il faudrait pouvoir retrouver &amp;lt;math&amp;gt;(d, p, q)&amp;lt;/math&amp;gt; où &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt; correspondant à un cassage total. D&#039;après le théorème de factorisation unique tout entier &amp;lt;math&amp;gt;n \ge 2&amp;lt;/math&amp;gt; admet une factorisation unique en produit de puissances de nombres entiers. Des algorithmes de factorisation ont été trouvés pour différentes tailles de module $N$ mais pour pallier à ces attaques on augmente la longueur du module. De nos jours pour sécuriser le chiffrement il faut utiliser des modules strictement supérieur à 2048 bits. Cependant avec l&#039;informatique quantique il ne suffira plus d&#039;augmenter la taille du module car la puissance de calcul permettra de casser le chiffrement, peu importe la taille du module.&lt;br /&gt;
&lt;br /&gt;
== Chiffrement à clé privée face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
=== Mise en danger de la sécurité ===&lt;br /&gt;
&lt;br /&gt;
Si les ordinateurs quantiques présentent une rapidité de calcul permettant d&#039;effectuer des factorisations impossibles pour un ordinateur classique, il nous semble logique qu&#039;ils soient également performants pour effectuer des attaques de type force brute sur des messages chiffrés par une clé privée qui aurait été transmise par un moyen plus sûr que RSA.&lt;br /&gt;
 &lt;br /&gt;
Un ordinateur quantique pourrait réaliser le déchiffrement avec toutes les clés possibles en parallèle. Ce qui permettrait de cryptanalyser le message en une seule opération. Le principe se base sur la superposition quantique. On superposerait toutes les clés possibles et on déchiffrerait. On obtiendrait alors une superposition de résultats. Le point le plus difficile est de trouver le résultat correct à partir de la superposition obtenue. En effet, le principe selon lequel mesurer une valeur modifie cette valeur fait qu&#039;en observant une superposition, on obtient un seul état aléatoire. Une solution à ce problème a été trouvé par Lov Grover en $O(\sqrt{n})$ étapes.&lt;br /&gt;
&lt;br /&gt;
== Résistances aux attaques quantiques ==&lt;br /&gt;
&lt;br /&gt;
=== Chiffrement asyémétrique ===&lt;br /&gt;
&lt;br /&gt;
Depuis 2006, une conférence internationnale se produit chaque année nommée &amp;quot;Post Quantum Cryptography&amp;quot; dans l&#039;intention de trouver des algorithmes résistants aux ordinateurs quantiques. Nathan Hamlin et William Webb, des mathématiciens, ont présenté récemment un algorithme de chiffrement asymétrique possiblement capable de faire face aux attaques quantiques. Cet algorithme part de l&#039;ancien chiffrement de Merkle-Hellman qui se base sur le problème du sac à dos nommé &amp;quot;Knapsack code&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
==== Problème du sac-à-dos ====&lt;br /&gt;
&lt;br /&gt;
Etant donné un sac avec une capacité &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; et plusieurs objets de poids différents. Le problème du sac-à-dos consiste à trouver la suite d&#039;objets qui entre dans le sac et qui maximise sa capacité. En partant d&#039;un n-uplet &amp;lt;math&amp;gt;\left(a_1, a_2, ..., a_n\right) \in N^n&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;S \in N&amp;lt;/math&amp;gt;, il faut trouver un n-uplet binaire &amp;lt;math&amp;gt;\left(x_1, x_2, ..., x_n\right) \in {0,1}^n&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;S = \sum_{i=1}^{n} \left(a_{i}*x_{i}\right) &amp;lt;/math&amp;gt;. La somme &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; des poids des objets choisi ne doit pas dépasser la capacité du sac à dos. Pour résoudre ce problème il n&#039;existe pas d&#039;algorithme avec une compléxité polynomial.&lt;br /&gt;
&lt;br /&gt;
==== Chiffrement de Merkle-Hellman ====&lt;br /&gt;
&lt;br /&gt;
Cet algorithme de chiffrement à clé publique repose sur la complexité algorithmique du problème de sac-à-dos et utilise des suites de poids super-croissante pour le secret et non super-croissante pour la clé publique. Si les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt; n&#039;ont pas de propriétés particulières, la recherche du message codé en binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt; est un problème difficile. Il n&#039;existe pas d&#039;algorithme polynomial pour le résoudre. Pour pouvoir retrouver facilement ce n-uplet une propriété super-croissante est utilisé sur les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt;. Un n-uplet b est super-croissant si &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\forall i \in [2,n] b_{i} &amp;gt; \sum_{j=1}^{i-1} {b_{j}}&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ainsi en utilisant un algorithme glouton nous pouvons retrouver le n-uplet binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt;. L&#039;objet le plus lourd est dans le sac si le poids du sac est supérieur au poids de celui-ci. La propriété super-croissante assure que la somme des poids des autres objets sera toujours inférieur au poids de l&#039;objet le plus lourd. L&#039;algorithme est le suivant :&lt;br /&gt;
&lt;br /&gt;
  Pour i de n à 1 faire&lt;br /&gt;
    Si &amp;lt;math&amp;gt;b_{i} \le S&amp;lt;/math&amp;gt; alors&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i}  = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
    Sinon&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i} = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
    &amp;lt;math&amp;gt;S = S - x_{i} * b_{i}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Par exemple en prenant la suite des puissances de 2 comme suite super-croissante  avec : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = \left\{ 1,4,8 \right\}, b = \left\{ 1,2,4,8 \right\}, S = 13 \left(1+4+8\right), n = 4&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 4 : 8 \le 13 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_4 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 3 : 4 \le 5 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_3 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 2 : 2 \le 1 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    non donc &amp;lt;math&amp;gt;x_2 = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 1 : 1 \le 1 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_1 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  =&amp;gt; &amp;lt;math&amp;gt;m = \left\{ 1,0,1,1 \right\}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour chiffrer un n-uplet binaire &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;, l&#039;idée de Merkle et Hellman est de &amp;quot;tordre&amp;quot; les &amp;lt;math&amp;gt;b_{i}&amp;lt;/math&amp;gt; pour obtenir un n-uplet qui n&#039;est plus super-croissant. On choisit un nombre &amp;lt;math&amp;gt;u &amp;gt; \sum_{i=1}^{n} {b_{i}}&amp;lt;/math&amp;gt;, un entier &amp;lt;math&amp;gt;v \in N&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd\left(u,v\right) = 1&amp;lt;/math&amp;gt;. Ce qui donne &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; inversible dans &amp;lt;math&amp;gt;Z/uZ&amp;lt;/math&amp;gt;. On prend &amp;lt;math&amp;gt;w = v^{-1} \in Z/uZ&amp;lt;/math&amp;gt;. On calcule ensuite le n-uplet &amp;lt;math&amp;gt;a = \left(a_1, ..., a_n\right)&amp;lt;/math&amp;gt; tel que pour tout &amp;lt;math&amp;gt;i \in [1,n]&amp;lt;/math&amp;gt; on a : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = a * b_i (mod u)&amp;lt;/math&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
Le n-uplet &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; détermine la clé public tandis que &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt; sont gardés secrets. &amp;lt;br/&amp;gt;&lt;br /&gt;
Pour envoyer le message m à Bob, Alice va, à partir de l&#039;écriture de m en binaire, calculer la somme : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;c = \sum_{i=1}^{n} {m_i * a_i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
qu&#039;elle va envoyer à Bob. Bob pour déchiffrer va devoir procéder à plusieurs étapes : &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt;c = \sum_{i=1}^{n} {m_i * a_i}&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * a_i * w} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * a_i * v^{-1}} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * v * b_i * v^{-1}} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * b_i} [u]&amp;lt;/math&amp;gt;                      =&amp;gt; Comme &amp;lt;math&amp;gt; \sum_{i=1}^{n} {m_i * b_i} &amp;lt; \sum_{i=1}^{n} {b_i}&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt; u &amp;gt; \sum_{i=1}^{n} {b_i}&amp;lt;/math&amp;gt; le modulo &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; peut s&#039;enlever&lt;br /&gt;
* &amp;lt;math&amp;gt;= \sum_{i=1}^{n} {m_i * b_i}&amp;lt;/math&amp;gt;                           =&amp;gt; Comme &amp;lt;math&amp;gt;b_i&amp;lt;/math&amp;gt; est super-croissant Bob peut facilement retrouver &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Nouveau chiffrement de Hamlin-Webb ====&lt;br /&gt;
&lt;br /&gt;
Le chiffrement de Merkle et Hellman a été abandonné à la suite des découvertes de Shamir qui a découvert une attaque permettant de retrouver le message secret en utilisant un algorithme de la réduction des réseaux. Nathan Hamlin et William Webb reprennent cet algorithme en le renforçant par un changement de représentation des entiers. Ils ont prouvé q&#039;un entier pouvait être représenté de manière unique avec des suites récurrentes. Le secret &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; n&#039;est alors plus modélisé en binaire mais en une suite récurrente plus complexe à craquer.&lt;br /&gt;
&lt;br /&gt;
===== Créer le message =====&lt;br /&gt;
&lt;br /&gt;
=== Chiffrement symétrique quantique ===&lt;br /&gt;
&lt;br /&gt;
==== Photons polarisés ====&lt;br /&gt;
&lt;br /&gt;
Les photons sont des particules qui composent la lumière. Ils sont composés d&#039;un champ électrique et d&#039;un champ magnétique. Une lumière non-polarisée se caractérise par une différence d&#039;orientation du champ électrique suivant les photons. Ainsi la polarisation consiste, grâce à un polarisateur, d&#039;obtenir des photons avec un champ électrique orienté de manière identique. Les filtres polarisants permettent d&#039;appliquer un angle d&#039;orientation sur les photons afin :&lt;br /&gt;
* de récupérer les photons polarisés parallèlement par rapport à cet angle&lt;br /&gt;
* d&#039;éliminer les photons polarisés perpendiculairement&lt;br /&gt;
* de récupérer les photons polarisés intermédiaires avec une probabilité de &amp;lt;math&amp;gt;\cos\left(\alpha\right)&amp;lt;/math&amp;gt; en les réinitialisant avec une polarisation égale à l&#039;angle d&#039;orientation du filtre.&lt;br /&gt;
&lt;br /&gt;
Du fait de la transformation de polarisation il est impossible de connaître l&#039;information sur les polarisations précédentes du photons.&lt;br /&gt;
&lt;br /&gt;
==== Distribution des clés ====&lt;br /&gt;
&lt;br /&gt;
Le chiffrement quantique offre un moyen sécurisé d’échanger des clés privées pour réaliser des chiffrements symétriques. Cette distribution s’appuie sur l’envoi de photons polarisés par fibre optique. Les personnes s&#039;échangeant les clés doivent avoir accès à un canal quantique et un canal classique. Le principe est le suivant :&lt;br /&gt;
* Alice envoie par le canal quantique une suite de photons polarisés aléatoirement.&lt;br /&gt;
* Bob applique un filtre de polarisation qui lui donne 1 chance sur 2 (et 1 chance sur 4 s&#039;il y a eu un espion) d&#039;appliquer le bon filtre et les renvoit à Alice.&lt;br /&gt;
* Alice et Bob s&#039;échangent par le canal classique leur choix des axes de polarisation éliminant ainsi les erreurs.&lt;br /&gt;
* Alice communique une partie de ses résultats.&lt;br /&gt;
* Maintenant que Bob connait les axes qu&#039;Alice a appliqué et les résultats il peut savoir si la communication a été écoutée ou non. Ceci étant grâce au théorème de non clonage où il est impossible de cloner des états quantiques inconnus.&lt;br /&gt;
&lt;br /&gt;
Ce principe permet de détecter facilement s&#039;il y a eu des intrusions durant la communication de la clé privée. En effet si un attaquant écoute il lui faut récupérer les photons envoyés par Alice mesurer la polarisation et renvoyer le photon à Bob. Pour mesurer la polarisation l&#039;attaquant doit appliquer, comme Bob, un filtre pour deviner la base qu&#039;Alice a envoyé. Ainsi cette intrusion a 1 chance sur 2 d&#039;introduire des incohérences dans les données d&#039;Alice et Bob en envoyant 1 fois sur 2 un mauvais photon. Par la suite Bob obtient donc 1 chance sur 4 d&#039;appliquer le bon filtre. Par analyses statistiques, Alice et Bob peuvent détecter de manière sure s&#039;il y a eu espionnage sur le canal quantique.&lt;br /&gt;
&lt;br /&gt;
==== Attaque de l&#039;homme du milieu ====&lt;br /&gt;
&lt;br /&gt;
Comme toute méthode d&#039;échange de clé privée, cette méthode reste vulnérable à une attaque de type &amp;quot;homme du milieu&amp;quot;. Il faut donc la combiner avec un mécanisme de certification afin de s&#039;assurer de l&#039;identité des protagonistes.&lt;/div&gt;</summary>
		<author><name>JulianaLeclaire</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8653</id>
		<title>Projets étudiants cryptographie et sécurité/Leclaire DeRoland Crypto Quantique</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8653"/>
		<updated>2016-03-17T09:48:19Z</updated>

		<summary type="html">&lt;p&gt;JulianaLeclaire : /* Résistances aux attaques quantiques */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Auteurs : Juliana Leclaire, Céline de Roland ===&lt;br /&gt;
&lt;br /&gt;
== La cryptographie et la cryptanalyse dans le contexte de l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
L&#039;informatique quantique se base sur la superposition de plusieurs états quantiques pour améliorer les capacités de calculs. &lt;br /&gt;
&lt;br /&gt;
Ce domaine nous amène à un vrai problème dans le sécurité de l&#039;internet. Car l&#039;informatique quantique, avec ses capacités de calculs va pouvoir casser les algorithmes de chiffrement asymétriques qui sont présents dans le Web. Les chiffrements asymétriques sont utilisés dans le connexions SSL/TLS, les paiements en ligne, etc.&lt;br /&gt;
&lt;br /&gt;
En partie pour ces raisons, il existe différents acteurs qui se penchent sur ce domaine. Notamment, la NSA, Google qui cherche à construire son propre ordinateur quantique.&lt;br /&gt;
Dans cette page, nous allons nous demander en quoi l&#039;informatique quantique peut changer le Web d&#039;aujourd&#039;hui et comment faire face à cette arrivée ?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Fonctionnement de l&#039;informatique quantique ===&lt;br /&gt;
&lt;br /&gt;
==== Qubit ====&lt;br /&gt;
&lt;br /&gt;
C&#039;est la plus petite unité de stockage de l&#039;information. Etant donné deux états de base &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;, un qubit non mesuré se trouve dans l&#039;état &amp;lt;math&amp;gt;\alpha \left|0\right\rangle + \beta \left|1\right\rangle&amp;lt;/math&amp;gt;, avec &amp;lt;math&amp;gt;|\alpha|^2 + |\beta|^2 = 1&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Lorsqu&#039;on mesure la valeur du qubit, on obtient soit &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; soit &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;|\alpha|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et  &amp;lt;math&amp;gt;|\beta|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
    &lt;br /&gt;
==== Théorème de non clonage ====&lt;br /&gt;
&lt;br /&gt;
Ce théorème, découvert en 1982 par Wootters, Zurek, et Dieks, consiste à dire qu&#039;il est impossible de recopier un qubit à l&#039;identique. La démonstration (par l&#039;absurde) repose sur le fait que pouvoir mettre le qubit B dans le même état que le qubit A implique que le qubit B soit déjà dans le même état que le qubit A.&lt;br /&gt;
On en déduit qu&#039;il est impossible de faire une opération de type copier/coller en informatique quantique.&lt;br /&gt;
&lt;br /&gt;
==== Téléportation quantique ====&lt;br /&gt;
&lt;br /&gt;
La téléportation quantique consiste à transférer l&#039;état du qubit A dans le qubit B. Il s&#039;agit donc cette fois d&#039;une opération de couper/coller.&lt;br /&gt;
L&#039;intrication quantique se produit lorsque deux qubits sont dépendants l&#039;un de l&#039;autre même s&#039;ils sont éloignés l&#039;un de l&#039;autre. Dans cet état, si on mesure l&#039;un des deux, alors la mesure du deuxième est déterminée.&lt;br /&gt;
Sans entrer dans la théorie physique sous jacente, nous pouvons dire qu&#039;un canal EPR permet de réaliser cette opération de couper/coller en transmettant une information entre deux ordinateurs quantiques.&lt;br /&gt;
&lt;br /&gt;
== Chiffrement à clé publique face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
=== Mise en danger de la sécurité du Web ===&lt;br /&gt;
&lt;br /&gt;
Les ordinateurs quantiques présentent une rapidité de calculs extrèmement plus rapide que les ordinateurs à base de sillicium. Ces ordinateurs auraient aucune difficulté pour casser les codes de sécurité actuels reposant principalement sur un chiffrement à clé publique. Par définition le chiffrement à clé publique utilise une clé publique pour le chiffrement et une clé privée pour le décodage en se basant sur des grands nombres. Cependant ces grands nombres peuvent être vite retrouvés par des ordinateurs quantiques.&lt;br /&gt;
&lt;br /&gt;
=== Exemple de chiffrement asymétrique: RSA ===&lt;br /&gt;
&lt;br /&gt;
Ce chiffrement est couramment utilisé dans la sécurité du Web. &lt;br /&gt;
RSA repose sur la génération de grands nombres premiers, d&#039;un chiffrement avec une clé publique et d&#039;un déchiffrement avec une clé privée. &lt;br /&gt;
&lt;br /&gt;
* Initialisation : &lt;br /&gt;
** module &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; (grand nombre entier codé sur 2048 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;p, q&amp;lt;/math&amp;gt; : nombres premiers de même taille (codés sur 1024 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;\phi(N) = (p-1) * (q - 1)&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd(e, \phi(N)) = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
** Choisir &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;ed \equiv 1 [\phi(N)]&amp;lt;/math&amp;gt; et donc &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; est l&#039;inverse modulaire de &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; avec &amp;lt;math&amp;gt;d = e^-1 [\phi(N)]&amp;lt;/math&amp;gt;&lt;br /&gt;
** Clé publique : &amp;lt;math&amp;gt;pk(n, e)&amp;lt;/math&amp;gt;, Clé privée : &amp;lt;math&amp;gt;sk(d, p, q)&amp;lt;/math&amp;gt;&lt;br /&gt;
* Chiffrement : &amp;lt;math&amp;gt;c = m^e [N]&amp;lt;/math&amp;gt;&lt;br /&gt;
* Déchiffrement : &amp;lt;math&amp;gt;m = c^d [N]&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Exemple : &amp;lt;math&amp;gt;N=15&amp;lt;/math&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* Je choisis &amp;lt;math&amp;gt;x=7&amp;lt;/math&amp;gt;&lt;br /&gt;
* En calculant successivement les valeurs de &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; on trouve &amp;lt;math&amp;gt;7^{4} \equiv 1 [15]&amp;lt;/math&amp;gt;.&lt;br /&gt;
* &amp;lt;math&amp;gt;r=4&amp;lt;/math&amp;gt; est pair&lt;br /&gt;
* &amp;lt;math&amp;gt;pgcd(x^{\frac{r}{2}}+1,15) = 5&amp;lt;/math&amp;gt;. Donc &amp;lt;math&amp;gt;P = 5&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;Q = pgcd(x^{\frac{r}{2}}-1,15) = 3&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La sécurité de RSA repose sur la difficulté à factoriser des grands nombres en nombres premiers. En effet avec &amp;lt;math&amp;gt;(N, e)&amp;lt;/math&amp;gt; il faudrait pouvoir retrouver &amp;lt;math&amp;gt;(d, p, q)&amp;lt;/math&amp;gt; où &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt; correspondant à un cassage total. D&#039;après le théorème de factorisation unique tout entier &amp;lt;math&amp;gt;n \ge 2&amp;lt;/math&amp;gt; admet une factorisation unique en produit de puissances de nombres entiers. Des algorithmes de factorisation ont été trouvés pour différentes tailles de module $N$ mais pour pallier à ces attaques on augmente la longueur du module. De nos jours pour sécuriser le chiffrement il faut utiliser des modules strictement supérieur à 2048 bits. Cependant avec l&#039;informatique quantique il ne suffira plus d&#039;augmenter la taille du module car la puissance de calcul permettra de casser le chiffrement, peu importe la taille du module.&lt;br /&gt;
&lt;br /&gt;
== Chiffrement à clé privée face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
=== Mise en danger de la sécurité ===&lt;br /&gt;
&lt;br /&gt;
Si les ordinateurs quantiques présentent une rapidité de calcul permettant d&#039;effectuer des factorisations impossibles pour un ordinateur classique, il nous semble logique qu&#039;ils soient également performants pour effectuer des attaques de type force brute sur des messages chiffrés par une clé privée qui aurait été transmise par un moyen plus sûr que RSA.&lt;br /&gt;
 &lt;br /&gt;
Un ordinateur quantique pourrait réaliser le déchiffrement avec toutes les clés possibles en parallèle. Ce qui permettrait de cryptanalyser le message en une seule opération. Le principe se base sur la superposition quantique. On superposerait toutes les clés possibles et on déchiffrerait. On obtiendrait alors une superposition de résultats. Le point le plus difficile est de trouver le résultat correct à partir de la superposition obtenue. En effet, le principe selon lequel mesurer une valeur modifie cette valeur fait qu&#039;en observant une superposition, on obtient un seul état aléatoire. Une solution à ce problème a été trouvé par Lov Grover en $O(\sqrt{n})$ étapes.&lt;br /&gt;
&lt;br /&gt;
== Résistances aux attaques quantiques ==&lt;br /&gt;
&lt;br /&gt;
=== Chiffrement asyémétrique ===&lt;br /&gt;
&lt;br /&gt;
Depuis 2006, une conférence internationnale se produit chaque année nommée &amp;quot;Post Quantum Cryptography&amp;quot; dans l&#039;intention de trouver des algorithmes résistants aux ordinateurs quantiques. Nathan Hamlin et William Webb, des mathématiciens, ont présenté récemment un algorithme de chiffrement asymétrique possiblement capable de faire face aux attaques quantiques. Cet algorithme part de l&#039;ancien chiffrement de Merkle-Hellman qui se base sur le problème du sac à dos nommé &amp;quot;Knapsack code&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
==== Problème du sac-à-dos ====&lt;br /&gt;
&lt;br /&gt;
Etant donné un sac avec une capacité &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; et plusieurs objets de poids différents. Le problème du sac-à-dos consiste à trouver la suite d&#039;objets qui entre dans le sac et qui maximise sa capacité. En partant d&#039;un n-uplet &amp;lt;math&amp;gt;\left(a_1, a_2, ..., a_n\right) \in N^n&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;S \in N&amp;lt;/math&amp;gt;, il faut trouver un n-uplet binaire &amp;lt;math&amp;gt;\left(x_1, x_2, ..., x_n\right) \in {0,1}^n&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;S = \sum_{i=1}^{n} \left(a_{i}*x_{i}\right) &amp;lt;/math&amp;gt;. La somme &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; des poids des objets choisi ne doit pas dépasser la capacité du sac à dos. Pour résoudre ce problème il n&#039;existe pas d&#039;algorithme avec une compléxité polynomial.&lt;br /&gt;
&lt;br /&gt;
==== Chiffrement de Merkle-Hellman ====&lt;br /&gt;
&lt;br /&gt;
Cet algorithme de chiffrement à clé publique repose sur la complexité algorithmique du problème de sac-à-dos et utilise des suites de poids super-croissante pour le secret et non super-croissante pour la clé publique. Si les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt; n&#039;ont pas de propriétés particulières, la recherche du message codé en binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt; est un problème difficile. Il n&#039;existe pas d&#039;algorithme polynomial pour le résoudre. Pour pouvoir retrouver facilement ce n-uplet une propriété super-croissante est utilisé sur les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt;. Un n-uplet b est super-croissant si &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\forall i \in [2,n] b_{i} &amp;gt; \sum_{j=1}^{i-1} {b_{j}}&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ainsi en utilisant un algorithme glouton nous pouvons retrouver le n-uplet binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt;. L&#039;objet le plus lourd est dans le sac si le poids du sac est supérieur au poids de celui-ci. La propriété super-croissante assure que la somme des poids des autres objets sera toujours inférieur au poids de l&#039;objet le plus lourd. L&#039;algorithme est le suivant :&lt;br /&gt;
&lt;br /&gt;
  Pour i de n à 1 faire&lt;br /&gt;
    Si &amp;lt;math&amp;gt;b_{i} \le S&amp;lt;/math&amp;gt; alors&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i}  = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
    Sinon&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i} = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
    &amp;lt;math&amp;gt;S = S - x_{i} * b_{i}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Par exemple en prenant la suite des puissances de 2 comme suite super-croissante  avec : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = \left\{ 1,4,8 \right\}, b = \left\{ 1,2,4,8 \right\}, S = 13 \left(1+4+8\right), n = 4&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 4 : 8 \le 13 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_4 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 3 : 4 \le 5 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_3 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 2 : 2 \le 1 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    non donc &amp;lt;math&amp;gt;x_2 = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 1 : 1 \le 1 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_1 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  =&amp;gt; &amp;lt;math&amp;gt;m = \left\{ 1,0,1,1 \right\}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour chiffrer un n-uplet binaire &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;, l&#039;idée de Merkle et Hellman est de &amp;quot;tordre&amp;quot; les &amp;lt;math&amp;gt;b_{i}&amp;lt;/math&amp;gt; pour obtenir un n-uplet qui n&#039;est plus super-croissant. On choisit un nombre &amp;lt;math&amp;gt;u &amp;gt; \sum_{i=1}^{n} {b_{i}}&amp;lt;/math&amp;gt;, un entier &amp;lt;math&amp;gt;v \in N&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd\left(u,v\right) = 1&amp;lt;/math&amp;gt;. Ce qui donne &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; inversible dans &amp;lt;math&amp;gt;Z/uZ&amp;lt;/math&amp;gt;. On prend &amp;lt;math&amp;gt;w = v^{-1} \in Z/uZ&amp;lt;/math&amp;gt;. On calcule ensuite le n-uplet &amp;lt;math&amp;gt;a = \left(a_1, ..., a_n\right)&amp;lt;/math&amp;gt; tel que pour tout &amp;lt;math&amp;gt;i \in [1,n]&amp;lt;/math&amp;gt; on a : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = a * b_i (mod u)&amp;lt;/math&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
Le n-uplet &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; détermine la clé public tandis que &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt; sont gardés secrets. &amp;lt;br/&amp;gt;&lt;br /&gt;
Pour envoyer le message m à Bob, Alice va, à partir de l&#039;écriture de m en binaire, calculer la somme : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;c = \sum_{i=1}^{n} {m_i * a_i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
qu&#039;elle va envoyer à Bob. Bob pour déchiffrer va devoir procéder à plusieurs étapes : &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt;c = \sum_{i=1}^{n} {m_i * a_i}&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * a_i * w} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * a_i * v^{-1}} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * v * b_i * v^{-1}} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * b_i} [u]&amp;lt;/math&amp;gt;                      =&amp;gt; Comme &amp;lt;math&amp;gt; \sum_{i=1}^{n} {m_i * b_i} &amp;lt; \sum_{i=1}^{n} {b_i}&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt; u &amp;gt; \sum_{i=1}^{n} {b_i}&amp;lt;/math&amp;gt; le modulo &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; peut s&#039;enlever&lt;br /&gt;
* &amp;lt;math&amp;gt;= \sum_{i=1}^{n} {m_i * b_i}&amp;lt;/math&amp;gt;                           =&amp;gt; Comme &amp;lt;math&amp;gt;b_i&amp;lt;/math&amp;gt; est super-croissant Bob peut facilement retrouver &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Nouveau chiffrement de Hamlin-Webb ====&lt;br /&gt;
&lt;br /&gt;
Le chiffrement de Merkle et Hellman a été abandonné à la suite des découvertes de Shamir qui a découvert une attaque permettant de retrouver le message secret en utilisant un algorithme de la réduction des réseaux. Nathan Hamlin et William Webb reprennent cet algorithme en le renforçant par un changement de représentation des entiers. Ils ont prouvé q&#039;un entier pouvait être représenté de manière unique avec des suites récurrentes. Le secret &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; n&#039;est alors plus modélisé en binaire mais en une suite récurrente plus complexe à craquer.&lt;br /&gt;
&lt;br /&gt;
=== Chiffrement symétrique quantique ===&lt;br /&gt;
&lt;br /&gt;
==== Photons polarisés ====&lt;br /&gt;
&lt;br /&gt;
Les photons sont des particules qui composent la lumière. Ils sont composés d&#039;un champ électrique et d&#039;un champ magnétique. Une lumière non-polarisée se caractérise par une différence d&#039;orientation du champ électrique suivant les photons. Ainsi la polarisation consiste, grâce à un polarisateur, d&#039;obtenir des photons avec un champ électrique orienté de manière identique. Les filtres polarisants permettent d&#039;appliquer un angle d&#039;orientation sur les photons afin :&lt;br /&gt;
* de récupérer les photons polarisés parallèlement par rapport à cet angle&lt;br /&gt;
* d&#039;éliminer les photons polarisés perpendiculairement&lt;br /&gt;
* de récupérer les photons polarisés intermédiaires avec une probabilité de &amp;lt;math&amp;gt;\cos\left(\alpha\right)&amp;lt;/math&amp;gt; en les réinitialisant avec une polarisation égale à l&#039;angle d&#039;orientation du filtre.&lt;br /&gt;
&lt;br /&gt;
Du fait de la transformation de polarisation il est impossible de connaître l&#039;information sur les polarisations précédentes du photons.&lt;br /&gt;
&lt;br /&gt;
==== Distribution des clés ====&lt;br /&gt;
&lt;br /&gt;
Le chiffrement quantique offre un moyen sécurisé d’échanger des clés privées pour réaliser des chiffrements symétriques. Cette distribution s’appuie sur l’envoi de photons polarisés par fibre optique. Les personnes s&#039;échangeant les clés doivent avoir accès à un canal quantique et un canal classique. Le principe est le suivant :&lt;br /&gt;
* Alice envoie par le canal quantique une suite de photons polarisés aléatoirement.&lt;br /&gt;
* Bob applique un filtre de polarisation qui lui donne 1 chance sur 2 (et 1 chance sur 4 s&#039;il y a eu un espion) d&#039;appliquer le bon filtre et les renvoit à Alice.&lt;br /&gt;
* Alice et Bob s&#039;échangent par le canal classique leur choix des axes de polarisation éliminant ainsi les erreurs.&lt;br /&gt;
* Alice communique une partie de ses résultats.&lt;br /&gt;
* Maintenant que Bob connait les axes qu&#039;Alice a appliqué et les résultats il peut savoir si la communication a été écoutée ou non. Ceci étant grâce au théorème de non clonage où il est impossible de cloner des états quantiques inconnus.&lt;br /&gt;
&lt;br /&gt;
Ce principe permet de détecter facilement s&#039;il y a eu des intrusions durant la communication de la clé privée. En effet si un attaquant écoute il lui faut récupérer les photons envoyés par Alice mesurer la polarisation et renvoyer le photon à Bob. Pour mesurer la polarisation l&#039;attaquant doit appliquer, comme Bob, un filtre pour deviner la base qu&#039;Alice a envoyé. Ainsi cette intrusion a 1 chance sur 2 d&#039;introduire des incohérences dans les données d&#039;Alice et Bob en envoyant 1 fois sur 2 un mauvais photon. Par la suite Bob obtient donc 1 chance sur 4 d&#039;appliquer le bon filtre. Par analyses statistiques, Alice et Bob peuvent détecter de manière sure s&#039;il y a eu espionnage sur le canal quantique.&lt;br /&gt;
&lt;br /&gt;
==== Attaque de l&#039;homme du milieu ====&lt;br /&gt;
&lt;br /&gt;
Comme toute méthode d&#039;échange de clé privée, cette méthode reste vulnérable à une attaque de type &amp;quot;homme du milieu&amp;quot;. Il faut donc la combiner avec un mécanisme de certification afin de s&#039;assurer de l&#039;identité des protagonistes.&lt;/div&gt;</summary>
		<author><name>JulianaLeclaire</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8652</id>
		<title>Projets étudiants cryptographie et sécurité/Leclaire DeRoland Crypto Quantique</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8652"/>
		<updated>2016-03-17T09:47:15Z</updated>

		<summary type="html">&lt;p&gt;JulianaLeclaire : /* Résistances aux attaques quantiques */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Auteurs : Juliana Leclaire, Céline de Roland ===&lt;br /&gt;
&lt;br /&gt;
== La cryptographie et la cryptanalyse dans le contexte de l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
L&#039;informatique quantique se base sur la superposition de plusieurs états quantiques pour améliorer les capacités de calculs. &lt;br /&gt;
&lt;br /&gt;
Ce domaine nous amène à un vrai problème dans le sécurité de l&#039;internet. Car l&#039;informatique quantique, avec ses capacités de calculs va pouvoir casser les algorithmes de chiffrement asymétriques qui sont présents dans le Web. Les chiffrements asymétriques sont utilisés dans le connexions SSL/TLS, les paiements en ligne, etc.&lt;br /&gt;
&lt;br /&gt;
En partie pour ces raisons, il existe différents acteurs qui se penchent sur ce domaine. Notamment, la NSA, Google qui cherche à construire son propre ordinateur quantique.&lt;br /&gt;
Dans cette page, nous allons nous demander en quoi l&#039;informatique quantique peut changer le Web d&#039;aujourd&#039;hui et comment faire face à cette arrivée ?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Fonctionnement de l&#039;informatique quantique ===&lt;br /&gt;
&lt;br /&gt;
==== Qubit ====&lt;br /&gt;
&lt;br /&gt;
C&#039;est la plus petite unité de stockage de l&#039;information. Etant donné deux états de base &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;, un qubit non mesuré se trouve dans l&#039;état &amp;lt;math&amp;gt;\alpha \left|0\right\rangle + \beta \left|1\right\rangle&amp;lt;/math&amp;gt;, avec &amp;lt;math&amp;gt;|\alpha|^2 + |\beta|^2 = 1&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Lorsqu&#039;on mesure la valeur du qubit, on obtient soit &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; soit &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;|\alpha|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et  &amp;lt;math&amp;gt;|\beta|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
    &lt;br /&gt;
==== Théorème de non clonage ====&lt;br /&gt;
&lt;br /&gt;
Ce théorème, découvert en 1982 par Wootters, Zurek, et Dieks, consiste à dire qu&#039;il est impossible de recopier un qubit à l&#039;identique. La démonstration (par l&#039;absurde) repose sur le fait que pouvoir mettre le qubit B dans le même état que le qubit A implique que le qubit B soit déjà dans le même état que le qubit A.&lt;br /&gt;
On en déduit qu&#039;il est impossible de faire une opération de type copier/coller en informatique quantique.&lt;br /&gt;
&lt;br /&gt;
==== Téléportation quantique ====&lt;br /&gt;
&lt;br /&gt;
La téléportation quantique consiste à transférer l&#039;état du qubit A dans le qubit B. Il s&#039;agit donc cette fois d&#039;une opération de couper/coller.&lt;br /&gt;
L&#039;intrication quantique se produit lorsque deux qubits sont dépendants l&#039;un de l&#039;autre même s&#039;ils sont éloignés l&#039;un de l&#039;autre. Dans cet état, si on mesure l&#039;un des deux, alors la mesure du deuxième est déterminée.&lt;br /&gt;
Sans entrer dans la théorie physique sous jacente, nous pouvons dire qu&#039;un canal EPR permet de réaliser cette opération de couper/coller en transmettant une information entre deux ordinateurs quantiques.&lt;br /&gt;
&lt;br /&gt;
== Chiffrement à clé publique face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
=== Mise en danger de la sécurité du Web ===&lt;br /&gt;
&lt;br /&gt;
Les ordinateurs quantiques présentent une rapidité de calculs extrèmement plus rapide que les ordinateurs à base de sillicium. Ces ordinateurs auraient aucune difficulté pour casser les codes de sécurité actuels reposant principalement sur un chiffrement à clé publique. Par définition le chiffrement à clé publique utilise une clé publique pour le chiffrement et une clé privée pour le décodage en se basant sur des grands nombres. Cependant ces grands nombres peuvent être vite retrouvés par des ordinateurs quantiques.&lt;br /&gt;
&lt;br /&gt;
=== Exemple de chiffrement asymétrique: RSA ===&lt;br /&gt;
&lt;br /&gt;
Ce chiffrement est couramment utilisé dans la sécurité du Web. &lt;br /&gt;
RSA repose sur la génération de grands nombres premiers, d&#039;un chiffrement avec une clé publique et d&#039;un déchiffrement avec une clé privée. &lt;br /&gt;
&lt;br /&gt;
* Initialisation : &lt;br /&gt;
** module &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; (grand nombre entier codé sur 2048 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;p, q&amp;lt;/math&amp;gt; : nombres premiers de même taille (codés sur 1024 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;\phi(N) = (p-1) * (q - 1)&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd(e, \phi(N)) = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
** Choisir &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;ed \equiv 1 [\phi(N)]&amp;lt;/math&amp;gt; et donc &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; est l&#039;inverse modulaire de &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; avec &amp;lt;math&amp;gt;d = e^-1 [\phi(N)]&amp;lt;/math&amp;gt;&lt;br /&gt;
** Clé publique : &amp;lt;math&amp;gt;pk(n, e)&amp;lt;/math&amp;gt;, Clé privée : &amp;lt;math&amp;gt;sk(d, p, q)&amp;lt;/math&amp;gt;&lt;br /&gt;
* Chiffrement : &amp;lt;math&amp;gt;c = m^e [N]&amp;lt;/math&amp;gt;&lt;br /&gt;
* Déchiffrement : &amp;lt;math&amp;gt;m = c^d [N]&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Exemple : &amp;lt;math&amp;gt;N=15&amp;lt;/math&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* Je choisis &amp;lt;math&amp;gt;x=7&amp;lt;/math&amp;gt;&lt;br /&gt;
* En calculant successivement les valeurs de &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; on trouve &amp;lt;math&amp;gt;7^{4} \equiv 1 [15]&amp;lt;/math&amp;gt;.&lt;br /&gt;
* &amp;lt;math&amp;gt;r=4&amp;lt;/math&amp;gt; est pair&lt;br /&gt;
* &amp;lt;math&amp;gt;pgcd(x^{\frac{r}{2}}+1,15) = 5&amp;lt;/math&amp;gt;. Donc &amp;lt;math&amp;gt;P = 5&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;Q = pgcd(x^{\frac{r}{2}}-1,15) = 3&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La sécurité de RSA repose sur la difficulté à factoriser des grands nombres en nombres premiers. En effet avec &amp;lt;math&amp;gt;(N, e)&amp;lt;/math&amp;gt; il faudrait pouvoir retrouver &amp;lt;math&amp;gt;(d, p, q)&amp;lt;/math&amp;gt; où &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt; correspondant à un cassage total. D&#039;après le théorème de factorisation unique tout entier &amp;lt;math&amp;gt;n \ge 2&amp;lt;/math&amp;gt; admet une factorisation unique en produit de puissances de nombres entiers. Des algorithmes de factorisation ont été trouvés pour différentes tailles de module $N$ mais pour pallier à ces attaques on augmente la longueur du module. De nos jours pour sécuriser le chiffrement il faut utiliser des modules strictement supérieur à 2048 bits. Cependant avec l&#039;informatique quantique il ne suffira plus d&#039;augmenter la taille du module car la puissance de calcul permettra de casser le chiffrement, peu importe la taille du module.&lt;br /&gt;
&lt;br /&gt;
== Chiffrement à clé privée face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
=== Mise en danger de la sécurité ===&lt;br /&gt;
&lt;br /&gt;
Si les ordinateurs quantiques présentent une rapidité de calcul permettant d&#039;effectuer des factorisations impossibles pour un ordinateur classique, il nous semble logique qu&#039;ils soient également performants pour effectuer des attaques de type force brute sur des messages chiffrés par une clé privée qui aurait été transmise par un moyen plus sûr que RSA.&lt;br /&gt;
 &lt;br /&gt;
Un ordinateur quantique pourrait réaliser le déchiffrement avec toutes les clés possibles en parallèle. Ce qui permettrait de cryptanalyser le message en une seule opération. Le principe se base sur la superposition quantique. On superposerait toutes les clés possibles et on déchiffrerait. On obtiendrait alors une superposition de résultats. Le point le plus difficile est de trouver le résultat correct à partir de la superposition obtenue. En effet, le principe selon lequel mesurer une valeur modifie cette valeur fait qu&#039;en observant une superposition, on obtient un seul état aléatoire. Une solution à ce problème a été trouvé par Lov Grover en $O(\sqrt{n})$ étapes.&lt;br /&gt;
&lt;br /&gt;
== Résistances aux attaques quantiques ==&lt;br /&gt;
&lt;br /&gt;
=== Nouvel algorithme ===&lt;br /&gt;
&lt;br /&gt;
Depuis 2006, une conférence internationnale se produit chaque année nommée &amp;quot;Post Quantum Cryptography&amp;quot; dans l&#039;intention de trouver des algorithmes résistants aux ordinateurs quantiques. Nathan Hamlin et William Webb, des mathématiciens, ont présenté récemment un algorithme de chiffrement asymétrique possiblement capable de faire face aux attaques quantiques. Cet algorithme part de l&#039;ancien chiffrement de Merkle-Hellman qui se base sur le problème du sac à dos nommé &amp;quot;Knapsack code&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
==== Problème du sac-à-dos ====&lt;br /&gt;
&lt;br /&gt;
Etant donné un sac avec une capacité &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; et plusieurs objets de poids différents. Le problème du sac-à-dos consiste à trouver la suite d&#039;objets qui entre dans le sac et qui maximise sa capacité. En partant d&#039;un n-uplet &amp;lt;math&amp;gt;\left(a_1, a_2, ..., a_n\right) \in N^n&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;S \in N&amp;lt;/math&amp;gt;, il faut trouver un n-uplet binaire &amp;lt;math&amp;gt;\left(x_1, x_2, ..., x_n\right) \in {0,1}^n&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;S = \sum_{i=1}^{n} \left(a_{i}*x_{i}\right) &amp;lt;/math&amp;gt;. La somme &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; des poids des objets choisi ne doit pas dépasser la capacité du sac à dos. Pour résoudre ce problème il n&#039;existe pas d&#039;algorithme avec une compléxité polynomial.&lt;br /&gt;
&lt;br /&gt;
==== Chiffrement de Merkle-Hellman ====&lt;br /&gt;
&lt;br /&gt;
Cet algorithme de chiffrement à clé publique repose sur la complexité algorithmique du problème de sac-à-dos et utilise des suites de poids super-croissante pour le secret et non super-croissante pour la clé publique. Si les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt; n&#039;ont pas de propriétés particulières, la recherche du message codé en binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt; est un problème difficile. Il n&#039;existe pas d&#039;algorithme polynomial pour le résoudre. Pour pouvoir retrouver facilement ce n-uplet une propriété super-croissante est utilisé sur les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt;. Un n-uplet b est super-croissant si &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\forall i \in [2,n] b_{i} &amp;gt; \sum_{j=1}^{i-1} {b_{j}}&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ainsi en utilisant un algorithme glouton nous pouvons retrouver le n-uplet binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt;. L&#039;objet le plus lourd est dans le sac si le poids du sac est supérieur au poids de celui-ci. La propriété super-croissante assure que la somme des poids des autres objets sera toujours inférieur au poids de l&#039;objet le plus lourd. L&#039;algorithme est le suivant :&lt;br /&gt;
&lt;br /&gt;
  Pour i de n à 1 faire&lt;br /&gt;
    Si &amp;lt;math&amp;gt;b_{i} \le S&amp;lt;/math&amp;gt; alors&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i}  = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
    Sinon&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i} = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
    &amp;lt;math&amp;gt;S = S - x_{i} * b_{i}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Par exemple en prenant la suite des puissances de 2 comme suite super-croissante  avec : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = \left\{ 1,4,8 \right\}, b = \left\{ 1,2,4,8 \right\}, S = 13 \left(1+4+8\right), n = 4&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 4 : 8 \le 13 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_4 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 3 : 4 \le 5 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_3 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 2 : 2 \le 1 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    non donc &amp;lt;math&amp;gt;x_2 = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 1 : 1 \le 1 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_1 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  =&amp;gt; &amp;lt;math&amp;gt;m = \left\{ 1,0,1,1 \right\}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour chiffrer un n-uplet binaire &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;, l&#039;idée de Merkle et Hellman est de &amp;quot;tordre&amp;quot; les &amp;lt;math&amp;gt;b_{i}&amp;lt;/math&amp;gt; pour obtenir un n-uplet qui n&#039;est plus super-croissant. On choisit un nombre &amp;lt;math&amp;gt;u &amp;gt; \sum_{i=1}^{n} {b_{i}}&amp;lt;/math&amp;gt;, un entier &amp;lt;math&amp;gt;v \in N&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd\left(u,v\right) = 1&amp;lt;/math&amp;gt;. Ce qui donne &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; inversible dans &amp;lt;math&amp;gt;Z/uZ&amp;lt;/math&amp;gt;. On prend &amp;lt;math&amp;gt;w = v^{-1} \in Z/uZ&amp;lt;/math&amp;gt;. On calcule ensuite le n-uplet &amp;lt;math&amp;gt;a = \left(a_1, ..., a_n\right)&amp;lt;/math&amp;gt; tel que pour tout &amp;lt;math&amp;gt;i \in [1,n]&amp;lt;/math&amp;gt; on a : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = a * b_i (mod u)&amp;lt;/math&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
Le n-uplet &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; détermine la clé public tandis que &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt; sont gardés secrets. &amp;lt;br/&amp;gt;&lt;br /&gt;
Pour envoyer le message m à Bob, Alice va, à partir de l&#039;écriture de m en binaire, calculer la somme : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;c = \sum_{i=1}^{n} {m_i * a_i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
qu&#039;elle va envoyer à Bob. Bob pour déchiffrer va devoir procéder à plusieurs étapes : &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt;c = \sum_{i=1}^{n} {m_i * a_i}&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * a_i * w} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * a_i * v^{-1}} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * v * b_i * v^{-1}} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * b_i} [u]&amp;lt;/math&amp;gt;                      =&amp;gt; Comme &amp;lt;math&amp;gt; \sum_{i=1}^{n} {m_i * b_i} &amp;lt; \sum_{i=1}^{n} {b_i}&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt; u &amp;gt; \sum_{i=1}^{n} {b_i}&amp;lt;/math&amp;gt; le modulo &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; peut s&#039;enlever&lt;br /&gt;
* &amp;lt;math&amp;gt;= \sum_{i=1}^{n} {m_i * b_i}&amp;lt;/math&amp;gt;                           =&amp;gt; Comme &amp;lt;math&amp;gt;b_i&amp;lt;/math&amp;gt; est super-croissant Bob peut facilement retrouver &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Nouveau chiffrement de Hamlin-Webb ====&lt;br /&gt;
&lt;br /&gt;
Le chiffrement de Merkle et Hellman a été abandonné à la suite des découvertes de Shamir qui a découvert une attaque permettant de retrouver le message secret en utilisant un algorithme de la réduction des réseaux. Nathan Hamlin et William Webb reprennent cet algorithme en le renforçant par un changement de représentation des entiers. Ils ont prouvé q&#039;un entier pouvait être représenté de manière unique avec des suites récurrentes. Le secret &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; n&#039;est alors plus modélisé en binaire mais en une suite récurrente plus complexe à craquer.&lt;br /&gt;
&lt;br /&gt;
=== Chiffrement quantique ===&lt;br /&gt;
&lt;br /&gt;
==== Photons polarisés ====&lt;br /&gt;
&lt;br /&gt;
Les photons sont des particules qui composent la lumière. Ils sont composés d&#039;un champ électrique et d&#039;un champ magnétique. Une lumière non-polarisée se caractérise par une différence d&#039;orientation du champ électrique suivant les photons. Ainsi la polarisation consiste, grâce à un polarisateur, d&#039;obtenir des photons avec un champ électrique orienté de manière identique. Les filtres polarisants permettent d&#039;appliquer un angle d&#039;orientation sur les photons afin :&lt;br /&gt;
* de récupérer les photons polarisés parallèlement par rapport à cet angle&lt;br /&gt;
* d&#039;éliminer les photons polarisés perpendiculairement&lt;br /&gt;
* de récupérer les photons polarisés intermédiaires avec une probabilité de &amp;lt;math&amp;gt;\cos\left(\alpha\right)&amp;lt;/math&amp;gt; en les réinitialisant avec une polarisation égale à l&#039;angle d&#039;orientation du filtre.&lt;br /&gt;
&lt;br /&gt;
Du fait de la transformation de polarisation il est impossible de connaître l&#039;information sur les polarisations précédentes du photons.&lt;br /&gt;
&lt;br /&gt;
==== Distribution des clés ====&lt;br /&gt;
&lt;br /&gt;
Le chiffrement quantique offre un moyen sécurisé d’échanger des clés privées pour réaliser des chiffrements symétriques. Cette distribution s’appuie sur l’envoi de photons polarisés par fibre optique. Les personnes s&#039;échangeant les clés doivent avoir accès à un canal quantique et un canal classique. Le principe est le suivant :&lt;br /&gt;
* Alice envoie par le canal quantique une suite de photons polarisés aléatoirement.&lt;br /&gt;
* Bob applique un filtre de polarisation qui lui donne 1 chance sur 2 (et 1 chance sur 4 s&#039;il y a eu un espion) d&#039;appliquer le bon filtre et les renvoit à Alice.&lt;br /&gt;
* Alice et Bob s&#039;échangent par le canal classique leur choix des axes de polarisation éliminant ainsi les erreurs.&lt;br /&gt;
* Alice communique une partie de ses résultats.&lt;br /&gt;
* Maintenant que Bob connait les axes qu&#039;Alice a appliqué et les résultats il peut savoir si la communication a été écoutée ou non. Ceci étant grâce au théorème de non clonage où il est impossible de cloner des états quantiques inconnus.&lt;br /&gt;
&lt;br /&gt;
Ce principe permet de détecter facilement s&#039;il y a eu des intrusions durant la communication de la clé privée. En effet si un attaquant écoute il lui faut récupérer les photons envoyés par Alice mesurer la polarisation et renvoyer le photon à Bob. Pour mesurer la polarisation l&#039;attaquant doit appliquer, comme Bob, un filtre pour deviner la base qu&#039;Alice a envoyé. Ainsi cette intrusion a 1 chance sur 2 d&#039;introduire des incohérences dans les données d&#039;Alice et Bob en envoyant 1 fois sur 2 un mauvais photon. Par la suite Bob obtient donc 1 chance sur 4 d&#039;appliquer le bon filtre. Par analyses statistiques, Alice et Bob peuvent détecter de manière sure s&#039;il y a eu espionnage sur le canal quantique.&lt;br /&gt;
&lt;br /&gt;
==== Attaque de l&#039;homme du milieu ====&lt;br /&gt;
&lt;br /&gt;
Comme toute méthode d&#039;échange de clé privée, cette méthode reste vulnérable à une attaque de type &amp;quot;homme du milieu&amp;quot;. Il faut donc la combiner avec un mécanisme de certification afin de s&#039;assurer de l&#039;identité des protagonistes.&lt;/div&gt;</summary>
		<author><name>JulianaLeclaire</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8651</id>
		<title>Projets étudiants cryptographie et sécurité/Leclaire DeRoland Crypto Quantique</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8651"/>
		<updated>2016-03-17T09:45:37Z</updated>

		<summary type="html">&lt;p&gt;JulianaLeclaire : /* Chiffrement à clé privée face à l&amp;#039;informatique quantique */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Auteurs : Juliana Leclaire, Céline de Roland ===&lt;br /&gt;
&lt;br /&gt;
== La cryptographie et la cryptanalyse dans le contexte de l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
L&#039;informatique quantique se base sur la superposition de plusieurs états quantiques pour améliorer les capacités de calculs. &lt;br /&gt;
&lt;br /&gt;
Ce domaine nous amène à un vrai problème dans le sécurité de l&#039;internet. Car l&#039;informatique quantique, avec ses capacités de calculs va pouvoir casser les algorithmes de chiffrement asymétriques qui sont présents dans le Web. Les chiffrements asymétriques sont utilisés dans le connexions SSL/TLS, les paiements en ligne, etc.&lt;br /&gt;
&lt;br /&gt;
En partie pour ces raisons, il existe différents acteurs qui se penchent sur ce domaine. Notamment, la NSA, Google qui cherche à construire son propre ordinateur quantique.&lt;br /&gt;
Dans cette page, nous allons nous demander en quoi l&#039;informatique quantique peut changer le Web d&#039;aujourd&#039;hui et comment faire face à cette arrivée ?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Fonctionnement de l&#039;informatique quantique ===&lt;br /&gt;
&lt;br /&gt;
==== Qubit ====&lt;br /&gt;
&lt;br /&gt;
C&#039;est la plus petite unité de stockage de l&#039;information. Etant donné deux états de base &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;, un qubit non mesuré se trouve dans l&#039;état &amp;lt;math&amp;gt;\alpha \left|0\right\rangle + \beta \left|1\right\rangle&amp;lt;/math&amp;gt;, avec &amp;lt;math&amp;gt;|\alpha|^2 + |\beta|^2 = 1&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Lorsqu&#039;on mesure la valeur du qubit, on obtient soit &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; soit &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;|\alpha|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et  &amp;lt;math&amp;gt;|\beta|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
    &lt;br /&gt;
==== Théorème de non clonage ====&lt;br /&gt;
&lt;br /&gt;
Ce théorème, découvert en 1982 par Wootters, Zurek, et Dieks, consiste à dire qu&#039;il est impossible de recopier un qubit à l&#039;identique. La démonstration (par l&#039;absurde) repose sur le fait que pouvoir mettre le qubit B dans le même état que le qubit A implique que le qubit B soit déjà dans le même état que le qubit A.&lt;br /&gt;
On en déduit qu&#039;il est impossible de faire une opération de type copier/coller en informatique quantique.&lt;br /&gt;
&lt;br /&gt;
==== Téléportation quantique ====&lt;br /&gt;
&lt;br /&gt;
La téléportation quantique consiste à transférer l&#039;état du qubit A dans le qubit B. Il s&#039;agit donc cette fois d&#039;une opération de couper/coller.&lt;br /&gt;
L&#039;intrication quantique se produit lorsque deux qubits sont dépendants l&#039;un de l&#039;autre même s&#039;ils sont éloignés l&#039;un de l&#039;autre. Dans cet état, si on mesure l&#039;un des deux, alors la mesure du deuxième est déterminée.&lt;br /&gt;
Sans entrer dans la théorie physique sous jacente, nous pouvons dire qu&#039;un canal EPR permet de réaliser cette opération de couper/coller en transmettant une information entre deux ordinateurs quantiques.&lt;br /&gt;
&lt;br /&gt;
== Chiffrement à clé publique face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
=== Mise en danger de la sécurité du Web ===&lt;br /&gt;
&lt;br /&gt;
Les ordinateurs quantiques présentent une rapidité de calculs extrèmement plus rapide que les ordinateurs à base de sillicium. Ces ordinateurs auraient aucune difficulté pour casser les codes de sécurité actuels reposant principalement sur un chiffrement à clé publique. Par définition le chiffrement à clé publique utilise une clé publique pour le chiffrement et une clé privée pour le décodage en se basant sur des grands nombres. Cependant ces grands nombres peuvent être vite retrouvés par des ordinateurs quantiques.&lt;br /&gt;
&lt;br /&gt;
=== Exemple de chiffrement asymétrique: RSA ===&lt;br /&gt;
&lt;br /&gt;
Ce chiffrement est couramment utilisé dans la sécurité du Web. &lt;br /&gt;
RSA repose sur la génération de grands nombres premiers, d&#039;un chiffrement avec une clé publique et d&#039;un déchiffrement avec une clé privée. &lt;br /&gt;
&lt;br /&gt;
* Initialisation : &lt;br /&gt;
** module &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; (grand nombre entier codé sur 2048 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;p, q&amp;lt;/math&amp;gt; : nombres premiers de même taille (codés sur 1024 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;\phi(N) = (p-1) * (q - 1)&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd(e, \phi(N)) = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
** Choisir &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;ed \equiv 1 [\phi(N)]&amp;lt;/math&amp;gt; et donc &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; est l&#039;inverse modulaire de &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; avec &amp;lt;math&amp;gt;d = e^-1 [\phi(N)]&amp;lt;/math&amp;gt;&lt;br /&gt;
** Clé publique : &amp;lt;math&amp;gt;pk(n, e)&amp;lt;/math&amp;gt;, Clé privée : &amp;lt;math&amp;gt;sk(d, p, q)&amp;lt;/math&amp;gt;&lt;br /&gt;
* Chiffrement : &amp;lt;math&amp;gt;c = m^e [N]&amp;lt;/math&amp;gt;&lt;br /&gt;
* Déchiffrement : &amp;lt;math&amp;gt;m = c^d [N]&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Exemple : &amp;lt;math&amp;gt;N=15&amp;lt;/math&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* Je choisis &amp;lt;math&amp;gt;x=7&amp;lt;/math&amp;gt;&lt;br /&gt;
* En calculant successivement les valeurs de &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; on trouve &amp;lt;math&amp;gt;7^{4} \equiv 1 [15]&amp;lt;/math&amp;gt;.&lt;br /&gt;
* &amp;lt;math&amp;gt;r=4&amp;lt;/math&amp;gt; est pair&lt;br /&gt;
* &amp;lt;math&amp;gt;pgcd(x^{\frac{r}{2}}+1,15) = 5&amp;lt;/math&amp;gt;. Donc &amp;lt;math&amp;gt;P = 5&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;Q = pgcd(x^{\frac{r}{2}}-1,15) = 3&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La sécurité de RSA repose sur la difficulté à factoriser des grands nombres en nombres premiers. En effet avec &amp;lt;math&amp;gt;(N, e)&amp;lt;/math&amp;gt; il faudrait pouvoir retrouver &amp;lt;math&amp;gt;(d, p, q)&amp;lt;/math&amp;gt; où &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt; correspondant à un cassage total. D&#039;après le théorème de factorisation unique tout entier &amp;lt;math&amp;gt;n \ge 2&amp;lt;/math&amp;gt; admet une factorisation unique en produit de puissances de nombres entiers. Des algorithmes de factorisation ont été trouvés pour différentes tailles de module $N$ mais pour pallier à ces attaques on augmente la longueur du module. De nos jours pour sécuriser le chiffrement il faut utiliser des modules strictement supérieur à 2048 bits. Cependant avec l&#039;informatique quantique il ne suffira plus d&#039;augmenter la taille du module car la puissance de calcul permettra de casser le chiffrement, peu importe la taille du module.&lt;br /&gt;
&lt;br /&gt;
== Chiffrement à clé privée face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
=== Mise en danger de la sécurité ===&lt;br /&gt;
&lt;br /&gt;
Si les ordinateurs quantiques présentent une rapidité de calcul permettant d&#039;effectuer des factorisations impossibles pour un ordinateur classique, il nous semble logique qu&#039;ils soient également performants pour effectuer des attaques de type force brute sur des messages chiffrés par une clé privée qui aurait été transmise par un moyen plus sûr que RSA.&lt;br /&gt;
 &lt;br /&gt;
Un ordinateur quantique pourrait réaliser le déchiffrement avec toutes les clés possibles en parallèle. Ce qui permettrait de cryptanalyser le message en une seule opération. Le principe se base sur la superposition quantique. On superposerait toutes les clés possibles et on déchiffrerait. On obtiendrait alors une superposition de résultats. Le point le plus difficile est de trouver le résultat correct à partir de la superposition obtenue. En effet, le principe selon lequel mesurer une valeur modifie cette valeur fait qu&#039;en observant une superposition, on obtient un seul état aléatoire. Une solution à ce problème a été trouvé par Lov Grover en $O(\sqrt{n})$ étapes.&lt;br /&gt;
&lt;br /&gt;
== Résistances aux attaques quantiques ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nouvel algorithme&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Depuis 2006, une conférence internationnale se produit chaque année nommée &amp;quot;Post Quantum Cryptography&amp;quot; dans l&#039;intention de trouver des algorithmes résistants aux ordinateurs quantiques. Nathan Hamlin et William Webb, des mathématiciens, ont présenté récemment un algorithme de chiffrement asymétrique possiblement capable de faire face aux attaques quantiques. Cet algorithme part de l&#039;ancien chiffrement de Merkle-Hellman qui se base sur le problème du sac à dos nommé &amp;quot;Knapsack code&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
[[Problème du sac-à-dos]]&lt;br /&gt;
&lt;br /&gt;
Etant donné un sac avec une capacité &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; et plusieurs objets de poids différents. Le problème du sac-à-dos consiste à trouver la suite d&#039;objets qui entre dans le sac et qui maximise sa capacité. En partant d&#039;un n-uplet &amp;lt;math&amp;gt;\left(a_1, a_2, ..., a_n\right) \in N^n&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;S \in N&amp;lt;/math&amp;gt;, il faut trouver un n-uplet binaire &amp;lt;math&amp;gt;\left(x_1, x_2, ..., x_n\right) \in {0,1}^n&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;S = \sum_{i=1}^{n} \left(a_{i}*x_{i}\right) &amp;lt;/math&amp;gt;. La somme &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; des poids des objets choisi ne doit pas dépasser la capacité du sac à dos. Pour résoudre ce problème il n&#039;existe pas d&#039;algorithme avec une compléxité polynomial.&lt;br /&gt;
&lt;br /&gt;
[[Chiffrement de Merkle-Hellman]]&lt;br /&gt;
&lt;br /&gt;
Cet algorithme de chiffrement à clé publique repose sur la complexité algorithmique du problème de sac-à-dos et utilise des suites de poids super-croissante pour le secret et non super-croissante pour la clé publique. Si les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt; n&#039;ont pas de propriétés particulières, la recherche du message codé en binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt; est un problème difficile. Il n&#039;existe pas d&#039;algorithme polynomial pour le résoudre. Pour pouvoir retrouver facilement ce n-uplet une propriété super-croissante est utilisé sur les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt;. Un n-uplet b est super-croissant si &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\forall i \in [2,n] b_{i} &amp;gt; \sum_{j=1}^{i-1} {b_{j}}&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ainsi en utilisant un algorithme glouton nous pouvons retrouver le n-uplet binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt;. L&#039;objet le plus lourd est dans le sac si le poids du sac est supérieur au poids de celui-ci. La propriété super-croissante assure que la somme des poids des autres objets sera toujours inférieur au poids de l&#039;objet le plus lourd. L&#039;algorithme est le suivant :&lt;br /&gt;
&lt;br /&gt;
  Pour i de n à 1 faire&lt;br /&gt;
    Si &amp;lt;math&amp;gt;b_{i} \le S&amp;lt;/math&amp;gt; alors&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i}  = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
    Sinon&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i} = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
    &amp;lt;math&amp;gt;S = S - x_{i} * b_{i}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Par exemple en prenant la suite des puissances de 2 comme suite super-croissante  avec : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = \left\{ 1,4,8 \right\}, b = \left\{ 1,2,4,8 \right\}, S = 13 \left(1+4+8\right), n = 4&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 4 : 8 \le 13 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_4 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 3 : 4 \le 5 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_3 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 2 : 2 \le 1 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    non donc &amp;lt;math&amp;gt;x_2 = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 1 : 1 \le 1 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_1 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  =&amp;gt; &amp;lt;math&amp;gt;m = \left\{ 1,0,1,1 \right\}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour chiffrer un n-uplet binaire &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;, l&#039;idée de Merkle et Hellman est de &amp;quot;tordre&amp;quot; les &amp;lt;math&amp;gt;b_{i}&amp;lt;/math&amp;gt; pour obtenir un n-uplet qui n&#039;est plus super-croissant. On choisit un nombre &amp;lt;math&amp;gt;u &amp;gt; \sum_{i=1}^{n} {b_{i}}&amp;lt;/math&amp;gt;, un entier &amp;lt;math&amp;gt;v \in N&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd\left(u,v\right) = 1&amp;lt;/math&amp;gt;. Ce qui donne &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; inversible dans &amp;lt;math&amp;gt;Z/uZ&amp;lt;/math&amp;gt;. On prend &amp;lt;math&amp;gt;w = v^{-1} \in Z/uZ&amp;lt;/math&amp;gt;. On calcule ensuite le n-uplet &amp;lt;math&amp;gt;a = \left(a_1, ..., a_n\right)&amp;lt;/math&amp;gt; tel que pour tout &amp;lt;math&amp;gt;i \in [1,n]&amp;lt;/math&amp;gt; on a : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = a * b_i (mod u)&amp;lt;/math&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
Le n-uplet &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; détermine la clé public tandis que &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt; sont gardés secrets. &amp;lt;br/&amp;gt;&lt;br /&gt;
Pour envoyer le message m à Bob, Alice va, à partir de l&#039;écriture de m en binaire, calculer la somme : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;c = \sum_{i=1}^{n} {m_i * a_i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
qu&#039;elle va envoyer à Bob. Bob pour déchiffrer va devoir procéder à plusieurs étapes : &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt;c = \sum_{i=1}^{n} {m_i * a_i}&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * a_i * w} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * a_i * v^{-1}} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * v * b_i * v^{-1}} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * b_i} [u]&amp;lt;/math&amp;gt;                      =&amp;gt; Comme &amp;lt;math&amp;gt; \sum_{i=1}^{n} {m_i * b_i} &amp;lt; \sum_{i=1}^{n} {b_i}&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt; u &amp;gt; \sum_{i=1}^{n} {b_i}&amp;lt;/math&amp;gt; le modulo &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; peut s&#039;enlever&lt;br /&gt;
* &amp;lt;math&amp;gt;= \sum_{i=1}^{n} {m_i * b_i}&amp;lt;/math&amp;gt;                           =&amp;gt; Comme &amp;lt;math&amp;gt;b_i&amp;lt;/math&amp;gt; est super-croissant Bob peut facilement retrouver &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Nouveau chiffrement de Hamlin-Webb]]&lt;br /&gt;
&lt;br /&gt;
Le chiffrement de Merkle et Hellman a été abandonné à la suite des découvertes de Shamir qui a découvert une attaque permettant de retrouver le message secret en utilisant un algorithme de la réduction des réseaux. Nathan Hamlin et William Webb reprennent cet algorithme en le renforçant par un changement de représentation des entiers. Ils ont prouvé q&#039;un entier pouvait être représenté de manière unique avec des suites récurrentes. Le secret &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; n&#039;est alors plus modélisé en binaire mais en une suite récurrente plus complexe à craquer.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Chiffrement quantique&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Photons polarisés&lt;br /&gt;
&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Les photons sont des particules qui composent la lumière. Ils sont composés d&#039;un champ électrique et d&#039;un champ magnétique. Une lumière non-polarisée se caractérise par une différence d&#039;orientation du champ électrique suivant les photons. Ainsi la polarisation consiste, grâce à un polarisateur, d&#039;obtenir des photons avec un champ électrique orienté de manière identique. Les filtres polarisants permettent d&#039;appliquer un angle d&#039;orientation sur les photons afin :&lt;br /&gt;
* de récupérer les photons polarisés parallèlement par rapport à cet angle&lt;br /&gt;
* d&#039;éliminer les photons polarisés perpendiculairement&lt;br /&gt;
* de récupérer les photons polarisés intermédiaires avec une probabilité de &amp;lt;math&amp;gt;\cos\left(\alpha\right)&amp;lt;/math&amp;gt; en les réinitialisant avec une polarisation égale à l&#039;angle d&#039;orientation du filtre.&lt;br /&gt;
&lt;br /&gt;
Du fait de la transformation de polarisation il est impossible de connaître l&#039;information sur les polarisations précédentes du photons.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Distribution des clés&lt;br /&gt;
&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Le chiffrement quantique offre un moyen sécurisé d’échanger des clés privées pour réaliser des chiffrements symétriques. Cette distribution s’appuie sur l’envoi de photons polarisés par fibre optique. Les personnes s&#039;échangeant les clés doivent avoir accès à un canal quantique et un canal classique. Le principe est le suivant :&lt;br /&gt;
* Alice envoie par le canal quantique une suite de photons polarisés aléatoirement.&lt;br /&gt;
* Bob applique un filtre de polarisation qui lui donne 1 chance sur 2 (et 1 chance sur 4 s&#039;il y a eu un espion) d&#039;appliquer le bon filtre et les renvoit à Alice.&lt;br /&gt;
* Alice et Bob s&#039;échangent par le canal classique leur choix des axes de polarisation éliminant ainsi les erreurs.&lt;br /&gt;
* Alice communique une partie de ses résultats.&lt;br /&gt;
* Maintenant que Bob connait les axes qu&#039;Alice a appliqué et les résultats il peut savoir si la communication a été écoutée ou non. Ceci étant grâce au théorème de non clonage où il est impossible de cloner des états quantiques inconnus.&lt;br /&gt;
&lt;br /&gt;
Ce principe permet de détecter facilement s&#039;il y a eu des intrusions durant la communication de la clé privée. En effet si un attaquant écoute il lui faut récupérer les photons envoyés par Alice mesurer la polarisation et renvoyer le photon à Bob. Pour mesurer la polarisation l&#039;attaquant doit appliquer, comme Bob, un filtre pour deviner la base qu&#039;Alice a envoyé. Ainsi cette intrusion a 1 chance sur 2 d&#039;introduire des incohérences dans les données d&#039;Alice et Bob en envoyant 1 fois sur 2 un mauvais photon. Par la suite Bob obtient donc 1 chance sur 4 d&#039;appliquer le bon filtre. Par analyses statistiques, Alice et Bob peuvent détecter de manière sure s&#039;il y a eu espionnage sur le canal quantique.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Attaque de l&#039;homme du milieu&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Comme toute méthode d&#039;échange de clé privée, cette méthode reste vulnérable à une attaque de type &amp;quot;homme du milieu&amp;quot;. Il faut donc la combiner avec un mécanisme de certification afin de s&#039;assurer de l&#039;identité des protagonistes.&lt;/div&gt;</summary>
		<author><name>JulianaLeclaire</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8650</id>
		<title>Projets étudiants cryptographie et sécurité/Leclaire DeRoland Crypto Quantique</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8650"/>
		<updated>2016-03-17T09:45:20Z</updated>

		<summary type="html">&lt;p&gt;JulianaLeclaire : /* Chiffrement à clé publique face à l&amp;#039;informatique quantique */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Auteurs : Juliana Leclaire, Céline de Roland ===&lt;br /&gt;
&lt;br /&gt;
== La cryptographie et la cryptanalyse dans le contexte de l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
L&#039;informatique quantique se base sur la superposition de plusieurs états quantiques pour améliorer les capacités de calculs. &lt;br /&gt;
&lt;br /&gt;
Ce domaine nous amène à un vrai problème dans le sécurité de l&#039;internet. Car l&#039;informatique quantique, avec ses capacités de calculs va pouvoir casser les algorithmes de chiffrement asymétriques qui sont présents dans le Web. Les chiffrements asymétriques sont utilisés dans le connexions SSL/TLS, les paiements en ligne, etc.&lt;br /&gt;
&lt;br /&gt;
En partie pour ces raisons, il existe différents acteurs qui se penchent sur ce domaine. Notamment, la NSA, Google qui cherche à construire son propre ordinateur quantique.&lt;br /&gt;
Dans cette page, nous allons nous demander en quoi l&#039;informatique quantique peut changer le Web d&#039;aujourd&#039;hui et comment faire face à cette arrivée ?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Fonctionnement de l&#039;informatique quantique ===&lt;br /&gt;
&lt;br /&gt;
==== Qubit ====&lt;br /&gt;
&lt;br /&gt;
C&#039;est la plus petite unité de stockage de l&#039;information. Etant donné deux états de base &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;, un qubit non mesuré se trouve dans l&#039;état &amp;lt;math&amp;gt;\alpha \left|0\right\rangle + \beta \left|1\right\rangle&amp;lt;/math&amp;gt;, avec &amp;lt;math&amp;gt;|\alpha|^2 + |\beta|^2 = 1&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Lorsqu&#039;on mesure la valeur du qubit, on obtient soit &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; soit &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;|\alpha|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et  &amp;lt;math&amp;gt;|\beta|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
    &lt;br /&gt;
==== Théorème de non clonage ====&lt;br /&gt;
&lt;br /&gt;
Ce théorème, découvert en 1982 par Wootters, Zurek, et Dieks, consiste à dire qu&#039;il est impossible de recopier un qubit à l&#039;identique. La démonstration (par l&#039;absurde) repose sur le fait que pouvoir mettre le qubit B dans le même état que le qubit A implique que le qubit B soit déjà dans le même état que le qubit A.&lt;br /&gt;
On en déduit qu&#039;il est impossible de faire une opération de type copier/coller en informatique quantique.&lt;br /&gt;
&lt;br /&gt;
==== Téléportation quantique ====&lt;br /&gt;
&lt;br /&gt;
La téléportation quantique consiste à transférer l&#039;état du qubit A dans le qubit B. Il s&#039;agit donc cette fois d&#039;une opération de couper/coller.&lt;br /&gt;
L&#039;intrication quantique se produit lorsque deux qubits sont dépendants l&#039;un de l&#039;autre même s&#039;ils sont éloignés l&#039;un de l&#039;autre. Dans cet état, si on mesure l&#039;un des deux, alors la mesure du deuxième est déterminée.&lt;br /&gt;
Sans entrer dans la théorie physique sous jacente, nous pouvons dire qu&#039;un canal EPR permet de réaliser cette opération de couper/coller en transmettant une information entre deux ordinateurs quantiques.&lt;br /&gt;
&lt;br /&gt;
== Chiffrement à clé publique face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
=== Mise en danger de la sécurité du Web ===&lt;br /&gt;
&lt;br /&gt;
Les ordinateurs quantiques présentent une rapidité de calculs extrèmement plus rapide que les ordinateurs à base de sillicium. Ces ordinateurs auraient aucune difficulté pour casser les codes de sécurité actuels reposant principalement sur un chiffrement à clé publique. Par définition le chiffrement à clé publique utilise une clé publique pour le chiffrement et une clé privée pour le décodage en se basant sur des grands nombres. Cependant ces grands nombres peuvent être vite retrouvés par des ordinateurs quantiques.&lt;br /&gt;
&lt;br /&gt;
=== Exemple de chiffrement asymétrique: RSA ===&lt;br /&gt;
&lt;br /&gt;
Ce chiffrement est couramment utilisé dans la sécurité du Web. &lt;br /&gt;
RSA repose sur la génération de grands nombres premiers, d&#039;un chiffrement avec une clé publique et d&#039;un déchiffrement avec une clé privée. &lt;br /&gt;
&lt;br /&gt;
* Initialisation : &lt;br /&gt;
** module &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; (grand nombre entier codé sur 2048 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;p, q&amp;lt;/math&amp;gt; : nombres premiers de même taille (codés sur 1024 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;\phi(N) = (p-1) * (q - 1)&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd(e, \phi(N)) = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
** Choisir &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;ed \equiv 1 [\phi(N)]&amp;lt;/math&amp;gt; et donc &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; est l&#039;inverse modulaire de &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; avec &amp;lt;math&amp;gt;d = e^-1 [\phi(N)]&amp;lt;/math&amp;gt;&lt;br /&gt;
** Clé publique : &amp;lt;math&amp;gt;pk(n, e)&amp;lt;/math&amp;gt;, Clé privée : &amp;lt;math&amp;gt;sk(d, p, q)&amp;lt;/math&amp;gt;&lt;br /&gt;
* Chiffrement : &amp;lt;math&amp;gt;c = m^e [N]&amp;lt;/math&amp;gt;&lt;br /&gt;
* Déchiffrement : &amp;lt;math&amp;gt;m = c^d [N]&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Exemple : &amp;lt;math&amp;gt;N=15&amp;lt;/math&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* Je choisis &amp;lt;math&amp;gt;x=7&amp;lt;/math&amp;gt;&lt;br /&gt;
* En calculant successivement les valeurs de &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; on trouve &amp;lt;math&amp;gt;7^{4} \equiv 1 [15]&amp;lt;/math&amp;gt;.&lt;br /&gt;
* &amp;lt;math&amp;gt;r=4&amp;lt;/math&amp;gt; est pair&lt;br /&gt;
* &amp;lt;math&amp;gt;pgcd(x^{\frac{r}{2}}+1,15) = 5&amp;lt;/math&amp;gt;. Donc &amp;lt;math&amp;gt;P = 5&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;Q = pgcd(x^{\frac{r}{2}}-1,15) = 3&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La sécurité de RSA repose sur la difficulté à factoriser des grands nombres en nombres premiers. En effet avec &amp;lt;math&amp;gt;(N, e)&amp;lt;/math&amp;gt; il faudrait pouvoir retrouver &amp;lt;math&amp;gt;(d, p, q)&amp;lt;/math&amp;gt; où &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt; correspondant à un cassage total. D&#039;après le théorème de factorisation unique tout entier &amp;lt;math&amp;gt;n \ge 2&amp;lt;/math&amp;gt; admet une factorisation unique en produit de puissances de nombres entiers. Des algorithmes de factorisation ont été trouvés pour différentes tailles de module $N$ mais pour pallier à ces attaques on augmente la longueur du module. De nos jours pour sécuriser le chiffrement il faut utiliser des modules strictement supérieur à 2048 bits. Cependant avec l&#039;informatique quantique il ne suffira plus d&#039;augmenter la taille du module car la puissance de calcul permettra de casser le chiffrement, peu importe la taille du module.&lt;br /&gt;
&lt;br /&gt;
== Chiffrement à clé privée face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mise en danger de la sécurité&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Si les ordinateurs quantiques présentent une rapidité de calcul permettant d&#039;effectuer des factorisations impossibles pour un ordinateur classique, il nous semble logique qu&#039;ils soient également performants pour effectuer des attaques de type force brute sur des messages chiffrés par une clé privée qui aurait été transmise par un moyen plus sûr que RSA.&lt;br /&gt;
 &lt;br /&gt;
Un ordinateur quantique pourrait réaliser le déchiffrement avec toutes les clés possibles en parallèle. Ce qui permettrait de cryptanalyser le message en une seule opération. Le principe se base sur la superposition quantique. On superposerait toutes les clés possibles et on déchiffrerait. On obtiendrait alors une superposition de résultats. Le point le plus difficile est de trouver le résultat correct à partir de la superposition obtenue. En effet, le principe selon lequel mesurer une valeur modifie cette valeur fait qu&#039;en observant une superposition, on obtient un seul état aléatoire. Une solution à ce problème a été trouvé par Lov Grover en $O(\sqrt{n})$ étapes.&lt;br /&gt;
&lt;br /&gt;
== Résistances aux attaques quantiques ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nouvel algorithme&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Depuis 2006, une conférence internationnale se produit chaque année nommée &amp;quot;Post Quantum Cryptography&amp;quot; dans l&#039;intention de trouver des algorithmes résistants aux ordinateurs quantiques. Nathan Hamlin et William Webb, des mathématiciens, ont présenté récemment un algorithme de chiffrement asymétrique possiblement capable de faire face aux attaques quantiques. Cet algorithme part de l&#039;ancien chiffrement de Merkle-Hellman qui se base sur le problème du sac à dos nommé &amp;quot;Knapsack code&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
[[Problème du sac-à-dos]]&lt;br /&gt;
&lt;br /&gt;
Etant donné un sac avec une capacité &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; et plusieurs objets de poids différents. Le problème du sac-à-dos consiste à trouver la suite d&#039;objets qui entre dans le sac et qui maximise sa capacité. En partant d&#039;un n-uplet &amp;lt;math&amp;gt;\left(a_1, a_2, ..., a_n\right) \in N^n&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;S \in N&amp;lt;/math&amp;gt;, il faut trouver un n-uplet binaire &amp;lt;math&amp;gt;\left(x_1, x_2, ..., x_n\right) \in {0,1}^n&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;S = \sum_{i=1}^{n} \left(a_{i}*x_{i}\right) &amp;lt;/math&amp;gt;. La somme &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; des poids des objets choisi ne doit pas dépasser la capacité du sac à dos. Pour résoudre ce problème il n&#039;existe pas d&#039;algorithme avec une compléxité polynomial.&lt;br /&gt;
&lt;br /&gt;
[[Chiffrement de Merkle-Hellman]]&lt;br /&gt;
&lt;br /&gt;
Cet algorithme de chiffrement à clé publique repose sur la complexité algorithmique du problème de sac-à-dos et utilise des suites de poids super-croissante pour le secret et non super-croissante pour la clé publique. Si les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt; n&#039;ont pas de propriétés particulières, la recherche du message codé en binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt; est un problème difficile. Il n&#039;existe pas d&#039;algorithme polynomial pour le résoudre. Pour pouvoir retrouver facilement ce n-uplet une propriété super-croissante est utilisé sur les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt;. Un n-uplet b est super-croissant si &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\forall i \in [2,n] b_{i} &amp;gt; \sum_{j=1}^{i-1} {b_{j}}&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ainsi en utilisant un algorithme glouton nous pouvons retrouver le n-uplet binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt;. L&#039;objet le plus lourd est dans le sac si le poids du sac est supérieur au poids de celui-ci. La propriété super-croissante assure que la somme des poids des autres objets sera toujours inférieur au poids de l&#039;objet le plus lourd. L&#039;algorithme est le suivant :&lt;br /&gt;
&lt;br /&gt;
  Pour i de n à 1 faire&lt;br /&gt;
    Si &amp;lt;math&amp;gt;b_{i} \le S&amp;lt;/math&amp;gt; alors&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i}  = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
    Sinon&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i} = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
    &amp;lt;math&amp;gt;S = S - x_{i} * b_{i}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Par exemple en prenant la suite des puissances de 2 comme suite super-croissante  avec : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = \left\{ 1,4,8 \right\}, b = \left\{ 1,2,4,8 \right\}, S = 13 \left(1+4+8\right), n = 4&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 4 : 8 \le 13 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_4 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 3 : 4 \le 5 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_3 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 2 : 2 \le 1 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    non donc &amp;lt;math&amp;gt;x_2 = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 1 : 1 \le 1 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_1 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  =&amp;gt; &amp;lt;math&amp;gt;m = \left\{ 1,0,1,1 \right\}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour chiffrer un n-uplet binaire &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;, l&#039;idée de Merkle et Hellman est de &amp;quot;tordre&amp;quot; les &amp;lt;math&amp;gt;b_{i}&amp;lt;/math&amp;gt; pour obtenir un n-uplet qui n&#039;est plus super-croissant. On choisit un nombre &amp;lt;math&amp;gt;u &amp;gt; \sum_{i=1}^{n} {b_{i}}&amp;lt;/math&amp;gt;, un entier &amp;lt;math&amp;gt;v \in N&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd\left(u,v\right) = 1&amp;lt;/math&amp;gt;. Ce qui donne &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; inversible dans &amp;lt;math&amp;gt;Z/uZ&amp;lt;/math&amp;gt;. On prend &amp;lt;math&amp;gt;w = v^{-1} \in Z/uZ&amp;lt;/math&amp;gt;. On calcule ensuite le n-uplet &amp;lt;math&amp;gt;a = \left(a_1, ..., a_n\right)&amp;lt;/math&amp;gt; tel que pour tout &amp;lt;math&amp;gt;i \in [1,n]&amp;lt;/math&amp;gt; on a : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = a * b_i (mod u)&amp;lt;/math&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
Le n-uplet &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; détermine la clé public tandis que &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt; sont gardés secrets. &amp;lt;br/&amp;gt;&lt;br /&gt;
Pour envoyer le message m à Bob, Alice va, à partir de l&#039;écriture de m en binaire, calculer la somme : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;c = \sum_{i=1}^{n} {m_i * a_i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
qu&#039;elle va envoyer à Bob. Bob pour déchiffrer va devoir procéder à plusieurs étapes : &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt;c = \sum_{i=1}^{n} {m_i * a_i}&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * a_i * w} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * a_i * v^{-1}} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * v * b_i * v^{-1}} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * b_i} [u]&amp;lt;/math&amp;gt;                      =&amp;gt; Comme &amp;lt;math&amp;gt; \sum_{i=1}^{n} {m_i * b_i} &amp;lt; \sum_{i=1}^{n} {b_i}&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt; u &amp;gt; \sum_{i=1}^{n} {b_i}&amp;lt;/math&amp;gt; le modulo &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; peut s&#039;enlever&lt;br /&gt;
* &amp;lt;math&amp;gt;= \sum_{i=1}^{n} {m_i * b_i}&amp;lt;/math&amp;gt;                           =&amp;gt; Comme &amp;lt;math&amp;gt;b_i&amp;lt;/math&amp;gt; est super-croissant Bob peut facilement retrouver &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Nouveau chiffrement de Hamlin-Webb]]&lt;br /&gt;
&lt;br /&gt;
Le chiffrement de Merkle et Hellman a été abandonné à la suite des découvertes de Shamir qui a découvert une attaque permettant de retrouver le message secret en utilisant un algorithme de la réduction des réseaux. Nathan Hamlin et William Webb reprennent cet algorithme en le renforçant par un changement de représentation des entiers. Ils ont prouvé q&#039;un entier pouvait être représenté de manière unique avec des suites récurrentes. Le secret &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; n&#039;est alors plus modélisé en binaire mais en une suite récurrente plus complexe à craquer.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Chiffrement quantique&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Photons polarisés&lt;br /&gt;
&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Les photons sont des particules qui composent la lumière. Ils sont composés d&#039;un champ électrique et d&#039;un champ magnétique. Une lumière non-polarisée se caractérise par une différence d&#039;orientation du champ électrique suivant les photons. Ainsi la polarisation consiste, grâce à un polarisateur, d&#039;obtenir des photons avec un champ électrique orienté de manière identique. Les filtres polarisants permettent d&#039;appliquer un angle d&#039;orientation sur les photons afin :&lt;br /&gt;
* de récupérer les photons polarisés parallèlement par rapport à cet angle&lt;br /&gt;
* d&#039;éliminer les photons polarisés perpendiculairement&lt;br /&gt;
* de récupérer les photons polarisés intermédiaires avec une probabilité de &amp;lt;math&amp;gt;\cos\left(\alpha\right)&amp;lt;/math&amp;gt; en les réinitialisant avec une polarisation égale à l&#039;angle d&#039;orientation du filtre.&lt;br /&gt;
&lt;br /&gt;
Du fait de la transformation de polarisation il est impossible de connaître l&#039;information sur les polarisations précédentes du photons.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Distribution des clés&lt;br /&gt;
&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Le chiffrement quantique offre un moyen sécurisé d’échanger des clés privées pour réaliser des chiffrements symétriques. Cette distribution s’appuie sur l’envoi de photons polarisés par fibre optique. Les personnes s&#039;échangeant les clés doivent avoir accès à un canal quantique et un canal classique. Le principe est le suivant :&lt;br /&gt;
* Alice envoie par le canal quantique une suite de photons polarisés aléatoirement.&lt;br /&gt;
* Bob applique un filtre de polarisation qui lui donne 1 chance sur 2 (et 1 chance sur 4 s&#039;il y a eu un espion) d&#039;appliquer le bon filtre et les renvoit à Alice.&lt;br /&gt;
* Alice et Bob s&#039;échangent par le canal classique leur choix des axes de polarisation éliminant ainsi les erreurs.&lt;br /&gt;
* Alice communique une partie de ses résultats.&lt;br /&gt;
* Maintenant que Bob connait les axes qu&#039;Alice a appliqué et les résultats il peut savoir si la communication a été écoutée ou non. Ceci étant grâce au théorème de non clonage où il est impossible de cloner des états quantiques inconnus.&lt;br /&gt;
&lt;br /&gt;
Ce principe permet de détecter facilement s&#039;il y a eu des intrusions durant la communication de la clé privée. En effet si un attaquant écoute il lui faut récupérer les photons envoyés par Alice mesurer la polarisation et renvoyer le photon à Bob. Pour mesurer la polarisation l&#039;attaquant doit appliquer, comme Bob, un filtre pour deviner la base qu&#039;Alice a envoyé. Ainsi cette intrusion a 1 chance sur 2 d&#039;introduire des incohérences dans les données d&#039;Alice et Bob en envoyant 1 fois sur 2 un mauvais photon. Par la suite Bob obtient donc 1 chance sur 4 d&#039;appliquer le bon filtre. Par analyses statistiques, Alice et Bob peuvent détecter de manière sure s&#039;il y a eu espionnage sur le canal quantique.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Attaque de l&#039;homme du milieu&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Comme toute méthode d&#039;échange de clé privée, cette méthode reste vulnérable à une attaque de type &amp;quot;homme du milieu&amp;quot;. Il faut donc la combiner avec un mécanisme de certification afin de s&#039;assurer de l&#039;identité des protagonistes.&lt;/div&gt;</summary>
		<author><name>JulianaLeclaire</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8649</id>
		<title>Projets étudiants cryptographie et sécurité/Leclaire DeRoland Crypto Quantique</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8649"/>
		<updated>2016-03-17T09:44:39Z</updated>

		<summary type="html">&lt;p&gt;JulianaLeclaire : /* La cryptographie et la cryptanalyse dans le contexte de l&amp;#039;informatique quantique */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Auteurs : Juliana Leclaire, Céline de Roland ===&lt;br /&gt;
&lt;br /&gt;
== La cryptographie et la cryptanalyse dans le contexte de l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
&lt;br /&gt;
L&#039;informatique quantique se base sur la superposition de plusieurs états quantiques pour améliorer les capacités de calculs. &lt;br /&gt;
&lt;br /&gt;
Ce domaine nous amène à un vrai problème dans le sécurité de l&#039;internet. Car l&#039;informatique quantique, avec ses capacités de calculs va pouvoir casser les algorithmes de chiffrement asymétriques qui sont présents dans le Web. Les chiffrements asymétriques sont utilisés dans le connexions SSL/TLS, les paiements en ligne, etc.&lt;br /&gt;
&lt;br /&gt;
En partie pour ces raisons, il existe différents acteurs qui se penchent sur ce domaine. Notamment, la NSA, Google qui cherche à construire son propre ordinateur quantique.&lt;br /&gt;
Dans cette page, nous allons nous demander en quoi l&#039;informatique quantique peut changer le Web d&#039;aujourd&#039;hui et comment faire face à cette arrivée ?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Fonctionnement de l&#039;informatique quantique ===&lt;br /&gt;
&lt;br /&gt;
==== Qubit ====&lt;br /&gt;
&lt;br /&gt;
C&#039;est la plus petite unité de stockage de l&#039;information. Etant donné deux états de base &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;, un qubit non mesuré se trouve dans l&#039;état &amp;lt;math&amp;gt;\alpha \left|0\right\rangle + \beta \left|1\right\rangle&amp;lt;/math&amp;gt;, avec &amp;lt;math&amp;gt;|\alpha|^2 + |\beta|^2 = 1&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Lorsqu&#039;on mesure la valeur du qubit, on obtient soit &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; soit &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;|\alpha|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et  &amp;lt;math&amp;gt;|\beta|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
    &lt;br /&gt;
==== Théorème de non clonage ====&lt;br /&gt;
&lt;br /&gt;
Ce théorème, découvert en 1982 par Wootters, Zurek, et Dieks, consiste à dire qu&#039;il est impossible de recopier un qubit à l&#039;identique. La démonstration (par l&#039;absurde) repose sur le fait que pouvoir mettre le qubit B dans le même état que le qubit A implique que le qubit B soit déjà dans le même état que le qubit A.&lt;br /&gt;
On en déduit qu&#039;il est impossible de faire une opération de type copier/coller en informatique quantique.&lt;br /&gt;
&lt;br /&gt;
==== Téléportation quantique ====&lt;br /&gt;
&lt;br /&gt;
La téléportation quantique consiste à transférer l&#039;état du qubit A dans le qubit B. Il s&#039;agit donc cette fois d&#039;une opération de couper/coller.&lt;br /&gt;
L&#039;intrication quantique se produit lorsque deux qubits sont dépendants l&#039;un de l&#039;autre même s&#039;ils sont éloignés l&#039;un de l&#039;autre. Dans cet état, si on mesure l&#039;un des deux, alors la mesure du deuxième est déterminée.&lt;br /&gt;
Sans entrer dans la théorie physique sous jacente, nous pouvons dire qu&#039;un canal EPR permet de réaliser cette opération de couper/coller en transmettant une information entre deux ordinateurs quantiques.&lt;br /&gt;
&lt;br /&gt;
== Chiffrement à clé publique face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mise en danger de la sécurité du Web&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Les ordinateurs quantiques présentent une rapidité de calculs extrèmement plus rapide que les ordinateurs à base de sillicium. Ces ordinateurs auraient aucune difficulté pour casser les codes de sécurité actuels reposant principalement sur un chiffrement à clé publique. Par définition le chiffrement à clé publique utilise une clé publique pour le chiffrement et une clé privée pour le décodage en se basant sur des grands nombres. Cependant ces grands nombres peuvent être vite retrouvés par des ordinateurs quantiques.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Exemple de chiffrement asymétrique: RSA&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ce chiffrement est couramment utilisé dans la sécurité du Web. &lt;br /&gt;
RSA repose sur la génération de grands nombres premiers, d&#039;un chiffrement avec une clé publique et d&#039;un déchiffrement avec une clé privée. &lt;br /&gt;
&lt;br /&gt;
* Initialisation : &lt;br /&gt;
** module &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; (grand nombre entier codé sur 2048 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;p, q&amp;lt;/math&amp;gt; : nombres premiers de même taille (codés sur 1024 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;\phi(N) = (p-1) * (q - 1)&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd(e, \phi(N)) = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
** Choisir &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;ed \equiv 1 [\phi(N)]&amp;lt;/math&amp;gt; et donc &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; est l&#039;inverse modulaire de &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; avec &amp;lt;math&amp;gt;d = e^-1 [\phi(N)]&amp;lt;/math&amp;gt;&lt;br /&gt;
** Clé publique : &amp;lt;math&amp;gt;pk(n, e)&amp;lt;/math&amp;gt;, Clé privée : &amp;lt;math&amp;gt;sk(d, p, q)&amp;lt;/math&amp;gt;&lt;br /&gt;
* Chiffrement : &amp;lt;math&amp;gt;c = m^e [N]&amp;lt;/math&amp;gt;&lt;br /&gt;
* Déchiffrement : &amp;lt;math&amp;gt;m = c^d [N]&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Exemple : &amp;lt;math&amp;gt;N=15&amp;lt;/math&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* Je choisis &amp;lt;math&amp;gt;x=7&amp;lt;/math&amp;gt;&lt;br /&gt;
* En calculant successivement les valeurs de &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; on trouve &amp;lt;math&amp;gt;7^{4} \equiv 1 [15]&amp;lt;/math&amp;gt;.&lt;br /&gt;
* &amp;lt;math&amp;gt;r=4&amp;lt;/math&amp;gt; est pair&lt;br /&gt;
* &amp;lt;math&amp;gt;pgcd(x^{\frac{r}{2}}+1,15) = 5&amp;lt;/math&amp;gt;. Donc &amp;lt;math&amp;gt;P = 5&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;Q = pgcd(x^{\frac{r}{2}}-1,15) = 3&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La sécurité de RSA repose sur la difficulté à factoriser des grands nombres en nombres premiers. En effet avec &amp;lt;math&amp;gt;(N, e)&amp;lt;/math&amp;gt; il faudrait pouvoir retrouver &amp;lt;math&amp;gt;(d, p, q)&amp;lt;/math&amp;gt; où &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt; correspondant à un cassage total. D&#039;après le théorème de factorisation unique tout entier &amp;lt;math&amp;gt;n \ge 2&amp;lt;/math&amp;gt; admet une factorisation unique en produit de puissances de nombres entiers. Des algorithmes de factorisation ont été trouvés pour différentes tailles de module $N$ mais pour pallier à ces attaques on augmente la longueur du module. De nos jours pour sécuriser le chiffrement il faut utiliser des modules strictement supérieur à 2048 bits. Cependant avec l&#039;informatique quantique il ne suffira plus d&#039;augmenter la taille du module car la puissance de calcul permettra de casser le chiffrement, peu importe la taille du module.&lt;br /&gt;
&lt;br /&gt;
== Chiffrement à clé privée face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mise en danger de la sécurité&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Si les ordinateurs quantiques présentent une rapidité de calcul permettant d&#039;effectuer des factorisations impossibles pour un ordinateur classique, il nous semble logique qu&#039;ils soient également performants pour effectuer des attaques de type force brute sur des messages chiffrés par une clé privée qui aurait été transmise par un moyen plus sûr que RSA.&lt;br /&gt;
 &lt;br /&gt;
Un ordinateur quantique pourrait réaliser le déchiffrement avec toutes les clés possibles en parallèle. Ce qui permettrait de cryptanalyser le message en une seule opération. Le principe se base sur la superposition quantique. On superposerait toutes les clés possibles et on déchiffrerait. On obtiendrait alors une superposition de résultats. Le point le plus difficile est de trouver le résultat correct à partir de la superposition obtenue. En effet, le principe selon lequel mesurer une valeur modifie cette valeur fait qu&#039;en observant une superposition, on obtient un seul état aléatoire. Une solution à ce problème a été trouvé par Lov Grover en $O(\sqrt{n})$ étapes.&lt;br /&gt;
&lt;br /&gt;
== Résistances aux attaques quantiques ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nouvel algorithme&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Depuis 2006, une conférence internationnale se produit chaque année nommée &amp;quot;Post Quantum Cryptography&amp;quot; dans l&#039;intention de trouver des algorithmes résistants aux ordinateurs quantiques. Nathan Hamlin et William Webb, des mathématiciens, ont présenté récemment un algorithme de chiffrement asymétrique possiblement capable de faire face aux attaques quantiques. Cet algorithme part de l&#039;ancien chiffrement de Merkle-Hellman qui se base sur le problème du sac à dos nommé &amp;quot;Knapsack code&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
[[Problème du sac-à-dos]]&lt;br /&gt;
&lt;br /&gt;
Etant donné un sac avec une capacité &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; et plusieurs objets de poids différents. Le problème du sac-à-dos consiste à trouver la suite d&#039;objets qui entre dans le sac et qui maximise sa capacité. En partant d&#039;un n-uplet &amp;lt;math&amp;gt;\left(a_1, a_2, ..., a_n\right) \in N^n&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;S \in N&amp;lt;/math&amp;gt;, il faut trouver un n-uplet binaire &amp;lt;math&amp;gt;\left(x_1, x_2, ..., x_n\right) \in {0,1}^n&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;S = \sum_{i=1}^{n} \left(a_{i}*x_{i}\right) &amp;lt;/math&amp;gt;. La somme &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; des poids des objets choisi ne doit pas dépasser la capacité du sac à dos. Pour résoudre ce problème il n&#039;existe pas d&#039;algorithme avec une compléxité polynomial.&lt;br /&gt;
&lt;br /&gt;
[[Chiffrement de Merkle-Hellman]]&lt;br /&gt;
&lt;br /&gt;
Cet algorithme de chiffrement à clé publique repose sur la complexité algorithmique du problème de sac-à-dos et utilise des suites de poids super-croissante pour le secret et non super-croissante pour la clé publique. Si les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt; n&#039;ont pas de propriétés particulières, la recherche du message codé en binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt; est un problème difficile. Il n&#039;existe pas d&#039;algorithme polynomial pour le résoudre. Pour pouvoir retrouver facilement ce n-uplet une propriété super-croissante est utilisé sur les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt;. Un n-uplet b est super-croissant si &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\forall i \in [2,n] b_{i} &amp;gt; \sum_{j=1}^{i-1} {b_{j}}&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ainsi en utilisant un algorithme glouton nous pouvons retrouver le n-uplet binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt;. L&#039;objet le plus lourd est dans le sac si le poids du sac est supérieur au poids de celui-ci. La propriété super-croissante assure que la somme des poids des autres objets sera toujours inférieur au poids de l&#039;objet le plus lourd. L&#039;algorithme est le suivant :&lt;br /&gt;
&lt;br /&gt;
  Pour i de n à 1 faire&lt;br /&gt;
    Si &amp;lt;math&amp;gt;b_{i} \le S&amp;lt;/math&amp;gt; alors&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i}  = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
    Sinon&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i} = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
    &amp;lt;math&amp;gt;S = S - x_{i} * b_{i}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Par exemple en prenant la suite des puissances de 2 comme suite super-croissante  avec : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = \left\{ 1,4,8 \right\}, b = \left\{ 1,2,4,8 \right\}, S = 13 \left(1+4+8\right), n = 4&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 4 : 8 \le 13 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_4 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 3 : 4 \le 5 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_3 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 2 : 2 \le 1 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    non donc &amp;lt;math&amp;gt;x_2 = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 1 : 1 \le 1 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_1 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  =&amp;gt; &amp;lt;math&amp;gt;m = \left\{ 1,0,1,1 \right\}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour chiffrer un n-uplet binaire &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;, l&#039;idée de Merkle et Hellman est de &amp;quot;tordre&amp;quot; les &amp;lt;math&amp;gt;b_{i}&amp;lt;/math&amp;gt; pour obtenir un n-uplet qui n&#039;est plus super-croissant. On choisit un nombre &amp;lt;math&amp;gt;u &amp;gt; \sum_{i=1}^{n} {b_{i}}&amp;lt;/math&amp;gt;, un entier &amp;lt;math&amp;gt;v \in N&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd\left(u,v\right) = 1&amp;lt;/math&amp;gt;. Ce qui donne &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; inversible dans &amp;lt;math&amp;gt;Z/uZ&amp;lt;/math&amp;gt;. On prend &amp;lt;math&amp;gt;w = v^{-1} \in Z/uZ&amp;lt;/math&amp;gt;. On calcule ensuite le n-uplet &amp;lt;math&amp;gt;a = \left(a_1, ..., a_n\right)&amp;lt;/math&amp;gt; tel que pour tout &amp;lt;math&amp;gt;i \in [1,n]&amp;lt;/math&amp;gt; on a : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = a * b_i (mod u)&amp;lt;/math&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
Le n-uplet &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; détermine la clé public tandis que &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt; sont gardés secrets. &amp;lt;br/&amp;gt;&lt;br /&gt;
Pour envoyer le message m à Bob, Alice va, à partir de l&#039;écriture de m en binaire, calculer la somme : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;c = \sum_{i=1}^{n} {m_i * a_i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
qu&#039;elle va envoyer à Bob. Bob pour déchiffrer va devoir procéder à plusieurs étapes : &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt;c = \sum_{i=1}^{n} {m_i * a_i}&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * a_i * w} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * a_i * v^{-1}} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * v * b_i * v^{-1}} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * b_i} [u]&amp;lt;/math&amp;gt;                      =&amp;gt; Comme &amp;lt;math&amp;gt; \sum_{i=1}^{n} {m_i * b_i} &amp;lt; \sum_{i=1}^{n} {b_i}&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt; u &amp;gt; \sum_{i=1}^{n} {b_i}&amp;lt;/math&amp;gt; le modulo &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; peut s&#039;enlever&lt;br /&gt;
* &amp;lt;math&amp;gt;= \sum_{i=1}^{n} {m_i * b_i}&amp;lt;/math&amp;gt;                           =&amp;gt; Comme &amp;lt;math&amp;gt;b_i&amp;lt;/math&amp;gt; est super-croissant Bob peut facilement retrouver &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Nouveau chiffrement de Hamlin-Webb]]&lt;br /&gt;
&lt;br /&gt;
Le chiffrement de Merkle et Hellman a été abandonné à la suite des découvertes de Shamir qui a découvert une attaque permettant de retrouver le message secret en utilisant un algorithme de la réduction des réseaux. Nathan Hamlin et William Webb reprennent cet algorithme en le renforçant par un changement de représentation des entiers. Ils ont prouvé q&#039;un entier pouvait être représenté de manière unique avec des suites récurrentes. Le secret &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; n&#039;est alors plus modélisé en binaire mais en une suite récurrente plus complexe à craquer.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Chiffrement quantique&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Photons polarisés&lt;br /&gt;
&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Les photons sont des particules qui composent la lumière. Ils sont composés d&#039;un champ électrique et d&#039;un champ magnétique. Une lumière non-polarisée se caractérise par une différence d&#039;orientation du champ électrique suivant les photons. Ainsi la polarisation consiste, grâce à un polarisateur, d&#039;obtenir des photons avec un champ électrique orienté de manière identique. Les filtres polarisants permettent d&#039;appliquer un angle d&#039;orientation sur les photons afin :&lt;br /&gt;
* de récupérer les photons polarisés parallèlement par rapport à cet angle&lt;br /&gt;
* d&#039;éliminer les photons polarisés perpendiculairement&lt;br /&gt;
* de récupérer les photons polarisés intermédiaires avec une probabilité de &amp;lt;math&amp;gt;\cos\left(\alpha\right)&amp;lt;/math&amp;gt; en les réinitialisant avec une polarisation égale à l&#039;angle d&#039;orientation du filtre.&lt;br /&gt;
&lt;br /&gt;
Du fait de la transformation de polarisation il est impossible de connaître l&#039;information sur les polarisations précédentes du photons.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Distribution des clés&lt;br /&gt;
&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Le chiffrement quantique offre un moyen sécurisé d’échanger des clés privées pour réaliser des chiffrements symétriques. Cette distribution s’appuie sur l’envoi de photons polarisés par fibre optique. Les personnes s&#039;échangeant les clés doivent avoir accès à un canal quantique et un canal classique. Le principe est le suivant :&lt;br /&gt;
* Alice envoie par le canal quantique une suite de photons polarisés aléatoirement.&lt;br /&gt;
* Bob applique un filtre de polarisation qui lui donne 1 chance sur 2 (et 1 chance sur 4 s&#039;il y a eu un espion) d&#039;appliquer le bon filtre et les renvoit à Alice.&lt;br /&gt;
* Alice et Bob s&#039;échangent par le canal classique leur choix des axes de polarisation éliminant ainsi les erreurs.&lt;br /&gt;
* Alice communique une partie de ses résultats.&lt;br /&gt;
* Maintenant que Bob connait les axes qu&#039;Alice a appliqué et les résultats il peut savoir si la communication a été écoutée ou non. Ceci étant grâce au théorème de non clonage où il est impossible de cloner des états quantiques inconnus.&lt;br /&gt;
&lt;br /&gt;
Ce principe permet de détecter facilement s&#039;il y a eu des intrusions durant la communication de la clé privée. En effet si un attaquant écoute il lui faut récupérer les photons envoyés par Alice mesurer la polarisation et renvoyer le photon à Bob. Pour mesurer la polarisation l&#039;attaquant doit appliquer, comme Bob, un filtre pour deviner la base qu&#039;Alice a envoyé. Ainsi cette intrusion a 1 chance sur 2 d&#039;introduire des incohérences dans les données d&#039;Alice et Bob en envoyant 1 fois sur 2 un mauvais photon. Par la suite Bob obtient donc 1 chance sur 4 d&#039;appliquer le bon filtre. Par analyses statistiques, Alice et Bob peuvent détecter de manière sure s&#039;il y a eu espionnage sur le canal quantique.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Attaque de l&#039;homme du milieu&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Comme toute méthode d&#039;échange de clé privée, cette méthode reste vulnérable à une attaque de type &amp;quot;homme du milieu&amp;quot;. Il faut donc la combiner avec un mécanisme de certification afin de s&#039;assurer de l&#039;identité des protagonistes.&lt;/div&gt;</summary>
		<author><name>JulianaLeclaire</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8648</id>
		<title>Projets étudiants cryptographie et sécurité/Leclaire DeRoland Crypto Quantique</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8648"/>
		<updated>2016-03-17T09:39:36Z</updated>

		<summary type="html">&lt;p&gt;JulianaLeclaire : /* Résistances aux attaques quantiques */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Auteurs : Juliana Leclaire, Céline de Roland ===&lt;br /&gt;
&lt;br /&gt;
== La cryptographie et la cryptanalyse dans le contexte de l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Introduction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
L&#039;informatique quantique se base sur la superposition de plusieurs états quantiques pour améliorer les capacités de calculs. &lt;br /&gt;
&lt;br /&gt;
Ce domaine nous amène à un vrai problème dans le sécurité de l&#039;internet. Car l&#039;informatique quantique, avec ses capacités de calculs va pouvoir casser les algorithmes de chiffrement asymétriques qui sont présents dans le Web. Les chiffrements asymétriques sont utilisés dans le connexions SSL/TLS, les paiements en ligne, etc.&lt;br /&gt;
&lt;br /&gt;
En partie pour ces raisons, il existe différents acteurs qui se penchent sur ce domaine. Notamment, la NSA, Google qui cherche à construire son propre ordinateur quantique.&lt;br /&gt;
Dans cette page, nous allons nous demander en quoi l&#039;informatique quantique peut changer le Web d&#039;aujourd&#039;hui et comment faire face à cette arrivée ?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Fonctionnement de l&#039;informatique quantique&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Qubit&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C&#039;est la plus petite unité de stockage de l&#039;information. Etant donné deux états de base &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;, un qubit non mesuré se trouve dans l&#039;état &amp;lt;math&amp;gt;\alpha \left|0\right\rangle + \beta \left|1\right\rangle&amp;lt;/math&amp;gt;, avec &amp;lt;math&amp;gt;|\alpha|^2 + |\beta|^2 = 1&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Lorsqu&#039;on mesure la valeur du qubit, on obtient soit &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; soit &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;|\alpha|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et  &amp;lt;math&amp;gt;|\beta|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
    &lt;br /&gt;
&#039;&#039;Théorème de non clonage&lt;br /&gt;
&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ce théorème, découvert en 1982 par Wootters, Zurek, et Dieks, consiste à dire qu&#039;il est impossible de recopier un qubit à l&#039;identique. La démonstration (par l&#039;absurde) repose sur le fait que pouvoir mettre le qubit B dans le même état que le qubit A implique que le qubit B soit déjà dans le même état que le qubit A.&lt;br /&gt;
On en déduit qu&#039;il est impossible de faire une opération de type copier/coller en informatique quantique.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Téléportation quantique&lt;br /&gt;
&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
La téléportation quantique consiste à transférer l&#039;état du qubit A dans le qubit B. Il s&#039;agit donc cette fois d&#039;une opération de couper/coller.&lt;br /&gt;
L&#039;intrication quantique se produit lorsque deux qubits sont dépendants l&#039;un de l&#039;autre même s&#039;ils sont éloignés l&#039;un de l&#039;autre. Dans cet état, si on mesure l&#039;un des deux, alors la mesure du deuxième est déterminée.&lt;br /&gt;
Sans entrer dans la théorie physique sous jacente, nous pouvons dire qu&#039;un canal EPR permet de réaliser cette opération de couper/coller en transmettant une information entre deux ordinateurs quantiques.&lt;br /&gt;
&lt;br /&gt;
== Chiffrement à clé publique face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mise en danger de la sécurité du Web&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Les ordinateurs quantiques présentent une rapidité de calculs extrèmement plus rapide que les ordinateurs à base de sillicium. Ces ordinateurs auraient aucune difficulté pour casser les codes de sécurité actuels reposant principalement sur un chiffrement à clé publique. Par définition le chiffrement à clé publique utilise une clé publique pour le chiffrement et une clé privée pour le décodage en se basant sur des grands nombres. Cependant ces grands nombres peuvent être vite retrouvés par des ordinateurs quantiques.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Exemple de chiffrement asymétrique: RSA&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ce chiffrement est couramment utilisé dans la sécurité du Web. &lt;br /&gt;
RSA repose sur la génération de grands nombres premiers, d&#039;un chiffrement avec une clé publique et d&#039;un déchiffrement avec une clé privée. &lt;br /&gt;
&lt;br /&gt;
* Initialisation : &lt;br /&gt;
** module &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; (grand nombre entier codé sur 2048 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;p, q&amp;lt;/math&amp;gt; : nombres premiers de même taille (codés sur 1024 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;\phi(N) = (p-1) * (q - 1)&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd(e, \phi(N)) = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
** Choisir &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;ed \equiv 1 [\phi(N)]&amp;lt;/math&amp;gt; et donc &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; est l&#039;inverse modulaire de &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; avec &amp;lt;math&amp;gt;d = e^-1 [\phi(N)]&amp;lt;/math&amp;gt;&lt;br /&gt;
** Clé publique : &amp;lt;math&amp;gt;pk(n, e)&amp;lt;/math&amp;gt;, Clé privée : &amp;lt;math&amp;gt;sk(d, p, q)&amp;lt;/math&amp;gt;&lt;br /&gt;
* Chiffrement : &amp;lt;math&amp;gt;c = m^e [N]&amp;lt;/math&amp;gt;&lt;br /&gt;
* Déchiffrement : &amp;lt;math&amp;gt;m = c^d [N]&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Exemple : &amp;lt;math&amp;gt;N=15&amp;lt;/math&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* Je choisis &amp;lt;math&amp;gt;x=7&amp;lt;/math&amp;gt;&lt;br /&gt;
* En calculant successivement les valeurs de &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; on trouve &amp;lt;math&amp;gt;7^{4} \equiv 1 [15]&amp;lt;/math&amp;gt;.&lt;br /&gt;
* &amp;lt;math&amp;gt;r=4&amp;lt;/math&amp;gt; est pair&lt;br /&gt;
* &amp;lt;math&amp;gt;pgcd(x^{\frac{r}{2}}+1,15) = 5&amp;lt;/math&amp;gt;. Donc &amp;lt;math&amp;gt;P = 5&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;Q = pgcd(x^{\frac{r}{2}}-1,15) = 3&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La sécurité de RSA repose sur la difficulté à factoriser des grands nombres en nombres premiers. En effet avec &amp;lt;math&amp;gt;(N, e)&amp;lt;/math&amp;gt; il faudrait pouvoir retrouver &amp;lt;math&amp;gt;(d, p, q)&amp;lt;/math&amp;gt; où &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt; correspondant à un cassage total. D&#039;après le théorème de factorisation unique tout entier &amp;lt;math&amp;gt;n \ge 2&amp;lt;/math&amp;gt; admet une factorisation unique en produit de puissances de nombres entiers. Des algorithmes de factorisation ont été trouvés pour différentes tailles de module $N$ mais pour pallier à ces attaques on augmente la longueur du module. De nos jours pour sécuriser le chiffrement il faut utiliser des modules strictement supérieur à 2048 bits. Cependant avec l&#039;informatique quantique il ne suffira plus d&#039;augmenter la taille du module car la puissance de calcul permettra de casser le chiffrement, peu importe la taille du module.&lt;br /&gt;
&lt;br /&gt;
== Chiffrement à clé privée face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mise en danger de la sécurité&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Si les ordinateurs quantiques présentent une rapidité de calcul permettant d&#039;effectuer des factorisations impossibles pour un ordinateur classique, il nous semble logique qu&#039;ils soient également performants pour effectuer des attaques de type force brute sur des messages chiffrés par une clé privée qui aurait été transmise par un moyen plus sûr que RSA.&lt;br /&gt;
 &lt;br /&gt;
Un ordinateur quantique pourrait réaliser le déchiffrement avec toutes les clés possibles en parallèle. Ce qui permettrait de cryptanalyser le message en une seule opération. Le principe se base sur la superposition quantique. On superposerait toutes les clés possibles et on déchiffrerait. On obtiendrait alors une superposition de résultats. Le point le plus difficile est de trouver le résultat correct à partir de la superposition obtenue. En effet, le principe selon lequel mesurer une valeur modifie cette valeur fait qu&#039;en observant une superposition, on obtient un seul état aléatoire. Une solution à ce problème a été trouvé par Lov Grover en $O(\sqrt{n})$ étapes.&lt;br /&gt;
&lt;br /&gt;
== Résistances aux attaques quantiques ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nouvel algorithme&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Depuis 2006, une conférence internationnale se produit chaque année nommée &amp;quot;Post Quantum Cryptography&amp;quot; dans l&#039;intention de trouver des algorithmes résistants aux ordinateurs quantiques. Nathan Hamlin et William Webb, des mathématiciens, ont présenté récemment un algorithme de chiffrement asymétrique possiblement capable de faire face aux attaques quantiques. Cet algorithme part de l&#039;ancien chiffrement de Merkle-Hellman qui se base sur le problème du sac à dos nommé &amp;quot;Knapsack code&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
[[Problème du sac-à-dos]]&lt;br /&gt;
&lt;br /&gt;
Etant donné un sac avec une capacité &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; et plusieurs objets de poids différents. Le problème du sac-à-dos consiste à trouver la suite d&#039;objets qui entre dans le sac et qui maximise sa capacité. En partant d&#039;un n-uplet &amp;lt;math&amp;gt;\left(a_1, a_2, ..., a_n\right) \in N^n&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;S \in N&amp;lt;/math&amp;gt;, il faut trouver un n-uplet binaire &amp;lt;math&amp;gt;\left(x_1, x_2, ..., x_n\right) \in {0,1}^n&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;S = \sum_{i=1}^{n} \left(a_{i}*x_{i}\right) &amp;lt;/math&amp;gt;. La somme &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; des poids des objets choisi ne doit pas dépasser la capacité du sac à dos. Pour résoudre ce problème il n&#039;existe pas d&#039;algorithme avec une compléxité polynomial.&lt;br /&gt;
&lt;br /&gt;
[[Chiffrement de Merkle-Hellman]]&lt;br /&gt;
&lt;br /&gt;
Cet algorithme de chiffrement à clé publique repose sur la complexité algorithmique du problème de sac-à-dos et utilise des suites de poids super-croissante pour le secret et non super-croissante pour la clé publique. Si les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt; n&#039;ont pas de propriétés particulières, la recherche du message codé en binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt; est un problème difficile. Il n&#039;existe pas d&#039;algorithme polynomial pour le résoudre. Pour pouvoir retrouver facilement ce n-uplet une propriété super-croissante est utilisé sur les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt;. Un n-uplet b est super-croissant si &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\forall i \in [2,n] b_{i} &amp;gt; \sum_{j=1}^{i-1} {b_{j}}&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ainsi en utilisant un algorithme glouton nous pouvons retrouver le n-uplet binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt;. L&#039;objet le plus lourd est dans le sac si le poids du sac est supérieur au poids de celui-ci. La propriété super-croissante assure que la somme des poids des autres objets sera toujours inférieur au poids de l&#039;objet le plus lourd. L&#039;algorithme est le suivant :&lt;br /&gt;
&lt;br /&gt;
  Pour i de n à 1 faire&lt;br /&gt;
    Si &amp;lt;math&amp;gt;b_{i} \le S&amp;lt;/math&amp;gt; alors&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i}  = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
    Sinon&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i} = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
    &amp;lt;math&amp;gt;S = S - x_{i} * b_{i}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Par exemple en prenant la suite des puissances de 2 comme suite super-croissante  avec : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = \left\{ 1,4,8 \right\}, b = \left\{ 1,2,4,8 \right\}, S = 13 \left(1+4+8\right), n = 4&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 4 : 8 \le 13 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_4 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 3 : 4 \le 5 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_3 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 2 : 2 \le 1 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    non donc &amp;lt;math&amp;gt;x_2 = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 1 : 1 \le 1 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_1 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  =&amp;gt; &amp;lt;math&amp;gt;m = \left\{ 1,0,1,1 \right\}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour chiffrer un n-uplet binaire &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;, l&#039;idée de Merkle et Hellman est de &amp;quot;tordre&amp;quot; les &amp;lt;math&amp;gt;b_{i}&amp;lt;/math&amp;gt; pour obtenir un n-uplet qui n&#039;est plus super-croissant. On choisit un nombre &amp;lt;math&amp;gt;u &amp;gt; \sum_{i=1}^{n} {b_{i}}&amp;lt;/math&amp;gt;, un entier &amp;lt;math&amp;gt;v \in N&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd\left(u,v\right) = 1&amp;lt;/math&amp;gt;. Ce qui donne &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; inversible dans &amp;lt;math&amp;gt;Z/uZ&amp;lt;/math&amp;gt;. On prend &amp;lt;math&amp;gt;w = v^{-1} \in Z/uZ&amp;lt;/math&amp;gt;. On calcule ensuite le n-uplet &amp;lt;math&amp;gt;a = \left(a_1, ..., a_n\right)&amp;lt;/math&amp;gt; tel que pour tout &amp;lt;math&amp;gt;i \in [1,n]&amp;lt;/math&amp;gt; on a : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = a * b_i (mod u)&amp;lt;/math&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
Le n-uplet &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; détermine la clé public tandis que &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt; sont gardés secrets. &amp;lt;br/&amp;gt;&lt;br /&gt;
Pour envoyer le message m à Bob, Alice va, à partir de l&#039;écriture de m en binaire, calculer la somme : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;c = \sum_{i=1}^{n} {m_i * a_i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
qu&#039;elle va envoyer à Bob. Bob pour déchiffrer va devoir procéder à plusieurs étapes : &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt;c = \sum_{i=1}^{n} {m_i * a_i}&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * a_i * w} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * a_i * v^{-1}} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * v * b_i * v^{-1}} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * b_i} [u]&amp;lt;/math&amp;gt;                      =&amp;gt; Comme &amp;lt;math&amp;gt; \sum_{i=1}^{n} {m_i * b_i} &amp;lt; \sum_{i=1}^{n} {b_i}&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt; u &amp;gt; \sum_{i=1}^{n} {b_i}&amp;lt;/math&amp;gt; le modulo &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; peut s&#039;enlever&lt;br /&gt;
* &amp;lt;math&amp;gt;= \sum_{i=1}^{n} {m_i * b_i}&amp;lt;/math&amp;gt;                           =&amp;gt; Comme &amp;lt;math&amp;gt;b_i&amp;lt;/math&amp;gt; est super-croissant Bob peut facilement retrouver &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Nouveau chiffrement de Hamlin-Webb]]&lt;br /&gt;
&lt;br /&gt;
Le chiffrement de Merkle et Hellman a été abandonné à la suite des découvertes de Shamir qui a découvert une attaque permettant de retrouver le message secret en utilisant un algorithme de la réduction des réseaux. Nathan Hamlin et William Webb reprennent cet algorithme en le renforçant par un changement de représentation des entiers. Ils ont prouvé q&#039;un entier pouvait être représenté de manière unique avec des suites récurrentes. Le secret &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; n&#039;est alors plus modélisé en binaire mais en une suite récurrente plus complexe à craquer.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Chiffrement quantique&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Photons polarisés&lt;br /&gt;
&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Les photons sont des particules qui composent la lumière. Ils sont composés d&#039;un champ électrique et d&#039;un champ magnétique. Une lumière non-polarisée se caractérise par une différence d&#039;orientation du champ électrique suivant les photons. Ainsi la polarisation consiste, grâce à un polarisateur, d&#039;obtenir des photons avec un champ électrique orienté de manière identique. Les filtres polarisants permettent d&#039;appliquer un angle d&#039;orientation sur les photons afin :&lt;br /&gt;
* de récupérer les photons polarisés parallèlement par rapport à cet angle&lt;br /&gt;
* d&#039;éliminer les photons polarisés perpendiculairement&lt;br /&gt;
* de récupérer les photons polarisés intermédiaires avec une probabilité de &amp;lt;math&amp;gt;\cos\left(\alpha\right)&amp;lt;/math&amp;gt; en les réinitialisant avec une polarisation égale à l&#039;angle d&#039;orientation du filtre.&lt;br /&gt;
&lt;br /&gt;
Du fait de la transformation de polarisation il est impossible de connaître l&#039;information sur les polarisations précédentes du photons.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Distribution des clés&lt;br /&gt;
&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Le chiffrement quantique offre un moyen sécurisé d’échanger des clés privées pour réaliser des chiffrements symétriques. Cette distribution s’appuie sur l’envoi de photons polarisés par fibre optique. Les personnes s&#039;échangeant les clés doivent avoir accès à un canal quantique et un canal classique. Le principe est le suivant :&lt;br /&gt;
* Alice envoie par le canal quantique une suite de photons polarisés aléatoirement.&lt;br /&gt;
* Bob applique un filtre de polarisation qui lui donne 1 chance sur 2 (et 1 chance sur 4 s&#039;il y a eu un espion) d&#039;appliquer le bon filtre et les renvoit à Alice.&lt;br /&gt;
* Alice et Bob s&#039;échangent par le canal classique leur choix des axes de polarisation éliminant ainsi les erreurs.&lt;br /&gt;
* Alice communique une partie de ses résultats.&lt;br /&gt;
* Maintenant que Bob connait les axes qu&#039;Alice a appliqué et les résultats il peut savoir si la communication a été écoutée ou non. Ceci étant grâce au théorème de non clonage où il est impossible de cloner des états quantiques inconnus.&lt;br /&gt;
&lt;br /&gt;
Ce principe permet de détecter facilement s&#039;il y a eu des intrusions durant la communication de la clé privée. En effet si un attaquant écoute il lui faut récupérer les photons envoyés par Alice mesurer la polarisation et renvoyer le photon à Bob. Pour mesurer la polarisation l&#039;attaquant doit appliquer, comme Bob, un filtre pour deviner la base qu&#039;Alice a envoyé. Ainsi cette intrusion a 1 chance sur 2 d&#039;introduire des incohérences dans les données d&#039;Alice et Bob en envoyant 1 fois sur 2 un mauvais photon. Par la suite Bob obtient donc 1 chance sur 4 d&#039;appliquer le bon filtre. Par analyses statistiques, Alice et Bob peuvent détecter de manière sure s&#039;il y a eu espionnage sur le canal quantique.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Attaque de l&#039;homme du milieu&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Comme toute méthode d&#039;échange de clé privée, cette méthode reste vulnérable à une attaque de type &amp;quot;homme du milieu&amp;quot;. Il faut donc la combiner avec un mécanisme de certification afin de s&#039;assurer de l&#039;identité des protagonistes.&lt;/div&gt;</summary>
		<author><name>JulianaLeclaire</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8647</id>
		<title>Projets étudiants cryptographie et sécurité/Leclaire DeRoland Crypto Quantique</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8647"/>
		<updated>2016-03-17T09:23:54Z</updated>

		<summary type="html">&lt;p&gt;JulianaLeclaire : /* Résistances aux attaques quantiques */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Auteurs : Juliana Leclaire, Céline de Roland ===&lt;br /&gt;
&lt;br /&gt;
== La cryptographie et la cryptanalyse dans le contexte de l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Introduction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
L&#039;informatique quantique se base sur la superposition de plusieurs états quantiques pour améliorer les capacités de calculs. &lt;br /&gt;
&lt;br /&gt;
Ce domaine nous amène à un vrai problème dans le sécurité de l&#039;internet. Car l&#039;informatique quantique, avec ses capacités de calculs va pouvoir casser les algorithmes de chiffrement asymétriques qui sont présents dans le Web. Les chiffrements asymétriques sont utilisés dans le connexions SSL/TLS, les paiements en ligne, etc.&lt;br /&gt;
&lt;br /&gt;
En partie pour ces raisons, il existe différents acteurs qui se penchent sur ce domaine. Notamment, la NSA, Google qui cherche à construire son propre ordinateur quantique.&lt;br /&gt;
Dans cette page, nous allons nous demander en quoi l&#039;informatique quantique peut changer le Web d&#039;aujourd&#039;hui et comment faire face à cette arrivée ?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Fonctionnement de l&#039;informatique quantique&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Qubit&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C&#039;est la plus petite unité de stockage de l&#039;information. Etant donné deux états de base &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;, un qubit non mesuré se trouve dans l&#039;état &amp;lt;math&amp;gt;\alpha \left|0\right\rangle + \beta \left|1\right\rangle&amp;lt;/math&amp;gt;, avec &amp;lt;math&amp;gt;|\alpha|^2 + |\beta|^2 = 1&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Lorsqu&#039;on mesure la valeur du qubit, on obtient soit &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; soit &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;|\alpha|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et  &amp;lt;math&amp;gt;|\beta|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
    &lt;br /&gt;
&#039;&#039;Théorème de non clonage&lt;br /&gt;
&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ce théorème, découvert en 1982 par Wootters, Zurek, et Dieks, consiste à dire qu&#039;il est impossible de recopier un qubit à l&#039;identique. La démonstration (par l&#039;absurde) repose sur le fait que pouvoir mettre le qubit B dans le même état que le qubit A implique que le qubit B soit déjà dans le même état que le qubit A.&lt;br /&gt;
On en déduit qu&#039;il est impossible de faire une opération de type copier/coller en informatique quantique.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Téléportation quantique&lt;br /&gt;
&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
La téléportation quantique consiste à transférer l&#039;état du qubit A dans le qubit B. Il s&#039;agit donc cette fois d&#039;une opération de couper/coller.&lt;br /&gt;
L&#039;intrication quantique se produit lorsque deux qubits sont dépendants l&#039;un de l&#039;autre même s&#039;ils sont éloignés l&#039;un de l&#039;autre. Dans cet état, si on mesure l&#039;un des deux, alors la mesure du deuxième est déterminée.&lt;br /&gt;
Sans entrer dans la théorie physique sous jacente, nous pouvons dire qu&#039;un canal EPR permet de réaliser cette opération de couper/coller en transmettant une information entre deux ordinateurs quantiques.&lt;br /&gt;
&lt;br /&gt;
== Chiffrement à clé publique face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mise en danger de la sécurité du Web&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Les ordinateurs quantiques présentent une rapidité de calculs extrèmement plus rapide que les ordinateurs à base de sillicium. Ces ordinateurs auraient aucune difficulté pour casser les codes de sécurité actuels reposant principalement sur un chiffrement à clé publique. Par définition le chiffrement à clé publique utilise une clé publique pour le chiffrement et une clé privée pour le décodage en se basant sur des grands nombres. Cependant ces grands nombres peuvent être vite retrouvés par des ordinateurs quantiques.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Exemple de chiffrement asymétrique: RSA&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ce chiffrement est couramment utilisé dans la sécurité du Web. &lt;br /&gt;
RSA repose sur la génération de grands nombres premiers, d&#039;un chiffrement avec une clé publique et d&#039;un déchiffrement avec une clé privée. &lt;br /&gt;
&lt;br /&gt;
* Initialisation : &lt;br /&gt;
** module &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; (grand nombre entier codé sur 2048 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;p, q&amp;lt;/math&amp;gt; : nombres premiers de même taille (codés sur 1024 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;\phi(N) = (p-1) * (q - 1)&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd(e, \phi(N)) = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
** Choisir &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;ed \equiv 1 [\phi(N)]&amp;lt;/math&amp;gt; et donc &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; est l&#039;inverse modulaire de &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; avec &amp;lt;math&amp;gt;d = e^-1 [\phi(N)]&amp;lt;/math&amp;gt;&lt;br /&gt;
** Clé publique : &amp;lt;math&amp;gt;pk(n, e)&amp;lt;/math&amp;gt;, Clé privée : &amp;lt;math&amp;gt;sk(d, p, q)&amp;lt;/math&amp;gt;&lt;br /&gt;
* Chiffrement : &amp;lt;math&amp;gt;c = m^e [N]&amp;lt;/math&amp;gt;&lt;br /&gt;
* Déchiffrement : &amp;lt;math&amp;gt;m = c^d [N]&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Exemple : &amp;lt;math&amp;gt;N=15&amp;lt;/math&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* Je choisis &amp;lt;math&amp;gt;x=7&amp;lt;/math&amp;gt;&lt;br /&gt;
* En calculant successivement les valeurs de &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; on trouve &amp;lt;math&amp;gt;7^{4} \equiv 1 [15]&amp;lt;/math&amp;gt;.&lt;br /&gt;
* &amp;lt;math&amp;gt;r=4&amp;lt;/math&amp;gt; est pair&lt;br /&gt;
* &amp;lt;math&amp;gt;pgcd(x^{\frac{r}{2}}+1,15) = 5&amp;lt;/math&amp;gt;. Donc &amp;lt;math&amp;gt;P = 5&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;Q = pgcd(x^{\frac{r}{2}}-1,15) = 3&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La sécurité de RSA repose sur la difficulté à factoriser des grands nombres en nombres premiers. En effet avec &amp;lt;math&amp;gt;(N, e)&amp;lt;/math&amp;gt; il faudrait pouvoir retrouver &amp;lt;math&amp;gt;(d, p, q)&amp;lt;/math&amp;gt; où &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt; correspondant à un cassage total. D&#039;après le théorème de factorisation unique tout entier &amp;lt;math&amp;gt;n \ge 2&amp;lt;/math&amp;gt; admet une factorisation unique en produit de puissances de nombres entiers. Des algorithmes de factorisation ont été trouvés pour différentes tailles de module $N$ mais pour pallier à ces attaques on augmente la longueur du module. De nos jours pour sécuriser le chiffrement il faut utiliser des modules strictement supérieur à 2048 bits. Cependant avec l&#039;informatique quantique il ne suffira plus d&#039;augmenter la taille du module car la puissance de calcul permettra de casser le chiffrement, peu importe la taille du module.&lt;br /&gt;
&lt;br /&gt;
== Chiffrement à clé privée face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mise en danger de la sécurité&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Si les ordinateurs quantiques présentent une rapidité de calcul permettant d&#039;effectuer des factorisations impossibles pour un ordinateur classique, il nous semble logique qu&#039;ils soient également performants pour effectuer des attaques de type force brute sur des messages chiffrés par une clé privée qui aurait été transmise par un moyen plus sûr que RSA.&lt;br /&gt;
 &lt;br /&gt;
Un ordinateur quantique pourrait réaliser le déchiffrement avec toutes les clés possibles en parallèle. Ce qui permettrait de cryptanalyser le message en une seule opération. Le principe se base sur la superposition quantique. On superposerait toutes les clés possibles et on déchiffrerait. On obtiendrait alors une superposition de résultats. Le point le plus difficile est de trouver le résultat correct à partir de la superposition obtenue. En effet, le principe selon lequel mesurer une valeur modifie cette valeur fait qu&#039;en observant une superposition, on obtient un seul état aléatoire. Une solution à ce problème a été trouvé par Lov Grover en $O(\sqrt{n})$ étapes.&lt;br /&gt;
&lt;br /&gt;
== Résistances aux attaques quantiques ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nouvel algorithme&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Depuis 2006, une conférence internationnale se produit chaque année nommée &amp;quot;Post Quantum Cryptography&amp;quot; dans l&#039;intention de trouver des algorithmes résistants aux ordinateurs quantiques. Nathan Hamlin et William Webb, des mathématiciens, ont présenté récemment un algorithme de chiffrement asymétrique possiblement capable de faire face aux attaques quantiques. Cet algorithme part de l&#039;ancien chiffrement de Merkle-Hellman qui se base sur le problème du sac à dos nommé &amp;quot;Knapsack code&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
[[Problème du sac-à-dos]]&lt;br /&gt;
&lt;br /&gt;
Etant donné un sac avec une capacité &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; et plusieurs objets de poids différents. Le problème du sac-à-dos consiste à trouver la suite d&#039;objets qui entre dans le sac et qui maximise sa capacité. En partant d&#039;un n-uplet &amp;lt;math&amp;gt;\left(a_1, a_2, ..., a_n\right) \in N^n&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;S \in N&amp;lt;/math&amp;gt;, il faut trouver un n-uplet binaire &amp;lt;math&amp;gt;\left(x_1, x_2, ..., x_n\right) \in {0,1}^n&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;S = \sum_{i=1}^{n} \left(a_{i}*x_{i}\right) &amp;lt;/math&amp;gt;. La somme &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; des poids des objets choisi ne doit pas dépasser la capacité du sac à dos. Pour résoudre ce problème il n&#039;existe pas d&#039;algorithme avec une compléxité polynomial.&lt;br /&gt;
&lt;br /&gt;
[[Chiffrement de Merkle-Hellman]]&lt;br /&gt;
&lt;br /&gt;
Cet algorithme de chiffrement à clé publique repose sur la complexité algorithmique du problème de sac-à-dos et utilise des suites de poids super-croissante pour le secret et non super-croissante pour la clé publique. Si les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt; n&#039;ont pas de propriétés particulières, la recherche du message codé en binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt; est un problème difficile. Il n&#039;existe pas d&#039;algorithme polynomial pour le résoudre. Pour pouvoir retrouver facilement ce n-uplet une propriété super-croissante est utilisé sur les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt;. Un n-uplet b est super-croissant si &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\forall i \in [2,n] b_{i} &amp;gt; \sum_{j=1}^{i-1} {b_{j}}&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ainsi en utilisant un algorithme glouton nous pouvons retrouver le n-uplet binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt;. L&#039;objet le plus lourd est dans le sac si le poids du sac est supérieur au poids de celui-ci. La propriété super-croissante assure que la somme des poids des autres objets sera toujours inférieur au poids de l&#039;objet le plus lourd. L&#039;algorithme est le suivant :&lt;br /&gt;
&lt;br /&gt;
  Pour i de n à 1 faire&lt;br /&gt;
    Si &amp;lt;math&amp;gt;b_{i} \le S&amp;lt;/math&amp;gt; alors&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i}  = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
    Sinon&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i} = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
    &amp;lt;math&amp;gt;S = S - x_{i} * b_{i}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Par exemple en prenant la suite des puissances de 2 comme suite super-croissante  avec : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = \left\{ 1,4,8 \right\}, b = \left\{ 1,2,4,8 \right\}, S = 13 \left(1+4+8\right), n = 4&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 4 : 8 \le 13 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_4 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 3 : 4 \le 5 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_3 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 2 : 2 \le 1 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    non donc &amp;lt;math&amp;gt;x_2 = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 1 : 1 \le 1 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_1 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  =&amp;gt; &amp;lt;math&amp;gt;m = \left\{ 1,0,1,1 \right\}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour chiffrer un n-uplet binaire &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;, l&#039;idée de Merkle et Hellman est de &amp;quot;tordre&amp;quot; les &amp;lt;math&amp;gt;b_{i}&amp;lt;/math&amp;gt; pour obtenir un n-uplet qui n&#039;est plus super-croissant. On choisit un nombre &amp;lt;math&amp;gt;u &amp;gt; \sum_{i=1}^{n} {b_{i}}&amp;lt;/math&amp;gt;, un entier &amp;lt;math&amp;gt;v \in N&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd\left(u,v\right) = 1&amp;lt;/math&amp;gt;. Ce qui donne &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; inversible dans &amp;lt;math&amp;gt;Z/uZ&amp;lt;/math&amp;gt;. On prend &amp;lt;math&amp;gt;w = v^{-1} \in Z/uZ&amp;lt;/math&amp;gt;. On calcule ensuite le n-uplet &amp;lt;math&amp;gt;a = \left(a_1, ..., a_n\right)&amp;lt;/math&amp;gt; tel que pour tout &amp;lt;math&amp;gt;i \in [1,n]&amp;lt;/math&amp;gt; on a : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = a * b_i (mod u)&amp;lt;/math&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
Le n-uplet &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; détermine la clé public tandis que &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt; sont gardés secrets. &amp;lt;br/&amp;gt;&lt;br /&gt;
Pour envoyer le message m à Bob, Alice va, à partir de l&#039;écriture de m en binaire, calculer la somme : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;c = \sum_{i=1}^{n} {m_i * a_i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
qu&#039;elle va envoyer à Bob. Bob pour déchiffrer va devoir procéder à plusieurs étapes : &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;math&amp;gt;c = \sum_{i=1}^{n} {m_i * a_i}&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * a_i * w} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * a_i * v^{-1}} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * v * b_i * v^{-1}} [u]&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;w * c [u] = \sum_{i=1}^{n} {m_i * b_i} [u]&amp;lt;/math&amp;gt;                      =&amp;gt; Comme &amp;lt;math&amp;gt; \sum_{i=1}^{n} {m_i * b_i} &amp;lt; \sum_{i=1}^{n} {b_i}&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt; u &amp;gt; \sum_{i=1}^{n} {b_i}&amp;lt;/math&amp;gt; le modulo &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; peut s&#039;enlever&lt;br /&gt;
* &amp;lt;math&amp;gt;= \sum_{i=1}^{n} {m_i * b_i}&amp;lt;/math&amp;gt;                           =&amp;gt; Comme &amp;lt;math&amp;gt;b_i&amp;lt;/math&amp;gt; est super-croissant Bob peut facilement retrouver &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Le nouvel algorithme de Nathan Hamlin et William Webb renforce l&#039;algorithme du sac à dos et permet de créer de nouvelles clés publiques.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Chiffrement quantique&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Photons polarisés&lt;br /&gt;
&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Les photons sont des particules qui composent la lumière. Ils sont composés d&#039;un champ électrique et d&#039;un champ magnétique. Une lumière non-polarisée se caractérise par une différence d&#039;orientation du champ électrique suivant les photons. Ainsi la polarisation consiste, grâce à un polarisateur, d&#039;obtenir des photons avec un champ électrique orienté de manière identique. Les filtres polarisants permettent d&#039;appliquer un angle d&#039;orientation sur les photons afin :&lt;br /&gt;
* de récupérer les photons polarisés parallèlement par rapport à cet angle&lt;br /&gt;
* d&#039;éliminer les photons polarisés perpendiculairement&lt;br /&gt;
* de récupérer les photons polarisés intermédiaires avec une probabilité de &amp;lt;math&amp;gt;\cos\left(\alpha\right)&amp;lt;/math&amp;gt; en les réinitialisant avec une polarisation égale à l&#039;angle d&#039;orientation du filtre.&lt;br /&gt;
&lt;br /&gt;
Du fait de la transformation de polarisation il est impossible de connaître l&#039;information sur les polarisations précédentes du photons.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Distribution des clés&lt;br /&gt;
&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Le chiffrement quantique offre un moyen sécurisé d’échanger des clés privées pour réaliser des chiffrements symétriques. Cette distribution s’appuie sur l’envoi de photons polarisés par fibre optique. Les personnes s&#039;échangeant les clés doivent avoir accès à un canal quantique et un canal classique. Le principe est le suivant :&lt;br /&gt;
* Alice envoie par le canal quantique une suite de photons polarisés aléatoirement.&lt;br /&gt;
* Bob applique un filtre de polarisation qui lui donne 1 chance sur 2 (et 1 chance sur 4 s&#039;il y a eu un espion) d&#039;appliquer le bon filtre et les renvoit à Alice.&lt;br /&gt;
* Alice et Bob s&#039;échangent par le canal classique leur choix des axes de polarisation éliminant ainsi les erreurs.&lt;br /&gt;
* Alice communique une partie de ses résultats.&lt;br /&gt;
* Maintenant que Bob connait les axes qu&#039;Alice a appliqué et les résultats il peut savoir si la communication a été écoutée ou non. Ceci étant grâce au théorème de non clonage où il est impossible de cloner des états quantiques inconnus.&lt;br /&gt;
&lt;br /&gt;
Ce principe permet de détecter facilement s&#039;il y a eu des intrusions durant la communication de la clé privée. En effet si un attaquant écoute il lui faut récupérer les photons envoyés par Alice mesurer la polarisation et renvoyer le photon à Bob. Pour mesurer la polarisation l&#039;attaquant doit appliquer, comme Bob, un filtre pour deviner la base qu&#039;Alice a envoyé. Ainsi cette intrusion a 1 chance sur 2 d&#039;introduire des incohérences dans les données d&#039;Alice et Bob en envoyant 1 fois sur 2 un mauvais photon. Par la suite Bob obtient donc 1 chance sur 4 d&#039;appliquer le bon filtre. Par analyses statistiques, Alice et Bob peuvent détecter de manière sure s&#039;il y a eu espionnage sur le canal quantique.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Attaque de l&#039;homme du milieu&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Comme toute méthode d&#039;échange de clé privée, cette méthode reste vulnérable à une attaque de type &amp;quot;homme du milieu&amp;quot;. Il faut donc la combiner avec un mécanisme de certification afin de s&#039;assurer de l&#039;identité des protagonistes.&lt;/div&gt;</summary>
		<author><name>JulianaLeclaire</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8646</id>
		<title>Projets étudiants cryptographie et sécurité/Leclaire DeRoland Crypto Quantique</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8646"/>
		<updated>2016-03-17T09:13:25Z</updated>

		<summary type="html">&lt;p&gt;JulianaLeclaire : /* Résistances aux attaques quantiques */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Auteurs : Juliana Leclaire, Céline de Roland ===&lt;br /&gt;
&lt;br /&gt;
== La cryptographie et la cryptanalyse dans le contexte de l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Introduction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
L&#039;informatique quantique se base sur la superposition de plusieurs états quantiques pour améliorer les capacités de calculs. &lt;br /&gt;
&lt;br /&gt;
Ce domaine nous amène à un vrai problème dans le sécurité de l&#039;internet. Car l&#039;informatique quantique, avec ses capacités de calculs va pouvoir casser les algorithmes de chiffrement asymétriques qui sont présents dans le Web. Les chiffrements asymétriques sont utilisés dans le connexions SSL/TLS, les paiements en ligne, etc.&lt;br /&gt;
&lt;br /&gt;
En partie pour ces raisons, il existe différents acteurs qui se penchent sur ce domaine. Notamment, la NSA, Google qui cherche à construire son propre ordinateur quantique.&lt;br /&gt;
Dans cette page, nous allons nous demander en quoi l&#039;informatique quantique peut changer le Web d&#039;aujourd&#039;hui et comment faire face à cette arrivée ?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Fonctionnement de l&#039;informatique quantique&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Qubit&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C&#039;est la plus petite unité de stockage de l&#039;information. Etant donné deux états de base &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;, un qubit non mesuré se trouve dans l&#039;état &amp;lt;math&amp;gt;\alpha \left|0\right\rangle + \beta \left|1\right\rangle&amp;lt;/math&amp;gt;, avec &amp;lt;math&amp;gt;|\alpha|^2 + |\beta|^2 = 1&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Lorsqu&#039;on mesure la valeur du qubit, on obtient soit &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; soit &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;|\alpha|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et  &amp;lt;math&amp;gt;|\beta|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
    &lt;br /&gt;
&#039;&#039;Théorème de non clonage&lt;br /&gt;
&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ce théorème, découvert en 1982 par Wootters, Zurek, et Dieks, consiste à dire qu&#039;il est impossible de recopier un qubit à l&#039;identique. La démonstration (par l&#039;absurde) repose sur le fait que pouvoir mettre le qubit B dans le même état que le qubit A implique que le qubit B soit déjà dans le même état que le qubit A.&lt;br /&gt;
On en déduit qu&#039;il est impossible de faire une opération de type copier/coller en informatique quantique.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Téléportation quantique&lt;br /&gt;
&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
La téléportation quantique consiste à transférer l&#039;état du qubit A dans le qubit B. Il s&#039;agit donc cette fois d&#039;une opération de couper/coller.&lt;br /&gt;
L&#039;intrication quantique se produit lorsque deux qubits sont dépendants l&#039;un de l&#039;autre même s&#039;ils sont éloignés l&#039;un de l&#039;autre. Dans cet état, si on mesure l&#039;un des deux, alors la mesure du deuxième est déterminée.&lt;br /&gt;
Sans entrer dans la théorie physique sous jacente, nous pouvons dire qu&#039;un canal EPR permet de réaliser cette opération de couper/coller en transmettant une information entre deux ordinateurs quantiques.&lt;br /&gt;
&lt;br /&gt;
== Chiffrement à clé publique face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mise en danger de la sécurité du Web&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Les ordinateurs quantiques présentent une rapidité de calculs extrèmement plus rapide que les ordinateurs à base de sillicium. Ces ordinateurs auraient aucune difficulté pour casser les codes de sécurité actuels reposant principalement sur un chiffrement à clé publique. Par définition le chiffrement à clé publique utilise une clé publique pour le chiffrement et une clé privée pour le décodage en se basant sur des grands nombres. Cependant ces grands nombres peuvent être vite retrouvés par des ordinateurs quantiques.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Exemple de chiffrement asymétrique: RSA&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ce chiffrement est couramment utilisé dans la sécurité du Web. &lt;br /&gt;
RSA repose sur la génération de grands nombres premiers, d&#039;un chiffrement avec une clé publique et d&#039;un déchiffrement avec une clé privée. &lt;br /&gt;
&lt;br /&gt;
* Initialisation : &lt;br /&gt;
** module &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; (grand nombre entier codé sur 2048 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;p, q&amp;lt;/math&amp;gt; : nombres premiers de même taille (codés sur 1024 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;\phi(N) = (p-1) * (q - 1)&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd(e, \phi(N)) = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
** Choisir &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;ed \equiv 1 [\phi(N)]&amp;lt;/math&amp;gt; et donc &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; est l&#039;inverse modulaire de &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; avec &amp;lt;math&amp;gt;d = e^-1 [\phi(N)]&amp;lt;/math&amp;gt;&lt;br /&gt;
** Clé publique : &amp;lt;math&amp;gt;pk(n, e)&amp;lt;/math&amp;gt;, Clé privée : &amp;lt;math&amp;gt;sk(d, p, q)&amp;lt;/math&amp;gt;&lt;br /&gt;
* Chiffrement : &amp;lt;math&amp;gt;c = m^e [N]&amp;lt;/math&amp;gt;&lt;br /&gt;
* Déchiffrement : &amp;lt;math&amp;gt;m = c^d [N]&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Exemple : &amp;lt;math&amp;gt;N=15&amp;lt;/math&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* Je choisis &amp;lt;math&amp;gt;x=7&amp;lt;/math&amp;gt;&lt;br /&gt;
* En calculant successivement les valeurs de &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; on trouve &amp;lt;math&amp;gt;7^{4} \equiv 1 [15]&amp;lt;/math&amp;gt;.&lt;br /&gt;
* &amp;lt;math&amp;gt;r=4&amp;lt;/math&amp;gt; est pair&lt;br /&gt;
* &amp;lt;math&amp;gt;pgcd(x^{\frac{r}{2}}+1,15) = 5&amp;lt;/math&amp;gt;. Donc &amp;lt;math&amp;gt;P = 5&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;Q = pgcd(x^{\frac{r}{2}}-1,15) = 3&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La sécurité de RSA repose sur la difficulté à factoriser des grands nombres en nombres premiers. En effet avec &amp;lt;math&amp;gt;(N, e)&amp;lt;/math&amp;gt; il faudrait pouvoir retrouver &amp;lt;math&amp;gt;(d, p, q)&amp;lt;/math&amp;gt; où &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt; correspondant à un cassage total. D&#039;après le théorème de factorisation unique tout entier &amp;lt;math&amp;gt;n \ge 2&amp;lt;/math&amp;gt; admet une factorisation unique en produit de puissances de nombres entiers. Des algorithmes de factorisation ont été trouvés pour différentes tailles de module $N$ mais pour pallier à ces attaques on augmente la longueur du module. De nos jours pour sécuriser le chiffrement il faut utiliser des modules strictement supérieur à 2048 bits. Cependant avec l&#039;informatique quantique il ne suffira plus d&#039;augmenter la taille du module car la puissance de calcul permettra de casser le chiffrement, peu importe la taille du module.&lt;br /&gt;
&lt;br /&gt;
== Chiffrement à clé privée face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mise en danger de la sécurité&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Si les ordinateurs quantiques présentent une rapidité de calcul permettant d&#039;effectuer des factorisations impossibles pour un ordinateur classique, il nous semble logique qu&#039;ils soient également performants pour effectuer des attaques de type force brute sur des messages chiffrés par une clé privée qui aurait été transmise par un moyen plus sûr que RSA.&lt;br /&gt;
 &lt;br /&gt;
Un ordinateur quantique pourrait réaliser le déchiffrement avec toutes les clés possibles en parallèle. Ce qui permettrait de cryptanalyser le message en une seule opération. Le principe se base sur la superposition quantique. On superposerait toutes les clés possibles et on déchiffrerait. On obtiendrait alors une superposition de résultats. Le point le plus difficile est de trouver le résultat correct à partir de la superposition obtenue. En effet, le principe selon lequel mesurer une valeur modifie cette valeur fait qu&#039;en observant une superposition, on obtient un seul état aléatoire. Une solution à ce problème a été trouvé par Lov Grover en $O(\sqrt{n})$ étapes.&lt;br /&gt;
&lt;br /&gt;
== Résistances aux attaques quantiques ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nouvel algorithme&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Depuis 2006, une conférence internationnale se produit chaque année nommée &amp;quot;Post Quantum Cryptography&amp;quot; dans l&#039;intention de trouver des algorithmes résistants aux ordinateurs quantiques. Nathan Hamlin et William Webb, des mathématiciens, ont présenté récemment un algorithme de chiffrement asymétrique possiblement capable de faire face aux attaques quantiques. Cet algorithme part de l&#039;ancien chiffrement de Merkle-Hellman qui se base sur le problème du sac à dos nommé &amp;quot;Knapsack code&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
[[Problème du sac-à-dos]]&lt;br /&gt;
&lt;br /&gt;
Etant donné un sac avec une capacité &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; et plusieurs objets de poids différents. Le problème du sac-à-dos consiste à trouver la suite d&#039;objets qui entre dans le sac et qui maximise sa capacité. En partant d&#039;un n-uplet &amp;lt;math&amp;gt;\left(a_1, a_2, ..., a_n\right) \in N^n&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;S \in N&amp;lt;/math&amp;gt;, il faut trouver un n-uplet binaire &amp;lt;math&amp;gt;\left(x_1, x_2, ..., x_n\right) \in {0,1}^n&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;S = \sum_{i=1}^{n} \left(a_{i}*x_{i}\right) &amp;lt;/math&amp;gt;. La somme &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; des poids des objets choisi ne doit pas dépasser la capacité du sac à dos. Pour résoudre ce problème il n&#039;existe pas d&#039;algorithme avec une compléxité polynomial.&lt;br /&gt;
&lt;br /&gt;
[[Chiffrement de Merkle-Hellman]]&lt;br /&gt;
&lt;br /&gt;
Cet algorithme de chiffrement à clé publique repose sur la complexité algorithmique du problème de sac-à-dos et utilise des suites de poids super-croissante pour le secret et non super-croissante pour la clé publique. Si les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt; n&#039;ont pas de propriétés particulières, la recherche du message codé en binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt; est un problème difficile. Il n&#039;existe pas d&#039;algorithme polynomial pour le résoudre. Pour pouvoir retrouver facilement ce n-uplet une propriété super-croissante est utilisé sur les &amp;lt;math&amp;gt;\left(a_{i}\right)_{i}&amp;lt;/math&amp;gt;. Un n-uplet b est super-croissant si &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\forall i \in [2,n] b_{i} &amp;gt; \sum_{j=1}^{i-1} {b_{j}}&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ainsi en utilisant un algorithme glouton nous pouvons retrouver le n-uplet binaire &amp;lt;math&amp;gt;\left(x_{i}\right)_{i}&amp;lt;/math&amp;gt;. L&#039;objet le plus lourd est dans le sac si le poids du sac est supérieur au poids de celui-ci. La propriété super-croissante assure que la somme des poids des autres objets sera toujours inférieur au poids de l&#039;objet le plus lourd. L&#039;algorithme est le suivant :&lt;br /&gt;
&lt;br /&gt;
  Pour i de n à 1 faire&lt;br /&gt;
    Si &amp;lt;math&amp;gt;b_{i} \le S&amp;lt;/math&amp;gt; alors&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i}  = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
    Sinon&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i} = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
    &amp;lt;math&amp;gt;S = S - x_{i} * b_{i}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Par exemple en prenant la suite des puissances de 2 comme suite super-croissante  avec : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = \left\{ 1,4,8 \right\}, b = \left\{ 1,2,4,8 \right\}, S = 13 \left(1+4+8\right), n = 4&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 4 : 8 \le 13 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_4 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 3 : 4 \le 5 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_3 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 2 : 2 \le 1 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    non donc &amp;lt;math&amp;gt;x_2 = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 1 : 1 \le 1 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_1 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  =&amp;gt; &amp;lt;math&amp;gt;m = \left\{ 1,0,1,1 \right\}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pour chiffrer un n-uplet binaire &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;, l&#039;idée de Merkle et Hellman est de &amp;quot;tordre&amp;quot; les &amp;lt;math&amp;gt;b_{i}&amp;lt;/math&amp;gt; pour obtenir un n-uplet qui n&#039;est plus super-croissant. On choisit un nombre &amp;lt;math&amp;gt;u &amp;gt; \sum_{i=1}^{n} {b_{i}}&amp;lt;/math&amp;gt;, un entier &amp;lt;math&amp;gt;v \in N&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd\left(u,v\right) = 1&amp;lt;/math&amp;gt;. Ce qui donne &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; inversible dans &amp;lt;math&amp;gt;Z/uZ&amp;lt;/math&amp;gt;. On prend &amp;lt;math&amp;gt;w = v^{-1} \in Z/uZ&amp;lt;/math&amp;gt;. On calcule ensuite le n-uplet &amp;lt;math&amp;gt;a = \left(a_1, ..., a_n\right)&amp;lt;/math&amp;gt; tel que pour tout &amp;lt;math&amp;gt;i \in [1,n]&amp;lt;/math&amp;gt; on a : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;a = a * b_i (mod u)&amp;lt;/math&amp;gt;. &amp;lt;br/&amp;gt;&lt;br /&gt;
Le n-uplet &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; détermine la clé public tandis que &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;w&amp;lt;/math&amp;gt; sont gardés secrets. &amp;lt;br/&amp;gt;&lt;br /&gt;
Pour envoyer le message m à Bob, Alice va, à partir de l&#039;écriture de m en binaire, calculer la somme : &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;c = \sum_{i=1}^{n} {m_i * a_i}&amp;lt;/math&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
qu&#039;elle va envoyer à Bob. Bob pour déchiffrer va devoir procéder à plusieurs étapes : &lt;br /&gt;
&lt;br /&gt;
Le nouvel algorithme de Nathan Hamlin et William Webb renforce l&#039;algorithme du sac à dos et permet de créer de nouvelles clés publiques.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Chiffrement quantique&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Photons polarisés&lt;br /&gt;
&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Les photons sont des particules qui composent la lumière. Ils sont composés d&#039;un champ électrique et d&#039;un champ magnétique. Une lumière non-polarisée se caractérise par une différence d&#039;orientation du champ électrique suivant les photons. Ainsi la polarisation consiste, grâce à un polarisateur, d&#039;obtenir des photons avec un champ électrique orienté de manière identique. Les filtres polarisants permettent d&#039;appliquer un angle d&#039;orientation sur les photons afin :&lt;br /&gt;
* de récupérer les photons polarisés parallèlement par rapport à cet angle&lt;br /&gt;
* d&#039;éliminer les photons polarisés perpendiculairement&lt;br /&gt;
* de récupérer les photons polarisés intermédiaires avec une probabilité de &amp;lt;math&amp;gt;\cos\left(\alpha\right)&amp;lt;/math&amp;gt; en les réinitialisant avec une polarisation égale à l&#039;angle d&#039;orientation du filtre.&lt;br /&gt;
&lt;br /&gt;
Du fait de la transformation de polarisation il est impossible de connaître l&#039;information sur les polarisations précédentes du photons.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Distribution des clés&lt;br /&gt;
&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Le chiffrement quantique offre un moyen sécurisé d’échanger des clés privées pour réaliser des chiffrements symétriques. Cette distribution s’appuie sur l’envoi de photons polarisés par fibre optique. Les personnes s&#039;échangeant les clés doivent avoir accès à un canal quantique et un canal classique. Le principe est le suivant :&lt;br /&gt;
* Alice envoie par le canal quantique une suite de photons polarisés aléatoirement.&lt;br /&gt;
* Bob applique un filtre de polarisation qui lui donne 1 chance sur 2 (et 1 chance sur 4 s&#039;il y a eu un espion) d&#039;appliquer le bon filtre et les renvoit à Alice.&lt;br /&gt;
* Alice et Bob s&#039;échangent par le canal classique leur choix des axes de polarisation éliminant ainsi les erreurs.&lt;br /&gt;
* Alice communique une partie de ses résultats.&lt;br /&gt;
* Maintenant que Bob connait les axes qu&#039;Alice a appliqué et les résultats il peut savoir si la communication a été écoutée ou non. Ceci étant grâce au théorème de non clonage où il est impossible de cloner des états quantiques inconnus.&lt;br /&gt;
&lt;br /&gt;
Ce principe permet de détecter facilement s&#039;il y a eu des intrusions durant la communication de la clé privée. En effet si un attaquant écoute il lui faut récupérer les photons envoyés par Alice mesurer la polarisation et renvoyer le photon à Bob. Pour mesurer la polarisation l&#039;attaquant doit appliquer, comme Bob, un filtre pour deviner la base qu&#039;Alice a envoyé. Ainsi cette intrusion a 1 chance sur 2 d&#039;introduire des incohérences dans les données d&#039;Alice et Bob en envoyant 1 fois sur 2 un mauvais photon. Par la suite Bob obtient donc 1 chance sur 4 d&#039;appliquer le bon filtre. Par analyses statistiques, Alice et Bob peuvent détecter de manière sure s&#039;il y a eu espionnage sur le canal quantique.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Attaque de l&#039;homme du milieu&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Comme toute méthode d&#039;échange de clé privée, cette méthode reste vulnérable à une attaque de type &amp;quot;homme du milieu&amp;quot;. Il faut donc la combiner avec un mécanisme de certification afin de s&#039;assurer de l&#039;identité des protagonistes.&lt;/div&gt;</summary>
		<author><name>JulianaLeclaire</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8645</id>
		<title>Projets étudiants cryptographie et sécurité/Leclaire DeRoland Crypto Quantique</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8645"/>
		<updated>2016-03-17T08:48:09Z</updated>

		<summary type="html">&lt;p&gt;JulianaLeclaire : /* Résistances aux attaques quantiques */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Auteurs : Juliana Leclaire, Céline de Roland ===&lt;br /&gt;
&lt;br /&gt;
== La cryptographie et la cryptanalyse dans le contexte de l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Introduction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
L&#039;informatique quantique se base sur la superposition de plusieurs états quantiques pour améliorer les capacités de calculs. &lt;br /&gt;
&lt;br /&gt;
Ce domaine nous amène à un vrai problème dans le sécurité de l&#039;internet. Car l&#039;informatique quantique, avec ses capacités de calculs va pouvoir casser les algorithmes de chiffrement asymétriques qui sont présents dans le Web. Les chiffrements asymétriques sont utilisés dans le connexions SSL/TLS, les paiements en ligne, etc.&lt;br /&gt;
&lt;br /&gt;
En partie pour ces raisons, il existe différents acteurs qui se penchent sur ce domaine. Notamment, la NSA, Google qui cherche à construire son propre ordinateur quantique.&lt;br /&gt;
Dans cette page, nous allons nous demander en quoi l&#039;informatique quantique peut changer le Web d&#039;aujourd&#039;hui et comment faire face à cette arrivée ?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Fonctionnement de l&#039;informatique quantique&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Qubit&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C&#039;est la plus petite unité de stockage de l&#039;information. Etant donné deux états de base &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;, un qubit non mesuré se trouve dans l&#039;état &amp;lt;math&amp;gt;\alpha \left|0\right\rangle + \beta \left|1\right\rangle&amp;lt;/math&amp;gt;, avec &amp;lt;math&amp;gt;|\alpha|^2 + |\beta|^2 = 1&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Lorsqu&#039;on mesure la valeur du qubit, on obtient soit &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; soit &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;|\alpha|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et  &amp;lt;math&amp;gt;|\beta|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
    &lt;br /&gt;
&#039;&#039;Théorème de non clonage&lt;br /&gt;
&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ce théorème, découvert en 1982 par Wootters, Zurek, et Dieks, consiste à dire qu&#039;il est impossible de recopier un qubit à l&#039;identique. La démonstration (par l&#039;absurde) repose sur le fait que pouvoir mettre le qubit B dans le même état que le qubit A implique que le qubit B soit déjà dans le même état que le qubit A.&lt;br /&gt;
On en déduit qu&#039;il est impossible de faire une opération de type copier/coller en informatique quantique.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Téléportation quantique&lt;br /&gt;
&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
La téléportation quantique consiste à transférer l&#039;état du qubit A dans le qubit B. Il s&#039;agit donc cette fois d&#039;une opération de couper/coller.&lt;br /&gt;
L&#039;intrication quantique se produit lorsque deux qubits sont dépendants l&#039;un de l&#039;autre même s&#039;ils sont éloignés l&#039;un de l&#039;autre. Dans cet état, si on mesure l&#039;un des deux, alors la mesure du deuxième est déterminée.&lt;br /&gt;
Sans entrer dans la théorie physique sous jacente, nous pouvons dire qu&#039;un canal EPR permet de réaliser cette opération de couper/coller en transmettant une information entre deux ordinateurs quantiques.&lt;br /&gt;
&lt;br /&gt;
== Chiffrement à clé publique face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mise en danger de la sécurité du Web&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Les ordinateurs quantiques présentent une rapidité de calculs extrèmement plus rapide que les ordinateurs à base de sillicium. Ces ordinateurs auraient aucune difficulté pour casser les codes de sécurité actuels reposant principalement sur un chiffrement à clé publique. Par définition le chiffrement à clé publique utilise une clé publique pour le chiffrement et une clé privée pour le décodage en se basant sur des grands nombres. Cependant ces grands nombres peuvent être vite retrouvés par des ordinateurs quantiques.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Exemple de chiffrement asymétrique: RSA&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ce chiffrement est couramment utilisé dans la sécurité du Web. &lt;br /&gt;
RSA repose sur la génération de grands nombres premiers, d&#039;un chiffrement avec une clé publique et d&#039;un déchiffrement avec une clé privée. &lt;br /&gt;
&lt;br /&gt;
* Initialisation : &lt;br /&gt;
** module &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; (grand nombre entier codé sur 2048 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;p, q&amp;lt;/math&amp;gt; : nombres premiers de même taille (codés sur 1024 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;\phi(N) = (p-1) * (q - 1)&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd(e, \phi(N)) = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
** Choisir &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;ed \equiv 1 [\phi(N)]&amp;lt;/math&amp;gt; et donc &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; est l&#039;inverse modulaire de &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; avec &amp;lt;math&amp;gt;d = e^-1 [\phi(N)]&amp;lt;/math&amp;gt;&lt;br /&gt;
** Clé publique : &amp;lt;math&amp;gt;pk(n, e)&amp;lt;/math&amp;gt;, Clé privée : &amp;lt;math&amp;gt;sk(d, p, q)&amp;lt;/math&amp;gt;&lt;br /&gt;
* Chiffrement : &amp;lt;math&amp;gt;c = m^e [N]&amp;lt;/math&amp;gt;&lt;br /&gt;
* Déchiffrement : &amp;lt;math&amp;gt;m = c^d [N]&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Exemple : &amp;lt;math&amp;gt;N=15&amp;lt;/math&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* Je choisis &amp;lt;math&amp;gt;x=7&amp;lt;/math&amp;gt;&lt;br /&gt;
* En calculant successivement les valeurs de &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; on trouve &amp;lt;math&amp;gt;7^{4} \equiv 1 [15]&amp;lt;/math&amp;gt;.&lt;br /&gt;
* &amp;lt;math&amp;gt;r=4&amp;lt;/math&amp;gt; est pair&lt;br /&gt;
* &amp;lt;math&amp;gt;pgcd(x^{\frac{r}{2}}+1,15) = 5&amp;lt;/math&amp;gt;. Donc &amp;lt;math&amp;gt;P = 5&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;Q = pgcd(x^{\frac{r}{2}}-1,15) = 3&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La sécurité de RSA repose sur la difficulté à factoriser des grands nombres en nombres premiers. En effet avec &amp;lt;math&amp;gt;(N, e)&amp;lt;/math&amp;gt; il faudrait pouvoir retrouver &amp;lt;math&amp;gt;(d, p, q)&amp;lt;/math&amp;gt; où &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt; correspondant à un cassage total. D&#039;après le théorème de factorisation unique tout entier &amp;lt;math&amp;gt;n \ge 2&amp;lt;/math&amp;gt; admet une factorisation unique en produit de puissances de nombres entiers. Des algorithmes de factorisation ont été trouvés pour différentes tailles de module $N$ mais pour pallier à ces attaques on augmente la longueur du module. De nos jours pour sécuriser le chiffrement il faut utiliser des modules strictement supérieur à 2048 bits. Cependant avec l&#039;informatique quantique il ne suffira plus d&#039;augmenter la taille du module car la puissance de calcul permettra de casser le chiffrement, peu importe la taille du module.&lt;br /&gt;
&lt;br /&gt;
== Chiffrement à clé privée face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mise en danger de la sécurité&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Si les ordinateurs quantiques présentent une rapidité de calcul permettant d&#039;effectuer des factorisations impossibles pour un ordinateur classique, il nous semble logique qu&#039;ils soient également performants pour effectuer des attaques de type force brute sur des messages chiffrés par une clé privée qui aurait été transmise par un moyen plus sûr que RSA.&lt;br /&gt;
 &lt;br /&gt;
Un ordinateur quantique pourrait réaliser le déchiffrement avec toutes les clés possibles en parallèle. Ce qui permettrait de cryptanalyser le message en une seule opération. Le principe se base sur la superposition quantique. On superposerait toutes les clés possibles et on déchiffrerait. On obtiendrait alors une superposition de résultats. Le point le plus difficile est de trouver le résultat correct à partir de la superposition obtenue. En effet, le principe selon lequel mesurer une valeur modifie cette valeur fait qu&#039;en observant une superposition, on obtient un seul état aléatoire. Une solution à ce problème a été trouvé par Lov Grover en $O(\sqrt{n})$ étapes.&lt;br /&gt;
&lt;br /&gt;
== Résistances aux attaques quantiques ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nouvel algorithme&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Depuis 2006, une conférence internationnale se produit chaque année nommée &amp;quot;Post Quantum Cryptography&amp;quot; dans l&#039;intention de trouver des algorithmes résistants aux ordinateurs quantiques. Nathan Hamlin et William Webb, des mathématiciens, ont présenté récemment un algorithme de chiffrement asymétrique possiblement capable de faire face aux attaques quantiques. Cet algorithme part de l&#039;ancien chiffrement de Merkle-Hellman qui se base sur le problème du sac à dos nommé &amp;quot;Knapsack code&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
[[Problème du sac-à-dos]]&lt;br /&gt;
&lt;br /&gt;
Etant donné un sac avec une capacité &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; et plusieurs objets de poids différents. Le problème du sac-à-dos consiste à trouver la suite d&#039;objets qui entre dans le sac et qui maximise sa capacité. En partant d&#039;un n-uplet &amp;lt;math&amp;gt;(a_1, a_2, ..., a_n) \in N^n&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;S \in N&amp;lt;/math&amp;gt;, il faut trouver un n-uplet binaire &amp;lt;math&amp;gt;(x_1, x_2, ..., x_n) \in {0,1}^n&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;S = \sum_{i=1}^{n} (a_{i}*x_{i}) &amp;lt;/math&amp;gt;. La somme &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; des poids des objets choisi ne doit pas dépasser la capacité du sac à dos. Pour résoudre ce problème il n&#039;existe pas d&#039;algorithme avec une compléxité polynomial.&lt;br /&gt;
&lt;br /&gt;
[[Chiffrement de Merkle-Hellman]]&lt;br /&gt;
&lt;br /&gt;
Cet algorithme de chiffrement à clé publique repose sur la complexité algorithmique du problème de sac-à-dos et utilise des suites de poids super-croissante pour le secret et non super-croissante pour la clé publique. Si les &amp;lt;math&amp;gt;(a_{i}){i}&amp;lt;/math&amp;gt; n&#039;ont pas de propriétés particulières, la recherche du message codé en binaire &amp;lt;math&amp;gt;(x_{i})_{i}&amp;lt;/math&amp;gt; est un problème difficile. Il n&#039;existe pas d&#039;algorithme polynomial pour le résoudre. Pour pouvoir retrouver facilement ce n-uplet une propriété super-croissante est utilisé sur les &amp;lt;math&amp;gt;(a_{i})_{i}&amp;lt;/math&amp;gt;. Un n-uplet b est super-croissant si &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\forall i \in [2,n] b_{i} &amp;gt; \sum_{j=1}^{i-1} {b_{j}}&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ainsi en utilisant un algorithme glouton nous pouvons retrouver le n-uplet binaire &amp;lt;math&amp;gt;(x_{i})_{i}&amp;lt;/math&amp;gt;. L&#039;objet le plus lourd est dans le sac si le poids du sac est supérieur au poids de celui-ci. La propriété super-croissante assure que la somme des poids des autres objets sera toujours inférieur au poids de l&#039;objet le plus lourd. L&#039;algorithme est le suivant :&lt;br /&gt;
&lt;br /&gt;
  Pour i de n à 1 faire&lt;br /&gt;
    Si &amp;lt;math&amp;gt;b_{i} \le S&amp;lt;/math&amp;gt; alors&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i}  = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
    Sinon&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i} = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
    &amp;lt;math&amp;gt;S = S - x_{i} * b_{i}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Par exemple en prenant la suite des puissances de 2 comme suite super-croissante  avec : &amp;lt;br/&amp;gt;&lt;br /&gt;
a = {1,4,8}, b = {1,2,4,8}, S = 13 (1+4+8), n = 4&lt;br /&gt;
&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 4 : 8 \le 13 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_4 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 3 : 4 \le 5 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_3 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 2 : 2 \le 1 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    non donc &amp;lt;math&amp;gt;x_2 = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
  Pour &amp;lt;math&amp;gt;i = 1 : 1 \le 1 ?&amp;lt;/math&amp;gt;&lt;br /&gt;
    oui donc &amp;lt;math&amp;gt;x_1 = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  =&amp;gt; m = {1,0,1,1}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le nouvel algorithme de Nathan Hamlin et William Webb renforce l&#039;algorithme du sac à dos et permet de créer de nouvelles clés publiques.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Chiffrement quantique&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Photons polarisés&lt;br /&gt;
&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Les photons sont des particules qui composent la lumière. Ils sont composés d&#039;un champ électrique et d&#039;un champ magnétique. Une lumière non-polarisée se caractérise par une différence d&#039;orientation du champ électrique suivant les photons. Ainsi la polarisation consiste, grâce à un polarisateur, d&#039;obtenir des photons avec un champ électrique orienté de manière identique. Les filtres polarisants permettent d&#039;appliquer un angle d&#039;orientation sur les photons afin :&lt;br /&gt;
* de récupérer les photons polarisés parallèlement par rapport à cet angle&lt;br /&gt;
* d&#039;éliminer les photons polarisés perpendiculairement&lt;br /&gt;
* de récupérer les photons polarisés intermédiaires avec une probabilité de &amp;lt;math&amp;gt;\cos(\alpha)&amp;lt;/math&amp;gt; en les réinitialisant avec une polarisation égale à l&#039;angle d&#039;orientation du filtre.&lt;br /&gt;
&lt;br /&gt;
Du fait de la transformation de polarisation il est impossible de connaître l&#039;information sur les polarisations précédentes du photons.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Distribution des clés&lt;br /&gt;
&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Le chiffrement quantique offre un moyen sécurisé d’échanger des clés privées pour réaliser des chiffrements symétriques. Cette distribution s’appuie sur l’envoi de photons polarisés par fibre optique. Les personnes s&#039;échangeant les clés doivent avoir accès à un canal quantique et un canal classique. Le principe est le suivant :&lt;br /&gt;
* Alice envoie par le canal quantique une suite de photons polarisés aléatoirement.&lt;br /&gt;
* Bob applique un filtre de polarisation qui lui donne 1 chance sur 2 (et 1 chance sur 4 s&#039;il y a eu un espion) d&#039;appliquer le bon filtre et les renvoit à Alice.&lt;br /&gt;
* Alice et Bob s&#039;échangent par le canal classique leur choix des axes de polarisation éliminant ainsi les erreurs.&lt;br /&gt;
* Alice communique une partie de ses résultats.&lt;br /&gt;
* Maintenant que Bob connait les axes qu&#039;Alice a appliqué et les résultats il peut savoir si la communication a été écoutée ou non. Ceci étant grâce au théorème de non clonage où il est impossible de cloner des états quantiques inconnus.&lt;br /&gt;
&lt;br /&gt;
Ce principe permet de détecter facilement s&#039;il y a eu des intrusions durant la communication de la clé privée. En effet si un attaquant écoute il lui faut récupérer les photons envoyés par Alice mesurer la polarisation et renvoyer le photon à Bob. Pour mesurer la polarisation l&#039;attaquant doit appliquer, comme Bob, un filtre pour deviner la base qu&#039;Alice a envoyé. Ainsi cette intrusion a 1 chance sur 2 d&#039;introduire des incohérences dans les données d&#039;Alice et Bob en envoyant 1 fois sur 2 un mauvais photon. Par la suite Bob obtient donc 1 chance sur 4 d&#039;appliquer le bon filtre. Par analyses statistiques, Alice et Bob peuvent détecter de manière sure s&#039;il y a eu espionnage sur le canal quantique.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Attaque de l&#039;homme du milieu&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Comme toute méthode d&#039;échange de clé privée, cette méthode reste vulnérable à une attaque de type &amp;quot;homme du milieu&amp;quot;. Il faut donc la combiner avec un mécanisme de certification afin de s&#039;assurer de l&#039;identité des protagonistes.&lt;/div&gt;</summary>
		<author><name>JulianaLeclaire</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8644</id>
		<title>Projets étudiants cryptographie et sécurité/Leclaire DeRoland Crypto Quantique</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8644"/>
		<updated>2016-03-17T08:34:20Z</updated>

		<summary type="html">&lt;p&gt;JulianaLeclaire : /* Résistances aux attaques quantiques */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Auteurs : Juliana Leclaire, Céline de Roland ===&lt;br /&gt;
&lt;br /&gt;
== La cryptographie et la cryptanalyse dans le contexte de l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Introduction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
L&#039;informatique quantique se base sur la superposition de plusieurs états quantiques pour améliorer les capacités de calculs. &lt;br /&gt;
&lt;br /&gt;
Ce domaine nous amène à un vrai problème dans le sécurité de l&#039;internet. Car l&#039;informatique quantique, avec ses capacités de calculs va pouvoir casser les algorithmes de chiffrement asymétriques qui sont présents dans le Web. Les chiffrements asymétriques sont utilisés dans le connexions SSL/TLS, les paiements en ligne, etc.&lt;br /&gt;
&lt;br /&gt;
En partie pour ces raisons, il existe différents acteurs qui se penchent sur ce domaine. Notamment, la NSA, Google qui cherche à construire son propre ordinateur quantique.&lt;br /&gt;
Dans cette page, nous allons nous demander en quoi l&#039;informatique quantique peut changer le Web d&#039;aujourd&#039;hui et comment faire face à cette arrivée ?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Fonctionnement de l&#039;informatique quantique&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Qubit&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C&#039;est la plus petite unité de stockage de l&#039;information. Etant donné deux états de base &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;, un qubit non mesuré se trouve dans l&#039;état &amp;lt;math&amp;gt;\alpha \left|0\right\rangle + \beta \left|1\right\rangle&amp;lt;/math&amp;gt;, avec &amp;lt;math&amp;gt;|\alpha|^2 + |\beta|^2 = 1&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Lorsqu&#039;on mesure la valeur du qubit, on obtient soit &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; soit &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;|\alpha|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et  &amp;lt;math&amp;gt;|\beta|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
    &lt;br /&gt;
&#039;&#039;Théorème de non clonage&lt;br /&gt;
&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ce théorème, découvert en 1982 par Wootters, Zurek, et Dieks, consiste à dire qu&#039;il est impossible de recopier un qubit à l&#039;identique. La démonstration (par l&#039;absurde) repose sur le fait que pouvoir mettre le qubit B dans le même état que le qubit A implique que le qubit B soit déjà dans le même état que le qubit A.&lt;br /&gt;
On en déduit qu&#039;il est impossible de faire une opération de type copier/coller en informatique quantique.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Téléportation quantique&lt;br /&gt;
&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
La téléportation quantique consiste à transférer l&#039;état du qubit A dans le qubit B. Il s&#039;agit donc cette fois d&#039;une opération de couper/coller.&lt;br /&gt;
L&#039;intrication quantique se produit lorsque deux qubits sont dépendants l&#039;un de l&#039;autre même s&#039;ils sont éloignés l&#039;un de l&#039;autre. Dans cet état, si on mesure l&#039;un des deux, alors la mesure du deuxième est déterminée.&lt;br /&gt;
Sans entrer dans la théorie physique sous jacente, nous pouvons dire qu&#039;un canal EPR permet de réaliser cette opération de couper/coller en transmettant une information entre deux ordinateurs quantiques.&lt;br /&gt;
&lt;br /&gt;
== Chiffrement à clé publique face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mise en danger de la sécurité du Web&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Les ordinateurs quantiques présentent une rapidité de calculs extrèmement plus rapide que les ordinateurs à base de sillicium. Ces ordinateurs auraient aucune difficulté pour casser les codes de sécurité actuels reposant principalement sur un chiffrement à clé publique. Par définition le chiffrement à clé publique utilise une clé publique pour le chiffrement et une clé privée pour le décodage en se basant sur des grands nombres. Cependant ces grands nombres peuvent être vite retrouvés par des ordinateurs quantiques.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Exemple de chiffrement asymétrique: RSA&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ce chiffrement est couramment utilisé dans la sécurité du Web. &lt;br /&gt;
RSA repose sur la génération de grands nombres premiers, d&#039;un chiffrement avec une clé publique et d&#039;un déchiffrement avec une clé privée. &lt;br /&gt;
&lt;br /&gt;
* Initialisation : &lt;br /&gt;
** module &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; (grand nombre entier codé sur 2048 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;p, q&amp;lt;/math&amp;gt; : nombres premiers de même taille (codés sur 1024 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;\phi(N) = (p-1) * (q - 1)&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd(e, \phi(N)) = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
** Choisir &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;ed \equiv 1 [\phi(N)]&amp;lt;/math&amp;gt; et donc &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; est l&#039;inverse modulaire de &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; avec &amp;lt;math&amp;gt;d = e^-1 [\phi(N)]&amp;lt;/math&amp;gt;&lt;br /&gt;
** Clé publique : &amp;lt;math&amp;gt;pk(n, e)&amp;lt;/math&amp;gt;, Clé privée : &amp;lt;math&amp;gt;sk(d, p, q)&amp;lt;/math&amp;gt;&lt;br /&gt;
* Chiffrement : &amp;lt;math&amp;gt;c = m^e [N]&amp;lt;/math&amp;gt;&lt;br /&gt;
* Déchiffrement : &amp;lt;math&amp;gt;m = c^d [N]&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Exemple : &amp;lt;math&amp;gt;N=15&amp;lt;/math&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* Je choisis &amp;lt;math&amp;gt;x=7&amp;lt;/math&amp;gt;&lt;br /&gt;
* En calculant successivement les valeurs de &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; on trouve &amp;lt;math&amp;gt;7^{4} \equiv 1 [15]&amp;lt;/math&amp;gt;.&lt;br /&gt;
* &amp;lt;math&amp;gt;r=4&amp;lt;/math&amp;gt; est pair&lt;br /&gt;
* &amp;lt;math&amp;gt;pgcd(x^{\frac{r}{2}}+1,15) = 5&amp;lt;/math&amp;gt;. Donc &amp;lt;math&amp;gt;P = 5&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;Q = pgcd(x^{\frac{r}{2}}-1,15) = 3&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La sécurité de RSA repose sur la difficulté à factoriser des grands nombres en nombres premiers. En effet avec &amp;lt;math&amp;gt;(N, e)&amp;lt;/math&amp;gt; il faudrait pouvoir retrouver &amp;lt;math&amp;gt;(d, p, q)&amp;lt;/math&amp;gt; où &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt; correspondant à un cassage total. D&#039;après le théorème de factorisation unique tout entier &amp;lt;math&amp;gt;n \ge 2&amp;lt;/math&amp;gt; admet une factorisation unique en produit de puissances de nombres entiers. Des algorithmes de factorisation ont été trouvés pour différentes tailles de module $N$ mais pour pallier à ces attaques on augmente la longueur du module. De nos jours pour sécuriser le chiffrement il faut utiliser des modules strictement supérieur à 2048 bits. Cependant avec l&#039;informatique quantique il ne suffira plus d&#039;augmenter la taille du module car la puissance de calcul permettra de casser le chiffrement, peu importe la taille du module.&lt;br /&gt;
&lt;br /&gt;
== Chiffrement à clé privée face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mise en danger de la sécurité&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Si les ordinateurs quantiques présentent une rapidité de calcul permettant d&#039;effectuer des factorisations impossibles pour un ordinateur classique, il nous semble logique qu&#039;ils soient également performants pour effectuer des attaques de type force brute sur des messages chiffrés par une clé privée qui aurait été transmise par un moyen plus sûr que RSA.&lt;br /&gt;
 &lt;br /&gt;
Un ordinateur quantique pourrait réaliser le déchiffrement avec toutes les clés possibles en parallèle. Ce qui permettrait de cryptanalyser le message en une seule opération. Le principe se base sur la superposition quantique. On superposerait toutes les clés possibles et on déchiffrerait. On obtiendrait alors une superposition de résultats. Le point le plus difficile est de trouver le résultat correct à partir de la superposition obtenue. En effet, le principe selon lequel mesurer une valeur modifie cette valeur fait qu&#039;en observant une superposition, on obtient un seul état aléatoire. Une solution à ce problème a été trouvé par Lov Grover en $O(\sqrt{n})$ étapes.&lt;br /&gt;
&lt;br /&gt;
== Résistances aux attaques quantiques ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nouvel algorithme&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Depuis 2006, une conférence internationnale se produit chaque année nommée &amp;quot;Post Quantum Cryptography&amp;quot; dans l&#039;intention de trouver des algorithmes résistants aux ordinateurs quantiques. Nathan Hamlin et William Webb, des mathématiciens, ont présenté récemment un algorithme de chiffrement asymétrique possiblement capable de faire face aux attaques quantiques. Cet algorithme part de l&#039;ancien chiffrement de Merkle-Hellman qui se base sur le problème du sac à dos nommé &amp;quot;Knapsack code&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
[[Problème du sac-à-dos]]&lt;br /&gt;
&lt;br /&gt;
Etant donné un sac avec une capacité &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; et plusieurs objets de poids différents. Le problème du sac-à-dos consiste à trouver la suite d&#039;objets qui entre dans le sac et qui maximise sa capacité. En partant d&#039;un n-uplet &amp;lt;math&amp;gt;(a_1, a_2, ..., a_n) \in N^n&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;S \in N&amp;lt;/math&amp;gt;, il faut trouver un n-uplet binaire &amp;lt;math&amp;gt;(x_1, x_2, ..., x_n) \in {0,1}^n&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;S = \sum_{i=1}^{n} (a_{i}*x_{i}) &amp;lt;/math&amp;gt;. La somme &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; des poids des objets choisi ne doit pas dépasser la capacité du sac à dos. Pour résoudre ce problème il n&#039;existe pas d&#039;algorithme avec une compléxité polynomial.&lt;br /&gt;
&lt;br /&gt;
[[Chiffrement de Merkle-Hellman]]&lt;br /&gt;
&lt;br /&gt;
Cet algorithme de chiffrement à clé publique repose sur la complexité algorithmique du problème de sac-à-dos et utilise des suites de poids super-croissante pour le secret et non super-croissante pour la clé publique. Si les &amp;lt;math&amp;gt;(a_{i}){i}&amp;lt;/math&amp;gt; n&#039;ont pas de propriétés particulières, la recherche du message codé en binaire &amp;lt;math&amp;gt;(x_{i})_{i}&amp;lt;/math&amp;gt; est un problème difficile. Il n&#039;existe pas d&#039;algorithme polynomial pour le résoudre. Pour pouvoir retrouver facilement ce n-uplet une propriété super-croissante est utilisé sur les &amp;lt;math&amp;gt;(a_{i})_{i}&amp;lt;/math&amp;gt;. Un n-uplet b est super-croissant si &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\forall i \in [2,n] b_{i} &amp;gt; \sum_{j=1}^{i-1} {b_{j}}&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ainsi en utilisant un algorithme glouton nous pouvons retrouver le n-uplet binaire &amp;lt;math&amp;gt;(x_{i})_{i}&amp;lt;/math&amp;gt;. L&#039;objet le plus lourd est dans le sac si le poids du sac est supérieur au poids de celui-ci. La propriété super-croissante assure que la somme des poids des autres objets sera toujours inférieur au poids de l&#039;objet le plus lourd. L&#039;algorithme est le suivant :&lt;br /&gt;
&lt;br /&gt;
  Pour i de n à 1 faire&lt;br /&gt;
    Si &amp;lt;math&amp;gt;b_{i} \le S&amp;lt;/math&amp;gt; alors&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i}  = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
    Sinon&lt;br /&gt;
      &amp;lt;math&amp;gt;x_{i} = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
    &amp;lt;math&amp;gt;S = S - x_{i} * b_{i}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Par exemple la suite des puissances de 2 est une suite super-croissante.&lt;br /&gt;
&lt;br /&gt;
Le nouvel algorithme de Nathan Hamlin et William Webb renforce l&#039;algorithme du sac à dos et permet de créer de nouvelles clés publiques.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Chiffrement quantique&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Photons polarisés&lt;br /&gt;
&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Les photons sont des particules qui composent la lumière. Ils sont composés d&#039;un champ électrique et d&#039;un champ magnétique. Une lumière non-polarisée se caractérise par une différence d&#039;orientation du champ électrique suivant les photons. Ainsi la polarisation consiste, grâce à un polarisateur, d&#039;obtenir des photons avec un champ électrique orienté de manière identique. Les filtres polarisants permettent d&#039;appliquer un angle d&#039;orientation sur les photons afin :&lt;br /&gt;
* de récupérer les photons polarisés parallèlement par rapport à cet angle&lt;br /&gt;
* d&#039;éliminer les photons polarisés perpendiculairement&lt;br /&gt;
* de récupérer les photons polarisés intermédiaires avec une probabilité de &amp;lt;math&amp;gt;\cos(\alpha)&amp;lt;/math&amp;gt; en les réinitialisant avec une polarisation égale à l&#039;angle d&#039;orientation du filtre.&lt;br /&gt;
&lt;br /&gt;
Du fait de la transformation de polarisation il est impossible de connaître l&#039;information sur les polarisations précédentes du photons.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Distribution des clés&lt;br /&gt;
&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Le chiffrement quantique offre un moyen sécurisé d’échanger des clés privées pour réaliser des chiffrements symétriques. Cette distribution s’appuie sur l’envoi de photons polarisés par fibre optique. Les personnes s&#039;échangeant les clés doivent avoir accès à un canal quantique et un canal classique. Le principe est le suivant :&lt;br /&gt;
* Alice envoie par le canal quantique une suite de photons polarisés aléatoirement.&lt;br /&gt;
* Bob applique un filtre de polarisation qui lui donne 1 chance sur 2 (et 1 chance sur 4 s&#039;il y a eu un espion) d&#039;appliquer le bon filtre et les renvoit à Alice.&lt;br /&gt;
* Alice et Bob s&#039;échangent par le canal classique leur choix des axes de polarisation éliminant ainsi les erreurs.&lt;br /&gt;
* Alice communique une partie de ses résultats.&lt;br /&gt;
* Maintenant que Bob connait les axes qu&#039;Alice a appliqué et les résultats il peut savoir si la communication a été écoutée ou non. Ceci étant grâce au théorème de non clonage où il est impossible de cloner des états quantiques inconnus.&lt;br /&gt;
&lt;br /&gt;
Ce principe permet de détecter facilement s&#039;il y a eu des intrusions durant la communication de la clé privée. En effet si un attaquant écoute il lui faut récupérer les photons envoyés par Alice mesurer la polarisation et renvoyer le photon à Bob. Pour mesurer la polarisation l&#039;attaquant doit appliquer, comme Bob, un filtre pour deviner la base qu&#039;Alice a envoyé. Ainsi cette intrusion a 1 chance sur 2 d&#039;introduire des incohérences dans les données d&#039;Alice et Bob en envoyant 1 fois sur 2 un mauvais photon. Par la suite Bob obtient donc 1 chance sur 4 d&#039;appliquer le bon filtre. Par analyses statistiques, Alice et Bob peuvent détecter de manière sure s&#039;il y a eu espionnage sur le canal quantique.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Attaque de l&#039;homme du milieu&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Comme toute méthode d&#039;échange de clé privée, cette méthode reste vulnérable à une attaque de type &amp;quot;homme du milieu&amp;quot;. Il faut donc la combiner avec un mécanisme de certification afin de s&#039;assurer de l&#039;identité des protagonistes.&lt;/div&gt;</summary>
		<author><name>JulianaLeclaire</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8643</id>
		<title>Projets étudiants cryptographie et sécurité/Leclaire DeRoland Crypto Quantique</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8643"/>
		<updated>2016-03-17T08:25:49Z</updated>

		<summary type="html">&lt;p&gt;JulianaLeclaire : /* Résistances aux attaques quantiques */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Auteurs : Juliana Leclaire, Céline de Roland ===&lt;br /&gt;
&lt;br /&gt;
== La cryptographie et la cryptanalyse dans le contexte de l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Introduction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
L&#039;informatique quantique se base sur la superposition de plusieurs états quantiques pour améliorer les capacités de calculs. &lt;br /&gt;
&lt;br /&gt;
Ce domaine nous amène à un vrai problème dans le sécurité de l&#039;internet. Car l&#039;informatique quantique, avec ses capacités de calculs va pouvoir casser les algorithmes de chiffrement asymétriques qui sont présents dans le Web. Les chiffrements asymétriques sont utilisés dans le connexions SSL/TLS, les paiements en ligne, etc.&lt;br /&gt;
&lt;br /&gt;
En partie pour ces raisons, il existe différents acteurs qui se penchent sur ce domaine. Notamment, la NSA, Google qui cherche à construire son propre ordinateur quantique.&lt;br /&gt;
Dans cette page, nous allons nous demander en quoi l&#039;informatique quantique peut changer le Web d&#039;aujourd&#039;hui et comment faire face à cette arrivée ?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Fonctionnement de l&#039;informatique quantique&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Qubit&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C&#039;est la plus petite unité de stockage de l&#039;information. Etant donné deux états de base &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;, un qubit non mesuré se trouve dans l&#039;état &amp;lt;math&amp;gt;\alpha \left|0\right\rangle + \beta \left|1\right\rangle&amp;lt;/math&amp;gt;, avec &amp;lt;math&amp;gt;|\alpha|^2 + |\beta|^2 = 1&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Lorsqu&#039;on mesure la valeur du qubit, on obtient soit &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; soit &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;|\alpha|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et  &amp;lt;math&amp;gt;|\beta|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
    &lt;br /&gt;
&#039;&#039;Théorème de non clonage&lt;br /&gt;
&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ce théorème, découvert en 1982 par Wootters, Zurek, et Dieks, consiste à dire qu&#039;il est impossible de recopier un qubit à l&#039;identique. La démonstration (par l&#039;absurde) repose sur le fait que pouvoir mettre le qubit B dans le même état que le qubit A implique que le qubit B soit déjà dans le même état que le qubit A.&lt;br /&gt;
On en déduit qu&#039;il est impossible de faire une opération de type copier/coller en informatique quantique.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Téléportation quantique&lt;br /&gt;
&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
La téléportation quantique consiste à transférer l&#039;état du qubit A dans le qubit B. Il s&#039;agit donc cette fois d&#039;une opération de couper/coller.&lt;br /&gt;
L&#039;intrication quantique se produit lorsque deux qubits sont dépendants l&#039;un de l&#039;autre même s&#039;ils sont éloignés l&#039;un de l&#039;autre. Dans cet état, si on mesure l&#039;un des deux, alors la mesure du deuxième est déterminée.&lt;br /&gt;
Sans entrer dans la théorie physique sous jacente, nous pouvons dire qu&#039;un canal EPR permet de réaliser cette opération de couper/coller en transmettant une information entre deux ordinateurs quantiques.&lt;br /&gt;
&lt;br /&gt;
== Chiffrement à clé publique face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mise en danger de la sécurité du Web&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Les ordinateurs quantiques présentent une rapidité de calculs extrèmement plus rapide que les ordinateurs à base de sillicium. Ces ordinateurs auraient aucune difficulté pour casser les codes de sécurité actuels reposant principalement sur un chiffrement à clé publique. Par définition le chiffrement à clé publique utilise une clé publique pour le chiffrement et une clé privée pour le décodage en se basant sur des grands nombres. Cependant ces grands nombres peuvent être vite retrouvés par des ordinateurs quantiques.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Exemple de chiffrement asymétrique: RSA&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ce chiffrement est couramment utilisé dans la sécurité du Web. &lt;br /&gt;
RSA repose sur la génération de grands nombres premiers, d&#039;un chiffrement avec une clé publique et d&#039;un déchiffrement avec une clé privée. &lt;br /&gt;
&lt;br /&gt;
* Initialisation : &lt;br /&gt;
** module &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; (grand nombre entier codé sur 2048 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;p, q&amp;lt;/math&amp;gt; : nombres premiers de même taille (codés sur 1024 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;\phi(N) = (p-1) * (q - 1)&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd(e, \phi(N)) = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
** Choisir &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;ed \equiv 1 [\phi(N)]&amp;lt;/math&amp;gt; et donc &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; est l&#039;inverse modulaire de &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; avec &amp;lt;math&amp;gt;d = e^-1 [\phi(N)]&amp;lt;/math&amp;gt;&lt;br /&gt;
** Clé publique : &amp;lt;math&amp;gt;pk(n, e)&amp;lt;/math&amp;gt;, Clé privée : &amp;lt;math&amp;gt;sk(d, p, q)&amp;lt;/math&amp;gt;&lt;br /&gt;
* Chiffrement : &amp;lt;math&amp;gt;c = m^e [N]&amp;lt;/math&amp;gt;&lt;br /&gt;
* Déchiffrement : &amp;lt;math&amp;gt;m = c^d [N]&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Exemple : &amp;lt;math&amp;gt;N=15&amp;lt;/math&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* Je choisis &amp;lt;math&amp;gt;x=7&amp;lt;/math&amp;gt;&lt;br /&gt;
* En calculant successivement les valeurs de &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; on trouve &amp;lt;math&amp;gt;7^{4} \equiv 1 [15]&amp;lt;/math&amp;gt;.&lt;br /&gt;
* &amp;lt;math&amp;gt;r=4&amp;lt;/math&amp;gt; est pair&lt;br /&gt;
* &amp;lt;math&amp;gt;pgcd(x^{\frac{r}{2}}+1,15) = 5&amp;lt;/math&amp;gt;. Donc &amp;lt;math&amp;gt;P = 5&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;Q = pgcd(x^{\frac{r}{2}}-1,15) = 3&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La sécurité de RSA repose sur la difficulté à factoriser des grands nombres en nombres premiers. En effet avec &amp;lt;math&amp;gt;(N, e)&amp;lt;/math&amp;gt; il faudrait pouvoir retrouver &amp;lt;math&amp;gt;(d, p, q)&amp;lt;/math&amp;gt; où &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt; correspondant à un cassage total. D&#039;après le théorème de factorisation unique tout entier &amp;lt;math&amp;gt;n \ge 2&amp;lt;/math&amp;gt; admet une factorisation unique en produit de puissances de nombres entiers. Des algorithmes de factorisation ont été trouvés pour différentes tailles de module $N$ mais pour pallier à ces attaques on augmente la longueur du module. De nos jours pour sécuriser le chiffrement il faut utiliser des modules strictement supérieur à 2048 bits. Cependant avec l&#039;informatique quantique il ne suffira plus d&#039;augmenter la taille du module car la puissance de calcul permettra de casser le chiffrement, peu importe la taille du module.&lt;br /&gt;
&lt;br /&gt;
== Chiffrement à clé privée face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mise en danger de la sécurité&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Si les ordinateurs quantiques présentent une rapidité de calcul permettant d&#039;effectuer des factorisations impossibles pour un ordinateur classique, il nous semble logique qu&#039;ils soient également performants pour effectuer des attaques de type force brute sur des messages chiffrés par une clé privée qui aurait été transmise par un moyen plus sûr que RSA.&lt;br /&gt;
 &lt;br /&gt;
Un ordinateur quantique pourrait réaliser le déchiffrement avec toutes les clés possibles en parallèle. Ce qui permettrait de cryptanalyser le message en une seule opération. Le principe se base sur la superposition quantique. On superposerait toutes les clés possibles et on déchiffrerait. On obtiendrait alors une superposition de résultats. Le point le plus difficile est de trouver le résultat correct à partir de la superposition obtenue. En effet, le principe selon lequel mesurer une valeur modifie cette valeur fait qu&#039;en observant une superposition, on obtient un seul état aléatoire. Une solution à ce problème a été trouvé par Lov Grover en $O(\sqrt{n})$ étapes.&lt;br /&gt;
&lt;br /&gt;
== Résistances aux attaques quantiques ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nouvel algorithme&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Depuis 2006, une conférence internationnale se produit chaque année nommée &amp;quot;Post Quantum Cryptography&amp;quot; dans l&#039;intention de trouver des algorithmes résistants aux ordinateurs quantiques. Nathan Hamlin et William Webb, des mathématiciens, ont présenté récemment un algorithme de chiffrement asymétrique possiblement capable de faire face aux attaques quantiques. Cet algorithme part de l&#039;ancien chiffrement de Merkle-Hellman qui se base sur le problème du sac à dos nommé &amp;quot;Knapsack code&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
[[Problème du sac-à-dos]]&lt;br /&gt;
&lt;br /&gt;
Etant donné un sac avec une capacité &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; et plusieurs objets de poids différents. Le problème du sac-à-dos consiste à trouver la suite d&#039;objets qui entre dans le sac et qui maximise sa capacité. En partant d&#039;un n-uplet &amp;lt;math&amp;gt;(a_1, a_2, ..., a_n) \in N^n&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;S \in N&amp;lt;/math&amp;gt;, il faut trouver un n-uplet binaire &amp;lt;math&amp;gt;(x_1, x_2, ..., x_n) \in {0,1}^n&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;S = \sum_{i=1}^{n} (a_{i}*x_{i}) &amp;lt;/math&amp;gt;. La somme &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; des poids des objets choisi ne doit pas dépasser la capacité du sac à dos. Pour résoudre ce problème il n&#039;existe pas d&#039;algorithme avec une compléxité polynomial.&lt;br /&gt;
&lt;br /&gt;
[[Chiffrement de Merkle-Hellman]]&lt;br /&gt;
&lt;br /&gt;
Cet algorithme de chiffrement à clé publique repose sur la complexité algorithmique du problème de sac-à-dos et utilise des suites de poids super-croissante pour le secret et non super-croissante pour la clé publique. Si les &amp;lt;math&amp;gt;(a_{i}){i}&amp;lt;/math&amp;gt; n&#039;ont pas de propriétés particulières, la recherche du message codé en binaire &amp;lt;math&amp;gt;(x_{i})_{i}&amp;lt;/math&amp;gt; est un problème difficile. Il n&#039;existe pas d&#039;algorithme polynomial pour le résoudre. Pour pouvoir retrouver facilement ce n-uplet une propriété super-croissante est utilisé sur les &amp;lt;math&amp;gt;(a_{i})_{i}&amp;lt;/math&amp;gt;. Un n-uplet b est super-croissant si &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\forall i \in [2,n] b_{i} &amp;gt; \sum_{j=1}^{i-1} {b_{j}}&amp;lt;/math&amp;gt;. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ainsi en utilisant un algorithme glouton nous pouvons retrouver le n-uplet binaire &amp;lt;math&amp;gt;(x_{i})_{i}&amp;lt;/math&amp;gt;. L&#039;objet le plus lourd est dans le sac si le poids du sac est supérieur au poids de celui-ci. La propriété super-croissante assure que la somme des poids des autres objets sera toujours inférieur au poids de l&#039;objet le plus lourd. L&#039;algorithme est le suivant :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Par exemple la suite des puissances de 2 est une suite super-croissante.&lt;br /&gt;
&lt;br /&gt;
Le nouvel algorithme de Nathan Hamlin et William Webb renforce l&#039;algorithme du sac à dos et permet de créer de nouvelles clés publiques.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Chiffrement quantique&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Photons polarisés&lt;br /&gt;
&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Les photons sont des particules qui composent la lumière. Ils sont composés d&#039;un champ électrique et d&#039;un champ magnétique. Une lumière non-polarisée se caractérise par une différence d&#039;orientation du champ électrique suivant les photons. Ainsi la polarisation consiste, grâce à un polarisateur, d&#039;obtenir des photons avec un champ électrique orienté de manière identique. Les filtres polarisants permettent d&#039;appliquer un angle d&#039;orientation sur les photons afin :&lt;br /&gt;
* de récupérer les photons polarisés parallèlement par rapport à cet angle&lt;br /&gt;
* d&#039;éliminer les photons polarisés perpendiculairement&lt;br /&gt;
* de récupérer les photons polarisés intermédiaires avec une probabilité de &amp;lt;math&amp;gt;\cos(\alpha)&amp;lt;/math&amp;gt; en les réinitialisant avec une polarisation égale à l&#039;angle d&#039;orientation du filtre.&lt;br /&gt;
&lt;br /&gt;
Du fait de la transformation de polarisation il est impossible de connaître l&#039;information sur les polarisations précédentes du photons.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Distribution des clés&lt;br /&gt;
&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Le chiffrement quantique offre un moyen sécurisé d’échanger des clés privées pour réaliser des chiffrements symétriques. Cette distribution s’appuie sur l’envoi de photons polarisés par fibre optique. Les personnes s&#039;échangeant les clés doivent avoir accès à un canal quantique et un canal classique. Le principe est le suivant :&lt;br /&gt;
* Alice envoie par le canal quantique une suite de photons polarisés aléatoirement.&lt;br /&gt;
* Bob applique un filtre de polarisation qui lui donne 1 chance sur 2 (et 1 chance sur 4 s&#039;il y a eu un espion) d&#039;appliquer le bon filtre et les renvoit à Alice.&lt;br /&gt;
* Alice et Bob s&#039;échangent par le canal classique leur choix des axes de polarisation éliminant ainsi les erreurs.&lt;br /&gt;
* Alice communique une partie de ses résultats.&lt;br /&gt;
* Maintenant que Bob connait les axes qu&#039;Alice a appliqué et les résultats il peut savoir si la communication a été écoutée ou non. Ceci étant grâce au théorème de non clonage où il est impossible de cloner des états quantiques inconnus.&lt;br /&gt;
&lt;br /&gt;
Ce principe permet de détecter facilement s&#039;il y a eu des intrusions durant la communication de la clé privée. En effet si un attaquant écoute il lui faut récupérer les photons envoyés par Alice mesurer la polarisation et renvoyer le photon à Bob. Pour mesurer la polarisation l&#039;attaquant doit appliquer, comme Bob, un filtre pour deviner la base qu&#039;Alice a envoyé. Ainsi cette intrusion a 1 chance sur 2 d&#039;introduire des incohérences dans les données d&#039;Alice et Bob en envoyant 1 fois sur 2 un mauvais photon. Par la suite Bob obtient donc 1 chance sur 4 d&#039;appliquer le bon filtre. Par analyses statistiques, Alice et Bob peuvent détecter de manière sure s&#039;il y a eu espionnage sur le canal quantique.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Attaque de l&#039;homme du milieu&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Comme toute méthode d&#039;échange de clé privée, cette méthode reste vulnérable à une attaque de type &amp;quot;homme du milieu&amp;quot;. Il faut donc la combiner avec un mécanisme de certification afin de s&#039;assurer de l&#039;identité des protagonistes.&lt;/div&gt;</summary>
		<author><name>JulianaLeclaire</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8642</id>
		<title>Projets étudiants cryptographie et sécurité/Leclaire DeRoland Crypto Quantique</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8642"/>
		<updated>2016-03-17T08:11:43Z</updated>

		<summary type="html">&lt;p&gt;JulianaLeclaire : /* Résistances aux attaques quantiques */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Auteurs : Juliana Leclaire, Céline de Roland ===&lt;br /&gt;
&lt;br /&gt;
== La cryptographie et la cryptanalyse dans le contexte de l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Introduction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
L&#039;informatique quantique se base sur la superposition de plusieurs états quantiques pour améliorer les capacités de calculs. &lt;br /&gt;
&lt;br /&gt;
Ce domaine nous amène à un vrai problème dans le sécurité de l&#039;internet. Car l&#039;informatique quantique, avec ses capacités de calculs va pouvoir casser les algorithmes de chiffrement asymétriques qui sont présents dans le Web. Les chiffrements asymétriques sont utilisés dans le connexions SSL/TLS, les paiements en ligne, etc.&lt;br /&gt;
&lt;br /&gt;
En partie pour ces raisons, il existe différents acteurs qui se penchent sur ce domaine. Notamment, la NSA, Google qui cherche à construire son propre ordinateur quantique.&lt;br /&gt;
Dans cette page, nous allons nous demander en quoi l&#039;informatique quantique peut changer le Web d&#039;aujourd&#039;hui et comment faire face à cette arrivée ?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Fonctionnement de l&#039;informatique quantique&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Qubit&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C&#039;est la plus petite unité de stockage de l&#039;information. Etant donné deux états de base &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;, un qubit non mesuré se trouve dans l&#039;état &amp;lt;math&amp;gt;\alpha \left|0\right\rangle + \beta \left|1\right\rangle&amp;lt;/math&amp;gt;, avec &amp;lt;math&amp;gt;|\alpha|^2 + |\beta|^2 = 1&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Lorsqu&#039;on mesure la valeur du qubit, on obtient soit &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; soit &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;|\alpha|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et  &amp;lt;math&amp;gt;|\beta|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
    &lt;br /&gt;
&#039;&#039;Théorème de non clonage&lt;br /&gt;
&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ce théorème, découvert en 1982 par Wootters, Zurek, et Dieks, consiste à dire qu&#039;il est impossible de recopier un qubit à l&#039;identique. La démonstration (par l&#039;absurde) repose sur le fait que pouvoir mettre le qubit B dans le même état que le qubit A implique que le qubit B soit déjà dans le même état que le qubit A.&lt;br /&gt;
On en déduit qu&#039;il est impossible de faire une opération de type copier/coller en informatique quantique.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Téléportation quantique&lt;br /&gt;
&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
La téléportation quantique consiste à transférer l&#039;état du qubit A dans le qubit B. Il s&#039;agit donc cette fois d&#039;une opération de couper/coller.&lt;br /&gt;
L&#039;intrication quantique se produit lorsque deux qubits sont dépendants l&#039;un de l&#039;autre même s&#039;ils sont éloignés l&#039;un de l&#039;autre. Dans cet état, si on mesure l&#039;un des deux, alors la mesure du deuxième est déterminée.&lt;br /&gt;
Sans entrer dans la théorie physique sous jacente, nous pouvons dire qu&#039;un canal EPR permet de réaliser cette opération de couper/coller en transmettant une information entre deux ordinateurs quantiques.&lt;br /&gt;
&lt;br /&gt;
== Chiffrement à clé publique face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mise en danger de la sécurité du Web&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Les ordinateurs quantiques présentent une rapidité de calculs extrèmement plus rapide que les ordinateurs à base de sillicium. Ces ordinateurs auraient aucune difficulté pour casser les codes de sécurité actuels reposant principalement sur un chiffrement à clé publique. Par définition le chiffrement à clé publique utilise une clé publique pour le chiffrement et une clé privée pour le décodage en se basant sur des grands nombres. Cependant ces grands nombres peuvent être vite retrouvés par des ordinateurs quantiques.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Exemple de chiffrement asymétrique: RSA&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ce chiffrement est couramment utilisé dans la sécurité du Web. &lt;br /&gt;
RSA repose sur la génération de grands nombres premiers, d&#039;un chiffrement avec une clé publique et d&#039;un déchiffrement avec une clé privée. &lt;br /&gt;
&lt;br /&gt;
* Initialisation : &lt;br /&gt;
** module &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; (grand nombre entier codé sur 2048 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;p, q&amp;lt;/math&amp;gt; : nombres premiers de même taille (codés sur 1024 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;\phi(N) = (p-1) * (q - 1)&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd(e, \phi(N)) = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
** Choisir &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;ed \equiv 1 [\phi(N)]&amp;lt;/math&amp;gt; et donc &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; est l&#039;inverse modulaire de &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; avec &amp;lt;math&amp;gt;d = e^-1 [\phi(N)]&amp;lt;/math&amp;gt;&lt;br /&gt;
** Clé publique : &amp;lt;math&amp;gt;pk(n, e)&amp;lt;/math&amp;gt;, Clé privée : &amp;lt;math&amp;gt;sk(d, p, q)&amp;lt;/math&amp;gt;&lt;br /&gt;
* Chiffrement : &amp;lt;math&amp;gt;c = m^e [N]&amp;lt;/math&amp;gt;&lt;br /&gt;
* Déchiffrement : &amp;lt;math&amp;gt;m = c^d [N]&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Exemple : &amp;lt;math&amp;gt;N=15&amp;lt;/math&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* Je choisis &amp;lt;math&amp;gt;x=7&amp;lt;/math&amp;gt;&lt;br /&gt;
* En calculant successivement les valeurs de &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; on trouve &amp;lt;math&amp;gt;7^{4} \equiv 1 [15]&amp;lt;/math&amp;gt;.&lt;br /&gt;
* &amp;lt;math&amp;gt;r=4&amp;lt;/math&amp;gt; est pair&lt;br /&gt;
* &amp;lt;math&amp;gt;pgcd(x^{\frac{r}{2}}+1,15) = 5&amp;lt;/math&amp;gt;. Donc &amp;lt;math&amp;gt;P = 5&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;Q = pgcd(x^{\frac{r}{2}}-1,15) = 3&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La sécurité de RSA repose sur la difficulté à factoriser des grands nombres en nombres premiers. En effet avec &amp;lt;math&amp;gt;(N, e)&amp;lt;/math&amp;gt; il faudrait pouvoir retrouver &amp;lt;math&amp;gt;(d, p, q)&amp;lt;/math&amp;gt; où &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt; correspondant à un cassage total. D&#039;après le théorème de factorisation unique tout entier &amp;lt;math&amp;gt;n \ge 2&amp;lt;/math&amp;gt; admet une factorisation unique en produit de puissances de nombres entiers. Des algorithmes de factorisation ont été trouvés pour différentes tailles de module $N$ mais pour pallier à ces attaques on augmente la longueur du module. De nos jours pour sécuriser le chiffrement il faut utiliser des modules strictement supérieur à 2048 bits. Cependant avec l&#039;informatique quantique il ne suffira plus d&#039;augmenter la taille du module car la puissance de calcul permettra de casser le chiffrement, peu importe la taille du module.&lt;br /&gt;
&lt;br /&gt;
== Chiffrement à clé privée face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mise en danger de la sécurité&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Si les ordinateurs quantiques présentent une rapidité de calcul permettant d&#039;effectuer des factorisations impossibles pour un ordinateur classique, il nous semble logique qu&#039;ils soient également performants pour effectuer des attaques de type force brute sur des messages chiffrés par une clé privée qui aurait été transmise par un moyen plus sûr que RSA.&lt;br /&gt;
 &lt;br /&gt;
Un ordinateur quantique pourrait réaliser le déchiffrement avec toutes les clés possibles en parallèle. Ce qui permettrait de cryptanalyser le message en une seule opération. Le principe se base sur la superposition quantique. On superposerait toutes les clés possibles et on déchiffrerait. On obtiendrait alors une superposition de résultats. Le point le plus difficile est de trouver le résultat correct à partir de la superposition obtenue. En effet, le principe selon lequel mesurer une valeur modifie cette valeur fait qu&#039;en observant une superposition, on obtient un seul état aléatoire. Une solution à ce problème a été trouvé par Lov Grover en $O(\sqrt{n})$ étapes.&lt;br /&gt;
&lt;br /&gt;
== Résistances aux attaques quantiques ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nouvel algorithme&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Depuis 2006, une conférence internationnale se produit chaque année nommée &amp;quot;Post Quantum Cryptography&amp;quot; dans l&#039;intention de trouver des algorithmes résistants aux ordinateurs quantiques. Nathan Hamlin et William Webb, des mathématiciens, ont présenté récemment un algorithme de chiffrement asymétrique possiblement capable de faire face aux attaques quantiques. Cet algorithme part de l&#039;ancien chiffrement de Merkle-Hellman qui se base sur le problème du sac à dos nommé &amp;quot;Knapsack code&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
[[Problème du sac-à-dos]]&lt;br /&gt;
&lt;br /&gt;
Etant donné un sac avec une capacité &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; et plusieurs objets de poids différents. Le problème du sac-à-dos consiste à trouver la suite d&#039;objets qui entre dans le sac et qui maximise sa capacité. En partant d&#039;un n-uplet &amp;lt;math&amp;gt;(a_1, a_2, ..., a_n) \in N^n&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;S \in N&amp;lt;/math&amp;gt;, il faut trouver un n-uplet binaire &amp;lt;math&amp;gt;(x_1, x_2, ..., x_n) \in {0,1}^n&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;S = \sum_{i=1}^{n} (a_{i}*x_{i}) &amp;lt;/math&amp;gt;. La somme &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; des poids des objets choisi ne doit pas dépasser la capacité du sac à dos. Pour résoudre ce problème il n&#039;existe pas d&#039;algorithme avec une compléxité polynomial.&lt;br /&gt;
&lt;br /&gt;
[[Chiffrement de Merkle-Hellman]]&lt;br /&gt;
&lt;br /&gt;
Cet algorithme de chiffrement à clé publique repose sur la complexité algorithmique du problème de sac-à-dos et utilise des suites de poids super-croissante pour le secret et non super-croissante pour la clé publique. Si les &amp;lt;math&amp;gt;(a_{i}){i}&amp;lt;/math&amp;gt; n&#039;ont pas de propriétés particulières, la recherche du message codé en binaire &amp;lt;math&amp;gt;(x_{i})_{i}&amp;lt;/math&amp;gt; est un problème difficile. Il n&#039;existe pas d&#039;algorithme polynomial pour le résoudre. Pour pouvoir retrouver facilement ce n-uplet une propriété super-croissante est utilisé sur les &amp;lt;math&amp;gt;(a_{i})_{i}&amp;lt;/math&amp;gt;. Un n-uplet b est super-croissant si &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\forall i \in [2,n] b_{i} &amp;gt; \sum_{j=1}^{i-1} {b_{j}}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Le nouvel algorithme de Nathan Hamlin et William Webb renforce l&#039;algorithme du sac à dos et permet de créer de nouvelles clés publiques.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Chiffrement quantique&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Photons polarisés&lt;br /&gt;
&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Les photons sont des particules qui composent la lumière. Ils sont composés d&#039;un champ électrique et d&#039;un champ magnétique. Une lumière non-polarisée se caractérise par une différence d&#039;orientation du champ électrique suivant les photons. Ainsi la polarisation consiste, grâce à un polarisateur, d&#039;obtenir des photons avec un champ électrique orienté de manière identique. Les filtres polarisants permettent d&#039;appliquer un angle d&#039;orientation sur les photons afin :&lt;br /&gt;
* de récupérer les photons polarisés parallèlement par rapport à cet angle&lt;br /&gt;
* d&#039;éliminer les photons polarisés perpendiculairement&lt;br /&gt;
* de récupérer les photons polarisés intermédiaires avec une probabilité de &amp;lt;math&amp;gt;\cos(\alpha)&amp;lt;/math&amp;gt; en les réinitialisant avec une polarisation égale à l&#039;angle d&#039;orientation du filtre.&lt;br /&gt;
&lt;br /&gt;
Du fait de la transformation de polarisation il est impossible de connaître l&#039;information sur les polarisations précédentes du photons.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Distribution des clés&lt;br /&gt;
&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Le chiffrement quantique offre un moyen sécurisé d’échanger des clés privées pour réaliser des chiffrements symétriques. Cette distribution s’appuie sur l’envoi de photons polarisés par fibre optique. Les personnes s&#039;échangeant les clés doivent avoir accès à un canal quantique et un canal classique. Le principe est le suivant :&lt;br /&gt;
* Alice envoie par le canal quantique une suite de photons polarisés aléatoirement.&lt;br /&gt;
* Bob applique un filtre de polarisation qui lui donne 1 chance sur 2 (et 1 chance sur 4 s&#039;il y a eu un espion) d&#039;appliquer le bon filtre et les renvoit à Alice.&lt;br /&gt;
* Alice et Bob s&#039;échangent par le canal classique leur choix des axes de polarisation éliminant ainsi les erreurs.&lt;br /&gt;
* Alice communique une partie de ses résultats.&lt;br /&gt;
* Maintenant que Bob connait les axes qu&#039;Alice a appliqué et les résultats il peut savoir si la communication a été écoutée ou non. Ceci étant grâce au théorème de non clonage où il est impossible de cloner des états quantiques inconnus.&lt;br /&gt;
&lt;br /&gt;
Ce principe permet de détecter facilement s&#039;il y a eu des intrusions durant la communication de la clé privée. En effet si un attaquant écoute il lui faut récupérer les photons envoyés par Alice mesurer la polarisation et renvoyer le photon à Bob. Pour mesurer la polarisation l&#039;attaquant doit appliquer, comme Bob, un filtre pour deviner la base qu&#039;Alice a envoyé. Ainsi cette intrusion a 1 chance sur 2 d&#039;introduire des incohérences dans les données d&#039;Alice et Bob en envoyant 1 fois sur 2 un mauvais photon. Par la suite Bob obtient donc 1 chance sur 4 d&#039;appliquer le bon filtre. Par analyses statistiques, Alice et Bob peuvent détecter de manière sure s&#039;il y a eu espionnage sur le canal quantique.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Attaque de l&#039;homme du milieu&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Comme toute méthode d&#039;échange de clé privée, cette méthode reste vulnérable à une attaque de type &amp;quot;homme du milieu&amp;quot;. Il faut donc la combiner avec un mécanisme de certification afin de s&#039;assurer de l&#039;identité des protagonistes.&lt;/div&gt;</summary>
		<author><name>JulianaLeclaire</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8641</id>
		<title>Projets étudiants cryptographie et sécurité/Leclaire DeRoland Crypto Quantique</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8641"/>
		<updated>2016-03-17T08:06:38Z</updated>

		<summary type="html">&lt;p&gt;JulianaLeclaire : /* Résistances aux attaques quantiques */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Auteurs : Juliana Leclaire, Céline de Roland ===&lt;br /&gt;
&lt;br /&gt;
== La cryptographie et la cryptanalyse dans le contexte de l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Introduction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
L&#039;informatique quantique se base sur la superposition de plusieurs états quantiques pour améliorer les capacités de calculs. &lt;br /&gt;
&lt;br /&gt;
Ce domaine nous amène à un vrai problème dans le sécurité de l&#039;internet. Car l&#039;informatique quantique, avec ses capacités de calculs va pouvoir casser les algorithmes de chiffrement asymétriques qui sont présents dans le Web. Les chiffrements asymétriques sont utilisés dans le connexions SSL/TLS, les paiements en ligne, etc.&lt;br /&gt;
&lt;br /&gt;
En partie pour ces raisons, il existe différents acteurs qui se penchent sur ce domaine. Notamment, la NSA, Google qui cherche à construire son propre ordinateur quantique.&lt;br /&gt;
Dans cette page, nous allons nous demander en quoi l&#039;informatique quantique peut changer le Web d&#039;aujourd&#039;hui et comment faire face à cette arrivée ?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Fonctionnement de l&#039;informatique quantique&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Qubit&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C&#039;est la plus petite unité de stockage de l&#039;information. Etant donné deux états de base &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;, un qubit non mesuré se trouve dans l&#039;état &amp;lt;math&amp;gt;\alpha \left|0\right\rangle + \beta \left|1\right\rangle&amp;lt;/math&amp;gt;, avec &amp;lt;math&amp;gt;|\alpha|^2 + |\beta|^2 = 1&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Lorsqu&#039;on mesure la valeur du qubit, on obtient soit &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; soit &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;|\alpha|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et  &amp;lt;math&amp;gt;|\beta|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
    &lt;br /&gt;
&#039;&#039;Théorème de non clonage&lt;br /&gt;
&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ce théorème, découvert en 1982 par Wootters, Zurek, et Dieks, consiste à dire qu&#039;il est impossible de recopier un qubit à l&#039;identique. La démonstration (par l&#039;absurde) repose sur le fait que pouvoir mettre le qubit B dans le même état que le qubit A implique que le qubit B soit déjà dans le même état que le qubit A.&lt;br /&gt;
On en déduit qu&#039;il est impossible de faire une opération de type copier/coller en informatique quantique.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Téléportation quantique&lt;br /&gt;
&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
La téléportation quantique consiste à transférer l&#039;état du qubit A dans le qubit B. Il s&#039;agit donc cette fois d&#039;une opération de couper/coller.&lt;br /&gt;
L&#039;intrication quantique se produit lorsque deux qubits sont dépendants l&#039;un de l&#039;autre même s&#039;ils sont éloignés l&#039;un de l&#039;autre. Dans cet état, si on mesure l&#039;un des deux, alors la mesure du deuxième est déterminée.&lt;br /&gt;
Sans entrer dans la théorie physique sous jacente, nous pouvons dire qu&#039;un canal EPR permet de réaliser cette opération de couper/coller en transmettant une information entre deux ordinateurs quantiques.&lt;br /&gt;
&lt;br /&gt;
== Chiffrement à clé publique face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mise en danger de la sécurité du Web&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Les ordinateurs quantiques présentent une rapidité de calculs extrèmement plus rapide que les ordinateurs à base de sillicium. Ces ordinateurs auraient aucune difficulté pour casser les codes de sécurité actuels reposant principalement sur un chiffrement à clé publique. Par définition le chiffrement à clé publique utilise une clé publique pour le chiffrement et une clé privée pour le décodage en se basant sur des grands nombres. Cependant ces grands nombres peuvent être vite retrouvés par des ordinateurs quantiques.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Exemple de chiffrement asymétrique: RSA&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ce chiffrement est couramment utilisé dans la sécurité du Web. &lt;br /&gt;
RSA repose sur la génération de grands nombres premiers, d&#039;un chiffrement avec une clé publique et d&#039;un déchiffrement avec une clé privée. &lt;br /&gt;
&lt;br /&gt;
* Initialisation : &lt;br /&gt;
** module &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; (grand nombre entier codé sur 2048 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;p, q&amp;lt;/math&amp;gt; : nombres premiers de même taille (codés sur 1024 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;\phi(N) = (p-1) * (q - 1)&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd(e, \phi(N)) = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
** Choisir &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;ed \equiv 1 [\phi(N)]&amp;lt;/math&amp;gt; et donc &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; est l&#039;inverse modulaire de &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; avec &amp;lt;math&amp;gt;d = e^-1 [\phi(N)]&amp;lt;/math&amp;gt;&lt;br /&gt;
** Clé publique : &amp;lt;math&amp;gt;pk(n, e)&amp;lt;/math&amp;gt;, Clé privée : &amp;lt;math&amp;gt;sk(d, p, q)&amp;lt;/math&amp;gt;&lt;br /&gt;
* Chiffrement : &amp;lt;math&amp;gt;c = m^e [N]&amp;lt;/math&amp;gt;&lt;br /&gt;
* Déchiffrement : &amp;lt;math&amp;gt;m = c^d [N]&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Exemple : &amp;lt;math&amp;gt;N=15&amp;lt;/math&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* Je choisis &amp;lt;math&amp;gt;x=7&amp;lt;/math&amp;gt;&lt;br /&gt;
* En calculant successivement les valeurs de &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; on trouve &amp;lt;math&amp;gt;7^{4} \equiv 1 [15]&amp;lt;/math&amp;gt;.&lt;br /&gt;
* &amp;lt;math&amp;gt;r=4&amp;lt;/math&amp;gt; est pair&lt;br /&gt;
* &amp;lt;math&amp;gt;pgcd(x^{\frac{r}{2}}+1,15) = 5&amp;lt;/math&amp;gt;. Donc &amp;lt;math&amp;gt;P = 5&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;Q = pgcd(x^{\frac{r}{2}}-1,15) = 3&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La sécurité de RSA repose sur la difficulté à factoriser des grands nombres en nombres premiers. En effet avec &amp;lt;math&amp;gt;(N, e)&amp;lt;/math&amp;gt; il faudrait pouvoir retrouver &amp;lt;math&amp;gt;(d, p, q)&amp;lt;/math&amp;gt; où &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt; correspondant à un cassage total. D&#039;après le théorème de factorisation unique tout entier &amp;lt;math&amp;gt;n \ge 2&amp;lt;/math&amp;gt; admet une factorisation unique en produit de puissances de nombres entiers. Des algorithmes de factorisation ont été trouvés pour différentes tailles de module $N$ mais pour pallier à ces attaques on augmente la longueur du module. De nos jours pour sécuriser le chiffrement il faut utiliser des modules strictement supérieur à 2048 bits. Cependant avec l&#039;informatique quantique il ne suffira plus d&#039;augmenter la taille du module car la puissance de calcul permettra de casser le chiffrement, peu importe la taille du module.&lt;br /&gt;
&lt;br /&gt;
== Chiffrement à clé privée face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mise en danger de la sécurité&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Si les ordinateurs quantiques présentent une rapidité de calcul permettant d&#039;effectuer des factorisations impossibles pour un ordinateur classique, il nous semble logique qu&#039;ils soient également performants pour effectuer des attaques de type force brute sur des messages chiffrés par une clé privée qui aurait été transmise par un moyen plus sûr que RSA.&lt;br /&gt;
 &lt;br /&gt;
Un ordinateur quantique pourrait réaliser le déchiffrement avec toutes les clés possibles en parallèle. Ce qui permettrait de cryptanalyser le message en une seule opération. Le principe se base sur la superposition quantique. On superposerait toutes les clés possibles et on déchiffrerait. On obtiendrait alors une superposition de résultats. Le point le plus difficile est de trouver le résultat correct à partir de la superposition obtenue. En effet, le principe selon lequel mesurer une valeur modifie cette valeur fait qu&#039;en observant une superposition, on obtient un seul état aléatoire. Une solution à ce problème a été trouvé par Lov Grover en $O(\sqrt{n})$ étapes.&lt;br /&gt;
&lt;br /&gt;
== Résistances aux attaques quantiques ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nouvel algorithme&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Depuis 2006, une conférence internationnale se produit chaque année nommée &amp;quot;Post Quantum Cryptography&amp;quot; dans l&#039;intention de trouver des algorithmes résistants aux ordinateurs quantiques. Nathan Hamlin et William Webb, des mathématiciens, ont présenté récemment un algorithme de chiffrement asymétrique possiblement capable de faire face aux attaques quantiques. Cet algorithme part de l&#039;ancien chiffrement de Merkle-Hellman qui se base sur le problème du sac à dos nommé &amp;quot;Knapsack code&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
[[Problème du sac-à-dos]]&lt;br /&gt;
&lt;br /&gt;
Etant donné un sac avec une capacité &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; et plusieurs objets de poids différents. Le problème du sac-à-dos consiste à trouver la suite d&#039;objets qui entre dans le sac et qui maximise sa capacité. En partant d&#039;un n-uplet &amp;lt;math&amp;gt;(a_1, a_2, ..., a_n) \in N^n&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;S \in N&amp;lt;/math&amp;gt;, il faut trouver un n-uplet binaire &amp;lt;math&amp;gt;(x_1, x_2, ..., x_n) \in {0,1}^n&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;S = \sum_{i=1}^{n} (a_{i}*x_{i}) &amp;lt;/math&amp;gt;. La somme &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; des poids des objets choisi ne doit pas dépasser la capacité du sac à dos. Pour résoudre ce problème il n&#039;existe pas d&#039;algorithme avec une compléxité polynomial.&lt;br /&gt;
&lt;br /&gt;
[[Chiffrement de Merkle-Hellman]]&lt;br /&gt;
&lt;br /&gt;
Cet algorithme de chiffrement à clé publique repose sur la complexité algorithmique du problème de sac-à-dos et utilise des suites de poids super-croissante pour le secret et non super-croissante pour la clé publique. Si les &amp;lt;math&amp;gt;(a_{i}){i}&amp;lt;/math&amp;gt; n&#039;ont pas de propriétés particulières, la recherche du message codé en binaire &amp;lt;math&amp;gt;(x_{i})_{i}&amp;lt;/math&amp;gt; est un problème difficile. Il n&#039;existe pas d&#039;algorithme polynomial pour le résoudre. Pour pouvoir retrouver facilement ce n-uplet une propriété super-croissante est utilisé sur les &amp;lt;math&amp;gt;(a_{i})_{i}&amp;lt;/math&amp;gt;. Un n-uplet b est super-croissant si&lt;br /&gt;
&amp;lt;math&amp;gt;\forall i \in [2,n] b_{i} &amp;gt; \sum_{j=1}^{i-1} {b_{j}}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Le nouvel algorithme de Nathan Hamlin et William Webb renforce l&#039;algorithme du sac à dos et permet de créer de nouvelles clés publiques.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Chiffrement quantique&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Photons polarisés&lt;br /&gt;
&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Les photons sont des particules qui composent la lumière. Ils sont composés d&#039;un champ électrique et d&#039;un champ magnétique. Une lumière non-polarisée se caractérise par une différence d&#039;orientation du champ électrique suivant les photons. Ainsi la polarisation consiste, grâce à un polarisateur, d&#039;obtenir des photons avec un champ électrique orienté de manière identique. Les filtres polarisants permettent d&#039;appliquer un angle d&#039;orientation sur les photons afin :&lt;br /&gt;
* de récupérer les photons polarisés parallèlement par rapport à cet angle&lt;br /&gt;
* d&#039;éliminer les photons polarisés perpendiculairement&lt;br /&gt;
* de récupérer les photons polarisés intermédiaires avec une probabilité de &amp;lt;math&amp;gt;\cos(\alpha)&amp;lt;/math&amp;gt; en les réinitialisant avec une polarisation égale à l&#039;angle d&#039;orientation du filtre.&lt;br /&gt;
&lt;br /&gt;
Du fait de la transformation de polarisation il est impossible de connaître l&#039;information sur les polarisations précédentes du photons.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Distribution des clés&lt;br /&gt;
&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Le chiffrement quantique offre un moyen sécurisé d’échanger des clés privées pour réaliser des chiffrements symétriques. Cette distribution s’appuie sur l’envoi de photons polarisés par fibre optique. Les personnes s&#039;échangeant les clés doivent avoir accès à un canal quantique et un canal classique. Le principe est le suivant :&lt;br /&gt;
* Alice envoie par le canal quantique une suite de photons polarisés aléatoirement.&lt;br /&gt;
* Bob applique un filtre de polarisation qui lui donne 1 chance sur 2 (et 1 chance sur 4 s&#039;il y a eu un espion) d&#039;appliquer le bon filtre et les renvoit à Alice.&lt;br /&gt;
* Alice et Bob s&#039;échangent par le canal classique leur choix des axes de polarisation éliminant ainsi les erreurs.&lt;br /&gt;
* Alice communique une partie de ses résultats.&lt;br /&gt;
* Maintenant que Bob connait les axes qu&#039;Alice a appliqué et les résultats il peut savoir si la communication a été écoutée ou non. Ceci étant grâce au théorème de non clonage où il est impossible de cloner des états quantiques inconnus.&lt;br /&gt;
&lt;br /&gt;
Ce principe permet de détecter facilement s&#039;il y a eu des intrusions durant la communication de la clé privée. En effet si un attaquant écoute il lui faut récupérer les photons envoyés par Alice mesurer la polarisation et renvoyer le photon à Bob. Pour mesurer la polarisation l&#039;attaquant doit appliquer, comme Bob, un filtre pour deviner la base qu&#039;Alice a envoyé. Ainsi cette intrusion a 1 chance sur 2 d&#039;introduire des incohérences dans les données d&#039;Alice et Bob en envoyant 1 fois sur 2 un mauvais photon. Par la suite Bob obtient donc 1 chance sur 4 d&#039;appliquer le bon filtre. Par analyses statistiques, Alice et Bob peuvent détecter de manière sure s&#039;il y a eu espionnage sur le canal quantique.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Attaque de l&#039;homme du milieu&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Comme toute méthode d&#039;échange de clé privée, cette méthode reste vulnérable à une attaque de type &amp;quot;homme du milieu&amp;quot;. Il faut donc la combiner avec un mécanisme de certification afin de s&#039;assurer de l&#039;identité des protagonistes.&lt;/div&gt;</summary>
		<author><name>JulianaLeclaire</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8640</id>
		<title>Projets étudiants cryptographie et sécurité/Leclaire DeRoland Crypto Quantique</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8640"/>
		<updated>2016-03-17T08:04:12Z</updated>

		<summary type="html">&lt;p&gt;JulianaLeclaire : /* Résistances aux attaques quantiques */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Auteurs : Juliana Leclaire, Céline de Roland ===&lt;br /&gt;
&lt;br /&gt;
== La cryptographie et la cryptanalyse dans le contexte de l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Introduction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
L&#039;informatique quantique se base sur la superposition de plusieurs états quantiques pour améliorer les capacités de calculs. &lt;br /&gt;
&lt;br /&gt;
Ce domaine nous amène à un vrai problème dans le sécurité de l&#039;internet. Car l&#039;informatique quantique, avec ses capacités de calculs va pouvoir casser les algorithmes de chiffrement asymétriques qui sont présents dans le Web. Les chiffrements asymétriques sont utilisés dans le connexions SSL/TLS, les paiements en ligne, etc.&lt;br /&gt;
&lt;br /&gt;
En partie pour ces raisons, il existe différents acteurs qui se penchent sur ce domaine. Notamment, la NSA, Google qui cherche à construire son propre ordinateur quantique.&lt;br /&gt;
Dans cette page, nous allons nous demander en quoi l&#039;informatique quantique peut changer le Web d&#039;aujourd&#039;hui et comment faire face à cette arrivée ?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Fonctionnement de l&#039;informatique quantique&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Qubit&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C&#039;est la plus petite unité de stockage de l&#039;information. Etant donné deux états de base &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;, un qubit non mesuré se trouve dans l&#039;état &amp;lt;math&amp;gt;\alpha \left|0\right\rangle + \beta \left|1\right\rangle&amp;lt;/math&amp;gt;, avec &amp;lt;math&amp;gt;|\alpha|^2 + |\beta|^2 = 1&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Lorsqu&#039;on mesure la valeur du qubit, on obtient soit &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; soit &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;|\alpha|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et  &amp;lt;math&amp;gt;|\beta|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
    &lt;br /&gt;
&#039;&#039;Théorème de non clonage&lt;br /&gt;
&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ce théorème, découvert en 1982 par Wootters, Zurek, et Dieks, consiste à dire qu&#039;il est impossible de recopier un qubit à l&#039;identique. La démonstration (par l&#039;absurde) repose sur le fait que pouvoir mettre le qubit B dans le même état que le qubit A implique que le qubit B soit déjà dans le même état que le qubit A.&lt;br /&gt;
On en déduit qu&#039;il est impossible de faire une opération de type copier/coller en informatique quantique.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Téléportation quantique&lt;br /&gt;
&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
La téléportation quantique consiste à transférer l&#039;état du qubit A dans le qubit B. Il s&#039;agit donc cette fois d&#039;une opération de couper/coller.&lt;br /&gt;
L&#039;intrication quantique se produit lorsque deux qubits sont dépendants l&#039;un de l&#039;autre même s&#039;ils sont éloignés l&#039;un de l&#039;autre. Dans cet état, si on mesure l&#039;un des deux, alors la mesure du deuxième est déterminée.&lt;br /&gt;
Sans entrer dans la théorie physique sous jacente, nous pouvons dire qu&#039;un canal EPR permet de réaliser cette opération de couper/coller en transmettant une information entre deux ordinateurs quantiques.&lt;br /&gt;
&lt;br /&gt;
== Chiffrement à clé publique face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mise en danger de la sécurité du Web&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Les ordinateurs quantiques présentent une rapidité de calculs extrèmement plus rapide que les ordinateurs à base de sillicium. Ces ordinateurs auraient aucune difficulté pour casser les codes de sécurité actuels reposant principalement sur un chiffrement à clé publique. Par définition le chiffrement à clé publique utilise une clé publique pour le chiffrement et une clé privée pour le décodage en se basant sur des grands nombres. Cependant ces grands nombres peuvent être vite retrouvés par des ordinateurs quantiques.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Exemple de chiffrement asymétrique: RSA&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ce chiffrement est couramment utilisé dans la sécurité du Web. &lt;br /&gt;
RSA repose sur la génération de grands nombres premiers, d&#039;un chiffrement avec une clé publique et d&#039;un déchiffrement avec une clé privée. &lt;br /&gt;
&lt;br /&gt;
* Initialisation : &lt;br /&gt;
** module &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; (grand nombre entier codé sur 2048 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;p, q&amp;lt;/math&amp;gt; : nombres premiers de même taille (codés sur 1024 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;\phi(N) = (p-1) * (q - 1)&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd(e, \phi(N)) = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
** Choisir &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;ed \equiv 1 [\phi(N)]&amp;lt;/math&amp;gt; et donc &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; est l&#039;inverse modulaire de &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; avec &amp;lt;math&amp;gt;d = e^-1 [\phi(N)]&amp;lt;/math&amp;gt;&lt;br /&gt;
** Clé publique : &amp;lt;math&amp;gt;pk(n, e)&amp;lt;/math&amp;gt;, Clé privée : &amp;lt;math&amp;gt;sk(d, p, q)&amp;lt;/math&amp;gt;&lt;br /&gt;
* Chiffrement : &amp;lt;math&amp;gt;c = m^e [N]&amp;lt;/math&amp;gt;&lt;br /&gt;
* Déchiffrement : &amp;lt;math&amp;gt;m = c^d [N]&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Exemple : &amp;lt;math&amp;gt;N=15&amp;lt;/math&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* Je choisis &amp;lt;math&amp;gt;x=7&amp;lt;/math&amp;gt;&lt;br /&gt;
* En calculant successivement les valeurs de &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; on trouve &amp;lt;math&amp;gt;7^{4} \equiv 1 [15]&amp;lt;/math&amp;gt;.&lt;br /&gt;
* &amp;lt;math&amp;gt;r=4&amp;lt;/math&amp;gt; est pair&lt;br /&gt;
* &amp;lt;math&amp;gt;pgcd(x^{\frac{r}{2}}+1,15) = 5&amp;lt;/math&amp;gt;. Donc &amp;lt;math&amp;gt;P = 5&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;Q = pgcd(x^{\frac{r}{2}}-1,15) = 3&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La sécurité de RSA repose sur la difficulté à factoriser des grands nombres en nombres premiers. En effet avec &amp;lt;math&amp;gt;(N, e)&amp;lt;/math&amp;gt; il faudrait pouvoir retrouver &amp;lt;math&amp;gt;(d, p, q)&amp;lt;/math&amp;gt; où &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt; correspondant à un cassage total. D&#039;après le théorème de factorisation unique tout entier &amp;lt;math&amp;gt;n \ge 2&amp;lt;/math&amp;gt; admet une factorisation unique en produit de puissances de nombres entiers. Des algorithmes de factorisation ont été trouvés pour différentes tailles de module $N$ mais pour pallier à ces attaques on augmente la longueur du module. De nos jours pour sécuriser le chiffrement il faut utiliser des modules strictement supérieur à 2048 bits. Cependant avec l&#039;informatique quantique il ne suffira plus d&#039;augmenter la taille du module car la puissance de calcul permettra de casser le chiffrement, peu importe la taille du module.&lt;br /&gt;
&lt;br /&gt;
== Chiffrement à clé privée face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mise en danger de la sécurité&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Si les ordinateurs quantiques présentent une rapidité de calcul permettant d&#039;effectuer des factorisations impossibles pour un ordinateur classique, il nous semble logique qu&#039;ils soient également performants pour effectuer des attaques de type force brute sur des messages chiffrés par une clé privée qui aurait été transmise par un moyen plus sûr que RSA.&lt;br /&gt;
 &lt;br /&gt;
Un ordinateur quantique pourrait réaliser le déchiffrement avec toutes les clés possibles en parallèle. Ce qui permettrait de cryptanalyser le message en une seule opération. Le principe se base sur la superposition quantique. On superposerait toutes les clés possibles et on déchiffrerait. On obtiendrait alors une superposition de résultats. Le point le plus difficile est de trouver le résultat correct à partir de la superposition obtenue. En effet, le principe selon lequel mesurer une valeur modifie cette valeur fait qu&#039;en observant une superposition, on obtient un seul état aléatoire. Une solution à ce problème a été trouvé par Lov Grover en $O(\sqrt{n})$ étapes.&lt;br /&gt;
&lt;br /&gt;
== Résistances aux attaques quantiques ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nouvel algorithme&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Depuis 2006, une conférence internationnale se produit chaque année nommée &amp;quot;Post Quantum Cryptography&amp;quot; dans l&#039;intention de trouver des algorithmes résistants aux ordinateurs quantiques. Nathan Hamlin et William Webb, des mathématiciens, ont présenté récemment un algorithme de chiffrement asymétrique possiblement capable de faire face aux attaques quantiques. Cet algorithme part de l&#039;ancien chiffrement de Merkle-Hellman qui se base sur le problème du sac à dos nommé &amp;quot;Knapsack code&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
[[Problème du sac-à-dos]]&lt;br /&gt;
&lt;br /&gt;
Etant donné un sac avec une capacité &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; et plusieurs objets de poids différents. Le problème du sac-à-dos consiste à trouver la suite d&#039;objets qui entre dans le sac et qui maximise sa capacité. En partant d&#039;un n-uplet &amp;lt;math&amp;gt;(a_1, a_2, ..., a_n) \in N^n&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;S \in N&amp;lt;/math&amp;gt;, il faut trouver un n-uplet binaire &amp;lt;math&amp;gt;(x_1, x_2, ..., x_n) \in {0,1}^n&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;S = \sum_{i=1}^{n} (a_{i}*x_{i}) &amp;lt;/math&amp;gt;. La somme &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; des poids des objets choisi ne doit pas dépasser la capacité du sac à dos. Pour résoudre ce problème il n&#039;existe pas d&#039;algorithme avec une compléxité polynomial.&lt;br /&gt;
&lt;br /&gt;
[[Chiffrement de Merkle-Hellman]]&lt;br /&gt;
&lt;br /&gt;
Cet algorithme de chiffrement à clé publique repose sur la complexité algorithmique du problème de sac-à-dos et utilise des suites de poids super-croissante pour le secret et non super-croissante pour la clé publique. Si les &amp;lt;math&amp;gt;(a_{i}){i}&amp;lt;/math&amp;gt; n&#039;ont pas de propriétés particulières, la recherche du message codé en binaire &amp;lt;math&amp;gt;(x_{i})_{i}&amp;lt;/math&amp;gt; est un problème difficile. Il n&#039;existe pas d&#039;algorithme polynomial pour le résoudre. Pour pouvoir retrouver facilement ce n-uplet une propriété super-croissante est utilisé sur les &amp;lt;math&amp;gt;(a_{i})_{i}&amp;lt;/math&amp;gt;. Un n-uplet b est super-croissant si&lt;br /&gt;
&amp;lt;math&amp;gt;\forall i \in [2,n] b_{i} &amp;gt; \sum_{j=1}^{i-1} {b_{j}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Le nouvel algorithme de Nathan Hamlin et William Webb renforce l&#039;algorithme du sac à dos et permet de créer de nouvelles clés publiques.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Chiffrement quantique&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Photons polarisés&lt;br /&gt;
&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Les photons sont des particules qui composent la lumière. Ils sont composés d&#039;un champ électrique et d&#039;un champ magnétique. Une lumière non-polarisée se caractérise par une différence d&#039;orientation du champ électrique suivant les photons. Ainsi la polarisation consiste, grâce à un polarisateur, d&#039;obtenir des photons avec un champ électrique orienté de manière identique. Les filtres polarisants permettent d&#039;appliquer un angle d&#039;orientation sur les photons afin :&lt;br /&gt;
* de récupérer les photons polarisés parallèlement par rapport à cet angle&lt;br /&gt;
* d&#039;éliminer les photons polarisés perpendiculairement&lt;br /&gt;
* de récupérer les photons polarisés intermédiaires avec une probabilité de &amp;lt;math&amp;gt;\cos(\alpha)&amp;lt;/math&amp;gt; en les réinitialisant avec une polarisation égale à l&#039;angle d&#039;orientation du filtre.&lt;br /&gt;
&lt;br /&gt;
Du fait de la transformation de polarisation il est impossible de connaître l&#039;information sur les polarisations précédentes du photons.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Distribution des clés&lt;br /&gt;
&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Le chiffrement quantique offre un moyen sécurisé d’échanger des clés privées pour réaliser des chiffrements symétriques. Cette distribution s’appuie sur l’envoi de photons polarisés par fibre optique. Les personnes s&#039;échangeant les clés doivent avoir accès à un canal quantique et un canal classique. Le principe est le suivant :&lt;br /&gt;
* Alice envoie par le canal quantique une suite de photons polarisés aléatoirement.&lt;br /&gt;
* Bob applique un filtre de polarisation qui lui donne 1 chance sur 2 (et 1 chance sur 4 s&#039;il y a eu un espion) d&#039;appliquer le bon filtre et les renvoit à Alice.&lt;br /&gt;
* Alice et Bob s&#039;échangent par le canal classique leur choix des axes de polarisation éliminant ainsi les erreurs.&lt;br /&gt;
* Alice communique une partie de ses résultats.&lt;br /&gt;
* Maintenant que Bob connait les axes qu&#039;Alice a appliqué et les résultats il peut savoir si la communication a été écoutée ou non. Ceci étant grâce au théorème de non clonage où il est impossible de cloner des états quantiques inconnus.&lt;br /&gt;
&lt;br /&gt;
Ce principe permet de détecter facilement s&#039;il y a eu des intrusions durant la communication de la clé privée. En effet si un attaquant écoute il lui faut récupérer les photons envoyés par Alice mesurer la polarisation et renvoyer le photon à Bob. Pour mesurer la polarisation l&#039;attaquant doit appliquer, comme Bob, un filtre pour deviner la base qu&#039;Alice a envoyé. Ainsi cette intrusion a 1 chance sur 2 d&#039;introduire des incohérences dans les données d&#039;Alice et Bob en envoyant 1 fois sur 2 un mauvais photon. Par la suite Bob obtient donc 1 chance sur 4 d&#039;appliquer le bon filtre. Par analyses statistiques, Alice et Bob peuvent détecter de manière sure s&#039;il y a eu espionnage sur le canal quantique.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Attaque de l&#039;homme du milieu&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Comme toute méthode d&#039;échange de clé privée, cette méthode reste vulnérable à une attaque de type &amp;quot;homme du milieu&amp;quot;. Il faut donc la combiner avec un mécanisme de certification afin de s&#039;assurer de l&#039;identité des protagonistes.&lt;/div&gt;</summary>
		<author><name>JulianaLeclaire</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8639</id>
		<title>Projets étudiants cryptographie et sécurité/Leclaire DeRoland Crypto Quantique</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Projets_%C3%A9tudiants_cryptographie_et_s%C3%A9curit%C3%A9/Leclaire_DeRoland_Crypto_Quantique&amp;diff=8639"/>
		<updated>2016-03-17T07:37:04Z</updated>

		<summary type="html">&lt;p&gt;JulianaLeclaire : /* Résistances aux attaques quantiques */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Auteurs : Juliana Leclaire, Céline de Roland ===&lt;br /&gt;
&lt;br /&gt;
== La cryptographie et la cryptanalyse dans le contexte de l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Introduction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
L&#039;informatique quantique se base sur la superposition de plusieurs états quantiques pour améliorer les capacités de calculs. &lt;br /&gt;
&lt;br /&gt;
Ce domaine nous amène à un vrai problème dans le sécurité de l&#039;internet. Car l&#039;informatique quantique, avec ses capacités de calculs va pouvoir casser les algorithmes de chiffrement asymétriques qui sont présents dans le Web. Les chiffrements asymétriques sont utilisés dans le connexions SSL/TLS, les paiements en ligne, etc.&lt;br /&gt;
&lt;br /&gt;
En partie pour ces raisons, il existe différents acteurs qui se penchent sur ce domaine. Notamment, la NSA, Google qui cherche à construire son propre ordinateur quantique.&lt;br /&gt;
Dans cette page, nous allons nous demander en quoi l&#039;informatique quantique peut changer le Web d&#039;aujourd&#039;hui et comment faire face à cette arrivée ?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Fonctionnement de l&#039;informatique quantique&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Qubit&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C&#039;est la plus petite unité de stockage de l&#039;information. Etant donné deux états de base &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;, un qubit non mesuré se trouve dans l&#039;état &amp;lt;math&amp;gt;\alpha \left|0\right\rangle + \beta \left|1\right\rangle&amp;lt;/math&amp;gt;, avec &amp;lt;math&amp;gt;|\alpha|^2 + |\beta|^2 = 1&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Lorsqu&#039;on mesure la valeur du qubit, on obtient soit &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; soit &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;|\alpha|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|0\right\rangle&amp;lt;/math&amp;gt; et  &amp;lt;math&amp;gt;|\beta|^2&amp;lt;/math&amp;gt; est la probabilité que la mesure de la valeur du qubit donne &amp;lt;math&amp;gt;\left|1\right\rangle&amp;lt;/math&amp;gt;.&lt;br /&gt;
    &lt;br /&gt;
&#039;&#039;Théorème de non clonage&lt;br /&gt;
&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ce théorème, découvert en 1982 par Wootters, Zurek, et Dieks, consiste à dire qu&#039;il est impossible de recopier un qubit à l&#039;identique. La démonstration (par l&#039;absurde) repose sur le fait que pouvoir mettre le qubit B dans le même état que le qubit A implique que le qubit B soit déjà dans le même état que le qubit A.&lt;br /&gt;
On en déduit qu&#039;il est impossible de faire une opération de type copier/coller en informatique quantique.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Téléportation quantique&lt;br /&gt;
&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
La téléportation quantique consiste à transférer l&#039;état du qubit A dans le qubit B. Il s&#039;agit donc cette fois d&#039;une opération de couper/coller.&lt;br /&gt;
L&#039;intrication quantique se produit lorsque deux qubits sont dépendants l&#039;un de l&#039;autre même s&#039;ils sont éloignés l&#039;un de l&#039;autre. Dans cet état, si on mesure l&#039;un des deux, alors la mesure du deuxième est déterminée.&lt;br /&gt;
Sans entrer dans la théorie physique sous jacente, nous pouvons dire qu&#039;un canal EPR permet de réaliser cette opération de couper/coller en transmettant une information entre deux ordinateurs quantiques.&lt;br /&gt;
&lt;br /&gt;
== Chiffrement à clé publique face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mise en danger de la sécurité du Web&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Les ordinateurs quantiques présentent une rapidité de calculs extrèmement plus rapide que les ordinateurs à base de sillicium. Ces ordinateurs auraient aucune difficulté pour casser les codes de sécurité actuels reposant principalement sur un chiffrement à clé publique. Par définition le chiffrement à clé publique utilise une clé publique pour le chiffrement et une clé privée pour le décodage en se basant sur des grands nombres. Cependant ces grands nombres peuvent être vite retrouvés par des ordinateurs quantiques.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Exemple de chiffrement asymétrique: RSA&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ce chiffrement est couramment utilisé dans la sécurité du Web. &lt;br /&gt;
RSA repose sur la génération de grands nombres premiers, d&#039;un chiffrement avec une clé publique et d&#039;un déchiffrement avec une clé privée. &lt;br /&gt;
&lt;br /&gt;
* Initialisation : &lt;br /&gt;
** module &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; (grand nombre entier codé sur 2048 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;p, q&amp;lt;/math&amp;gt; : nombres premiers de même taille (codés sur 1024 bits)&lt;br /&gt;
** &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;\phi(N) = (p-1) * (q - 1)&amp;lt;/math&amp;gt;&lt;br /&gt;
** &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;pgcd(e, \phi(N)) = 1&amp;lt;/math&amp;gt;&lt;br /&gt;
** Choisir &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;ed \equiv 1 [\phi(N)]&amp;lt;/math&amp;gt; et donc &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; est l&#039;inverse modulaire de &amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt; avec &amp;lt;math&amp;gt;d = e^-1 [\phi(N)]&amp;lt;/math&amp;gt;&lt;br /&gt;
** Clé publique : &amp;lt;math&amp;gt;pk(n, e)&amp;lt;/math&amp;gt;, Clé privée : &amp;lt;math&amp;gt;sk(d, p, q)&amp;lt;/math&amp;gt;&lt;br /&gt;
* Chiffrement : &amp;lt;math&amp;gt;c = m^e [N]&amp;lt;/math&amp;gt;&lt;br /&gt;
* Déchiffrement : &amp;lt;math&amp;gt;m = c^d [N]&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Exemple : &amp;lt;math&amp;gt;N=15&amp;lt;/math&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* Je choisis &amp;lt;math&amp;gt;x=7&amp;lt;/math&amp;gt;&lt;br /&gt;
* En calculant successivement les valeurs de &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; on trouve &amp;lt;math&amp;gt;7^{4} \equiv 1 [15]&amp;lt;/math&amp;gt;.&lt;br /&gt;
* &amp;lt;math&amp;gt;r=4&amp;lt;/math&amp;gt; est pair&lt;br /&gt;
* &amp;lt;math&amp;gt;pgcd(x^{\frac{r}{2}}+1,15) = 5&amp;lt;/math&amp;gt;. Donc &amp;lt;math&amp;gt;P = 5&amp;lt;/math&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;Q = pgcd(x^{\frac{r}{2}}-1,15) = 3&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La sécurité de RSA repose sur la difficulté à factoriser des grands nombres en nombres premiers. En effet avec &amp;lt;math&amp;gt;(N, e)&amp;lt;/math&amp;gt; il faudrait pouvoir retrouver &amp;lt;math&amp;gt;(d, p, q)&amp;lt;/math&amp;gt; où &amp;lt;math&amp;gt;N = p * q&amp;lt;/math&amp;gt; correspondant à un cassage total. D&#039;après le théorème de factorisation unique tout entier &amp;lt;math&amp;gt;n \ge 2&amp;lt;/math&amp;gt; admet une factorisation unique en produit de puissances de nombres entiers. Des algorithmes de factorisation ont été trouvés pour différentes tailles de module $N$ mais pour pallier à ces attaques on augmente la longueur du module. De nos jours pour sécuriser le chiffrement il faut utiliser des modules strictement supérieur à 2048 bits. Cependant avec l&#039;informatique quantique il ne suffira plus d&#039;augmenter la taille du module car la puissance de calcul permettra de casser le chiffrement, peu importe la taille du module.&lt;br /&gt;
&lt;br /&gt;
== Chiffrement à clé privée face à l&#039;informatique quantique ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mise en danger de la sécurité&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Si les ordinateurs quantiques présentent une rapidité de calcul permettant d&#039;effectuer des factorisations impossibles pour un ordinateur classique, il nous semble logique qu&#039;ils soient également performants pour effectuer des attaques de type force brute sur des messages chiffrés par une clé privée qui aurait été transmise par un moyen plus sûr que RSA.&lt;br /&gt;
 &lt;br /&gt;
Un ordinateur quantique pourrait réaliser le déchiffrement avec toutes les clés possibles en parallèle. Ce qui permettrait de cryptanalyser le message en une seule opération. Le principe se base sur la superposition quantique. On superposerait toutes les clés possibles et on déchiffrerait. On obtiendrait alors une superposition de résultats. Le point le plus difficile est de trouver le résultat correct à partir de la superposition obtenue. En effet, le principe selon lequel mesurer une valeur modifie cette valeur fait qu&#039;en observant une superposition, on obtient un seul état aléatoire. Une solution à ce problème a été trouvé par Lov Grover en $O(\sqrt{n})$ étapes.&lt;br /&gt;
&lt;br /&gt;
== Résistances aux attaques quantiques ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nouvel algorithme&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Des mathématiciens ont travaillé sur cette question pour remédier à ces problèmes. Depuis 2006, une conférence internationnale se produit chaque année nommée &amp;quot;Post Quantum Cryptography&amp;quot; afin de trouver des algorithmes résistants aux ordinateurs quantiques. Nathan Hamlin et William Webb ont présenté récemment un algorithme de chiffrement asymétrique possiblement capable de faire face aux attaques quantiques. Cet algoritme part d&#039;un ancien algorithme se basant sur le problème du sac à dos nommé &amp;quot;Knapsack code&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Le problème du sac à dos consiste, étant donné différents objets avec chacun un poinds et un poids maximum pour le sac, à trouver quels sont les objets à mettre dans le sac afin de maximiser la valeur totale sans dépasser le poids maximal du sac. En partant d&#039;un n-uplet &amp;lt;math&amp;gt;(a_1, a_2, ..., a_n) \in N^n&amp;lt;/math&amp;gt; et &amp;lt;math&amp;gt;S \in N&amp;lt;/math&amp;gt;, il faut trouver un n-uplet binaire &amp;lt;math&amp;gt;(x_1, x_2, ..., x_n) \in {0,1}^n&amp;lt;/math&amp;gt; tel que &amp;lt;math&amp;gt;S = \sum_{i=1}^{n} (a_{i}*x_{i}) &amp;lt;/math&amp;gt;. La somme &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; des poids des objets choisi ne doit pas dépasser la capacité du sac à dos. Pour résoudre ce problème il n&#039;existe pas d&#039;algorithme avec une compléxité polynomial.&lt;br /&gt;
&lt;br /&gt;
Le nouvel algorithme de Nathan Hamlin et William Webb renforce l&#039;algorithme du sac à dos et permet de créer de nouvelles clés publiques.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Chiffrement quantique&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Photons polarisés&lt;br /&gt;
&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Les photons sont des particules qui composent la lumière. Ils sont composés d&#039;un champ électrique et d&#039;un champ magnétique. Une lumière non-polarisée se caractérise par une différence d&#039;orientation du champ électrique suivant les photons. Ainsi la polarisation consiste, grâce à un polarisateur, d&#039;obtenir des photons avec un champ électrique orienté de manière identique. Les filtres polarisants permettent d&#039;appliquer un angle d&#039;orientation sur les photons afin :&lt;br /&gt;
* de récupérer les photons polarisés parallèlement par rapport à cet angle&lt;br /&gt;
* d&#039;éliminer les photons polarisés perpendiculairement&lt;br /&gt;
* de récupérer les photons polarisés intermédiaires avec une probabilité de &amp;lt;math&amp;gt;\cos(\alpha)&amp;lt;/math&amp;gt; en les réinitialisant avec une polarisation égale à l&#039;angle d&#039;orientation du filtre.&lt;br /&gt;
&lt;br /&gt;
Du fait de la transformation de polarisation il est impossible de connaître l&#039;information sur les polarisations précédentes du photons.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Distribution des clés&lt;br /&gt;
&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Le chiffrement quantique offre un moyen sécurisé d’échanger des clés privées pour réaliser des chiffrements symétriques. Cette distribution s’appuie sur l’envoi de photons polarisés par fibre optique. Les personnes s&#039;échangeant les clés doivent avoir accès à un canal quantique et un canal classique. Le principe est le suivant :&lt;br /&gt;
* Alice envoie par le canal quantique une suite de photons polarisés aléatoirement.&lt;br /&gt;
* Bob applique un filtre de polarisation qui lui donne 1 chance sur 2 (et 1 chance sur 4 s&#039;il y a eu un espion) d&#039;appliquer le bon filtre et les renvoit à Alice.&lt;br /&gt;
* Alice et Bob s&#039;échangent par le canal classique leur choix des axes de polarisation éliminant ainsi les erreurs.&lt;br /&gt;
* Alice communique une partie de ses résultats.&lt;br /&gt;
* Maintenant que Bob connait les axes qu&#039;Alice a appliqué et les résultats il peut savoir si la communication a été écoutée ou non. Ceci étant grâce au théorème de non clonage où il est impossible de cloner des états quantiques inconnus.&lt;br /&gt;
&lt;br /&gt;
Ce principe permet de détecter facilement s&#039;il y a eu des intrusions durant la communication de la clé privée. En effet si un attaquant écoute il lui faut récupérer les photons envoyés par Alice mesurer la polarisation et renvoyer le photon à Bob. Pour mesurer la polarisation l&#039;attaquant doit appliquer, comme Bob, un filtre pour deviner la base qu&#039;Alice a envoyé. Ainsi cette intrusion a 1 chance sur 2 d&#039;introduire des incohérences dans les données d&#039;Alice et Bob en envoyant 1 fois sur 2 un mauvais photon. Par la suite Bob obtient donc 1 chance sur 4 d&#039;appliquer le bon filtre. Par analyses statistiques, Alice et Bob peuvent détecter de manière sure s&#039;il y a eu espionnage sur le canal quantique.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Attaque de l&#039;homme du milieu&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Comme toute méthode d&#039;échange de clé privée, cette méthode reste vulnérable à une attaque de type &amp;quot;homme du milieu&amp;quot;. Il faut donc la combiner avec un mécanisme de certification afin de s&#039;assurer de l&#039;identité des protagonistes.&lt;/div&gt;</summary>
		<author><name>JulianaLeclaire</name></author>
	</entry>
</feed>