Skip to content
GitLab
Explorer
Connexion
S'inscrire
Navigation principale
Rechercher ou aller à…
Projet
S
Simulation de signatures électroniques
Gestion
Activité
Membres
Labels
Programmation
Tickets
Tableaux des tickets
Jalons
Wiki
Code
Requêtes de fusion
Dépôt
Branches
Validations
Étiquettes
Graphe du dépôt
Comparer les révisions
Extraits de code
Compilation
Pipelines
Jobs
Planifications de pipeline
Artéfacts
Déploiement
Releases
Registre de paquets
Registre de conteneur
Registre de modèles
Opération
Environnements
Modules Terraform
Surveillance
Incidents
Analyse
Données d'analyse des chaînes de valeur
Analyse des contributeurs
Données d'analyse CI/CD
Données d'analyse du dépôt
Expériences du modèle
Aide
Aide
Support
Documentation de GitLab
Comparer les forfaits GitLab
Forum de la communauté
Contribuer à GitLab
Donner votre avis
Conditions générales et politique de confidentialité
Raccourcis clavier
?
Extraits de code
Groupes
Projets
Afficher davantage de fils d'Ariane
Noémie Nicaise
Simulation de signatures électroniques
Validations
e160227f
Valider
e160227f
rédigé
4 years ago
par
Séverine Mersch-Mersch
Parcourir les fichiers
Options
Téléchargements
Correctifs
Plain Diff
Upload New File
parent
ceb15e86
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
Modifications
1
Masquer les modifications d'espaces
En ligne
Côte à côte
Affichage de
1 fichier modifié
README.md
+439
-0
439 ajouts, 0 suppression
README.md
avec
439 ajouts
et
0 suppression
README.md
0 → 100644
+
439
−
0
Voir le fichier @
e160227f
# Simulation de signatures électroniques dans le contexte de l’archivage numérique
Cette simulation se base sur le mémoire
*
Signature électronique et
archivage : les enjeux de la préservation à long terme de la signature
électronique
* réalisé par **Séverine Mersch-Mersch et Noémie Nicaise*
*
à l'UCLouvain
(promoteurs Yves Deville et Aurore François).
### Licence
Cette œuvre est placée sous licence GNU General Public Licence v3.0 (cf. fichier LICENCE)
## Setup
Afin de pouvoir lancer cette simulation et avoir accès à l'interface,
les étapes suivantes sont à réaliser :
-
télécharger le répertoire GitHub;
-
utiliser un programme compatible avec le language Python;
-
installer le package tkinter;
-
exécuter la fonction main du fichier
*Simulation.py*
, une
fenêtre comme celle ci-dessous va s'ouvrir.
!
[
Interface de la simulation
](
simulation_interface.png
)
-
Pour adapter la compréhension et la vitesse des répercussions, il est possible de
changer la durée de validité des certificats, à la fois ceux des clients et des autorités
d’horodatage et de certification. Ce paramètre est modifiable dans le fichier Python
GlobalVariables.py.
## Introduction
Cette simulation permet d'avoir une vue globale et une maîtrise totale sur
ce qui est réalisable dans le cadre de la préservation des signatures
électroniques et les conséquences qui en découlent : créer des prestataires de services de confiance
(autorité de certification et d'horodatage), créer des certificats,
révoquer des certificats, créer des signatures basiques, les augmenter
grâce à l'ajout d'horodatages ou de métadonnées, et vérifier la
validité de signatures. Une dernière action réalisable est l'archivage
d'un document. Cette action donne toute la confiance au système
d'archivage autonome qui va automatiquement préserver les documents
signés, pour qu'à n'importe quel instant dans le futur, chaque document
puisse être vérifié.
La suite explique d'abord les actions réalisables par les différents intervenants (le système d'archivage,
les prestataires de services de confiance ainsi que les clients).
Ensuite, elle décrit plus en détail l'implémentation même de notre simulation.
Enfin, elle passe en revue plusieurs scénarios afin d'illustrer l'utilisation de l'interface.
## Actions réalisables
### Création de prestataires
Tout d'abord nous pouvons créer deux types de prestataires de services
de confiance.
Le premier est une
**autorité de certification**
. Celle-ci a pour but
de créer des certificats, mais aussi de les révoquer (pour simuler une
fraude par exemple), et de les associer aux clients demandeurs afin
que ceux-ci y aient accès sur base de leurs identifiants.
En encodant le nom de l'autorité qu'on veut former et en appuyant sur
le bouton
*valider*
, nous créons une autorité de certification,
contenant sa propre identité, des clés de chiffrement, un certificat
racine, et une liste de révocation, au départ vide, qui contiendra
les certificats révoqués qu'elle a fournis.
Le second prestataire de service de confiance que nous pouvons créer
est une
**autorité d'horodatage**
. Celle-ci a pour but de créer des
horodatages sur n'importe quelle information afin d'en garantir
l'intégrité sur un certain laps de temps. En précisant un nom pour ce
prestataire et pour l'autorité de certification, nécessaire à la
formation de son certificat, une autorité d'horodatage est créée et
permet la production d'horodatages qualifiés.
### Certificat : création, révocation et suppression
À partir d'une autorité de certification, il est possible de créer un
**certificat**
pour un client. En encodant l'identité du client et de
l'autorité de certification auquel il désire se rapporter, l'autorité
lance le processus de création d'un certificat : après avoir vérifié
l'identité du client, il génère un certificat et des clés de chiffrement
pour ce client. La clé privée est uniquement en la possession du client, tandis
que la clé publique est présente dans son certificat.
Après avoir créé un certificat, l'interface répond en fournissant son
identifiant unique. Si par la suite on désire
**révoquer**
ce
certificat, il suffit d'encoder son ID et l'autorité de certification
auprès de laquelle ce certificat a été créé. De cette manière, le
certificat apparaît dans la liste de révocation de l'autorité de
certification et ne peut plus être utilisé pour signer.
Il est aussi possible de
**supprimer**
un certificat, c'est-à-dire de
ne plus conserver, au sein de l'autorité de certification, les
informations relatives à celui-ci. Notons que ceci est réalisable à
n'importe quel instant dans notre simulation, pour pouvoir en constater les conséquences
sur les différents types de signatures, mais en réalité, tant que le
certificat n'est pas expiré depuis un certain temps, une autorité de
certification se doit de conserver ces données.
### Signature d'un document
Tout client, dès lors qu'il possède un certificat, peut apposer sa
signature sur un document, en spécifiant son nom et le fichier à
signer. Ce processus vérifie d'abord que le client demandeur existe,
que son certificat n'est ni révoqué ni expiré et que le document n'a
pas été signé au préalable. Ensuite, il crée une signature de type
**basique**
sur le document, grâce au certificat et à la clé privée
du client. Cette signature comporte une date, mais qui n'est pas
un attribut signé et donc, qui n'est pas protégée.
### Augmentation d'une signature
Dès lors qu'une autorité d'horodatage existe, il est possible de créer
des
**horodatages**
. Ceux-ci sont utilisés pour l'augmentation de
signature.
Ainsi, pour créer une
**signature horodatée**
, il faut spécifier le chemin
vers le fichier comportant déjà une signature basique et l'autorité
d'horodatage pour qu'elle ajoute un horodatage à la signature basique, si
cette dernière est valide. L'ensemble forme une signature horodatée.
Quant à la
**signature LT**
, il ne faut que lui préciser le chemin vers le fichier.
Le processus commence par vérifier que le document comporte une
signature horodatée, et vérifie si celle-ci est valide. Si c'est le
cas, le processus recherche, chez la ou les autorités de
certification, les certificats complets liés à la signature basique
et à l'horodatage, ainsi que leurs informations de révocation. Tous
ces éléments sont ajoutés à la signature horodatée pour former une
signature LT.
Finalement, pour devenir une
**signature LTA**
, il faut préciser une
autorité d'horodatage en plus du chemin vers le fichier, pour la même raison
que la signature horodatée. Le processus vérifie que la signature
du document est de type LT ou LTA, puis vérifie si cette dernière
est valide. Si c'est le cas, il ajoute non seulement le certificat
lié au dernier horodatage ajouté, mais aussi les informations de
révocation de ce certificat. Enfin, il ajoute un nouvel
horodatage sur l'ensemble. Le tout forme une signature LTA.
Il est ensuite possible d'ajouter un nouvel horodatage sur une
signature LTA pour former une nouvelle signature LTA. Le nombre
d'ajouts, et donc de nouvelles signatures LTA, est indéfini, mais
limité par la capacité de stockage.
### Vérification d'un document signé
L'action qui nous intéresse le plus est la
**vérification**
d'un
document signé. Celle-ci est la plus complexe et parcourt l'ensemble
des données reprises dans la signature pour découvrir et vérifier sa
validité. Le processus effectué reprend les validations des
différentes classes de signature, reprise par la norme ETSI EN EN 319
102-1, de manière simplifiée. En conséquence, cette action permet de
certifier que le document original et sa signature sont intègres.
Pour un document comportant une signature basique, il s'agit
uniquement de vérifier la validité du certificat (qu'il soit intègre,
ni révoqué, ni expiré) et puis, de vérifier que la valeur de la
signature corresponde bien au document.
Pour un document comportant une signature horodatée, il faut d'abord
vérifier l'horodatage : qu'il soit intègre et que son certificat soit
valide. Ensuite, il faut vérifier la validité du certificat signant.
Dans ce cas-ci, il ne peut être expiré, mais il peut être révoqué,
si la date de révocation se situe après l'ajout de l'horodatage. En
effet, ce cas montre la plus-value d'une signature horodatée : la
signature reste valide même si le certificat est révoqué.
Pour un document comportant une signature LT, la vérification est
identique à la signature horodatée, sauf qu'au lieu d'aller chercher
les informations des certificats et de leurs révocations aux
autorités de certification correspondantes, ces informations sont
directement dans la signature LT.
L'avantage est donc que si les autorités de certification n'ont pas
gardé les informations des certificats (des certificats périmés
depuis une longue durée par exemple, afin d'en stocker moins, ou pour
d'autres raisons), les informations sont tout de même obtenues.
Enfin, pour un document comportant une signature LTA, il faut
d'abord vérifier que le dernier horodatage apposé soit intègre, et
que son certificat soit valide. Ensuite, il s'agit de traverser
toutes les couches d'horodatage en vérifiant qu'ils étaient valides
(intègre et certificat valide) au moment de l'ajout de l'horodatage
suivant. Pour ceci il faut utiliser les informations des certificats et de
révocation directement présentes dans la signature. En dernier lieu,
il faut vérifier que la signature basique et le certificat signant
sont valides au moment de l'apposition du premier horodatage.
### Archivage
La dernière action possible est d'ajouter un document, signé au
préalable (à n'importe quel niveau), au
**système d'archivage autonome**
.
Pour ce faire, il suffit d'entrer le chemin vers le fichier qu'on
désire archiver, et d'appuyer sur la touche
*valider*
.
Le système d'archivage fait en sorte de préserver lui-même le
document. Si ce n'est pas déjà fait, il commence par augmenter
la signature jusqu'à obtenir une signature LTA. Au fur et à mesure du
temps, avant que les certificats des horodatages expirent, il
ajoute une nouvelle couche LTA. Les autorités de certification et
d'horodatage fournissant le nécessaire à la création de ces nouvelles
couches changent quant à elles de certificat régulièrement, avant
que leur certificat expire. Dans notre simulation, l'autorité de
certification utilise son certificat racine, possédant une durée de
validité supérieure aux autres, pour signer d'autres certificats.
De plus, une autorité de certification ne peut renouveler son
certificat racine.
## Classes
### SignatureBasique
Un objet
**SignatureBasique**
contient le type de chiffrement utilisé,
les informations à signer, la valeur de la signature, l'identifiant du
certificat signant ainsi qu'une information non signée : la date et
l'heure de sa création.
### Certificat
Un objet
**Certificat**
contient un numéro de série, l'autorité de
certification l'ayant créé, une clé publique, de quoi identifier le
propriétaire du certificat, sa date et heure de création et de fin de
validité, ainsi qu'une signature de son AC permettant de prouver
son intégrité.
### Horodatage
La classe
**Horodatage**
permet de lier des informations à une source
de temps fiable et de protéger ces deux éléments. Ceux-ci, ajoutés à un
numéro de série, forment
***TST_info***
, qui est la structure de
données protégée par un objet
**SignatureBasique**
. Tous ces éléments sont
les attributs d'un objet
**Horodatage**
.
### AutoriteCertification
La classe
**AutoriteCertification**
est capable de créer des
certificats. Il a une identité et des clés (une privée et une publique)
lui permettant de signer des certificats. Sa clé publique est présente
dans son propre certificat, qui pour cette simulation, sera toujours un
certificat racine, soit signé par sa propre clé privée. Cette classe
peut également révoquer un certificat et possède donc une CRL, qu'elle
peut partager avec d'autres utilisateurs. Elle peut aussi
*supprimer*
un certificat, c'est-à-dire le retirer de ses certificats.
### AutoriteHorodatage
La classe
**AutoriteHorodatage**
permet de créer des horodatages. De
la même façon que la classe
**AutoriteCertification**
, elle possède une
identité, une paire de clés et un certificat. Celui-ci n'est par contre
pas un certificat racine, mais un certificat créé par une
**AutoriteCertification**
.
> Les classes suivantes représentes les différents types de signatures,
> hormis la signature basique, présentée précédemment
### SignatureHorodatee
La classe
**SignatureHorodatee**
contient un objet de type
**SignatureBasique**
en plus d'un de type
**Horodatage**
.
### SignatureLT
La classe
**SignatureLT**
contient non seulement un objet de type
**SignatureHorodatee**
, mais aussi des données de validations, soit
les certificats complets et leurs informations de révocation.
### SignatureLTA
La classe
**SignatureLTA**
, contient soit une
**SignatureLT**
soit une
**SignatureLTA**
, y ajoute les données de validation de l'horodatage
précédent (certificat complet et informations de révocation) et
protège l'ensemble par un nouvel horodatage.
### Document
Un document est représenté par la classe
**Document**
, qui contient
deux informations : le chemin vers le fichier et une signature,
initialement non définie. Il est donc possible de signer
*basiquement*
un document, ainsi que de l'augmenter avec les différentes fonctions
pour transformer sa signature en signature horodatée, LT ou LTA.
##Scénarios
Pour donner des exemples, et pouvoir visualiser plus facilement
l’utilité de l’interface, nous donnons ici plusieurs séquences
d’actions à réaliser et les résultats qui en découlent.
### Scénario 1 : Étapes vers la création d'une signature LTA
À travers ce scénario, vous pouvez suivre toutes les étapes pour avoir
un document signé LTA, et vérifier, à chaque étape, la validité du
document.
1.
Créer une autorité de certification avec comme nom
*MonAC*
.
En réponse, l'interface vous dit que l'autorité a été créée, et
le moment auquel son certificat racine expirera.
2.
Créer une autorité d'horodatage avec comme nom
*MonAH*
et comme
autorité de certification
*MonAC*
, qui lui fournit des clés et un
certificat.
En réponse, l'interface vous dit que l'autorité a été créée, le
numéro de série ID de son certificat, et le moment auquel ce
dernier expirera.
3.
Créer un client avec comme nom
*Client1*
, et comme autorité de
certification
*MonAC*
, qui lui fournit des clés et un certificat.
En réponse, l'interface vous dit que le client a été créé, le numéro
de série ID de son certificat, et le moment auquel ce dernier
expirera.
4.
Signer un fichier en indiquant le client
*Client1*
et le chemin
vers le fichier à signer. Supposons ici qu'il y ait un fichier
*MonFichier.txt*
.
Plusieurs réponses de l'interface sont possibles :
-
en cas de fichier non existant, elle vous le fait savoir;
-
si jamais le certificat du
*Client1*
a expiré, elle vous
prévient que ce n'est pas possible de le signer. Pour résoudre
ce problème, il est possible de changer le certificat du
*Client1*
,
en en redemandant un à n'importe quelle autorité de certification,
par exemple
*MonAC*
,
-
si tout est en ordre, l'interface vous répond que le document
*MonFichier.txt*
a été signé.
À ce stade, il est possible de vérifier le document signé
*MonFichier.txt*
. Si le certificat du client n'a pas expiré (et qu'il n'a pas été révoqué intentionnellement à l'aide de l'interface),
l'interface répond que la signature basique du fichier
*MonFichier.txt*
est valide. Si au contraire, il a expiré,
l'interface vous dit que la signature basique est invalide.
5.
Augmenter la signature basique pour devenir une signature horodatée,
en précisant
*MonFichier.txt*
et
*MonAH*
pour demander un horodatage.
Si la signature basique a pu être validée et que le certificat de
l'autorité d'horodatage est toujours valide, l'interface vous
prévient que la signature a été augmentée. Dans le cas contraire,
elle vous indique la raison de l'échec d'augmentation; si
l'autorité d'horodatage n'existe pas, si le document n'a pas de
signature, si le fichier se trouve déjà dans le système d'archivage,
si la signature basique est invalide, si le certificat de
l'horodatage a expiré ou encore s'il a été révoqué.
À ce stade, il est possible de vérifier le document signé
*MonFichier.txt*
. Si ni le certificat du client, ni celui de
l'autorité d'horodatage n'ont expiré, l'interface répond que la
signature horodatée du fichier
*MonFichier.txt*
est valide. Dans le
cas contraire, l'interface vous dit que la signature horodatée du
fichier est invalide.
6.
Augmenter la signature horodatée pour devenir une signature LT,
en précisant
*MonFichier.txt*
.
Si la signature horodatée a pu être validée, l'interface vous
prévient que la signature a été augmentée. À nouveau, dans le cas
contraire, elle vous indique la raison de l'échec d'augmentation.
À ce stade, la vérification du document donne les mêmes résultats
qu'à l'étape précédente. En effet, le seul ajout revient aux
informations de validation. La différence se remarque donc
uniquement si les informations des certificats ne sont plus
disponibles auprès de l'autorité de certification, car la signature
LT les contient malgré tout dans sa structure.
7.
Augmenter la signature LT pour devenir une signature LTA,
en précisant
*MonFichier.txt*
et
*MonAH*
pour ajouter un horodatage.
Si la signature LT a pu être validée, l'interface vous prévient
que la signature a été augmentée. À nouveau, elle vous indique la
raison en cas d'échec d'augmentation.
8.
Augmenter à l'infini la signature LTA en précisant
*MonFichier.txt*
et
*MonAH*
pour ajouter des horodatages indéfiniment. Avant chaque
ajout, la validité de la signature précédente est vérifiée.
9.
Vérifier le document en indiquant
*MonFichier.txt*
. Cette
vérification consiste à vérifier la dernière signature LTA et la
concordance entre tous les horodatages. Étant donné que l'ajout
d'une couche de LTA est refusé en cas de couche précédente invalide,
la seule raison qui pourrait invalider cette signature est si le
certificat du dernier horodatage a expiré ou a été révoqué.
### Scénario 2 : Révocation de certificats
Voyons maintenant ce qu'il se passe lorsqu'on révoque des certificats
en reprenant le scénario 1.
Prenons d'abord le certificat signant, soit le certificat pour la
création de la signature basique et non ceux nécessaires pour les
horodatages.
-
Si, avant que le
*Client1*
signe
*MonFichier.txt*
(étape 4), le
certificat est révoqué, la signature basique ne peut être créée.
-
Si le certificat est révoqué après la formation de la signature
basique, en essayant de valider le document, l'interface répond
que la signature est invalide. Par la suite, si on essaye d'augmenter la signature vers une
signature horodatée, l'interface ne le fait pas, étant donné
qu'elle vérifie d'abord si la signature basique est valide.
-
Par contre, si le certificat est révoqué après l'ajout d'un
horodatage (étape 5), la validation de cette signature
est acceptée. En effet, une signature horodatée prouve que la
signature a été faite avant la révocation et donc la validation est
acceptée.
-
Ainsi pour toutes les étapes suivantes, en cas de révocation
ultérieure du certificat, il n'y a pas de conséquence sur la
validité.
Ensuite, si on révoque les certificats liés aux horodatages, cela
invalide la signature seulement si le certificat est révoqué avant
l'ajout d'une nouvelle couche d'horodatage.
-
Si on révoque le certificat de l'horodatage après avoir créé la
signature horodatée, celle-ci ne peut plus être validée. Le
processus d'augmentation en signature LT ne s'effectue donc pas.
-
Si on révoque le certificat après avoir créé la signature de type LT,
cette signature est invalide. En effet, bien que la validation de
la signature se fasse grâce aux informations présentes dans la
signature elle-même (qui ne contiennent donc pas l'information de
révocation du certificat, car créée avant la révocation), une
vérification particulière s'ajoute. Il s'agit de vérifier que les
informations de révocation sont assez récentes, c'est-à-dire
qu'elles n'ont pas changé.
Dans ce cas, la signature ne peut donc pas être augmentée.
-
Si on révoque le certificat du premier horodatage après avoir créé
la signature de type LTA, la validation de cette signature est
acceptée si un certificat différent (et donc non révoqué) a été
utilisé pour former l'horodatage de cette signature LTA.
-
Si on révoque le certificat de l'horodatage de la dernière couche
LTA, la signature devient instantanément invalide. Il faut donc
bien avoir ajouté une couche LTA avant que l'horodatage précédent
ne soit révoqué.
### Scénario 3 : Expiration de certificats
Le cas de l'expiration des certificats est presque identique à leur
révocation. La seule distinction est la différence de validation de
signature dans le cas de certificats révoqués ou expirés.
Au final, ceci implique que les signatures sont valides en cas
d'expiration dans les mêmes cas que la révocation, à l'exception du
cas où le certificat est expiré après l'ajout du premier horodatage
(étape 5).
La validation de cette signature n'est pas acceptée, car une
signature horodatée ne peut protéger contre l'expiration, selon la
norme ETSI EN 319 102-1.
### Scénario 4 : Utilisation de l'archivage automatique
Il est possible, à partir de l'étape 5 du scénario 1 (après que le
document soit signé) et pour toutes les étapes suivantes (après de
multiples augmentations de signature), de déposer le document signé
sur le système d'archivage : tant que la signature liée au document
est valide, c'est accepté.
De cette manière, le système d'archivage ajoute en permanence
des couches LTA et met à jour le certificat de son autorité
d'horodatage (avant qu'il expire), afin qu'à tout instant dans le
futur, il soit possible de demander une validation du document et
que celle-ci soit une réussite.
Ce diff est replié.
Cliquez pour l'agrandir.
Aperçu
0%
Chargement en cours
Veuillez réessayer
ou
joindre un nouveau fichier
.
Annuler
You are about to add
0
people
to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Enregistrer le commentaire
Annuler
Veuillez vous
inscrire
ou vous
se connecter
pour commenter