Dim 14/07/2013 - Actualités

Xavier
Administrateur du site
Messages : 817
Enregistré le : mer. 22 juin 2011 18:25

Dim 14/07/2013 - Actualités

Message non lu par Xavier »

Cryptage


L'unité en charge d'initialiser l'application a été partiellement réécrite, elle contenait de larges portions de code spécifiques à XT3, telles que la migration des données au format nouveau format de fichiers apparu (en 2006 !) avec XT360. La partie liée à l'initialisation de l'application est maintenant propre, il reste à retravailler le démarrage de la Barre. Ce rework était nécessaire car il était devenu très compliqué de démêler l'initialisation du cryptage qui utilise de nombreuses variables.

L'unité de cryptage a été entièrement réécrite, car elle contenait une juxtaposition des services de cryptage XT3 (conservés pour compatibilité) et les nouveaux d'XT4 qui rendaient également le debug difficile. Tout ce code est maintenant unifié, optimisé, correctement architecturé, et réduit à 500 lignes compréhensibles. (Il semble que la réécriture de pans entiers de l'application soit la seule façon de se les réapproprier totalement, les parties les plus anciennes ont 10 ans et sont toutes à réécrire...)

Les services de lecture et d'écriture des fichiers XML ont été adaptés pour gérer la clé de contrôle. Celle-ci est désormais stockée après cryptage simple. XT3 encapsulait cette chaîne de contrôle avec des clés aléatoires composés de chiffres qui représentaient en fait une faiblesse en cas d'attaque par force brute avec possession du code source.

La fenêtre de saisie du mot de passe a été légèrement travaillée, il reste à mettre une CheckBox pour afficher le mot de passe saisi.
Password.png
La Barre est désormais capable de Locker et Unlocker comme le faisait XT3. Ce système, basé sur trois états (non sécurisé, sécurisé verrouillé, sécurisé déverrouillé) avait été délicat à mettre au point à l'époque, et il a donc été jugé préférable de ne pas tenter de le modifier. A noter qu'un Lock ferme toutes les fenêtres ouvertes, à la différence d'XT3 qui ne fermait que les fenêtres des outils dont les données étaient cryptés. Le cadena en bronze d'XT3 est maintenant plaqué or. :D
Bar.png
Les premières implémentations de l'interface de cryptage se font dans l'outil Identifiants qui est le plus simple.
Pour le moment :
- Il est possible de [dé]crypter un dossier et sa descendance via le menu contextuel. Selon le mode de sécurité, le mot de passe peut être demandé.
- Les titres des dossiers protégés sont masqués, et cliquer sur eux déclenche également la fenêtre de saisie du mot de passe. Un refus de saisie du mot de passe bloque l'accès aux dossiers protégés, la demande de mot de passe se faisant dans l'évènement OnChanging qui fournit un résultat AllowChange. Si l'option Sélectionner le dernier dossier ouvert est activée et que le dossier est protégé, le mot de passe est demandé à l'ouverture de l'outil. En cas de refus, l'outil est quand même ouvert mais le dossier sélectionné est la racine (qui n'est pas cryptable).
EncryptedFolder.png

Code : Tout sélectionner

//------------------------------------------------------------------------------
// XT400 / Identifiers_Tree_OnChanging
//------------------------------------------------------------------------------
procedure TIdentifiers_Form.Identifiers_Tree_OnChanging(Sender: TObject; Node: TTreeNode; var AllowChange: Boolean);
begin
	// Acceptation selon l'état de la sécurité
	AllowChange := ((XV_SecurityMode <> 1) or (not TData(Node.Data).Encrypted) or XSK_UnlockData)
end;

Il reste certainement de nombreux cas où les Lock et Unlock devront encore être branchés avant de pouvoir optimiser le code et le porter dans les autres outils.
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Répondre