(???) !doctype html>
(???) html>
(???) <head>
(???) <meta charset="utf-8" />
(???) <meta name="viewport" content="width=device-width, initial-scale=1.0" />
(???) <title>Timing attacks</title>
(???) <link href="/slides.css" rel="stylesheet" />
(???) <script src="/slides.js" type="module"></script>
(???) <script src="/timer.js" type="module"></script>
(???) <script src="passwordcrack.js" type="module"></script>
(???) </head>
(???) <body>
(???) <main class="slides" tabindex="0" autofocus>
(???) <section class="paragraph" id="navigate-hint">
(???) <p>
(???) <kbd>←</kbd> prev<br />
(???) <kbd>→</kbd> next
(???) </p>
(???) </section>
(???) <section class="about">
(???) Timing attacks
(???) <p class="small">Theory and practice</p>
(???) </section>
(???) <section class="paragraph small" id="print-hint">
(???) Interactive version:<br /><br />
(???) <a href="https://joriszwart.nl/timing-attacks" target="_blank">
(???) joriszwart.nl/timing-attacks
(???) </a>
(???) </section>
(???) <section class="paragraph">
(???) <form>
(???) <label
(???) >Password<br />
(???) <input type="text" class="box-input" spellcheck="false" />
(???) </label>
(???) </form>
(???) <!-- From the movie War games? not possible back then? maybe even possible back then. But Duning-Kruger -->
(???) </section>
(???) <section id="about-joris" class="about">
(???) <a href="https://joriszwart.nl" target="_blank">
(???) <img
(???) src="/joriszwart-logo-uluru.png"
(???) alt="Joris Zwart logo"
(???) width="1000"
(???) height="125"
(???) />
(???) </a>
(???) </section>
(???) <section>Cause</section>
(???) <section class="paragraph small">
(???) <pre class="pseudoc">
nt strcmp(char[] s1, char[] s2) {
(???) int i = 0
(???) while (s1[i] == s2[i]) {
(???) if (s1[i] == 0 || s2[i] == 0) {
(???) return 0
(???) }
(???) i++
(???) }
(???) return s1[i] - s2[i]
(???)
(???) </pre>
(???) </section>
(???) <section>
(???) Mitigations?
(???) <p class="small">I ask you, the public!</p>
(???) </section>
(???) <section class="paragraph">
(???) <!-- common kneejerk -->
(???) <blockquote>CPU times are small compared to network times!</blockquote>
(???) <p class="small">So it can never work!</p>
(???) </section>
(???) <section class="paragraph">
(???) <blockquote>Just add a random delay!</blockquote>
(???) </section>
(???) <section class="paragraph">
(???) <blockquote>Add a fixed delay, then!</blockquote>
(???) </section>
(???) <section class="paragraph">
(???) <blockquote>Our users don't do that!</blockquote>
(???) <p class="small">Famous last words...</p>
(???) </section>
(???) <section>Facts</section>
(???) <section class="paragraph">
(???) Network delays, never speeds up
(???) <!-- consequence: lower bound can be determined, student-t test -->
(???) </section>
(???) <section class="paragraph">Network delays follows a pattern</section>
(???) <section class="paragraph">Network noise follows a distribution</section>
(???) <section>
(???) Advanced attacks
(???) <p class="small">Wasn't this already?</p>
(???) </section>
(???) <section class="paragraph">HTTP/2</section>
(???) <section class="paragraph">
(???) 2 packets, 1 request
(???) <p class="small">Eliminates network noise!</p>
(???) </section>
(???) <!--
(???) how statistics behind the network timings. (how to make this easy to grasp?)
(???) eal life: twee groepen, in oor fluisteren: makkelijke som, moeilijke som (duurt langer om uit te rekenen)
(???) lso in cryptography, extracting private keys from a server.
(???) oon voorbeeld met timing api van browser (die is op zich al voorzien van random ruis om timing attacks te voorkomen, ironie)
(???) o other forms: side-channel (RAM, CPU usage, GPU usage)
(???) uis volgt (bijv vertraging) volgt een normaalverdeling, timing attack verschuift het gemiddelde
(???) etwerk maakt een meting altijd trager, nooit sneller, dus je kan naar de snelste meting kijken
(???) student t-test ook)
(HTM) ttp/2: 2 verzoeken in 1 packet (dan sluit je de netwerkruis uit, want die beinvloed beide pogingen hetzelfde!) GENIAAL. Stuur Koffie... (goede gok) en Xoffie... (zeker weten fout -> neemt korter)
(PNG) res
(???)
(???) ->
(???) <section>Lessons learned</section>
(???) <section class="paragraph">Timing is subtle</section>
(???) <section class="paragraph">
(???) Don't assume what is right
(???) <!-- not limited to timing attacks -->
(???) </section>
(???) <section class="paragraph">Use constant time libraries</section>
(???) <section class="paragraph small">
(???) <a href="https://joriszwart.nl/timing-attacks" target="_blank">
(???) joriszwart.nl/timing-attacks
(???) </a>
(???) </section>
(???) </main>
(???) <aside class="timer" data-timer data-minutes="15"></aside>
(???) </body>
(???) /html>