{"id":306,"date":"2017-02-20T02:15:48","date_gmt":"2017-02-20T02:15:48","guid":{"rendered":"http:\/\/citizenmilitem.com\/?p=306"},"modified":"2017-02-20T02:30:32","modified_gmt":"2017-02-20T02:30:32","slug":"updated-version-of-dryad-generator","status":"publish","type":"post","link":"https:\/\/citizenmilitem.com\/?p=306","title":{"rendered":"Updated version of DRYAD generator"},"content":{"rendered":"<div style=\"width: 810px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/thumb\/6\/65\/%27bombe%27.jpg\/800px-%27bombe%27.jpg\" width=\"800\" height=\"640\"><p class=\"wp-caption-text\">A &#8220;Bombe&#8221; early computer, used to break the German Enigma code<\/p><\/div>\n<p>After I released the DRYAD generator, I received &nbsp;few reports that it would generate the same output every time. &nbsp; &nbsp;This is not good, even for training. &nbsp; Work, family, and life put my programming efforts on the back burner for a while. &nbsp; When I finally got back to it, I discovered that I committed an amateur programming mistake.&nbsp;<\/p>\n<h2>I forgot to seed the random generator<\/h2>\n<p>Computers are &#8220;deterministic&#8221; machines. &nbsp; That means that every action has a predictable action, or that the actions are &#8220;determined&#8221; by the programming. &nbsp; That is a good thing because computers would not be very useful if their output changed at random. &nbsp; However for generating cryptographic materials you need good randomness. &nbsp; In order to create the appearance of randomness computers use a &#8220;Pseudo Random Number Generator&#8221; (PRNG). &nbsp; A PRNG basically takes a number as input called the &#8220;seed&#8221;, and then runs it through a complicated series of mathematical equations that gives you a result that seems random, with no correlation to the input seed. &nbsp; For example, a seed of &#8220;1&#8221; might yield a result of &#8220;72542&#8221; while a seed of &#8220;2&#8221; might result in &#8220;17&#8221;.<\/p>\n<h2>My DRYAD bug<\/h2>\n<p>I forgot to add a line defining a seed, so most likely it would default to &#8220;0&#8221;<br \/>\nEvery<br \/>\nSingle<br \/>\nTime<br \/>\nresulting in the same DRYAD page being generated every time the program was run.<\/p>\n<h2>The Seed is the key<\/h2>\n<p>In order to get pseudo randomness that does not repeat, many programming classes teach using a value of time as the random seed. &nbsp; Computers keep time by counting the number of seconds since some predetermined date\/time reference (called an &#8220;epoch&#8221;)<br \/>\nSince real time does not repeat I.E. it will only be 12:01 PM on January the 1st, 2017 once, using it as a seed guarantees that our seed is never repeated. &nbsp;&nbsp;<br \/>\nThis is what I have added to the 1.01 version of the DRYAD generator.<br \/>\n<a href=\"https:\/\/citizenmilitem.com\/?page_id=200\" target=\"_blank\">Link HERE!<\/a><\/p>\n<h2>While it is pseudo random, it is still not good enough<\/h2>\n<p>While this is unpredictable enough for video games and entertainment, it sucks for real cryptography. &nbsp; For a single line on a DRYAD sheet, there are&nbsp;403,291,461,126,605,635,584,000,000 possible combinations. &nbsp; That is over 403 Septillion combinations. &nbsp; However there are only just over 35 million seconds in a year. &nbsp; If you know the formula a given crypto uses, and you know it uses &#8220;time&#8221; as the seed, then you can run the formula and simply increment the seed, starting at the earliest possible time the computer was used. &nbsp; A modern computer can test years of &#8220;time&#8221; based seed in a few minutes, leaving a searchable database of every possible DRYAD sheet that could be generated in a given year. &nbsp; Not very secure by a determined adversary.<\/p>\n<h2>This is why the current version of the DRYAD generator should be limited to training purposes ONLY!<\/h2>\n<p>I hope to have an improved version later that will solve the &#8220;seed&#8221; problem.<br \/>\nAn ideal crypto-secure seed would come from a very large unpredictable source. &nbsp; Government grade high level crypto use special devices that use an &#8220;entropy&#8221; source.<br \/>\n&#8220;Entropy&#8221; is defined as &#8220;lack of order or predictability.&#8221; &nbsp;<\/p>\n<p>Imagine a very sensitive thermometer that can accurately read to 1\/1000 of a degree. &nbsp; If that thermometer is in a computer case, it will measure the fluctuations of temperature inside. &nbsp; &nbsp; &nbsp;The temperature is affected by ambient room temperature, how hard the CPU and graphics cards are running, fan speed, etc. &nbsp; The temperature can fluctuate by as much as twenty degrees. &nbsp;&nbsp;twenty degrees doesn&#8217;t sound like a lot, a fluctuation between 100.0001 and 100.9999 degrees overs a much larger range of unpredictability.&nbsp;<\/p>\n<p>Government certified entropy devices have been designed AND tested to insure that they are truly entropic (unpredictable) and evenly distributed. (if they generate a number between 1 and 10, a sample of a million tests should have roughly equal quantities of each value.) &nbsp;&nbsp;<\/p>\n<p>Because of the value of entropic seeds in generating random numbers for cryptography, most modern computer operating systems now have &#8220;entropy pools&#8221; to be used in seeding PRNGs. &nbsp; These entropy pools combine mouse movements, keyboard timings, temperatures, hard drive seek times, and other unpredictable sources to populate the pool.<\/p>\n<h2>The next version of the DRYAD generator<\/h2>\n<p>I hope to include strong entropy and a better PRNG for the next version of the DRYAD generator. &nbsp; After that, I hope to add a GUI. &nbsp; I won&#8217;t put a timeframe on it, because if I do, life will guarantee that I won&#8217;t make the deadline.<\/p>\n<h2>P.S. &nbsp; The big numbers:<\/h2>\n<p>The number of possible combinations on a single DRYAD line:<br \/>\n403,291,461,126,605,635,584,000,000<br \/>\naka 403.29 Septillion<\/p>\n<p>The number of possible combinations for a full DRYAD sheet:<br \/>\n55,730,725,530,135,062,649,198,161,739,977,709,115,499,393,128,640,929,871,421,008,423,533,724,386,338,878,574,160,341,220,778,225,216,731,660,527,904,329,322,280,362,280,772,040,814,157,865,238,665,297,698,064,960,243,496,240,325,230,914,590,792,168,508,784,599,820,624,250,553,113,284,701,975,927,160,036,290,503,391,161,723,777,948,657,564,970,294,494,230,362,463,039,937,503,817,540,615,316,978,304,413,679,131,193,300,564,494,890,078,044,222,099,073,176,301,173,743,417,188,309,993,750,657,183,175,705,816,024,175,455,037,824,215,922,922,840,889,574,614,720,871,058,686,980,831,704,240,509,476,464,184,648,541,082,363,856,771,908,162,937,920,666,500,337,734,500,441,071,580,223,302,989,222,924,982,121,660,416,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000<br \/>\nI can not count that high. &nbsp;&nbsp;<\/p>\n<p>Number of seconds in a year: (and possible time based random seeds for a given year)<br \/>\n31,536,000<br \/>\naka 31.54 Million<\/p>\n<p>Estimated age of the universe:<br \/>\n13.82 Billion years old<br \/>\nNumber of Seconds in the universe so far:<br \/>\nAbout&nbsp;484,000,000,000,000,000<br \/>\naka 484 Quadrillion<br \/>\naka orders of magnitude fewer seconds in the history of the universe, than possible combinations for a single line of a DRYAD sheet!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>After I released the DRYAD generator, I received &nbsp;few reports that it would generate the same output every time. &nbsp; &nbsp;This is not good, even for training. &nbsp; Work, family, and life put my programming efforts on the back burner &hellip; <a href=\"https:\/\/citizenmilitem.com\/?p=306\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[11,12,1],"tags":[33,30,44,36,45],"class_list":["post-306","post","type-post","status-publish","format-standard","hentry","category-s6-signals","category-s7-training","category-uncategorized","tag-commo","tag-coms","tag-crypto","tag-dryad","tag-opsec"],"_links":{"self":[{"href":"https:\/\/citizenmilitem.com\/index.php?rest_route=\/wp\/v2\/posts\/306","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/citizenmilitem.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/citizenmilitem.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/citizenmilitem.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/citizenmilitem.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=306"}],"version-history":[{"count":11,"href":"https:\/\/citizenmilitem.com\/index.php?rest_route=\/wp\/v2\/posts\/306\/revisions"}],"predecessor-version":[{"id":319,"href":"https:\/\/citizenmilitem.com\/index.php?rest_route=\/wp\/v2\/posts\/306\/revisions\/319"}],"wp:attachment":[{"href":"https:\/\/citizenmilitem.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=306"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/citizenmilitem.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=306"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/citizenmilitem.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=306"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}