2010-09-07 7 views
19

Pour construire un système sécurisé, pouvons-nous supposer que le cryptage garantit l'intégrité avant de commencer une programmation sécurisée?Le chiffrement garantit-il l'intégrité?

  • Tant dans le chiffrement symétrique et clé publique , est ma question bien récolement? Si non, quelles sont les vulnérabilités , pouvez-vous donner un exemple ?
+1

Qu'entendez-vous par intégrité? Intégrité des données? – NullUserException

+0

Bien sûr, l'intégrité des données – berkay

+1

+1 grande question. – rook

Répondre

21

Non. Ceci est facile à voir si vous considérez le one-time pad, un système simple (théoriquement) parfaitement sécurisé.

Si vous changez un bit de la sortie, un peu du texte en clair changera, et le destinataire n'a aucun moyen de le détecter.

Ceci est un cas évident, mais la même conclusion s'applique à la plupart des systèmes de chiffrement. Ils ne prévoient que la confidentialité, pas l'intégrité. Par exemple, vous pouvez ajouter un digital signature. Fait intéressant, lors de l'utilisation de la cryptographie à clé publique, il ne suffit pas de signer, puis crypter (SE), ou crypter, puis signer (ES). Les deux sont vulnérables aux attaques de rejeu. Vous devez soit signer-encrypt-sign ou encrypt-sign-encrypt pour avoir une solution généralement sécurisée. Ce paper explique pourquoi en détail.

Si vous utilisez SE, le destinataire peut déchiffrer le message, puis le rechiffrer à un autre destinataire. Cela trompe alors le nouveau destinataire sur le destinataire prévu de l'expéditeur.

Si vous utilisez ES, une oreille indiscrète peut supprimer la signature et ajouter la sienne. Ainsi, même s'ils ne peuvent pas lire le message, ils peuvent s'en attribuer le mérite, prétendant être l'expéditeur d'origine.

+0

Et si je crypte mon message avec ma clé privée et l'envoie? comment la propriété d'intégrité peut-elle être violée? – berkay

+1

Le cryptage avec votre clé privée est plus communément appelé signature. Cela assure l'intégrité, mais pas la confidentialité. Tout le monde connaît votre clé publique, donc ils peuvent "déchiffrer" (vérifier) ​​le message. –

+0

il sera préférable de crypter le message haché sera plus rapide et efficace donc c'est la signature, ok votre hypothèse n'est pas un trou de sécurité pour l'intégrité juste en cryptant avec ma clé privée. – berkay

2

Si l'intégrité des données vous concerne, vous devez utiliser un cryptographic hash function, combiné avec et un algorithme de chiffrement.

Mais c'est vraiment l'utilisation de l'outil qui convient le mieux. Certains algorithmes de chiffrement peuvent fournir un niveau de validation de somme de contrôle intégré, d'autres non.

+0

ou utilisez le mode cmac ... – rook

10

En bref, la réponse est non. L'intégrité et le secret des messages sont différents et nécessitent des outils différents.

Considérons une simple pièce de monnaie, et dans ce cas, nous parions sur les résultats. Le résultat est un simple bool et je le crypte en utilisant un chiffrement de flux comme RC4 qui donne 1 bit crypté et je vous l'envoie par email. Vous n'avez pas la clé, et je vous demande de me renvoyer la réponse par courriel.

Quelques attaques peuvent survenir dans ce scénario.

1) Un attaquant pourrait modifier le bit en transit, si c'était un 0 il y a 50% de chances qu'il devienne un 1 et le contraire est vrai. C'est parce que RC4 produit un flux prng qui est XOR'ed avec le texte en clair produire le texte de chiffrement, semblable à un tampon une fois.

2) Une autre possibilité est que je puisse vous fournir une clé différente pour vous assurer que votre réponse est fausse. C'est facile à la force brute, je juste juste essaye des clefs jusqu'à ce que j'obtienne le flip de bit approprié.Une solution consiste à utiliser un chiffrement par bloc de CMAC Mode. Un CMAC est un code d'authentification de message similaire à un hmac mais il utilise un code de bloc au lieu d'une fonction de résumé de message. La clé secrète (K) est la même que celle que vous utilisez pour chiffrer le message. Cela ajoute n + 1 blocs au texte chiffré. Dans mon scénario, cela empêche les deux attaques 1 et 2. Un attaquant ne peut retourner un simple bit car le texte brut est rembourré, même si le message ne prend que 1 bit. Je dois transmettre un minimum de 1 bloc en utilisant un chiffrement par bloc. Le bloc d'authentification supplémentaire m'empêche de chaîner la clé, et il fournit également l'intégrité de quiconque essaye de modifier le texte chiffré en transit (bien que cela soit très difficile à faire en pratique, la couche supplémentaire de sécurité est utile). WPA2 utilise AES-CMAC pour ces raisons.

+0

+1 Pour mentionner CMAC – NullUserException

+0

merci pour la réponse, j'attendais ça ... – berkay