keul.fr - du web et du code

Aller au contenu | Aller au menu | Aller à la recherche

La toile d'araignée high-tech.

lundi, 18 avril 2011

La signature électronique et le cryptage

L'informatique est basé sur la gestion des données, qui sont converties (clavier/écran/haut-parleur), transmises(cables), stockées(RAM, HDD) et traitées(CPU, circuits intégrés).
Et ces données sont précieuses. Gérés par d'énormes systèmes informatiques, elles ont fait la fortune de Microsoft, Google, Apple, Facebook, Twitter...

J'avais déjà expliqué qu'il était important de pouvoir posséder ses données, parce-que devoir les récupérer ensuite peut être une véritable plaie (10H pour importer un forumactif propriétaire avec perte des mots de passe contre 15min d'import d'une galerie d'images sans perte).
Mais en plus de les posséder, il faut aussi les sécuriser, avec des méthodes adaptées.

En informatique, on dispose de deux méthodes :
  • Le cryptage ou chiffrement qui traite une données afin qu'elle ne soit lisible que par les personnes voulues.
  • La signature ou le hashage qui permet de certifier une donnée.
Le chiffrement peut être symétrique, le message est donc chiffré et déchiffré avec la même clef, n'importe-qui ayant cette clef pouvant décoder le message.

Le chiffrement peut aussi être asymétrique, chiffré par une clef publique, et déchiffrable uniquement par une clef privé correspondante. On peux donc facilement distribuer des clef publique à la vue de tous (la confidentialités n'est pas nécessaire, seul l'authenticité compte.)

La signature permet elle de certifier l'authenticité du contenu.
Si je prends par exemple que la signature de Insurance.aes256 est cce54d3a8af370213d23fcbfe8cddc8619a0734c, si jamais vous téléchargez le fichier, vous pourrez vérifier que le fichier est bien celui dont je parle en comparant la signature sha1 avec celle que j'ai donnée ci-dessus. Si jamais vous téléchargez un autre fichier, ou le même fichier, mais corrompu (intentionnellement ou pas), la signature ne sera pas la même.

Pour faire simple : je possède une paire de clef publique et privée GPG. N'importe-qui peux donc en utilisant ma clef publique chiffrer un document, dont je serai le seul à pouvoir déchiffrer à l'aide de ma clef privée. Je peux ensuite signer un document avec ma clef privée, et toute personne disposant de la clef publique pourra vérifier que c'est bien moi qui l'ai signé.

Comparé à un document papier,
- La signature d'un fichier correspond à la certification de celui-ci au bit près, en assurant qu'il n'a pas été altéré depuis la signature.
- Si vous signez une feuille de papier, je doute que cette signature disparaissent ou soit invalidée si jamais la feuille est modifiée (on peut éventuellement ajouter une clause dans un espace vide sur un contrat), là, l'employé sera protégé uniquement parce-qu'il aura la copie du contrat signé par l'entreprise sans cette clause).

- Par contre, une signature n'est jamais fiable à 100%, vu qu'il y a toujours possibilité de piratage de l'ordinateur (des solutions très sécurisées existent, à vous de juger la sécurité requise face à la convivialité: un live-cd linux/BSD ne stocke rien sur disque-dur et donc est plus sécurisé, mais reste moins pratique qu'une version installée) ou la faille humaine (Si vous n'avez pas laissé votre mot de passe sur un post-it, on peux toujours passer par la méthode forte)



Suite aux twitts de Maitre Éolas, une réponse technique s'impose :

Un fichier zip, c'est comme une enveloppe qui permet de rassembler plusieurs documents et de les compacter.
Imaginons trois fichiers contenant "AAAAA", "BBBCC" et "DDDEE"
De manière très simple, un fichier zip contiendrais "ZIP A5-B3C2-D3E2 ZIP" (je simplifie, en réalité, c'est plus compliqué)

Vous pouvez signer sur l'enveloppe ou signer chacun des documents qu'il contiens, vous connaissez le résultat.
Quand vous signez le fichier zip, vous ne signez pas l'"enveloppe" du fichier "ZIP_" mais TOUT le document.
On peux donc dire que signer une archive zip reviens à avoir TOUS les fichiers de cette archive signé.

ATTENTION par contre. La signature étant "étalée" sur tous les fichiers de l'archive, la signature n'est valide que si vous disposez de l'archive complète.

En gros, signer un fichier zip reviens à étaler tous les documents d'une enveloppe et faire une grosse signature sur tous les documents en même temps

La faille restant tiens ensuite de la sécurités de l’algorithme et de la fiabilitée du processus.

samedi, 26 mars 2011

Dropbox

Pour pouvoir travailler facilement de manière collaborative au sein de mon association, on m'a conseillé d'utiliser Dropbox. Suite aux incompréhensions devant mon refus de l'utiliser, j'ai décidé de rédiger un article expliquant les problème du logiciel.

Pour ceux qui ne connaissent pas, Dropbox est un service d'hébergement de fichiers en ligne permettant de partager des fichiers, d'en gérer différentes versions, de les synchroniser avec des dossiers locaux... Dans la présentation et les fonctionnalités, il y a quelques points que je ne tolère pas par contre :

Dropbox replaces:

  • Using USB drives to move files between computers
Dropbox passe par ma connexion internet qui ne fonctionne pas toujours et son pauvre méga d'upload (128Ko/s). Mes clef/disques USB, mon réseau gigabit et mon wifi sont vingt fois plus rapide et autonomes. EDIT : argument invalide, Dropbox sais utiliser les transferts via LAN.
  • Complicated backup software and hardware
Dropbox ne fait PAS de backup. Le backup, c'est ÇA : http://www.taobackup.com.
  • Security & Privacy : Dropbox uses military grade encryption methods to both transfer and store your data.
Security & Privacy n'est pas possible avec un logiciel propriétaire.


On a donc les avantages suivants :
  • On peux toujours avoir une copie des données, donc c'est tolérable.
  • C'est simple à utiliser (comme un Ipad/Facebook/...)
  • C'est gratuit si on se contente de 2Go (extensible à 8Go par parrainage sur mails jetable)

Et les inconvénients suivants :
  • Espace limité (Impossible de dépasser les 100Go)
  • Peu adaptable (impossible de relier à d'autres outils pour avoir une gestion unifiée de comptes et de systèmes contrairement à FTP/SFTP...)
  • Pas de sécurités des données (impossible de vérifier dans le code source que les données ne sont pas exploitable par la société Dropbox, contrairement à Firefox sync)
  • Vous n'avez pas de contrôle sur le serveur, l'hébergeur peut faire ce que bon lui semble, en bien ou en mal. N’espérez pas héberger les câbles de WikiLeaks dessus ou une copie de FairUse4WM.

Conclusion :
Tant qu'il y aura de la concurrence, vous pourrez utiliser drop-box si vous voulez.
Personnellement, ça ne m’intéresse pas, je préfère FTP/SFTP qui est libre et extensible à tout, après, on a des CVS plus évolués aussi (plus complexes aussi, mais on n'a pas rien sans rien).

jeudi, 24 mars 2011

Passer de Danbooru à Shimmie

Après mon script de conversion de forumactif vers SMF, un autre petit outil de conversion pour passer de Danbooru à Shimmie

Télécharger le script

MAJ : cette version recalcule les occurences de tags: Si votre migration est déjà faite, executez juste cette requête :

UPDATE tags
        SET
        `count`=
           (SELECT COUNT(image_id)
           FROM image_tags
           WHERE image_tags.tag_id=tags.id 
           GROUP BY tags.id)

Attention, shimmie utilise l'ID 1 lorsque l'utilisateur est anonyme, ce qui correspond au premier utilisateur de danbooru.

INSERT INTO `config` (`name`,`value`) VALUES ("anon_id",-1) ON DUPLICATE KEY UPDATE value=-1

Remplissez les variables de configuration et roulez jeunesse.

Détails techniques :

  • Importe les utilisateurs (pas les mots de passe par contre)
  • Importe les tags et aliases
  • régénéré les miniatures
  • copie les images dans les bons répertoires
  • importe les commentaires des images
J'ai converti une base de 8000 images environ en un quart d'heure. Il est possible de conserver les mots de passe avec quelques modifications pour que Shimmie puisses les utiliser.

J'ai aussi un patch de liaison avec SMF qui permet d'utiliser les login/pass de SMF et de gérer les commentaires dans le forum.

samedi, 12 février 2011

Hashage et signatures

Les données corrompues

En informatique, on est souvent amené à traiter les données. compression avec pertes, compression sans perte, chiffrement (en cryptogtraphie)

Lors de la transmission d'une grande quantité de données, on peut être amené à vouloir vérifier qu'il n'y a pas eu de dommages lors du transfert ou du stockage sur un support physique.

  • L'une des méthode les plus basique est l'ajout d'un bit de parité, mis à 1 lorsque le nombre de bits présent dans les données à transmettre est impair. Très facile à implémenter, il peut s'avérer insuffisant si trop de données sont corrompues.
  • On utilisera alors des algorithmes plus complexes, tel que le crc qui peux détecter de manière plus fiable si des données sont corrompues. On le voit généralement lors de l'utilisation de CD-ROM rayés ou endommagés.
  • Il est même possible de pouvoir corriger des erreurs éventuelles avec les codes correcteurs dans le cas où une faible partie des données seraient corrompues. On les trouve non seulement sur les CD-ROM mais aussi sur usenet (fichiers Parchive) ou dans les systèmes RAID qui incluent cette redondance capable de récupérer les données corrompues.

=> Je vous conseille vivement l'utilisation de RapidCRC pour vérifier par exemple après gravure/stockage que les fichiers n'ont pas été corrompus en ayant préalablement mis le CRC dans le nom du fichier.

 

Les données corrompues intentionnellement

 

Un autre aspect est le problème des dommages intentionnel qui peuvent apparaitre sur les données. Une personne mal intentionnée serait alors capable de modifier les données sans que le système qui détecte la corruption ne s'en rende comptes.

  • On utilisera alors des algorithmes plus évolués qui rendront très difficile la modification intentionnelle, au cout de calculs supplémentaires et d'une augmentation de la taille de la "signature".
  • Il existe plusieurs algorithmes plus ou moins fiables, les plus connus étant md5 et sha128.

=> Si vous distribuez des fichiers sur votre site web par exemple, vous pouvez donner les signatures md5 correspondantes. (on pourra voir par exemple le fichier md5sums de bigbuckbunny.org qui avec le logiciel rapidCRC permet de vérifier que les autres fichiers ne sont pas corrompus, intentionnellement ou pas.)

 

La protection des mots de passe

 

Ces algorithmes ont permis d'améliorer la sécurité dans le stockage des mots de passe : En effet, la "signature" permet de vérifier que les données transmises n'ont pas été modifiées, mais ne permettent pas de les connaitre. On pourra donc utiliser la signature du mot de passe d'un utilisateur, et la comparer à la signature du mot de passe fourni lors de son authentification pour vérifier que les mots de passe sont identique, sans pouvoir les connaitre.

On pourrait alors penser à utiliser la "signature" md5 d'un mot de passe, mais un gros inconvénient apparait : l'attaque par table arc-en-ciel qui consiste à chercher dans une liste pré-calculée et optimisée d'une grande taille (prévu pour tenir sur un DVD généralement) de signatures si un mot de passe corresponds. Une parade est alors d'inclure une donnée supplémentaire qui sera mixée avec et stockée en supplément : un sel.

Cette contre-mesure empêche donc l'attaque par table rainbow, mais il reste un problème : md5 et sha128 sont prévu pour pouvoir facilement vérifier la signature de fichiers, qui peuvent atteindre plusieurs centaines de Mo. Mais ils peuvent, à l'aide des processeurs actuels et les processeurs de carte graphiques adaptés calculer la signature de plein de mots de passe potentiels par force brute en l'espace de quelques jours et avec les technologies de type CUDA, c'est encore plus rapide!

On passe alors à de nouveaux algorithmes dont le but est de demander plus de calculs afin de ralentir l'attaque par force brute, au point qu'une attaque par force brute ne prendrais pas quelques jours mais quelques centaines de siècles, et qui se paient même le luxe de pouvoir définir manuellement le niveau de complexités pour s'adapter à la montée en puissance incessante de nos ordinateurs. Grosso modo, on aurait par exemple, md5 qui calcule la signature d'un film en quelques dizaines de secondes, et des mots de passe en quelques microsecondes, et crypt qui calcul un mot de passe en dixièmes de secondes (vous pouvez donc vérifier le mot de passe d'un utilisateur qui s’authentifie en quelques dixièmes de secondes, où une attaque par force brute serait alors inefficace).

=> Pour protéger les mots de passe de vos utilisateurs, utilisez l'une des deux fonctions prévues pour: password-hash ou crypt

Edit:

Suite à une discussion avec Axel et aux problèmes de compatibilité entre différents systèmes, je vous rappelle que la fonction crypt génère des hash contenant un identifiant d’algorithme utilisé et qu'il est donc possible avec un autre logiciel de pouvoir utiliser la même authentification alors que les mots de passe hashés avec un algorithme perso ne le permettent pas. 

Enfin, vu le succès et les défauts d'OpenID ainsi que les autres méthodes d'authentification, il reste encore beaucoup de travail dans la gestion de l'authentification des utilisateurs.

mercredi, 2 février 2011

IPv6

L'IANA viens d'assigner ses deux dernier bloc d'adresses ipv4 et les différents RIR fonctionnent désormais sur leurs réserves.

"Un bloc d'adresse IPv4 entre dans un bar : 'Un CIDR bien fort s'il vous plait, je suis épuisé.'" (source)

La seule solution est donc un passage au Minitel 2.0.

Enfin, pour ceux qui veulent retourner au minitel. Pour les autres, l'alternative consiste à passer à IPv6, qui pour résumer :
  • Dispose de beaucoup plus d'adresses.
  • Gère le QOS (les discussions et jeux auront une priorités supérieur au streaming qui aura une priorité supérieur au téléchargements, évitant ainsi les coupures et saccades.
  • Gère nativement l’encryption afin d'éviter d'avoir recours à des protocoles dédiés comme ssh, sftp et https qui dans certains cas peuvent êtres complexes.
  • S'auto-configure.
  • Et quelques autres détails intéressants...

Qu'est-ce qui nous attends alors?

Testez votre connectivitée IPv4 et IPv6 ici : http://ipv6-test.com/

Si votre FAI ne peut vous fournir une connectivité ipv6, ou si votre switch/routeur/point d'accès wifi, ainsi que votre OS et vos logiciels ne supportent pas ipv6, vous ne verrez pas de problème dans l'immédiat.

Par contre les problèmes vont apparaître au fil du temps :
  • Impossible d'utiliser Skype ou tout logiciel de VoIP avec certaines personnes.
  • Impossible de jouer à certains jeux avec certaines personnes.
  • Impossible de se connecter à son poste en contrôle distant (VNC, ssh, administration de NAS)
  • Impossibilité de se connecter à certains serveurs/sites web
Et ces problèmes vont perdurer en s'aggravant jusqu'à ce que l'on supporte tous IPv6 et on en a pour quelques années.
En fait, ipv4 et ipv6 sont incompatibles.
  • Si vous supportez les deux, vous n'aurez aucun problème.
  • Si vous n'êtes qu'en ipv4, vous ne pourrez pas parler à quelqu'un en ipv6 directement (a moins de passer par un serveur disposant d'ipv4 ET ipv6)
  • Si vous n'êtes qu'en ipv6, vous allez regretter de voir aussi peu de serveurs compatibles ipv6 et de ne pouvoir vous connecter directement à certaines personnes.
Certains FAI iront sûrement utiliser des méthodes pourries comme du NAT à leurs niveau, vous faisant partager votre adresse IP avec d'autres client. Personnellement, je n'y crois pas trop vu les systèmes de sécurités basés sur l'adresse IP et aux délires supplémentaires que ça provoquerait à la Hadopi.

En tout cas, si ça ne fonctionne pas, n'hésitez pas à vous plaindre à votre FAI ou à changer.
Lui ne fera rien tant que vous ne lui demanderez pas car ça lui coute de l'argent et qu'il s'en fout de la concurrence chez laquelle le client n'ira pas (à 15KM d'un DSLAM, le RTC et l'ADSL à 200ms de ping n'est pas un concurrent pour Numéricable).
Les clients ne sont pas assez informés, l'état étant plus préoccupés par le fait que certains riches pourraient perdre de l'argent à cause du piratage, de la concurrence déloyale et du manque d'action face à des entreprises qui bougent leurs cul (certes, leurs systèmes ont des DRM et sont imparfaits, mais il proposent autre chose qu'une technologie vieille de 30ans).

Et pourtant, le problème est grave:
- La neutralité du net est fragile, surtout lorsqu'elle est géré par des fournisseurs à but lucratif et sans scrupules et non plus par les militaires, universités ou associations.
- Des opérateurs téléphoniques limitent Internet et ne vous donne accès qu'au web (http et https parmi des milliers de services possibles : IRC, MSN, jeux, email ...), essayant même de vous faire payer pour les e-mails.
- Et proposent des forfaits minitel débiles donnant accès à 3 sites internet parmi les milliard de milliards disponibles sur internet.
- Ils pourraient même faire des offres mobiles IPv6 uniquement avec IPv4 en option pour avoir plus d'Internet.
Neutralité du net
Bientôt, on pourra rajouter : Adresse IPv4 pour vous connecter à l'Old Internet.

Ne tombez pas dans leur piège, demandez un accès au réseau des réseaux, pas un accès au minitel.

Plus d'informations ici : https://www.apnic.net/community/ipv4-exhaustion






- page 6 de 8 -