<- Back to the timetable

How do we know our PRNGs work properly?

Vladimir Klebanov, Felix Dörre

Bugs in PRNGs often go unnoticed for years, as witnessed previously by the Debian OpenSSL disaster (2006-2008; see presentation at 25C3) or the Android PRNG vulnerability (2005-2013), which was responsible for a series of bitcoin thefts. This longevity has good reasons, as currently almost no effective technical safeguards against the PRNG flaws are in place. In public forums, questions about quality assurance for PRNGs are typically met with fatalistic shrugging, links to web comics, or links to statistical test suites. None of these approaches is effective in solving the problem. In the past two years, we carried out research into correctness of cryptographic PRNGs, studying the effectiveness of various measures, and developing new ones. We analyzed numerous PRNGs that are currently in deployment. With this presentation we aim to convey insights into: the current state of PRNG implementations why quality assurance of PRNGs is difficult and why hardly any technical safeguards against flaws in PRNGs are currently in place the details of the GnuPG flaw that we uncovered the hidden technical similarities behind many PRNG flaws (such as the three mentioned above) which safeguards are effective and which are not how to improve the situation

Download Slides
PDF ZIP JSON
0:00:07 - 0:00:12
0:01:52 - 0:02:38
0:03:27 - 0:04:01
0:04:44 - 0:05:20
0:05:55 - 0:06:08
0:06:08 - 0:06:39
0:06:39 - 0:06:45
0:08:49 - 0:09:03
0:11:07 - 0:11:22
0:13:39 - 0:14:09
0:15:35 - 0:16:09
0:16:34 - 0:17:14
0:17:14 - 0:17:18
0:17:19 - 0:17:40
0:18:21 - 0:19:02
0:19:32 - 0:20:18
0:20:21 - 0:20:34
0:20:56 - 0:21:18
0:21:59 - 0:22:22
0:22:22 - 0:23:00
0:23:00 - 0:23:32
0:23:32 - 0:23:49
0:23:49 - 0:24:05
0:24:06 - 0:24:29
0:25:19 - 0:25:29
0:25:57 - 0:26:10
0:26:11 - 0:26:32
0:26:32 - 0:26:38
0:26:50 - 0:26:52
0:26:56 - 0:27:14
0:27:27 - 0:27:33
0:27:34 - 0:27:36
0:27:44 - 0:27:51
0:28:07 - 0:28:09
0:28:09 - 0:28:34
0:28:34 - 0:28:37
0:28:54 - 0:29:01
0:29:03 - 0:29:06
0:29:07 - 0:29:17
0:30:31 - 0:31:35
0:35:27 - 0:36:07
0:36:32 - 0:37:02
0:38:20 - 0:38:27
0:38:27 - 0:38:46
0:38:46 - 0:38:54
0:38:54 - 0:39:08
0:39:08 - 0:39:21
0:39:26 - 0:39:52
0:39:52 - 0:40:11
0:40:12 - 0:40:16
0:41:15 - 0:41:35
0:41:35 - 0:42:00
0:42:09 - 0:42:33
0:43:10 - 0:43:30
0:43:43 - 0:44:01
0:44:15 - 0:44:38
0:58:19 - 0:58:23
0:58:24 - 0:58:28
0:58:29 - 0:58:34