-
Notifications
You must be signed in to change notification settings - Fork 0
/
README.tex
91 lines (66 loc) · 4.03 KB
/
README.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
\documentclass[conference]{IEEEtran}
\usepackage[utf8]{inputenc}
\usepackage{algorithm}
\usepackage{algorithmic}
\title{Automatisation d'algorithmes de chiffrement}
\author{
\IEEEauthorblockN{Pigassou Mathis\IEEEauthorrefmark{1}}
\IEEEauthorblockA{UFR Informatique, Université Toulouse Capitole, France\\
Email: [email protected]}
}
\begin{document}
\maketitle
\begin{abstract}
Comment cacher efficacement une information à n'importe quel gouvernement ?
\end{abstract}
\begin{IEEEkeywords}
Chiffrement, OpenSSL, KeePassXC
\end{IEEEkeywords}
\section*{Introduction}
La sécurité des processus de chiffrement présentés ici repose principalement sur deux facteurs. Le premier est l'inviolabilité des algorithmes qui les composent, par des ordinateurs non quantiques. Le second est la répétition du chiffrement avec, pour chaque itération, une clé de chiffrement différente.
\section{Méthodologie}
Par processus de chiffrement, on entend un script Shell associé à un (par exemple AES) ou plusieurs algorithmes de chiffrement (par exemple Lucie). L'automatisation porte sur ces processus.
\subsection{Fonctionnement}
Après avoir reçu le fichier à chiffrer, le script crée un répertoire dans une base de données KeePassXC (.kdbx) qui contiendra les différentes clés générées lors du chiffrement. Le déchiffrement accèdera à ces clés pour le processus inverse, puis supprimera le dossier. Les clés sont générées à l'aide du générateur de KeePassXC avec environ 13 000 bits d'entropie.
\subsection{Stockage}
L'accès à cette base de données doit être restreint et protégé de manière multidimensionnelle : d'abord avec un mot de passe maître, un fichier clé stocké sur une clé USB, et une YubiKey.
\section{Installation}
\subsection{Dépendances}
\begin{minted}[fontsize=\small, frame=lines]{Bash}
brew install KeePassXC; brew install openssl@3
\end{minted}
\section{Configuration}
Un répertoire contient deux scripts : l'un pour le chiffrement (AES.sh) et l'autre pour le déchiffrement (AESR.sh).
\subsection{Symétrique}
Chaque script doit pouvoir accéder aux variables :
- `KEYFILEPATH` : chemin d'accès vers la base de données,
- `YUBIKEY` : numéro du slot configuré et son identifiant (par exemple 2:13528435)
- `DBPATH` : chemin d'accès à la base de données.
Ces variables sont modifiables dans la partie **Set Up** du script.
\subsection{Asymétrique}
Le chiffrement nécessite uniquement la clé publique de la personne à qui transmettre l'information. La variable `PUBLICKEY` doit contenir le chemin d'accès vers cette clé. Inversement, `PRIVATEKEY` contiendra le chemin d'accès vers la clé privée du récepteur.
\begin{algorithm}[H]
\caption{Génération de clés RSA}
\label{alg:RSA}
\begin{minted}[fontsize=\small, frame=lines, breaklines, breakanywhere]{Bash}
openssl genpkey -algorithm RSA -out ~/desktop/ClePrive.pem -pkeyopt rsa_keygen_bits:4096
openssl rsa -pubout -in ~/desktop/ClePrive.pem -out ~/desktop/ClePublique.pem
\end{minted}
\end{algorithm}
\begin{algorithm}[H]
\caption{Génération de clés Diffie-Hellman}
\label{alg:DH}
\begin{minted}[fontsize=\small, frame=lines, breaklines, breakanywhere]{Bash}
openssl ecparam -name prime256v1 -genkey -noout -out ~/desktop/ecdh_private.pem
openssl ec -in ~/desktop/ecdh_private.pem -pubout -out ~/desktop/ecdh_public.pem
\end{minted}
\end{algorithm}
\section{Usage}
Chaque script doit être rendu exécutable avec la commande suivante :
\begin{minted}[fontsize=\small, frame=lines, breaklines, breakanywhere]{Bash}
chmod u+x <script_path.sh>
\end{minted}
Certains algorithmes comme **FRANCK** ne peuvent pas être utilisés en temps raisonnable sur de gros fichiers (+10 Mo). Cependant, ils peuvent être utiles pour chiffrer une clé privée.
\section*{Conclusion}
La sécurité parfaite n'existe pas. Même si ces scripts offrent un niveau de complexité suffisant, les algorithmes implémentés par OpenSSL comme RSA ne résistent pas à l'algorithme de Shor.
\end{document}