Imaginons qu'Alice et Bob se parlent en utilisant un secret partagé. Si celui ci est connu de la méchante Eve, elle aura le moyen de lire la conversation. Si Alice et Bob utilisent toujours le même secret, Eve aura accès à toutes les conversations passées. Et donc, comment l'éviter?

Imaginons à présent qu'Alice et Bob utilisent un chiffrement mixte. Alice publie sa clé publique. Bob envoie un secret à Alice pour établir la communication et échangent via un chiffrement symétrique dont la clé est le secret partagé. Imaginons encore que la méchante Eve stocke toutes les communications intermédiaires en attendant le jour où elle aura trouvé la clé privée d'Alice. A l'aide d'une bande machiavélique de cryptanalystes, et parce qu'Alice a laissé sa clé publique trop longuement exposée, ce jour là vient, et Eve a le moyen de reprendre tous les messages passés, et de reconstituer tous les messages envoyés. Elle retrouve tous les échanges, et Alice et Bob sont découverts. La confidentialité persistante est une propriété souhaitable d'un protocole qui consiste en ce que si Eve trouve la clé privée d'Alice, aucune des communications passées d'Alice n'en est pour autant accessible par Eve.

Diffie Hellman, le retour!

Et bien oui, on peut garantir simplement la confidentialité persistante dans les échanges de communication en appliquant le protocole d'échange de clef de Diffie Hellman. C'est un cas particulier d'une idée simple: une session = un secret partagé. Si vous le changez souvent, vous ne mettez en péril vos communications que le temps de vie du secret partagé. A quoi sert alors d'avoir une clef publique? A établir votre identité finalement. Diffie Hellman ne propose qu'un partage de secret, mais il marche de la même manière que vous ayez Eve ou Bob en face. Si vous êtes Alice, un meilleur protocole consiste à :

  • appliquer DH pour sécuriser la communication sur la base d'un secret partagé. Une fois celui ci connu, les deux peuvent utiliser un chiffrement symétrique quelconque, disons AES, beaucoup plus rapide que le chiffrement asymétrique
  • prouver son identité: si Bob veut être sûr qu'il a Alice en face, il envoie une chaine C aléatoire chiffrée avec la clef publique d'Alice. Si Bob reçoit la chaine C (donc déchiffrée avec la clef privée d'Alice), il a alors la certitude d'avoir Alice en face ( ou une personne qui a la clef privée d'Alice)

Pourquoi est ce mieux? Fondamentalement, parce que vous avez un secret par session. Donc, pour un cryptanalyste qui trouverait le secret partagé, il n'aurait qu'une seule session en clair, ce qui n'est pas aussi rentable que de trouver un secret pour toutes les sessions passées. Comme le rappelle si bien cet article, appliquer un partage de secret est sensible à l'attaque par l'homme du milieu. C'est pour cela que nous avons rajouté, une fois la communication sécurisée, une preuve d'identité. On a donné le cas pour Bob qui veut parler à Alice, on peut réaliser l'opération dans les deux sens.

Conclusion

La confidentialité persistante dont nous parlons ici ne porte que sur les communications. Si vous utilisez une messagerie sécurisée, il faut cependant rester vigilant-e aux messages qui restent stockés sur le terminal utilisé. En substance, que se passe t'il si votre code PIN et votre téléphone vous sont volés? C'est aussi d'une certaine manière un cas de confidentialité persistante. On en reparlera.

 

Comments are closed.

Set your Twitter account name in your settings to use the TwitterBar Section.