From 3395cc5ca55c9d7731e09c7ed2b97b38b6609d3d Mon Sep 17 00:00:00 2001 From: William MAILLARD Date: Tue, 19 Dec 2023 23:49:05 +0100 Subject: [PATCH] doc: correct some spelling error --- doc/rapport.pdf | Bin 1967876 -> 1967512 bytes doc/rapport.tex | 81 +++++++++++++++++++++++------------------------- 2 files changed, 38 insertions(+), 43 deletions(-) diff --git a/doc/rapport.pdf b/doc/rapport.pdf index 24fc76b0e26faa5c75060a38d42256f8f1ab1848..e8ae2fb80c7ee8c0f3a57611ab467f3f1e4b7a9e 100644 GIT binary patch delta 53583 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∋} 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 BIQRen delta 53688 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 liW?aS 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%0DLIf)C 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 diff --git a/doc/rapport.tex b/doc/rapport.tex index a00aa35..4aa7ac3 100644 --- a/doc/rapport.tex +++ b/doc/rapport.tex @@ -43,7 +43,7 @@ linkcolor=blue, filecolor=magenta, urlcolor=cyan, - pdftitle={Intéropérabilité-AlpesTransport}, + pdftitle={Sécurité - OTP}, pdfpagemode=FullScreen, } \urlstyle{same} @@ -218,10 +218,10 @@ %% définitions et introduction Un \textcolor{myblue}{mot de passe à usage unique}, désigné sous l'acronyme anglais \textcolor{myblue}{\otp} dans la suite de ce rapport, -est une séquence d'au moins \textcolor{mygreen}{six chiffres} ou caractère généré à partir d'une \textcolor{mygreen}{clé privé} et d'une \textcolor{mygreen}{donnée itérative} +est une séquence d'au moins \textcolor{mygreen}{six chiffres} ou caractères générée à partir d'une \textcolor{mygreen}{clé privé} et d'une \textcolor{mygreen}{donnée itérative} afin de \textcolor{myblue}{valider une action} utilisateur comme par exemple une authentification ou une transaction bancaire. - Ces codes sont soit généré avec une \textcolor{myblue}{application} dite 'authenticator' soit \textcolor{myblue}{envoyé} à l'utilisateur cherchant + Ces codes sont soit générés avec une \textcolor{myblue}{application} dite 'authenticator' soit \textcolor{myblue}{envoyés} à l'utilisateur cherchant à valider une action par courriel ou message. Ces codes sont donc générés par un moyen que \textcolor{mygreen}{seul l'utilisateur concerné possède}.\\ @@ -270,13 +270,13 @@ \section{Exemple d'utilisation d'\otp dans le 2FA} - Comme expliqué dans l'introduction les \otp sont utilisé dans le \textcolor{myblue}{protocole de double authentification} 2FA visant à vérifier que \textcolor{mygreen}{l'utilisateur possède quelque chose} en plus de vérifier la connaissance de son mot de passe.\\ + Comme expliqué dans l'introduction les \otp sont utilisés dans le \textcolor{myblue}{protocole de double authentification} 2FA visant à vérifier que \textcolor{mygreen}{l'utilisateur possède quelque chose} en plus de vérifier la connaissance de son mot de passe.\\ - Dans cette partie nous allons ainsi nous intéressé aux \textcolor{myblue}{application 'authenticator'} permettant de générer des \otp en étudiant dans un premier temps quels sont les \textcolor{mygreen}{mécanismes} à mettre en place \textcolor{mygreen}{pour activer le 2FA}. + Dans cette partie nous allons ainsi nous intéresser aux \textcolor{myblue}{applications 'authenticator'} permettant de générer des \otp en étudiant dans un premier temps quels sont les \textcolor{mygreen}{mécanismes} à mettre en place \textcolor{mygreen}{pour activer le 2FA}. Puis, dans un second temps, nous verrons comment l'\otp permet de \textcolor{myblue}{valider l'authentification} de l'utilisateur dans le contexte du 2FA, et \textcolor{myblue}{les variantes} que constituent \textcolor{mygreen}{\hotp} et \textcolor{mygreen}{\totp} . - Et enfin nous déduirons de ces exemples les paramètres à prendre en compte pour palier les \textcolor{myblue}{désynchronisation de génération d'\otp} entre le client et le serveur. + Et enfin nous déduirons de ces exemples les paramètres à prendre en compte pour palier les \textcolor{myblue}{désynchronisations de génération d'\otp} entre le client et le serveur. %% ***** Partage de seed ***** %% @@ -286,20 +286,20 @@ Ainsi lorsque l'utilisateur active le 2FA sur son compte le serveur va créer et \textcolor{mygreen}{communiquer une clé secrète} au client avant de lui même \textcolor{myblue}{stocker} cette valeur. Cette clé va servir de \textcolor{myblue}{graine}, ou seed en anglais, à la \textcolor{myblue}{génération d'\otp\ identiques} du côté du client et du serveur permettant à ce dernier d'attester l'identité du premier.\\ - Le \textcolor{myblue}{partage} de cette clé secrète est réalisé à travers la génération d'un \textcolor{mygreen}{QRcode} par le serveur et le scanne de ce dernier par le client utilisant une application 'authenticator' comme freeOTP. L'exemple ci-dessous montre le contenus d'un exemple de QRcode généré pour activer le 2FA d'un compte github.\\ + Le \textcolor{myblue}{partage} de cette clé secrète est réalisé à travers la génération d'un \textcolor{mygreen}{QRcode} par le serveur et le scanne de ce dernier par le client utilisant une application 'authenticator' comme freeOTP. L'exemple ci-dessous montre le contenu d'un exemple de QRcode généré pour activer le 2FA d'un compte github.\\ \begin{figure}[H] \centering \includegraphics[scale=0.5]{img/1/1/qrcode.png} \includegraphics[scale=1]{img/1/1/qrcode-content.png} - \caption{Exemple de QRcode contenant une seed partagé par le serveur\\} + \caption{Exemple de QRcode contenant une seed partagée par le serveur\\} \label{fig:2fa-qrcode} \end{figure} \noindent -Nous pouvons donc en déduire qu'une \textcolor{myblue}{url de partage de seed} pour l'algorithme \otp est constitué des éléments suivants: +Nous pouvons donc en déduire qu'une \textcolor{myblue}{url de partage de seed} pour l'algorithme \otp est constituée des éléments suivants: \begin{itemize} \item un \textbf{protocole} : \textcolor{mygreen}{otpauth://} \item la \textbf{variante d'\otp} utilisée : /totp ou /hotp (expliqué dans la partie suivante) @@ -318,7 +318,7 @@ %% ***** génération et variantes d'otp ***** %% \subsection{Génération et variantes d'\otp} - Maintenant que le client et le serveur possèdent une \textcolor{mygreen}{donné commune}, ils leurs manquent un \textcolor{myblue}{moyen de créer des codes à usage unique} à partir de cette clé privée. Cela est le rôle de la \textcolor{mygreen}{donnée incrémentale}. La valeur de cette donnée dépend de la variante d'\otp choisie. + Maintenant que le client et le serveur possèdent une \textcolor{mygreen}{donnée commune}, ils leurs manquent un \textcolor{myblue}{moyen de créer des codes à usage unique} à partir de cette clé privée. Cela est le rôle de la \textcolor{mygreen}{donnée incrémentale}. La valeur de cette donnée dépend de la variante d'\otp choisie. \subsubsection{\hotp} @@ -338,12 +338,12 @@ Ainsi l'algorithme \hotp nécessite une \textcolor{myblue}{synchronisation constante du compteur} entre le client et le serveur. -Néanmoins une \textcolor{myblue}{désynchronisation} peut se produire du fait que le client incrémente le compteur à chaque fois qu’il veut créer un code sans savoir s’il a été accepté par le serveur, c’est-à-dire que le serveur à lui aussi incrémenter son compteur.\\ +Néanmoins une \textcolor{myblue}{désynchronisation} peut se produire du fait que le client incrémente le compteur à chaque fois qu’il veut créer un code sans savoir s’il a été accepté par le serveur, c’est-à-dire que le serveur à lui aussi incrémenté son compteur.\\ \begin{figure}[H] \centering \includegraphics[scale=0.80]{img/1/2/hotp-desync.drawio.png} - \caption{\hotp : exemple de désynchronisation\\} + \caption{\hotp : exemple de désynchronisation du compteur \hotp\\} \label{fig:hotp-desync} \end{figure} @@ -363,11 +363,11 @@ \subsubsection{\totp} La deuxième variante d'\otp est appelé \totp -qui est l'acronyme de \textcolor{myblue}{'Time-based \otp'} et qui se traduit par '\otp basé sur le temps'. Il utilise donc un timestamp, plus particulièrement \textcolor{mygreen}{le temps `\textsc{unix}} correspondant au nombre de secondes écoulé depuis le premier janvier 1970, comme donnée incrémentale. +qui est l'acronyme de \textcolor{myblue}{'Time-based \otp'} et qui se traduit par '\otp basé sur le temps'. Il utilise donc un timestamp, plus particulièrement \textcolor{mygreen}{le temps `\textsc{unix}} correspondant au nombre de secondes écoulées depuis le premier janvier 1970, comme donnée incrémentale. -Le temps \textsc{unix} à été choisi car il est disponible sur la grande majorité des appareils qui tourne sous linux, et en particulier les téléphones mobiles androïde et apple qui sont utilisé dans la plupart des cas.\\ +Le temps \textsc{unix} à été choisi car il est disponible sur la grande majorité des appareils qui tourne sous linux, et en particulier les téléphones mobiles androïde et apple qui sont utilisés dans la plupart des cas.\\ -Le \textcolor{myblue}{délai temporel} nécessaire pour générer un nouveau code est généralement fixé à \textcolor{mygreen}{30 secondes} et commence au début d'une nouvelle minute précise. Par exemple, pour les instants de génération, le premier code est associé à 00:00, le deuxième à 00:30, le troisième à 01:00, et ainsi de suite. Ainsi, lorsque l'algorithme doit générer un nouveau code, il \textcolor{myblue}{arrondit le temps vers le bas} jusqu'à l'instant le plus proche marqué par les secondes \textcolor{myblue}{00 ou 30}. +Le \textcolor{myblue}{délai temporel} nécessaire pour générer un nouveau code est généralement fixé à \textcolor{mygreen}{30 secondes} et commence au début d'une nouvelle minute précise. Par exemple, pour les instants de génération, le premier code est associé à \texttt{00:00}, le deuxième à \texttt{00:30}, le troisième à \texttt{01:00}, et ainsi de suite. Ainsi, lorsque l'algorithme doit générer un nouveau code, il \textcolor{myblue}{arrondit le temps vers le bas} jusqu'à l'instant le plus proche marqué par les secondes \textcolor{myblue}{00 ou 30}. De ce fait le client et le serveur utilisent le temps courant de leur système arrondis afin de générer un \otp, comme l'illustre le schéma ci-dessous @@ -396,7 +396,7 @@ \end{figure} - Ainsi on peut définir une \textcolor{mygreen}{marge temporelle} afin que le serveur compare aussi le code \otp reçus avec le code \otp précèdent + On peut donc définir une \textcolor{mygreen}{marge temporelle} afin que le serveur compare aussi le code \otp reçu avec le code \otp précèdent qui rentre dans la marge temporelle, afin de rendre l'utilisation du protocole d'authentification plus fluide pour le client. @@ -420,7 +420,7 @@ \end{figure} - Finalement, si la \textcolor{myblue}{resynchronisation est un succès}, c'est à dire les n codes généré par le client ont été validés par le client, + Finalement, si la \textcolor{myblue}{resynchronisation est un succès}, c'est à dire les n codes générés par le client ont été validés par le client, le serveur peut \textcolor{mygreen}{mettre à jour son compteur} par rapport au dernier \otp reçu. Dans le cas où la \textcolor{myblue}{resynchronisation est un échec} le serveur ne met pas son compteur à jour et \textcolor{mygreen}{attend de nouveau un \otp} @@ -439,11 +439,11 @@ Il est intéressant de noter que l'utilisation d'\otp peut aussi permettre d'effectuer une \textcolor{myblue}{authentification bidirectionnelle} permettant au client et au serveur de \textcolor{mygreen}{vérifier leurs identités mutuellement}. -En effet, en vérifiant chacun leurs tour un \otp reçue de l'autre partie, ils vont chacun pouvoir \textcolor{myblue}{attester de la connaissance +En effet, en vérifiant chacun leurs tour un \otp reçue de l'autre partie, ils vont respectivement pouvoir \textcolor{myblue}{attester de la connaissance de la clé privé par chacun}. Ce protocole d'authentification bi-directionnelle se compose donc des étapes suivantes -(en supposant que le client et le serveur ne présente pas de problèmes de synchronisation traités ci-dessus) : +(en supposant que le client et le serveur ne présentent pas de problèmes de synchronisation traités ci-dessus) : \begin{enumerate} \item Le client génère \textcolor{red}{OTP-C1} et l'envoie au serveur \item Le serveur reçoit \textcolor{red}{OTP-C1} et génère \textcolor{red}{OPT-S1}, @@ -490,10 +490,10 @@ La seed est une \textcolor{myblue}{donnée privée} connu uniquement du client et du serveur dont la \textbf{\textcolor{myblue}{création}}, la \textbf{\textcolor{myblue}{communication}} et le \textbf{\textcolor{myblue}{stockage}} vont être des points critiques à la \textcolor{mygreen}{sécurité de l’algorithme}. Il est conseillé de prendre une \textcolor{myblue}{clé de même taille que la sortie de la fonction de hachage} utilisée par la méthode \hmac pour garantir l’\textcolor{mygreen}{interopérabilité} entre les systèmes, -c'est à dire utilisé une taille fixe qui ne dépend pas de la représentation d'un type (int, float, char, ...) faîte par un système et ainsi limiter les problèmes de compatibilité +c'est à dire utiliser une taille fixe qui ne dépend pas de la représentation d'un type (int, float, char, ...) faîte par un système et ainsi limiter les problèmes de compatibilité sous-jacent. -Voici des exemple de taille de clé conseillé selon la fonction de hachage donnée en paramètre de la méthode \hmac : +Voici des exemple de taille de clé conseillés selon la fonction de hachage donnée en paramètre de la méthode \hmac : \begin{description} \item[SHA-1] 160 bits \item[SHA-256] 256 bits @@ -525,17 +525,17 @@ \paragraph*{Génération déterministe\\} -La deuxième méthode est elle aussi divisé en deux catégories. +La deuxième méthode est elle aussi divisée en deux catégories. Soit on va utiliser une \textcolor{myblue}{unique Master Key} \textcolor{mygreen}{($MK$)} générée avec une méthode évoquée précédemment afin d’en \textcolor{myblue}{dériver une seed} pour chaque client, en utilisant une \textcolor{mygreen}{donnée publique} de ce dernier comme par exemple un numéro de série \textcolor{mygreen}{($i$)}. -La seed est ensuite calculé en faisant un XOR entre la master key et la donnée client, puis en calculant le hash de cette valeur. +La seed est ensuite calculée en faisant un XOR entre la master key et la donnée client, puis en calculant le hash de cette valeur. \textcolor{red}{$$ k_i = SHA-1(MK \oplus i) $$} Soit on utilise \textcolor{myblue}{une Master Key par client} \textcolor{mygreen}{($MK_i$)} et on utilise également une donnée \textcolor{mygreen}{$j$} du client pour \textcolor{myblue}{dériver une seed}. -Chaque appareil est donc associé à un couple \textcolor{mygreen}{$(i,j)$} afin de retrouver la seed associée. +Chaque client est donc associé à un couple \textcolor{mygreen}{$(i,j)$} afin de retrouver la seed associée. \textcolor{red}{$$ k_{ij} = SHA-1(MK_i \oplus j) $$} @@ -705,7 +705,7 @@ Pour réaliser ce prototype nous avons choisi d'utiliser \textcolor{mygreen}{python} et la \textcolor{mygreen}{librairie flask} pour le frontend. Dans un premier temps, La librairie \textcolor{mygreen}{pyotp} qui implémente l'algorithme \otp a été utilisé pour accélérer le développement, puis nous avons décider de créer \textbf{\textcolor{mygreen}{notre propre implémentation de l'algorithme \otp}} selon les étapes expliqués dans la partie précédente.\\ - Cette section vise donc à expliquer les \textbf{choix de conceptions} réalisés pour l'implémentation de l'algorithme et de montrer au lecteur comment \textcolor{myblue}{mettre en place une authentification à double facteurs} dans une application, dont les captures d'écran des différentes pages peuvent être consulté dans l'annexe-\ref{ann:app}. + Cette section vise donc à expliquer les \textbf{choix de conception} réalisés pour l'implémentation de l'algorithme et de montrer au lecteur comment \textcolor{myblue}{mettre en place une authentification à double facteurs} dans une application, dont les captures d'écran des différentes pages peuvent être consulté dans l'annexe-\ref{ann:app}. @@ -722,11 +722,11 @@ \item[config\_\*.py] Ces fichiers contiennent des \textcolor{myblue}{paramètres globaux} de l'application telle que la taille des codes \otp générés. \item[helpers.py] - Ce fichier contient les méthods générales pour créer les pages d'\textcolor{myblue}{affichages d'information} aussi bien pour le serveur que pour le client, ce qui nous permet d'éviter la redondance de code. + Ce fichier contient les méthodes générales pour créer les pages d'\textcolor{myblue}{affichage d'informations} aussi bien pour le serveur que pour le client, ce qui nous permet d'éviter la redondance de code. \item[myOTP.py] - Ce fichier contient l'\textcolor{myblue}{implémentation personnelle} de génération de code \otp\ , c'est à dire les fonctions \textcolor{mygreen}{hmac}, \textcolor{mygreen}{troncation}, et la \textcolor{mygreen}{gestion du pas temporelle} de 30 secondes pour les \totp\ . + Ce fichier contient l'\textcolor{myblue}{implémentation personnelle} de génération de codes \otp\ , c'est à dire les fonctions \textcolor{mygreen}{hmac}, \textcolor{mygreen}{troncation}, et la \textcolor{mygreen}{gestion du pas temporelle} de 30 secondes pour les \totp\ . \item[share\_\ seed.py] - Ce fichier contient les fonctions de \textcolor{myblue}{génération de QRcode} afin de partager la seed à une application comme \textcolor{mygreen}{freeOTP Authenticator-\ref{fig:freeotp}} afin que l'utilisateur puisse générer ses codes sur son propre appareil. + Ce fichier contient les fonctions de \textcolor{myblue}{génération de QRcode} afin de partager la seed à une application comme \textcolor{mygreen}{freeOTP Authenticator-\ref{fig:freeotp}} pour que l'utilisateur puisse générer ses codes sur son propre appareil. \item[/client et /server] Ces répertoires contiennent la logique pour les url respectives '/client/' et '/server'.\\ \end{description} @@ -744,7 +744,7 @@ %% ***** pyotp ***** %% \subsection{Utilisation de pyotp} -La librairie \textbf{pyotp} est utilisé pour générer les seed avec la fonction \textbf{random\_base32} qui selon la documentation effectue un tirage aléatoire dans une liste prédéfinie afin d'obtenir une seed. +La librairie \textbf{pyotp} est utilisée pour générer les seed avec la fonction \textbf{random\_base32} qui selon la documentation effectue un tirage aléatoire dans une liste prédéfinie afin d'obtenir une séquence aléatoire. \begin{figure}[H] \centering @@ -757,13 +757,13 @@ %% ***** implémentation personnelle ***** %% \subsection{Implémentation personnelle de l'algorithme \otp} -Cette section présente une \textbf{capture d'écran des fonctions implémentées} pour la réalisation d'un algorithme générant des \totp et \hotp en python afin de les répertoriées dans ce rapport et \textbf{rendre leurs consultation plus accessible}. Ainsi elle n'apportera pas plus d'explication par rapport aux explications précédentes et aux commentaires présent dans le code. +Cette section présente des \textbf{captures d'écran des fonctions implémentées} pour la réalisation d'un algorithme générant des \totp et \hotp en python afin de les répertorier dans ce rapport et \textbf{rendre leurs consultation plus accessible}. Ainsi elle n'apportera pas plus d'explications par rapport aux explications précédentes et aux commentaires présent dans le code. \begin{figure}[H] \centering \includegraphics[scale=0.8]{img/C_proto/code/code_share_seed.png} - \caption{Création d'un uri et d'un QRcode pour le partage de la seed\\} + \caption{Création d'une URI et d'un QRcode pour le partage de la seed\\} \label{fig:code-round-time} \end{figure} @@ -813,7 +813,7 @@ \end{figure} - +\newpage %% ***** mise en place du 2FA ***** %% \subsection{Mise en place du 2FA dans une application} @@ -846,11 +846,13 @@ \begin{itemize} \item Faille sécurité partage de la seed \item Faille pour le partage via SMS/mail (fishing, interception de SMS) - \item Code de 6 chiffres => brute force si pas de limite de tmps fixé (généralement double le temps d’attente à chaque code erroné) - \item Vols de recovery codes (code donnée à l'utilisateur après l'activation du 2FA pour le bypass avec un de ces codes en cas de perte de sa possession) + \item Code de 6 chiffres => brute force si pas de limite de temps fixé (généralement double le temps d’attente à chaque code erroné) + \item Vols de recovery codes (codes donnés à l'utilisateur après l'activation du 2FA pour outrepasser cette étape avec un de ces codes en cas de perte de sa possession) \end{itemize} -Il est donc conseillé de fixer un \textcolor{mygreen}{paramètre d’étranglement} pour limiter le nombre de tentatives autorisées par utilisateur. Ou alors un \textcolor{mygreen}{schéma de délais} pour qu'après chaque tentative de connexion, le serveur attend \textcolor{mygreen}{A*T secondes} pour répondre (T souvent 5s). +Il est donc conseillé de fixer un \textcolor{mygreen}{paramètre d’étranglement} pour limiter le nombre de tentatives autorisées par utilisateur. + +Ou alors un \textcolor{mygreen}{schéma de délais} pour qu'après chaque tentative de connexion, le serveur attend \textcolor{mygreen}{A*T secondes} pour répondre (T souvent 5s). On estime la sécurité de l'algorithme \otp mis en place avec la formule suivante : @@ -963,7 +965,7 @@ \pagenumbering{roman} % Retour à la numérotation arabe pour le reste du document \setcounter{page}{1} % Réinitialisation du compteur de page à 1 -`\section{Vocabulaire} + \section{Vocabulaire} \begin{center} \begin{tabular}{|m{3cm}|m{8cm}|} @@ -1002,13 +1004,6 @@ - - - - - - -\newpage \section{Références} % Ajuste la hauteur des lignes dans le tableau