je m'interroge sur l'intégrité d'un message chiffré par RSA.
Si je comprends bien, RSA va permettre de chiffrer non pas le message,
mais une clé AES qui est utilisée pour chiffrer le message.
Ce message chiffré ainsi que la clé AES chiffrée sont ensuite livrés
à son destinataire.
Maintenant que se passe t'il si l'intégrité du message n'est pas
garantie?
Je fait un raccourci en donnant l'hypothèse que le chiffré peut être coupé
en trois parties:
1/ Un en-tête spécifiant que le message est chiffré.
2/ La clé AES chiffrée par la clé publique du correspondant
3/ le message en lui-même chiffré par la clé AES.
Imaginons qu'un ou plusieurs bits soient modifiés
A) dans le message chiffré:
-Le début du document sera correct, la fin modifiée.
B) dans la clé AES chiffrée:
-Le document déchiffré sera une bouillie incompréhensible
C) dans l'entête
-Que se passe t'il?
En gros, l'intégrité du message n'est pas assurée du tout..
Mes questions:
J'ai aussi lu que l'on peut zipper le message avant de le chiffrer.
auquel cas le déchiffrement se fera, mais pas le dézippage, on aura
une erreur -> Ok, l'intégrité est vérifiée (par effet de bord, mais
bon)
La RFC3852 précise que le contenu peut être signé, chiffré
condensé ou authentifié. Il me semble donc possible d'ajouter un
condensat systématiquement afin de s'assurer de l'intégrité des
messages.
D'où mon autre question: lorsque je reçois un message chiffré, comment
savoir s'il est intègre? L'outil de déchiffrement me le signale? ou
bien il y a d'autres mécanismes?
je m'interroge sur l'intégrité d'un message chiffré par RSA.
Si je comprends bien, RSA va permettre de chiffrer non pas le message,
mais une clé AES qui est utilisée pour chiffrer le message.
Ce message chiffré ainsi que la clé AES chiffrée sont ensuite livrés
à son destinataire.
Maintenant que se passe t'il si l'intégrité du message n'est pas
garantie?
Je fait un raccourci en donnant l'hypothèse que le chiffré peut être coupé
en trois parties:
1/ Un en-tête spécifiant que le message est chiffré.
2/ La clé AES chiffrée par la clé publique du correspondant
3/ le message en lui-même chiffré par la clé AES.
Imaginons qu'un ou plusieurs bits soient modifiés
A) dans le message chiffré:
-Le début du document sera correct, la fin modifiée.
B) dans la clé AES chiffrée:
-Le document déchiffré sera une bouillie incompréhensible
C) dans l'entête
-Que se passe t'il?
En gros, l'intégrité du message n'est pas assurée du tout..
Mes questions:
J'ai aussi lu que l'on peut zipper le message avant de le chiffrer.
auquel cas le déchiffrement se fera, mais pas le dézippage, on aura
une erreur -> Ok, l'intégrité est vérifiée (par effet de bord, mais
bon)
La RFC3852 précise que le contenu peut être signé, chiffré
condensé ou authentifié. Il me semble donc possible d'ajouter un
condensat systématiquement afin de s'assurer de l'intégrité des
messages.
D'où mon autre question: lorsque je reçois un message chiffré, comment
savoir s'il est intègre? L'outil de déchiffrement me le signale? ou
bien il y a d'autres mécanismes?
je m'interroge sur l'intégrité d'un message chiffré par RSA.
Si je comprends bien, RSA va permettre de chiffrer non pas le message,
mais une clé AES qui est utilisée pour chiffrer le message.
Ce message chiffré ainsi que la clé AES chiffrée sont ensuite livrés
à son destinataire.
Maintenant que se passe t'il si l'intégrité du message n'est pas
garantie?
Je fait un raccourci en donnant l'hypothèse que le chiffré peut être coupé
en trois parties:
1/ Un en-tête spécifiant que le message est chiffré.
2/ La clé AES chiffrée par la clé publique du correspondant
3/ le message en lui-même chiffré par la clé AES.
Imaginons qu'un ou plusieurs bits soient modifiés
A) dans le message chiffré:
-Le début du document sera correct, la fin modifiée.
B) dans la clé AES chiffrée:
-Le document déchiffré sera une bouillie incompréhensible
C) dans l'entête
-Que se passe t'il?
En gros, l'intégrité du message n'est pas assurée du tout..
Mes questions:
J'ai aussi lu que l'on peut zipper le message avant de le chiffrer.
auquel cas le déchiffrement se fera, mais pas le dézippage, on aura
une erreur -> Ok, l'intégrité est vérifiée (par effet de bord, mais
bon)
La RFC3852 précise que le contenu peut être signé, chiffré
condensé ou authentifié. Il me semble donc possible d'ajouter un
condensat systématiquement afin de s'assurer de l'intégrité des
messages.
D'où mon autre question: lorsque je reçois un message chiffré, comment
savoir s'il est intègre? L'outil de déchiffrement me le signale? ou
bien il y a d'autres mécanismes?
je m'interroge sur l'intégrité d'un message chiffré par RSA.
Et vous avez raison.
En cryptographie, il faut distinguer intégrité et confidentialité.
Ce sont deux objectifs différents, qui sont remplis de façon différente.
C'est tout particulièrement vrai en cryptographie asymétrique, où le
chiffrement du message se fait au moyen de la clé publique du
destinataire, et ne peut donc donner aucune garantie de l'intégrité du
message (tout un chacun peut chiffrer par la même méthode un tout autre
message).
Maintenant que se passe t'il si l'intégrité du message n'est pas
garantie?
Le destinataire déchiffre un message dont le chiffrement décrit
ci-dessus ne lui donne aucune garantie sur son auteur.
Mes questions:
J'ai aussi lu que l'on peut zipper le message avant de le chiffrer.
auquel cas le déchiffrement se fera, mais pas le dézippage, on aura
une erreur -> Ok, l'intégrité est vérifiée (par effet de bord, mais
bon)
Non, l'intégrité n'est pas vérifiée.
Seule l'absence d'erreur
accidentelle de transmission est vérifiée.
Si le fichier n'est pas zippé, comment cela est il géré?
Pour assurer l'intégrité, il faut que l'émetteur signe le message avec
sa clé privée
Pour savoir que le message reçu est intègre, il faut que vous disposiez
de la clé publique (n,e) de l'émetteur, que vous ayez confiance en son
intégrité et en son association avec l'émetteur, et que l'émetteur ai
pris soit de signer le message avec sa clé privée, comme décrit
ci-dessus). La vérification de la signature consiste alors à extraire le
message et la signature supposée de ce qui est reçu, puis à vérifier que
(Signature^^e)%n et Expansion(Hash(Message)) sont identiques.
je m'interroge sur l'intégrité d'un message chiffré par RSA.
Et vous avez raison.
En cryptographie, il faut distinguer intégrité et confidentialité.
Ce sont deux objectifs différents, qui sont remplis de façon différente.
C'est tout particulièrement vrai en cryptographie asymétrique, où le
chiffrement du message se fait au moyen de la clé publique du
destinataire, et ne peut donc donner aucune garantie de l'intégrité du
message (tout un chacun peut chiffrer par la même méthode un tout autre
message).
Maintenant que se passe t'il si l'intégrité du message n'est pas
garantie?
Le destinataire déchiffre un message dont le chiffrement décrit
ci-dessus ne lui donne aucune garantie sur son auteur.
Mes questions:
J'ai aussi lu que l'on peut zipper le message avant de le chiffrer.
auquel cas le déchiffrement se fera, mais pas le dézippage, on aura
une erreur -> Ok, l'intégrité est vérifiée (par effet de bord, mais
bon)
Non, l'intégrité n'est pas vérifiée.
Seule l'absence d'erreur
accidentelle de transmission est vérifiée.
Si le fichier n'est pas zippé, comment cela est il géré?
Pour assurer l'intégrité, il faut que l'émetteur signe le message avec
sa clé privée
Pour savoir que le message reçu est intègre, il faut que vous disposiez
de la clé publique (n,e) de l'émetteur, que vous ayez confiance en son
intégrité et en son association avec l'émetteur, et que l'émetteur ai
pris soit de signer le message avec sa clé privée, comme décrit
ci-dessus). La vérification de la signature consiste alors à extraire le
message et la signature supposée de ce qui est reçu, puis à vérifier que
(Signature^^e)%n et Expansion(Hash(Message)) sont identiques.
je m'interroge sur l'intégrité d'un message chiffré par RSA.
Et vous avez raison.
En cryptographie, il faut distinguer intégrité et confidentialité.
Ce sont deux objectifs différents, qui sont remplis de façon différente.
C'est tout particulièrement vrai en cryptographie asymétrique, où le
chiffrement du message se fait au moyen de la clé publique du
destinataire, et ne peut donc donner aucune garantie de l'intégrité du
message (tout un chacun peut chiffrer par la même méthode un tout autre
message).
Maintenant que se passe t'il si l'intégrité du message n'est pas
garantie?
Le destinataire déchiffre un message dont le chiffrement décrit
ci-dessus ne lui donne aucune garantie sur son auteur.
Mes questions:
J'ai aussi lu que l'on peut zipper le message avant de le chiffrer.
auquel cas le déchiffrement se fera, mais pas le dézippage, on aura
une erreur -> Ok, l'intégrité est vérifiée (par effet de bord, mais
bon)
Non, l'intégrité n'est pas vérifiée.
Seule l'absence d'erreur
accidentelle de transmission est vérifiée.
Si le fichier n'est pas zippé, comment cela est il géré?
Pour assurer l'intégrité, il faut que l'émetteur signe le message avec
sa clé privée
Pour savoir que le message reçu est intègre, il faut que vous disposiez
de la clé publique (n,e) de l'émetteur, que vous ayez confiance en son
intégrité et en son association avec l'émetteur, et que l'émetteur ai
pris soit de signer le message avec sa clé privée, comme décrit
ci-dessus). La vérification de la signature consiste alors à extraire le
message et la signature supposée de ce qui est reçu, puis à vérifier que
(Signature^^e)%n et Expansion(Hash(Message)) sont identiques.
Mais je pose bien la question de l'intégrité du message chiffré, pas
de son authenticité.
(J'ai du mal à cerner les différences entre authentification et
signature, d'ailleurs).
Mais je pose bien la question de l'intégrité du message chiffré, pas
de son authenticité.
(J'ai du mal à cerner les différences entre authentification et
signature, d'ailleurs).
Mais je pose bien la question de l'intégrité du message chiffré, pas
de son authenticité.
(J'ai du mal à cerner les différences entre authentification et
signature, d'ailleurs).
Mais je pose bien la question de l'intégrité du message chiffré, pas
de son authenticité.
Intégrité et authenticité sont un peu la même chose...
Qu'est-ce qu'un message intègre ? C'est un message qui est tel qu'il
était quand il a été envoyé. Quand est-ce que le message "a été envoyé" ?
Eh bien cet "envoi initial" n'est pas défini en dehors du cadre de
l'authenticité.
Dans le cadre d'un chiffrement par paquets, relativement à une clé
publique RSA, avec une clé secrète spécifique au paquet, chiffrée en
RSA, et envoyée avec, dans ce cadre donc, il n'y a pas vraiment de
notion d'intégrité applicable.
Pour ces notions d'intégrité, RSA ne fait assurément pas le boulot (son
job s'arrête une fois la clé secrète échangée) et AES non plus (lui,
il chiffre, mais ne comporte pas de vrai contrôle de non-altération).
On utilise alors habituellement un MAC (Message Authentication Code).
Un MAC est une sorte de hachage à clé : on calcule une somme de contrôle
sur le message, calcul qui prend en compte une clé secrète. Un MAC
très couramment utilisé (d'ailleurs SSL s'en sert), c'est HMAC. HMAC
est une construction qui utilise une fonction de hachage classique
(genre SHA-256). HMAC est décrit dans la RFC 2104 :
http://tools.ietf.org/html/rfc2104
Conceptuellement, faire une archive Zip du message et chiffrer le tout,
c'est réutiliser le checksum intégré dans l'archive Zip (un CRC32)
comme un MAC, i.e. en espérant que le chiffrement AES injectera
suffisamment de clé secrète dedans. C'est bancal si l'AES et utilisé
en mode CBC, et fort faux en mode CTR. Donc mieux vaut ne pas nourrir
ces espérances.
Pour avoir une notion d'identité qui corresponde à la notion "physique"
d'identité (celle dont parle un certificat de naissance, par exemple),
il faut un peu plus de matériel. Par exemple, Alice a sa propre clé
publique, et calcule une signature électronique sur la clé secrète
qu'elle chiffre avec votre clé RSA. Mais là encore, il y a lieu de
s'inquiéter d'une foule de détails (par exemple, on ne veut pas que la
signature "montre" une partie de la clé signée).
(J'ai du mal à cerner les différences entre authentification et
signature, d'ailleurs).
C'est surtout entre "intégrité" et "authentification" que la différence
est difficile à voir. En fait tout ça dépend de la notion d'identité
qu'on utilise.
La signature électronique rajoute une autre propriété, qui est la
non-répudiation : la signature peut convaincre un tiers. Dans un échange
entre vous et Alice, vous pouvez acquérir la certitude que vous parlez
bien à Alice. Si vous pouvez _en outre_ convaincre Jérôme (avec un J
comme "juge") que c'est bien le cas, alors vous avez de la
non-répudiation. Et il y a des gradations : au niveau bas, vous avez une
preuve qu'Alice est passée par là, mais rien sur le contenu des
échanges. Au niveau haut, vous avez aussi une preuve que le message reçu
est bien celui d'Alice (une preuve retournable contre Alice, je veut
dire).
Par exemple, dans un échange HTTPS, le client a la garantie (via le
certificat du serveur et la mécanique SSL) qu'il parle bien au bon
serveur, mais face à un juge, même s'il enregistre toute la
conversation, il ne pourra prouver qu'une seule chose, à savoir qu'il a
bien causé au serveur désigné ; il n'aura pas de preuve sur le contenu
des échanges. Cela est également vrai dans l'autre sens, dans le cas où
le client s'authentifie lui aussi avec un certificat (cas très rare sur
le Web, mais techniquement possible)
: le serveur est convaincu qu'il
parle au client attendu, mais en termes de preuves montrables à un juge,
il a seulement une preuve du passage du client, mais rien sur ce que le
client a envoyé.
Notons qu'il existe beaucoup de documentations diverses qui emploient
sans vergogne le terme de "signature" pour désigner quelque chose qui
n'en est pas (souvent, un simple hachage), ce qui augmente
considérablement la confusion sur le sujet.
Mais je pose bien la question de l'intégrité du message chiffré, pas
de son authenticité.
Intégrité et authenticité sont un peu la même chose...
Qu'est-ce qu'un message intègre ? C'est un message qui est tel qu'il
était quand il a été envoyé. Quand est-ce que le message "a été envoyé" ?
Eh bien cet "envoi initial" n'est pas défini en dehors du cadre de
l'authenticité.
Dans le cadre d'un chiffrement par paquets, relativement à une clé
publique RSA, avec une clé secrète spécifique au paquet, chiffrée en
RSA, et envoyée avec, dans ce cadre donc, il n'y a pas vraiment de
notion d'intégrité applicable.
Pour ces notions d'intégrité, RSA ne fait assurément pas le boulot (son
job s'arrête une fois la clé secrète échangée) et AES non plus (lui,
il chiffre, mais ne comporte pas de vrai contrôle de non-altération).
On utilise alors habituellement un MAC (Message Authentication Code).
Un MAC est une sorte de hachage à clé : on calcule une somme de contrôle
sur le message, calcul qui prend en compte une clé secrète. Un MAC
très couramment utilisé (d'ailleurs SSL s'en sert), c'est HMAC. HMAC
est une construction qui utilise une fonction de hachage classique
(genre SHA-256). HMAC est décrit dans la RFC 2104 :
http://tools.ietf.org/html/rfc2104
Conceptuellement, faire une archive Zip du message et chiffrer le tout,
c'est réutiliser le checksum intégré dans l'archive Zip (un CRC32)
comme un MAC, i.e. en espérant que le chiffrement AES injectera
suffisamment de clé secrète dedans. C'est bancal si l'AES et utilisé
en mode CBC, et fort faux en mode CTR. Donc mieux vaut ne pas nourrir
ces espérances.
Pour avoir une notion d'identité qui corresponde à la notion "physique"
d'identité (celle dont parle un certificat de naissance, par exemple),
il faut un peu plus de matériel. Par exemple, Alice a sa propre clé
publique, et calcule une signature électronique sur la clé secrète
qu'elle chiffre avec votre clé RSA. Mais là encore, il y a lieu de
s'inquiéter d'une foule de détails (par exemple, on ne veut pas que la
signature "montre" une partie de la clé signée).
(J'ai du mal à cerner les différences entre authentification et
signature, d'ailleurs).
C'est surtout entre "intégrité" et "authentification" que la différence
est difficile à voir. En fait tout ça dépend de la notion d'identité
qu'on utilise.
La signature électronique rajoute une autre propriété, qui est la
non-répudiation : la signature peut convaincre un tiers. Dans un échange
entre vous et Alice, vous pouvez acquérir la certitude que vous parlez
bien à Alice. Si vous pouvez _en outre_ convaincre Jérôme (avec un J
comme "juge") que c'est bien le cas, alors vous avez de la
non-répudiation. Et il y a des gradations : au niveau bas, vous avez une
preuve qu'Alice est passée par là, mais rien sur le contenu des
échanges. Au niveau haut, vous avez aussi une preuve que le message reçu
est bien celui d'Alice (une preuve retournable contre Alice, je veut
dire).
Par exemple, dans un échange HTTPS, le client a la garantie (via le
certificat du serveur et la mécanique SSL) qu'il parle bien au bon
serveur, mais face à un juge, même s'il enregistre toute la
conversation, il ne pourra prouver qu'une seule chose, à savoir qu'il a
bien causé au serveur désigné ; il n'aura pas de preuve sur le contenu
des échanges. Cela est également vrai dans l'autre sens, dans le cas où
le client s'authentifie lui aussi avec un certificat (cas très rare sur
le Web, mais techniquement possible)
: le serveur est convaincu qu'il
parle au client attendu, mais en termes de preuves montrables à un juge,
il a seulement une preuve du passage du client, mais rien sur ce que le
client a envoyé.
Notons qu'il existe beaucoup de documentations diverses qui emploient
sans vergogne le terme de "signature" pour désigner quelque chose qui
n'en est pas (souvent, un simple hachage), ce qui augmente
considérablement la confusion sur le sujet.
Mais je pose bien la question de l'intégrité du message chiffré, pas
de son authenticité.
Intégrité et authenticité sont un peu la même chose...
Qu'est-ce qu'un message intègre ? C'est un message qui est tel qu'il
était quand il a été envoyé. Quand est-ce que le message "a été envoyé" ?
Eh bien cet "envoi initial" n'est pas défini en dehors du cadre de
l'authenticité.
Dans le cadre d'un chiffrement par paquets, relativement à une clé
publique RSA, avec une clé secrète spécifique au paquet, chiffrée en
RSA, et envoyée avec, dans ce cadre donc, il n'y a pas vraiment de
notion d'intégrité applicable.
Pour ces notions d'intégrité, RSA ne fait assurément pas le boulot (son
job s'arrête une fois la clé secrète échangée) et AES non plus (lui,
il chiffre, mais ne comporte pas de vrai contrôle de non-altération).
On utilise alors habituellement un MAC (Message Authentication Code).
Un MAC est une sorte de hachage à clé : on calcule une somme de contrôle
sur le message, calcul qui prend en compte une clé secrète. Un MAC
très couramment utilisé (d'ailleurs SSL s'en sert), c'est HMAC. HMAC
est une construction qui utilise une fonction de hachage classique
(genre SHA-256). HMAC est décrit dans la RFC 2104 :
http://tools.ietf.org/html/rfc2104
Conceptuellement, faire une archive Zip du message et chiffrer le tout,
c'est réutiliser le checksum intégré dans l'archive Zip (un CRC32)
comme un MAC, i.e. en espérant que le chiffrement AES injectera
suffisamment de clé secrète dedans. C'est bancal si l'AES et utilisé
en mode CBC, et fort faux en mode CTR. Donc mieux vaut ne pas nourrir
ces espérances.
Pour avoir une notion d'identité qui corresponde à la notion "physique"
d'identité (celle dont parle un certificat de naissance, par exemple),
il faut un peu plus de matériel. Par exemple, Alice a sa propre clé
publique, et calcule une signature électronique sur la clé secrète
qu'elle chiffre avec votre clé RSA. Mais là encore, il y a lieu de
s'inquiéter d'une foule de détails (par exemple, on ne veut pas que la
signature "montre" une partie de la clé signée).
(J'ai du mal à cerner les différences entre authentification et
signature, d'ailleurs).
C'est surtout entre "intégrité" et "authentification" que la différence
est difficile à voir. En fait tout ça dépend de la notion d'identité
qu'on utilise.
La signature électronique rajoute une autre propriété, qui est la
non-répudiation : la signature peut convaincre un tiers. Dans un échange
entre vous et Alice, vous pouvez acquérir la certitude que vous parlez
bien à Alice. Si vous pouvez _en outre_ convaincre Jérôme (avec un J
comme "juge") que c'est bien le cas, alors vous avez de la
non-répudiation. Et il y a des gradations : au niveau bas, vous avez une
preuve qu'Alice est passée par là, mais rien sur le contenu des
échanges. Au niveau haut, vous avez aussi une preuve que le message reçu
est bien celui d'Alice (une preuve retournable contre Alice, je veut
dire).
Par exemple, dans un échange HTTPS, le client a la garantie (via le
certificat du serveur et la mécanique SSL) qu'il parle bien au bon
serveur, mais face à un juge, même s'il enregistre toute la
conversation, il ne pourra prouver qu'une seule chose, à savoir qu'il a
bien causé au serveur désigné ; il n'aura pas de preuve sur le contenu
des échanges. Cela est également vrai dans l'autre sens, dans le cas où
le client s'authentifie lui aussi avec un certificat (cas très rare sur
le Web, mais techniquement possible)
: le serveur est convaincu qu'il
parle au client attendu, mais en termes de preuves montrables à un juge,
il a seulement une preuve du passage du client, mais rien sur ce que le
client a envoyé.
Notons qu'il existe beaucoup de documentations diverses qui emploient
sans vergogne le terme de "signature" pour désigner quelque chose qui
n'en est pas (souvent, un simple hachage), ce qui augmente
considérablement la confusion sur le sujet.
Ceci dit, cela signifie donc qu'avec chiffrement+HMAC, je peux
vérifier l'intégrité du message. Une altération du support sera
immédiatement détectée lors du déchiffrement.
> Pour avoir une notion d'identité qui corresponde à la notion "physique"
> d'identité (celle dont parle un certificat de naissance, par exemple),
> il faut un peu plus de matériel. Par exemple, Alice a sa propre clé
> publique, et calcule une signature électronique sur la clé secrète
> qu'elle chiffre avec votre clé RSA. Mais là encore, il y a lieu de
> s'inquiéter d'une foule de détails (par exemple, on ne veut pas que la
> signature "montre" une partie de la clé signée).
>
Je fais un apparté: existe t'il des exemples concrets de ce genre?
> : le serveur est convaincu qu'il
> parle au client attendu, mais en termes de preuves montrables à un juge,
> il a seulement une preuve du passage du client, mais rien sur ce que le
> client a envoyé.
>
C'est de nouveau un apparté, mais dans le cas du site des impots, nous
nous authentifions via certificat au site web, puis nous signons notre
déclaration. Ceci doit être suffisant comme preuve? Le site web a donc
la preuve du passage du client, ainsi que sa déclaration signée.
Ceci dit, cela signifie donc qu'avec chiffrement+HMAC, je peux
vérifier l'intégrité du message. Une altération du support sera
immédiatement détectée lors du déchiffrement.
> Pour avoir une notion d'identité qui corresponde à la notion "physique"
> d'identité (celle dont parle un certificat de naissance, par exemple),
> il faut un peu plus de matériel. Par exemple, Alice a sa propre clé
> publique, et calcule une signature électronique sur la clé secrète
> qu'elle chiffre avec votre clé RSA. Mais là encore, il y a lieu de
> s'inquiéter d'une foule de détails (par exemple, on ne veut pas que la
> signature "montre" une partie de la clé signée).
>
Je fais un apparté: existe t'il des exemples concrets de ce genre?
> : le serveur est convaincu qu'il
> parle au client attendu, mais en termes de preuves montrables à un juge,
> il a seulement une preuve du passage du client, mais rien sur ce que le
> client a envoyé.
>
C'est de nouveau un apparté, mais dans le cas du site des impots, nous
nous authentifions via certificat au site web, puis nous signons notre
déclaration. Ceci doit être suffisant comme preuve? Le site web a donc
la preuve du passage du client, ainsi que sa déclaration signée.
Ceci dit, cela signifie donc qu'avec chiffrement+HMAC, je peux
vérifier l'intégrité du message. Une altération du support sera
immédiatement détectée lors du déchiffrement.
> Pour avoir une notion d'identité qui corresponde à la notion "physique"
> d'identité (celle dont parle un certificat de naissance, par exemple),
> il faut un peu plus de matériel. Par exemple, Alice a sa propre clé
> publique, et calcule une signature électronique sur la clé secrète
> qu'elle chiffre avec votre clé RSA. Mais là encore, il y a lieu de
> s'inquiéter d'une foule de détails (par exemple, on ne veut pas que la
> signature "montre" une partie de la clé signée).
>
Je fais un apparté: existe t'il des exemples concrets de ce genre?
> : le serveur est convaincu qu'il
> parle au client attendu, mais en termes de preuves montrables à un juge,
> il a seulement une preuve du passage du client, mais rien sur ce que le
> client a envoyé.
>
C'est de nouveau un apparté, mais dans le cas du site des impots, nous
nous authentifions via certificat au site web, puis nous signons notre
déclaration. Ceci doit être suffisant comme preuve? Le site web a donc
la preuve du passage du client, ainsi que sa déclaration signée.
Ceci dit, cela signifie donc qu'avec chiffrement+HMAC, je peux
vérifier l'intégrité du message. Une altération du support sera
immédiatement détectée lors du déchiffrement.
Il faut distinguer les altérations aléatoires des attaques.
La réplique est connue :
il suffit d'ajouter une "somme de contrôle" qui est, en fait, de la
redondance sur le message complet.
Dans le cas d'une _attaque_, par un intrus doué de raison et sachant ce
qu'il fait, la situation est différente. Un CRC32 ou un hash,
l'attaquant peut les recalculer à loisir.
Quand Alice est définie par sa connaissance d'une clé qu'elle partage
avec vous, alors l'outil cryptographique à utiliser est un MAC. Bob, ne
connaissant pas la clé, ne pourra pas recalculer un MAC valide sur les
données altérées. Quand Alice est définie par sa connaissance d'une clé
privée qu'elle seule détient, mais qui correspond à une autre donnée
publique (une "clé publique") et que vous avez une connaissance _a
priori_ de cette clé publique (par exemple via un annuaire fiable ou des
certificats), alors l'outil cryptographique est la signature
électronique. Les deux sont combinables, les variantes sont nombreuses.
Ceci dit, cela signifie donc qu'avec chiffrement+HMAC, je peux
vérifier l'intégrité du message. Une altération du support sera
immédiatement détectée lors du déchiffrement.
Il faut distinguer les altérations aléatoires des attaques.
La réplique est connue :
il suffit d'ajouter une "somme de contrôle" qui est, en fait, de la
redondance sur le message complet.
Dans le cas d'une _attaque_, par un intrus doué de raison et sachant ce
qu'il fait, la situation est différente. Un CRC32 ou un hash,
l'attaquant peut les recalculer à loisir.
Quand Alice est définie par sa connaissance d'une clé qu'elle partage
avec vous, alors l'outil cryptographique à utiliser est un MAC. Bob, ne
connaissant pas la clé, ne pourra pas recalculer un MAC valide sur les
données altérées. Quand Alice est définie par sa connaissance d'une clé
privée qu'elle seule détient, mais qui correspond à une autre donnée
publique (une "clé publique") et que vous avez une connaissance _a
priori_ de cette clé publique (par exemple via un annuaire fiable ou des
certificats), alors l'outil cryptographique est la signature
électronique. Les deux sont combinables, les variantes sont nombreuses.
Ceci dit, cela signifie donc qu'avec chiffrement+HMAC, je peux
vérifier l'intégrité du message. Une altération du support sera
immédiatement détectée lors du déchiffrement.
Il faut distinguer les altérations aléatoires des attaques.
La réplique est connue :
il suffit d'ajouter une "somme de contrôle" qui est, en fait, de la
redondance sur le message complet.
Dans le cas d'une _attaque_, par un intrus doué de raison et sachant ce
qu'il fait, la situation est différente. Un CRC32 ou un hash,
l'attaquant peut les recalculer à loisir.
Quand Alice est définie par sa connaissance d'une clé qu'elle partage
avec vous, alors l'outil cryptographique à utiliser est un MAC. Bob, ne
connaissant pas la clé, ne pourra pas recalculer un MAC valide sur les
données altérées. Quand Alice est définie par sa connaissance d'une clé
privée qu'elle seule détient, mais qui correspond à une autre donnée
publique (une "clé publique") et que vous avez une connaissance _a
priori_ de cette clé publique (par exemple via un annuaire fiable ou des
certificats), alors l'outil cryptographique est la signature
électronique. Les deux sont combinables, les variantes sont nombreuses.
Mais qui définit ce 'il suffit d'ajouter' ? Une norme? Ou bien le
programmeur qui décide d'implémenter un échange de fichiers chiffrés?
Mais qui définit ce 'il suffit d'ajouter' ? Une norme? Ou bien le
programmeur qui décide d'implémenter un échange de fichiers chiffrés?
Mais qui définit ce 'il suffit d'ajouter' ? Une norme? Ou bien le
programmeur qui décide d'implémenter un échange de fichiers chiffrés?
Mais qui définit ce 'il suffit d'ajouter' ? Une norme? Ou bien le
programmeur qui décide d'implémenter un échange de fichiers chiffrés?
Une communication réussie repose sur une convention entre l'émetteur
et le récepteur. Ici, que l'émetteur calcule un hash avec une fonction
de hachage donnée et rajoute le résultat à un endroit idoine dans le
flux, et que le récepteur fasse le même calcul du hash sur les mêmes
données et avec la même fonction, et pioche le résultat attendu là
où l'émetteur l'a mis.
Que cette convention soit un fait des seuls programmeurs impliqués des
deux côtés du tuyau, ou que d'autres personnes suivent cette même
convention, ne change rien à cette affaire.
Mais qui définit ce 'il suffit d'ajouter' ? Une norme? Ou bien le
programmeur qui décide d'implémenter un échange de fichiers chiffrés?
Une communication réussie repose sur une convention entre l'émetteur
et le récepteur. Ici, que l'émetteur calcule un hash avec une fonction
de hachage donnée et rajoute le résultat à un endroit idoine dans le
flux, et que le récepteur fasse le même calcul du hash sur les mêmes
données et avec la même fonction, et pioche le résultat attendu là
où l'émetteur l'a mis.
Que cette convention soit un fait des seuls programmeurs impliqués des
deux côtés du tuyau, ou que d'autres personnes suivent cette même
convention, ne change rien à cette affaire.
Mais qui définit ce 'il suffit d'ajouter' ? Une norme? Ou bien le
programmeur qui décide d'implémenter un échange de fichiers chiffrés?
Une communication réussie repose sur une convention entre l'émetteur
et le récepteur. Ici, que l'émetteur calcule un hash avec une fonction
de hachage donnée et rajoute le résultat à un endroit idoine dans le
flux, et que le récepteur fasse le même calcul du hash sur les mêmes
données et avec la même fonction, et pioche le résultat attendu là
où l'émetteur l'a mis.
Que cette convention soit un fait des seuls programmeurs impliqués des
deux côtés du tuyau, ou que d'autres personnes suivent cette même
convention, ne change rien à cette affaire.
La cryptographie est un domaine tellement sensible que je me demande
pourquoi les concepteurs ont laissé le champ libre aux programmeurs à
ce niveau là...
Imaginons un programmeur qui implémente un CRC (ou un hash) tellement
mal que, ou la clé, ou le message, fuite.
La cryptographie est un domaine tellement sensible que je me demande
pourquoi les concepteurs ont laissé le champ libre aux programmeurs à
ce niveau là...
Imaginons un programmeur qui implémente un CRC (ou un hash) tellement
mal que, ou la clé, ou le message, fuite.
La cryptographie est un domaine tellement sensible que je me demande
pourquoi les concepteurs ont laissé le champ libre aux programmeurs à
ce niveau là...
Imaginons un programmeur qui implémente un CRC (ou un hash) tellement
mal que, ou la clé, ou le message, fuite.