Archives de catégorie : Sécurité

Question sur le chiffrement de disque

Voici un petit résumé de quelques questions sur le chiffrement de disque.

Question : Qu’est ce que le chiffrement de disque ?

Réponse : Le chiffrement de disque est une méthode de protection de données pour les supports de stockage possédant un système de secteur adressable (par exemple, un disque dur, une clé USB, un SSD). Le chiffrement de disque permet de chiffrer soit l’ensemble du disque dur (FDE, Full Disk Encryption) soit seulement des partitions ou des volumes. Le chiffrement de disque rend les données protégées même si elles sont lues directement à partir du disque sans passer par l’OS car chaque bit du disque ou de la partition est chiffré.

Question : Dans quel but utiliser le chiffrement de disque ?

Réponse : Il existe 2 familles de chiffrement de disque : Le chiffrement de volume et le chiffrement complet de disque.

Le chiffrement de volume à pour but d’empêcher un attaquant :

  • L’accès à certaine donnée.

Le chiffrement complet de disque (FDE) a pour but d’empêcher un attaquant :

  • L’accès à toutes les données y compris le système d’exploitation.

Continuer la lecture de Question sur le chiffrement de disque

Où en sont les GPU brute forcer ?

cudaAprès avoir essayé d’extrapoler le temps nécessaire pour casser un mot de passe avec des supercalculateur dans ce billet, puis dans celui-ci avec PBKDF2. Je vais à présent m’intéresser dans cet article à essayer de définir le temps réel qu’il faut aujourd’hui pour une machine du commerce de milieu-haut de gamme pour casser des mots de passe MD5 à l’aide de la puissance de la carte graphique et donc le GPGPU.

Voila maintenant un peu plus d’un 1 an (mai 2008) que le premier brute forcer se servant de la puissance des GPU et de l’API CUDA de NVIDIA est apparut. Ce brut forcer possède le doux nom MD5-GPU et pour la petite histoire il a été écris par un Français : Benjamin Vernoux (cocorico). Avec une 8800GT, la version 0.1 de MD5-GPU générait une puissance de 60Mhash/s, la version 0.2 qui suivit dans le même mois atteignait déjà 200MHash/s.

Continuer la lecture de Où en sont les GPU brute forcer ?

Authentification Kerberos en JNDI

La documentation officiel java au sujet de l’authentification kerberos en JNDI est très bien faite. Mais je vais quand même me faire un petit mémo à ce sujet.

Le but du jeu est de mettre en place un processus d’authentification sécurisé entre une application java sur un poste en Windows XP et un controleur de domaine active directory sur Windows 2003. Le login et mot de passe utilisé sont ceux de l’utilisateur définis dans l’AD. Tout ceci en utilisant JNDI pour les requêtes LDAP.

Il existe plusieurs méthode d’authentification sécurisé SASL pour JNDI. Je vais ici parler uniquement de l’authentification en Kerberos v5 à travers la GSSAPI.

Continuer la lecture de Authentification Kerberos en JNDI

lm-hash et nt-hash

Un petit billet sur les hash utilisé pour l’authentification locale sous Windows.

Le LM-Hash

Le lm-hash est utilisé depuis Windows 3.11 pour générer les empreintes des mot de passe d’authentification locale Windows. Son fonctionnement est du fait de son age très rudimentaire.

Un mot de passe LM-hash a 2 contraintes :

  • Il ne peut pas faire plus de 14 caractères.
  • Il ne peut contenir que des caractères ASCII imprimable : [a-zA-Z0-9 ! »#$%&'()*+,-./:;<=>?@[\]^_`{|}~].

Il fonctionne ainsi :

Continuer la lecture de lm-hash et nt-hash

Active directory : Allow log on localy

Je veux que seulement un groupe de mes utilisateurs de mon domaine active directory aient le droit de se connecter à un groupe de machine.

1 / Dans l’OU où se trouve les machines, je crée un groupe et j’associe toutes les machines à ce groupe : gp_toto_computers.

2 / Dans l’OU où se trouve mes users, je crée un groupe et j’associe tous les users concerné à ce groupe : gp_toto_users.

3 / Je crée une nouvelle GPO : gpo_toto_useronly. Je rattache cette GPO à mon OU de computer. Je spécifie comme filtre uniquement le groupe d’ordinateur : gp_toto_computers.

4 / J’édite la GPO. Computer Configuration > Windows Settings > Security settings > Local policies > user right assignment. Dans Allow logon localy, je rajoute mon groupe d’utilisateurs gp_toto_users et les administrateurs.

5 / Je force la GPO : gpupdate /force. Si cela ne suffit pas je redémarre la machine.

Et a présent, en faisant un gpresult on peut voir le résultat sur un ordinateurs du groupe ciblé.

PBKDF2 et génération des clés de chiffrement de disque

Dans mon billet sur les flops et le temps pour casser un password par brute force. Je prenais uniquement en compte la puissance en FLOPS sans prendre en compte le type de hash et les itérations. J’ai récemment parlé dans un billet du temps nécessaire à un supercalculateur pour casser un mot de passe issus d’une fonction de hash. En partant du postulat : 1 FLOPS = 1 hash. A présent je vais essayer de calculer le temps nécessaire à ce même supercalculateur pour casser une clé réalisé non pas seulement un hash mais avec une fonction de type PBKDF2.

Le PBKDF2 (Password-Based Key Derivation Function) est une fonction de dérivation de clé qui est implémenté dans la majorité des logiciel de chiffrement de disque. C’est aujourd’hui la meilleure référence en matière de sécurité pour la création de clé de chiffrement. Il est basé sur ces éléments :

  • Un algorithme de HMAC (SHA512, RIPEMD, WHIRLPOOL,etc)
  • Un mot de passe
  • De la Salt pour luter contre une attaque rainbow table
  • Des itérations pour ralentir la génération de clé

Ces itérations sont très importantes car elles permettent d’accroitre considérablement le temps nécessaire au test de toutes les combinaisons d’un mot de passe. Et c’est sur cela que ce billet va se concentrer.

Je vais reprendre l’excellent travail d’explication du fonctionnement de Truecrypt de Bjorn Edstrom et ses fonctions en python. Dans un premier temps je vais chercher à générer une clé PBKDF2-PKCS#5, puis dans un second temps je vais chercher à calculer le temps qu’il faut pour la générer la clés en fonctions des différents éléments la composant.

Continuer la lecture de PBKDF2 et génération des clés de chiffrement de disque

Les FLOPS, les clés et la taille des mots de passe

En matière d’attaque par force brute il faut bien différencier l’attaque sur le mot de passe que tapent l’utilisateur et l’attaque sur la clé qui est issus du mot de passe. L’attaque par force brute consiste à utiliser une très grande puissance de calcul pour essayer toutes les combinaisons possible d’une chaine donnée. Les supercalculateurs quantique n’étant encore que des objets de recherche ils ne feront pas l’objet de cette démonstration.

Comme il a été déjà démontré, une clé s’obtient par le calcul de 3 éléments : Le mot de passe, la salt et des itérations. La présence de SALT empêche l’utilisation de rainbow table, et les itérations permettent de ralentir la génération de la clé. Ce billet ne prendra pas en compte les Itérations et le type de Hash dans le calcul du mot de passe. Cela sera fait dans un prochain billet.

Continuer la lecture de Les FLOPS, les clés et la taille des mots de passe

Rubber-hose cryptanalyse et Hidden Operating System

La rubber-hose cryptanalyse (cryptanalyse de la matraque en caoutchouc) est un euphémisme qui symbolise l’obtention de la clé de chiffrement par un moyen de coercition. Ce terme de rubber-hose a été utilisé pour la première fois en octobre 1990 par J. Marcus Ranum dans le groupe de discussion de référence en cryptologie « sci.crypt » à travers cette phrase à présent célèbre :

“…in which a rubber hose is applied forcefully and frequently to the soles of the feet until the key to the cryptosystem is discovered, a process that can take a surprisingly short time and is quite computationally inexpensive…”

Elle trouve aujourd’hui de nouveaux débouché avec l’essor du chiffrement de disque.

Aussi bien pour le chiffrement de volume que pour le chiffrement complet de disque, des volumes chiffrés peuvent être cachés dans d’autres volumes chiffrés un peu comme pour la stéganographie, on parlera alors de chiffrement stéganographique.

security

Dans le cas où des fichiers chiffrés seraient découverts, cacher des fichiers chiffrés dans d’autres fichiers chiffrés permet de ne révéler qu’une partie du secret à l’attaquant. Le propriétaire d’un volume chiffré peut donnée le mot de passe à un attaquant sans pour autant permettre à ce dernier d’accéder au fichier se trouvant dans le véritable volume caché protégé par un autre mot de passe.

Ce concept fait suite aux travaux sur la rubber-hose cryptanalyse (Dreyfus, 1997) qui ont montré qu’un moyen de coercition peut se montrer beaucoup plus efficace est moins cher qu’un parc de calculateur pour obtenir une clé de chiffrement.

A présent je vais pousser le raisonnement dans le cas de son utilisation pour caché un système d’exploitation chiffré :

Alice est une diplomate qui possède un ordinateur portable sur lequel se trouvent des informations confidentielles. L’ordinateur d’Alice est en Full Disk Encryption et possède 2 systèmes d’exploitation dans 2 partitions chiffrés:

  • Le premier SYSTEM A est le système leurre, c’est celui dont se sert alice la majeure partie de son temps quand elle n’a pas besoin d’accéder aux informations confidentielles.
  • Le second SYSTEM B est le système d’exploitation qui contient les données confidentielles, il est caché dans la seconde partition chiffré.

Son ordinateur possède 3 mots de passe :

  • Un mot de passe pour démarrer sur le SYSTEM A
  • Un mot de passe pour démarrer sur le SYSTEM B
  • Un mot de passe pour monter la partition chiffré où est caché le SYSTEM B

En fonction du mot de passe que rentre Alice au démarrage son ordinateur démarre sur le SYSTEM A ou le SYSTEM B.

Alice est enlever ainsi que son ordinateur par un groupe voulant connaitre les informations que contiens son portable. Alice donne le mot de passe du SYSTEM A, puis Alice donne le mot de passe de la seconde partition chiffré où est caché le SYSTEM B. Son ordinateur apparait au groupe comme ayant uniquement un SYSTEM A chiffré et une partition chiffré. Le SYSTEM B où se trouvent les données confidentielles n’a pas été découvert. Le groupe laisse repartir Alice pensant avoir tout découvert.

Voici comment on pourrait le représenter (issu de la doc Truecrypt):

decoyOS

Et vous l’aurez deviné c’est une fonctionnalitée disponible dans Truecrypt. Pour mettre en place un Hidden operating system cliquer ici.

DualBoot OS FDE : Windows chiffré + Linux chiffré

truecrypt-iconSuite au billet concernant la mise en place du dual-boot entre windows chiffré avec Truecrypt et Linux Ubuntu. Je m’attaque à présent au chiffrement non seulement des Windows mais aussi de linux ubuntu afin d’obtenir un dual boot windows/linux avec Full Disk Encryption.

Pour Windows je vais de nouveau utiliser Truecrypt, alors que pour Linux Ubuntu je vais utiliser dm-crypt. Ce n’est malheureusement pas exactement du Full Disk Encryption (FDE) parfait car je ne peux pas mélanger la techno de FDE de windows avec celle de linux. Il va rester la partition de boot en claire. Si vous voulez faire du FDE avec linux sans dual-boot, je vous conseil la lecture de ce tuto ou celui-ci dont j’ai dérivé les procédures pour obtenir le mien.

Je passe sur la partie explication de la gestion du multi-boot que j’avais détaillé dans mon précédent billet pour directement m’attaquer au chiffrement de Ubuntu. La principale différence repose dans le formatage et le partitionnement de Ubuntu que je vais installer cette fois ci avec le « Alternate CD » de ubuntu et non pas le CD d’installation classique. Le alternate CD va me permetre de pouvoir installer ubuntu avec des partitions chiffrées en utilisant les LVM et le tout puissant LUKS.

Continuer la lecture de DualBoot OS FDE : Windows chiffré + Linux chiffré