Présentation finale

This commit is contained in:
VOLPE Dorian
2023-04-03 10:10:51 +00:00
committed by TESTUD Romain
parent 6faa176e69
commit 3a7a65cb75
20 changed files with 493 additions and 324 deletions

View File

@ -1,112 +1,148 @@
% Auteur : Romain TESTUD
\begin{frame}{Les attaques}
\begin{itemize}
\item De nombreux cas d'attaque sur des CEX\footnotemark.
\item De nombreux cas d'attaque sur des CEX.
\item Des sommes importantes sont concernés.
\end{itemize}
\begin{figure}
\centering
\includegraphics[scale = 0.45]{img/attaques.png}
\label{fig:my_label2}
%\caption{caption}
\end{figure}
\footnotetext{Centralised EXchange}
\end{frame}
\begin{frame}{Wormhole}
Attaque sur le bridge entre Solana et Ethereum :
\begin{itemize}
\item Quelques heures après un correctif non déployé.
\item Exploitation d'un défaut d'implémentation.
\item La transaction de l'attaquant est signée par les gardiens.
\end{itemize}
\end{frame}
\begin{frame}{Wormhole}
\begin{block}{Fonctionnement du dépôt de jeton}
\begin{itemize}
\item Appel de plusieurs fonctions de vérification lors du dépôt.
\begin{itemize}
\item $complete\_wrapped$ $\Rightarrow$
$transfer\_message$
$\Rightarrow$ $post\_vaa$
$\Rightarrow$ $verify\_signature$
\end{itemize}
%\item Fonction complete\_wrapped appellée lors du mint de Wormhole ETH sur Solana
%\item transfer\_message en paramètre : spécifie le token et combien doit être mint, signé par les gardiens
%\item Contrat sur Solana, créé en utilisant la fonction post\_vaa qui vérifie la signature des gardiens
%\item Appel a verify\_signature qui utilise un programme de Solana pour verifier les signatures
\end{itemize}
Erreur d'implémentation dans $verify\_signature$.
\end{block}
\end{frame}
\begin{frame}{Wormhole}
\begin{block}{$verify\_signature$ appelle un programme de vérification}
\begin{itemize}
\item $Sysvar: Instructions$ : Alias du programme.
\item Vérification des signatures des gardiens.
\item Il est possible d'utiliser d'une adresse différente.
\end{itemize}
\end{block}
\begin{figure}
\centering
\includegraphics[scale = 0.3]{img/wormhole_img1.png}
\includegraphics[scale = 0.45]{centralisation/img_attaques/rekt.png}
\label{fig:rekt}
\caption{Classement des attaques par Rekt.news}
\end{figure}
\end{frame}
\begin{frame}{Wormhole}
\begin{itemize}
\item Adresse tierce entrée par l'attaquant.
\item Validation de la transaction sans signature.
\end{itemize}
\begin{figure}
\centering
\includegraphics[scale = 0.7]{img/wormhole_img2.png}
\end{figure}
\end{frame}
\begin{frame}{Nomad}
\begin{itemize}
\item Protocole d'échange entre blockchains.
\item Utilisation de smart contracts.
\item Erreur d'implémentation dans le contrat Réplica.
\end{itemize}
$\Rightarrow$ Possibilité de passer la vérification des messages.
\end{frame}
\begin{frame}{Nomad}
\begin{block}{Fonctionnement de Nomad}
\begin{frame}{Les attaques}
\begin{block}{Différentes cibles d'attaques}
\begin{itemize}
\item Les messages ont des racines.
\item Vérification de la racine lors de l'émission du message.
\item Appel de la fonction process pour vérifier et envoyer le message.
\item Plate-formes.
\item Bridges.
\end{itemize}
\end{block}
\pause
\begin{block}{Vérification}
\begin{block}{Surface d'attaque}
\begin{itemize}
\item $acceptableRoot$ : vérification de la validité de la racine du contrat.
\item Ingénierie sociale.
\item Erreurs d'implémentations.
\item Fonctions dépréciées.
\end{itemize}
\end{block}
\end{frame}
\begin{frame}{Nomad}
\begin{block}{Défaut d'implémentation}
\begin{frame}{Des raisons }%(???)
\begin{block}{Marché évolutif}
\begin{itemize}
\item La racine $0x00$ est valide.
\item La racine par défaut des messages est $0x0$
\item Evolution rapide.
\item De nombreuses innovations.
\item Manque de sensibilisation.
\end{itemize}
$\Rightarrow$ Un message avec une racine nulle est donc par défaut valide.
\end{block}
\end{frame}
\begin{frame}{Des Solutions ?}
\begin{block}{Contre-mesures}
\begin{itemize}
\item Établir des standards.
\item Réaliser des audits.
\end{itemize}
\end{block}
\pause
\begin{block}{Vers le décentralisé}
Suppression du tiers de confiance.
\end{block}
\end{frame}
\begin{frame}{Des solutions ?}
\begin{itemize}
\item Etablir des standards ?
\item Supprimer le tiers de confiance ?
\end{itemize}
$\Rightarrow$ Vers le décentralisé
\end{frame}
%\begin{frame}{Wormhole}
% Attaque sur le bridge entre Solana et Ethereum :
% \begin{itemize}
% \item Quelques heures après un correctif non déployé.
% \item Exploitation d'un défaut d'implémentation.
% \item La transaction de l'attaquant est signée par les gardiens.
%
% \end{itemize}
%\end{frame}
%
%
%\begin{frame}{Wormhole}
% \begin{block}{Fonctionnement du dépôt de jeton}
% \begin{itemize}
% \item Appel de plusieurs fonctions de vérification lors du dépôt.
% \begin{itemize}
% \item $complete\_wrapped$ $\Rightarrow$
% $transfer\_message$
% $\Rightarrow$ $post\_vaa$
% $\Rightarrow$ $verify\_signature$
% \end{itemize}
% %\item Fonction complete\_wrapped appellée lors du mint de Wormhole ETH sur Solana
% %\item transfer\_message en paramètre : spécifie le token et combien doit être mint, signé par les gardiens
% %\item Contrat sur Solana, créé en utilisant la fonction post\_vaa qui vérifie la signature des gardiens
% %\item Appel a verify\_signature qui utilise un programme de Solana pour verifier les signatures
% \end{itemize}
% Erreur d'implémentation dans $verify\_signature$.
% \end{block}
%\end{frame}
%
%\begin{frame}{Wormhole}
% \begin{block}{$verify\_signature$ appelle un programme de vérification}
% \begin{itemize}
% \item $Sysvar: Instructions$ : Alias du programme.
% \item Vérification des signatures des gardiens.
% \item Il est possible d'utiliser d'une adresse différente.
% \end{itemize}
% \end{block}
% \begin{figure}
% \centering
% \includegraphics[scale = 0.3]{img/wormhole_img1.png}
% \end{figure}
%\end{frame}
%
%\begin{frame}{Wormhole}
% \begin{itemize}
% \item Adresse tierce entrée par l'attaquant.
% \item Validation de la transaction sans signature.
% \end{itemize}
% \begin{figure}
% \centering
% \includegraphics[scale = 0.7]{img/wormhole_img2.png}
% \end{figure}
%\end{frame}
%
%
%
%\begin{frame}{Nomad}
% \begin{itemize}
% \item Protocole d'échange entre blockchains.
% \item Utilisation de smart contracts.
% \item Erreur d'implémentation dans le contrat Réplica.
% \end{itemize}
% $\Rightarrow$ Possibilité de passer la vérification des messages.
%\end{frame}
%
%\begin{frame}{Nomad}
% \begin{block}{Fonctionnement de Nomad}
% \begin{itemize}
% \item Les messages ont des racines.
% \item Vérification de la racine lors de l'émission du message.
% \item Appel de la fonction process pour vérifier et envoyer le message.
% \end{itemize}
% \end{block}
% \pause
% \begin{block}{Vérification}
% \begin{itemize}
% \item $acceptableRoot$ : vérification de la validité de la racine du contrat.
% \end{itemize}
% \end{block}
%\end{frame}
%
%\begin{frame}{Nomad}
% \begin{block}{Défaut d'implémentation}
% \begin{itemize}
% \item La racine $0x00$ est valide.
% \item La racine par défaut des messages est $0x0$
% \end{itemize}
% $\Rightarrow$ Un message avec une racine nulle est donc par défaut valide.
% \end{block}
%\end{frame}
%

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

View File

@ -11,4 +11,7 @@
\input{centralisation/wormhole.tex}
\subsection{Les attaques}
\input{centralisation/attaques.tex}
\input{centralisation/attaques.tex}
\subsection{Les limites du centralisé}
\input{centralisation/limites.tex}

View File

@ -0,0 +1,16 @@
% Auteur : Romain TESTUD
\begin{frame}{Les limites du centralisé}
\begin{itemize}
\item Manque de transparence.
\item Manque de maturité en matière de sécurité.
\item Questionnement sur le tiers de confiance
\end{itemize}
\pause
\begin{block}{Le tiers de confiance}
\begin{itemize}
\item Source d'attaques.
\item Point critique des CEX.
\end{itemize}
$\rightarrow$ Volonté de se passer d'un tiers de confiance.
\end{block}
\end{frame}

View File

@ -1,12 +1,21 @@
% Auteur : Romain TESTUD
\begin{frame}{Plate-formes d'échanges Centralisés}
\begin{block}{Plate-formes privées d'échanges de données sur blockchain}
\begin{frame}{Les plate-formes d'échanges centralisés}
\begin{block}{La solution la plus répandue}
\begin{itemize}
\item Possibilité d'échanges inter-blockchains par l'utilisation de bridges.
\item Présence d'un intermédiaire entre les utilisateurs.
\item Achat / Vente / Échange de crypto-actifs.
\item Intermédiaire entre les utilisateurs.
\end{itemize}
\end{block}
\pause
\pause
\begin{block}{Interopérabilité ?}
\begin{itemize}
\item Utilisation de bridges inter-blockchains.
\item Possibilité d'échanges entre tokens.
\end{itemize}
\end{block}
\end{frame}
\begin{frame}{Fonctionnement}
\begin{block}{Méthode de l'Order Book}
\begin{itemize}
\item Dépôt des fonds dans un porte monnaie de la plate-forme.
@ -14,38 +23,42 @@
\item Échange des IOU contre les token demandés.
\end{itemize}
\end{block}
\footnotetext{IOU (I Owe You) : Reconnaissance de dette de la plate-forme envers l'utilisateur}
%L'utilisateur place un ordre d'achat, la plateforme trouve un vendeur, l'échange s'effectue
\begin{figure}
\centering
\includegraphics[scale = 0.45]{centralisation/img_plateformes/achat-vente.png}
\label{fig:Order}
\caption{Modélisation d'un Achat-Vente}
\end{figure}
\end{frame}
\begin{frame}{Avantages et inconvénients}
\begin{block}{Avantages}
\begin{itemize}
\item Facile d'utilisation
\item Fiable
\item Diverses fonctionnalités.
\item Utilisation simplifiée.
\end{itemize}
\end{block}
\pause
\begin{block}{Inconvénients}
\begin{itemize}
\item Sécurité de la plate-forme.
\item L'utilisateur cède la gestion de ses données.
\item Fonctionnement interne opaque.
\end{itemize}
$\Rightarrow$ Confiance utilisateur/plate-forme.
\end{block}
\pause
\begin{block}{Inconvénients}
\begin{itemize}
\item Sécurité et fiabilité relative au tiers.
\item Gestion des données utilisateurs par le tiers.
\item Fonctionnement interne opaque.
\end{itemize}
$\Rightarrow$ Confiance utilisateur/plate-forme.
\end{block}
\end{frame}
\begin{frame}{Fonctionnement opaque}
\begin{itemize}
\item Pas ou peu de documentation technique.
\item Code inaccessible.
\end{itemize}
\pause
\begin{block}{Ce que l'on sait}
\begin{itemize}
\item Fonctionnement en Order Book.
\item utilisation de bridges inter-blockchains.
\end{itemize}
\end{block}
\end{frame}
%\begin{frame}{Fonctionnement opaque}
% \begin{itemize}
% \item Pas ou peu de documentation technique.
% \item Code inaccessible.
% \end{itemize}
% \pause
% \begin{block}{Ce que l'on sait}
% \begin{itemize}
% \item Fonctionnement en Order Book.
% \item utilisation de bridges inter-blockchains.
% \end{itemize}
% \end{block}
%\end{frame}

View File

@ -1,79 +1,82 @@
% Auteur : Louis de Campou
\begin{frame}{Wormhole}
Protocole de passage de messages qui connecte 22 blockchains dont Ethereum et Solana.
\newline
\begin{itemize}
\item Gardiens
\item Verified Action Approval (VAA)
\item Payloads
\end{itemize}
Version 1 : \textit{Bridge} entre Ethereum et Solana
\newline
\newline
Version 2 : Protocole générique de passage de messages qui connecte 22 \textit{blockchains}.
\newline
\begin{itemize}
\item Gardiens
\item VAA (\textit{verified action approval})
\item \textit{Payloads}
\end{itemize}
\end{frame}
\begin{frame}{Wormhole : Gardiens}
Un gardien est une autorité de confiance qui a comme rôle d'observer et de signer un message.\newline
\begin{block}{Caractéristiques du réseau de gardiens}
\begin{itemize}
\item Sans leader
\item 19 gardiens à parts égales
\item Preuve d'autorité (PoA)
\item Multisignature (m/n)
\item Le consensus est atteint lorsque 2/3 des gardiens ont signé le message
\end{itemize}
\end{block}
Un gardien est une autorité de confiance qui a comme rôle de valider un message.\newline
\begin{block}{Caractéristiques du réseau de gardiens}
\begin{itemize}
\item Sans leader
\item 19 gardiens à parts égales
\item Preuve d'autorité (PoA)
\item \textit{Multisignature} (M/N)
\item Le consensus est atteint lorsque 2/3 des gardiens ont signé le message
\end{itemize}
\end{block}
\end{frame}
\begin{frame}{Wormhole : Verified Action Approval (VAA)}
Primitive de messagerie de base de Wormhole
\newline
En-tête :
\begin{itemize}
\item Index de l'ensemble des gardiens
\item Nombre de signatures stockées
\item Collection des signatures ECSDA (secp256k1)
\end{itemize}
Corps :
\begin{itemize}
\item L'ID de la chaîne Wormhole du contrat émetteur
\item L'adresse du contrat émetteur
\item Le payload
\end{itemize}
\begin{frame}{Wormhole : VAA}
Primitive de messagerie de base de Wormhole
\newline
En-tête :
\begin{itemize}
\item Index de l'ensemble des gardiens
\item Nombre de signatures stockées
\item Collection des signatures ECSDA (secp256k1)
\end{itemize}
Corps :
\begin{itemize}
\item L'ID de la chaîne Wormhole du contrat émetteur
\item L'adresse du contrat émetteur
\item Le \textit{payload}
\end{itemize}
\end{frame}
\begin{frame}{Wormhole : Payloads}
Charges utiles spécifiques attachées à un VAA depuis une chaîne source pour indiquer à la chaîne cible comment traiter le message Wormhole après vérification.\newline
5 payloads au total dont :
\begin{itemize}
\item Transfer (déclenche la libération de jetons verrouillés)
\item AssetMeta (atteste les méta-données de l'actif, obligatoire avant un premier transfert)
\end{itemize}
\begin{frame}{Wormhole : \textit{Payloads}}
Charges utiles spécifiques attachées à un VAA depuis une chaîne source pour indiquer à la chaîne cible comment traiter le message Wormhole après vérification.\newline
5 payloads au total dont :
\begin{itemize}
\item \textit{AssetMeta} : informe des méta-données de l'actif verrouillé, obligatoire avant un premier transfert
\item \textit{Transfer} : déclenche la libération de jetons verrouillés
\end{itemize}
\end{frame}
\begin{frame}{Wormhole : Payload - Transfer}
Pour transférer des jetons des chaînes A à B, il y a verrouillage des jetons sur la chaîne A puis on frappe ("mint") sur la chaîne B.\newline
\begin{itemize}
\item ID de la charge utile
\item Montant du transfert
\item L'adresse sur la chaîne d'origine
\item ID de la chaîne d'origine
\item L'adresse sur la chaîne de destination
\item ID de la chaîne de destination
\end{itemize}
\begin{frame}{Wormhole : \textit{Payload} - \textit{Transfer}}
Pour transférer des jetons des chaînes A à B, il y a verrouillage des jetons sur la chaîne A puis on frappe les jetons sur la chaîne B.\newline
\begin{itemize}
\item ID du \textit{payload}
\item Montant du transfert
\item L'adresse sur la chaîne d'origine
\item ID de la chaîne d'origine
\item L'adresse sur la chaîne de destination
\item ID de la chaîne de destination
\end{itemize}
\end{frame}
\begin{frame}{Wormhole : Conclusion}
\begin{itemize}
\item Le réseau de gardiens est l'élement le plus critique de l'écosystème mais aussi le plus opaque
\item Wormhole se dit décentralisé mais ne l'est pas selon notre définition
\end{itemize}
\begin{itemize}
\item Le réseau de gardiens est l'élement le plus critique de l'écosystème mais aussi le plus opaque
\item Wormhole justifie sa décentralisation par la présence de plusieurs parties dans le contrôle du réseau
\end{itemize}
\end{frame}