Archive for the ‘confiance’ Category

Tuer l’ordinateur pour le sauver – 2

Vendredi, mars 15th, 2013

Il est encore aujourd’hui difficile de dire quel est le principal problème dans l’architecture de nos systèmes d’information. Il est d’ailleurs fort probable que ce soit un cumul de plusieurs causes qui rendre l’ensemble du SI si difficile à sécuriser. La conséquence, c’est que nous avons bien du mal à endiguer des attaques toujours plus complexes et nombreuses malgré les moyens considérables que nous déployons. Ces moyens sont de plusieurs ordres : financiers, organisationnels, humains et technologiques.

Est-ce la façon qu’on nos machines de communiquer sur l’internet qui est à revoir ?
A cette question, il est très tentant de répondre oui. Il faut filtrer, segmenter. Si l’on bloque l’internet mondial en le fermant au niveau des frontières, on résoudra une grande partie des problèmes. Mais on ne résoudra pas vraiment les vraies causes de nos problèmes. Cela ne fera que réduire la portée des conséquences. Et, en faisant cet enclavement, je pense que l’on ne fait que repousser à plus tard la résolution de ces problèmes.
Il faut peut-être plus simplement revoir comment nos machines communiquent et modifier la pile réseau. Mais cela ne tient pas compte des autres moyens de communication comme les périphériques de stockage amovibles.

Est-ce l’architecture de nos machines qui est vulnérable ?
Les attaques sur le SI ont de multiples formes parce qu’elles ont autant de buts différents. Le réseau est rarement la cible d’une attaque, alors qu’un serveur est une cible de choix. Et le serveur est une cible exposée si il veut remplir son rôle : servir. Les attaques sur les serveurs sont toujours passées par les interfaces, les entrées/sorties. Mes ces attaques n’ont de raison d’être que parce que le serveur est un objet actif, interactif. Et cette activité siège avant tout dans le processeur.
Le processeur permet l’exécution du code des programmes et notamment le système d’exploitation. Tous les systèmes d’exploitations actuels ont un (ou plusieurs) compte ou pseudo compte super-administrateur, qu’il s’appelle root ou SYSTEM. Or, le processeur ne sait pas reconnaître un compte. Il se contente d’exécuter le système d’exploitation qui, lui, contient toute la logique d’exploitation des comptes et de séparation des privilèges. Qu’est ce qui garantie aujourd’hui l’intégrité de cette logique ? Pas grand chose. Les élévations de privilèges sont courantes suite à des attaques.
D’un autre côté, le système d’exploitation repose sur un ordonnanceur. Celui-ci permet de répartir le temps de calcul du processeur entre les différents programmes, et donc de faire du multitâches entre les applications. Mais le processeur lui-même est fondamentalement monotâche. Le processeur dispose aussi d’un mécanisme, le RING, mais les systèmes d’exploitation ne l’exploitent qu’à moitié. La séparation entre les différents programmes est de fait artificielle parce que logiciel, et donc faible.
On en arrive à une aberration conceptuelle. Le super-utilisateur a plus de pouvoir sur le système que l’utilisateur qui manipule ses données, ce qui est normal. Mais ce qui l’est moins, c’est qu’il a aussi plus de pouvoir sur les données de l’utilisateur que ce dernier. En l’état de la technologie actuelle, le problème de confidentialité est insoluble sauf à considérer que l’utilisateur est le super-utilisateur. Et c’est sans compter les élévations de privilèges.
Et dire qu’un utilisateur est super-utilisateur de son système est aujourd’hui reconnu comme une aberration. La boucle est bouclée.

Le projet nebule est un premier pas vers une solution. Il est encore trop tôt pour savoir si c’est le début de la bonne solution. On permet à l’utilisateur de se réapproprier ses données. Malheureusement, l’architecture actuelle des machines ne permet pas de protéger efficacement l’identité d’une entité une fois déverrouillée, c’est à dire une fois la clé privée chargée en mémoire. Le super-utilisateur peut directement lire cette clé en mémoire. Aucune protection de prévaut dans ce cas, quelque soit sa complexité. Certes, il faut corrompre ce super-utilisateur… mais c’est justement ce qui est fait lors de la plupart des attaques informatiques actuelles.

CF : Tuer l’ordinateur pour le sauver

Le maître des poupées et le gardien de l’enfer

Mercredi, février 27th, 2013

1/Le maître des poupées

Le maître des poupées, alias puppetmaster, vient de révoquer son ancienne incarnation :

63864e42204080051f524d5be0171920e0117a0e83d2131ac506ce3cbff7f1f4

Contrairement à ce qui avait été annoncé, c’est un lien de type d qui à été utilisé, et non un lien de type u. Ceci pour un problème de sécurité. Ainsi son ancienne incarnation ne peut pas révoquer ce type de lien… et ressusciter.
Le détail ici : puppetmaster.nebule.org/l/63864e42204080051f524d5be0171920e0117a0e83d2131ac506ce3cbff7f1f4

D’autres anciennes incarnations ont elles aussi été révoquées, à la fois pour la clé publique et la clé privée :
70668497b6a0ad481aa7e0c08131bc0d0be40cd7dde30a7de8613290d7c35543 puppetmaster (priv)
9e85d7d25af97760f8611b85c2765912606c7eec8307dc58c7782e34cc373c18 cerberus (pub)
905296b7070b8e7d601d9509893683d072bb22083006a9e545ceaf0228787c8c cerberus (priv)
d756efe28847a3723639aed49a40f08c22a576ff3f002750a18ad6a192717621 kronos (pub)
5f951d41db3b18001fbc8baf895d84cb4d460a6143b273b4f5b2d0e9b0d5c67b kronos (priv)

Dans le même temps, puppetmaster a reconnu plusieurs nouvelles entités :
01351dd781453092d99377d94990da9bf220c85c43737674a257b525f6566fb4 cerberus cerberus.nebule.org
abdbaa31e404463ecc644f1eecdeb9b5f94428eb140fa5c66a7687ee96ed47aa kronos kronos.nebule.org
975571a8a470a6d975662e284f5ef1bd0396c06b31a2207b81bef2e24c5bf0c5 stéphane stephane.nebule.fr
Voir le détail ici : puppetmaster.nebule.org/l/88848d09edc416e443ce1491753c75d75d7d8790c1253becf9a2191ac369f4ea

2/Le gardien de l’enfer

Le gardien de l’enfer, alias cerberus, vient d’être régénéré en tant que :

01351dd781453092d99377d94990da9bf220c85c43737674a257b525f6566fb4
cerberus.nebule.org

Il est reconnu par puppetmaster. cf Cerberus et la mise en quarantaine d’objets.

Pour son rôle spécifique, il dispose de deux objets spécifiques :
nebule/danger
nebule/warning

Actuellement, les enfers n’ayant pas encore officiellement ouverts, cette entité est au chômage.
Seul le temps nous dira pour combien de temps…

Autorité temporaire : le maître des poupées

Mercredi, février 27th, 2013

Une entité avait été généré en novembre 2012. Elle avait pour rôle de simuler une autorité de haut niveau. Voir l’article Autorité temporaire.

Le bi-clé de cette entité n’ayant pas été généré et manipulé dans des conditions spartiates de sécurité, il était difficile d’avoir pleinement confiance en cette entité.
Il fallait donc régénérer une nouvelle entité de façon plus propre.

Une machine a été installée de façon renforcée, et est prévue pour être manipulée hors réseau.
Tous les systèmes ont leurs faiblesses, et ont donc un besoin récurrent de mise à jour. Le système le moins vulnérable face à l’absence prolongée de mises à jours, c’est OpenBSD. C’est aussi actuellement le système le moins vulnérable par défaut. La non utilisation du réseau réduit très fortement les problèmes potentiels. Il est cependant possible, en cas de nécessité, de réaliser une mise à jour manuelle.
Le disque dur est partiellement chiffré.

Cette machine a donc permit de générer une nouvelle entité racine.
Ce rôle est toujours temporaire. Il ne se justifie que pour coller à un modèle de sécurité actuel, basé sur des autorités racines de confiance. On ne peut faire confiance à une entité que si elle est validée par l’entité racine. Cependant, ce modèle de sécurité n’a pas vocation à subsister en l’état. Soit il y aura d’autres autorités racines, soit elles disparaîtront toutes.

Puppetmaster, le nouveau maître des poupées est identifié comme :

88848d09edc416e443ce1491753c75d75d7d8790c1253becf9a2191ac369f4ea

Et il reprend l’emplacement de l’ancien puppetmaster :

http://puppetmaster.nebule.org/

Pour l’instant, puppetmaster ne reconnaît aucune autre entité. Ce sera fait bientôt. Et le nouveau puppetmaster réformera (lien u) aussi officiellement l’ancien puppetmaster.
Le maître des poupées est mort, vive le maître des poupées!

Autorité temporaire

Jeudi, novembre 8th, 2012

Quels incidents peut-on rencontrer sur un système d’information reposant sur une cryptographie moderne ?
Et comment peut-on y répondre ?

La cryptographie est un formidable outil mathématique. Ses propriétés sont sans équivalents dans le monde réel et palpable du commun des mortels. A cause de cela, l’outil et ses usages restent abstraits et méconnus pour beaucoup de gens. Mais, loin d’être anecdotique, la cryptographie est présente partout autour de nous, dans tout ce qui est numérique. Et il ne suffit pas d’un bon discours commercial à grand renfort de sigles abstraits suivis de quelques chiffres pour que l’ensemble remplisse son rôle : sécuriser nos données.
On se connecte à un ordinateur, le mot de passe est transformé en hash. On se connecte au site web de la banque, la connexion est sécurisée. On envoie des emails chiffrés et signés. Notre ordinateur vérifie la signature des mises à jours qu’il doit appliquer, idem pour notre box internet. Notre téléphone cellulaire chiffre la conversation avec le réseau opérateur, mais pas avec notre correspondant. La puce de notre carte bancaire valide une transaction chez notre marchant de légumes. Notre réseau wifi est protégé par mot de passe. etc…

Mais au fait, n’y a-t-il vraiment que les données à sécuriser ?
L’utilisateur est au centre de ces données, celles-ci n’ont d’utilité que pour l’utilisateur légitime et pour celui qui pourrait trouver un bénéfice à les exploiter à la place de l’utilisateur légitime.

(suite…)

Collisions d’empreintes multi-algorithmique

Vendredi, septembre 7th, 2012

On peut utiliser de multiples algorithmes pour calculer l’empreinte des objets. Certains algorithmes sont plus résistants, plus fiables ou plus sûrs que d’autres. Cette résistance est représenté par l’impossibilité (relative) d’inverser la fonction algorithmique, c’est à dire de retrouver l’objet source à partir de l’empreinte. Il en découle l’impossibilité (relative aussi) de calculer une collision dans les empreintes entre deux objets, c’est à dire de calculer un objet qui a une empreinte précise, par exemple la même empreinte qu’un autre objet pré-existant. Ces impossibilités sont relatives parce qu’il sera toujours possible dans le pire des cas (pour l’attaquant) de tester toutes les combinaisons possible afin de trouver une collision, mais cela lui prendra un temps tel que c’est jugé équivalent à impossible dans l’état actuel de nos connaissances mathématiques et de nos moyens informatiques.

Première conclusion, inutile de s’attarder sur des algorithmes de prise d’empreinte triviales comme CRC qui n’ont pour vocation que de permettre une vérification extrêmement rapide de données transmises (par exemple sur la couche TCP sur IP). Ces algorithmes ne sont pas prévus pour résister aux collisions volontaires.

Seconde conclusion, rappel de principes de base en sécurité informatique, on ne doit pas utiliser des algorithmes qui sont reconnus non fiables ou pour lesquels on est sur le point de réussir des collisions. Exit donc MD5, SHA0 et SHA1 par exemple.

Jusque là, on reste en territoire connu. SHA256 est encore aujourd’hui reconnu comme sûr et ne semble pas présenter de faiblesse à moyen terme. Il peut servir sans risque intrinsèque aux premières expériences nécessitant un bon niveau de sécurité. D’autres algorithmes connus sont susceptibles d’être utilisés dans un futur proche.

Mais que ce passe-t-il si on mélange plusieurs algorithmes différents pour le calcul d’empreinte ?
Ne risque-t-on pas d’affaiblir non pas les algorithmes mais le système dans son ensemble ?

En présentant un objets sous différentes empreintes générées par des algorithmes différents, ne risque-t-on pas d’affaiblir un ou plusieurs algorithmes ?

De façon plus générale, si une faille importante est découverte dans un algorithme et que celui-ci n’est plus jugé sûr, quelles conséquences pour l’ensemble du système ?

Le groupe

Mardi, août 21st, 2012

Suite au post du 7 août.

Le groupe est une notion assez générale qui désigne un certain nombre d’objets reliés entre eux par un seul objet. Ces objets pouvant être des entités.

Il y a deux façons de l’implémenter, en fonction de ce que l’on veut en faire :
– le groupe uni-polaire
– le groupe multipolaire

(suite…)

Le groupe ?

Mardi, août 7th, 2012

Qu’est ce qu’un groupe?
On le comprend habituellement comme un groupe de personnes.

Quel est la définition du groupe?
Qui/quoi attache des personnes à un groupe?
Comme est interprété un groupe attaché à un autre groupe?
Quelle est la solidité du groupe? Sa résilience?

Comment le traduit cryptographiquement?
Comment l’intégrer à nebule?
Est-il restreint à des entités ou peut-il intégrer des objets autres?

(voir suite sur le post du 20 août)

Première ceinture

Jeudi, décembre 29th, 2011

La gestion de l’information peut, sur un premier niveau, se baser sur trois axes :

  1. objets
  2. liens
  3. confiance

(suite…)