Archive

Posts Tagged ‘Cryptographie’

Signature numérique et certificat électronique

Dans le cadre de votre vie professionnelle, voir privée, vous êtes surement amené (ou dans un futur proche, vous serez surement amené) à recevoir de plus en plus de contrats sous forme électronique (format .pdf en général) : par exemple, un contrat de location à l’étranger ou un changement de contrat avec votre banque.

Comme vous l’avez remarqué, il assez fastidieux, voir absolument contraignant, d’imprimer les dits contrats, de les signer, puis de les envoyer par la poste avec accusé de réception.

Heureusement pour vous, depuis mars 2000, la loi française permet de signer électroniquement les documents, avec la même valeur juridique qu’une signature manuscrite (après je ne suis pas allé voir dans les détails).

La Loi c’est bien beau, mais comment cela se passe en en théorie?

En pratique la signature électronique doit remplir cinq critères : la signature doit être authentique (permet de retrouver l’identité du signataire), infalsifiable, non réutilisable (impossible de la déplacer sur un autre document), inaltérable (impossibilité de modifier le document signé) et irrévocable (impossibilité de nier la signature).

Concrètement, cela passe par de la cryptographie asymétrique : je ne vais pas vous raconter une histoire avec Alice et Bob (je comprends pas la manie de ces deux là à toujours vouloir échanger des messages pendant les explications sur la cryptographie et la sécurité), donc pour faire simple, à une message M, on applique une fonction f, dite fonction de hachage (MD5, SHA-1).

Cette fonction est généralement utilisée pour donner une empreinte, i.e. un identifiant à un message, en partant du fait que les collisions seront peu nombreuses (une collision, au passage, c’est quand deux messages M ont la même image par f, i.e. f non injective) et cela permet de gagner du temps/de l’argent (en gros vous lisez le nom du message plutôt que le message en entier pour l’identifier). Donc on fait s=f(M). Ce hash s, envoyé avec le message, permet donc de vérifier l’intégrité du message : vous recevez Mr et s, vous calculez f(Mr). si f(Mr)=s, le message n’a pas été modifié.

Cependant, cela ne garantit pas l’émetteur du message. Pour vérifier par qui a été envoyé/signé le message, on utilise un système clé publique/clé privée. L’émetteur crypte le hash avec sa clé privée c(s), et le destinataire décrypte avec la clé publique d(c(s))=s. En gros, je possède un seul cadenas, et j’envoie les clés à mes amis. Le hash envoyé porte un cadenas, si la clé de mon ami correspond au cadenas, c’est que je suis effectivement l’expéditeur.

Voilà pour la théorie.

Comment cela se passe t’il en pratique ?

En pratique, on utilise concrètement des certificats électroniques, dont le standard est X509.

Comme vous ne connaissez pas forcément la personne (le site, etc) avec qui vous voulez échanger, il est à priori assez compliqué d’échanger les clés ab initio. Pour cela vous allez faire appel à une tierce personne en qui vous avez confiance, l’autorité de certification (AC), qui va distribuer et vérifier des cartes d’identités : les certificats électroniques.

Quand Alice rencontre Bob (nous y voila, damn it), Alice demande ses papiers à Bob et vice versa, et ils vérifient tous deux auprès de la Police (autorité de certification), que les cartes d’identités sont conformes (je sais c’est une drôle de rencontre). Dans les faits, Alice et Bob utilisent le certificat de l’AC pour vérifier que leurs certificats respectifs sont intègres (même principe qu’expliqué ci-dessus).

Il existe différents types de certificats avec différents niveaux de sécurité (4 classes) : cela va de la simple vérification de validité d’un email, jusqu’à la vérification physique d’identité par l’autorité de certification.

Qui sont les autorités de certification ?

Les autorités de certification sont en général des entreprises privées (Verisign, GlobalSign, CertEurope, etc), des organismes publics (chambre  de commerce et de l’industrie, greffes des tribunaux de commerce, l’état espagnol ou belge, etc), des associations (CAcert), ou bien de simples particuliers, voir vous même dans le cadre de l’auto-signature.

La confiance dans un certificat dépend intrinsèquement de l’autorité de certification qui le délivre. Un certificat délivré par une autorité « publique » (celles citées précédemment) a plus de crédit que celui que je pourrais vous délivrer moi même. D’ailleurs, généralement, lors de votre navigation sur le web, si avez accédez à un site sécurisé, dont le certificat n’est pas valide ou dont vous ne connaissez pas l’autorité racine, votre navigateur vous renvoie un message d’alerte.

Avec quoi sont créés les certificats électroniques ?

Bonne question. Il ne s’agit pas d’une boite (complètement) opaque. Les certificats électroniques respectent un standard : le plus souvent le standard X509.

Pour créer simplement ces certificats, vous pouvez utiliser OpenSSL, le couteau suisse de votre ordinateur pour les questions de cryptographie : il sert pour tout, le plus souvent de façon transparente, par exemple lorsque vous vous connectez à un site en https (http sécurisé, via ssl), ou à votre boite mail avec le protocole imaps (imap via ssl).

Vous pouvez trouver des détails sur la création de certificats ici ou .

Vous pouvez trouver des infos simples et claires sur le SSL ici.

Dans quel cadre un certificat électronique est utile ?

Les certificats numériques sont utiles, vraiment utiles et vous vous en servez très fréquemment, et le plus souvent de façon transparente : par exemple lorsque vous vous connectez sur le site de votre banque, ou un site de e-commerce en https, etc. Il peuvent aussi être utilisés dans le cadre d’une authentification forte, ou pour signer des documents comme nous l’évoquions précédemment.

Comment se procurer un certificat?

Actuellement, ces moyens de signature numérique ne concernent majoritairement que les entreprises, et ils sont onéreux : pour se procurer un certificat, il faut faire une demande à une autorité de certification (AC).

Si par chance, vous êtes une entreprise, vous pouvez vous procurer un certificat auprès de la chambre  de commerce et de l’industrie (ChamberSign), auprès des greffes des tribunaux de commerce, ou auprès d’une entreprise privée (VerisignGlobalSignCertEurope, etc).

Si par malheur, vous êtes un particulier, ça se corse pour vous, et en plus ça risque de vous couter un bras si vous faites appel à une entreprise privée.

Contrairement à d’autres pays européens, l’Etat Français ne distribue pas encore de certificats électroniques à ses citoyens : en revanche, la Belgique et l’Espagne ont déjà instauré des cartes d’identité numériques, comportant un puce avec deux certificats électroniques X509, qui permettent à tous citoyens belges et espagnols de signer électroniquement et de s’authentifier en ligne (ceux-ci nécessitent cependant un lecteur de carte à puce).

Avec le développement des télé-services au sein de nos administrations (déclaration en ligne des revenus, etc), et l’augmentation du besoin d’identification forte sur le web et via les outils numériques, il probable que lors la prochaine décennie on voit l’arrivée de nouvelles cartes d’identité comprenant des certificats d’authentification délivrés par l’Etat.

En outre, il est cependant important de rappeler qu’un projet de carte d’identité électronique nommé INES (Identité Nationale Electronique Sécurisée) avait été élaboré en France dès 2003 : cependant celle ci devait aussi comporter des données biométriques et cela avait provoqué une levée de boucliers, et entrainé la suspension du projet.

Comment créer son propre certificat, ou être soi même autorité de certification ?

En attendant, vous pouvez créer vous même vos propres certificats (auto-signés) en utilisant OpenSSL, ou vous déclarer autorité de certification au sein de votre organisme, de votre institution, de votre entreprise ou de votre école si l’usage reste interne. Encore une fois je vous renvois ici ou .

Si le sujet vous intéresse, je vous conseille de lire un document du CNRS rédigé par Carine Bernard à propos de la signature électronique ici.

Publicités

Comment rester anonyme sur internet

Tout le monde laisse des traces sur internet . Entre autres, votre ip, votre dns, vos cookies, votre historique, votre navigateur et votre système d’exploitation sont facilement accessibles. Vous ne me croyez pas? Allez voir ici ou . Alors pour ce qui est du reste, il faudrait commencer à s’inquiéter…

Pour rester « relativement » anonyme, il existe deux solutions simples. Vous pouvez utiliser un proxy, ou bien utiliser Tor.

Utilisation d’un proxy :

Un proxy (serveur mandataire) est un relais entre vous et le serveur cible sur lequel vous voulez vous connecter. Il relaye vos paquets, et le serveur ne voit que lui. Vous pouvez en trouver une longue liste ici. Cependant, il garantit assez peu votre anonymat car les données sont le plus souvent transmises en clair, le proxy sait tout de vous (man in the middle) et en plus un simple code exécuté (du javascript par exemple) sur le client (vous) peut permettre de récupérer les données précédemment masquées (les entêtes que l’on veut cacher). Une démarche similaire peut consister à passer par un serveur VPN (virtual private network) mais ne modifie pas la liste des inconvénients. Pour plus d’information sur les VPN, je vous conseille ce site.

Pour éviter ces complications, vous pouvez par exemple utiliser Tor.

Logo de Tor

Utilisation de Tor :

Tor est un réseau de tunnels virtuels. Il permet de prendre un chemin détourné (routage sur plusieurs noeuds) pour se rendre sur un site web (i.e de dissimuler les entêtes, notre problème précédent) et en plus de crypter tous les paquets que vous envoyez entre vous et l’avant dernier noeud. En résumé, Tor vous protège de l’analyse de traffic. Il doit s’utiliser en complément d’outils gestion des cookies (qui peuvent vous trahir) par exemple le proxy web Privoxy. Cependant le simple fait d’installer Tor ne vous protège pas comme par magie. Il faut configurer les applications pour qu’elles utilisent Tor. Utiliser Firefox et TorButton est une bonne combinaison pour naviguer tranquille (cela va cependant désactiver les extensions javascript, flash, etc qui peuvent révéler des informations sur vous comme votre ip).

Pour en savoir plus sur Tor, je vous recommande le site officiel http://www.torproject.org/.

Bonne navigation.

Catégories :Sécurité, Web Étiquettes : , , , , ,

Comment crypter facilement ses données

La cryptographie et le chiffrage des données ne sont pas seulement réservés aux professionnels, aux entreprises, aux chercheurs ou aux geeks. Le chiffrage est accessible à tous, il est facile à mettre en oeuvre et facile à utiliser. Il permet de protéger ses données sensibles ou tout simplement votre vie privée. Il faut toujours garder à l’esprit qu’envoyer un mail via internet est comparable à envoyer une carte postale par la poste. Niveau confidentialité, c’est pas le top.

Pour chiffrer vos documents, il existe des solutions simples et efficaces, accessibles à l’utilisateur lambda. Je me propose ici de vous présenter quelques unes de ces solutions.

Le chiffrement symétrique par AES (Advanced Encryption Standard) :

AES est un algorithme de chiffrement symétrique, c’est à dire à clé secrète. Un logiciel très pratique, gratuit, et open source, et multiplateforme qui implémente l’algorithme AES en 256-bits est aescrypt. Il est téléchargeable ici sur le site de l’éditeur.

Une fois installé, il s’utilise très simplement en ligne de commande (non non ne prenez pas peur) via un terminal (mac, linux, unix) ou une invite de commande (windows). Rassurez vous le site propose aussi une petite interface graphique pour les frileux.

Pour chiffrer, il suffit de taper la commande suivante (-e pour chiffrer, -p pour le mot de passe, suivi du nom du fichier) :

aescrypt -e -p passwordcle secretsdevictor.rtf

On obtient alors un fichier chiffrer pour l’extension .aes :

secretsdevictor.rtf.aes

Pour déchiffrer, il suffit de taper la commande avec -d (pour déchiffrer) :

aescrypt -d -p passwordcle secretsdevictor.rtf.aes

Voilà vous savez désormais chiffrer un fichier. Pensez à transmettre la clé de votre fichier à son destinataire par un moyen sûr.

Vous pouvez aussi utiliser directement la librairie OpenSSL pour crypter/décrypter via AES. Il suffit de taper la ligne suivante sous un UnixLike disposant de la bibliothèque OpenSSL (avec -e pour crypter et -d pour décrypter).

openssl aes-256-cbc -e -a -salt -in secrets.rtf -out secrets.rtf.aes

Je vous conseille aussi de consulter l’article Wikipédia Mode d’opération (cryptographie) si vous êtes intéréssé par les différences entre ecb, cbc, etc (et aussi pour comprendre les faiblesses de ecb).

Chiffrement avancé d’un disque, d’une partition ou d’une partition système :

Un des meilleurs logiciels de chiffrement à la volée, multi-plateformes, gratuits et dont le code est accessible (mais non libre) est certainement TrueCrypt. Il permet de créer un disque virtuel chiffré, ou de chiffrer une partition ou un périphérique (disque dur externe, clé usb). Il supporte plusieurs algorithmes de chiffrement (AES, Serpent, Twofish). Si vous êtes rebutés par les exemples précédents et/ou que vous cherchez une solution pour le chiffrement à la volée de partitions, ce soft est fait pour vous. Vous pouvez le télécharger ici.

Logo de GnuPG

Le chiffrement asymétrique avec GnuPG (OpenPGP) :

GnuPG est un logiciel qui permet de transmettre des messages signés et/ou chiffrés. Il se base sur de la cryptographie asymétrique, i.e un principe de clé publique et de clé privée. En gros, je vous donne un cadenas ouvert mais je garde le clé. Lorsque vous m’envoyez un message, vous cadenassez le message, et moi seul peut l’ouvrir.

Vous trouverez tout le nécessaire pour installer GnuPG sur ce site. Celui ci peut s’utiliser en ligne de commande ou vous pouvez ajouter des extensions à vos clients mails pour intégrer directement GnuPG, par exemple Enigmail pour Thunderbird.

Une fois installé, vous devez générer les clés, avant de pouvoir chiffrer. Le plus simple encore c’est d’ouvrir un terminal (mac, linux) et taper :

gpg --gen-key

Vous devez ensuite spécifier le type de clé (par défaut (1) DSA and ElGamal) , la taille de la clé (1024, 2048 bits), la durée de validité de la clé, vos informations utilisateur (votre nom, qui servira d’identificateur pour la clé, votre adresse email et un commentaire) et enfin la passphrase (le mot de passe de votre clé). Pendant la génération de clés, faites autres choses, n’importe quoi (bougez la sourie, tapez au clavier, écoutez une chanson, ouvrez des fichiers), cela aide à la génération de nombres aléatoires.

Vous pouvez afficher les clés générées en tapant :

gpg --list-key

Vous devez ensuite communiquer votre clé publique à vos correspondants (via un serveur de clé PGP par exemple). Pour cela, vous devez l’exporter :

gpg --export --armor

Vous pouvez désormais recevoir des messages chiffrés, ou signer vos messages via votre client et les extensions ou en utilisant :

gpg --d message.asc (pour déchiffrer)
gpg -s -u victor -a fichierdumessage (pour signer en tant que victor)

Pour envoyer des messages chiffrés, vous devez récupérer les clés de vos correspondants et les ajouter à votre trousseau.

Pour importer la clé de Marc par exemple (fichier cleducopainmarc) tapez:

gpg --import cleducopainmarc

Enfin, après ce laborieux travail, vous pouvez désormais envoyer un message chiffré à Marc via votre client mail (Thunderbird, Evolution, Mail) à l’aide de leurs extensions ou en tapant :

gpg -r Marc -e -a messagepourmarc

Je vous rassure toute la partie génération et/ou importation de clés peut se faire via des interfaces adaptées à vos OS respectifs (par exemple pour mac vous pouvez installer la suite disponible ici).

Pour plus d’informations sur gpg, je vous conseille de lire le HowTo de Julien Francoz.