Question:
Pouvez-vous dire que, puisque le chiffrement ponctuel des pads est incassable, il est le meilleur s'il est utilisé correctement?
Saoud
2015-02-12 01:37:01 UTC
view on stackexchange narkive permalink

Je lis actuellement sur le chiffrement ponctuel des pads, et j'ai une question. Ils disent que le cryptage OTP est incassable, et cela peut être prouvé mathématiquement. Ceci est à condition que la clé utilisée soit vraiment aléatoire et ne soit utilisée qu'une seule fois, non? Et si je viens avec un système complet (peut être logiciel ou matériel ou une combinaison des deux) pour forcer ces deux conditions? Aurai-je la meilleure solution de chiffrement idéale pour &?

Par exemple, les deux parties désireuses d'échanger des informations obtiennent les clés en se connectant à un serveur qui est en ligne tout le temps. Le serveur s'assurera que les clés générées sont aléatoires et veillera à ce qu'une clé ne soit plus jamais utilisée. Les utilisateurs de chaque côté n'auront qu'à disposer d'une connexion Internet et d'un mécanisme d'échange d'informations. Les informations voyageront via Internet cryptées à l'aide de la clé de clavier unique générée aléatoirement par le serveur.

Ai-je un sens ici? Je viens de commencer à lire environ un carnet de temps, et j'ai commencé à me poser des questions à ce sujet. Il existe de nombreux sites Web qui vous diront qu'une seule fois n'est pas pratique du tout, car vous ne pouvez pas vraiment trouver un nombre vraiment aléatoire ou quelque chose comme ça.

Ajout:

Ces types proposent-ils quelque chose de spécial dans la distribution de clés? Ils disent avoir perfectionné la mise en œuvre d'OTP au fil du temps.

http://www.mils.com/en/technology/unbreakable-encryption/#1

S'il est utilisé correctement, le meilleur système de sécurité est de dire à l'autre partie tout ce que vous avez à lui dire, en personne, sans personne d'autre dans une pièce que vous avez personnellement balayée pour les appareils d'enregistrement. La raison pour laquelle nous ne faisons pas cela est que nous * devons * nous préoccuper de l'aspect pratique - un OTP ne fonctionne que dans des circonstances très spécifiques, ce qui le rend sous-optimal.
"Disons par exemple que les deux parties désireuses d'échanger des informations obtiennent les clés en se connectant à un serveur qui est en ligne tout le temps." Woah, attendez une seconde. Comment sécurisez-vous exactement cette connexion? Avec un tampon unique différent? Comment les clients ont-ils obtenu ce tampon? Vous voyez le problème?
«Meilleur» est subjectif. Tout dépend de ses besoins. Vitesse de cryptage, outils disponibles, résistance au cracking, facilité d'échange de clés ... la liste est longue.
Rappelez-vous quel est le principe fondamental de la cryptographie: * vous pouvez tirer parti du secret d'une clé pour sécuriser un message contre certaines attaques *. Les nouveaux arrivants à la cryptographie tombent souvent amoureux des mathématiques et passent sous silence les difficultés importantes dans cette partie "le secret de la clé".
@cpast quelqu'un a regardé les Sopranos, je vois?
Vous ne pouvez pas actuellement échanger un OTP sur Internet tout en bénéficiant de la sécurité d'un OTP. La sécurité serait limitée à la méthode utilisée pour échanger la clé. Cela ne veut pas dire qu'un OTP est inutile: dans certaines applications, c'est le meilleur choix. Je crois que les soi-disant «stations numériques» diffusent toujours des messages en utilisant un OTP pour crypter le message. Si un OTP est utilisé, il est généralement échangé à la main et il incombe à chaque partie de le garder en sécurité.
duplication possible de [Pourquoi l'utilisation d'une clé pseudo-aléatoire est-elle considérée comme plus pratique qu'un pad ponctuel?] (http://security.stackexchange.com/questions/12733/why-is-using-a-pseudo-random- clé-considérée-plus-pratique-qu'un-pad unique)
En théorie, théorie et pratique sont les mêmes. En pratique, ils ne le sont pas. Les tampons à usage unique sont incassables, mais il y a des considérations pratiques très sérieuses lorsqu'il s'agit de les utiliser.
@corsiKa En fait, de telles précautions ne sont pas si rares. Il existe une industrie décente dans la fabrication d'équipements pour balayer les pièces à la recherche d'insectes. Ces balayages sont généralement effectués dans les situations de protection des entreprises, des gouvernements et des VIP.
Sept réponses:
gowenfawr
2015-02-12 01:44:27 UTC
view on stackexchange narkive permalink

La distribution des clés est le problème.

Dans votre scénario, vous utilisez un serveur pour communiquer les tampons à usage unique aux utilisateurs. Mais comment cette communication est-elle protégée? Pas par un pad ponctuel, ou ce ne serait pas nécessaire. Disons que c'est SSL avec AES 128. Ensuite, wham, votre cryptosystème est aussi sécurisé que SSL avec AES 128 - assez sécurisé, mais pas aussi sécurisé qu'un pad ponctuel.

Les mils types que vous référencez apparaissent d'offrir des périphériques physiques sur lesquels vous chargez un flux de clés unique (et à partir duquel vous pouvez l'utiliser). Encore une fois, la distribution des clés est un problème. Vous pouvez acheter deux disques durs, y charger des téraoctets de flux de clés et en envoyer un à votre copain ... comment? Faites-vous confiance à USPS? Fedex? Courrier? Pochette diplomatique? Tous ces éléments peuvent être compromis. Le seul moyen parfaitement chiffré de les envoyer serait de les chiffrer avec un pa ... merde, c'est arrivé à nouveau.

Il y a toujours l'échange de clés Diffie-Hellman.
@SpencerDoak Mais alors vous n'êtes aussi sûr que la clé utilisée pour l'échange - et alors vous n'auriez pas du tout besoin du serveur et pouvez échanger des clés directement ... Et puis vous commencez à vous soucier de l'authentification et du MITM ...
Il existe une réponse (encore assez théorique) à ce problème: les photons intriqués. Quantum Crypto ne nous permet pas de crypter directement un message, mais il nous permet de distribuer (lentement) une clé. OTP est la méthode de cryptage évidente à utiliser avec de telles clés.
@MSalters Et il y a déjà des attaques efficaces (au pluriel, deux que je connais par le haut de ma tête) contre l'intrication quantique (ou à tout le moins, les systèmes cryptographiques existants utilisant l'intrication quantique). Ce n'est donc pas non plus une solution.
Non, le problème est Key ** Management **, car le matériel clé pourrait être compromis ou perdu, ou un attaquant pourrait «désynchroniser» les 2 parties (DOS).
Il existe une offre infinie de tampons uniques sur YouTube.
@HotLicks, un pad ponctuel doit également être suffisamment aléatoire. Bien que YouTube soit aléatoire à bien des égards, il ne s'agit pas mathématiquement de données suffisamment aléatoires.
@gowenfawr - Il faut simplement savoir que vous comptez les mots dans l'article principal de football (football) sur le site sportif de la BBC, utilisez-le comme index dans un article sur CNN pour obtenir l'ID de la vidéo YouTube spécifique et le décalage dedans pour commencer. Et, bien sûr, exécutez les données via un algorithme de hachage raisonnablement bon avant de les utiliser comme pad.
@gowenfawr Je ne sais pas si c'est vrai; mais j'ai pensé pendant des siècles qu'il serait simple et sûr d'échanger des clés physiques une fois, puis d'utiliser ces clés pour échanger d'autres clés.
@SeanPedersen Le problème avec l'utilisation de cela pour un OTP est que vous devez utiliser un bit de clé OTP pour chaque bit que vous cryptez. Donc, si vous voulez crypter 1024 bits de votre prochain OTP, vous devez utiliser 1024 bits de votre actuel, donc ça ne sert vraiment à rien de le faire.
@gowenfawr Je pense que vous surestimez le problème de la distribution des clés. Il existe absolument * des * situations où vous avez une meilleure capacité à sécuriser les supports physiques qu'une communication électronique; si vous donnez à votre espion un paquet d'OTP en personne, ou si vous faites voler une cassette accompagnée à tout moment d'un courrier de confiance (ce n'est pas une façon inhabituelle de transporter de petites valises diplomatiques, et le courrier peut signaler si la valise a été ouverte afin que vous puissiez jeter ce tampon), vous pouvez vous retrouver dans une situation où vous faites autant confiance à votre distribution de clés que vous faites confiance à l'autre côté pour ne pas partager le message.
Fondamentalement, pour paraphraser quelques réponses à une autre question, la fonction de base d'un OTP est de déplacer le problème de «garder cette chose en sécurité» à un moment où c'est plus facile - une communication sécurisée du pad peut se produire sur votre emploi du temps plutôt que quand vous devez envoyer le vrai message, car tant que la clé reste sécurisée, le message reste sécurisé.
@cpast, vous avez raison, la distribution de clés physiques est certainement possible, et je soupçonne que les gouvernements le font tout le temps. Mais ce n'est pas pratique pour la plupart des utilisateurs, et contraire à l'objectif déclaré du PO, qui était de permettre l'utilisation d'OTP via la distribution de clés en ligne.
Le fait est que l'OTP n'est aussi sûr que le canal de distribution de clés. Par conséquent, OTP ne peut JAMAIS être implémenté en utilisant un échange de clé hors limite. Les tentatives de transfert de la clé dans le canal ont pour résultat que le canal lui-même est le maillon le plus faible.
AJ Henderson
2015-02-12 05:27:02 UTC
view on stackexchange narkive permalink

Non, car vous comprenez mal la signification de «meilleur» dans un contexte de sécurité. Contrairement à l'opinion populaire, «le plus sûr» et le «meilleur» ne sont pas des synonymes, mais la sécurité consiste entièrement à trouver un équilibre entre convivialité et sécurité. Il s'agit de la gestion des risques.

Le lecteur le plus sûr de la planète est d'écrire à DevNull (le seau à bits) au fond de l'océan dans une boîte verrouillée dans un tas de béton, dans une cage de Faraday, coulé dans la lave sans câbles ni fils. Absolument personne n'obtiendra jamais de données, mais les utilisateurs légitimes n'obtiendront jamais de données non plus.

Une fois, les tampons ont le luxe d'être prouvés impossible à casser s'ils sont utilisés correctement, mais ils sont encombrants utiliser. S'ils étaient la "meilleure" option, alors aucun des autres systèmes que nous connaissons aujourd'hui n'existerait car ils sont presque tous nés après l'idée de l'unique time pad (qui est un concept vraiment ancien.)

La meilleure option est plutôt celle qui réduit vos risques à des niveaux acceptables tout en maintenant un niveau de convivialité acceptable. Dans de nombreux cas, la meilleure sécurité peut bien être l'absence de sécurité. Par exemple, je me fiche de savoir si vous connaissez mes recettes de biscuits, donc faire tout effort pour les protéger réduirait inutilement la convivialité. Je me soucie de savoir si mes recettes de cuisine se perdent, alors je peux vouloir stocker plusieurs copies et les sauvegarder quelque part, mais je n’aurais pas accès à les contrôler car ce serait une perte de temps.

Le le même processus de pensée n'est pas moins vrai pour les situations de haute sécurité que pour mes recettes de cuisine. Il s'agit d'analyser le risque tel qu'il s'applique à moi (Oreo peut se soucier davantage de la protection de sa recette), puis de décider quelle est ma meilleure option. C'est différent pour chacun et pour chaque situation et il n'y a pas de réponse universelle.

+1 pour "les utilisateurs légitimes n'obtiendront jamais de données non plus" Et la lave, bien sûr.
@Hopelessn00b - Ok, relisant votre commentaire plus tôt, je pense que je comprends ce que vous dites à propos d'OTP qui ne maintient pas une sécurité de l'information parfaite (désolé, il est 2 heures du matin ici). Il fuit que vous avez peut-être envoyé un message (mais vous ne l'avez peut-être pas). Mais cela n'aide en aucun cas à casser la cryptographie elle-même. Ma déclaration porte très clairement sur le fait d'être "impossible à casser", et non "impossible de faire une observation sur votre action". Il n'y a pas de fuite d'informations utiles pour briser la protection cryptographique du message.
Oh, oui, voilà ... c'est ce à quoi j'essayais d'en venir. Ne pas avoir une sécurité des informations parfaite signifie que même la protection d'une crypto parfaite ne protégera pas parfaitement vos informations, donc même sans casser la crypto, certaines informations peuvent être glanées. Pour une raison quelconque, j'ai déduit une implication dans votre article qui n'était pas là à propos d'un OTP correctement implémenté, ce qui équivalait à une sécurité de l'information parfaite.
Cette fuite selon laquelle vous avez peut-être envoyé un message est en partie la raison pour laquelle certaines personnes préconisent d'utiliser la crypto tout le temps. Si vous ne l'utilisez que pour des choses que vous voulez vraiment cacher, Eve peut supposer en toute sécurité qu'elle vient de trouver quelque chose de plus intéressant que votre recette de biscuits.
@chao, il convient de souligner que l'utilisation de la crypto tout le temps ne cache pas que vous avez envoyé un message, cela masque simplement si c'est intéressant. De plus, otp n'est pas limité à Internet, il peut donc être utilisé via des canaux cachés qui sont plus difficiles à suivre.
Xander
2015-02-12 01:56:00 UTC
view on stackexchange narkive permalink

Non. Non seulement un pad ponctuel souffre de problèmes de distribution de clés sécurisée que Mike et gowenfawr ont mentionnés dans leurs réponses, mais:

Même si si vous disposiez d'un mécanisme pour distribuer les clés en toute sécurité, le un tampon horaire (à lui seul) n'a aucun mécanisme pour assurer l'intégrité. Le texte chiffré est ce que nous appelons «malléable», ce qui signifie qu'il peut être manipulé par un attaquant pour modifier le message en clair de manière prévisible et indétectable.

Donc , même si le bloc-notes unique offre une parfaite confidentialité théorique de l'information, il n'est pas, en soi, un chiffrement sécurisé, et dans le monde réel, facile à utiliser authentifié les chiffrements avec des clés de taille raisonnable comme AES-CTR-HMAC ou AES-GCM sont nettement meilleurs.

Certes, OTP est censé fournir un secret garanti, pas une intégrité garantie. Je ne pense pas que l'attaquant puisse modifier le texte en clair de manière prévisible à moins que l'attaquant ne connaisse (la partie correspondante du) le message en clair.
@Ajedi32 Oui, et dans le monde réel dans lequel nous vivons et dans lequel nos chiffrements doivent fonctionner, les attaquants le font fréquemment.
Si vous cryptez et envoyez un hachage du message avec le message, la malléabilité devient très difficile (même si je ne sais pas * comment * difficile).
Cette réponse omet de mentionner qu'il existe des schémas d'intégrité théoriquement sécurisés de l'information, par ex. Wegman-Carter, et au moins en principe, vous pourriez le regrouper avec l'OTP dans une sorte de cryptosystème théorique de l'information - il est bon de mentionner que l'intégrité / l'authentification est essentielle, mais en prenant rapidement un raccourci vers "des chiffrements authentifiés faciles à utiliser" cela ressemble beaucoup à éviter la question dans le contexte de "pourquoi le chiffrement ponctuel [lire: sécurité théorique de l'information] n'est-il pas le meilleur"; OP pose vraiment des questions sur les cryptosystèmes sécurisés inconditionnellement, pas spécifiquement sur OTP.
@immibis Si vous envoyez un * hash *, la différence est sans importance. Si vous envoyez un * MAC *, cela devient difficile, mais à moins que vous n'utilisiez un algorithme MAC qui fournit également des informations théoriques secrètes parfaites, vous avez affaibli votre schéma et les avantages du tampon unique ne s'appliquent plus. Et vous avez encore des problèmes de distribution de clés à résoudre.
@Xander vous n'avez sûrement besoin que d'un hachage? Le fait que quelqu'un ait correctement chiffré le hachage avec l'OTP semblerait impliquer que soit l'algorithme de hachage est vulnérable, soit qu'il a l'OTP.
@immibis Non, qui est encore complètement vulnérable aux attaques connues de texte brut, donc pas sémantiquement sécurisé.
@Thomas Oui, il existe des schémas d'intégrité sécurisée théoriques de l'information, mais cela ne change rien au fait qu'un système de cryptage basé sur le tampon unique n'est en fait pas le meilleur. Je ne suis pas d'accord pour dire que ce n'est pas la question, car j'ai vu la même question sous diverses formes des centaines de fois, mais je suis prêt à être convaincu que je me trompe.
@Xander comment est-il vulnérable aux attaques en clair?
@Xander Mon point était que l'OP ne parle que du pad unique parce que c'est ce qu'il sait, et il n'est pas conscient que l'authentification est importante ou que des MAC sécurisés inconditionnellement existent (ou les deux). S'il l'était, il ne l'aurait pas exclu de sa question, car le cryptage sans authentification est inutile comme vous l'avez expliqué dans votre réponse, donc ajouter une note que le problème d'authentification n'est pas un problème fondamental avec des schémas à sécurité inconditionnelle semble en ordre, car s'opposent au simple rejet de l'option (indépendamment de la viabilité de ces systèmes dans la pratique)
@immibis Cela devrait être évident.
@Thomas Je conviendrai que votre argument est exact, mais le point de ma réponse allait dans le sens de la critique de gowenfar du mécanisme de transport, et c'est ceci: si vous essayez de créer un système de cryptage basé sur le tampon unique , vous manquez des choses importantes.
@Xander Assez bien
@Xander ce n'est en fait pas évident. De toute évidence, si l'attaquant peut connaître le texte en clair complet, alors le cryptage est déjà rompu (comment ont-ils obtenu le texte en clair?) Et toutes les attaques qui en résultent sont sans objet. S'ils ont une partie du texte brut, un hachage crypté OTP ne leur donne évidemment pas plus d'informations sur le reste du texte brut. S'ils ont le texte brut pour un message, cela ne semble pas les aider à déchiffrer un autre message (qui a un OTP différent).
@immibis Le but d'un système de cryptage est de se protéger contre tous les attaquants efficaces, pas seulement contre un type d'attaquant. Même si un attaquant sous KPA connaît le PT, le système devrait toujours être en mesure de se protéger contre lui. Avec un hachage nu, OTP ne le peut pas, car l'attaquant peut non seulement modifier le CT d'une manière qui modifiera de manière prévisible le PT, mais peut également recalculer le hachage. Au moment où le message atteint le destinataire, il a non seulement été modifié par l'attaquant, mais le hachage d'origine a été remplacé par un hachage de l'attaquant du PT (ou CT) post-modification et est désespérément cassé.
@Xander pourquoi enverriez-vous le hachage non chiffré ??? Vous compressez le message d'origine, le hachez puis cryptez l'original compressé + le hachage avec OTP. Je veux voir l'attaque qui change le champ de bits aléatoire de manière à ce que la décompression et le contrôle de hachage ultérieurs fonctionnent ...
Et l'authentification ne posera aucun problème si vous avez résolu par magie l'échange de clés sécurisé. Si je partage mon OTP en personne avec une seule personne, et que je déchiffre un message avec ce OTP et que le décryptage produit un message valide, c'est tout aussi sécurisé que n'importe quel certificat (ce qui est indirectement juste une preuve que quelqu'un détient une clé privée - avec OTP la clé privée est l'OTP, donc cryptage et authentification en un)
Je pense que ce que Xander essaie de dire, que si vous connaissez à la fois le texte en clair et le texte crypté, vous pouvez calculer l'OTP à partir d'eux et faire facilement une attaque MITM. L'autre extrémité n'aura aucun moyen de savoir que le message a été falsifié, car il déchiffrera parfaitement avec le code OTP.
@Falco J'ai expliqué à un niveau élevé quelques commentaires plus tôt. Si ce n'est toujours pas clair pour vous et que vous avez besoin de plus de détails, vous devriez poser une nouvelle question.
@SztupY Mais comment peut-il connaître le texte en clair, si une partie de celui-ci est complètement aléatoire lors de la création du message? Personne ne peut connaître cette partie. Puisque le hachage en est dérivé, vous ne pouvez pas non plus connaître le hachage. Ainsi, le récepteur peut facilement identifier la falsification en vérifiant le hash-code, que l'attaquant ne peut pas reproduire sans connaître la partie aléatoire du message! - Si l'attaquant s'infiltrait effectivement dans l'ordinateur de l'expéditeur et lisait le message complet, y compris les caractères aléatoires avant de l'envoyer, il pourrait en effet le falsifier, mais il pourra probablement aussi lire une clé privée.
@Falco Vous n'avez pas à comprendre comment il connaît le texte en clair. Il est stipulé que pour cette attaque, il connaît le texte en clair. Cela fait partie de la conception d'un système cryptographique standard, et un système solide doit être capable de faire face à cette attaque.
@Xander vous ignorez le fait qu'un hachage sécurisé crypté avec une clé secrète (OTP) est exactement le même qu'un MAC ... Dire qu'un MAC est plus sécurisé qu'un hachage sécurisé crypté individuellement est en quelque sorte hors de propos. De plus, un KPA n'inclut généralement pas la clé secrète et un nombre aléatoire d'octets ajoutés en tant que salt ne fait pas partie de KPA, de sorte que le hachage ne peut pas être prédit et donc pas falsifié
KPA est généralement un scénario dans lequel l'attaquant peut faire une estimation éclairée de ce que vous voulez envoyer, mais le texte en clair n'inclut que le texte en clair réel, pas le SALT et pas le HASH et pas la clé privée ... et sans ces 3 aucune attaque est futile et OTP est sécurisé
@Falco Le chiffrement d'un simple hachage avec un OTP n'est pas sécurisé contre un attaquant non limité sur le plan informatique car il peut rechercher des collisions hors ligne. Les MAC de style WC, quant à eux, sont basés sur le hachage universel, où vous utilisez une clé pour sélectionner un hachage dans une famille de hachages, empêchant la recherche de collision, puis chiffrant sa sortie pour empêcher l'attaquant d'apprendre quoi que ce soit sur la première clé.
Si le hachage est chiffré avec un OTP, même si vous pouviez trouver une collision en quelques secondes, comment sauriez-vous que vous en avez trouvé un, si le hachage lui-même est chiffré par OTP? tant que vous ne pouvez pas décrypter le hachage, vous ne pouvez pas rechercher de collisions. Et vous ne pouvez pas créer le même hachage, sans connaître le SALT. Vous ne pouvez même pas rechercher de motifs, car chaque bit est encodé aléatoirement ...
Imaginez le scénario suivant: Ma fonction de hachage est un simple bit de parité, et j'ajoute un bit aléatoire au texte brut avant de calculer le bit de parité. - même si vous connaissez le texte en clair et obtenez mon message chiffré, il n'y a aucun moyen que vous ayez une chance supérieure à 50% de deviner correctement le bit de parité car les deux bits (aléatoire et parité) sont chacun xor-ed avec un bit aléatoire de l'OTP ... Et c'est même avec une fonction de hachage d'inversion complètement transparente ...
@Xander Je comprends comment l'attaque que vous avez détaillée fonctionnerait (et j'ai été tenté de l'expliquer dans un commentaire), mais les commentaires suggèrent que ce n'est pas évident pour tout le monde. Peut-être serait-il bon de donner un exemple de travail d'Alice-Bob-Mallory?
@Falco Dans cette situation, je calcule un deuxième message avec la même parité (et la même longueur) que l'original, remplace l'original par lui, et ne change pas le hachage ou le bit aléatoire. Alternativement, je calcule un deuxième message avec une parité opposée et je retourne le bit aléatoire. J'ai le texte chiffré; Je peux soit garder le bit aléatoire le même, soit le retourner sans avoir la moindre idée de ce que c'est, en gardant ou en retournant le bit de texte chiffré correspondant.
@cpast exactement! Parce que la fonction de parité p (a || b) est la même que p (a) + p (b), vous pouvez donc facilement remplacer a par un texte en collision. Mais cela n'est pas vrai pour toutes les fonctions de hachage! Et même dans ce cas, la seule chose que vous gagnez est une seule collision, qui ne produira probablement pas de texte utilisable
@Falco Une seule collision est tout ce dont vous avez besoin pour avoir violé les propriétés de sécurité exigées de l'authentification de message (c'est-à-dire une imprégnabilité existentielle sous une attaque en clair choisi). Peu importe si c'est «utilisable»; * toute * falsification avec une probabilité supérieure à 2 ^ - (taglength) signifie que vous avez une pause. Toutes les fonctions de hachage ont des collisions; il existe une construction très spécifique qui peut être utilisée pour fournir une sécurité parfaite, mais aucun algorithme de hachage commun n'est admissible.
Si "le texte en clair" comprend des hachages et des sels cryptographiquement sécurisés, alors il est clair que le message peut être falsifié par un adversaire qui * d'une manière ou d'une autre * connaît le texte en clair. Je ne vois pas en quoi c'est une préoccupation plausible ou pratique.
Andrew Russell
2015-02-13 08:29:15 UTC
view on stackexchange narkive permalink

Vous essayez de comparer une primitive cryptographique et de la comparer au système cryptographique . Il s'agit en fait de comparer des pommes et des oranges.

Les primitives cryptographiques sont rassemblées pour créer un système cryptographique , et vous ne pouvez évaluer que la sécurité d'un système une fois que vous comprenez les cas d'utilisation et l'environnement dans lesquels le système fonctionne, y compris les attaquants, les utilisateurs, les protocoles sur le fil, les mécanismes de stockage, les voies de compromis, les exigences de disponibilité, le nombre d'utilisateurs, de nœuds, de réseaux entre, les services dépendants, etc.

Donc à votre question:

Donc, en dehors du contexte de la primitive One Time Pad, le système devrait probablement introduire d'autres techniques / primitives pour prendre en charge les exigences suivantes.

  • Intégrité du message (sommes de contrôle, signature)
  • Assurer la synchronisation pour éviter le DOS. (Un attaquant pourrait introduire un faux message pour désynchroniser la communication entre les parties.)
  • Empêcher l'homme au milieu de changer un seul bit en transit (pourrait changer la signification d'un texte en clair partiellement connu en retournant un bit. c'est-à-dire "LaunchMissiles = 0" contre "LaunchMissiles = 1"
  • Arrêter les attaques de relecture ("Attack at Dawn" rejoué trois jours plus tard)

Et autre facultatif Exigences

  • Vérification de l'expéditeur (signature)
  • Vérification du destinataire (certificats)

Vous ne pouvez donc tenter d'évaluer que la sécurité d'un Crypto-System une fois qu'il est raisonnablement articulé.

Est-ce que "arrêter les attaques de relecture" ne découlerait pas naturellement de "ne jamais réutiliser le matériel clé" qui est une exigence absolue pour que l'OTP soit sécurisé en premier lieu? Tout message qui utilise des éléments clés qui se chevauchent doit être jeté comme faux sans même être examiné plus loin que cela.
Les attaques de relecture peuvent réutiliser des messages précédemment valides, comme le message «Attack at Dawn» que le méchant maléfique renvoie au destinataire trois jours plus tard. Le message contient des métadonnées pour garantir que la partie correcte du protocole OTP est utilisée pour le décryptage.
Exactement. Les métadonnées du message incluent une sorte de pointeur vers le matériel clé (un emplacement de départ dans le bloc-notes, si vous voulez) et la longueur du message. Si cette combinaison indique un chevauchement avec des éléments clés dont le destinataire sait qu'ils ont été utilisés précédemment, le message doit être ignoré; c'est soit une relecture, soit * quelqu'un * ne sait pas comment utiliser un OTP en toute sécurité.
Salut @MichaelKjörling, toutes les techniques que vous mentionnez sont * en dehors * du champ d'application de la primitive * One Time Pad *. Notez que vous introduisez une autre vulnérabilité ci-dessus lorsque vous considérez qu'un attaquant mène une attaque par déni de service sur la communication en forçant le tampon unique à être marqué comme "utilisé".
Mike Scott
2015-02-12 01:42:32 UTC
view on stackexchange narkive permalink

Le problème avec un pad unique est de le distribuer aux deux parties. Vous ne pouvez pas simplement le mettre sur un serveur pour qu'ils le téléchargent tous les deux, car si vous disposiez d'un canal sécurisé pour le faire, les deux parties pourraient simplement utiliser ce canal sécurisé pour communiquer de toute façon. Il faut quasiment réunir les deux parties physiquement, ce qui est évidemment très contraignant.

La distribution des clés est un problème dans certains cas, mais pas dans tous; il n'est pas rare que deux parties disposent d'un canal de communication sécurisé avant d'acquérir certaines informations qu'elles voudront transmettre, mais que le canal soit indisponible au moment où elles ont l'information à transmettre. OTP pourrait être utile dans de tels cas si d'autres chiffrements n'étaient pas essentiellement aussi bons, et si le canal qui serait disponible serait sensible * seulement * aux attaques d'écoute passive. Je pense qu'un aspect beaucoup plus important d'OTP est celui mentionné par Xander.
@supercat OTP a, en fait, historiquement été utilisé exactement dans ce genre de situation - vous pouvez envoyer une nouvelle bande par courrier diplomatique sur des vols hebdomadaires à destination de Moscou, sans vous soucier de la distribution des clés lorsque vous êtes presque prêt à lancer des armes nucléaires. La falsification n'est vraiment pas pratique dans ce genre de situation (il faut connaître le contenu du message pour le falsifier efficacement), donc cela a assez bien fonctionné pendant la guerre froide.
@cpast: Dans certaines situations, les adversaires n'auraient aucune connaissance des messages. Dans d'autres, cependant, les adversaires peuvent être capables de deviner. Par exemple, j'ai lu que pendant la Seconde Guerre mondiale, il y avait une base désertique allemande dont les alliés étaient censés rester loin parce que ses rapports météorologiques prévisibles formaient une crèche utile. S'ils avaient utilisé OTP, quelqu'un qui pourrait intercepter la transmission aurait pu remplacer tout autre message souhaité à la place.
user10800
2015-02-13 05:34:39 UTC
view on stackexchange narkive permalink

Un problème persistant avec tout chiffrement est la confiance . Vous devez avoir confiance que la personne à qui vous envoyez un message est de votre côté et ne livrera pas le message ou la clé à quelqu'un qui ne devrait pas l'avoir. Vous devez être sûr que les personnes qui ont inventé le schéma de cryptage que vous utilisez n'ont pas inclus de porte dérobée ou de défaut accidentel. Avec OTP, vous avez le problème de la confiance avec le destinataire, mais si vous ne pouvez pas donner la clé au destinataire vous-même physiquement, vous devez maintenant faire confiance à une entité tierce qui peut livrer la clé à le destinataire. Ce problème existe encore aujourd'hui avec le cryptage moderne ainsi que l'authentification.

Si j'étais un utilisateur potentiel, je ne ferais jamais confiance à une tierce partie qui générerait une clé et la transmettrait via une connexion réseau. Il n'y a également aucun moyen pour un utilisateur de s'assurer que vous générez des clés vraiment aléatoires ou si vous avez été compromis. Ce n'est certainement pas une utilisation appropriée de l'OTP, car le cryptage n'est aussi fort que sa pire faiblesse. Si vous envoyez la clé sur Internet, vous avez perdu tout avantage que le véritable OTP peut offrir et vous pourriez aussi bien opter pour AES-256.

Je pense qu'il est prudent de dire que OTP est techniquement le meilleur cryptage de transport, le mot «meilleur» faisant référence à la sécurité. Cela ne veut pas dire que c'est "le meilleur" pour la plupart des cas d'utilisation, et OTP présente de sérieux inconvénients. La clé doit être stockée quelque part, ce qui signifie que la clé peut tomber entre de mauvaises mains. Les chiffrements par blocs modernes ont généralement des clés plus courtes qu'un être humain peut mémoriser, ce qui rend beaucoup plus difficile pour un tiers de les extraire. Il est également très difficile de mal implémenter quelque chose comme AES avec le bon logiciel.

Ce sur quoi vous pouvez compter plus que la sécurité d'OTP, c'est la paresse des êtres humains; nous sommes naturellement poussés à faire ce qui est le plus simple, et cela a toujours conduit les gens à prendre des décisions vraiment irréfléchies qui leur coûtent la sécurité de leur canal de communication. Parfois, les humains paresseux décident de réutiliser les clés une fois que leur clé ou leur livre de codes est épuisé et qu'ils n'ont pas les moyens de générer un nouveau transport &. Le résultat peut être bien pire que de cesser complètement de communiquer.

Définissez le mieux, et la réponse peut être oui ou non.

Falco
2015-02-12 16:27:58 UTC
view on stackexchange narkive permalink

Le principal problème est l'échange sécurisé des clés! Si vous pouvez d'une manière ou d'une autre vous connecter à un serveur toujours en ligne et communiquer avec ce serveur 100% sécurisé - pourquoi ne relayez-vous pas simplement votre message sur ce serveur?

Un scénario parfaitement valide est le suivant: Vous vous rencontrez quelqu'un en personne et échanger des OTP avec lui. Après cela, vous pouvez communiquer en toute sécurité avec lui tant que les OTP durent. Pour assurer l'intégrité des messages, vous allez ajouter N octets aléatoires à votre texte en clair, puis tout hacher avant de chiffrer avec l'OTP (je compresserais généralement également le texte en clair avant le chiffrement pour assurer une taille plus petite et une densité d'informations plus élevée). Cela garantira l'authentification et le cryptage à la fois. Parce que l'authentification consiste essentiellement à vérifier que l'autre partie connaît un secret, que lui seul peut connaître. Mais avec des clés secrètes symétriques, la clé est déjà un secret que seuls vous deux connaissent, donc si un message réussit à déchiffrer avec la clé secrète partagée et est toujours intact (décompresser + vérifier le hachage), l'intégrité et l'authentification ont été vérifiées.

Mais si vous voulez utiliser OTP contre les approches de force brute, vous pouvez tout aussi bien utiliser un cryptage symétrique assez grand (comme AES) qui est également assez impossible à casser. La partie intéressante de la cryptographie est l'échange de clés. Comment puis-je faire tout ce cryptage / authentification sans rencontrer toutes les personnes avec lesquelles je souhaite communiquer en toute sécurité? C'est pourquoi le chiffrement asymétrique existe.

Donc, OTP résout assez bien un problème qui est déjà assez bien résolu (chiffrement symétrique) mais ne résout pas du tout les vrais problèmes, qui en sont la raison cryptage asymétrique!

Je doute que "compression + hachage" soit vraiment un moyen de fournir une intégrité comparable à la sécurité de l'OTP. Je ne sais pas quelle est l'utilisation de l'étape de compression, et le hachage seul ne fournit pas de protection contre une attaque MiTM en clair. Vous devriez au moins utiliser un MAC (avec une entrée de clé supplémentaire), et je pense qu'il existe des algorithmes MAC qui ont un niveau de protection théorique similaire à celui d'OTP ... Je devrais cependant rechercher cela.
La compression vous fera économiser des octets de votre OTP et augmentera la densité d'informations, ce qui rendra les attaques en texte clair deviné plus difficiles. De plus, un hachage crypté parfait est un très bon moyen de se protéger contre la plupart des attaques. Mais par rapport au texte brut connu, vous auriez besoin d'un composant aléatoire supplémentaire. Ajoutez simplement N octets aléatoires au texte brut avant le hachage où N est la longueur de hachage. Cela rendra même les attaques connues en texte brut irréalisables
@PaŭloEbermann Pouvez-vous m'expliquer la différence entre un MAC (un algorithme de hachage sécurisé crypté avec une clé individuelle) et un hachage crypté OTP (un algorithme de hachage sécurisé avec sa propre partie de l'OTP = clé individuelle)?
@Falco Si l'attaquant connaît le texte en clair, il connaît le hachage du texte en clair et peut remplacer le texte en clair et le hachage par leur propre texte en clair et hachage. Un MAC n'est pas "un hachage chiffré avec une clé individuelle"; tous les MAC n'utilisent même pas les hachages, et HMAC (ce qui le fait) est H (k || H (k || M)), pas E_k (H (M)), et chiffrer un hachage avec un système de chiffrement malléable * ne peut pas * produire un MAC. Les MAC doivent être existentiellement infalsifiables sous les attaques de texte clair connues - si un attaquant peut vous amener sur MAC autant qu'il le souhaite, il ne peut pas simuler * toute * paire message-MAC que vous n'avez pas MAC pour lui.
@cpast ok - Je veux voir ça Vous connaissez le texte brut et devinerez comme par magie mon SALT dont vous avez besoin pour créer le code de hachage ??? N'oubliez pas que vous n'avez pas le hash original, vous n'avez pas le SALT original et comme SALT est aussi gros que le hash, vous êtes tout aussi bon que de deviner complètement le hash ... Et simplement en utilisant la fonction de hachage deux fois ne change pas le fait que vous avez une fonction avec deux entrées: clé secrète et texte en clair. Si l'attaquant connaît les deux, il peut se reproduire, sinon alors non. Identique à Hash crypté avec SALT inconnu
@Falco D'où vient un hasch salé? Les sels sont utilisés dans les hachages de mots de passe, pas ailleurs, et ne sont pas secrets. Si vous voulez dire "j'ai un élément secret que j'ajoute au message avant de le hacher", alors vous ne faites pas "hacher et chiffrer le hachage". Incidemment, le but de HMAC est de contourner certains problèmes avec les hachages Merkle-Damgard qui rendent H (k || en clair) totalement inadapté à un MAC; c'est pourquoi il hache deux fois (avec SHA-3, vous pouvez faire H (k || texte en clair), mais ce n'est pas "faire un hachage et le chiffrer", c'est "avoir une clé secrète et l'utiliser dans le hachage lui-même" - encore une fois, les hachages n'ont pas de sels de manière générique)
@cpast J'ai donc écrit dans ma réponse "ajouter N octets aléatoires avant le hachage", cela s'appelle généralement sel. J'ajoute quelque chose en plus au texte en clair pour que le hachage ne soit pas facilement prévisible et pas le même pour un message avec le même texte en clair. Depuis que je crypte le hachage par la suite avec l'OTP, j'ai effectivement E (M || k || H (M || k)) donc le hachage est crypté, ce qui avec un OTP imprévisible offre une sécurité parfaite, supérieure aux algorithmes MAC courants.
@Falco Utiliser une fonction de hachage sécurisée de cette manière n'est pas suffisant pour un MAC parfaitement sécurisé. Par exemple, la très commune famille de hachages Merkle-Damgard ne peut pas fournir une sécurité parfaite avec votre construction: si je trouve une collision dans le hachage où les messages M et N ont la même longueur (ce que je peux faire, car j'ai puissance de calcul infinie dans une analyse de sécurité parfaite), et que M soit crypté et MAC par vous, je peux échanger N pour M et obtenir un nouveau message valide. Il existe des MAC parfaitement sécurisés. Votre algorithme n'en fait pas partie, avec ce que vous avez dit jusqu'à présent.
Laissez-nous [continuer cette discussion dans le chat] (http://chat.stackexchange.com/rooms/21091/discussion-between-falco-and-cpast).


Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 3.0 sous laquelle il est distribué.
Loading...