Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CryptFS : Avancement du projet #31

Merged
merged 20 commits into from
Aug 7, 2022
Merged

CryptFS : Avancement du projet #31

merged 20 commits into from
Aug 7, 2022

Conversation

nathan-rabet
Copy link
Owner

@nathan-rabet nathan-rabet commented Aug 7, 2022

CryptFS

Le système de fichiers a très bien avancé. Actuellement, la partie création de système pure est terminée. Il manque l'interfaçage avec le système.

Système de fichiers : mélange entre FAT et LUKS

Le système de fichiers que j'ai développé est fortement inspiré des systèmes FAT et LUKS.

Je ne vais pas trop rentrer dans le détail ici (vous pouvez déjà regarder un peu le code situé dans include/cryptfs.h), mais grosso modo le FS possède une table FAT un peu améliorée (en fait les FATs sont chaînées entre elles, ce qui permet d'en avoir une infinité) et possède une couche de chiffrement AES. Le chiffrement/déchiffrement du FS ne se fait qu'avec une seule clé symétrique (bien évidement), mais la clé en question est répliquée dans plusieurs blocs (des blocs d'utilisateurs), où elle est chiffrée avec du RSA (chaque utilisateur va chiffrer la clé AES avec sa clé publique pour stocker le digest directement sur le disque hôte, puis va déchiffrer ce digest avec sa clé privée).

Nouvel interfaçage : FUSE au lieu de VFS en tant que module noyau.

Afin de rendre le développement plus facile, j'ai décidé de développer une première version du système de fichier sous FUSE.

Pour le moment, je n'ai pas implémenté l'interfaçage, mais j'ai préparé tout le projet pour cette finalité (élagage des Makefiles, suppression des VMs, ...)

DOs & DONEs

  • Logiciel de formatage d'un disque en format CryptFS.

Utilisable en lançant la commande make formater.

  • Générations des clés de chiffrement (RSA & AES) lors du formatage.

Se référer au fichier source code/core/crypto/crypto_format.c.

  • Lecture et écritures dans les blocs du périphériques.

Se référer au fichier d'en-tête include/block.h.

  • Lire, écrire, rechercher & créer une table FAT.

Se référer au fichier d'en-tête include/fat.h.

  • Implémenter l'interfaçage avec FUSE (création de dossiers/fichiers chiffrés, lecture déchiffrée, lecture/écriture des métadonnées d'un fichier/dossier, ...).

L'implémentation de toutes les fonctions pouvant être longue, on peut imaginer une première version ne supportant que les syscalls les plus importants (open, read, write, readdir, stat, ...).

  • Implémenter le chiffrement/déchiffrement à la volée.

Ce point est intimement lié au précédent, mais je préfère le souligner ici pour être sûr de ne pas l'oublier.

  • Écrire de la documentation.

Obviously..

Tests

Tout le code que j'ai produit à été testé avec le framework Criterion.

Les tests sont disponibles dans tests/criterion.

En ce qui concerne FUSE, la réalisation des tests pourra peut-être être un peu compliquée.

Néanmoins, je vous demande, dans la mesure du possible, de tester toutes vos fonctions.

@nathan-rabet nathan-rabet added the feature New feature or request label Aug 7, 2022
@nathan-rabet nathan-rabet added this to the 🔙 Project pivoting milestone Aug 7, 2022
@nathan-rabet nathan-rabet merged commit d2ff0a8 into dev Aug 7, 2022
@HyperLan-git
Copy link
Collaborator

Problèmes de compilation : Dépréciation de OpenSSL v1 exemple, remplacer par ceci

@HyperLan-git
Copy link
Collaborator

TODO : augementer la taille de l'offset du bootloader

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature New feature or request
Projects
Development

Successfully merging this pull request may close these issues.

2 participants