SlideShare une entreprise Scribd logo
1  sur  80
INTRODUCTION
FORMATEUR
Souhail Mssassi
fb.com/mssassii
BitCoin
BitCoin - Historique
1977 : Première description du chiffrement RSA qui utilise une clé publique pour chiffrer et d’une clé privée pour déchiffrer des données
confidentielles.
– 1990 : Le mathématicien américain David Chaum invente DigiCash une monnaie électronique (centralisée et propriétaire) basée sur des
protocoles cryptographiques.
– 1994 : Nick Szabo avance l’idée de smart contract, protocole de transaction informatique qui exécute les termes d’un contrat.
– 18 juin 1996 : la NSA publie un rapport intitulé « Comment produire de la monnaie : la cryptographie du cash électronique anonyme ».
– 1999 : L’économiste Milton Friedman prévoit la création prochaine d’un e-cash fiable permettant de réaliser des transactions anonymes sur
Internet.
– Mai 1999 : Henri Massias, Xavier Serret-Avila, et Jean-Jacques Quisquater décrivent un service d’horodatage sécurisé sans tiers de
confiance. Ce document sera mentionné plus tard dans le livre blanc de Bitcoin.
– Juin 1999 : Shawn Fanning invente, avec Napster, la technologie pair-a-pair, ou peer-to-peer (P2P) technology. La plateforme de partage de
fichiers audio Napster fonctionnait cependant avec un serveur central (appelé farm) qui jouait le rôle d’un registre centralisé de tous les
fichiers appartenant à, ou demandés par les pairs. Ce système centralisé constituait le point unique de vulnérabilité (Single Point of Failure-
SPOF) de Napster et le site a été fermé par le FBI en 2001 pour violation des droits de propriété intellectuelle.
– De 1998 à 2005 : Nick Szabo développe le projet BitGold, une monnaie numérique décentralisée basée sur des chaînes infalsifiables de
preuves de travail et utilisant beaucoup d’éléments qu’on retrouvera dans Bitcoin : horodatage, signatures numériques, clés publiques… Le
système se révèle cependant trop vulnérable aux attaques.
– 2004 : Développement de Ripplepay, une tentative de système monétaire décentralisé.
– 1 novembre 2008 : Annonce de la naissance de Bitcoin. La première spécification et preuve de concept de Bitcoin est publiée sur
la Cryptography Mailing List par Satoshi Nakamoto.
– 9 novembre 2008 : dans un message adressé à Satoshi Nakamoto, Hal Finney parle pour la première fois de « Block chain ». Nakamoto
parlait jusqu’alors de « timestamp server ».
– 3 janvier 2009 : création du premier bloc.
– 20 novembre 2017 : L'office des changes interdit l'utilisation du Bitcoin
– 29 novembre 2017 : Le cours du Bitcoin a atteint 9.920 dollars
BitCoin - Concept
BitCoin - Concept
BitCoin - Concept
La Non Traçabilité
Confidentialité
Sécurité
BitCoin - Concept
BitCoin - Authentification
USER_A USER_B
envoyerArgent(USER_A,USER_B,ARGENT )
BitCoin - Spoofing
USER_A USER_B
envoyerArgent(USER_A,USER_B,ARGENT )
BitCoin – Solution Password ?
USER_A
PASSWORD
USER_B
PASSWORD
envoyerArgent(USER_A,USER_B,ARGENT )
BitCoin – Solution Password ?
USER_A
PASSWORD
seConnecter(USER_A,PASSWORD )
BitCoin – Solution Password
BitCoin –Cryptographie Asymétrique
CLE PUBLIC A
CLE PRIVEE A
envoyerArgent(CLE PUBLIC A, CLE PUBLIC B, CLE PRIVEE A,ARGENT ) CLE PUBLIC B
CLE PRIVEE B
BitCoin – Solution Base de Donnée
BitCoin – Base de donnée décentralisée
BitCoin – Base de donnée
Transaction N 1
A  B : 10
C  D : 5
Transaction N 2
B  D : 3
D  A : 2
Transaction N 3
D  C : 1
A D : 1
BitCoin – Base de donnée
Transaction N 232
A  B : 10
Cle Public A
Cle Public B
Signature avec Cle Prive
BitCoin – Vérification de la signature
Transaction N 232
@IUS*S??L{P_S()(
#@J((*NC*(SF
Cle Public A
Cle Public B
Signature avec Cle Prive
Cle Public A
Transaction N 232
A  B : 10
Cle Public A
Cle Public B
BitCoin – Problème de vérification d’argent
Transaction N 1
A  B : 10
C  D : 5
Transaction N 2
B  D : 3
D  A : 2
Transaction N 3
D  B : 7
A D : 1
BitCoin – Problème de vérification d’argent
Transaction N 1
A  B : 10
C  D : 5
Transaction N 2
B  D : 3
D  A : 2
Transaction N 3
D  B : 7
A D : 1
B = 10
BitCoin – Problème de vérification d’argent
Transaction N 1
A  B : 10
C  D : 5
Transaction N 2
B  D : 3
D  A : 2
Transaction N 3
D  B : 7
A D : 1
B = 7
BitCoin – Problème de vérification d’argent
Transaction N 1
A  B : 10
C  D : 5
Transaction N 2
B  D : 3
D  A : 2
Transaction N 3
D  B : 7
A D : 1
B = 14
BitCoin – Problème de la duplication (Dbl Spending)
Transaction N 1
A  B : 10
C  D : 5
Transaction N 2
B  D : 3
D  A : 2
Transaction N 3
D  B : 7
A D : 1
Transaction N 1
A  B : 10
C  D : 5
Transaction N 2
B  A : 10
D  A : 2
Transaction N 3
D  B : 7
A D : 1
BitCoin – Condition de course
Envoie Argent(K1 ,K2, Argent )
A = Get.Argent(K1) ;
If (isValid(OP) ){
K2.SetArgent() += A ;
K1.SetArgent()-= A ;
}
Envoie Argent(K1 ,K3, Argent )
A = Get.Argent(K1) ;
If (isValid(OP) ){
K3.SetArgent() += A ;
K1.SetArgent()-= A ;
}
BitCoin – Condition de course
Envoie Argent(K1 ,K2, Argent )
A = Get.Argent(K1) ;
If (isValid(OP) ){
K2.SetArgent() += Argent ;
K1.SetArgent()-= Argent ;
}
Envoie Argent(K1 ,K3, Argent )
A = Get.Argent(K1) ;
If (isValid(OP) ){
K3.SetArgent() += A ;
K1.SetArgent()-= A ;
}
A = 100
BitCoin – Condition de course
Envoie Argent(K1 ,K2, Argent )
A = Get.Argent(K1) ;
If (isValid(OP) ){
K2.SetArgent() += Argent ;
K1.SetArgent()-= Argent ;
}
Envoie Argent(K1 ,K3, Argent )
A = Get.Argent(K1) ;
If (isValid(OP) ){
K3.SetArgent() += A ;
K1.SetArgent()-= A ;
}
True
BitCoin – Condition de course
Envoie Argent(K1 ,K2, Argent )
A = Get.Argent(K1) ;
If (isValid(OP) ){
K2.SetArgent() += Argent ;
K1.SetArgent()-= Argent ;
}
Envoie Argent(K1 ,K3, Argent )
A = Get.Argent(K1) ;
If (isValid(OP) ){
K3.SetArgent() += A ;
K1.SetArgent()-= A ;
}
260
BitCoin – Condition de course
Envoie Argent(K1 ,K2, Argent )
A = Get.Argent(K1) ;
If (isValid(OP) ){
K2.SetArgent() += Argent ;
K1.SetArgent()-= Argent ;
}
Envoie Argent(K1 ,K3, Argent )
A = Get.Argent(K1) ;
If (isValid(OP) ){
K3.SetArgent() += A ;
K1.SetArgent()-= A ;
}
40
BitCoin – Condition de course
Envoie Argent(K1 ,K2, Argent )
A = Get.Argent(K1) ;
If (isValid(OP) ){
K2.SetArgent() += Argent ;
K1.SetArgent()-= Argent ;
}
Envoie Argent(K1 ,K3, Argent )
A = Get.Argent(K1) ;
If (isValid(OP) ){
K3.SetArgent() += A ;
K1.SetArgent()-= A ;
}
40
BitCoin – Condition de course
Envoie Argent(K1 ,K2, Argent )
A = Get.Argent(K1) ;
If (isValid(OP) ){
K2.SetArgent() += Argent ;
K1.SetArgent()-= Argent ;
}
Envoie Argent(K1 ,K3, Argent )
A = Get.Argent(K1) ;
If (isValid(OP) ){
K3.SetArgent() += A ;
K1.SetArgent()-= A ;
}
False
BitCoin – Condition de course Problème
Envoie Argent(K1 ,K2, Argent )
A = Get.Argent(K1) ;
If (isValid(OP) ){
K2.SetArgent() += Argent ;
K1.SetArgent()-= Argent ;
}
Envoie Argent(K1 ,K3, Argent )
A = Get.Argent(K1) ;
If (isValid(OP) ){
K3.SetArgent() += A ;
K1.SetArgent()-= A ;
}
100 100
BitCoin – Condition de course Problème
Envoie Argent(K1 ,K2, Argent )
A = Get.Argent(K1) ;
If (isValid(OP) ){
K2.SetArgent() += Argent ;
K1.SetArgent()-= Argent ;
}
Envoie Argent(K1 ,K3, Argent )
A = Get.Argent(K1) ;
If (isValid(OP) ){
K3.SetArgent() += A ;
K1.SetArgent()-= A ;
}
True True
BitCoin – Condition de course Problème
Envoie Argent(K1 ,K2, Argent )
A = Get.Argent(K1) ;
If (isValid(OP) ){
K2.SetArgent() += Argent ;
K1.SetArgent()-= Argent ;
}
Envoie Argent(K1 ,K3, Argent )
A = Get.Argent(K1) ;
If (isValid(OP) ){
K3.SetArgent() += A ;
K1.SetArgent()-= A ;
}
BitCoin – Condition de course Problème
Envoie Argent(K1 ,K2, Argent )
A = Get.Argent(K1) ;
If (isValid(OP) ){
K2.SetArgent() += Argent ;
K1.SetArgent()-= Argent ;
}
Envoie Argent(K1 ,K3, Argent )
A = Get.Argent(K1) ;
If (isValid(OP) ){
K3.SetArgent() += A ;
K1.SetArgent()-= A ;
}
260 360
BitCoin – Condition de course Problème
Envoie Argent(K1 ,K2, Argent )
A = Get.Argent(K1) ;
If (isValid(OP) ){
K2.SetArgent() += Argent ;
K1.SetArgent()-= Argent ;
}
Envoie Argent(K1 ,K3, Argent )
A = Get.Argent(K1) ;
If (isValid(OP) ){
K3.SetArgent() += A ;
K1.SetArgent()-= A ;
}
40 -20
BitCoin – Condition de course Sémaphore
Envoie Argent(K1 ,K2, Argent )
V(S1) ;
A = Get.Argent(K1) ;
If (isValid(OP) ){
K2.SetArgent() += Argent ;
K1.SetArgent()-= Argent ;
}
P(S1) ;
P(S2);
Envoie Argent(K1 ,K3, Argent )
V(S2)
A = Get.Argent(K1) ;
If (isValid(OP) ){
K3.SetArgent() += A ;
K1.SetArgent()-= A ;
}
P(S2);
P(S1);
MUTEX S1=1 , MUTEX S2=0 ;
BitCoin – Ajout Base de donnée
Transaction N 232
A  B : 10
Cle Public A
Cle Public B
Signature avec Cle Prive
BitCoin – Ajout Base de donnée
Transaction N 2998
A  B : 1000
Cle Public A
Cle Public B
Signature avec Cle Prive
BitCoin – Ajout Base de donnée Falsification
Transaction N 232
A  B : 10
Cle Public A
Cle Public B
Signature avec Cle Prive
BitCoin – Ajout Base de donnée Complexité
Block N 232
A  B : 10
Cle Public A
Cle Public B
Signature avec Cle Prive
Complexité (Prob Math .. – Hashage .. )
BitCoin – Ajout Base de donnée Complexité
Block N 232
A  B : 10
Cle Public A
Cle Public B
Signature avec Cle Prive
Hash (Block , RAND) avec condition
BitCoin – Scénario d’attaque
Block N 232
A  B : 10
Cle Public A
Cle Public B
Signature avec Cle Prive
Hash (Block , RAND) avec condition
Hash (Block , RAND) avec condition
Brute-force
BitCoin – Ajout Base de donnée Complexité
Block N 232
A  B : 10
Cle Public A
Cle Public B
Signature avec Cle Prive
Cpm Block n+1 =f(Cmp Block n,Hash Block ,NOUNCE )
BitCoin – Le Miner
Block N 232
A  B : 10
Cle Public A
Cle Public B
Signature avec Cle Prive
Cpm Block n+1 =f(Cmp Block n,Hash Block ,NOUNCE )
BitCoin – Le Miner (Preuve de travail)
Cpm Block n+1 =f(Cmp Block n,Hash Block ,NOUNCE )
Hash(Block, x01)
Hash(Block, x02)
Hash(Block, x03)
Hash(Block, x04)
456b7016a916a4b178dd72b947c152b7
006b7016a916a4b178dd72b947c152b7
00000016a916a4b178dd72b947c152b7
098b7016a916a4b178dd72b947c152b7
BitCoin – Pourquoi Les Mineurs existent ?
Le Mineur gagne après chaque validation de blocs une
Somme de BTC .
La Somme diffère en 2008 Le mineur gagner 50 BTC
Apres chaque 200.000 blocs le nombre est divise en deux
.
C’est le seul moyen don’t le Bitcoin est cree .
Donc la somme du BITCOIN qu’il existe est :
200.000 x (50 +25+12.5+…. ) =200.000 x50x 0
∞ 1
2 𝑛 = 200.000 x50x2 = 2.000.000
BitCoin – Pourquoi Les Mineurs existent ?
LE BITCOIN EST DE
QUANTITE LIMITE
BlockChain
Blockchain - Définition
Blockchain est une structure de données, il s'agit essentiellement d'une liste chaînée qui utilise
des pointeurs de hachage à la place des pointeurs normaux. Les pointeurs de hachage sont
utilisés pour pointer vers le bloc précédent
Blockchain est un mécanisme de consensus décentralisé dans un blockchain, toutes les paires
finissent par se mettre d'accord sur l'état d'une transaction.
Blockchain - Types
Blockchain - Consensus
Blockchain -
Vulnérabilités
communes
Attaque par Déni de Service (DoS)
Cette attaque vise à perturber le
fonctionnement normal du réseau
en inondant les nœuds
d’informations. Par exemple, un
attaquant peut inonder le réseau de
nombreuses transactions de faible
valeur, comme ce fut le cas lors
d’une attaque à grande échelle sur
le réseau Bitcoin, en juillet 2015
(PoW est plus vulnérable du fait du
calcul de la preuve
cryptographique).
Attaque Sybil
L’attaquant perturbe le réseau
en créant un certain nombre de
nœuds malveillants qui vont
prendre part au processus
de miningou de minting (PoW
est plus vulnérable que PoS car il
est en général moins cher
d’acheter du matériel de minage
que d’acquérir une part
significative de la circulating
supply d’une crypto-monnaie)
Attaque des 51%
Dans le mécanisme PoW, l’attaque des 51% est déterminée
par la quantité de travail nécessaire pour attaquer une
chaîne. Un mineur qui possède 51% de la puissance est
capable d’attaquer la chaîne principale. Au sein du
mécanisme PoS, un utilisateur qui possède 51%
des coins est également capable d’attaquer la chaîne.
Acheter autant de crypto-monnaie peut sembler onéreux
au départ mais pas pour de riches utilisateurs dans un
système PoS qui reçoivent des intérêts de plus en plus
importants grâce à l’augmentation de leur stake. De plus,
l’attaquant n’a pas techniquement besoin d’acheter 51% de
la circulating supply car toutes les pièces du réseau ne sont
pas systématiquement disponibles pour le staking(stockées
sur de gros exchanges par exemple). Néanmoins, pour les
deux mécanismes PoW et PoS, un attaquant possédant 51%
de la puissance de calcul ou 51% de la circulating supply n’a
aucun intérêt sur le plan pécuniaire à mener une telle
attaque qui aurait pour conséquence de détruire toute la
confiance accordée au réseau et donc de faire s’effondrer la
valeur du coinsous-jacent. L’attaquant se retrouverait ainsi
avec une grande quantité de crypto-monnaies qui ne
vaudrait absolument plus rien.
Vulnérabilités
communes
- en Pratique -
Les Vulnérabilités dans la BlockChain
La majorité des vulnérabilité
dans la blockchain provient de
leurs implémentations et non
pas dans leurs logique
La clé privée :
 Si t’as le clé privée t’as le pouvoir .
- Ce clé prive peut être enregistré sois dans :
- votre ordinateur ,
- écrit dans un papier ,
- stocké dans un hardware Wallet
Side Channels Attaques
Side Channels Attaques
Le contexte d’une attaque physique est le suivant :
On considère un appareil qui performe des opérations cryptographiques basée sur un clé secret .
Ce clé est stocke dans un dispositive et protège contre un accès externe .
On suppose qu’un attaquant a accès a cet appareil et il peut exécuter un nombre fois des entres de
son choix .
En addition , et durant que l’appareil fait les calcules , il est cabale de mesure des paramètres qui
sont relative a l’environnement .
Par exemple le temps d’exécution , le champ électromagnétique qui l’entoure . Ces types d’attaque
n’ont un accès direction au clé secret .
La notion accès diffère d’une situation a l’autre , dans des situations il peut avoir accès total dans
d’autre comment le vol d’un badge d’un responsable de la sécurité ou bien le propriétaire de
l’appareil lui-même veut l’attaquer on cite l’exemple des cartes PAYTV
Tous ses systèmes sont chiffrées .
Les SmartsCard
L’un des cibles du sidechannels sont les smart cards .
Il y’en plusieurs raisons pour ceci puisque ces diapositives sont faites pour performer des opérations
sécurises .
Ils sont portales , de petite taille et facile a les voler .
Ils sont des appareils qui exécute un process a la fois , un processeur plus simple qu’un ordinateur .
Un smart card est un micro ordinateur il se compose d’un processeur 8 bits ou 32 bits avec un ROM
EPROM et une RAM de mémoire petite donc il est possible de faire des calculs .
Le but principal de ces smarts cards (Dans la plupart des cas .. ) est d’exécuter des opérations
cryptographique sans divulguer le clé secret .
Les SmartsCard
- La source de courant : Les smart cards n’ont pas des batteries interne . Le courant dont il
a besoin vient du card Reader . La chose qui rend facile a l’attaque de calculer la
consommation d’énergie .
- L’horloge (Clock) : Les smarts cards n’ont pas d’horloge interne . Les coups d’horloge
peuvent être fourni par l’environnement externe .
Par conséquence l’attaquant pour mesurer le temps d’exécution avec précision .
La classification des attaques physiques
Les attaques invasive et non invasive
Le principe d'une attaque par sondage (appelée probing attack) est d'espionner l'activité électrique
d'un composant électronique du circuit en positionnant une sonde suffisamment proche dudit
composant. Dans la littérature scientifique, mesurer l'évolution de l'état d'une équipotentielle d'un
bus (un « fil ») est un exemple typique d'attaque par sondage. En récoltant des données de cette
manière, l'attaquant peut être en mesure de déduire tout ou une partie du secret du circuit
cryptographique.
Un exemple simple est de connecter un câble dans un bus de donne pour voir le transfert des
donnes .
Les attaques non-invasives qui se contentent de procéder à une observation extérieure du système
Attaque temporelle : étude du temps mis pour effectuer certaines opérations ; cryptanalyse
acoustique : étude du bruit généré par un ordinateur ou une machine qui chiffre. En effet, le
processeur émet du bruit qui varie en intensité et en nature selon sa consommation et les
opérations effectuées (typiquement des condensateurs qui se chargent ou se déchargent émettent
un claquement facilement mesurable) ; analyse d'émanations électromagnétiques : similaire à la
cryptanalyse acoustique mais en utilisant le rayonnement électromagnétique (émission d'ondes,
analyse d'une image thermique, lumière émise par un écran, etc.) ; analyse de consommation : une
consommation accrue indique un calcul important et peut donner des renseignements sur la clé ;
attaque par faute : introduction volontaire d'erreurs dans le système pour provoquer certains
comportements révélateurs. Ce type d'attaque peut être considérée comme invasive dans certains
cas (un laser peut abimer le matériel, etc.)
Les attaques de ce genre se divise en 5 majeurs groupes
Probing attack : Il consiste a ouvrir l’appareil pour observer directement ses paramètres internes ,et
donc ce sont des attaques invasives , passive .
Fault induction attaques : Ces types d’attaque essaie d’influencer le comportement du dispositif pour
qu’il divulgue des informations . La difficulté ne consiste pas a injecter les donnes , mais a comment
extraire les paramètres secret a partit de cet injection . , ce type d’attaque et considère une attaque
active .
Timing attack : Il exploite le temps d’execution .
Power analysis attacks : Il se concentre sur la consommation d’energie .
Electromagnetic analysis attacks : Il mesure le champ électromagnétique entoure dans
l’environnement durant l’operation .
Timing
Attaques
Mesure de sécurité
Bonnes pratiques de sécurité
• Simplicité, modularité et réutilisabilité du code
• Ecriture de tests unitaires et de tests d’intégration
• Incitations économiques diverses :
• Limites de montants traités
• Séparation des conditions et des actions dans le
code (« Condition-Oriented programming »)
• Pré et post-conditions sur les fonctions
• Utilisation d’environnements de test (frameworks,
testnets…)
Chiffrement – Principe de Kerckhoffs
Ce principe exprime que la sécurité d'un crypto système ne doit reposer que sur le secret de la clef.
Autrement dit, tous les autres paramètres doivent être supposés publiquement connus. Il a été
reformulé, peut-être indépendamment, par Claude Shannon : « l'adversaire connaît le système »
* Cette formulation est connue sous le nom de la maxime de Shannon. Il est considéré aujourd'hui
comme un principe fondamental par les cryptologues, et s'oppose à la sécurité par l'obscurité. Le
principe de Kerckhoffs n'implique pas que le système de chiffrement soit public, mais seulement que sa
sécurité ne repose pas sur le secret de celui-ci. Une tendance plus récente est de considérer que quand
les systèmes de chiffrement sont publics, largement étudiés et qu'aucune attaque significative n'est
connue, ils sont d'autant plus sûrs.
Ce principe apparaît parmi les six « desiderata de la cryptographie militaire » énoncés par Kerckhoffs
dans son traité, qui sont :
- Le système doit être matériellement, sinon mathématiquement indéchiffrable ;
- Il faut qu’il n’exige pas le secret, et qu’il puisse sans inconvénient tomber entre les mains de l’ennemi ; -
-La clé doit pouvoir en être communiquée et retenue sans le secours de notes écrites, et être changée ou
modifiée au gré des correspondants ;
- Il faut qu’il soit applicable à la correspondance télégraphique ;
- Il faut qu’il soit portatif, et que son maniement ou son fonctionnement n’exige pas le concours de
plusieurs personnes ;
- Enfin, il est nécessaire, vu les circonstances qui en commandent l’application, que le système soit d’un
usage facile, ne demandant ni tension d’esprit, ni la connaissance d’une longue série de règles à observer.
BitCoin – Base de donnée
Transaction N 1
?  ?? : 10
??  ??? : 5
Transaction N 2
?  ?? : 3
????  ?? : 2
Transaction N 3
??  ? : 1
???? ?? : 1
BitCoin – Assurer l’Anonymité des transactions
Transaction N 1
?  ?? : 10
??  ??? : 5
Transaction N 2
?  ?? : 3
????  ?? : 2
Transaction N 3
??  ? : 1
???? ?? : 1
Zero Knoweldge
Proof
Preuves à divulgation nulle
Comment Une personne
Daltonienne peut savoir si
deux pomme sont de
couleur différente ou pas ?
C’est deux
pommes sont de
couleurs
différents
D’accord je vais
vérifier …
Est-ce que j’ai
change les
pommes ou pas?
Oui !
C’est deux
pommes sont de
couleurs
différents
D’accord je vais
vérifier …
Est-ce que j’ai
change les
pommes ou pas?
…
Des questions ?

Contenu connexe

Tendances

Implémentation des principaux algorithmes de chiffrements en Java
Implémentation des principaux algorithmes de chiffrements en JavaImplémentation des principaux algorithmes de chiffrements en Java
Implémentation des principaux algorithmes de chiffrements en JavaIbn Tofail University
 
Blockchain et Smart Contract : de la théorie à la production
Blockchain et Smart Contract : de la théorie à la productionBlockchain et Smart Contract : de la théorie à la production
Blockchain et Smart Contract : de la théorie à la productionMathieu Durand
 
Les Alternatives à la Blockchain
Les Alternatives à la BlockchainLes Alternatives à la Blockchain
Les Alternatives à la BlockchainCyril Grunspan
 
Crypto camer
Crypto camerCrypto camer
Crypto camerdilan23
 

Tendances (7)

Cryptographie
CryptographieCryptographie
Cryptographie
 
Implémentation des principaux algorithmes de chiffrements en Java
Implémentation des principaux algorithmes de chiffrements en JavaImplémentation des principaux algorithmes de chiffrements en Java
Implémentation des principaux algorithmes de chiffrements en Java
 
Blockchain et Smart Contract : de la théorie à la production
Blockchain et Smart Contract : de la théorie à la productionBlockchain et Smart Contract : de la théorie à la production
Blockchain et Smart Contract : de la théorie à la production
 
Cryptologie
Cryptologie Cryptologie
Cryptologie
 
Les Alternatives à la Blockchain
Les Alternatives à la BlockchainLes Alternatives à la Blockchain
Les Alternatives à la Blockchain
 
Crypto camer
Crypto camerCrypto camer
Crypto camer
 
Bitcoin Security : no more coffee !
Bitcoin Security : no more coffee !Bitcoin Security : no more coffee !
Bitcoin Security : no more coffee !
 

Dernier

comprehension de DDMRP dans le domaine de gestion
comprehension de DDMRP dans le domaine de gestioncomprehension de DDMRP dans le domaine de gestion
comprehension de DDMRP dans le domaine de gestionyakinekaidouchi1
 
Câblage, installation et paramétrage d’un réseau informatique.pdf
Câblage, installation et paramétrage d’un réseau informatique.pdfCâblage, installation et paramétrage d’un réseau informatique.pdf
Câblage, installation et paramétrage d’un réseau informatique.pdfmia884611
 
GAL2024 - L'élevage laitier cultive la biodiversité
GAL2024 - L'élevage laitier cultive la biodiversitéGAL2024 - L'élevage laitier cultive la biodiversité
GAL2024 - L'élevage laitier cultive la biodiversitéInstitut de l'Elevage - Idele
 
JTC 2024 La relance de la filière de la viande de chevreau.pdf
JTC 2024 La relance de la filière de la viande de chevreau.pdfJTC 2024 La relance de la filière de la viande de chevreau.pdf
JTC 2024 La relance de la filière de la viande de chevreau.pdfInstitut de l'Elevage - Idele
 
GAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenus
GAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenusGAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenus
GAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenusInstitut de l'Elevage - Idele
 
GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...
GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...
GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...Institut de l'Elevage - Idele
 
GAL2024 - Décarbonation du secteur laitier : la filière s'engage
GAL2024 - Décarbonation du secteur laitier : la filière s'engageGAL2024 - Décarbonation du secteur laitier : la filière s'engage
GAL2024 - Décarbonation du secteur laitier : la filière s'engageInstitut de l'Elevage - Idele
 
GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...
GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...
GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...Institut de l'Elevage - Idele
 
Algo II : les piles ( cours + exercices)
Algo II :  les piles ( cours + exercices)Algo II :  les piles ( cours + exercices)
Algo II : les piles ( cours + exercices)Sana REFAI
 
GAL2024 - Changements climatiques et maladies émergentes
GAL2024 - Changements climatiques et maladies émergentesGAL2024 - Changements climatiques et maladies émergentes
GAL2024 - Changements climatiques et maladies émergentesInstitut de l'Elevage - Idele
 
JTC 2024 - Réglementation européenne BEA et Transport.pdf
JTC 2024 - Réglementation européenne BEA et Transport.pdfJTC 2024 - Réglementation européenne BEA et Transport.pdf
JTC 2024 - Réglementation européenne BEA et Transport.pdfInstitut de l'Elevage - Idele
 
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...Institut de l'Elevage - Idele
 
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdfJTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdfInstitut de l'Elevage - Idele
 

Dernier (15)

comprehension de DDMRP dans le domaine de gestion
comprehension de DDMRP dans le domaine de gestioncomprehension de DDMRP dans le domaine de gestion
comprehension de DDMRP dans le domaine de gestion
 
Câblage, installation et paramétrage d’un réseau informatique.pdf
Câblage, installation et paramétrage d’un réseau informatique.pdfCâblage, installation et paramétrage d’un réseau informatique.pdf
Câblage, installation et paramétrage d’un réseau informatique.pdf
 
GAL2024 - L'élevage laitier cultive la biodiversité
GAL2024 - L'élevage laitier cultive la biodiversitéGAL2024 - L'élevage laitier cultive la biodiversité
GAL2024 - L'élevage laitier cultive la biodiversité
 
JTC 2024 La relance de la filière de la viande de chevreau.pdf
JTC 2024 La relance de la filière de la viande de chevreau.pdfJTC 2024 La relance de la filière de la viande de chevreau.pdf
JTC 2024 La relance de la filière de la viande de chevreau.pdf
 
GAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenus
GAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenusGAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenus
GAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenus
 
GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...
GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...
GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...
 
GAL2024 - Décarbonation du secteur laitier : la filière s'engage
GAL2024 - Décarbonation du secteur laitier : la filière s'engageGAL2024 - Décarbonation du secteur laitier : la filière s'engage
GAL2024 - Décarbonation du secteur laitier : la filière s'engage
 
GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...
GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...
GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...
 
CAP2ER_GC_Presentation_Outil_20240422.pptx
CAP2ER_GC_Presentation_Outil_20240422.pptxCAP2ER_GC_Presentation_Outil_20240422.pptx
CAP2ER_GC_Presentation_Outil_20240422.pptx
 
Algo II : les piles ( cours + exercices)
Algo II :  les piles ( cours + exercices)Algo II :  les piles ( cours + exercices)
Algo II : les piles ( cours + exercices)
 
JTC 2024 - DeCremoux_Anomalies_génétiques.pdf
JTC 2024 - DeCremoux_Anomalies_génétiques.pdfJTC 2024 - DeCremoux_Anomalies_génétiques.pdf
JTC 2024 - DeCremoux_Anomalies_génétiques.pdf
 
GAL2024 - Changements climatiques et maladies émergentes
GAL2024 - Changements climatiques et maladies émergentesGAL2024 - Changements climatiques et maladies émergentes
GAL2024 - Changements climatiques et maladies émergentes
 
JTC 2024 - Réglementation européenne BEA et Transport.pdf
JTC 2024 - Réglementation européenne BEA et Transport.pdfJTC 2024 - Réglementation européenne BEA et Transport.pdf
JTC 2024 - Réglementation européenne BEA et Transport.pdf
 
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
 
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdfJTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
 

La Blockchain et la sécurité des applications décentralisées

  • 3. BitCoin - Historique 1977 : Première description du chiffrement RSA qui utilise une clé publique pour chiffrer et d’une clé privée pour déchiffrer des données confidentielles. – 1990 : Le mathématicien américain David Chaum invente DigiCash une monnaie électronique (centralisée et propriétaire) basée sur des protocoles cryptographiques. – 1994 : Nick Szabo avance l’idée de smart contract, protocole de transaction informatique qui exécute les termes d’un contrat. – 18 juin 1996 : la NSA publie un rapport intitulé « Comment produire de la monnaie : la cryptographie du cash électronique anonyme ». – 1999 : L’économiste Milton Friedman prévoit la création prochaine d’un e-cash fiable permettant de réaliser des transactions anonymes sur Internet. – Mai 1999 : Henri Massias, Xavier Serret-Avila, et Jean-Jacques Quisquater décrivent un service d’horodatage sécurisé sans tiers de confiance. Ce document sera mentionné plus tard dans le livre blanc de Bitcoin. – Juin 1999 : Shawn Fanning invente, avec Napster, la technologie pair-a-pair, ou peer-to-peer (P2P) technology. La plateforme de partage de fichiers audio Napster fonctionnait cependant avec un serveur central (appelé farm) qui jouait le rôle d’un registre centralisé de tous les fichiers appartenant à, ou demandés par les pairs. Ce système centralisé constituait le point unique de vulnérabilité (Single Point of Failure- SPOF) de Napster et le site a été fermé par le FBI en 2001 pour violation des droits de propriété intellectuelle. – De 1998 à 2005 : Nick Szabo développe le projet BitGold, une monnaie numérique décentralisée basée sur des chaînes infalsifiables de preuves de travail et utilisant beaucoup d’éléments qu’on retrouvera dans Bitcoin : horodatage, signatures numériques, clés publiques… Le système se révèle cependant trop vulnérable aux attaques. – 2004 : Développement de Ripplepay, une tentative de système monétaire décentralisé. – 1 novembre 2008 : Annonce de la naissance de Bitcoin. La première spécification et preuve de concept de Bitcoin est publiée sur la Cryptography Mailing List par Satoshi Nakamoto. – 9 novembre 2008 : dans un message adressé à Satoshi Nakamoto, Hal Finney parle pour la première fois de « Block chain ». Nakamoto parlait jusqu’alors de « timestamp server ». – 3 janvier 2009 : création du premier bloc. – 20 novembre 2017 : L'office des changes interdit l'utilisation du Bitcoin – 29 novembre 2017 : Le cours du Bitcoin a atteint 9.920 dollars
  • 6. BitCoin - Concept La Non Traçabilité Confidentialité Sécurité
  • 8. BitCoin - Authentification USER_A USER_B envoyerArgent(USER_A,USER_B,ARGENT )
  • 9. BitCoin - Spoofing USER_A USER_B envoyerArgent(USER_A,USER_B,ARGENT )
  • 10. BitCoin – Solution Password ? USER_A PASSWORD USER_B PASSWORD envoyerArgent(USER_A,USER_B,ARGENT )
  • 11. BitCoin – Solution Password ? USER_A PASSWORD seConnecter(USER_A,PASSWORD )
  • 13. BitCoin –Cryptographie Asymétrique CLE PUBLIC A CLE PRIVEE A envoyerArgent(CLE PUBLIC A, CLE PUBLIC B, CLE PRIVEE A,ARGENT ) CLE PUBLIC B CLE PRIVEE B
  • 14. BitCoin – Solution Base de Donnée
  • 15. BitCoin – Base de donnée décentralisée
  • 16. BitCoin – Base de donnée Transaction N 1 A  B : 10 C  D : 5 Transaction N 2 B  D : 3 D  A : 2 Transaction N 3 D  C : 1 A D : 1
  • 17. BitCoin – Base de donnée Transaction N 232 A  B : 10 Cle Public A Cle Public B Signature avec Cle Prive
  • 18. BitCoin – Vérification de la signature Transaction N 232 @IUS*S??L{P_S()( #@J((*NC*(SF Cle Public A Cle Public B Signature avec Cle Prive Cle Public A Transaction N 232 A  B : 10 Cle Public A Cle Public B
  • 19. BitCoin – Problème de vérification d’argent Transaction N 1 A  B : 10 C  D : 5 Transaction N 2 B  D : 3 D  A : 2 Transaction N 3 D  B : 7 A D : 1
  • 20. BitCoin – Problème de vérification d’argent Transaction N 1 A  B : 10 C  D : 5 Transaction N 2 B  D : 3 D  A : 2 Transaction N 3 D  B : 7 A D : 1 B = 10
  • 21. BitCoin – Problème de vérification d’argent Transaction N 1 A  B : 10 C  D : 5 Transaction N 2 B  D : 3 D  A : 2 Transaction N 3 D  B : 7 A D : 1 B = 7
  • 22. BitCoin – Problème de vérification d’argent Transaction N 1 A  B : 10 C  D : 5 Transaction N 2 B  D : 3 D  A : 2 Transaction N 3 D  B : 7 A D : 1 B = 14
  • 23. BitCoin – Problème de la duplication (Dbl Spending) Transaction N 1 A  B : 10 C  D : 5 Transaction N 2 B  D : 3 D  A : 2 Transaction N 3 D  B : 7 A D : 1 Transaction N 1 A  B : 10 C  D : 5 Transaction N 2 B  A : 10 D  A : 2 Transaction N 3 D  B : 7 A D : 1
  • 24. BitCoin – Condition de course Envoie Argent(K1 ,K2, Argent ) A = Get.Argent(K1) ; If (isValid(OP) ){ K2.SetArgent() += A ; K1.SetArgent()-= A ; } Envoie Argent(K1 ,K3, Argent ) A = Get.Argent(K1) ; If (isValid(OP) ){ K3.SetArgent() += A ; K1.SetArgent()-= A ; }
  • 25. BitCoin – Condition de course Envoie Argent(K1 ,K2, Argent ) A = Get.Argent(K1) ; If (isValid(OP) ){ K2.SetArgent() += Argent ; K1.SetArgent()-= Argent ; } Envoie Argent(K1 ,K3, Argent ) A = Get.Argent(K1) ; If (isValid(OP) ){ K3.SetArgent() += A ; K1.SetArgent()-= A ; } A = 100
  • 26. BitCoin – Condition de course Envoie Argent(K1 ,K2, Argent ) A = Get.Argent(K1) ; If (isValid(OP) ){ K2.SetArgent() += Argent ; K1.SetArgent()-= Argent ; } Envoie Argent(K1 ,K3, Argent ) A = Get.Argent(K1) ; If (isValid(OP) ){ K3.SetArgent() += A ; K1.SetArgent()-= A ; } True
  • 27. BitCoin – Condition de course Envoie Argent(K1 ,K2, Argent ) A = Get.Argent(K1) ; If (isValid(OP) ){ K2.SetArgent() += Argent ; K1.SetArgent()-= Argent ; } Envoie Argent(K1 ,K3, Argent ) A = Get.Argent(K1) ; If (isValid(OP) ){ K3.SetArgent() += A ; K1.SetArgent()-= A ; } 260
  • 28. BitCoin – Condition de course Envoie Argent(K1 ,K2, Argent ) A = Get.Argent(K1) ; If (isValid(OP) ){ K2.SetArgent() += Argent ; K1.SetArgent()-= Argent ; } Envoie Argent(K1 ,K3, Argent ) A = Get.Argent(K1) ; If (isValid(OP) ){ K3.SetArgent() += A ; K1.SetArgent()-= A ; } 40
  • 29. BitCoin – Condition de course Envoie Argent(K1 ,K2, Argent ) A = Get.Argent(K1) ; If (isValid(OP) ){ K2.SetArgent() += Argent ; K1.SetArgent()-= Argent ; } Envoie Argent(K1 ,K3, Argent ) A = Get.Argent(K1) ; If (isValid(OP) ){ K3.SetArgent() += A ; K1.SetArgent()-= A ; } 40
  • 30. BitCoin – Condition de course Envoie Argent(K1 ,K2, Argent ) A = Get.Argent(K1) ; If (isValid(OP) ){ K2.SetArgent() += Argent ; K1.SetArgent()-= Argent ; } Envoie Argent(K1 ,K3, Argent ) A = Get.Argent(K1) ; If (isValid(OP) ){ K3.SetArgent() += A ; K1.SetArgent()-= A ; } False
  • 31. BitCoin – Condition de course Problème Envoie Argent(K1 ,K2, Argent ) A = Get.Argent(K1) ; If (isValid(OP) ){ K2.SetArgent() += Argent ; K1.SetArgent()-= Argent ; } Envoie Argent(K1 ,K3, Argent ) A = Get.Argent(K1) ; If (isValid(OP) ){ K3.SetArgent() += A ; K1.SetArgent()-= A ; } 100 100
  • 32. BitCoin – Condition de course Problème Envoie Argent(K1 ,K2, Argent ) A = Get.Argent(K1) ; If (isValid(OP) ){ K2.SetArgent() += Argent ; K1.SetArgent()-= Argent ; } Envoie Argent(K1 ,K3, Argent ) A = Get.Argent(K1) ; If (isValid(OP) ){ K3.SetArgent() += A ; K1.SetArgent()-= A ; } True True
  • 33. BitCoin – Condition de course Problème Envoie Argent(K1 ,K2, Argent ) A = Get.Argent(K1) ; If (isValid(OP) ){ K2.SetArgent() += Argent ; K1.SetArgent()-= Argent ; } Envoie Argent(K1 ,K3, Argent ) A = Get.Argent(K1) ; If (isValid(OP) ){ K3.SetArgent() += A ; K1.SetArgent()-= A ; }
  • 34. BitCoin – Condition de course Problème Envoie Argent(K1 ,K2, Argent ) A = Get.Argent(K1) ; If (isValid(OP) ){ K2.SetArgent() += Argent ; K1.SetArgent()-= Argent ; } Envoie Argent(K1 ,K3, Argent ) A = Get.Argent(K1) ; If (isValid(OP) ){ K3.SetArgent() += A ; K1.SetArgent()-= A ; } 260 360
  • 35. BitCoin – Condition de course Problème Envoie Argent(K1 ,K2, Argent ) A = Get.Argent(K1) ; If (isValid(OP) ){ K2.SetArgent() += Argent ; K1.SetArgent()-= Argent ; } Envoie Argent(K1 ,K3, Argent ) A = Get.Argent(K1) ; If (isValid(OP) ){ K3.SetArgent() += A ; K1.SetArgent()-= A ; } 40 -20
  • 36. BitCoin – Condition de course Sémaphore Envoie Argent(K1 ,K2, Argent ) V(S1) ; A = Get.Argent(K1) ; If (isValid(OP) ){ K2.SetArgent() += Argent ; K1.SetArgent()-= Argent ; } P(S1) ; P(S2); Envoie Argent(K1 ,K3, Argent ) V(S2) A = Get.Argent(K1) ; If (isValid(OP) ){ K3.SetArgent() += A ; K1.SetArgent()-= A ; } P(S2); P(S1); MUTEX S1=1 , MUTEX S2=0 ;
  • 37. BitCoin – Ajout Base de donnée Transaction N 232 A  B : 10 Cle Public A Cle Public B Signature avec Cle Prive
  • 38. BitCoin – Ajout Base de donnée Transaction N 2998 A  B : 1000 Cle Public A Cle Public B Signature avec Cle Prive
  • 39. BitCoin – Ajout Base de donnée Falsification Transaction N 232 A  B : 10 Cle Public A Cle Public B Signature avec Cle Prive
  • 40. BitCoin – Ajout Base de donnée Complexité Block N 232 A  B : 10 Cle Public A Cle Public B Signature avec Cle Prive Complexité (Prob Math .. – Hashage .. )
  • 41. BitCoin – Ajout Base de donnée Complexité Block N 232 A  B : 10 Cle Public A Cle Public B Signature avec Cle Prive Hash (Block , RAND) avec condition
  • 42. BitCoin – Scénario d’attaque Block N 232 A  B : 10 Cle Public A Cle Public B Signature avec Cle Prive Hash (Block , RAND) avec condition Hash (Block , RAND) avec condition Brute-force
  • 43. BitCoin – Ajout Base de donnée Complexité Block N 232 A  B : 10 Cle Public A Cle Public B Signature avec Cle Prive Cpm Block n+1 =f(Cmp Block n,Hash Block ,NOUNCE )
  • 44. BitCoin – Le Miner Block N 232 A  B : 10 Cle Public A Cle Public B Signature avec Cle Prive Cpm Block n+1 =f(Cmp Block n,Hash Block ,NOUNCE )
  • 45. BitCoin – Le Miner (Preuve de travail) Cpm Block n+1 =f(Cmp Block n,Hash Block ,NOUNCE ) Hash(Block, x01) Hash(Block, x02) Hash(Block, x03) Hash(Block, x04) 456b7016a916a4b178dd72b947c152b7 006b7016a916a4b178dd72b947c152b7 00000016a916a4b178dd72b947c152b7 098b7016a916a4b178dd72b947c152b7
  • 46. BitCoin – Pourquoi Les Mineurs existent ? Le Mineur gagne après chaque validation de blocs une Somme de BTC . La Somme diffère en 2008 Le mineur gagner 50 BTC Apres chaque 200.000 blocs le nombre est divise en deux . C’est le seul moyen don’t le Bitcoin est cree . Donc la somme du BITCOIN qu’il existe est : 200.000 x (50 +25+12.5+…. ) =200.000 x50x 0 ∞ 1 2 𝑛 = 200.000 x50x2 = 2.000.000
  • 47. BitCoin – Pourquoi Les Mineurs existent ? LE BITCOIN EST DE QUANTITE LIMITE
  • 49. Blockchain - Définition Blockchain est une structure de données, il s'agit essentiellement d'une liste chaînée qui utilise des pointeurs de hachage à la place des pointeurs normaux. Les pointeurs de hachage sont utilisés pour pointer vers le bloc précédent Blockchain est un mécanisme de consensus décentralisé dans un blockchain, toutes les paires finissent par se mettre d'accord sur l'état d'une transaction.
  • 50.
  • 55. Attaque par Déni de Service (DoS) Cette attaque vise à perturber le fonctionnement normal du réseau en inondant les nœuds d’informations. Par exemple, un attaquant peut inonder le réseau de nombreuses transactions de faible valeur, comme ce fut le cas lors d’une attaque à grande échelle sur le réseau Bitcoin, en juillet 2015 (PoW est plus vulnérable du fait du calcul de la preuve cryptographique).
  • 56. Attaque Sybil L’attaquant perturbe le réseau en créant un certain nombre de nœuds malveillants qui vont prendre part au processus de miningou de minting (PoW est plus vulnérable que PoS car il est en général moins cher d’acheter du matériel de minage que d’acquérir une part significative de la circulating supply d’une crypto-monnaie)
  • 57. Attaque des 51% Dans le mécanisme PoW, l’attaque des 51% est déterminée par la quantité de travail nécessaire pour attaquer une chaîne. Un mineur qui possède 51% de la puissance est capable d’attaquer la chaîne principale. Au sein du mécanisme PoS, un utilisateur qui possède 51% des coins est également capable d’attaquer la chaîne. Acheter autant de crypto-monnaie peut sembler onéreux au départ mais pas pour de riches utilisateurs dans un système PoS qui reçoivent des intérêts de plus en plus importants grâce à l’augmentation de leur stake. De plus, l’attaquant n’a pas techniquement besoin d’acheter 51% de la circulating supply car toutes les pièces du réseau ne sont pas systématiquement disponibles pour le staking(stockées sur de gros exchanges par exemple). Néanmoins, pour les deux mécanismes PoW et PoS, un attaquant possédant 51% de la puissance de calcul ou 51% de la circulating supply n’a aucun intérêt sur le plan pécuniaire à mener une telle attaque qui aurait pour conséquence de détruire toute la confiance accordée au réseau et donc de faire s’effondrer la valeur du coinsous-jacent. L’attaquant se retrouverait ainsi avec une grande quantité de crypto-monnaies qui ne vaudrait absolument plus rien.
  • 59. Les Vulnérabilités dans la BlockChain La majorité des vulnérabilité dans la blockchain provient de leurs implémentations et non pas dans leurs logique
  • 60. La clé privée :  Si t’as le clé privée t’as le pouvoir . - Ce clé prive peut être enregistré sois dans : - votre ordinateur , - écrit dans un papier , - stocké dans un hardware Wallet
  • 61.
  • 63. Side Channels Attaques Le contexte d’une attaque physique est le suivant : On considère un appareil qui performe des opérations cryptographiques basée sur un clé secret . Ce clé est stocke dans un dispositive et protège contre un accès externe . On suppose qu’un attaquant a accès a cet appareil et il peut exécuter un nombre fois des entres de son choix . En addition , et durant que l’appareil fait les calcules , il est cabale de mesure des paramètres qui sont relative a l’environnement . Par exemple le temps d’exécution , le champ électromagnétique qui l’entoure . Ces types d’attaque n’ont un accès direction au clé secret . La notion accès diffère d’une situation a l’autre , dans des situations il peut avoir accès total dans d’autre comment le vol d’un badge d’un responsable de la sécurité ou bien le propriétaire de l’appareil lui-même veut l’attaquer on cite l’exemple des cartes PAYTV Tous ses systèmes sont chiffrées .
  • 64. Les SmartsCard L’un des cibles du sidechannels sont les smart cards . Il y’en plusieurs raisons pour ceci puisque ces diapositives sont faites pour performer des opérations sécurises . Ils sont portales , de petite taille et facile a les voler . Ils sont des appareils qui exécute un process a la fois , un processeur plus simple qu’un ordinateur . Un smart card est un micro ordinateur il se compose d’un processeur 8 bits ou 32 bits avec un ROM EPROM et une RAM de mémoire petite donc il est possible de faire des calculs . Le but principal de ces smarts cards (Dans la plupart des cas .. ) est d’exécuter des opérations cryptographique sans divulguer le clé secret .
  • 65. Les SmartsCard - La source de courant : Les smart cards n’ont pas des batteries interne . Le courant dont il a besoin vient du card Reader . La chose qui rend facile a l’attaque de calculer la consommation d’énergie . - L’horloge (Clock) : Les smarts cards n’ont pas d’horloge interne . Les coups d’horloge peuvent être fourni par l’environnement externe . Par conséquence l’attaquant pour mesurer le temps d’exécution avec précision .
  • 66. La classification des attaques physiques Les attaques invasive et non invasive Le principe d'une attaque par sondage (appelée probing attack) est d'espionner l'activité électrique d'un composant électronique du circuit en positionnant une sonde suffisamment proche dudit composant. Dans la littérature scientifique, mesurer l'évolution de l'état d'une équipotentielle d'un bus (un « fil ») est un exemple typique d'attaque par sondage. En récoltant des données de cette manière, l'attaquant peut être en mesure de déduire tout ou une partie du secret du circuit cryptographique. Un exemple simple est de connecter un câble dans un bus de donne pour voir le transfert des donnes . Les attaques non-invasives qui se contentent de procéder à une observation extérieure du système Attaque temporelle : étude du temps mis pour effectuer certaines opérations ; cryptanalyse acoustique : étude du bruit généré par un ordinateur ou une machine qui chiffre. En effet, le processeur émet du bruit qui varie en intensité et en nature selon sa consommation et les opérations effectuées (typiquement des condensateurs qui se chargent ou se déchargent émettent un claquement facilement mesurable) ; analyse d'émanations électromagnétiques : similaire à la cryptanalyse acoustique mais en utilisant le rayonnement électromagnétique (émission d'ondes, analyse d'une image thermique, lumière émise par un écran, etc.) ; analyse de consommation : une consommation accrue indique un calcul important et peut donner des renseignements sur la clé ; attaque par faute : introduction volontaire d'erreurs dans le système pour provoquer certains comportements révélateurs. Ce type d'attaque peut être considérée comme invasive dans certains cas (un laser peut abimer le matériel, etc.)
  • 67. Les attaques de ce genre se divise en 5 majeurs groupes Probing attack : Il consiste a ouvrir l’appareil pour observer directement ses paramètres internes ,et donc ce sont des attaques invasives , passive . Fault induction attaques : Ces types d’attaque essaie d’influencer le comportement du dispositif pour qu’il divulgue des informations . La difficulté ne consiste pas a injecter les donnes , mais a comment extraire les paramètres secret a partit de cet injection . , ce type d’attaque et considère une attaque active . Timing attack : Il exploite le temps d’execution . Power analysis attacks : Il se concentre sur la consommation d’energie . Electromagnetic analysis attacks : Il mesure le champ électromagnétique entoure dans l’environnement durant l’operation .
  • 69.
  • 70.
  • 72. Bonnes pratiques de sécurité • Simplicité, modularité et réutilisabilité du code • Ecriture de tests unitaires et de tests d’intégration • Incitations économiques diverses : • Limites de montants traités • Séparation des conditions et des actions dans le code (« Condition-Oriented programming ») • Pré et post-conditions sur les fonctions • Utilisation d’environnements de test (frameworks, testnets…)
  • 73. Chiffrement – Principe de Kerckhoffs Ce principe exprime que la sécurité d'un crypto système ne doit reposer que sur le secret de la clef. Autrement dit, tous les autres paramètres doivent être supposés publiquement connus. Il a été reformulé, peut-être indépendamment, par Claude Shannon : « l'adversaire connaît le système » * Cette formulation est connue sous le nom de la maxime de Shannon. Il est considéré aujourd'hui comme un principe fondamental par les cryptologues, et s'oppose à la sécurité par l'obscurité. Le principe de Kerckhoffs n'implique pas que le système de chiffrement soit public, mais seulement que sa sécurité ne repose pas sur le secret de celui-ci. Une tendance plus récente est de considérer que quand les systèmes de chiffrement sont publics, largement étudiés et qu'aucune attaque significative n'est connue, ils sont d'autant plus sûrs. Ce principe apparaît parmi les six « desiderata de la cryptographie militaire » énoncés par Kerckhoffs dans son traité, qui sont : - Le système doit être matériellement, sinon mathématiquement indéchiffrable ; - Il faut qu’il n’exige pas le secret, et qu’il puisse sans inconvénient tomber entre les mains de l’ennemi ; - -La clé doit pouvoir en être communiquée et retenue sans le secours de notes écrites, et être changée ou modifiée au gré des correspondants ; - Il faut qu’il soit applicable à la correspondance télégraphique ; - Il faut qu’il soit portatif, et que son maniement ou son fonctionnement n’exige pas le concours de plusieurs personnes ; - Enfin, il est nécessaire, vu les circonstances qui en commandent l’application, que le système soit d’un usage facile, ne demandant ni tension d’esprit, ni la connaissance d’une longue série de règles à observer.
  • 74. BitCoin – Base de donnée Transaction N 1 ?  ?? : 10 ??  ??? : 5 Transaction N 2 ?  ?? : 3 ????  ?? : 2 Transaction N 3 ??  ? : 1 ???? ?? : 1
  • 75. BitCoin – Assurer l’Anonymité des transactions Transaction N 1 ?  ?? : 10 ??  ??? : 5 Transaction N 2 ?  ?? : 3 ????  ?? : 2 Transaction N 3 ??  ? : 1 ???? ?? : 1
  • 76. Zero Knoweldge Proof Preuves à divulgation nulle
  • 77. Comment Une personne Daltonienne peut savoir si deux pomme sont de couleur différente ou pas ?
  • 78. C’est deux pommes sont de couleurs différents D’accord je vais vérifier … Est-ce que j’ai change les pommes ou pas? Oui !
  • 79. C’est deux pommes sont de couleurs différents D’accord je vais vérifier … Est-ce que j’ai change les pommes ou pas? …