diff --git a/css/custom.css b/css/custom.css index e6aed09..823109f 100644 --- a/css/custom.css +++ b/css/custom.css @@ -1,36 +1,112 @@ -/* ============================================ - Theme personnalise : Hacker / Cybersecurite +/* ============================================ + Theme MATRIX : Cybersecurite / Lazarus ============================================ */ +@import url('https://fonts.googleapis.com/css2?family=Fira+Code:wght@400;700&family=Inter:wght@400;600;700&display=swap'); + :root { - --color-bg: #0a0a0a; - --color-bg-alt: #111111; + --color-bg: #000000; + --color-bg-alt: #0a0f0a; + --color-bg-card: rgba(0, 20, 0, 0.6); --color-green: #00ff41; + --color-green-dim: #00cc33; + --color-green-glow: rgba(0, 255, 65, 0.4); + --color-green-subtle: rgba(0, 255, 65, 0.08); --color-red: #ff3333; + --color-red-glow: rgba(255, 51, 51, 0.4); --color-cyan: #00e5ff; + --color-cyan-glow: rgba(0, 229, 255, 0.3); --color-yellow: #ffd600; - --color-text: #e0e0e0; - --color-muted: #888888; - --color-border: #2a2a2a; + --color-text: #c0d0c0; + --color-text-bright: #e0ffe0; + --color-muted: #4a6a4a; + --color-border: #0a3a0a; --font-mono: 'Fira Code', 'Cascadia Code', 'Consolas', monospace; --font-sans: 'Inter', 'Segoe UI', Arial, sans-serif; } -/* ---- Arriere-plan global ---- */ +/* ===================== KEYFRAMES ===================== */ + +@keyframes matrixGlow { + 0%, 100% { text-shadow: 0 0 10px var(--color-green-glow), 0 0 20px var(--color-green-glow); } + 50% { text-shadow: 0 0 20px var(--color-green), 0 0 40px var(--color-green-glow), 0 0 60px rgba(0,255,65,0.15); } +} + +@keyframes glitchColor { + 0% { text-shadow: 2px 0 #ff0000, -2px 0 #00ffff; } + 25% { text-shadow: -2px 0 #ff0000, 2px 0 #00ffff; } + 50% { text-shadow: 2px 2px #ff0000, -2px -2px #00ffff; } + 75% { text-shadow: -1px 2px #ff0000, 1px -2px #00ffff; } + 100% { text-shadow: 2px 0 #ff0000, -2px 0 #00ffff; } +} + +@keyframes blink { + 0%, 50% { opacity: 1; } + 51%, 100% { opacity: 0; } +} + +@keyframes scanline { + 0% { transform: translateY(-100%); } + 100% { transform: translateY(100vh); } +} + +@keyframes fadeInUp { + from { opacity: 0; transform: translateY(30px); } + to { opacity: 1; transform: translateY(0); } +} + +@keyframes pulseGlow { + 0%, 100% { box-shadow: 0 0 5px var(--color-green-glow), inset 0 0 5px rgba(0,255,65,0.05); } + 50% { box-shadow: 0 0 20px var(--color-green-glow), 0 0 40px rgba(0,255,65,0.1), inset 0 0 10px rgba(0,255,65,0.08); } +} + +@keyframes redPulse { + 0%, 100% { text-shadow: 0 0 10px var(--color-red-glow); } + 50% { text-shadow: 0 0 30px var(--color-red), 0 0 60px var(--color-red-glow); } +} + +/* ===================== BASE ===================== */ + .reveal { background: var(--color-bg); color: var(--color-text); font-family: var(--font-sans); } -.reveal .slides { - text-align: left; +/* Scanlines CRT */ +.reveal::after { + content: ''; + position: fixed; + top: 0; left: 0; + width: 100%; height: 100%; + pointer-events: none; + z-index: 9999; + background: repeating-linear-gradient( + 0deg, + transparent, transparent 2px, + rgba(0, 255, 65, 0.018) 2px, + rgba(0, 255, 65, 0.018) 4px + ); } -/* ---- Titres ---- */ -.reveal h1, -.reveal h2, -.reveal h3 { +/* Barre de scan lumineuse */ +.reveal::before { + content: ''; + position: fixed; + top: 0; left: 0; + width: 100%; height: 6px; + background: linear-gradient(180deg, transparent, rgba(0,255,65,0.25), transparent); + z-index: 9998; + pointer-events: none; + animation: scanline 8s linear infinite; + opacity: 0.4; +} + +.reveal .slides { text-align: left; } + +/* ===================== TITRES + GLOW ===================== */ + +.reveal h1, .reveal h2, .reveal h3 { color: var(--color-green); font-family: var(--font-mono); text-transform: none; @@ -39,96 +115,116 @@ .reveal h1 { font-size: 2.2em; - border-bottom: 3px solid var(--color-green); + border-bottom: 2px solid var(--color-green); + border-image: linear-gradient(90deg, var(--color-green), transparent) 1; padding-bottom: 0.3em; margin-bottom: 0.6em; + animation: matrixGlow 3s ease-in-out infinite; } .reveal h2 { font-size: 1.6em; margin-bottom: 0.5em; + text-shadow: 0 0 10px var(--color-green-glow); } .reveal h3 { font-size: 1.2em; color: var(--color-cyan); + text-shadow: 0 0 8px var(--color-cyan-glow); } -/* ---- Texte ---- */ -.reveal p, -.reveal li { +/* ===================== TEXTE ===================== */ + +.reveal p, .reveal li { font-size: 0.85em; line-height: 1.7; color: var(--color-text); } -.reveal ul, -.reveal ol { - margin-left: 1em; -} +.reveal ul, .reveal ol { margin-left: 1em; } +.reveal li { margin-bottom: 0.4em; } -.reveal li { - margin-bottom: 0.4em; +/* Puces style terminal > */ +.reveal ul > li { + list-style: none; + padding-left: 1.2em; + position: relative; +} +.reveal ul > li::before { + content: '>'; + position: absolute; + left: 0; + color: var(--color-green); + font-family: var(--font-mono); + font-weight: bold; + text-shadow: 0 0 4px var(--color-green-glow); } .reveal strong { color: var(--color-green); + text-shadow: 0 0 6px var(--color-green-glow); } .reveal em { color: var(--color-cyan); font-style: italic; + text-shadow: 0 0 4px var(--color-cyan-glow); } -/* ---- Liens ---- */ +/* ===================== LIENS ===================== */ + .reveal a { color: var(--color-cyan); text-decoration: underline; text-underline-offset: 3px; + text-shadow: 0 0 4px var(--color-cyan-glow); } - .reveal a:hover { color: var(--color-green); + text-shadow: 0 0 10px var(--color-green-glow); } -/* ---- Code inline ---- */ +/* ===================== CODE ===================== */ + .reveal code { font-family: var(--font-mono); - background: var(--color-bg-alt); + background: var(--color-bg-card); border: 1px solid var(--color-border); border-radius: 4px; padding: 0.15em 0.4em; font-size: 0.85em; color: var(--color-green); + text-shadow: 0 0 4px var(--color-green-glow); } -/* ---- Blocs de code ---- */ .reveal pre { - background: var(--color-bg-alt); - border: 1px solid var(--color-border); + background: var(--color-bg-card); + border: 1px solid var(--color-green); border-radius: 6px; padding: 1em; - width: 100%; - box-sizing: border-box; + width: 100%; box-sizing: border-box; + box-shadow: 0 0 15px rgba(0,255,65,0.1), inset 0 0 30px rgba(0,0,0,0.5); } .reveal pre code { - background: transparent; - border: none; - padding: 0; - font-size: 0.75em; - line-height: 1.6; + background: transparent; border: none; + padding: 0; font-size: 0.75em; line-height: 1.6; } -/* ---- Slide de titre ---- */ -.reveal .title-slide { - text-align: center; -} +/* ===================== SLIDE TITRE ===================== */ + +.reveal .title-slide { text-align: center; } .reveal .title-slide h1 { - border-bottom: none; - font-size: 2.6em; - margin-bottom: 0.3em; + border-bottom: none; border-image: none; + font-size: 2.6em; margin-bottom: 0.3em; + animation: matrixGlow 2s ease-in-out infinite; +} + +/* Glitch au hover */ +.reveal .title-slide h1:hover { + animation: glitchColor 0.3s steps(4) infinite, matrixGlow 2s ease-in-out infinite; } .reveal .title-slide .subtitle { @@ -136,6 +232,15 @@ font-size: 1.1em; font-family: var(--font-mono); margin-bottom: 1.5em; + text-shadow: 0 0 10px var(--color-cyan-glow); +} + +/* Curseur clignotant */ +.reveal .title-slide .subtitle::after { + content: '_'; + animation: blink 1s step-end infinite; + color: var(--color-green); + margin-left: 2px; } .reveal .title-slide .authors { @@ -151,13 +256,14 @@ font-family: var(--font-mono); } -/* ---- Classe utilitaire : alerte rouge ---- */ +/* ===================== UTILITAIRES ===================== */ + .reveal .alert { color: var(--color-red); font-weight: bold; + animation: redPulse 2s ease-in-out infinite; } -/* ---- Classe utilitaire : chiffre mis en avant ---- */ .reveal .big-number { font-size: 3em; font-family: var(--font-mono); @@ -165,9 +271,9 @@ font-weight: bold; text-align: center; margin: 0.5em 0; + text-shadow: 0 0 20px var(--color-red-glow), 0 0 40px rgba(255,51,51,0.15); } -/* ---- Classe utilitaire : citation / source ---- */ .reveal .source { font-size: 0.6em; color: var(--color-muted); @@ -175,41 +281,42 @@ margin-top: 1em; } -/* ---- Timeline ---- */ +/* ===================== TIMELINE ===================== */ + .reveal .timeline { list-style: none; - margin: 0; - padding: 0; + margin: 0; padding: 0; position: relative; } .reveal .timeline::before { content: ''; - position: absolute; - left: 8px; - top: 0; - bottom: 0; + position: absolute; left: 8px; top: 0; bottom: 0; width: 2px; - background: var(--color-green); + background: linear-gradient(180deg, transparent, var(--color-green), var(--color-red)); + box-shadow: 0 0 8px var(--color-green-glow); } .reveal .timeline li { - padding-left: 30px; - position: relative; - margin-bottom: 0.6em; - font-size: 0.8em; + padding-left: 30px; position: relative; + margin-bottom: 0.6em; font-size: 0.8em; + list-style: none; } .reveal .timeline li::before { content: ''; - position: absolute; - left: 3px; - top: 0.45em; - width: 12px; - height: 12px; - border-radius: 50%; + position: absolute; left: 3px; top: 0.45em; + width: 12px; height: 12px; border-radius: 50%; background: var(--color-bg); border: 2px solid var(--color-green); + box-shadow: 0 0 6px var(--color-green-glow); +} + +/* Dernier point = rouge pulsant */ +.reveal .timeline li:last-child::before { + border-color: var(--color-red); + box-shadow: 0 0 10px var(--color-red-glow), 0 0 20px rgba(255,51,51,0.2); + background: rgba(255,51,51,0.2); } .reveal .timeline .year { @@ -217,101 +324,123 @@ font-family: var(--font-mono); font-weight: bold; margin-right: 0.5em; + text-shadow: 0 0 4px var(--color-cyan-glow); } -/* ---- Schema / Diagramme en blocs ---- */ +/* ===================== DIAGRAMMES ===================== */ + .reveal .diagram { - display: flex; - align-items: center; + display: flex; align-items: center; justify-content: center; - gap: 0.5em; - margin: 1.5em 0; - flex-wrap: wrap; + gap: 0.5em; margin: 1.5em 0; flex-wrap: wrap; } .reveal .diagram .box { - background: var(--color-bg-alt); + background: var(--color-bg-card); border: 2px solid var(--color-green); border-radius: 6px; padding: 0.6em 1em; - font-family: var(--font-mono); - font-size: 0.7em; + font-family: var(--font-mono); font-size: 0.7em; color: var(--color-green); - text-align: center; - min-width: 100px; + text-align: center; min-width: 100px; + box-shadow: 0 0 10px var(--color-green-glow), inset 0 0 15px rgba(0,255,65,0.03); + transition: all 0.3s ease; +} + +.reveal .diagram .box:hover { + box-shadow: 0 0 25px var(--color-green-glow), 0 0 50px rgba(0,255,65,0.15); + transform: scale(1.05); } .reveal .diagram .box.red { - border-color: var(--color-red); - color: var(--color-red); + border-color: var(--color-red); color: var(--color-red); + box-shadow: 0 0 10px var(--color-red-glow); +} +.reveal .diagram .box.red:hover { + box-shadow: 0 0 25px var(--color-red-glow), 0 0 50px rgba(255,51,51,0.15); } .reveal .diagram .box.cyan { - border-color: var(--color-cyan); - color: var(--color-cyan); + border-color: var(--color-cyan); color: var(--color-cyan); + box-shadow: 0 0 10px var(--color-cyan-glow); } .reveal .diagram .arrow { - color: var(--color-muted); + color: var(--color-green-dim); font-size: 1.5em; font-family: var(--font-mono); + text-shadow: 0 0 8px var(--color-green-glow); + animation: matrixGlow 2s ease-in-out infinite; } -/* ---- Grille 2 colonnes ---- */ +/* ===================== LAYOUT ===================== */ + .reveal .two-cols { display: grid; grid-template-columns: 1fr 1fr; - gap: 2em; - align-items: start; + gap: 2em; align-items: start; } -/* ---- Slide sommaire ---- */ +/* ===================== SOMMAIRE ===================== */ + .reveal .toc ol { - list-style: decimal; + list-style: none; + counter-reset: toc-counter; font-family: var(--font-mono); font-size: 0.85em; + padding-left: 0; } .reveal .toc ol li { + counter-increment: toc-counter; margin-bottom: 0.5em; color: var(--color-text); + padding-left: 2.5em; + position: relative; } -/* ---- Barre de progression ---- */ -.reveal .progress { +.reveal .toc ol li::before { + content: '[' counter(toc-counter, decimal-leading-zero) ']'; color: var(--color-green); + position: absolute; left: 0; + text-shadow: 0 0 4px var(--color-green-glow); +} + +/* ===================== PROGRESS / SLIDE NUMBER ===================== */ + +.reveal .progress { color: var(--color-green); height: 3px; } +.reveal .progress span { + background: var(--color-green); + box-shadow: 0 0 10px var(--color-green), 0 0 20px var(--color-green-glow); } -/* ---- Numeros de slide ---- */ .reveal .slide-number { font-family: var(--font-mono); font-size: 0.6em; - color: var(--color-muted); + color: var(--color-green-dim); + background: transparent; + text-shadow: 0 0 4px var(--color-green-glow); } -/* ---- Fragment animation ---- */ -.reveal .fragment.highlight-green.visible { - color: var(--color-green); -} +/* ===================== FRAGMENTS ===================== */ -.reveal .fragment.highlight-red.visible { - color: var(--color-red); -} +.reveal .fragment { transition: all 0.4s ease; } +.reveal .fragment.visible { animation: fadeInUp 0.5s ease forwards; } +.reveal .fragment.highlight-green.visible { color: var(--color-green); } +.reveal .fragment.highlight-red.visible { color: var(--color-red); } -/* ---- Table ---- */ -.reveal table { - border-collapse: collapse; - width: 100%; - font-size: 0.75em; -} +/* ===================== TABLE ===================== */ + +.reveal table { border-collapse: collapse; width: 100%; font-size: 0.75em; } .reveal table th { - background: var(--color-bg-alt); + background: var(--color-bg-card); color: var(--color-green); font-family: var(--font-mono); padding: 0.5em 0.8em; border-bottom: 2px solid var(--color-green); text-align: left; + text-shadow: 0 0 4px var(--color-green-glow); } .reveal table td { @@ -321,15 +450,125 @@ } .reveal table tr:hover td { - background: var(--color-bg-alt); + background: var(--color-bg-card); + color: var(--color-text-bright); } -/* ---- Slide finale ---- */ -.reveal .end-slide { - text-align: center; -} +/* ===================== SLIDE FINALE ===================== */ +.reveal .end-slide { text-align: center; } .reveal .end-slide h1 { - border-bottom: none; + border-bottom: none; border-image: none; font-size: 3em; + animation: matrixGlow 1.5s ease-in-out infinite; } + +/* ===================== GLOW CARD ===================== */ + +.reveal .glow-card { + background: var(--color-bg-card); + border: 1px solid var(--color-green); + border-radius: 8px; + padding: 1.2em 1.5em; margin: 1em 0; + box-shadow: 0 0 15px var(--color-green-glow), inset 0 0 30px rgba(0,0,0,0.5); + animation: pulseGlow 4s ease-in-out infinite; +} + +.reveal .glow-card.red { + border-color: var(--color-red); + box-shadow: 0 0 15px var(--color-red-glow), inset 0 0 30px rgba(0,0,0,0.5); +} +.reveal .glow-card h3 { margin-top: 0; } + +/* ===================== DATA BACKGROUND ===================== */ + +.reveal .data-bg { position: relative; overflow: hidden; } +.reveal .data-bg::before { + content: '01001100 01000001 01011010 01000001 01010010 01010101 01010011 00100000 01000010 01011001 01000010 01001001 01010100 00100000 00110001 00101110 00110101 01000010 '; + position: absolute; top: 0; left: 0; + width: 100%; height: 100%; + font-family: var(--font-mono); font-size: 0.5em; + color: rgba(0,255,65,0.04); + word-break: break-all; line-height: 1.8; + z-index: 0; pointer-events: none; overflow: hidden; +} +.reveal .data-bg > * { position: relative; z-index: 1; } + +/* ===================== TERMINAL PROMPT ===================== */ + +.reveal .terminal-line { + font-family: var(--font-mono); + font-size: 0.8em; + color: var(--color-green); + margin: 0.3em 0; +} +.reveal .terminal-line::before { + content: 'root@lazarus:~$ '; + color: var(--color-muted); +} +.reveal .terminal-line::after { + content: '_'; + animation: blink 1s step-end infinite; +} + +/* ===================== TAGS ===================== */ + +.reveal .tag { + display: inline-block; + font-family: var(--font-mono); font-size: 0.65em; + padding: 0.2em 0.6em; border-radius: 3px; + background: var(--color-bg-card); + border: 1px solid var(--color-green); + color: var(--color-green); margin: 0.15em; + text-shadow: 0 0 4px var(--color-green-glow); +} +.reveal .tag.red { border-color: var(--color-red); color: var(--color-red); } +.reveal .tag.cyan { border-color: var(--color-cyan); color: var(--color-cyan); } + +/* ===================== SEPARATEUR ===================== */ + +.reveal .matrix-hr { + border: none; height: 1px; + background: linear-gradient(90deg, transparent, var(--color-green), transparent); + box-shadow: 0 0 10px var(--color-green-glow); + margin: 1.5em 0; +} + +/* ===================== CITATION ===================== */ + +.reveal .matrix-quote { + border-left: 3px solid var(--color-green); + padding: 0.8em 1.2em; margin: 1em 0; + background: var(--color-bg-card); + font-style: italic; color: var(--color-text-bright); + box-shadow: inset 3px 0 15px rgba(0,255,65,0.05); +} + +/* ===================== STATUS DOT ===================== */ + +.reveal .status-dot { + display: inline-block; + width: 8px; height: 8px; border-radius: 50%; + background: var(--color-green); + box-shadow: 0 0 6px var(--color-green); + animation: blink 1.5s step-end infinite; + margin-right: 6px; vertical-align: middle; +} +.reveal .status-dot.red { + background: var(--color-red); + box-shadow: 0 0 6px var(--color-red); +} + +/* ===================== SECTIONS FADE ===================== */ + +.reveal section { animation: fadeInUp 0.6s ease forwards; } + +/* ===================== RESPONSIVE ===================== */ + +@media (max-width: 800px) { + .reveal .two-cols { grid-template-columns: 1fr; gap: 1em; } + .reveal h1 { font-size: 1.6em; } + .reveal .big-number { font-size: 2em; } + .reveal .diagram { flex-direction: column; } +} + diff --git a/index.html b/index.html index 21e7d35..6fe1be2 100644 --- a/index.html +++ b/index.html @@ -1,4 +1,4 @@ - +
@@ -12,24 +12,34 @@ - + - - - + + +Groupe de hackers etatique lie a la Coree du Nord, actif depuis 2009.
-Classe comme Advanced Persistent Threat (APT) par les agences de renseignement occidentales.
-Rattache au Reconnaissance General Bureau (renseignement militaire nord-coreen) et au Bureau 121, l'unite de cyberguerre.
-Compose de deux sous-groupes principaux :
+Groupe de hackers étatique lié à la Corée du Nord, actif depuis 2009.
+Classé comme Advanced Persistent Threat (APT) par les agences de renseignement occidentales.
+Rattaché au Reconnaissance General Bureau (renseignement militaire nord-coréen) et au Bureau 121, l'unité de cyberguerre.
+Composé de deux sous-groupes principaux :
Sources : MITRE ATT&CK G0032, US Treasury OFAC, Kaspersky
++ Hidden Cobra + ZINC / Diamond Sleet + APT38 + Stardust Chollima + Guardians of Peace + NICKEL ACADEMY +
+Sources : MITRE ATT&CK G0032, US Treasury OFAC, Kaspersky
voles en cryptomonnaies depuis 2017 par des groupes lies a la Coree du Nord.
-Selon les estimations, les revenus issus du cybercrime representent environ 50% des rentrees en devises etrangeres de la RPDC.
-Ces fonds financent directement les programmes nucleaire et balistique.
+volés en cryptomonnaies depuis 2017 par des groupes liés à la Corée du Nord.
+Selon les estimations, les revenus issus du cybercrime représentent environ 50% des rentrées en devises étrangères de la RPDC.
+Ces fonds financent directement les programmes nucléaire et balistique.
Sources : Chainalysis 2024 Crypto Crime Report, Nations Unies
L'attaque a cible le cold wallet Ethereum de Bybit, le coffre-fort hors ligne cense etre la couche de securite ultime.
+Un cold wallet necessite plusieurs signatures (multisig) pour autoriser un transfert. En theorie, meme si un signataire est compromis, les fonds restent proteges.
-En theorie.
+Un cold wallet nécessite plusieurs signatures (multisig) pour autoriser un transfert. En théorie, même si un signataire est compromis, les fonds restent protégés.
+En théorie.
Safe{Wallet} (anciennement Gnosis Safe) est un service tiers utilise par Bybit pour gerer la signature multiple (multisig) de ses cold wallets.
-Les attaquants ont compromis l'infrastructure de Safe{Wallet} elle-meme, - pas directement les systemes de Bybit.
+Safe{Wallet} (anciennement Gnosis Safe) est un service tiers utilisé par Bybit pour gérer la signature multiple (multisig) de ses cold wallets.
+Les attaquants ont compromis l'infrastructure de Safe{Wallet} elle-même, pas directement les systèmes de Bybit.
Les signataires de Bybit ont vu une interface apparemment legitime. Ils ont approuve ce qui semblait etre une transaction de routine, mais le contenu reel de la transaction avait ete modifie cote serveur.
-Source : CoinTelegraph, Fevrier 2025
+Les signataires de Bybit ont vu une interface apparemment légitime. Ils ont approuvé ce qui semblait être une transaction de routine, mais le contenu réel de la transaction avait été modifié côté serveur.
+Source : CoinTelegraph, Février 2025
La fausse transaction approuvee par les signataires a modifie la logique du smart contract du cold wallet :
-La fausse transaction approuvée par les signataires a modifié la logique du smart contract du cold wallet :
+soit environ 1,5 milliard de dollars au cours du jour
@@ -207,9 +220,9 @@Une fois les fonds transferes, les attaquants ont lance un processus de blanchiment sophistique et rapide :
+Une fois les fonds transférés, les attaquants ont lancé un processus de blanchiment sophistiqué et rapide :
Ethereum a perdu plus de 20% de sa valeur dans les heures suivant l'annonce du hack.
-Le Bitcoin est passe sous la barre symbolique des 90 000 dollars.
+Ethereum a perdu plus de 20% de sa valeur dans les heures suivant l'annonce du hack.
+Le Bitcoin est passé sous la barre symbolique des 90 000 dollars.
+Sources : CNA, CoinTelegraph, Fevrier 2025
+Sources : CNA, CoinTelegraph, Février 2025
Bybit a declare etre reste solvable tout au long de la crise et a annonce avoir recupere une partie des fonds voles.
+L'attribution en cybersecurite est toujours delicate, mais le faisceau de preuves ici est particulierement solide.
+L'attribution en cybersécurité est toujours délicate, mais le faisceau de preuves ici est particulièrement solide.
La lecon principale de ce hack : la securite d'un systeme depend aussi de celle de ses prestataires.
+Les fonds voles ne servent pas a enrichir des individus. Ils alimentent directement les programmes nucleaire et balistique de la Coree du Nord.
-Estimations :
-Les fonds volés ne servent pas à enrichir des individus. Ils alimentent directement les programmes nucléaire et balistique de la Corée du Nord.
+La Coree du Nord dispose de peu de ressources materielles mais presente une menace asymetrique considerable dans le cyberespace.
+La Corée du Nord dispose de peu de ressources matérielles mais présente une menace asymétrique considérable dans le cyberespace.
Les sanctions internationales sont contournees par le cyberespace.
+Les sanctions internationales sont contournées par le cyberespace.
Sources : US Army report 2020, Nations Unies, Recorded Future
@@ -369,13 +392,14 @@En tant que futurs professionnels de l'informatique, comprendre ces attaques et les mecanismes de defense associes est essentiel, quelle que soit votre specialisation.
+En tant que futurs professionnels de l'informatique, comprendre ces attaques et les mécanismes de défense associés est essentiel, quelle que soit votre spécialisation.