Les algorithmes de chiffrement tels que Blowfish, AES, RC4, DES et Seal sont implémentés dans lune des deux catégories de chiffrements. Quels sont les avantages / inconvénients du type de chiffrement?
Réponse
Bien que les deux soient des chiffrements symétriques, les chiffrements de flux sont basés sur générer un flux de clés cryptographique « infini », et lutiliser pour crypter un bit ou un octet à la fois (similaire au pad ponctuel), alors que les chiffrements par blocs fonctionnent sur de plus gros morceaux de données (cest-à-dire des blocs) à la fois, combinant souvent des blocs pour une sécurité supplémentaire (par exemple AES en mode CBC).
- Les chiffrements de flux sont généralement plus rapides que les blocs, mais cela a son propre prix.
- Les chiffrements par blocs nécessitent généralement plus de mémoire, car ils fonctionnent sur de plus gros blocs de données et ont souvent un «report» des blocs précédents, alors que comme les chiffrements de flux ne fonctionnent que sur quelques bits à la fois, ils ont des besoins de mémoire relativement faibles (et donc moins chers à implémenter dans des scénarios limités tels que les périphériques embarqués, le micrologiciel et en particulier le matériel) .
- Les chiffrements de flux sont plus difficiles à implémenter correctement et sujets à des faiblesses en fonction de l’utilisation – puisque les principes sont similaires à ceux du pavé ponctuel, le flux de clés a des exigences très strictes. En revanche, » Cest généralement la partie délicate et peut être déchargée par exemple un boîtier externe.
- Étant donné que les chiffrements par blocs chiffrent un bloc entier à la fois (et ont en outre des modes de « rétroaction » qui sont les plus recommandés), ils sont plus sensibles au bruit lors de la transmission, cest-à-dire si vous gâchez une partie du données, tout le reste est probablement irrécupérable. Alors quavec les chiffrements de flux, les octets sont chiffrés individuellement sans connexion à dautres morceaux de données (dans la plupart des chiffrements / modes), et prennent souvent en charge les interruptions sur la ligne.
- De plus, les chiffrements de flux ne fournissent pas de protection dintégrité ou dauthentification, alors que certains chiffrements par blocs (selon le mode) peuvent fournir une protection dintégrité, en plus de la confidentialité.
- En raison de tout ce qui précède , les chiffrements de flux sont généralement les meilleurs pour les cas où la quantité de données est soit inconnue, soit continue – comme les flux réseau. Bloquer les chiffrements, en revanche, ou plus utiles lorsque la quantité de données est pré-connue – comme un fichier, des champs de données ou des protocoles de demande / réponse, tels que HTTP où la longueur du message total est déjà connue à la début.
Commentaires
- La deuxième puce nest pas exacte. La différence de mémoire due au » report de » des blocs précédents est négligeable et bien inférieure à la différence de mémoire dun algorithme à lautre ( par exemple, comparez RC4, avec ses 256 octets détat interne, à AES, avec 0 octet détat interne dans certaines implémentations). La dernière puce fait de fausses distinctions et constitue un mauvais conseil.
- @ D.W. La deuxième puce était » en général « , car cest généralement le cas (mais jaccepte que ce ne soit pas strictement exact).
- @DW avez-vous une base pour votre commentaire sur la dernière puce? Où est la fausse distinction, et pourquoi dites-vous que cest un mauvais conseil?
- Oui, jai une base pour mon commentaire sur la dernière puce. Cela semble simplement confus dans tous les domaines. Les chiffrements par blocs conviennent pour le streaming de données; voir, par exemple, le mode CBC, le mode CTR, etc., pour les différents modes de fonctionnement qui fonctionnent bien avec les données en continu. Les chiffrements par blocs ne sont pas limités aux cas où la quantité de données est connue à lavance. Je ‘ ne connais aucune raison de considérer les chiffrements de flux mieux que les chiffrements par blocs pour le streaming de données (malgré le nom).
- D.W. est correct: le mot ‘ Stream ‘ dans Stream Cipher indique quil existe un keystream – un flux de bits qui est combiné avec du texte en clair pour produire le texte chiffré. Il ne reflète pas la composition du texte en clair. Cest évidemment un détail qui confond souvent les développeurs et les ingénieurs avec lesquels ce dernier est généralement impliqué. Les chiffrements par blocs peuvent être utilisés pour manipuler très bien le texte brut en continu. Les chiffrements par blocs peuvent également être utilisés comme chiffrement de flux avec un mode de fonctionnement approprié et lorsque la taille de bloc est atomique (par exemple 1 octet).
Réponse
Un chiffrement par blocs est un algorithme polyvalent qui implémente une clé- permutation dépendante de valeurs qui sont des séquences dun nombre fixe de bits (appelées « blocs »). Il peut être utilisé pour divers rôles dans de nombreux types de protocoles cryptographiques. Lun de ces rôles est le chiffrement en masse de longs flux de données; pour réaliser une telle chose, le chiffrement par blocs doit être utilisé avec un mode de fonctionnement approprié (aussi appelé « mode de chaînage »), le traditionnel étant CBC, et le mode plus récent à la mode étant CTR.
Un flux chiffré est un algorithme spécialisé dans le but de chiffrer en masse de longs flux de données. Lidée est quen perdant la polyvalence du chiffrement par blocs, il serait possible de créer un algorithme plus efficace (cest-à-dire quelque chose qui crypte les données plus rapidement ).
Les deux chiffrements par blocs avec un mode de chiffrement orienté flux et des chiffrements de flux, peut rencontrer des problèmes de sécurité si la même clé est utilisée deux fois, pour deux flux distincts, sans avoir un vecteur dinitialisation approprié, unique / aléatoire. Pour le cryptage CBC, lIV doit être une nouvelle séquence uniformément aléatoire de bits, de la même taille quun bloc, pour chaque nouveau message. Les bons chiffrements de flux acceptent également un IV. Un chiffrement de flux traditionnel appelé RC4 est sans IV (sa spécification nindique pas où ni comment un IV pourrait être inséré), ce qui a conduit à beaucoup de chaos et a donné un mauvais nom au concept de chiffrement de flux.
Pour des chiffrements de flux plus récents, plus sécurisés (et plus rapides), consultez le portfolio eSTREAM . Ces algorithmes ont fait lobjet dune analyse assez approfondie par de nombreux cryptographes et sont considérés comme « assez sûrs ».
Un chiffrement de flux peut être converti en un générateur de nombres pseudo-aléatoires en chiffrant une longue séquence doctets de valeur zéro. En fait, de nombreux chiffrements de flux (mais pas tous) fonctionnent en interne en étant un PRNG, générant une longue séquence doctets pseudo-aléatoires dépendants de la clé, qui est ensuite combinée (par XOR au niveau du bit) avec les données à chiffrer (ou déchiffrer), donc chiffrer zéro octet équivaut alors à omettre complètement le XOR. Par conséquent, les chiffrements de flux sont souvent utilisés comme PRNG personnalisé.
Commentaires
- Vous avez oublié de mentionner lequel est généralement le plus sûr (flux vs bloc).
- Je nai pas oublié, car lassertion na pas de sens général. Les chiffrements par blocs et les chiffrements de flux peuvent fournir une sécurité adéquate, sils sont appliqués correctement et sils ne présentent ‘ pas des faiblesses structurelles.
- » la polyvalence du chiffrement par blocs » Jai des problèmes avec cette partie. Quest-ce qui rend un chiffrement par bloc plus polyvalent? Les chiffrements par blocs peuvent être utilisés pour crypter et authentifier les deux flux (par exemple TLS) ou des données en paquets (par exemple ESP) et les mêmes pour les chiffrements de flux (par exemple TLS ou DTLS). Il y a des cas où un chiffrement de flux semble plus » naturel » (par exemple le chiffrement de laudio) ou un chiffrement par bloc semble plus » natural » (par exemple, chiffrement des disques) mais je ne vois ‘ pas beaucoup de lacunes dans les applications raisonnables pour lun ou lautre.
Réponse
Un avantage des chiffrements de flux qui nont pas été mentionnés précédemment est quils ne « t besoin de remplissage (les chiffrements par blocs fonctionnent sur des blocs complets, donc si vous navez pas assez de données, vous devez en générer plus dune manière ou dune autre). Et surprise (pas vraiment, la cryptographie est le domaine où Murphy est partout), le remplissage peut être fait faux, comme illustré par exemple dans Attaques Oracle par remplissage pratique .
De plus, la sécurité des chiffrements par blocs dépend en grande partie de leur mode de fonctionnement, vous voir encore ECB utilisé ici et là parfois et ce nest pas beaucoup mieux que pas de crypto un
En gros, vous ne pouvez pas dire que lun est meilleur que lautre, il faut regarder un cryptosystème complet pour faire un jugement de sécurité.
Commentaires
- sur votre premier paragraphe: il existe des modes de fonctionnement pour les chiffrements par blocs qui nont ‘ pas besoin de remplissage, soit: par exemple, le mode CTR. Ce nest donc pas un avantage propre aux chiffrements de flux. Mais +1 à votre dernier paragraphe – bien dit!
- Eh bien, je ‘ d dire que CTR et OFB sont des constructions pour faire un chiffrement de flux à partir dun chiffrement par bloc. Cest ‘ une autre grande chose avec les chiffrements par blocs, ils peuvent facilement être utilisés comme blocs de construction pour dautres choses, que ce soit des chiffrements de flux ou des hachages à sens unique. Les chiffrements de flux ne sont pas si polyvalents.
- Vous avez oublié de mentionner lequel est généralement le plus sécurisé (flux vs bloc).
- Aucun nest plus sûr par nature, il ‘ est vraiment la façon dont vous les utilisez.
Answer
Stream Ciphers crypte les données en clair avec un flux aléatoire de bits (généralement avec un XOR car il peut être inversé facilement). Si vous avez des données de 128 bits, vous utiliserez une chaîne psedurandom de 128 bits (votre clé) pour crypter.
Block Ciphers crypte les données de texte brut un bloc à la fois avec la même transformation (basée sur la clé ).Donc, vous avez vos données 128 bits, le chiffrement les brise en blocs (comme 4 blocs de 32 bits) et applique la même transformation à chaque bloc obtenant 4 blocs chiffrés, qui combinés formeront le cryptogramme final.
De Bien sûr, à cause de cela, les Cyphers de Bloc sont plus sûrs mais coûteux à utiliser en termes de complexité matérielle impliquée. Les chiffrements de flux sont plus rapides et « bon marché », mais ils peuvent être sujets à problèmes de sécurité sils sont mal implémentés.
Commentaires
- Le dernier paragraphe contient un certain nombre derreurs factuelles. Les chiffrements par blocs ne sont pas plus sûrs en général, ni nécessairement pires sur le plan matériel. Les chiffrements de flux ne sont pas nécessairement plus rapides ou moins chers.
- @DW: nonobstant, les chiffrements de flux sont généralement plus rapides ou moins chers que les chiffrements par blocs, car ‘ est laffaire: un algorithme moins polyvalent échangé contre des performances améliorées. Un chiffrement de flux qui se trouve être plus lent et plus cher que AES / CTR nest tout simplement pas utilisé du tout.
- Vous avez oublié de mentionner lequel est généralement plus sécurisé (flux vs bloc).
Réponse
Les données (les éléments à chiffrer) viennent généralement sous forme de flux. Pour le chiffrer, nous devons utiliser un chiffrement de flux, cest-à-dire un algorithme de chiffrement adapté à une utilisation sur un flux de données. Un flux est une séquence de bits (ou octets) de longueur arbitraire, variable ou non spécifiée.
Les meilleurs chiffrements que nous ayons inventés jusquà présent sont généralement des chiffrements par blocs. Un chiffrement par bloc est capable de chiffrer un seul bloc de données de taille fixe; et, daprès les preuves qui nous entourent, il est apparemment plus facile de construire de bons chiffrements par blocs que des chiffrements de flux.
Bonne nouvelle, cependant. En utilisant un chiffrement par bloc donné dans certains modèles particuliers (un «mode de fonctionnement»), et à laide de stratégies de remplissage particulières, nous pouvons transformer nimporte quel chiffrement par bloc en un chiffrement de flux! Cela signifie que nous pouvons utiliser les meilleurs chiffrements, qui sont des chiffrements par blocs, pour chiffrer toutes les données, dont la majorité provient de flux.
Commentaires
- la deuxième phrase semble trompeuse. Vous pouvez crypter les données en continu en utilisant un chiffrement par bloc, en utilisant lun des nombreux modes de fonctionnement standard: par exemple, le mode CBC, le mode CTR, etc. AES-CBC est toujours un chiffrement par bloc. En fait, presque tous les modes de fonctionnement standard des chiffrements par blocs prennent déjà en charge le streaming de données. De plus, un chiffrement par bloc nest pas sécurisé sans mode de fonctionnement, donc il ‘ nest pas comme un mode de fonctionnement est une chose facultative dont vous navez besoin que lorsque vous souhaitez crypter des données en continu .