Alors que de nombreuses organisations abandonnent les documents papier pour les documents numériques, les signatures numériques sont nécessaires pour gérer tous les documents numériques sensibles. Les signatures numériques peuvent être utilisées pour authentifier la source du message, de sorte que le destinataire peut décider de faire confiance ou non à l'expéditeur. De nos jours, il est le plus largement utilisé pour la distribution de logiciels et les transactions financières.
En cryptographie à clé publique, il est possible d'utiliser une clé privée pour signer un fichier. Toute personne disposant de la clé publique correspondante peut vérifier si le fichier a été signé par la clé privée. Quiconque ne possède pas la clé privée ne peut pas falsifier une telle signature.
Les signatures numériques peuvent être utilisées pour l'authentification de l'expéditeur et la non-répudiation. Le signataire ne peut pas prétendre qu'il n'a pas signé le document.
De nos jours, les signatures numériques jouent un rôle clé dans la distribution de logiciels. Lorsque vous installez un logiciel à partir de Debian Mirror, une fois le logiciel téléchargé, il vérifie si le logiciel provient d'une source fiable en vérifiant la signature, garantissant ainsi que le paquet provient d'une source fiable.
Nous allons maintenant voir les différentes méthodes pour signer des documents à l'aide de l'outil GnuPG.
Si vous débutez avec l'outil GnuPG, vous devez d'abord comprendre comment utiliser les commandes gpg de base.
Une signature numérique, certifie et horodate un document. Si le document est modifié de quelque manière que ce soit, la vérification de la signature échouera.
1. Créer une signature numérique pour un fichier
Pour signer numériquement un document, l'option de signature est utilisée. Il vous sera demandé de saisir votre phrase de passe pour déverrouiller la clé privée utilisée pour signer le document.
$ gpg --sign file.txt You need a passphrase to unlock the secret key for user: "lakshmanan (This is lakshmans key) " 2048-bit RSA key, ID 3630F8D6, created 2012-12-30 Enter passphrase:
Maintenant, il va créer un fichier nommé "file.txt.gpg" au format binaire. Le fichier d'entrée est compressé avant de signer le fichier.
2. Vérifier la signature numérique
Étant donné un document signé, vous pouvez vérifier la signature à l'aide de l'option –verify.
$ gpg --verify file.txt.gpg gpg: Signature made Saturday 12 January 2013 11:17:46 PM IST using RSA key ID 3630F8D6 gpg: Good signature from "lakshmanan (This is lakshmans key) "
La commande ci-dessus vérifie que la signature faite est bonne.
3. Extraire le document du fichier
Pour extraire le document original du fichier signé, utilisez l'option –decrypt. Vous pouvez utiliser le –output pour spécifier le fichier de sortie pour stocker le contenu réel du fichier.
$ gpg --output doc.txt --decrypt file.txt.gpg gpg: Signature made Saturday 12 January 2013 11:17:46 PM IST using RSA key ID 3630F8D6 gpg: Good signature from "lakshmanan (This is lakshmans key) "
Maintenant, le document réel sera enregistré dans le fichier doc.txt.
4. Pour effacer signer les documents
Une utilisation courante des signatures numériques consiste à envoyer des e-mails. Dans un tel cas, il n'est pas souhaitable de compresser le fichier en binaire et de le signer. Vous pouvez utiliser l'option –clearsign pour que le fichier soit enveloppé dans des signatures blindées ASCII.
$ gpg --output file.sig --clearsign file.txt
Maintenant, un fichier ASCII nommé file.sig sera créé qui contient la signature numérique et le fichier lui-même.
$ cat file.sig -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 This is a test file -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.11 (GNU/Linux) iQEcBAEBAgAGBQJQ8af1AAoJEHUf3BE2MPjWJ6QIAIoM7vZlvVD4PR4TgqKkUAr5 S4Pc/7tjkEquBcPfzHgm6MPdTd7kIvUzwHNkkST0FyB2cLzvx8wNf7Zp/kDYL0Uz /7UCocMPsDBYHasUY4XRfCDUkF0ER/NAFdiL9AUTvQf6oQxwuQG9sWxb6tcK8eiV U7BBvQvMl6RszP+e7VXgcDbNeYMrTDwrivP9BKwAFuBtZmRg0vQKnjenUyVJL6gJ tndkwtOd1XGpc5ZKCTRSKOoTonuUQAD1q0Pi6nmeaNskSqwVOxzQcV6lQ8nHJTh2 XfKSAopNriv405YfC1KO5H2Ffzee2jx+o3HqxfU1vQbHtP7uf4QqxUc2HtDnRNQ= =PN+K -----END PGP SIGNATURE-----
La vérification du document signé en clair est similaire à la vérification du document signé en binaire.
5. Créer une signature détachée
En cas de signatures détachées, un nouveau fichier est créé comme signature. Vous pouvez utiliser l'option –detach-sign pour créer une signature détachée.
$ gpg --armor --detach-sig file.txt
Maintenant, un fichier ASCII nommé file.txt.asc sera créé qui contient la signature détachée. Vous pouvez utiliser –output pour modifier le nom du fichier de signature détaché.
6. Vérifiez la signature détachée
Afin de vérifier une signature détachée, vous devez disposer à la fois du fichier de signature et du fichier de données.
$ gpg --verify file.txt.asc file.txt gpg: Signature made Sunday 13 January 2013 12:13:59 AM IST using RSA key ID 3630F8D6 gpg: Good signature from "lakshmanan (This is lakshmans key) "
Essayons de modifier le fichier.txt. Ajoutez du contenu au fichier.txt et essayez de vérifier la signature.
$ echo "Append" >> file.txt $ gpg --verify file.txt.asc file.txt gpg: Signature made Sunday 13 January 2013 12:13:59 AM IST using RSA key ID 3630F8D6 gpg: BAD signature from "lakshmanan (This is lakshmans key) "
Maintenant, la vérification a échoué en indiquant la mauvaise signature puisque le contenu est modifié.
7. Crypter et signer un document
Dans l'un de nos précédents articles, nous avons également discuté en détail de la manière de chiffrer et de déchiffrer un fichier à l'aide de GnuPG. Toutefois, si vous souhaitez chiffrer et signer un document en même temps, procédez comme suit :
$ gpg --sign --encrypt --recipient raman file.txt
La commande ci-dessus crypte le fichier.txt et signe le document numériquement. Le destinataire peut vérifier la signature et déchiffrer le document à l'aide de l'option –decrypt.