Files
Camilou.fr/HTML/TN/Crypto/test10.html
T
Camilla Schoeser ec81bcd634 ajout tout
2026-05-29 21:10:04 +02:00

283 lines
11 KiB
HTML

<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<title>SIGNAL_DOSSIER_v3</title>
<style>
@import url('https://fonts.googleapis.com/css2?family=Syncopate:wght@700&family=JetBrains+Mono:wght@400;700&display=swap');
:root {
--acid: #d1ff00; /* Jaune acide/vert */
--bg: #0a0a0c;
--surface: #141417;
--accent: #303035;
}
body, html {
margin: 0; padding: 0; background: var(--bg);
color: white; font-family: 'JetBrains Mono', monospace;
overflow: hidden; height: 100vh;
}
/* Scanline Overlay */
body::after {
content: ""; position: fixed; top: 0; left: 0; width: 100%; height: 100%;
background: linear-gradient(rgba(18, 16, 16, 0) 50%, rgba(0, 0, 0, 0.1) 50%);
background-size: 100% 4px; z-index: 100; pointer-events: none;
}
/* Layout */
.container {
display: grid; grid-template-columns: 450px 1fr;
height: 100vh; border: 10px solid var(--bg); box-sizing: border-box;
}
/* Sidebar Navigation */
.sidebar {
background: var(--surface); border-right: 2px solid var(--accent);
padding: 30px; display: flex; flex-direction: column; justify-content: space-between;
}
.header h1 {
font-family: 'Syncopate', sans-serif; font-size: 1.2rem;
color: var(--acid); margin: 0; letter-spacing: -1px;
}
.nav-list { margin-top: 40px; }
.nav-item {
padding: 10px 0; border-bottom: 1px solid var(--accent);
font-size: 0.8rem; opacity: 0.4; transition: 0.3s; cursor: pointer;
}
.nav-item.active { opacity: 1; color: var(--acid); padding-left: 10px; border-bottom-color: var(--acid); }
/* Main Viewport */
.main {
padding: 60px; position: relative; overflow: hidden;
display: flex; flex-direction: column;
}
.slide {
display: none; animation: slideIn 0.4s ease-out;
}
.slide.active { display: block; }
@keyframes slideIn {
from { opacity: 0; transform: translateY(20px); filter: blur(10px); }
to { opacity: 1; transform: translateY(0); filter: blur(0); }
}
h2 { font-family: 'Syncopate', sans-serif; font-size: 2.5rem; margin: 0 0 30px 0; text-transform: uppercase; }
.content-grid { display: grid; grid-template-columns: 1fr 200px; gap: 40px; }
.text-zone { line-height: 1.6; font-size: 1.1rem; }
.data-viz { border: 1px solid var(--accent); padding: 20px; font-size: 0.7rem; color: var(--acid); }
/* UI Elements */
.tag { display: inline-block; padding: 4px 10px; background: var(--acid); color: black; font-weight: bold; font-size: 0.7rem; margin-bottom: 10px; }
.check { color: var(--acid); font-weight: bold; }
.fail { color: #ff4444; }
.footer-info { font-size: 0.7rem; opacity: 0.5; display: flex; justify-content: space-between; }
/* Glitch Effect on Change */
.glitch { animation: glitchAnim 0.1s linear 2; }
@keyframes glitchAnim {
0% { transform: translate(0); }
20% { transform: translate(-5px, 5px); filter: hue-rotate(90deg); }
40% { transform: translate(5px, -5px); }
100% { transform: translate(0); }
}
</style>
</head>
<body>
<div class="container" id="app">
<div class="sidebar">
<div class="header">
<div class="tag">TOP SECRET // CLASSIFIED</div>
<h1>SEC_MESSAGING_2026</h1>
<div class="nav-list" id="navList">
<div class="nav-item active">01. INTRODUCTION</div>
<div class="nav-item">02. HISTORIQUE_CLAIRE</div>
<div class="nav-item">03. LES_PIONNIERS</div>
<div class="nav-item">04. SIGNAL_REVOLUTION</div>
<div class="nav-item">05. MATRICE_TEST</div>
<div class="nav-item">06. CORE_X3DH</div>
<div class="nav-item">07. VULNERABILITES</div>
<div class="nav-item">08. GOUVERNANCE</div>
</div>
</div>
<div class="footer-info">
<span>STATUS: CONNECTED</span>
<span>USER: TOM_TN</span>
</div>
</div>
<div class="main" id="main">
<div class="slide active">
<div class="tag">FILE: 001_INTRODUCTION</div>
<h2>CRYPTO_<br>FLUX_ANALYSIS</h2>
<div class="content-grid">
<div class="text-zone">
Rappel des fondamentaux : <span class="check">C.I.D.A</span><br>
Confidentialité, Intégrité, Authentification, Disponibilité.<br><br>
Le "Standard Moderne" exige :<br>
> PFS (Confidentialité persistante)<br>
> Auto-guérison (Double Ratchet)<br>
> Déniabilité & Asynchronisme.
</div>
<div class="data-viz">
[ENCRYPTION_LVL]<br>█ █ █ █ █ █ █ 100%<br><br>
[STATUS]<br>ACTIVE_SCAN
</div>
</div>
</div>
<div class="slide">
<div class="tag">FILE: 002_HISTORY</div>
<h2>L'ÈRE_DU_CLAIR</h2>
<div class="content-grid">
<div class="text-zone">
<span class="highlight">1982 - SMTP :</span> "Hop-by-Hop". Chaque serveur lit le contenu.<br><br>
<span class="highlight">1992 - SMS :</span> "Merry Christmas". Stockage en clair chez l'opérateur (Orange/SFR). Accès total légal.<br><br>
<span class="highlight">2008-2020 - RCS :</span> Google impose l'E2EE en 2020. Interopérabilité Apple/Android complexe.
</div>
<div class="data-viz">
[HISTORY_LOG]<br>
- SMTP_FAIL<br>
- SMS_INSECURE<br>
- RCS_SYNCING
</div>
</div>
</div>
<div class="slide">
<div class="tag">FILE: 003_PIONEERS</div>
<h2>PGP_VS_OTR</h2>
<div class="content-grid">
<div class="text-zone">
<strong>1991 - PGP :</strong> Phil Zimmermann. Asynchrone.<br>
<span class="fail">ÉCHEC :</span> Pas de PFS. Clé perdue = Tout le passé est lisible.<br><br>
<strong>2004 - OTR :</strong> PFS + Déniabilité.<br>
<span class="fail">ÉCHEC :</span> Synchrone uniquement. Bob doit être en ligne pour le "handshake". Inadapté au mobile.
</div>
<div class="data-viz">
[KEY_EXCHANGE]<br>
PGP: STATIC<br>
OTR: SYNC_ONLY
</div>
</div>
</div>
<div class="slide">
<div class="tag">FILE: 004_SIGNAL</div>
<h2>SIGNAL_REVO</h2>
<div class="content-grid">
<div class="text-zone">
Fusion du meilleur d'OTR et PGP.<br><br>
<span class="check">X3DH :</span> Asynchronisme via "Pre-keys" (Alice parle à Bob offline).<br><br>
<span class="check">Double Ratchet :</span> Nouvelle clé à chaque message. Résilience totale.
</div>
<div class="data-viz">
[RATCHET_SEQ]<br>
ROTATION_01...OK<br>
ROTATION_02...OK<br>
PQ_READY: TRUE
</div>
</div>
</div>
<div class="slide">
<div class="tag">FILE: 005_MATRIX</div>
<h2>COMPARATIF</h2>
<div class="text-zone">
<table style="width: 100%; border: 1px solid var(--accent);">
<tr><th>TECH</th><th>E2EE</th><th>PFS</th><th>ASYNC</th></tr>
<tr><td>SMS</td><td></td><td></td><td></td></tr>
<tr><td>PGP</td><td></td><td></td><td></td></tr>
<tr><td>OTR</td><td></td><td></td><td></td></tr>
<tr><td>SIGNAL</td><td></td><td></td><td></td></tr>
</table>
</div>
</div>
<div class="slide">
<div class="tag">FILE: 006_TECH_FOCUS</div>
<h2>CORE_X3DH</h2>
<p style="text-align: center; font-size: 8rem; margin: 0;">🦦</p>
<p style="text-align: center; color: var(--acid);">[ DÉMONSTRATION TABLEAU NOIR ]</p>
</div>
<div class="slide">
<div class="tag">FILE: 007_VULNS</div>
<h2>THREAT_LEVEL</h2>
<div class="content-grid">
<div class="text-zone">
<span class="highlight">Quantique :</span> Menace sur ECDH. Solution : <strong>PQXDH</strong>.<br><br>
<span class="highlight">Endpoints :</span> Pegasus. Si le téléphone est infecté, la crypto est contournée.<br><br>
<span class="highlight">MitM :</span> Risque de fausse clé publique. Vérifiez les "Safety Numbers".
</div>
<div class="data-viz">
[ALERTE]<br>
! SHOR_ALG_DETECTED<br>
! ENDPOINT_RISK
</div>
</div>
</div>
<div class="slide">
<div class="tag">FILE: 008_GOVERNANCE</div>
<h2>SOUVERAINETÉ</h2>
<div class="content-grid">
<div class="text-zone">
<strong>DISCORD :</strong> Centralisé. Texte non-E2EE pour modération (Anti-raids). Métadonnées exploitées.<br><br>
<strong>MATRIX :</strong> Fédéré. Utilisé par Tchap (État). Souveraineté totale via auto-hébergement.
</div>
<div class="data-viz">
[DECENTRALIZED]<br>
MATRIX: 100%<br>
DISCORD: 0%
</div>
</div>
</div>
</div>
</div>
<script>
let current = 0;
const slides = document.querySelectorAll('.slide');
const navItems = document.querySelectorAll('.nav-item');
const main = document.getElementById('main');
function showSlide(index) {
main.classList.add('glitch');
setTimeout(() => main.classList.remove('glitch'), 200);
slides.forEach(s => s.classList.remove('active'));
navItems.forEach(n => n.classList.remove('active'));
slides[index].classList.add('active');
navItems[index].classList.add('active');
current = index;
}
window.addEventListener('keydown', e => {
if(e.key === 'ArrowRight' || e.key === ' ') {
current = (current + 1) % slides.length;
showSlide(current);
}
if(e.key === 'ArrowLeft') {
current = (current - 1 + slides.length) % slides.length;
showSlide(current);
}
});
navItems.forEach((item, i) => {
item.addEventListener('click', () => showSlide(i));
});
</script>
</body>
</html>