Un site de partage de fichiers zéro-shirt populaire utilise une clé maître 128 bits pour le cryptage.
Cependant, ils prétendent utiliser AES256. Lorsqu'il est interrogé, ils ont expliqué que la clé principale est élargie à l'aide de PBKDF2 et de sel aléatoire à 256 bits.
Cela peut-il encore être appelé techniquement AES256? Cette méthode d'élargissement de 128 bits est-elle à 256 une pratique acceptable?
EDIT: Je n'ai aucune information plus détaillée sur leur processus.
AES-256 est un algorithme spécifique, et c'est le même algorithme que vous utilisiez à chaque fois que vous utilisez la touche 3E9E98E31BA18D8D18283ACEB3C6E18283ACEB3C6E17016B729E1363AFC5B03E9 à chaque fois, ou dérivez une clé avec PBKDF2 à partir d'un mot de passe, ou choisissez la clé en retournant une pièce de monnaie 256 fois.
Donc, ce n'est pas une contradiction. Mais cela ne signifie pas que leur système n'est pas plein de drapeaux rouges!
Il est important de comprendre les différences entre AES128 et AES256. C'est plus que des AES prenant une clé de deux fois la taille. L'algorithme lui-même est différent, mais seulement légèrement. AES consiste fondamentalement en un certain nombre de tours. Chaque tour peut être considéré comme un mini-chiffre. Après que le texte clair traverse suffisamment de tours, il devient effectivement impossible d'inverser le calcul. Pour AES, chaque tour prend sa propre clé de 128 bits. AES128 utilise 10 tours, mais AES256 utilise 14 rounds. C'est le travail de la Clé planche pour convertir une seule clé en un certain nombre de touches distinctes rondes. Ces deux versions d'AES utilisent un horaire de clé différent pour tenir compte des différentes clés de la taille. En plus de cela, AES256 doit générer 4 autres clés rondes que AES128 pour alimenter les tours supplémentaires avec des matériaux clés.
AES256 Compte tenu d'une touche 128 bits (si la touche est étendue à l'aide d'un KDF sécurisé, rembourré avec des zéros ou simplement répété deux fois) n'est pas identique à AES128 car l'horaire clé agit sur 256 bits de matériau, et parce qu'il a 14 tours. au lieu de 10. Donc oui, il peut toujours être appelé AES256, mais le clavier est 2128 au lieu de l'attendu 2256. Cela reste suffisant pour protéger de la force brute.
Une note intéressante est que, en théorie, AES256 avec une clé 128 bits sera légèrement plus sécurisée contre la cryptualyse que l'AES128 avec une clé 128 bits, simplement en raison des tours supplémentaires qu'il utilise. Ces rondes n'augmentent pas du tout l'espace clé, mais ils font certains types d'attaques mathématiques contre le chiffrement significativement plus difficile. Heureusement, 10 tours sont toujours en sécurité.
Oui, c'est une technique de mise en œuvre largement acceptée. PBKDF2 est un algorithme d'expansion clé (fonction de dérivation de clé) utilisée pour créer une clé plus résilient aux attaques traditionnelles de bruteforce. Cela fonctionne en calculant à plusieurs reprises une fonction Mac ou Hash contre la clé initiale fournie pour dériver A plus, clé plus résiliente. C'est aussi un Slow-by-design ALGORITHM, qui augmente les ressources de calcul nécessaires à un attaquant pour tenter de la force brute L'espace clé entier limitant ainsi l'impact des données cryptées.
Il faut une clé de moindre longueur et lentement l'étend à une plus grande clé. Ceci Augmente la durée Un attaquant aurait besoin de casser la clé. Cette clé est ensuite utilisée pour le cryptage AES. Donc, oui, ils utilisent AES-256 avec PBKDF2 pour une expansion clé qui va bien.
Une chose que je voudrais ajouter, est-ce du point de vue de l'attaquant, s'ils ne savent pas que PBKDF2 est en cours d'utilisation, la probabilité qu'ils récupèrent que les keydata deviennent beaucoup plus basses. Parce qu'ils ne pourront pas calculer PBKDF2 contre les tentatives de clé de la phrase secrète, ils devront cibler chacun des 256 bits spécifiquement. Ils ne peuvent pas simplement lancer une liste de mots à ce qu'ils pouvaient si elles savaient que PBKDF2 était utilisée.
Bien que je sois plus pris en compte sur leurs revendications de connaissances zéro et où la preuve à ce sujet est. Mais cela aide-t-il à répondre à votre question?
C'est AES-256 s'il suit la spécification AES-256 (nombre de tours, etc.).
Même si elles prennent une clé de 128 bits, passez-la via SHA-256 pour obtenir 256 bits et l'utiliser comme une clé AES-256, elle est toujours AES-256. Une telle chose ne fournirait pas la sécurité des AES-256, mais c'est AES-256.
S'ils génèrent un sel aléatoire et utilisent un KDF pour générer une clé de 256 bits, ils obtiennent autant de sécurité que 128 bits + la taille du sel dans les bits, comme l'a écrit Steffen Ullrich dans les commentaires.
C'est une pratique. WPA2 utilise ce type d'approche, par exemple. Qu'il augmente la sécurité ou non dans votre exemple est une question plus nuancée.
Commençons par AES-128 et une clé de 128 bits comme une ligne de base. Ce serait la solution évidente. Pour le moment, AES-128 est très difficile à casser. Mais peut-être que c'était inquiet, cela pourrait ne pas être vrai à l'avenir. AES-256 offre une certaine épreuve future (ou au moins elle semble offrir une nouvelle épreuve ... Devil est dans les détails).
Nous pouvons donc passer à AES-256 et utiliser une clé de 256 bits. Ce serait également une solution évidente. Cela vous donnerait tous les avantages que d'autres ont mentionné dans d'autres réponses. Mais que se passe-t-il s'il y avait une raison pour laquelle ils ne pouvaient pas utiliser une clé de 256 bits? Je ne peux pas spéculer pourquoi il serait impossible d'utiliser une clé de 256 bits. Mais laissez-nous, pour des arguments, supposons qu'il existe en effet une raison pour laquelle ils ne peuvent pas utiliser une clé de maîtrise de 256 bits. Ils doivent utiliser une clé maîtresse 128 bits. Il y a peut-être une question de compatibilité à l'envers, ou peut-être que le PDG est né le 8 décembre. Pour une raison quelconque, nous nous trouvons limité de cette manière.
Nous pourrions simplement concaténer la clé 128 bits avec un tas de zéros (ou une autre valeur connue) pour obtenir une clé de 256 bits. Cela nous procurerait de nombreux avantages de l'AES-256 (tels que les tours supplémentaires), mais nous n'aurions toujours que 128 bits d'entropie à la force brute. C'est actuellement "assez d'entropie" pour la plupart des utilisations, mais ce n'est pas 256.
Maintenant, AES est conçu pour être rapide. Très vite. Et économe en énergie aussi. Ce sont toutes de grandes choses pour un algorithme de crypto, mais ils sont également de grandes choses pour un attaquant. Si l'attaquant savait que l'expansion principale consistait à concaténer des zéros, ils sont beaucoup capables d'attaquer cela directement, et ils peuvent attaquer un algorithme conçu pour être rapide.
Entrez PBKDF2. Ceci est un algorithme conçu à partir du début à courir lent. Quelle est la lente? Distinctement lent. Vous choisissez à quel point vous le souhaitez en modifiant le nombre d'itérations d'un algorithme intérieur. WPA2, par exemple, choisit de l'introduire 4096 fois.
Si vous utilisez PBKDF2 Pour agrandir votre clé de 128 à 256 bits, utilisez AES-256, votre situation est meilleure que si vous venez de concaténer des zéros. Vous n'avez toujours que 128 bits d'entropie - cela n'a jamais changé. Mais maintenant, s'ils veulent craquer le problème où son seul problème de 128 bits, vous devez passer par PBKDF2, ce qui est beaucoup plus lent que AES. Vous ne savez pas ce que l'itération compte, ils ont choisi, nous ne pouvons donc pas calculer à quel point, mais en théorie, ils ont choisi un compte avec l'intention de la rendre très lente.
Pendant ce temps, les données sont codées avec une clé de 256 bits AES-256. Cette clé de 256 bits n'a pas de 256 bits d'entropie. Cela n'a que 128. Vous ne pouvez obtenir que ce que vous avez mis. Mais c'est une clé de 256 bits. Et, surtout, c'est difficile à déterminer qui 2128 Les touches sont des sorties possibles de PBKDF2 (avec des paramètres connus, y compris le sel). Donc, en théorie, si vous souhaitez attaquer le cryptage AES Fast-attaquant, vous devez le faire sur un espace clé de 256 bits. Si vous souhaitez attaquer le plus petit espace clé de 128 bits, vous devez le faire à travers le PBKDF2 plus lent.
Donc, en théorie, vous êtes plus sûr en utilisant cette approche que simplement à l'aide d'AES-128 ou en utilisant AES-256 avec un simple algorithme d'expansion clé. Cependant, le diable est dans les détails. Lorsque vous commencez à superposer des algorithmes, vous n'obtenez pas à ajouter mentalement la sécurité qu'ils fournissent. Vous doublez réellement votre surface d'attaque. S'il y a un problème avec AES ou s'il y a un problème avec PBKDF2, il peut casser votre système. Cependant, contre des attaques de force brute, cela sera très fort.
La mise en garde de clôture est un rappel des choix étranges de cette entreprise. Pourquoi ne pas avoir une clé de maîtrise de 256 bits? Si vous l'avez fait, tout cela devient très simple. Cela n'a été compliqué que parce qu'il y avait un désir d'avoir une clé de maîtrise de 128 bits. Dans certains cas, ce modèle a du sens. Dans le cas de WPA2, l'utilisation de PBKDF2 pour nourrir les AES comme ceci est logique car la clé est générée par un utilisateur moyen, qui sait peu de sécurité et aurait des difficultés à générer un mot de passe avec 256 bits d'entropie. Il n'est pas clair, avec les détails non fournis, pourquoi un mot de passe de 256 bits n'a pas pu être généré dans votre cas. Mais peut-être, avec plus de détails, on pourrait proposer un argument pour la raison pour laquelle leur modèle a du sens. Nous avons des preuves qu'il a senti logiciel dans au moins un domaine, WiFi.