<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[Cybersect]]></title><description><![CDATA[Musings about cybersecurity]]></description><link>https://cybersect.substack.com</link><image><url>https://substackcdn.com/image/fetch/$s_!Kb0c!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fcybersect.substack.com%2Fimg%2Fsubstack.png</url><title>Cybersect</title><link>https://cybersect.substack.com</link></image><generator>Substack</generator><lastBuildDate>Thu, 16 Apr 2026 07:01:48 GMT</lastBuildDate><atom:link href="https://cybersect.substack.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Robert Graham]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[cybersect@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[cybersect@substack.com]]></itunes:email><itunes:name><![CDATA[Robert Graham]]></itunes:name></itunes:owner><itunes:author><![CDATA[Robert Graham]]></itunes:author><googleplay:owner><![CDATA[cybersect@substack.com]]></googleplay:owner><googleplay:email><![CDATA[cybersect@substack.com]]></googleplay:email><googleplay:author><![CDATA[Robert Graham]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Pi is exactly 3.141592653589793]]></title><description><![CDATA[...when held as a float64.]]></description><link>https://cybersect.substack.com/p/pi-is-exactly-3141592653589793</link><guid isPermaLink="false">https://cybersect.substack.com/p/pi-is-exactly-3141592653589793</guid><dc:creator><![CDATA[Robert Graham]]></dc:creator><pubDate>Sat, 14 Feb 2026 10:56:33 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!uL9k!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2552a97f-2934-4a0e-9573-9ac409290716_1536x1024.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!uL9k!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2552a97f-2934-4a0e-9573-9ac409290716_1536x1024.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!uL9k!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2552a97f-2934-4a0e-9573-9ac409290716_1536x1024.jpeg 424w, https://substackcdn.com/image/fetch/$s_!uL9k!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2552a97f-2934-4a0e-9573-9ac409290716_1536x1024.jpeg 848w, https://substackcdn.com/image/fetch/$s_!uL9k!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2552a97f-2934-4a0e-9573-9ac409290716_1536x1024.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!uL9k!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2552a97f-2934-4a0e-9573-9ac409290716_1536x1024.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!uL9k!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2552a97f-2934-4a0e-9573-9ac409290716_1536x1024.jpeg" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2552a97f-2934-4a0e-9573-9ac409290716_1536x1024.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:715037,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://cybersect.substack.com/i/187813212?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2552a97f-2934-4a0e-9573-9ac409290716_1536x1024.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!uL9k!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2552a97f-2934-4a0e-9573-9ac409290716_1536x1024.jpeg 424w, https://substackcdn.com/image/fetch/$s_!uL9k!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2552a97f-2934-4a0e-9573-9ac409290716_1536x1024.jpeg 848w, https://substackcdn.com/image/fetch/$s_!uL9k!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2552a97f-2934-4a0e-9573-9ac409290716_1536x1024.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!uL9k!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2552a97f-2934-4a0e-9573-9ac409290716_1536x1024.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The value of <em>pi &#960;</em> is 3.141592653589793.  That&#8217;s the value held in an <strong>IEEE 754 64-bit floating point</strong>, how modern CPUs do number crunching. If you need <em>pi &#960; </em>for a calculation, that&#8217;s the value you&#8217;ll end up using 99% of the time. This is the value <a href="https://www.jpl.nasa.gov/edu/news/how-many-decimals-of-pi-do-we-really-need/">NASA uses for all its calculations</a>, because it&#8217;s good enough even to pilot spacecraft to the next star.</p><h1>Math nerds</h1><p>My <a href="https://x.com/ErrataRob/status/2020669909441663345">tweet discussing this</a> went a little viral. Techies can&#8217;t help but say <em>&#8220;well actually&#8230;&#8221;</em>. In this case, they say the actual value of a <em>float64</em> holding pi is the following 49 digit number:</p><p><strong>3.141592653589793</strong><em>115997963468544185161590576171875</em></p><p>They can cite support for this. The AIs will <a href="https://share.google/aimode/YWkPvXjU3VXLaHLA2">often agree</a> with them, such as Gemini:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!7xsB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F571d4f95-44a1-4573-9263-20b6ee743b6c_758x377.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7xsB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F571d4f95-44a1-4573-9263-20b6ee743b6c_758x377.png 424w, https://substackcdn.com/image/fetch/$s_!7xsB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F571d4f95-44a1-4573-9263-20b6ee743b6c_758x377.png 848w, https://substackcdn.com/image/fetch/$s_!7xsB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F571d4f95-44a1-4573-9263-20b6ee743b6c_758x377.png 1272w, https://substackcdn.com/image/fetch/$s_!7xsB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F571d4f95-44a1-4573-9263-20b6ee743b6c_758x377.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7xsB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F571d4f95-44a1-4573-9263-20b6ee743b6c_758x377.png" width="332" height="165.12401055408972" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/571d4f95-44a1-4573-9263-20b6ee743b6c_758x377.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:377,&quot;width&quot;:758,&quot;resizeWidth&quot;:332,&quot;bytes&quot;:67295,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://cybersect.substack.com/i/187813212?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F571d4f95-44a1-4573-9263-20b6ee743b6c_758x377.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!7xsB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F571d4f95-44a1-4573-9263-20b6ee743b6c_758x377.png 424w, https://substackcdn.com/image/fetch/$s_!7xsB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F571d4f95-44a1-4573-9263-20b6ee743b6c_758x377.png 848w, https://substackcdn.com/image/fetch/$s_!7xsB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F571d4f95-44a1-4573-9263-20b6ee743b6c_758x377.png 1272w, https://substackcdn.com/image/fetch/$s_!7xsB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F571d4f95-44a1-4573-9263-20b6ee743b6c_758x377.png 1456w" sizes="100vw"></picture><div></div></div></a></figure></div><p>They are all wrong.</p><p>The reason is that there is a difference between <em>math</em> and <em>engineering</em>. Mathematically, the value of this <em>float64</em> equals this. For engineering, though, if we start with 16 <strong>significant digits</strong> we cannot get 49 digits at the end. Anything after digit 16 has been <strong>hallucinated</strong>.</p><h1>Sig Figs</h1><p>In science and engineering we are taught about <strong>significant digits</strong>, or <strong>significant figures</strong>, or abbreviated <strong>sig figs</strong>. Not all the digits in a number are significant.</p><p>It&#8217;s 100 miles between Nashville and Huntsville. You might claim, therefore, that it&#8217;s 160.9344 kilometers between the two cites. After all, that&#8217;s the exact mathematical <strong>definition</strong>. Back in 1959 there was an international agreement setting the conversion factor from miles to kilometers exactly at 1.609344. Therefore, 100 miles exactly equals 160.9344 kilometers.</p><p>But the original number was only a rough estimate, the true value is 103 miles. The original number only had about two significant digits. Therefore, when translating a rough estimate to decimal, we keep the number of significant figures and discard the rest. Hence, it&#8217;s 160 km between the cities.</p><p>Adding extra digits is just hallucinating them, making them up.</p><h1>Where float64 expansion goes wrong</h1><p>I wrote 50 lines of <a href="https://github.com/robertdavidgraham/blog-code/blob/master/2026-02-12/simple-div.c">code</a> to explain the issue. This code deconstructs the floating point number, does the same calculation every does to reach the 49 digit number, and shows where the hallucination happens (<a href="https://github.com/robertdavidgraham/blog-code/blob/master/2026-02-12/simple-div.c#L14">line #14</a>).</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!rGyr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d32141b-5f38-45be-8355-5babc3db9fa2_1496x686.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rGyr!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d32141b-5f38-45be-8355-5babc3db9fa2_1496x686.png 424w, https://substackcdn.com/image/fetch/$s_!rGyr!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d32141b-5f38-45be-8355-5babc3db9fa2_1496x686.png 848w, https://substackcdn.com/image/fetch/$s_!rGyr!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d32141b-5f38-45be-8355-5babc3db9fa2_1496x686.png 1272w, https://substackcdn.com/image/fetch/$s_!rGyr!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d32141b-5f38-45be-8355-5babc3db9fa2_1496x686.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rGyr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d32141b-5f38-45be-8355-5babc3db9fa2_1496x686.png" width="550" height="252.33516483516485" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1d32141b-5f38-45be-8355-5babc3db9fa2_1496x686.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:668,&quot;width&quot;:1456,&quot;resizeWidth&quot;:550,&quot;bytes&quot;:399403,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://cybersect.substack.com/i/187813212?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d32141b-5f38-45be-8355-5babc3db9fa2_1496x686.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!rGyr!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d32141b-5f38-45be-8355-5babc3db9fa2_1496x686.png 424w, https://substackcdn.com/image/fetch/$s_!rGyr!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d32141b-5f38-45be-8355-5babc3db9fa2_1496x686.png 848w, https://substackcdn.com/image/fetch/$s_!rGyr!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d32141b-5f38-45be-8355-5babc3db9fa2_1496x686.png 1272w, https://substackcdn.com/image/fetch/$s_!rGyr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d32141b-5f38-45be-8355-5babc3db9fa2_1496x686.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>We extract the mantissa as the number 7074237752028440  and extract the exponent as 2251799813685248.</p><p>To calculate the result, we simply divide  7074237752028440  &#247;  2251799813685248. If you plug this into a calculator, you&#8217;ll get that long 49 digit number.</p><p>By default, when we do such math, we assume integers have infinite precision. We can assume that a number like 42 also means 42.00000000&#8230;. &#8212; the integer followed by an infinite number of zeroes.</p><p>But in our Nashville example above, we can&#8217;t assume &#8220;100 miles&#8221; is &#8220;100.00000&#8230;&#8221; followed by infinite zeroes. Indeed, even the last zero isn&#8217;t significant, only the first two digits.</p><p>The same is true in the floating point calculation. The number 7074237752028440 is not followed by an infinite number of digits, 7074237752028440.000000&#8230;. Instead, it has exactly those 16 decimal digits and no more.</p><p>In my code, the hallucination of extra digits happens on <a href="https://github.com/robertdavidgraham/blog-code/blob/master/2026-02-12/simple-div.c#L14">line #14</a>. This shows one form of <em>long division</em>. This line multiples the <em>remainder</em> by 10, padding the integer with a zero, hallucinating it.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!WJPm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F120d299e-8108-4072-9fbe-c2b1ebf2f2c2_986x392.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!WJPm!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F120d299e-8108-4072-9fbe-c2b1ebf2f2c2_986x392.png 424w, https://substackcdn.com/image/fetch/$s_!WJPm!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F120d299e-8108-4072-9fbe-c2b1ebf2f2c2_986x392.png 848w, https://substackcdn.com/image/fetch/$s_!WJPm!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F120d299e-8108-4072-9fbe-c2b1ebf2f2c2_986x392.png 1272w, https://substackcdn.com/image/fetch/$s_!WJPm!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F120d299e-8108-4072-9fbe-c2b1ebf2f2c2_986x392.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!WJPm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F120d299e-8108-4072-9fbe-c2b1ebf2f2c2_986x392.png" width="456" height="181.29006085192697" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/120d299e-8108-4072-9fbe-c2b1ebf2f2c2_986x392.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:392,&quot;width&quot;:986,&quot;resizeWidth&quot;:456,&quot;bytes&quot;:57579,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://cybersect.substack.com/i/187813212?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F120d299e-8108-4072-9fbe-c2b1ebf2f2c2_986x392.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!WJPm!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F120d299e-8108-4072-9fbe-c2b1ebf2f2c2_986x392.png 424w, https://substackcdn.com/image/fetch/$s_!WJPm!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F120d299e-8108-4072-9fbe-c2b1ebf2f2c2_986x392.png 848w, https://substackcdn.com/image/fetch/$s_!WJPm!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F120d299e-8108-4072-9fbe-c2b1ebf2f2c2_986x392.png 1272w, https://substackcdn.com/image/fetch/$s_!WJPm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F120d299e-8108-4072-9fbe-c2b1ebf2f2c2_986x392.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>If you don&#8217;t set the <em>max_digit</em> parameter, then this loop can hallucinate a lot of extra digits, going past 16 digits to produce 49 digits.</p><h1>Fewest digits</h1><p>Modern languages like JavaScript, Python, and Ruby get the right answer.</p><pre><code>$ node
&gt; 3.14159265358979311599796346854418516159057617187
<strong>3.141592653589793</strong>
&gt; 3.14159265358979311111111111111111111111111111111
<strong>3.141592653589793</strong>
&gt; 3.141592653589793
<strong>3.141592653589793</strong>
&gt; 1.50000
<strong>1.5</strong></code></pre><p>In this example, JavaScript uses <em>float64</em> internally. When it prints the number, it prints the <strong>fewest digits</strong>. That means at least limiting output to the significant digits, but often even shorter if extra zeroes aren&#8217;t needed for padding (even if the zeroes are significant).</p><p>It&#8217;s actually a difficult algorithm (like <em>Dragon4</em>) because you want fast output so you can spit gigabytes of JSON to a file, with these numbers formatted correctly.</p><p>The point is simply that while AIs often get the wrong answers, these programming languages get the right answer.</p><h1>Conclusion</h1><p>I&#8217;m writing up this blogpost because I wrote up some code.</p><p>I&#8217;m making an unusual claim, that these AIs and many nerds are <strong>hallucinating</strong> insignificant digits. This trolls some nerds who deconstruct the floating-point number to show division by two integers, thus &#8220;proving&#8221; they are not making up digits.</p><p>But the error is their assumption the integers had infinite precision. The mantissa doesn&#8217;t, it has <strong>exactly</strong> 52 binary digits or 16 decimal digits. Anything past that is hallucinating precision that doesn&#8217;t exist.</p>]]></content:encoded></item><item><title><![CDATA[More IPv4 address parsing]]></title><description><![CDATA[Some notes]]></description><link>https://cybersect.substack.com/p/more-ipv4-address-parsing</link><guid isPermaLink="false">https://cybersect.substack.com/p/more-ipv4-address-parsing</guid><dc:creator><![CDATA[Robert Graham]]></dc:creator><pubDate>Sun, 04 Jan 2026 01:01:50 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!_Tf2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafd5cf5c-8aa0-42ea-903a-b442161d30ce_1536x1024.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!_Tf2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafd5cf5c-8aa0-42ea-903a-b442161d30ce_1536x1024.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_Tf2!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafd5cf5c-8aa0-42ea-903a-b442161d30ce_1536x1024.jpeg 424w, https://substackcdn.com/image/fetch/$s_!_Tf2!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafd5cf5c-8aa0-42ea-903a-b442161d30ce_1536x1024.jpeg 848w, https://substackcdn.com/image/fetch/$s_!_Tf2!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafd5cf5c-8aa0-42ea-903a-b442161d30ce_1536x1024.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!_Tf2!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafd5cf5c-8aa0-42ea-903a-b442161d30ce_1536x1024.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_Tf2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafd5cf5c-8aa0-42ea-903a-b442161d30ce_1536x1024.jpeg" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/afd5cf5c-8aa0-42ea-903a-b442161d30ce_1536x1024.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:89101,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://cybersect.substack.com/i/182985336?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafd5cf5c-8aa0-42ea-903a-b442161d30ce_1536x1024.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!_Tf2!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafd5cf5c-8aa0-42ea-903a-b442161d30ce_1536x1024.jpeg 424w, https://substackcdn.com/image/fetch/$s_!_Tf2!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafd5cf5c-8aa0-42ea-903a-b442161d30ce_1536x1024.jpeg 848w, https://substackcdn.com/image/fetch/$s_!_Tf2!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafd5cf5c-8aa0-42ea-903a-b442161d30ce_1536x1024.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!_Tf2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fafd5cf5c-8aa0-42ea-903a-b442161d30ce_1536x1024.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Recently, Daniel Lemire had a <a href="https://lemire.me/blog/2025/12/27/parsing-ip-addresses-quickly-portably-without-simd-magic/">blogpost</a> pointing out that AI produced surprisingly fast code for parsing IPv4 addresses. As a &#8220;parser&#8221; guy, I have some comments.</p><p>The summary is this:</p><ul><li><p>his benchmarks were flawed, though the code is indeed fast</p></li><li><p>it&#8217;s fast because of good compilers and good CPUs, not good AI</p></li><li><p>let&#8217;s look at some other algorithms</p></li></ul><h1>Large test sizes</h1><p>The reason the AI code appeared so fast is that his benchmark was flawed. He only parsed <strong><a href="https://github.com/lemire/Code-used-on-Daniel-Lemire-s-blog/blob/master/2025/12/27/benchmark_ip_parsing/benchmarks/benchmark.cpp#L179">15,000</a></strong> addresses, instead of a larger test like <strong>1,500,000</strong> addresses.</p><p>Instead of his original benchmark taking 4.4 nanoseconds <em>per IP address</em>, it now takes over double that, 11.05 nanoseconds. These are per address, calculated by total time divided by the number of addresses.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!JTxJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcca4da87-4e9c-43a8-bdee-27d45a0bfef5_2376x1134.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!JTxJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcca4da87-4e9c-43a8-bdee-27d45a0bfef5_2376x1134.png 424w, https://substackcdn.com/image/fetch/$s_!JTxJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcca4da87-4e9c-43a8-bdee-27d45a0bfef5_2376x1134.png 848w, https://substackcdn.com/image/fetch/$s_!JTxJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcca4da87-4e9c-43a8-bdee-27d45a0bfef5_2376x1134.png 1272w, https://substackcdn.com/image/fetch/$s_!JTxJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcca4da87-4e9c-43a8-bdee-27d45a0bfef5_2376x1134.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!JTxJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcca4da87-4e9c-43a8-bdee-27d45a0bfef5_2376x1134.png" width="1456" height="695" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cca4da87-4e9c-43a8-bdee-27d45a0bfef5_2376x1134.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:695,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:966375,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://cybersect.substack.com/i/182985336?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcca4da87-4e9c-43a8-bdee-27d45a0bfef5_2376x1134.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!JTxJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcca4da87-4e9c-43a8-bdee-27d45a0bfef5_2376x1134.png 424w, https://substackcdn.com/image/fetch/$s_!JTxJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcca4da87-4e9c-43a8-bdee-27d45a0bfef5_2376x1134.png 848w, https://substackcdn.com/image/fetch/$s_!JTxJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcca4da87-4e9c-43a8-bdee-27d45a0bfef5_2376x1134.png 1272w, https://substackcdn.com/image/fetch/$s_!JTxJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcca4da87-4e9c-43a8-bdee-27d45a0bfef5_2376x1134.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>One possible reason is that the larger test size is evicted from the fast L1 cache into the slower L2 cache. You can see that with the <em>memcpy</em> part of the benchmark, because L2 bandwidth is lower.</p><p>But this shouldn&#8217;t be a latency problem. CPUs predict access patterns, so should automatically put something into the L1 cache before it&#8217;s needed. Also, you can fit 10 addresses into a single 128-byte cacheline, so it would only impact 10% of the addresses.</p><p>I&#8217;ve concluded it&#8217;s probably <strong>branch prediction</strong>. Modern CPUs have added branch prediction algorithms that depend upon data accesses, which will get disrupted when data access patterns become too large. In other words, branch prediction &#8220;overfit&#8221; the original test case size.</p><p>A failed branch prediction can add around ~3 to ~4 <em>nanoseconds</em>. I tracked some low-level CPU hardware counters that suggest there are 1.7 branch misses, which roughly lines up with the extra 6.5 nanoseconds in time.</p><p>The hardware counters are flaky, and speculative execution mitigates a lot of the cost of a miss, so I&#8217;m not really confident in this conclusion.</p><p>I wrote my own code to test this, which I describe in a section below.</p><p>The conclusion is simply that a short test doesn&#8217;t reflect real-world behavior, you need a large test case. The size of that test case matters, simply repeating a short test case isn&#8217;t sufficient to properly measure this. In real world parsing, input is constantly changing, so wouldn&#8217;t match the short test case, but the long.</p><h1>Smart compilers and CPUs</h1><p>The reason that AI generated code is fast is because modern CPUs have a lot of tricks, such as the data-dependent branch prediction mentioned above.</p><p>Remove those tricks and go back to an old CPU, and the benchmark doesn&#8217;t show such an advantage. It&#8217;s not bad, it becomes merely average.</p><p>There&#8217;s a similar story with compilers. Using modern compilers to build code for old CPUs still improves their speed. The recognize common idioms, replacing the code you think you wrote with something more efficient. The website <a href="https://godbolt.org/">GodBolt.org</a> is does a great job compiling code for you on virtually all compiler versions so that you can see the difference in how modern compilers generate code compared to old ones.</p><p>AI produces average code. Modern compilers and CPUs have optimized the s**** out of average code, making it perform fast. It&#8217;s to the point where you should ask the AI to produce typical code, and not try to steer it toward weird optimizations, because that&#8217;ll likely slow things down instead of speed things up.</p><h1>My fastip project</h1><p>I&#8217;ve created a project, <a href="https://github.com/robertdavidgraham/blog-code/tree/master/2026-01-02/fastip">fastip</a>, to benchmark this against other algorithms. I&#8217;ll describe the other algorithms below.</p><p>I implement a bunch off different algorithms, and then benchmark mark them twice, once with the short test-case, and again &#8220;+&#8221; with the long test case. The AI generated algorithm is the first one, though I ported it to C from C++, and it appears a bit slower, at 5.4 nanoseconds per IP address, going to 11.9 nanoseconds for the larger test case..</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!bLJx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94498d07-52b5-45d2-96ae-b494813a3da1_2016x702.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!bLJx!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94498d07-52b5-45d2-96ae-b494813a3da1_2016x702.png 424w, https://substackcdn.com/image/fetch/$s_!bLJx!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94498d07-52b5-45d2-96ae-b494813a3da1_2016x702.png 848w, https://substackcdn.com/image/fetch/$s_!bLJx!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94498d07-52b5-45d2-96ae-b494813a3da1_2016x702.png 1272w, https://substackcdn.com/image/fetch/$s_!bLJx!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94498d07-52b5-45d2-96ae-b494813a3da1_2016x702.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!bLJx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94498d07-52b5-45d2-96ae-b494813a3da1_2016x702.png" width="1456" height="507" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/94498d07-52b5-45d2-96ae-b494813a3da1_2016x702.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:507,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:503080,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://cybersect.substack.com/i/182985336?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94498d07-52b5-45d2-96ae-b494813a3da1_2016x702.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!bLJx!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94498d07-52b5-45d2-96ae-b494813a3da1_2016x702.png 424w, https://substackcdn.com/image/fetch/$s_!bLJx!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94498d07-52b5-45d2-96ae-b494813a3da1_2016x702.png 848w, https://substackcdn.com/image/fetch/$s_!bLJx!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94498d07-52b5-45d2-96ae-b494813a3da1_2016x702.png 1272w, https://substackcdn.com/image/fetch/$s_!bLJx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94498d07-52b5-45d2-96ae-b494813a3da1_2016x702.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The hardware counters are flaky, so it&#8217;s not correctly reporting branches or misses.</p><p>I changed the test to also run on the <strong>e-cores</strong>. Modern CPUs have both powerful, power hungry cores (p-cores) and efficient, slower cores (e-cores). My tests also run on the other cores, where I get better hardware counters:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Pmzb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb9f404b-8146-4111-8f49-19c5b49e3753_2016x702.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Pmzb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb9f404b-8146-4111-8f49-19c5b49e3753_2016x702.png 424w, https://substackcdn.com/image/fetch/$s_!Pmzb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb9f404b-8146-4111-8f49-19c5b49e3753_2016x702.png 848w, https://substackcdn.com/image/fetch/$s_!Pmzb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb9f404b-8146-4111-8f49-19c5b49e3753_2016x702.png 1272w, https://substackcdn.com/image/fetch/$s_!Pmzb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb9f404b-8146-4111-8f49-19c5b49e3753_2016x702.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Pmzb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb9f404b-8146-4111-8f49-19c5b49e3753_2016x702.png" width="1456" height="507" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fb9f404b-8146-4111-8f49-19c5b49e3753_2016x702.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:507,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:517183,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://cybersect.substack.com/i/182985336?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb9f404b-8146-4111-8f49-19c5b49e3753_2016x702.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Pmzb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb9f404b-8146-4111-8f49-19c5b49e3753_2016x702.png 424w, https://substackcdn.com/image/fetch/$s_!Pmzb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb9f404b-8146-4111-8f49-19c5b49e3753_2016x702.png 848w, https://substackcdn.com/image/fetch/$s_!Pmzb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb9f404b-8146-4111-8f49-19c5b49e3753_2016x702.png 1272w, https://substackcdn.com/image/fetch/$s_!Pmzb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb9f404b-8146-4111-8f49-19c5b49e3753_2016x702.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>As you can see, the original algorithm now takes 27.2-ns vs. 5.4-ns. That&#8217;s because the cores are running at a slower clock rate (1.1-GHz instead of 4.1-GHz), but also because they are slower per clock cycle (4.7 IPC instead of 7.1 IPC).</p><p>The thing to note is that I&#8217;m getting branch/miss hardware counters to the right. I can see that the algorithm has 40 branches, and that in the larger data set, 1.6 branch misses.</p><p>This confirms branch misses are a problem, but introduces other problems. Branch misses are roughly the same cost, ~3ns to ~4ns, so doesn&#8217;t explain the 25ns slowdown we see here.</p><p>Another way I tested this is using an algorithm that gets rid of all branches. I&#8217;ve marked this in the screenshot below, in the [brch] column, where using SWAR techniques, the number of branches go from 40 to 2. And those branches come from simply calling the parse function.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!RhgK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cec61f6-6a2b-41da-9d08-e523e0c19827_2016x702.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RhgK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cec61f6-6a2b-41da-9d08-e523e0c19827_2016x702.png 424w, https://substackcdn.com/image/fetch/$s_!RhgK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cec61f6-6a2b-41da-9d08-e523e0c19827_2016x702.png 848w, https://substackcdn.com/image/fetch/$s_!RhgK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cec61f6-6a2b-41da-9d08-e523e0c19827_2016x702.png 1272w, https://substackcdn.com/image/fetch/$s_!RhgK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cec61f6-6a2b-41da-9d08-e523e0c19827_2016x702.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RhgK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cec61f6-6a2b-41da-9d08-e523e0c19827_2016x702.png" width="1456" height="507" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5cec61f6-6a2b-41da-9d08-e523e0c19827_2016x702.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:507,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:514783,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://cybersect.substack.com/i/182985336?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cec61f6-6a2b-41da-9d08-e523e0c19827_2016x702.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!RhgK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cec61f6-6a2b-41da-9d08-e523e0c19827_2016x702.png 424w, https://substackcdn.com/image/fetch/$s_!RhgK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cec61f6-6a2b-41da-9d08-e523e0c19827_2016x702.png 848w, https://substackcdn.com/image/fetch/$s_!RhgK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cec61f6-6a2b-41da-9d08-e523e0c19827_2016x702.png 1272w, https://substackcdn.com/image/fetch/$s_!RhgK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5cec61f6-6a2b-41da-9d08-e523e0c19827_2016x702.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>By &#8220;branches&#8221; we mean all &#8220;if&#8221; conditional statements, &#8220;for&#8221; or &#8220;while&#8221; loops, &#8220;gotos&#8221;, or &#8220;function calls&#8221;. By &#8220;SWAR&#8221; we mean using techniques from SIMD/GPUs applied to normal C code, which among other things, removes branches. You can go <a href="https://github.com/robertdavidgraham/blog-code/blob/master/2026-01-02/fastip/src/parse-ip-swar.c#L41">read the code</a> if you are interested to see how we can get rid of such things.</p><p>The [swar] algorithm for parsing addresses experiences no slowdowns when moving to the larger data set, implying that indeed, branches could be the problem. It has no branch mis-predictions because it has no branches.</p><p>Similarly, the next algorithm, [from], is branch heavy, with branch misses regardless of input size, again implying this could be related to the problem.</p><p>I have a bunch more algorithms. These are vibe coded, and not particularly optimized. Like the [swar] algorithm (also vibe coded), they are meant simply as a different way of looking at how the CPU operates rather than trying to be fast.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FZod!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91b50ce0-f64a-4230-b583-d84ea3d3960f_2016x1086.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FZod!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91b50ce0-f64a-4230-b583-d84ea3d3960f_2016x1086.png 424w, https://substackcdn.com/image/fetch/$s_!FZod!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91b50ce0-f64a-4230-b583-d84ea3d3960f_2016x1086.png 848w, https://substackcdn.com/image/fetch/$s_!FZod!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91b50ce0-f64a-4230-b583-d84ea3d3960f_2016x1086.png 1272w, https://substackcdn.com/image/fetch/$s_!FZod!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91b50ce0-f64a-4230-b583-d84ea3d3960f_2016x1086.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FZod!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91b50ce0-f64a-4230-b583-d84ea3d3960f_2016x1086.png" width="1456" height="784" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/91b50ce0-f64a-4230-b583-d84ea3d3960f_2016x1086.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:784,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:907317,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://cybersect.substack.com/i/182985336?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91b50ce0-f64a-4230-b583-d84ea3d3960f_2016x1086.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!FZod!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91b50ce0-f64a-4230-b583-d84ea3d3960f_2016x1086.png 424w, https://substackcdn.com/image/fetch/$s_!FZod!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91b50ce0-f64a-4230-b583-d84ea3d3960f_2016x1086.png 848w, https://substackcdn.com/image/fetch/$s_!FZod!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91b50ce0-f64a-4230-b583-d84ea3d3960f_2016x1086.png 1272w, https://substackcdn.com/image/fetch/$s_!FZod!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91b50ce0-f64a-4230-b583-d84ea3d3960f_2016x1086.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Three of these, [dfa], [fsm], and [fsm2] are different ways of using <strong>state-machines</strong> as parsers. They are unoptimized and therefore slower, but when optimized, they are usually the fast way of parsing. The reason is that they also optimize the surrounding code that calls them, namely, handling fragmented input.</p><p>A typical use of parsers first reassembles fragments then does an initial pre-parse, such as finding the end-of-line in text. State-machines avoid this.</p><p>Then, within the state-machine framework, you can use non-state-machine techniques to optimize things, getting the benefit of both worlds.</p><h1>Conclusion</h1><p>The high instructions-per-clock of 7 IPC from the original blogpost made me suspicious. I found that the size of the input test case matters. I&#8217;m still unsure why it matters, though I suspect it&#8217;s branch prediction related. I created a project that investigates this.</p><p></p><p></p><p></p><p></p><p></p><p></p>]]></content:encoded></item><item><title><![CDATA[Unredaction isn't hacking]]></title><description><![CDATA[It just wasn't redacted to begin with.]]></description><link>https://cybersect.substack.com/p/unredaction-isnt-hacking</link><guid isPermaLink="false">https://cybersect.substack.com/p/unredaction-isnt-hacking</guid><dc:creator><![CDATA[Robert Graham]]></dc:creator><pubDate>Wed, 24 Dec 2025 08:23:02 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Nuz-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f9f11e7-786e-43ed-94cc-0636609dad59_1634x1164.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>This Guardian article says that &#8220;<em><a href="https://www.theguardian.com/us-news/2025/dec/23/epstein-unredacted-files-social-media">Epstein file redactions are being undone with hacks</a></em>&#8221;. They aren&#8217;t hacks &#8212; the files simply weren&#8217;t redacted in the first place.</p><p>They looked redacted. They had black bars over the text, preventing humans from seeing the text. But, the text was still there. A redaction needs to remove the text &#8212; but the FBI&#8217;s attempt at redaction did not.</p><p>To understand this, open a word processing program like Microsoft Word or Google Docs. They have an option to change the background of text, the &#8220;Highlight Color&#8221;. An example is this below, where I show some text highlighted with <strong>yellow</strong>, and some other text that I&#8217;ve highlighted with <strong>black.</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Nuz-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f9f11e7-786e-43ed-94cc-0636609dad59_1634x1164.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Nuz-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f9f11e7-786e-43ed-94cc-0636609dad59_1634x1164.png 424w, https://substackcdn.com/image/fetch/$s_!Nuz-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f9f11e7-786e-43ed-94cc-0636609dad59_1634x1164.png 848w, https://substackcdn.com/image/fetch/$s_!Nuz-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f9f11e7-786e-43ed-94cc-0636609dad59_1634x1164.png 1272w, https://substackcdn.com/image/fetch/$s_!Nuz-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f9f11e7-786e-43ed-94cc-0636609dad59_1634x1164.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Nuz-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f9f11e7-786e-43ed-94cc-0636609dad59_1634x1164.png" width="1456" height="1037" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3f9f11e7-786e-43ed-94cc-0636609dad59_1634x1164.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1037,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:374043,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://cybersect.substack.com/i/182487905?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f9f11e7-786e-43ed-94cc-0636609dad59_1634x1164.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Nuz-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f9f11e7-786e-43ed-94cc-0636609dad59_1634x1164.png 424w, https://substackcdn.com/image/fetch/$s_!Nuz-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f9f11e7-786e-43ed-94cc-0636609dad59_1634x1164.png 848w, https://substackcdn.com/image/fetch/$s_!Nuz-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f9f11e7-786e-43ed-94cc-0636609dad59_1634x1164.png 1272w, https://substackcdn.com/image/fetch/$s_!Nuz-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f9f11e7-786e-43ed-94cc-0636609dad59_1634x1164.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Now if I choose a black background color, the text becomes unreadable, because it&#8217;s foreground color is also black. <strong>But this doesn&#8217;t mean the text isn&#8217;t there</strong>. You can select the text and change it back to white (or yellow) in order to make it readable again. Or, you can select the text and paste it into a different document. Here is <a href="https://docs.google.com/document/d/1ihtXG8Zw5pUi4vRXx2Nzcf7ZQttPJZ1s4oWJ6_RN-OY/edit?usp=sharing">a link to the Google Doc</a> so that you can see this for yourself.</p><p><strong>We are not hacking</strong> when we select the text in an editor, copy, thend paste it somewhere else in order to read it. We aren&#8217;t particularly smart, it&#8217;s just that FBI agents are particularly stupid, believing that if they can&#8217;t read the text that it has been &#8220;redacted&#8221;. It hasn&#8217;t, the text is still there.</p><p>Changing the highlight color to black is something you can try at home, but what happened with the Epstein PDF files is slightly different. Instead of changing the background, they put black bars in front of the text. But anybody reading the PDF file online can still select the text, copy it, and paste the text somewhere else in order to easily view it.</p><p>Thus, when you see this sort of thing in a PDF file, you don&#8217;t know if it&#8217;s actually been redacted, whether the text is still there, or whether its been removed. You have to select the text and copy it.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!CkEA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F639befb0-8480-4a33-bd49-6cd4f39e9d6f_1854x760.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CkEA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F639befb0-8480-4a33-bd49-6cd4f39e9d6f_1854x760.png 424w, https://substackcdn.com/image/fetch/$s_!CkEA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F639befb0-8480-4a33-bd49-6cd4f39e9d6f_1854x760.png 848w, https://substackcdn.com/image/fetch/$s_!CkEA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F639befb0-8480-4a33-bd49-6cd4f39e9d6f_1854x760.png 1272w, https://substackcdn.com/image/fetch/$s_!CkEA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F639befb0-8480-4a33-bd49-6cd4f39e9d6f_1854x760.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CkEA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F639befb0-8480-4a33-bd49-6cd4f39e9d6f_1854x760.png" width="457" height="187.38255494505495" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/639befb0-8480-4a33-bd49-6cd4f39e9d6f_1854x760.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:597,&quot;width&quot;:1456,&quot;resizeWidth&quot;:457,&quot;bytes&quot;:140535,&quot;alt&quot;:&quot;80.       Defendants Kahn and Indyke controlled and directed the activities of the other entities and personal bank accounts of Epstein accounts after they were funded. One, and frequently both, of them were officers or directors of Butterfly Trust; of companies holding Epstein&#8217;s real property (as laid out below); and of Financial Strategy Group, Ltd.; Financial Trust, Inc.; FT Real Estate Inc.; Gratitude America, Inc.; Hyperion Air, Inc.; J. Epstein Virgin Islands Foundation, Inc.; Jeepers, Inc.; Mort, Inc.; Nautilus, Inc.; and Zorro Development Corporation; among others.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://cybersect.substack.com/i/182487905?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F639befb0-8480-4a33-bd49-6cd4f39e9d6f_1854x760.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="80.       Defendants Kahn and Indyke controlled and directed the activities of the other entities and personal bank accounts of Epstein accounts after they were funded. One, and frequently both, of them were officers or directors of Butterfly Trust; of companies holding Epstein&#8217;s real property (as laid out below); and of Financial Strategy Group, Ltd.; Financial Trust, Inc.; FT Real Estate Inc.; Gratitude America, Inc.; Hyperion Air, Inc.; J. Epstein Virgin Islands Foundation, Inc.; Jeepers, Inc.; Mort, Inc.; Nautilus, Inc.; and Zorro Development Corporation; among others." title="80.       Defendants Kahn and Indyke controlled and directed the activities of the other entities and personal bank accounts of Epstein accounts after they were funded. One, and frequently both, of them were officers or directors of Butterfly Trust; of companies holding Epstein&#8217;s real property (as laid out below); and of Financial Strategy Group, Ltd.; Financial Trust, Inc.; FT Real Estate Inc.; Gratitude America, Inc.; Hyperion Air, Inc.; J. Epstein Virgin Islands Foundation, Inc.; Jeepers, Inc.; Mort, Inc.; Nautilus, Inc.; and Zorro Development Corporation; among others." srcset="https://substackcdn.com/image/fetch/$s_!CkEA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F639befb0-8480-4a33-bd49-6cd4f39e9d6f_1854x760.png 424w, https://substackcdn.com/image/fetch/$s_!CkEA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F639befb0-8480-4a33-bd49-6cd4f39e9d6f_1854x760.png 848w, https://substackcdn.com/image/fetch/$s_!CkEA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F639befb0-8480-4a33-bd49-6cd4f39e9d6f_1854x760.png 1272w, https://substackcdn.com/image/fetch/$s_!CkEA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F639befb0-8480-4a33-bd49-6cd4f39e9d6f_1854x760.png 1456w" sizes="100vw"></picture><div></div></div></a></figure></div><p>This is one of the many non-redacted redactions in the Epstein dump. I include the PDF with this post so that you can scroll down to section 80 and see for yourself that the text hasn&#8217;t been redacted. Select the entire paragraph, copy, and paste somewhere else.</p><div class="file-embed-wrapper" data-component-name="FileToDOM"><div class="file-embed-container-reader"><div class="file-embed-container-top"><image class="file-embed-thumbnail-default" src="https://substackcdn.com/image/fetch/$s_!0Cy0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2Fattachment_icon.svg"></image><div class="file-embed-details"><div class="file-embed-details-h1">2022</div><div class="file-embed-details-h2">823KB &#8729; PDF file</div></div><a class="file-embed-button wide" href="https://cybersect.substack.com/api/v1/file/30947142-87e3-4b6d-90c8-fe776b16860b.pdf"><span class="file-embed-button-text">Download</span></a></div><a class="file-embed-button narrow" href="https://cybersect.substack.com/api/v1/file/30947142-87e3-4b6d-90c8-fe776b16860b.pdf"><span class="file-embed-button-text">Download</span></a></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[Experts vs. WiFi privacy vs. VPNs]]></title><description><![CDATA[Recently on the socials there was a discussion whether VPNs are needed to protect your privacy while on WiFi.]]></description><link>https://cybersect.substack.com/p/experts-vs-wifi-privacy-vs-vpns</link><guid isPermaLink="false">https://cybersect.substack.com/p/experts-vs-wifi-privacy-vs-vpns</guid><dc:creator><![CDATA[Robert Graham]]></dc:creator><pubDate>Sun, 16 Nov 2025 02:03:27 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!JNyB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e66074d-6594-4bc3-b698-c26d0d74edb0_1536x1024.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!JNyB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e66074d-6594-4bc3-b698-c26d0d74edb0_1536x1024.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!JNyB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e66074d-6594-4bc3-b698-c26d0d74edb0_1536x1024.jpeg 424w, https://substackcdn.com/image/fetch/$s_!JNyB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e66074d-6594-4bc3-b698-c26d0d74edb0_1536x1024.jpeg 848w, https://substackcdn.com/image/fetch/$s_!JNyB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e66074d-6594-4bc3-b698-c26d0d74edb0_1536x1024.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!JNyB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e66074d-6594-4bc3-b698-c26d0d74edb0_1536x1024.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!JNyB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e66074d-6594-4bc3-b698-c26d0d74edb0_1536x1024.jpeg" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3e66074d-6594-4bc3-b698-c26d0d74edb0_1536x1024.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:59718,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://cybersect.substack.com/i/178816911?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e66074d-6594-4bc3-b698-c26d0d74edb0_1536x1024.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!JNyB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e66074d-6594-4bc3-b698-c26d0d74edb0_1536x1024.jpeg 424w, https://substackcdn.com/image/fetch/$s_!JNyB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e66074d-6594-4bc3-b698-c26d0d74edb0_1536x1024.jpeg 848w, https://substackcdn.com/image/fetch/$s_!JNyB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e66074d-6594-4bc3-b698-c26d0d74edb0_1536x1024.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!JNyB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e66074d-6594-4bc3-b698-c26d0d74edb0_1536x1024.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">What ChatGPT imagines a hacker eavesdropping on a network wire looks like. It got the number of fingers correct.</figcaption></figure></div><p>Recently on the socials there was a discussion whether VPNs are needed to protect your privacy while on WiFi. As an expert, I have comments. More to the point, I have evidence.</p><p>The last part about &#8220;evidence&#8221; is important because of tweets like the one shown below, where the author demands people believe him because he&#8217;s an expert. He was wrong, though. I&#8217;m a bigger expert, but more to the point, as you&#8217;ll see below, I can show the evidence.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!kesU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd1f7898-5f22-4119-bced-4f9704cabd85_884x287.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!kesU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd1f7898-5f22-4119-bced-4f9704cabd85_884x287.png 424w, https://substackcdn.com/image/fetch/$s_!kesU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd1f7898-5f22-4119-bced-4f9704cabd85_884x287.png 848w, https://substackcdn.com/image/fetch/$s_!kesU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd1f7898-5f22-4119-bced-4f9704cabd85_884x287.png 1272w, https://substackcdn.com/image/fetch/$s_!kesU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd1f7898-5f22-4119-bced-4f9704cabd85_884x287.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!kesU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd1f7898-5f22-4119-bced-4f9704cabd85_884x287.png" width="884" height="287" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fd1f7898-5f22-4119-bced-4f9704cabd85_884x287.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:287,&quot;width&quot;:884,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:43257,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://cybersect.substack.com/i/178816911?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd1f7898-5f22-4119-bced-4f9704cabd85_884x287.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!kesU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd1f7898-5f22-4119-bced-4f9704cabd85_884x287.png 424w, https://substackcdn.com/image/fetch/$s_!kesU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd1f7898-5f22-4119-bced-4f9704cabd85_884x287.png 848w, https://substackcdn.com/image/fetch/$s_!kesU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd1f7898-5f22-4119-bced-4f9704cabd85_884x287.png 1272w, https://substackcdn.com/image/fetch/$s_!kesU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffd1f7898-5f22-4119-bced-4f9704cabd85_884x287.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Cybersecurity has changed a lot over the years, and a lot of expert advice may be outdated.</p><p>Because SSL/TLS is used everywhere, it&#8217;s relatively safe to use public WiFi. It&#8217;s not 100%, you may have your email program misconfigured to send plaintext, or somebody may trick you into ignoring warnings caused by a man-in-the-middle attack, but it&#8217;s safe enough that experts themselves use public WiFi.</p><p>You still still admonitions to avoid public WiFi by those giving cybersecurity advice. It&#8217;s one of the ways of measuring the trustworthiness of advice &#8212; especially by those claiming the mantle of an official government department qualified to give such advice. Such advice almost always sucks.</p><p>The things that still leak over public WiFi are DNS lookups, website names in SSL/TLS headers, and the IP addresses of websites. I&#8217;ll talk about all three in this post.</p><p>To fix plain-text DNS, you can now send DNS requests to public resolvers over SSL/TLS. Google&#8217;s 8.8.8.8 resolver, CloudFlare&#8217;s 1.1.1.1 resolver, and many others support it. You can configure your browser to use them, and/or configure Windows 11 to use them more broadly than just the web browser.</p><p>The screenshot below is how I enabled it in my browser (Brave); ask the AI how to enable it in your browser.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!CZnW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F685c98bc-3e91-4d36-a7fc-eed7a0a1f17d_1006x207.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CZnW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F685c98bc-3e91-4d36-a7fc-eed7a0a1f17d_1006x207.png 424w, https://substackcdn.com/image/fetch/$s_!CZnW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F685c98bc-3e91-4d36-a7fc-eed7a0a1f17d_1006x207.png 848w, https://substackcdn.com/image/fetch/$s_!CZnW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F685c98bc-3e91-4d36-a7fc-eed7a0a1f17d_1006x207.png 1272w, https://substackcdn.com/image/fetch/$s_!CZnW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F685c98bc-3e91-4d36-a7fc-eed7a0a1f17d_1006x207.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CZnW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F685c98bc-3e91-4d36-a7fc-eed7a0a1f17d_1006x207.png" width="1006" height="207" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/685c98bc-3e91-4d36-a7fc-eed7a0a1f17d_1006x207.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:207,&quot;width&quot;:1006,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:35249,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://cybersect.substack.com/i/178816911?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F685c98bc-3e91-4d36-a7fc-eed7a0a1f17d_1006x207.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!CZnW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F685c98bc-3e91-4d36-a7fc-eed7a0a1f17d_1006x207.png 424w, https://substackcdn.com/image/fetch/$s_!CZnW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F685c98bc-3e91-4d36-a7fc-eed7a0a1f17d_1006x207.png 848w, https://substackcdn.com/image/fetch/$s_!CZnW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F685c98bc-3e91-4d36-a7fc-eed7a0a1f17d_1006x207.png 1272w, https://substackcdn.com/image/fetch/$s_!CZnW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F685c98bc-3e91-4d36-a7fc-eed7a0a1f17d_1006x207.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>The above tweet mentions encrypted DNS as well as &#8220;ECH&#8221; or &#8220;Encrypted Client Hello&#8221;. </p><p>SSL/TLS famously encrypts the connection, but it starts with an unencrypted &#8220;handshake&#8221; or &#8220;hello&#8221; step. The server name (&#8220;SNI&#8221;) is sent during that process.</p><p>The latest version, TLS 1.3, supports an optional encryption of this handshake, &#8220;ECH&#8221;, that will hide details, including the server name.</p><p>But it&#8217;s not widely supported as the above tweet claims. Anybody can verify this trivially by &#8220;sniffing&#8221; their own packets and seeing the names of websites appear in those packets.</p><p>I&#8217;m at a bar using public WiFi and did just that, visiting &#8220;PornHub&#8221;. As you can see, the name &#8220;pornhub.com&#8221; is right there in the packet.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!3IZV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d3ceebf-422e-49da-8970-5cac395b8b49_1448x829.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!3IZV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d3ceebf-422e-49da-8970-5cac395b8b49_1448x829.png 424w, https://substackcdn.com/image/fetch/$s_!3IZV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d3ceebf-422e-49da-8970-5cac395b8b49_1448x829.png 848w, https://substackcdn.com/image/fetch/$s_!3IZV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d3ceebf-422e-49da-8970-5cac395b8b49_1448x829.png 1272w, https://substackcdn.com/image/fetch/$s_!3IZV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d3ceebf-422e-49da-8970-5cac395b8b49_1448x829.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!3IZV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d3ceebf-422e-49da-8970-5cac395b8b49_1448x829.png" width="1448" height="829" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1d3ceebf-422e-49da-8970-5cac395b8b49_1448x829.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:829,&quot;width&quot;:1448,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:803183,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://cybersect.substack.com/i/178816911?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d3ceebf-422e-49da-8970-5cac395b8b49_1448x829.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!3IZV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d3ceebf-422e-49da-8970-5cac395b8b49_1448x829.png 424w, https://substackcdn.com/image/fetch/$s_!3IZV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d3ceebf-422e-49da-8970-5cac395b8b49_1448x829.png 848w, https://substackcdn.com/image/fetch/$s_!3IZV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d3ceebf-422e-49da-8970-5cac395b8b49_1448x829.png 1272w, https://substackcdn.com/image/fetch/$s_!3IZV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1d3ceebf-422e-49da-8970-5cac395b8b49_1448x829.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Don&#8217;t trust me because I&#8217;m an expert, trust the evidence. This guy demanded you trust him as an expert, but yet, he obviously got things wrong. He didn&#8217;t use a sniffer.</p><p>But the thing that <strong>really</strong> irritates me about the &#8220;trust me, I&#8217;m an expert&#8221; approach is his response to the screenshot debunking him.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ODM9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b41e3b6-2ae9-4c0a-8c82-9e7c7af27a24_885x243.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ODM9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b41e3b6-2ae9-4c0a-8c82-9e7c7af27a24_885x243.png 424w, https://substackcdn.com/image/fetch/$s_!ODM9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b41e3b6-2ae9-4c0a-8c82-9e7c7af27a24_885x243.png 848w, https://substackcdn.com/image/fetch/$s_!ODM9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b41e3b6-2ae9-4c0a-8c82-9e7c7af27a24_885x243.png 1272w, https://substackcdn.com/image/fetch/$s_!ODM9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b41e3b6-2ae9-4c0a-8c82-9e7c7af27a24_885x243.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ODM9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b41e3b6-2ae9-4c0a-8c82-9e7c7af27a24_885x243.png" width="885" height="243" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1b41e3b6-2ae9-4c0a-8c82-9e7c7af27a24_885x243.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:243,&quot;width&quot;:885,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:38021,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://cybersect.substack.com/i/178816911?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b41e3b6-2ae9-4c0a-8c82-9e7c7af27a24_885x243.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ODM9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b41e3b6-2ae9-4c0a-8c82-9e7c7af27a24_885x243.png 424w, https://substackcdn.com/image/fetch/$s_!ODM9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b41e3b6-2ae9-4c0a-8c82-9e7c7af27a24_885x243.png 848w, https://substackcdn.com/image/fetch/$s_!ODM9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b41e3b6-2ae9-4c0a-8c82-9e7c7af27a24_885x243.png 1272w, https://substackcdn.com/image/fetch/$s_!ODM9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b41e3b6-2ae9-4c0a-8c82-9e7c7af27a24_885x243.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The answer is that it doesn&#8217;t matter which DNS I&#8217;m using. If he were an expert, he&#8217;d know that. Furthermore, when confronted with evidence, the correct response is to either admit you were wrong or provide evidence of your own.</p><p>Instead, he attacked a possible flaw, to cast doubt on the screenshot. In the world of toxic twitters, this is the sort of things pundits do to satisfy their fanboys. The fanboys will believe my evidence has been debunked, when in fact, nothing of the sort happened.</p><p>In any case, I addressed the flaw:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ulOl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb137327f-a290-4361-aa84-f7c731fea854_2138x1384.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ulOl!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb137327f-a290-4361-aa84-f7c731fea854_2138x1384.png 424w, https://substackcdn.com/image/fetch/$s_!ulOl!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb137327f-a290-4361-aa84-f7c731fea854_2138x1384.png 848w, https://substackcdn.com/image/fetch/$s_!ulOl!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb137327f-a290-4361-aa84-f7c731fea854_2138x1384.png 1272w, https://substackcdn.com/image/fetch/$s_!ulOl!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb137327f-a290-4361-aa84-f7c731fea854_2138x1384.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ulOl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb137327f-a290-4361-aa84-f7c731fea854_2138x1384.png" width="1456" height="943" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b137327f-a290-4361-aa84-f7c731fea854_2138x1384.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:943,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:794019,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://cybersect.substack.com/i/178816911?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb137327f-a290-4361-aa84-f7c731fea854_2138x1384.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ulOl!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb137327f-a290-4361-aa84-f7c731fea854_2138x1384.png 424w, https://substackcdn.com/image/fetch/$s_!ulOl!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb137327f-a290-4361-aa84-f7c731fea854_2138x1384.png 848w, https://substackcdn.com/image/fetch/$s_!ulOl!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb137327f-a290-4361-aa84-f7c731fea854_2138x1384.png 1272w, https://substackcdn.com/image/fetch/$s_!ulOl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb137327f-a290-4361-aa84-f7c731fea854_2138x1384.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>As you can see, I&#8217;m getting DNS from 1.1.1.1 over TLSv1.3, but still ECH is not used by PornHub.</p><p>I admit, things can get more complicated. When I told the browser to use 1.1.1.1, it didn&#8217;t. Instead, it used &#8220;chrome.cloudflare-dns.com&#8221; server, which maps to 162.159.61.3. It&#8217;s fine, it&#8217;s the same service. To configure 1.1.1.1, I have to manually enter the URL:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!xh5J!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe490996d-2cc7-4b51-9c02-f29f8e4b6316_1336x456.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xh5J!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe490996d-2cc7-4b51-9c02-f29f8e4b6316_1336x456.png 424w, https://substackcdn.com/image/fetch/$s_!xh5J!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe490996d-2cc7-4b51-9c02-f29f8e4b6316_1336x456.png 848w, https://substackcdn.com/image/fetch/$s_!xh5J!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe490996d-2cc7-4b51-9c02-f29f8e4b6316_1336x456.png 1272w, https://substackcdn.com/image/fetch/$s_!xh5J!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe490996d-2cc7-4b51-9c02-f29f8e4b6316_1336x456.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xh5J!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe490996d-2cc7-4b51-9c02-f29f8e4b6316_1336x456.png" width="1336" height="456" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e490996d-2cc7-4b51-9c02-f29f8e4b6316_1336x456.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:456,&quot;width&quot;:1336,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:73029,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://cybersect.substack.com/i/178816911?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe490996d-2cc7-4b51-9c02-f29f8e4b6316_1336x456.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!xh5J!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe490996d-2cc7-4b51-9c02-f29f8e4b6316_1336x456.png 424w, https://substackcdn.com/image/fetch/$s_!xh5J!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe490996d-2cc7-4b51-9c02-f29f8e4b6316_1336x456.png 848w, https://substackcdn.com/image/fetch/$s_!xh5J!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe490996d-2cc7-4b51-9c02-f29f8e4b6316_1336x456.png 1272w, https://substackcdn.com/image/fetch/$s_!xh5J!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe490996d-2cc7-4b51-9c02-f29f8e4b6316_1336x456.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Yes, such details are boring, but I&#8217;m trying to make it easy for anybody to replicate this rather than trust my word as an &#8220;expert&#8221;.</p><p>Besides DNS and SNI, the third place that leaks the website is the IP address. In the above screenshots, you&#8217;ll notice that PornHub is located at 66.254.114.41. This maps to <strong>reflected.net</strong>, a CDN or &#8220;Content Delivery Network&#8221; &#8212; not actually PornHub.</p><p>CDNs effectively mask IP addresses of the server. Content providers, like PornHub, give the content to CDNs, which in turn, give it to the consumer. That CDN&#8217;s address may simultaneously be hosting content from PornHub, Disney, the BBC, and the Department of Defense.</p><p>CDNs put their servers in major cities around the world. While you may think you are accessing a website thousands of miles away, most of the content comes from a data center located less than 100 miles away. One of these days I&#8217;ll do a robust study measuring the average distance an Internet packet travels; I bet it&#8217;s less than 100 miles (200km).</p><p>In any case, CDNs really handle &#8220;bulk&#8221; content, like the home page and videos. If I surfed PornHub enough, I&#8217;m sure it would eventually leak an IP address that can be tied to it. Unfortunately, I&#8217;m in the state of Georgia right now which blocks PornHub, so all I can see are a home page and some help pages.</p><h1>Conclusion</h1><p>David Plummer is right: you are far less exposed on a public WiFi than you were in the past. With near universal SSL/TLS support, encrypted DNS, encrypted Hellos, and content deliver networks, adversaries can&#8217;t see much.</p><p>But at the same time, SSL/TLS is only &#8220;nearly&#8221; universal, encrypted Hellos are not widely supported, and not everything goes through a CDN. Adversaries can still see enough.</p><p>The &#8220;expert&#8221; is correct knowing that such things exist, but he&#8217;s not an expert enough to simply put Wireshark on his network and see the exposure for himself.</p><p>I don&#8217;t know how much VPNs help. As far as the local WiFi is concerned, you are anonymous. MAC addresses are randomized these days so they can&#8217;t really identify you. VPN providers, however, are not so anonymous. Most have your user account information. Some allow anonymous payments with cryptocurrency, but still, if you connect to their service from home, they&#8217;ll have your home IP address. They promise to ignore such things, and some probably do. But ultimately, you are just shifting trust one the local bar to a remote company in Sweden.</p><p>My point is that I&#8217;m an expert and I don&#8217;t know what you should do. I can educate you on the choices, but I can&#8217;t make choices for you. Don&#8217;t trust anybody that claims to be an expert making choices for you, telling you what to do (or not do). Especially when the evidence shows they are wrong.</p>]]></content:encoded></item><item><title><![CDATA[The Nihilistic Cybersecurity Certification (NCC) exam]]></title><description><![CDATA[Are you a hacker>]]></description><link>https://cybersect.substack.com/p/the-nihilistic-cybersecurity-certification</link><guid isPermaLink="false">https://cybersect.substack.com/p/the-nihilistic-cybersecurity-certification</guid><dc:creator><![CDATA[Robert Graham]]></dc:creator><pubDate>Sun, 02 Nov 2025 21:24:05 GMT</pubDate><content:encoded><![CDATA[<p>There has been some discussion on certification of cybersecurity professionals. I&#8217;ve formulated this test to see if you truly have experience in this field. (Most questions pulled from other sources, with the help of AI)).</p><div><hr></div><h2>Section 1: Foundations of Hopeless Security</h2><ol><li><p>What is the difference between information security and cybersecurity?<br><strong>Answer:</strong> Cybersecurity has better branding, but both will fail eventually.</p></li><li><p>Define the CIA triad.<br><strong>Answer:</strong> Confidentiality, Integrity, Availability &#8212; none of which exist in production.</p></li><li><p>What is risk management?<br><strong>Answer:</strong> The ancient art of pretending you can predict chaos in spreadsheet format.</p></li></ol><div><hr></div><h2>Section 2: Governance, Incidents, and Blame Assignment</h2><ol><li><p>What are the job responsibilities of the Chief Information Security Officer (CISO)?<br><strong>Answer:</strong> Take the fall.</p></li><li><p>What is an incident response plan?<br><strong>Answer:</strong> A collection of phone numbers you&#8217;ll call when it&#8217;s already too late.</p></li><li><p>Define &#8220;zero trust.&#8221;<br><strong>Answer:</strong> The logical conclusion of working in security for more than six months.</p></li></ol><div><hr></div><h2>Section 3: Technical Controls in a Meaningless Universe</h2><ol><li><p>Explain network segmentation.<br><strong>Answer:</strong> Dividing one unprotected network into several smaller unprotected networks.</p></li><li><p>Describe the purpose of a firewall.<br><strong>Answer:</strong> To provide a warm illusion of control while the attackers come through the cloud configuration.</p></li><li><p>What is encryption?<br><strong>Answer:</strong> A reversible delay mechanism for data theft.</p></li><li><p>What is the cloud?<br><strong>Answer:</strong> Putting data somewhere else. And responsibility for that data.</p></li></ol><div><hr></div><h2>Section 4: Compliance and Regulatory Theater</h2><ol><li><p>What is the main goal of compliance frameworks like ISO 27001 or NIST CSF?<br><strong>Answer:</strong> To produce binders that comfort executives.</p></li><li><p>What is GDPR?<br><strong>Answer:</strong> A law that ensures Europeans can be ignored more politely.</p></li><li><p>Why conduct security awareness training?<br><strong>Answer:</strong> To remind employees exactly how they&#8217;ll cause the next breach.</p></li></ol><div><hr></div><h2>Section 5: The Final Essay</h2><p><strong>Prompt:</strong><br>Discuss the philosophical futility of patch management in an era of infinite vulnerabilities. Use real-world examples of despair, such as legacy systems, executive dashboards, or unmonitored S3 buckets.</p>]]></content:encoded></item><item><title><![CDATA[Yes, OSI Model was based on IBM mainframes]]></title><description><![CDATA[So very mainframey]]></description><link>https://cybersect.substack.com/p/yes-osi-model-was-based-on-ibm-mainframes</link><guid isPermaLink="false">https://cybersect.substack.com/p/yes-osi-model-was-based-on-ibm-mainframes</guid><dc:creator><![CDATA[Robert Graham]]></dc:creator><pubDate>Thu, 30 Oct 2025 20:20:52 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!TDNN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e2913ea-3419-4c32-9be0-eda89025f7ca_1536x1024.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!TDNN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e2913ea-3419-4c32-9be0-eda89025f7ca_1536x1024.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TDNN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e2913ea-3419-4c32-9be0-eda89025f7ca_1536x1024.jpeg 424w, https://substackcdn.com/image/fetch/$s_!TDNN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e2913ea-3419-4c32-9be0-eda89025f7ca_1536x1024.jpeg 848w, https://substackcdn.com/image/fetch/$s_!TDNN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e2913ea-3419-4c32-9be0-eda89025f7ca_1536x1024.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!TDNN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e2913ea-3419-4c32-9be0-eda89025f7ca_1536x1024.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TDNN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e2913ea-3419-4c32-9be0-eda89025f7ca_1536x1024.jpeg" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2e2913ea-3419-4c32-9be0-eda89025f7ca_1536x1024.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:127798,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://cybersect.substack.com/i/177393356?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e2913ea-3419-4c32-9be0-eda89025f7ca_1536x1024.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!TDNN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e2913ea-3419-4c32-9be0-eda89025f7ca_1536x1024.jpeg 424w, https://substackcdn.com/image/fetch/$s_!TDNN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e2913ea-3419-4c32-9be0-eda89025f7ca_1536x1024.jpeg 848w, https://substackcdn.com/image/fetch/$s_!TDNN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e2913ea-3419-4c32-9be0-eda89025f7ca_1536x1024.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!TDNN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e2913ea-3419-4c32-9be0-eda89025f7ca_1536x1024.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">ChatGPT on what a typical French person messing with a mainframe model looks like.</figcaption></figure></div><p>ESR, a famous nerd, <a href="https://x.com/esrtweet/status/1982159747110293843">disagrees with my claim</a> that the &#8220;OSI Model&#8221; was based upon IBM &#8220;mainframes&#8221;. It was, but it&#8217;s complicated.</p><p>ESR&#8217;s version of history is right&#8212;that the OSI Model was driven by European academics opposed to American DoD researchers. But there&#8217;s another view of this history, where these academics were still influenced by Big Government, Big Telcos, and Big Mainframes.</p><p>In this post, I describe how they are related. I explain how the idea of a &#8220;model&#8221; comes from mainframe networks, how the lower layers were based directly on the mainframe network stack, and how the upper layers were inspired by mainframe thinking.</p><h2>What&#8217;s a Mainframe?</h2><p>The &#8220;mainframe&#8221; comes from the era where computers were so expensive that an organization could only afford one of them. Such early computers didn&#8217;t even have the typical user interface of a keyboard and screen. They were just buttons and panels of &#8220;blinking lights&#8221; that were programmed with punch cards.</p><p>As Moore&#8217;s Law turned, there was a fork in technology. One fork led to the democratization of computing, with more and more power on a user&#8217;s desktop. But another fork led to smarter devices attached to the mainframe, with the mainframe still in control.</p><p>In this fork of technology, users had simple &#8220;terminals&#8221; that merely displayed content rather than running code. The app&#8217;s code still just ran on the central mainframe.</p><p>IBM was the biggest supplier of mainframe computers. In the 1970s, IBM accounted for about half of the entire computer industry. American researchers and companies like Intel and Xerox often lived in a separate non-IBM world, which is why we have non-mainframe technology today. But much of the rest of the world still lived in the grasp of IBM.</p><h2>Where OSI Comes From</h2><p>The lead author was Hubert Zimmermann of OSI, a French researcher who helped develop the CYCLADES network, from where the Internet gets its &#8220;end-to-end&#8221; principle.</p><p>But the Europeans in turn were building standards from the top down. At the top were the big national telephone companies and big industrial firms, with &#8220;stakeholders&#8221; and &#8220;committees&#8221;. As such, the original OSI Model was based upon industry more than academia. (The Internet was built bottom-up &#8212; nerds just built things, whatever worked became the standard).</p><p>The original 7 layers were contributed by Charles Bachman, an engineer working for Honeywell, one of IBM&#8217;s mainframe competitors. Honeywell was building a network stack modeled on IBM&#8217;s SNA.</p><p>Hence, the original OSI layers matched very closely with IBM&#8217;s &#8220;SNA&#8221; network layers, especially the bottom 3 layers. The easiest way of understanding what the OSI standards actually mean is to read documentation from the 1970s about how SNA actually worked. You really aren&#8217;t going to understand what the &#8220;Session Layer&#8221; really intends unless you learn about SNA&#8217;s &#8220;Data Flow Control (DFC)&#8221; functionality.</p><p>The important thing about IBM&#8217;s mainframe network stack was that it&#8217;s essentially a single product. Each layer specifies a piece of the larger product.</p><p>That&#8217;s where the OSI Model goes wrong. It sees the entire stack as having a fixed number of layers, where each layer has a different purpose.</p><p>That&#8217;s not how things work on the Internet. Layering happens, but in an ad hoc fashion. In RFC 791, the [Internet Protocol] runs over some sort of local link or local network, but the local details don&#8217;t matter. It might be Ethernet, or it might be pigeons. The local network may itself have sublayers, but that fact is opaque to the Internet as a whole.</p><p>The RFC 791 model is really only two sublayers: the Internet Protocol layer and the transport layer. Everything above that is just some sort of payload. What runs on top is as opaque as whatever links things below.</p><p>The idea of fixed vs. ad hoc layers led to much debate about SSL/TLS. People wanted to make SSL fit the fixed OSI Model, which really had no place for it. People struggled to accept that this was just an ad hoc layer, that it used transport below, providing encryption to the payload above.</p><p>The point is that the idea of fixed layers with assigned functionality comes from the IBM mainframe world. It is largely foreign to the Internet standards.</p><h2>Layer #2 and SDLC</h2><p>IBM mainframes inspired the fixed-function model as a whole, but also defined several of the layers specifically.</p><p>The OSI &#8220;Data Link&#8221; layer comes directly from IBM&#8217;s &#8220;SDLC,&#8221; which stands for &#8220;Synchronous Data Link Control&#8221;. It&#8217;s right there in the names, &#8220;Data Link&#8221;.</p><p>In the beginning (as far back as 1800s), all you had was a &#8220;link&#8221;&#8212;a wire connecting two points. (There were also multidrop wires, but forget about that for the moment.)</p><p>Such links could have &#8220;dumb&#8221; devices on either end, devices without a CPU or even transistors. The early teletypes were just that sort of dumb device.</p><p>The early RS232 serial link standard had 25 pins. Only 3 wires were strictly necessary: transmit, receive, and a common ground. Other pins were used for control. For example, if the sender was transmitting faster than the receiver could keep up, the receiver would send current down a dedicated pin to tell the sender to pause. This could be handled with mechanical solenoids rather than needing software.</p><p>The invention of the 8-bit microprocessor changed things. Suddenly, it became practical to put smart software on either end of a link. Link &#8220;protocols&#8221; changed from being separate wires to data sent back and forth in packets. If the sender was transmitting too fast, the receiver would send a message in the other direction.</p><p>This was the birth of IBM&#8217;s &#8220;SDLC.&#8221; It was a packet protocol for serial links. Among its features was adding checksums and serial numbers to packets so that if they got corrupted, they could be resent. This was a big problem with the low-tech cables and connectors of the time, where electronic noise would corrupt packets.</p><p>IBM&#8217;s SDLC quickly inspired standardization. One standards effort was a slight variation called &#8220;HDLC,&#8221; with some small variations. Another variant was called &#8220;LAPB,&#8221; used in the telco X.25 standards.</p><p>The original Ethernet had no such thing. When Ethernet was standardized and pigeonholed into Layer #2, they needed to add something compatible with SDLC. This was called &#8220;LLC&#8221; and is standardized as IEEE 802.2, and runs as a sublayer on top of the Ethernet &#8220;MAC&#8221; sublayer, both part of Layer #2.</p><p>You don&#8217;t see LLC today because it was never actually needed. It exists only to make the non-mainframe Ethernet conform to the mainframe model.</p><p>By the time LLC was create, it wasn&#8217;t really needed. Cable technology had reached the point where they would reliably transmit packets without corruption, and networks had reached the point where you wanted to retransmit lost packets &#8220;end-to-end&#8221; anyway, meaning not simply across the local link, but between the remote ends across the Internet.</p><h2>Network Layer #3 Was Connection-Oriented</h2><p>Hubert Zimmermann helped design CYCLADES, the early French network that influenced the design of the TCP/IP Internet. But the OSI Network Layer #3 did not work like CYCLADES&#8212;it worked like IBM&#8217;s SNA and telco X.25. It was &#8220;connection-oriented,&#8221; not &#8220;connectionless.&#8221;</p><p>Let me explain the difference.</p><p>The telephone system works according to connections or circuits. When you make a phone call using a traditional wired phone, you establish a virtual circuit consisting of a 64-kbps stream of bits flowing in each direction.</p><p>This is the &#8220;T carrier&#8221; system from the 1960s when the phone system was made digital using the newly invented transistor. Smaller streams are combined into larger streams, like the 1.544-mbps T1 line and 45-mbps T3 line. The telephone switch would then forward streams, so multiple incoming streams on one line may then be split up to flow out of different lines&#8212;each stream flowing toward its own destination.</p><p>When you dial the phone, every switch in between the caller and callee is contacted, and a 64-kbps stream is reserved. If there is congestion, the caller will instead hear the error message &#8220;no circuits are available&#8221; and the call won&#8217;t go through. You often hear this on New Year&#8217;s calling to wish family and friends well, or after natural disasters trying to call loved ones in the area.</p><p>Once a call succeeds, then congestion won&#8217;t happen after that point. You&#8217;ve got a 64-kbps stream until the call ends.</p><p>Such streams of bits are inefficient for computer networks because they are flowing all the time, even when the computers have nothing to transmit. Computer data is bursty, sending a lot for a short period of time, but silent the rest of the time.</p><p>Computers want to send data in <strong>packets</strong> rather than in <strong>streams</strong>.</p><p>To handle this, the major telephone companies (the &#8220;telcos&#8221;) developed the X.25 packet switching standard. Your computer would then request the packet-equivalent of a virtual circuit. Each packet switch between the source and destination would be contacted, and a &#8220;connection&#8221; established.</p><p>One of the properties of such connections would be to require a minimum transfer rate, such as 1-mbps. As long as you transmitted less than that minimum, your packets were guaranteed to go through the network. You could transmit faster, but those packets would be delivered &#8220;best effort.&#8221; When there&#8217;s congestion, such &#8220;best effort&#8221; packets could be dropped.</p><p>Likewise, when you used less than your guaranteed bandwidth, the switches in between would be using that opportunity to forward best-effort packets for other users.</p><p>Thus, the packet-switched X.25 network was much more efficient, and therefore cheaper, for computer users.</p><p>The Internet is a packet-switched network as well, but it&#8217;s only &#8220;best effort&#8221;. You don&#8217;t establish a connection through the network ahead of time; you simply send the packet. You can&#8217;t reserve a minimum amount of bandwidth. If there&#8217;s congestion somewhere in the network, that packet will be lost&#8212;&#8221;dropped&#8221; by the router that&#8217;s unable to forward it out a congested link. Each packet finds its own way through the network, so when you send two back-to-back packets, they may follow different paths and arrive in the wrong order.</p><p>The Internet is therefore a <strong>connectionless</strong> network.</p><p>Both mainframe and telco X.25 networks demanded the &#8220;reliability&#8221; of a connection-oriented network, so therefore the OSI Network Layer #3 specified it. The only option was a connection-oriented network. This is what Hubert Zimmermann put in the standard even though he himself helped develop CYCLADES, which had a connectionless network.</p><p>The standard was quickly amended to allow either a connectionless or connection-oriented network layer, so this is probably of little historic significance. The point is only that the mainframe ideals came first.</p><p>The other thing you need to know is that <strong>Ethernet was a Layer #3 protocol</strong>, a &#8220;Network Layer&#8221; protocol.</p><p>The Network Layer #3 is defined where a relay receives packets from one link, examines the destination address, then forwards that packet out the correct link in that direction.</p><p>This describes an Internet router (or X.25 switch). It also describes an Ethernet switch, because an Ethernet switch is a Layer #3 device.</p><p>When Andrew Tanenbaum published his first &#8220;Computer Networks&#8221; textbook based upon the OSI Model in 1980, he clearly puts Ethernet as Layer #3, because it was.</p><p>However, if you Google or ask the AI today, everyone will tell you that Ethernet is Layer #2, part of the &#8220;Data Link Layer.&#8221;</p><p>As mentioned above, it didn&#8217;t actually conform to the OSI definition. They had to add LLC to make Ethernet look more like SDLC/HDLC/LAPB, so that it could then carry SNA and X.25 traffic.</p><p>In other words, once they decided upon a rigid model with fixed functionality at each layer, they had to make Ethernet conform to its assigned layer, and added LLC to it.</p><p>The real model of today&#8217;s Internet is that one network may be layered on another. That might mean putting Internet packets inside Ethernet packets inside your home and office, which is common on the edges of the network.</p><p>On backbones, we see something else, like a system called MPLS to carry Internet traffic. MPLS is a network technology that itself may be layered on top of Ethernet, giving three layers of networks.</p><p>Internet traffic can be tunneled through VPNs, which layers the Internet on Internet, adding yet more ad hoc layers.</p><p>The point is that OSI envisioned a fixed, connection-oriented Network Layer #3 that would need something like an SDLC-like Data Link Layer #2 beneath it. It was designed this way because that&#8217;s how IBM&#8217;s mainframe network worked.</p><p>But today&#8217;s Internet doesn&#8217;t work that way. The Internet Protocol can be encapsulated in anything, maybe within local Ethernet networks (with no LLC), maybe carried by pigeons.</p><h2>Upper Three Layers (#5, #6, #7)</h2><p>Back in the late 1970s, the lower 3 (or 4) layers existed as practical, real things that engineers could touch. Hubert Zimmermann had them in the CYCLADES. Xerox had them in its highly influential PUP and XNS standards. They were visible in the emerging TCP/IP standards of the future Internet.</p><p>The upper three layers were more theoretical. They roughly existed in IBM&#8217;s mainframe networks.</p><p>You can&#8217;t understand the OSI Session Layer #5 without looking at IBM&#8217;s mainframe network stack. The most prominent feature was the fact that some mainframe communications can be &#8220;half-duplex,&#8221; meaning only one side can transmit at a time. Another prominent feature is that transactions can be &#8220;batched&#8221; so that they all succeed or fail together, instead of some operations succeeding while later ones fail.</p><p>The history of the OSI Presentation Layer #6 is even more difficult to understand.</p><p>Back in the day, each computer had its own way of representing data. They would have different word sizes, like 12-bit or 36-bit words. They would have different character sets, like the famous difference between IBM&#8217;s EBCDIC and US-ASCII. Structured data would often be written to disk by simply dumping the contents of memory, meaning memory layout was the file layout.</p><p>The lifecycle of data was to be created, processed, and eventually destroyed all on the same machine. If it was transferred between machines, it was usually between machines of the same type.</p><p>In those early days, the following rule was followed: <strong>the format of data was the property of where it was located</strong>.</p><p>As networking started to mean connecting computers of different types together, this became a problem. You couldn&#8217;t simply copy data from one machine to another because it would then have the wrong format. You had to convert it.</p><p>Who was responsible for the conversion? The sender? The receiver?</p><p>The answer they came up with is that this would be handled by the network stack itself. Networking computers of different types always required data conversion, so of course that should be a layer in the stack.</p><p>This was an issue for file transfer, but also for terminals. Different terminals had different character sets but also different control codes for drawing things on the screens. On Unix systems, among the features of the Telnet protocol is to communicate terminal type, so libraries like &#8220;ncurses&#8221; can be used to send the correct codes to do things like draw boxes on the screen.</p><p>At the time, sending the right terminal control codes was one of the most important features of the network for everyone involved in defining the OSI layers. They had terminals on their desktops, not personal computers.</p><p>These concerns don&#8217;t exist anymore.</p><p>The most important change in thinking is that data conversion is the wrong solution. <strong>The format of data is a property of the data itself</strong>, not where it&#8217;s located.</p><p>A PDF or JPEG is the same format regardless of what device holds it. Trying to convert data will only corrupt it, especially if one side supports features the other side doesn&#8217;t, causing them to be removed. And it&#8217;s rare for two types of formats to support precisely the same feature set.</p><p>Not only do you not want conversion to be located in the network stack, you don&#8217;t want it to happen at all.</p><p>In the past, when the lifecycle of data was contained in a single computer, the lifecycle of data today is to be transferred among computers of different types. You might take a picture on your Android phone, send it to somebody using an iPhone, through a server running Windows. Conversion never happens in this sequence of events.</p><p>At the top of the network stack is the Application Layer #7. Is this simply the payload that&#8217;s above the network, outside of it? Or is this the highest part of the network stack, inside the stack?</p><p>Nobody really knows these days.</p><p>In the mainframe view of the world, you had services like VTAM and FTAM, the parts of the network stack that dealt with &#8220;terminals&#8221; and &#8220;file transfer&#8221; respectively. An application would never transfer a file itself; it would instead request file transfer from the FTAM service.</p><p>Therefore, in the mainframe view of the world, the entire network stack is integrated, and applications are fundamentally not really network aware. They require services from the operating system to accomplish goals without being precisely a network application.</p><p>That&#8217;s not how it worked on the Internet. If you have an email application, it&#8217;s very much a network application. It&#8217;s not a program that requests services from an email subsystem using some sort of &#8220;email API.&#8221; Instead, it implements the email protocols itself, using the &#8220;Sockets API&#8221; to send and receive payloads itself. Its implementation of email protocols is above the network stack&#8212;payload, not inside the network stack.</p><p>Now, web apps are a little bit different. A lot of programmers use web-specific APIs, both on the client side and server. The &#8220;web&#8221; is therefore considered an &#8220;inside&#8221; part of the stack.</p><p>But it&#8217;s still wrong to think of the web as conforming to the OSI Application Layer #7. It&#8217;s an ad hoc layer applied on top of the existing Internet, not something designed to fulfill fixed functionality defined in a specific layer.</p><p>For example, in HTTP/1.1, the web protocol runs on top of &#8220;Transport Layer Security&#8221; or TLS. In HTTP/3.0, TLS capabilities are integrated directly into HTTP&#8212;I suppose a sort of &#8220;web layer security&#8221; instead of &#8220;transport layer security&#8221;. It&#8217;s arbitrary and ad hoc.</p><p>The Internet exists as a series of layers, but not the mainframe (and OSI) of fixed layers.</p><h2>Layers #1 and #4</h2><p>I don&#8217;t really discuss these layers in this post.</p><p>Layer #1, the physical layer, transcends this discussion. It existed 100 years before all this nonsense and isn&#8217;t mainframe related. It&#8217;s just a fact of life: at some point, you connect two things with a wire. In much the same way that your model should include a &#8220;payload&#8221; above the network stack, you should think of a &#8220;physical wire&#8221; below the stack, outside of the stack.</p><p>Layer #4 is probably the layer that&#8217;s actually based upon Zimmerman&#8217;s work. It&#8217;s definition is that it&#8217;s end-to-end &#8212; that whatever functionality it provides, it does so on the ends of the network instead of in between. To understand it, look at TCP/IP rather than IBM SNA.</p><h2>Conclusion</h2><p>The point is that both stories are correct. ESR is correct in saying that OSI was driven by European academics. But from another viewpoint, it&#8217;s really based upon IBM&#8217;s mainframe networking and is the antithesis of what we see as the Internet today. The fixed-functional layers was wrongthink that came from IBM. Data Link #2 was IBM&#8217;s SDLC. The Network Layer #3 was connection-oriented. The upper 3 layers aspired to reach the wrong goals&#8212;mainframe goals.</p><p>The entire OSI Model is a lie. It was based upon IBM mainframe thinking and is not the actual model used by the Internet. I know that everything you read, everything you Google, every answer you get from AIs will disagree with me. Nonetheless, everyone is wrong.</p>]]></content:encoded></item><item><title><![CDATA[Louvre Jewel Heist and the NYTimes]]></title><description><![CDATA[They only quote people who matter.]]></description><link>https://cybersect.substack.com/p/louvre-jewel-heist-and-the-nytimes</link><guid isPermaLink="false">https://cybersect.substack.com/p/louvre-jewel-heist-and-the-nytimes</guid><dc:creator><![CDATA[Robert Graham]]></dc:creator><pubDate>Tue, 28 Oct 2025 01:39:52 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!NdVg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbaf3d840-30ea-4823-b5f8-78d43e5ce921_1536x1024.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!NdVg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbaf3d840-30ea-4823-b5f8-78d43e5ce921_1536x1024.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!NdVg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbaf3d840-30ea-4823-b5f8-78d43e5ce921_1536x1024.jpeg 424w, https://substackcdn.com/image/fetch/$s_!NdVg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbaf3d840-30ea-4823-b5f8-78d43e5ce921_1536x1024.jpeg 848w, https://substackcdn.com/image/fetch/$s_!NdVg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbaf3d840-30ea-4823-b5f8-78d43e5ce921_1536x1024.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!NdVg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbaf3d840-30ea-4823-b5f8-78d43e5ce921_1536x1024.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!NdVg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbaf3d840-30ea-4823-b5f8-78d43e5ce921_1536x1024.jpeg" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/baf3d840-30ea-4823-b5f8-78d43e5ce921_1536x1024.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:106439,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://cybersect.substack.com/i/177313141?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbaf3d840-30ea-4823-b5f8-78d43e5ce921_1536x1024.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!NdVg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbaf3d840-30ea-4823-b5f8-78d43e5ce921_1536x1024.jpeg 424w, https://substackcdn.com/image/fetch/$s_!NdVg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbaf3d840-30ea-4823-b5f8-78d43e5ce921_1536x1024.jpeg 848w, https://substackcdn.com/image/fetch/$s_!NdVg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbaf3d840-30ea-4823-b5f8-78d43e5ce921_1536x1024.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!NdVg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbaf3d840-30ea-4823-b5f8-78d43e5ce921_1536x1024.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">What ChatGPT thinks Brad Pitt and George Clooney would look like breaking into the Louvre in a Ocean&#8217;s 11 heist.</figcaption></figure></div><p>The thing to know about <em>The New York Times</em> is that it only quotes people who matter, their fellow elites. You can see that in <a href="https://www.nytimes.com/2025/10/25/world/europe/louvre-heist-jewelry-thieves.html">this story</a> about the recent Louvre jewel heist, where they quote George Clooney. As the star of the <em>Ocean&#8217;s 11</em> heist movies, he matters.</p><p>By contrast, technical experts are nobodies, including specialists in museum security in general, and the Louvre in particular.</p><p>One reason experts don&#8217;t matter is that technical details are boring. The thieves couldn&#8217;t simply smash through the Louvre&#8217;s windows; they had to cut through them with angle grinders. Such details are important, but dull to the average reader.</p><p>The other reason techies don&#8217;t matter is that readers already have a ready-made explanation: &#8220;They didn&#8217;t take security seriously&#8221;. No technical information is needed to support this claim.</p><p>Such narratives let <em>Times</em> readers feel morally superior about the root cause of the failure while remaining ignorant of how anything actually works. The failure, we&#8217;re told, stems from sloth, greed, villainy, or some other moral flaw. Readers already believe this clich&#233; and are simply looking for stories that confirm it.</p><p>The reality is that security is hard and full of trade-offs.</p><p>For example, the Louvre is an ancient castle, a heritage building. There&#8217;s a limit to how much you can harden its windows without damaging or defacing the structure. There&#8217;s a reason there are no iron bars or armored panes. <em>Modern</em> art museums often have no windows at all precisely because they&#8217;re housed in <em>modern</em> buildings.</p><p>There&#8217;s also the issue of visitor accessibility. Many visitors are disappointed to find the Mona Lisa behind thick, bomb-proof glass rather than displayed like the other paintings.</p><p>Security trade-offs aren&#8217;t only about money. But money matters, too. Politicians give the Louvre a fixed budget, and its administrators must choose affordable security measures within that constraint. They&#8217;re not greedy or negligent; they&#8217;re making trade-offs with limited resources.</p><p>Many reports claim the windows, alarms, and cameras were outdated &#8212; implying laziness. In reality, upgrading heritage buildings is prohibitively expensive. To criticize those choices responsibly, you&#8217;d have to explain where the money would come from.</p><p>I&#8217;m not a museum expert, of course. I&#8217;m just echoing comments from museum-security professionals I&#8217;ve seen in online discussions. But I am a cybersecurity expert, and the same reasoning applies there. Non-techies often blame moral weakness for security failures when they&#8217;re usually the result of technical and financial trade-offs.</p><p>Rather than simple negligence, the real cause is often that the thieves outsmarted the defenders. Statistically, you might have <em>ten</em> brilliant defenders studying decades of heists and covering every expected attack &#8212; but <em>thousands</em> of creative thieves dreaming up new ones. The defenders are smarter than any single thief, but not smarter than all thieves combined.</p><p>Those defenders will do what they always do: analyze this attack, adjust their plans, and move on. Then the next big heist will happen, and we&#8217;ll once again hear that it was because &#8220;they didn&#8217;t take security seriously&#8221;.</p><p>And, of course, we&#8217;ll get more quotes from movie stars.</p>]]></content:encoded></item><item><title><![CDATA[Techies vs. the people that matter]]></title><description><![CDATA[In my last blog post, I described how the New York Times doesn&#8217;t cite technical experts, but rather &#8220;People Who Matter&#8221;&#8212;people with impressive r&#233;sum&#233;s, like having been the &#8220;Director for Cyber Incident Response at the U.S.]]></description><link>https://cybersect.substack.com/p/techies-vs-the-people-that-matter</link><guid isPermaLink="false">https://cybersect.substack.com/p/techies-vs-the-people-that-matter</guid><dc:creator><![CDATA[Robert Graham]]></dc:creator><pubDate>Wed, 24 Sep 2025 08:35:23 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!MLrX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c0c73e6-2ba5-48af-a033-a6ce3e223926_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!MLrX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c0c73e6-2ba5-48af-a033-a6ce3e223926_1024x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!MLrX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c0c73e6-2ba5-48af-a033-a6ce3e223926_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!MLrX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c0c73e6-2ba5-48af-a033-a6ce3e223926_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!MLrX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c0c73e6-2ba5-48af-a033-a6ce3e223926_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!MLrX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c0c73e6-2ba5-48af-a033-a6ce3e223926_1024x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!MLrX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c0c73e6-2ba5-48af-a033-a6ce3e223926_1024x1024.png" width="1024" height="1024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0c0c73e6-2ba5-48af-a033-a6ce3e223926_1024x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Generated image&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Generated image" title="Generated image" srcset="https://substackcdn.com/image/fetch/$s_!MLrX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c0c73e6-2ba5-48af-a033-a6ce3e223926_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!MLrX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c0c73e6-2ba5-48af-a033-a6ce3e223926_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!MLrX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c0c73e6-2ba5-48af-a033-a6ce3e223926_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!MLrX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c0c73e6-2ba5-48af-a033-a6ce3e223926_1024x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><a href="https://chatgpt.com/s/m_68d3aca065ac8191b7ad01de45fe7bb8">https://chatgpt.com/s/m_68d3aca065ac8191b7ad01de45fe7bb8</a></figcaption></figure></div><p>In my <a href="https://cybersect.substack.com/p/that-secret-service-sim-farm-story">last blog post</a>, I described how the New York Times doesn&#8217;t cite technical experts, but rather &#8220;<strong>People Who Matter</strong>&#8221;&#8212;people with impressive r&#233;sum&#233;s, like having been the &#8220;<em>Director for Cyber Incident Response at the U.S. National Security Council at the White House</em>&#8221;, the sort of person who <a href="https://www.weforum.org/people/anthony-j-ferrante/">speaks at the World Economic Forum</a> in Davos on cybersecurity.</p><p>In this blog post, I double down on this claim, pitting myself (a techy) against <strong><a href="https://en.wikipedia.org/wiki/Anthony_J._Ferrante">Anthony J. Ferrante</a></strong>, the <em>Person Who Matters</em> quoted by the New York Times on yesterday&#8217;s <a href="https://archive.is/FpmSy">UN SIM farm story</a>, who has also been at the center of other stories.</p><p>This is the same guy who five years ago did <a href="https://embed.documentcloud.org/documents/6668313-FTI-Report-into-Jeff-Bezos-Phone-Hack/">forensics</a> on Jeff Bezos&#8217;s iPhone to conclude that <a href="https://en.wikipedia.org/wiki/Jeff_Bezos_phone_hacking_incident">Saudi Crown Prince MBS had hacked Bezos</a>. This was widely covered in the press and is generally assumed to be true.</p><p>But as a techy, I know the forensics analysis to be flawed. The forensics did not find a &#8220;<em>smoking gun</em>&#8221; to prove this&#8212;they only found unexplained anomalies. That&#8217;s a common flaw among forensics people, where anomalies become <strong>confirmation bias,</strong> where anything unexplained is used to support a foregone conclusion.</p><p>In particular, Ferrante&#8217;s team was unable to decrypt the video file sent by Saudi Crown Prince MBS to Bezos, the one they assumed contained malware.</p><p>They couldn&#8217;t decrypt the video due to lack of technical expertise. The file was <strong>end-to-end encrypted</strong> with <strong>WhatsApp</strong>. End-to-end means that nobody in the middle could decrypt the file, not even Facebook&#8217;s WhatsApp service itself. However, if you had one of the phones on either end, then you could decrypt it. Bezos&#8217;s iPhone had the decryption key&#8212;techies just needed to know where to find it.</p><p>The tools Ferrante used (like Cellebrite) are well known and respected in the forensics industry, but the tools didn&#8217;t have the ability to automatically decrypt WhatsApp. Forensics people are usually only trained on using tools effectively, not on how such things work underneath. When the tool doesn&#8217;t do it, they can&#8217;t do it themselves. Hence, they couldn&#8217;t decrypt the file.</p><p>In a <a href="https://blog.erratasec.com/2020/01/how-to-decrypt-whatsapp-end-to-end.html">blog post</a> I wrote at the time, I described in great detail how techies can decrypt the file. I sent the same <a href="https://x.com/ErrataRob/status/1224943902723125254">video</a> to myself, performed forensics on my iPhone, then described step-by-step how to find the decryption key and decrypt it. I wrote <a href="https://github.com/robertdavidgraham/whats-dec">code</a> to help. Any competent forensics techy can follow the instructions and do the same.</p><p>Ferrante&#8217;s team could have done this and could have conclusively proven malware if it was there. But they didn&#8217;t have the knowledge. Instead, they had to rely upon guesses, using unexplained anomalies for their conclusions.</p><p>One of the anomalies was that the encrypted file was slightly larger than the original video, <a href="https://archive.is/sdbcL">by 14 bytes</a>. Ferrante attributed the difference to malware code. As my techy blog post explains, this is an artifact of encryption, which prepends a 10-byte &#8220;authentication code&#8221; on the front and appends 4 bytes of &#8220;padding&#8221; on the end. The reason for the anomaly is conclusively explained&#8212;the file was exactly the size it was supposed to be. If there were malware code inside, it was carefully constructed to be the same size.</p><p>The biggest unexplained anomaly was network traffic. Soon after the message from Saudi Crown Prince MBS was received, the phone appeared to send out bulk data, as if it were stealing all the photos and messages on the phone.</p><p>As another of my <a href="https://blog.erratasec.com/2020/01/theres-no-evidence-saudis-hacked-jeff.html">blog posts</a> explains, such anomalous traffic is normal for Apple iPhones. They don&#8217;t smoothly log how much is being transmitted day by day. Instead, they can keep track of traffic for months and then create a single log entry with a large number. That&#8217;s what my Uber app did&#8212;slowly uploaded data (likely location information) day by day for months, and then the day I closed the app, reported 56 megabytes of upload.</p><p>This doesn&#8217;t conclusively explain the anomaly Ferrante&#8217;s team saw, but it does demonstrate that their conclusions aren&#8217;t really warranted. Abnormal iPhone traffic is, well, normal. This is the typical confirmation bias that plagues forensics.</p><p>I&#8217;m not claiming Ferrante and his team are incompetent. They delivered the standard results you get from standard forensics, which were inconclusive. Their conclusions were unwarranted, but that&#8217;s what the client wanted. The client wanted reasons to blame Saudi Crown Prince MBS.</p><p>My skills here are pretty rare. You wouldn&#8217;t expect the average forensics team to have known them. But they aren&#8217;t that rare. There are plenty of small, boutique firms that could have done this, but they are run by techies. They aren&#8217;t run by <em>People Who Matter</em>, like former members of the FBI and National Security Council. A billionaire like Bezos only wants <em>People Who Matter</em>, so wouldn&#8217;t get such techies.</p><p>The New York Times is a paper by the (self-appointed) elite for the elite. Their readers expect to hear from those with pedigrees, with FBI, Security Council, and WEF credentials. They don&#8217;t care how impressive a techy GitHub account is (mine is very impressive, by the way)&#8212;techies don&#8217;t matter. If techies had something useful to say, they&#8217;d tell their manager, who&#8217;d tell their manager, who&#8217;d tell the CEO or VP, who&#8217;d then get quoted in the New York Times.</p><p>As a result, you get these stories from the New York Times that aren&#8217;t about truth, but narratives. Bezos and his security chief Gavin de Becker wanted a story about Saudi MBS hacking. The Security Service wanted a story about how they foiled a plot against the UN. They matter, so their stories matter&#8212;even if I, as a techy, know them to be bogus.</p>]]></content:encoded></item><item><title><![CDATA[That Secret Service SIM farm story is bogus]]></title><description><![CDATA[It's just normal crime]]></description><link>https://cybersect.substack.com/p/that-secret-service-sim-farm-story</link><guid isPermaLink="false">https://cybersect.substack.com/p/that-secret-service-sim-farm-story</guid><dc:creator><![CDATA[Robert Graham]]></dc:creator><pubDate>Tue, 23 Sep 2025 22:02:58 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!9ix2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda5da763-f5aa-46c3-9847-8c74770951ff_720x960.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9ix2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda5da763-f5aa-46c3-9847-8c74770951ff_720x960.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9ix2!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda5da763-f5aa-46c3-9847-8c74770951ff_720x960.png 424w, https://substackcdn.com/image/fetch/$s_!9ix2!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda5da763-f5aa-46c3-9847-8c74770951ff_720x960.png 848w, https://substackcdn.com/image/fetch/$s_!9ix2!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda5da763-f5aa-46c3-9847-8c74770951ff_720x960.png 1272w, https://substackcdn.com/image/fetch/$s_!9ix2!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda5da763-f5aa-46c3-9847-8c74770951ff_720x960.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9ix2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda5da763-f5aa-46c3-9847-8c74770951ff_720x960.png" width="720" height="960" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/da5da763-f5aa-46c3-9847-8c74770951ff_720x960.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:960,&quot;width&quot;:720,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1131059,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://cybersect.substack.com/i/174378878?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda5da763-f5aa-46c3-9847-8c74770951ff_720x960.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!9ix2!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda5da763-f5aa-46c3-9847-8c74770951ff_720x960.png 424w, https://substackcdn.com/image/fetch/$s_!9ix2!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda5da763-f5aa-46c3-9847-8c74770951ff_720x960.png 848w, https://substackcdn.com/image/fetch/$s_!9ix2!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda5da763-f5aa-46c3-9847-8c74770951ff_720x960.png 1272w, https://substackcdn.com/image/fetch/$s_!9ix2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda5da763-f5aa-46c3-9847-8c74770951ff_720x960.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><a href="https://x.com/i/grok/share/h5A4DdZwieAQWUjH20zSP9CDc">https://x.com/i/grok/share/h5A4DdZwieAQWUjH20zSP9CDc</a> </figcaption></figure></div><p>Today, the Secret Service <a href="https://x.com/SecretService/status/1970445933667082482">announced</a> they foiled some big <strong>national security threat</strong>. Major news organizations (e.g. <a href="https://archive.is/FpmSy">NYTimes</a>) have repeated their claims without questioning them.</p><p>The story is bogus.</p><p>What they discovered was just <strong>normal criminal enterprise</strong>, banks of thousands of cell &#8220;phones&#8221; (sic) used to send spam or forward international calls using local phone numbers. Technically, it may even be legitimate enterprise, being simply a gateway between a legitimate VoIP provider and the mobile phone network.</p><p>The backstory is a Secret Service investigation into threats sent to politicians via SMS messages. The miscreant used one of this spam farms to mask their origin. When the Secret Service traced back the messages, using radio &#8220;triangulation&#8221; (sic) to find the mobile phones, they found these SIM farms instead.</p><p>One of the reasons we know this story is bogus is because of the New York Times story which cites anonymous officials, &#8220;<em>speaking on the condition of anonymity to discuss an ongoing investigation</em>&#8221;. That&#8217;s not a thing, that&#8217;s not a valid reason to grant anonymity under normal journalistic principles. It&#8217;s the &#8220;Washington Game&#8221; of &#8220;official leaks&#8221;, disseminating propaganda without being held accountable.</p><p>The Secret Service is lying to the press. They know it&#8217;s just a normal criminal SIM farm and are hyping it into some sort of national security or espionage threat. We know this because they are using the correct technical terms that demonstrate their understanding of typical SIM farm crimes. The claim that they will likely find other such SIM farms in other cities likewise shows they understand this is a normal criminal activity and not any special national security threat.</p><p>Their official statements are obvious distortions, like being within 35 miles of the UN building. Their unofficial statements are designed to exaggerate even more, like &#8220;<em>never before seen such an extensive operation</em>&#8221;. The Secret Service doesn&#8217;t normally investigate such crime, so of course they are unlikely to have seen such an extensive operation.</p><p>Another way you know that the NYTimes is lying is because of the independent &#8220;experts&#8221; they quote to confirm it.</p><p>For decades now, when the NYTimes has a cybersecurity story from anonymous government officials, they quote <a href="https://en.wikipedia.org/wiki/James_Andrew_Lewis">James A. Lewis</a> to confirm it. This guy used to work for CSIS (Center for Strategic and International Studies) but apparently has changed employers recently. Whenever I blog/tweet about bogus NYTimes cybersecurity stories, I <a href="https://x.com/ErrataRob/status/881676019991801856">point out this relationship with James Lewis</a>. When you see anonymous government officials and James Lewis quoted in a NYTimes story, you are seeing government propaganda. </p><p>Another &#8220;expert&#8221; the NYTimes quotes is <a href="https://www.weforum.org/people/anthony-j-ferrante/">Anthony Ferrante</a> [<a href="https://cybersect.substack.com/p/techies-vs-the-people-that-matter">update</a>]. He&#8217;s got the resume that the NYTimes loves. I&#8217;m famous among hackers for my <strong>technical expertise</strong>, but I would never be quoted in the NYTimes, because I don&#8217;t matter. The NYTimes only quotes people who matter, meaning, people involved at <strong>high levels of government</strong>, people with their resume posted on <strong>WEF</strong>.</p><p>Both of these &#8220;experts&#8221; claim things that are objectively silly. Ferrante says &#8220;<em>my instinct is this is espionage</em>&#8221; and &#8220;c<em>ould be used for eavesdropping</em>&#8221;. This is false, this arrangement cannot be used for eavesdropping and there&#8217;s nothing particularly related to espionage here. Lewis claims &#8220;<em>only a handful of countries could pull off such an operation, including Russia, China and Israel</em>&#8221;. That&#8217;s false, I can pull this off, personally. It&#8217;s just a SIM farm. Sure, there&#8217;s some capital involved, on the order of $1 million, but it could be setup and managed by a single person. It likely wasn&#8217;t setup all at once with that much money, but has been slowly growing for years as profits are funneled back into setting up more SIM accounts</p><p>Who are you going to trust, these Washington insiders, &#8220;people who matter&#8221;, or an actual hacker like myself?</p><p>I say &#8220;phones&#8221; above in quotes above because the actual hardware isn&#8217;t like the phones you have in your pocket. Your Android/iPhone is a computer with a single &#8220;baseband&#8221; radio that talks to the cell tower, and maybe two SIMs in case you have two different phone accounts. That&#8217;s what a SIM is &#8212; a chip that locks you to a specific phone account.</p><p>A &#8220;SIM box&#8221; has single computer (often running Linux), maybe 20 baseband radios, and maybe 100 physical SIM cards. It rotates among the SIM accounts when spamming SMS messages.</p><p>A SIM card may be the same sort of prepaid $10/month SIM you buy at Walmart that allows 1000 SMS messages per month. There are other types of accounts they might use, so they aren&#8217;t necessarily walking out of a Walmart with bags full of prepaid SIMs after clearing off the shelves, but it&#8217;s close enough. They are trying to fly under the radar, appearing to the mobile networks as normal users.</p><p>The Secret Service hypes this as some sort of national security threat that can crash cell towers. The reality is that this is just a normal criminal threat that <strong>sometimes crashes cell towers</strong>. SMS is an ancient technology that works slowly even in modern cell networks. Too many SIM boxes spamming SMS in one location can indeed overwhelm a cell tower. You actually don&#8217;t need a bunch of SIM boxes to do it &#8212; you can sometimes crash a cell tower with a single baseband radio. Ask me how I know.</p><p>The point is: while criminals do sometimes crash or overload cell towers, an actual foreign threat can do this much easier than using SIM farms. In any event, there are thousands of cell towers around New York City satisfying 10 million subscribers, so crashing a few won&#8217;t make much difference.</p><p>The correct quote from any expert is that this looks like a normal criminal SIM farm, that&#8217;s used for a wide range of purposes, often SMS spam. They are pretending to be thousands of normal mobile phone users to prevent the mobile phone companies from shutting them down. Some miscreant likely used the service to hide the origin of threats sent as SMS messages to politicians, which is why the Secret Service is involved. Theres no evidence the Secret Service is involved due to some actual national security or espionage threat &#8212; that&#8217;s just propaganda they are hyping.</p><div><hr></div><p>35 miles radius centered on UN building:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!I3td!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43baa9d1-decc-4391-b966-c6d14e3a94a1_766x664.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!I3td!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43baa9d1-decc-4391-b966-c6d14e3a94a1_766x664.png 424w, https://substackcdn.com/image/fetch/$s_!I3td!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43baa9d1-decc-4391-b966-c6d14e3a94a1_766x664.png 848w, https://substackcdn.com/image/fetch/$s_!I3td!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43baa9d1-decc-4391-b966-c6d14e3a94a1_766x664.png 1272w, https://substackcdn.com/image/fetch/$s_!I3td!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43baa9d1-decc-4391-b966-c6d14e3a94a1_766x664.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!I3td!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43baa9d1-decc-4391-b966-c6d14e3a94a1_766x664.png" width="766" height="664" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/43baa9d1-decc-4391-b966-c6d14e3a94a1_766x664.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:664,&quot;width&quot;:766,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:350983,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://cybersect.substack.com/i/174378878?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43baa9d1-decc-4391-b966-c6d14e3a94a1_766x664.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!I3td!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43baa9d1-decc-4391-b966-c6d14e3a94a1_766x664.png 424w, https://substackcdn.com/image/fetch/$s_!I3td!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43baa9d1-decc-4391-b966-c6d14e3a94a1_766x664.png 848w, https://substackcdn.com/image/fetch/$s_!I3td!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43baa9d1-decc-4391-b966-c6d14e3a94a1_766x664.png 1272w, https://substackcdn.com/image/fetch/$s_!I3td!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F43baa9d1-decc-4391-b966-c6d14e3a94a1_766x664.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>Some comments on this blogpost;</p><p></p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!eKhE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2671c416-d4d7-43ad-a60f-b2ad5a03fb58_1566x318.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!eKhE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2671c416-d4d7-43ad-a60f-b2ad5a03fb58_1566x318.png 424w, https://substackcdn.com/image/fetch/$s_!eKhE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2671c416-d4d7-43ad-a60f-b2ad5a03fb58_1566x318.png 848w, https://substackcdn.com/image/fetch/$s_!eKhE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2671c416-d4d7-43ad-a60f-b2ad5a03fb58_1566x318.png 1272w, https://substackcdn.com/image/fetch/$s_!eKhE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2671c416-d4d7-43ad-a60f-b2ad5a03fb58_1566x318.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!eKhE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2671c416-d4d7-43ad-a60f-b2ad5a03fb58_1566x318.png" width="1456" height="296" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2671c416-d4d7-43ad-a60f-b2ad5a03fb58_1566x318.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:296,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:119820,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://cybersect.substack.com/i/174378878?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2671c416-d4d7-43ad-a60f-b2ad5a03fb58_1566x318.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!eKhE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2671c416-d4d7-43ad-a60f-b2ad5a03fb58_1566x318.png 424w, https://substackcdn.com/image/fetch/$s_!eKhE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2671c416-d4d7-43ad-a60f-b2ad5a03fb58_1566x318.png 848w, https://substackcdn.com/image/fetch/$s_!eKhE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2671c416-d4d7-43ad-a60f-b2ad5a03fb58_1566x318.png 1272w, https://substackcdn.com/image/fetch/$s_!eKhE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2671c416-d4d7-43ad-a60f-b2ad5a03fb58_1566x318.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p><br></p><p></p><p></p><p></p>]]></content:encoded></item><item><title><![CDATA[A history of threads]]></title><description><![CDATA[Some notes]]></description><link>https://cybersect.substack.com/p/a-history-of-threads</link><guid isPermaLink="false">https://cybersect.substack.com/p/a-history-of-threads</guid><dc:creator><![CDATA[Robert Graham]]></dc:creator><pubDate>Sun, 21 Sep 2025 07:27:16 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!MKpE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24a09ec2-883b-4543-9ce7-6828c56428e4_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!MKpE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24a09ec2-883b-4543-9ce7-6828c56428e4_1024x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!MKpE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24a09ec2-883b-4543-9ce7-6828c56428e4_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!MKpE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24a09ec2-883b-4543-9ce7-6828c56428e4_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!MKpE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24a09ec2-883b-4543-9ce7-6828c56428e4_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!MKpE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24a09ec2-883b-4543-9ce7-6828c56428e4_1024x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!MKpE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24a09ec2-883b-4543-9ce7-6828c56428e4_1024x1024.png" width="1024" height="1024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/24a09ec2-883b-4543-9ce7-6828c56428e4_1024x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Generated image&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Generated image" title="Generated image" srcset="https://substackcdn.com/image/fetch/$s_!MKpE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24a09ec2-883b-4543-9ce7-6828c56428e4_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!MKpE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24a09ec2-883b-4543-9ce7-6828c56428e4_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!MKpE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24a09ec2-883b-4543-9ce7-6828c56428e4_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!MKpE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F24a09ec2-883b-4543-9ce7-6828c56428e4_1024x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><a href="https://chatgpt.com/s/m_68cfa9cf7e288191858a3ed6573e2535">https://chatgpt.com/s/m_68cfa9cf7e288191858a3ed6573e2535</a> </figcaption></figure></div><p>On <em>Hacker News</em> there&#8217;s an article entitled a <em><a href="https://news.ycombinator.com/item?id=45317526">Brief History of Threads</a></em>, but it really isn&#8217;t. I thought I&#8217;d write my own history.</p><h1>What is a &#8220;thread&#8221;?</h1><p>What we are talking about are <strong>kernel threads</strong>. A single <strong>process</strong> has one or more threads of execution that all share the same process resources, like file handles and memory space, but they have their own unique <strong>stack</strong> and <strong>program counter</strong> (the thing that points to the code being executed). These threads are <strong>scheduled</strong> separately by the operating-system with <strong>preemptive multitasking</strong> and running on <strong>multiple CPUs</strong>.</p><p>In the old days, a process had only one thread. If you needed to do something that required multiple threads, you created multiple processes. This was resource intensive.</p><p>We are <strong>not</strong> talking about <strong>userspace threads.</strong> I need to discuss this first <strong>because there is a lot of confusion about this</strong>. For example, the original article claims that threads first appeared back on IBM S/360 mainframes in the 1960s. That&#8217;s not true. <em>Userspace</em> threads appeared there, not <em>kernel</em> threads.</p><p>A userspace thread where you create additional <strong>stacks</strong> in userspace and use <strong>cooperative multitasking</strong> to switch between them. You can do this in basic C code by using <em>malloc()</em> to allocate memory for another stack, and <em>setjump()</em> and <em>longjump()</em> to swap stacks. You call some sort of <em>yield</em> function to cede control back to a <em>scheduler</em>, which swaps stacks and continues executing another userspace thread. This <em>yield</em> function is often hidden behind APIs, so you call functions without really paying attention to the fact that it might yield control.</p><p>Such userspace threads are damn useful. For example, the Java runtime supports <strong>&#8220;green threads&#8221;</strong> that does this for you underneath. On network programming, when waiting to <em>receive</em> incoming data, your thread needs to stop and wait. In the Java runtime, it can transparently switch userspace threads without interacting with the kernel. You get most the benefits of kernel threads, but greater efficiency in userspace.</p><p>Likewise, the Go language <strong>&#8220;goroutines&#8221;</strong> are essentially userspace threads. People love the Go programming language because of the ease in creating scalable network services.</p><p>Userspace threads are <strong>cooperative multitasking</strong>. If they sit in an infinite loop without either yielding control, or calling a function that transparently yields control, then no other userspace thread will run. This can be bad &#8212; writing code for userspace threads means writing code differently.</p><p>Kernel threads are very different. They use <strong>preemptive multitasking, </strong>for one thing, so they can interrupt infinite loops.</p><p>In the past, before kernel threads, the kernel would maintain a list of all running processes. A timer chip would provide an occasional interrupt, like every 10 milliseconds. This would save the state of the current process, then transfer control to the kernel. The kernel would look through the list and find some other runnable process, then transfer control to that process. In that way, a single CPU could appear to run multiple processes at the same time.</p><p>Kernel threads is the same concept, except now a process can have multiple threads of execution. The scheduler now uses a table of all threads to choose from instead of all processes.</p><p>Some early implementations simply used the same process table, but allowed processes that would share address space and resources, making them effectively the same thing as threads. A process with two threads would then appear as two entries in the process table.</p><p>The point is that <strong>kernel threads</strong> are different than <strong>userspace threads</strong>. Userspace threads have always existed, kernel threads are a relatively recent invention.</p><p>We normally discuss threads as being a lighter weight alternative to forking a full process, but we should also see them has a heavier weight alternative to userspace space threads.</p><p>There are two histories here.</p><ul><li><p>One is the history of <strong>full operating systems</strong>, like Unix, that had <strong>memory protection</strong> and <strong>preemptive multitasking</strong>. They had heavy weight processes and progressed to adding threads.</p></li><li><p>The other is the history of <strong>toy operating systems</strong> (from the modern perspective) that only had <strong>cooperative multitasking</strong> with <strong>userspace threads</strong>, like Windows 3.0, and Macintosh prior to MacOS X. These eventually grew up to full operating systems</p></li></ul><h1>OS/2 (1987)</h1><p>The first mainstream operating-system with threads was <strong>OS/2</strong> released in 1987 for the Intel 80286 processor.</p><p>This operating-system is largely forgotten by history, but was a seminal development at the time. Modern Windows is based upon Windows NT, which is in turn based upon OS/2.</p><p>Around 1987, the world was dominated by MS-DOS for PC-compatible desktop computers. This was a toy operating-system. There were versions of Unix available for the PC, like Microsoft&#8217;s own Xenix, but they were unsatisfactory for a number of reasons, the most important of which is that it couldn&#8217;t run MS-DOS programs (backwards compatibility).</p><p>IBM paid Microsoft to develop OS/2 &#8212; a <strong>full operating system</strong> with backwards compatibility with MS-DOS.</p><p>OS/2 had all the features of a full operating system, meaning memory <strong>protection</strong> and <strong>preemptive</strong> multitasking. It ran multiple copies of MS-DOS simultaneously, though only one could be &#8220;full screen&#8221; at a time.</p><p>There are lots to be said about this, but the thing to remember is that the first 1.0 release of OS/2 had threads as we know them today.</p><p>I&#8217;m not sure why OS/2 had threads. The main justification for other operating systems was multi-CPU support, because a programmer would want to split one process across multiple CPUs, and each CPU would need their own thread.</p><h1>Mach and NeXT (1989)</h1><p>The &#8220;Mach&#8221; kernel was a project from 1985 with a bunch of innovations. Among its features were multi-CPU support, and hence, threads.</p><p>It was first released as part of a commercial operating-system in 1989 with Steve Jobs&#8217;s &#8220;NeXT&#8221; computer. If you&#8217;ll remember, Steve Jobs had been fired from Apple in the 1980s, so he created a competitor company, NeXT. It was based upon the same CPU as the Macintosh, but with a Unix operating system. That operating system&#8217;s kernel was based upon Mach, with a BSD shell around it.</p><p>In 1996, Apple purchased NeXT to be the basis for the next generation Macintosh, where the operating-system was renamed MacOS X (today, &#8220;macOS&#8221;). Though MacOS X wasn&#8217;t released until 2001, conceptually, it&#8217;s had kernel threads support since 1989.</p><h1>BeOS (1991)</h1><p>Some other former Apple engineers split off to create an alternative, called BeOS. It also supported multiple CPUs and hence, multiple threads.</p><p>The thing that both NeXT and Be were chasing was the fact that Apple was failing with its &#8220;Pink&#8221; operating system. Everyone knew that personal computers had to move from toy operating-systems (MacOS, MS-DOS, Windows) to a full operating-system (like Unix). But at the same time, big companies always struggle with a v2.0 rewrite of their successful project. Apple had started their &#8220;full operating-system&#8221; project in 1988 called &#8220;Pink&#8221;, and it was already flailing in 1990.</p><p>Engineers knew they could split off and form a small team that could beat Apple to the goal, even though Apple already had 2 years of development behind them. They knew that Apple would eventually give up and buy a competitor.</p><p>Which is exactly what Apple did, though they chose NeXT over Be, making BeOS a failure. But engineers still consider it an elegant system.</p><p>The signature feature of BeOS was getting multi-media done right. Getting low-latency, reliably streaming audio from a computer is a surprisingly difficult job, which is why Linux still struggles at it. Since this was important to consumers, BeOS solved that first, and sorta built the rest of the system behind it. Threads and multi-CPU support were integral to this.</p><h1>Solaris (1992)</h1><p>Sun Microsystems was the most aggressively innovative Unix vendor around 1990. Their bombshell release of Solaris 2.0 in 1992 came with multi-CPU and threads, though they didn&#8217;t provide much support to developers until Solaris 2.2 in 1993.</p><p>It&#8217;s important to understand this in context of the <strong>Unix wars</strong> of 1988. All the vendors supported slightly incompatible versions, making it difficult to write software for one vendor&#8217;s Unix that would run on another.</p><p>Therefore, multiple standardization efforts were started. </p><ul><li><p>One effort was POSIX, which simply standardized the APIs. This wasn&#8217;t highly regarded at the time, as people believed they needed to share the operating system code to be truly compatible.</p></li><li><p>One effort was &#8220;System V release 4&#8221; or &#8220;<strong>SVR4</strong>&#8221;, which combined the code from AT&amp;Ts SRV3, BSD (including SunOS), and Microsoft Xenix into a single operating-system.</p></li><li><p> A third effort was &#8220;<strong>OSF/1</strong>&#8221;, based upon the Mach microkernel, in the same fashion as NeXT chose.</p></li></ul><p>In terms of number of <strong>licenses</strong>, <strong>Xenix</strong> was the most important. It accounted for half of all Unix licenses. That&#8217;s because it ran on cheap PCs. But in terms of <strong>revenue</strong>, the biggest vendor was <strong>Sun</strong>. It was first to market with RISC computers in 1987 and was cleaning up. Both of these were in the SVR4 camp.</p><p>The rest of the vendors (not AT&amp;T, Xenix, or Sun) joined the OSF/1 camp, including leaders like IBM, DEC, and HP.</p><p>Sun had released it&#8217;s first multi-CPU computers in 1991 using the older SunOS, but that kernel didn&#8217;t really support them well, having just a single kernel lock. In other words, the kernel was single CPU only, while userspace code could run on multiple CPUs. The hardware wasn&#8217;t really effective until Solaris 2 was released in 1992.</p><h1>OSF/1 (1992)</h1><p>DEC was really the only vendor that truly adopted OSF/1 after the Unix wars. The rest of the Unix vendors ended up simply extending their Unix variants with POSIX support.</p><p>While DEC&#8217;s first OSF/1 systems didn&#8217;t support multiple CPUs, they were still based upon the Mach kernel, and hence, supported threads.</p><h1>Windows NT (1993)</h1><p>After the wild success of Windows 3.0 in 1990, Microsoft decided to move away from OS/2, which wasn&#8217;t compatible with Windows. They instead created a new operating system from scratch with the intent of being Windows-compatible.</p><p>In 1993, Microsoft released Windows NT 3.0, a full operating system. The weird version number &#8220;3.0&#8221; was to drive home the point that consumers should see it as just another version of Windows. It looked and felt a lot like the Windows 3.0 they were accustomed to, while being a completely different thing &#8212; a full instead of toy operating-system.</p><p>The core operating system was based upon OS/2, DEC VMS, and some Unix features. It had backwards compatible sub-systems for MS-DOS, OS/2 1.3, and POSIX. Most importantly, it could run Windows 3.0 apps, inside what they called a &#8220;Windows on Window&#8221; subsystem or &#8220;WoW&#8221;.</p><p>WinNT inherited the concepts of kernel threads from OS/2, but more than that, Microsoft aggressively used threads throughout the operating system, and encouraged programmers to use them. It was also aggressively multi-CPU, so would likely have invented a version of threads even if it hadn&#8217;t inherited them from OS/2.</p><h1>POSIX threads (1995)</h1><p>The enduring legacy of the 1988 Unix wars is the POSIX standardization of the API. While all these companies intended to create a unified operating-system that each would license, they ended up just continuing to support their legacy product, adding POSIX compatibility as necessary.</p><p>When IEEE POSIX 1003.1c was standardized in 1995, some vendors already had kernel threads, some didn&#8217;t. For those who had kernel threads, they were often not quite compatible with the POSIX API.</p><p>For example, Linux&#8217;s first version of threads was in 1996, though it didn&#8217;t fully support the POSIX standard until 2003.</p><p>The BSD&#8217;s were even later than Linux. FreeBSD didn&#8217;t get it right until 2006.</p><h1>M:N vs. 1:1 threads</h1><p>As explained at the top, userspace threads are different than kernel threads.</p><p>A lot of early thread support tried to mix them behind a single API, called <strong>M:N</strong> threads. This meant there could be more of these userspace threads than kernel threads. That meant having to do both cooperative multitasking in userspace and preemptive multitasking in the kernel at the same time.</p><p>This was a broken idea, and everyone eventually gave up on it.</p><p>The straightforward kernel threads model you know today is called <strong>1:1</strong>, meaning that as far as the kernel is concerned, for every kernel thread, there is only one userspace thread. You can still subdivide that userspace thread into multiple, cooperative multitasking userspace threads, but it something you do on top of an API like POSIX threads, not as part of it.</p><p>That&#8217;s why FreeBSD didn&#8217;t support POSIX threads until 2006, because they spent many years prior to that trying to get M:N working. This caused problems making the simpler 1:1 POSIX model work properly.</p><p>They failed to learn the lessons of history. Solaris had initially added M:N threading in 1992, and by 2002, gave it up, and went to the simpler 1:1 threading model. But in 2003, FreeBSD first added the M:N threading model, before they, too, gave it up in 2006.</p><p>Engineers love the &#8220;more powerful is better&#8221; idea of programming, when the reality is that &#8220;simpler is better&#8221;.</p><p>The upshot is that you shouldn&#8217;t even have to learn this M:N concept because it&#8217;s been abandoned. But yet, any discussion of the history of threads is going to talk about it.</p><h1>Conclusion</h1><p>The history of userspace threads goes all the way back. The toy operating-systems of the 1980s, like MacOS and Windows used them heavily with cooperative multitasking.</p><p>But for kernel threads, the history really goes back to OS/2 in 1987 and the first commercial Mach release (NeXT) in 1989.</p><p>Solaris had the reputation of the leading, most advanced operating-system of the 1990s, but it&#8217;s the heritage of Windows and macOS that did kernel threads first &#8212; and did them right.</p>]]></content:encoded></item><item><title><![CDATA[Linus and the two youts]]></title><description><![CDATA[Something about make_u32_from_two_u16()]]></description><link>https://cybersect.substack.com/p/linus-and-the-two-youts</link><guid isPermaLink="false">https://cybersect.substack.com/p/linus-and-the-two-youts</guid><dc:creator><![CDATA[Robert Graham]]></dc:creator><pubDate>Mon, 11 Aug 2025 20:43:57 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!dadE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2858660-1a06-4e60-896c-0574d4e02010_640x503.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!dadE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2858660-1a06-4e60-896c-0574d4e02010_640x503.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!dadE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2858660-1a06-4e60-896c-0574d4e02010_640x503.jpeg 424w, https://substackcdn.com/image/fetch/$s_!dadE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2858660-1a06-4e60-896c-0574d4e02010_640x503.jpeg 848w, https://substackcdn.com/image/fetch/$s_!dadE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2858660-1a06-4e60-896c-0574d4e02010_640x503.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!dadE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2858660-1a06-4e60-896c-0574d4e02010_640x503.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!dadE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2858660-1a06-4e60-896c-0574d4e02010_640x503.jpeg" width="640" height="503" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f2858660-1a06-4e60-896c-0574d4e02010_640x503.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:503,&quot;width&quot;:640,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;r/MovieQuotes - \&quot;Is it possible the two youts...\&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="r/MovieQuotes - &quot;Is it possible the two youts...&quot;" title="r/MovieQuotes - &quot;Is it possible the two youts...&quot;" srcset="https://substackcdn.com/image/fetch/$s_!dadE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2858660-1a06-4e60-896c-0574d4e02010_640x503.jpeg 424w, https://substackcdn.com/image/fetch/$s_!dadE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2858660-1a06-4e60-896c-0574d4e02010_640x503.jpeg 848w, https://substackcdn.com/image/fetch/$s_!dadE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2858660-1a06-4e60-896c-0574d4e02010_640x503.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!dadE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2858660-1a06-4e60-896c-0574d4e02010_640x503.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The creator of Linux, Linus Torvalds, is famous for his rants. This latest rant is linked below. As this is my bailiwick, where I am an expert, I thought I&#8217;d comment.</p><p><a href="https://lore.kernel.org/lkml/CAHk-=wjLCqUUWd8DzG+xsOn-yVL0Q=O35U9D6j6=2DUWX52ghQ@mail.gmail.com/">https://lore.kernel.org/lkml/CAHk-=wjLCqUUWd8DzG+xsOn-yVL0Q=O35U9D6j6=2DUWX52ghQ@mail.gmail.com/</a></p><p>tl;dr: He&#8217;s right on some things, and wrong on other things.</p><p>What I bring to this debate are:</p><ol><li><p>actually looking at the code, browsing git commits</p></li><li><p>perspective of a very senior programmer who has been through these debates before</p></li></ol><h1>Let&#8217;s read the code</h1><p>The pull request added two macros in a core Linux file <em>&lt;<a href="https://github.com/ColinIanKing/linux-next/blob/b1549501188cc9eba732c25b033df7a53ccc341f/include/linux/wordpart.h#L35">linux/include/wordpart.h</a>&gt;</em>, which is in turn included within <em>&lt;<a href="https://github.com/torvalds/linux/blob/master/include/linux/kernel.h">linux/include/kernel.h</a>&gt;</em>, one of the most central files within the Linux kernel. The added macros are highlighted in <strong>bold</strong> below:</p><pre><code>#define upper_32_bits(n) ((u32)(((n) &gt;&gt; 16) &gt;&gt; 16))
#define lower_32_bits(n) ((u32)((n) &amp; 0xffffffff))
#define upper_16_bits(n) ((u16)((n) &gt;&gt; 16))
#define lower_16_bits(n) ((u16)((n) &amp; 0xffff))
<strong>#define make_u32_from_two_u16(hi, lo)&#9;(((u32)(hi) &lt;&lt; 16) | (u32)(lo))
#define make_u64_from_two_u32(hi, lo)&#9;(((u64)(hi) &lt;&lt; 32) | (u32)(lo))</strong>
#define REPEAT_BYTE(x)&#9;((~0ul / 0xff) * (x))
#define REPEAT_BYTE_U32(x)&#9;lower_32_bits(REPEAT_BYTE(x))
#ifdef __LITTLE_ENDIAN
#  define aligned_byte_mask(n) ((1UL &lt;&lt; 8*(n))-1)
#else
#  define aligned_byte_mask(n) (~0xffUL &lt;&lt; (BITS_PER_LONG - 8 - 8*(n)))
#endif</code></pre><p>The thing to note about this is that their definition of <em>make_u32_from_two_u16()</em> is <strong>wrong</strong>. It casts the low part to a <em>(u32)</em> instead of a <em>(u16)</em>. If the original variable has high-order bits (such as by being signed and negative), it&#8217;ll incorrectly put those bits in the upper part. In other words, <em>make_u32_from_two_u16(0,-1)</em> will be 0xFFFFFFFF.</p><p>The definition should&#8217;ve looked like, making it <strong>(u16)lo</strong>.</p><pre><code>#define make_u32_from_two_u16(hi, lo)&#9;(((u32)(hi) &lt;&lt; 16) | <em><strong>(u16)</strong></em>(lo))</code></pre><p>This is a pernicious sort of bug. It&#8217;ll almost never show up, and is impossible to test for.</p><p>But when the bug does appear, it&#8217;s impossible to fix. That&#8217;s because you can&#8217;t be sure that some other code doesn&#8217;t depend upon this bad behavior combining two (u32) integers. Its behavior becomes cast in stone.</p><p>If you are going to add such a utility function that&#8217;s visible from the entire Linux kernel, then you&#8217;d damn well get it right. They got it wrong.</p><p>In any case, this macro was added purely to support the definitions in <em>&lt;<a href="https://github.com/ColinIanKing/linux-next/blob/b1549501188cc9eba732c25b033df7a53ccc341f/include/linux/mailbox/riscv-rpmi-message.h#L15">include/linux/mailbox/riscv-rpmi-message.h</a>&gt;</em>.</p><pre><code>#define RPMI_VER_MAJOR(__ver)&#9;&#9;upper_16_bits(__ver)
#define RPMI_VER_MINOR(__ver)&#9;&#9;lower_16_bits(__ver)
#define RPMI_MKVER(__maj, __min)&#9;<strong>make_u32_from_two_u16</strong>(__maj, __min)</code></pre><p>This RPMI_MKVER() macro is then used in the file <em>&lt;<a href="https://github.com/ColinIanKing/linux-next/blob/b1549501188cc9eba732c25b033df7a53ccc341f/drivers/clk/clk-rpmi.c#L541">drivers/clk/clk-rpmi.c</a>&gt;</em>.</p><pre><code>if (msg.attr.value &lt; <strong>RPMI_MKVER(1, 0)</strong>) {
    return dev_err_probe(dev, -EINVAL,
     "msg protocol version mismatch, expected 0x%x, found 0x%x\n",
&#9;&#9;&#9;&#9;     <strong>RPMI_MKVER(1, 0),</strong> msg.attr.value);
}</code></pre><p>This sort sort of packing version numbers into an integer is <strong>incredibly common</strong> and you see the same coding pattern across thousands of drivers and libraries. A version number like v1.0 is encoded as 0x00010000. The above snippet of code is one of many common ways of dealing with the problem.</p><p>There are other common patterns. An <strong>alternate</strong> solution might be the following, getting rid of the whole hierarchy of macros.</p><pre><code>#define <strong>RPMI_VERSION_1_0</strong> 0x00010000u
if (msg.attr.value &lt; <strong>RPMI_VERSION_1_0</strong>) {
    return dev_err_probe(dev, -EINVAL,
     "msg protocol version mismatch, expected 0x%x, found 0x%x\n",
&#9;&#9;&#9;&#9;     <strong>RPMI_VERSION_1_0</strong>, msg.attr.value);
}</code></pre><p>(I like this solution better, by the way.)</p><p>What we see here is a common hubris among programmers. When they see there is no standard solution for a common problem, where programmers solve it differently, often poorly, they decide that other programmers need to be told how to do it in one standard manner. Hence, they put their macro in a global file included throughout the kernel instead of confining their changes to just their own code. It&#8217;s such a fine, beautiful thing, everyone should use it.</p><p>This is where <strong>technical debt</strong> comes from, namely, programmers designing for future code reuse. There is a toxic culture centered around reusing code, such as &#8220;DRY&#8221; or &#8220;Don&#8217;t Repeat Yourself&#8221;. Instead of simply solving the problem at hand, programmers try to create general solutions first, then use that generic solution to solve their specific problem.</p><p>The cost of this approach is demonstrated above, where a bug becomes cast in stone, where it cannot be fixed without knowing whether this introduces a new bug.</p><p>The better way of programming is to just solve the problem at hand as simply and narrowly as you can. That&#8217;s why I&#8217;d just create a <em>RPMI_VERSION_1_0</em> constant. It&#8217;s even better at communicating intent, without introduce a whole lot of technical debt from multiple layers of macros.</p><h1>Where Torvalds is wrong</h1><p>Linus makes some strong points, which I expanded upon in the above section. But <strong>he&#8217;s wrong</strong> in a lot of other ways.</p><p>First of all, the use of such macros to hide details is <strong>personal preference</strong>. There is a constant ying-vs-yang in such situations where sometimes your preference is to see the raw details, and sometime your preference is to see the intent rather than details. The same programmer might have different preferences at different times.</p><p>I, too, have cursed programmers for unnecessarily obfuscating trivial details. If voodoo worked, I&#8217;d have a shelf of programmer dolls to stick pins into. But at the same time, when writing code, I&#8217;ve decided that it&#8217;s more appropriate to show intent than details, so am guilty of this myself. (I had a manager once complain about this in my code.)</p><p>Linus has more reason to complain about <strong>polluting the global namespace</strong> here. The <em>&lt;wordpart.h&gt;</em> file is included in pretty much every source file of the Linux kernel, so that&#8217;s a <strong>huge impact</strong> for something that&#8217;s only actually used in one place.</p><p>On the other hand, this <strong>isn&#8217;t strictly policed</strong>. As we&#8217;ll see below, it&#8217;s the evolution of the kernel. When people solve a common problem, they make a solution commonly available, and the amount of stuff included through &lt;include/linux/kernel.h&gt; grows over time. Linus should have a stricter police against people letting their <strong>shit taint the overall kernel</strong>, but he doesn&#8217;t.</p><p>One of Linus&#8217;s complaints is that the name of the macro doesn&#8217;t communicate which side is the high portion, and which is the low. <strong>Okay boomer</strong>. The macro isn&#8217;t defined using the parameters <em>(a, b)</em> as Linus suggests, but <em>(hi, lo)</em>, clearly communicating what Linus says is missing. Modern editors show macro parameters, such as in the screenshot from VSCode:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!hic9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1605540-e86e-455b-9faa-46be68e3717d_1524x302.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hic9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1605540-e86e-455b-9faa-46be68e3717d_1524x302.png 424w, https://substackcdn.com/image/fetch/$s_!hic9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1605540-e86e-455b-9faa-46be68e3717d_1524x302.png 848w, https://substackcdn.com/image/fetch/$s_!hic9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1605540-e86e-455b-9faa-46be68e3717d_1524x302.png 1272w, https://substackcdn.com/image/fetch/$s_!hic9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1605540-e86e-455b-9faa-46be68e3717d_1524x302.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hic9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1605540-e86e-455b-9faa-46be68e3717d_1524x302.png" width="1456" height="289" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f1605540-e86e-455b-9faa-46be68e3717d_1524x302.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:289,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:59076,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://cybersect.substack.com/i/170577012?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1605540-e86e-455b-9faa-46be68e3717d_1524x302.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!hic9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1605540-e86e-455b-9faa-46be68e3717d_1524x302.png 424w, https://substackcdn.com/image/fetch/$s_!hic9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1605540-e86e-455b-9faa-46be68e3717d_1524x302.png 848w, https://substackcdn.com/image/fetch/$s_!hic9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1605540-e86e-455b-9faa-46be68e3717d_1524x302.png 1272w, https://substackcdn.com/image/fetch/$s_!hic9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1605540-e86e-455b-9faa-46be68e3717d_1524x302.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>What we see in this screenshot is how the editor pops up a display, where not only can we see the order of parameters, but also the implementation of the macro. <strong>Which is high and which is low</strong> is clear and unambiguous, just not in the name.</p><p>It&#8217;s unreasonable to expect code to be written as it was back in the days of the original Unix, which was largely written using paper teletypes and the <em>ed</em> program. We have modern IDEs and should use them.</p><p>Linus discusses the implementation of the macro, pointing out (as I did above) you need a (u16) cast to prevent &#8220;<em>high bits from polluting the result</em>&#8221;. But he describes the macro as:</p><pre><code>(a &lt;&lt; 16) + b</code></pre><p><strong>Don&#8217;t mix operator families</strong> like this, even with parentheses. The correct macro should be consistent. Either the addition <code>+</code> should be changed to an OR <code>|</code>, or the shift <code>&lt;&lt;</code> should be changed to multiplication <code>*</code>.</p><pre><code>(a &lt;&lt; 16) | b
(a * 0x10000) + b</code></pre><p>It&#8217;s a small thing, and one of personal preference, I guess. But there are a ton of bugs in code that come from mixing operator families. Programmers understand the order of precedent of related operators, but not of unrelated ones. Moreover, it&#8217;s a code purity thing here. What&#8217;s being done is manipulating bits, not performing arithmetic.</p><p><strong>All this minor stuff is really just a warmup</strong> to the macro immediately preceding <em>make_u32_from_two_u16()</em> in &lt;<em>wordpart.h</em>&gt;:</p><pre><code>#define lower_16_bits(n) ((u16)((n) &amp; 0xffff))</code></pre><p>This should <strong>blow your mind</strong> if you are a programmer. Combining two integers isn&#8217;t the most trivial macro imaginable, this extraction of the lower 16 bits is.</p><p>This is so incredibly unnecessary it&#8217;s hard to imagine it exists, or is even used. Yet, <a href="https://github.com/search?q=repo%3Atorvalds%2Flinux%20lower_16_bits&amp;type=code">15 files</a> in the Linux kernel use this macro.</p><p>It was <a href="https://github.com/torvalds/linux/commit/03cb4473be92a4207a3d1df25186dafd1a5add4d#diff-d91a295d5a1346d93b4abc5dffd9ae5059726287e5c4ed563f5e4e18a0f352ed">added in June of 2021</a> to &lt;<a href="https://github.com/torvalds/linux/blob/03cb4473be92a4207a3d1df25186dafd1a5add4d/include/linux/kernel.h#L84">include/linux/kernel.h</a>&gt; in an otherwise simple pull request. Last year, this family of macros was moved to the newly created <em>&lt;wordpart.h&gt;</em> file, which &lt;kernel.h&gt; then included. We can see the evolution over time as each of these macros was added to the kernel, and then the uptake as people started using them.</p><p>If such trivial macros already exist, it&#8217;s not unreasonable to add more of the same type.</p><p>Combining smaller integers into a bigger one is an <strong>extraordinary common</strong> task. For example, Microsoft has a <em>MAKEDLONG()</em> macro that&#8217;s used extensively throughout Windows. As mentioned above, programmers <strong>can actually get it wrong</strong> by not masking off high bits. It&#8217;s not unreasonable for the Linux kernel to have a standard definition of this to reduce people getting it wrong.</p><p>Linus is correct that polluting the entire kernel with a bad <em>make_u32_from_two_u16()</em> is bad, and the programmers should feel bad. But at the same time, he&#8217;s wrong on other stuff.</p><h1>Linus is very nice</h1><p>Rather than substance what offends most people is his tone. Calling somebody&#8217;s code &#8220;garbage&#8221; and &#8220;get bent&#8221; certainly doesn&#8217;t sound like nice language.</p><p>But, in fact, he&#8217;s extremely nice.</p><p>Bluntness is a virtue. There is no polite way to communicate the importance of the issue.</p><p>The <strong>rudeness</strong> here was from programmers who were so impressed by the beauty of their own code that they decided to pollute the entire kernel with it, telling everybody else how they should solve the same problem in their own code.</p><p>It&#8217;s a <strong>hubris</strong> that infects all big engineering organizations and big open source projects. There are a lot of relatively junior programmers who want nothing more than to tell everyone else how to code. It&#8217;s a constant battle pursued by <strong>passive aggressive politeness.</strong></p><p>The notable attribute of Linus&#8217;s bluntness is that it&#8217;s <strong>not actually personal</strong>. It certainly sounds personal the way he attacks their baby, but it&#8217;s not. He makes it clear that he welcomes their further contributions. This code is garbage, not the people who wrote it.</p><p>Conflicts in engineering organizations and large projects are usually personal. That Linus makes this not-personal is a big tribute to him.</p><p>His issues have <strong>substance</strong>. While I argue above that it&#8217;s more a personal preference, there&#8217;s actually a lot of history and complexity behind the issue.</p><p>The easiest programmers to deal with are those who are direct, on point, and who don&#8217;t hold personal grudges. Even if their language is sometimes offensive, it&#8217;s far better than the norm of passive aggression and personal grudges.</p><p>Linus Torvalds is God. His time is a lot more valuable than yours. That he takes the time to teach you to be a better programmer is <strong>incredibly gracious</strong>. If he had to take the time to figure out how to communicate the level of garbage in your code without using impolite terms like &#8220;garbage&#8221;, he wouldn&#8217;t take the time at all. Be thankful.</p><h1>Conclusion</h1><p>I find the debate here tedious.</p><p>People aren&#8217;t discussing the code itself, which is why I went through and linked the files so you can easily see the code and what&#8217;s really happening.</p><p>People take the story as given, without thinking in terms of the global context. There are larger debates here about coupling, technical debt, and programmers trying to promote their solutions.</p><p>For me, the fatal flaw is masking off the high bits, such as with <em><strong>(u16)lo</strong></em>. That&#8217;s just bad programming and technical debt that the original programmers should feel real bad.</p><p>But I&#8217;m easy-going on the rest of it. It&#8217;s a constant battle between programmers wanting to communicate intent rather than implementation details, and the desire of programmers (especially senior ones) to see more of the implementation details. There&#8217;s a common problem here, and it&#8217;s not unreasonable to want a common solution.</p>]]></content:encoded></item><item><title><![CDATA[Anti-Forensics of the Russian DNC hack]]></title><description><![CDATA[When I mention the Russian DNC hack of 2016, randos pop up on twitter to tell me the Russians weren&#8217;t responsible.]]></description><link>https://cybersect.substack.com/p/anti-forensics-of-the-russian-dnc</link><guid isPermaLink="false">https://cybersect.substack.com/p/anti-forensics-of-the-russian-dnc</guid><dc:creator><![CDATA[Robert Graham]]></dc:creator><pubDate>Sun, 27 Jul 2025 19:04:35 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Ia4D!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf6e8f08-0d75-4e80-b14f-73c57eb55e16_600x300.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>When I mention the Russian DNC hack of 2016, randos pop up on twitter to tell me the Russians weren&#8217;t responsible. They cite &#8220;forensics&#8221; of the dumped files (from Guccifer 2.0) to prove their point. As a forensics expert myself, I find no validity to their claims.</p><p>My blogpost debunks one of those forensics efforts, namely an analysis of the dumped &#8220;HRC_pass.zip&#8221; file described in following blogpost: <a href="https://theforensicator.wordpress.com/2019/05/27/guccifer2-used-thumb-drive-in-us-ctz/">https://theforensicator.wordpress.com/2019/05/27/guccifer2-used-thumb-drive-in-us-ctz/</a> </p><p>Their blogpost claims forensics show that Guccifer 2.0&#8217;s computer is located in the Central timezone of the United States, and that files were transferred to that computer from a USB thumbdrive, proving Guccifer 2.0&#8217;s physical location was in the United States and not Russia. <em>(EDIT: original version claimed this connects with the Seth Rich conspiracy theory, it&#8217;s been pointed out to me this is wrong, that this person doesn&#8217;t believe in that theory).</em></p><h1>Transfer rates</h1><p>The major claim of this blogpost is that timestamps in HRC_pass.zip show the files were transferred at a rate of 15 megabytes/second to the hacker&#8217;s computer. They claim this means a USB thumbdrive was used, which transfers files at that speed. The fact a USB thumbdrive was used means the person transferring the files was <strong>physically located</strong> next to the computer, instead of operating remotely from Russia.</p><p>The authors of that forensics blogpost prove USB transfer speeds by reproducing them. They transfer the files using their own USB drive and find it&#8217;s near the 15 MBps speed. They show the following screenshot produced by Windows when it&#8217;s doing long copies.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Ia4D!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf6e8f08-0d75-4e80-b14f-73c57eb55e16_600x300.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Ia4D!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf6e8f08-0d75-4e80-b14f-73c57eb55e16_600x300.png 424w, https://substackcdn.com/image/fetch/$s_!Ia4D!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf6e8f08-0d75-4e80-b14f-73c57eb55e16_600x300.png 848w, https://substackcdn.com/image/fetch/$s_!Ia4D!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf6e8f08-0d75-4e80-b14f-73c57eb55e16_600x300.png 1272w, https://substackcdn.com/image/fetch/$s_!Ia4D!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf6e8f08-0d75-4e80-b14f-73c57eb55e16_600x300.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Ia4D!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf6e8f08-0d75-4e80-b14f-73c57eb55e16_600x300.png" width="600" height="300" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bf6e8f08-0d75-4e80-b14f-73c57eb55e16_600x300.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:300,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Transfer Rate Suggests Guccifer 2 used a Thumb Drive in the US Central&nbsp;Timezone&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Transfer Rate Suggests Guccifer 2 used a Thumb Drive in the US Central&nbsp;Timezone" title="Transfer Rate Suggests Guccifer 2 used a Thumb Drive in the US Central&nbsp;Timezone" srcset="https://substackcdn.com/image/fetch/$s_!Ia4D!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf6e8f08-0d75-4e80-b14f-73c57eb55e16_600x300.png 424w, https://substackcdn.com/image/fetch/$s_!Ia4D!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf6e8f08-0d75-4e80-b14f-73c57eb55e16_600x300.png 848w, https://substackcdn.com/image/fetch/$s_!Ia4D!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf6e8f08-0d75-4e80-b14f-73c57eb55e16_600x300.png 1272w, https://substackcdn.com/image/fetch/$s_!Ia4D!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf6e8f08-0d75-4e80-b14f-73c57eb55e16_600x300.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>That this <em>must</em> have been a USB drive can be debunked by showing that other transfers happen around the same speeds.</p><p>For example, in the picture below, I copy the files from a local server (QNAP RAID6 NAS) to my local machine. As you can see, the transfer rate is ~15 MBps.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!N1dW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f907db6-be38-4730-baab-bb8b95849fa4_675x445.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!N1dW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f907db6-be38-4730-baab-bb8b95849fa4_675x445.png 424w, https://substackcdn.com/image/fetch/$s_!N1dW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f907db6-be38-4730-baab-bb8b95849fa4_675x445.png 848w, https://substackcdn.com/image/fetch/$s_!N1dW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f907db6-be38-4730-baab-bb8b95849fa4_675x445.png 1272w, https://substackcdn.com/image/fetch/$s_!N1dW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f907db6-be38-4730-baab-bb8b95849fa4_675x445.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!N1dW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f907db6-be38-4730-baab-bb8b95849fa4_675x445.png" width="675" height="445" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1f907db6-be38-4730-baab-bb8b95849fa4_675x445.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:445,&quot;width&quot;:675,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:17960,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://cybersect.substack.com/i/169333434?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f907db6-be38-4730-baab-bb8b95849fa4_675x445.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!N1dW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f907db6-be38-4730-baab-bb8b95849fa4_675x445.png 424w, https://substackcdn.com/image/fetch/$s_!N1dW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f907db6-be38-4730-baab-bb8b95849fa4_675x445.png 848w, https://substackcdn.com/image/fetch/$s_!N1dW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f907db6-be38-4730-baab-bb8b95849fa4_675x445.png 1272w, https://substackcdn.com/image/fetch/$s_!N1dW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1f907db6-be38-4730-baab-bb8b95849fa4_675x445.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Another way of copying files is extracting them from a ZIP archive, which is slow even on fast computers because of decompression. I extracted the DNC_pass.zip archive on my computer, and found it also ran at roughly these speeds:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!KjNH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fa19b44-6a27-4cb4-9c24-0c0a4fb6d05c_675x445.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!KjNH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fa19b44-6a27-4cb4-9c24-0c0a4fb6d05c_675x445.png 424w, https://substackcdn.com/image/fetch/$s_!KjNH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fa19b44-6a27-4cb4-9c24-0c0a4fb6d05c_675x445.png 848w, https://substackcdn.com/image/fetch/$s_!KjNH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fa19b44-6a27-4cb4-9c24-0c0a4fb6d05c_675x445.png 1272w, https://substackcdn.com/image/fetch/$s_!KjNH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fa19b44-6a27-4cb4-9c24-0c0a4fb6d05c_675x445.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!KjNH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fa19b44-6a27-4cb4-9c24-0c0a4fb6d05c_675x445.png" width="675" height="445" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6fa19b44-6a27-4cb4-9c24-0c0a4fb6d05c_675x445.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:445,&quot;width&quot;:675,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:18681,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://cybersect.substack.com/i/169333434?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fa19b44-6a27-4cb4-9c24-0c0a4fb6d05c_675x445.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!KjNH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fa19b44-6a27-4cb4-9c24-0c0a4fb6d05c_675x445.png 424w, https://substackcdn.com/image/fetch/$s_!KjNH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fa19b44-6a27-4cb4-9c24-0c0a4fb6d05c_675x445.png 848w, https://substackcdn.com/image/fetch/$s_!KjNH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fa19b44-6a27-4cb4-9c24-0c0a4fb6d05c_675x445.png 1272w, https://substackcdn.com/image/fetch/$s_!KjNH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fa19b44-6a27-4cb4-9c24-0c0a4fb6d05c_675x445.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>(This is significantly slower than extraction on my MacBook Air, I haven&#8217;t figured out why. I suspect one reason is that I&#8217;m using a <strong>rotating disk drive</strong>.)</p><p>This second item is a highly likely source of the forensicked transfer speed. It&#8217;s typical for hackers to store such things in archives &#8212; unencrypted. But DNC_pass.zip was encrypted. To encrypt files in an unencrypted archive, you have to first un-archive/extract them, then re-archive them with a password.</p><p>A typical scenario would be that Guccifer 2.0 already had HRC_pass in an archive (ZIP, RAR, 7zip), and that what we see here is the actions of extracting all the files at that ~15 MBps speed, and then re-archiving them to create HRC_pass.zip.</p><p>I&#8217;m not asserting this is what happened. I&#8217;m only asserting that it&#8217;s extremely typical. It&#8217;s as likely as any other scenario, such as copying from a USB drive.</p><h1>USB FAT timestamps</h1><p>Another thing that points to a USB drive, according to them, is that file timestamps are &#8220;even&#8221;. By &#8220;even timestamps&#8221; we mean timestamps, down to the second, have an even digit at the end, like 8:53:06 rather than 8:53:05.</p><p>Back in the 1980s, Microsoft designed a layout for their disk drives called &#8220;FAT&#8221;. As a consequence of using a 16-bit number, they couldn&#8217;t quite record all the seconds in the day. By rounding up to an even number, the reduce in half the number they need to represent, which fit within 16-bits (Namely, 16-bits have 65,536 combinations, which isn&#8217;t enough for all 84,600 seconds in a day, but enough for 42,300 rounded seconds).</p><p>This timestamp format changed by the mid-1990s for their newer Windows systems, but legacy lasts a long time. All flash USB drivers smaller than 32 gigabytes continued to use the FAT layout through 2016. (Larger thumbdrives use the update exFAT format, which not only allows larger drives, but also fixes the timestamp problem &#8212; something to remember if you try to reproduce this using your own thumbdrives).</p><p>The theory is that if you see a bunch of files that all have rounded timestamps, then you know that they were transferred via a USB drive. That&#8217;s what the &#8220;forensics&#8221; of many of the Guccifer 2.0 dumps show, such timestamps.</p><p>There are two major flaws with that theory.</p><p>The first is ZIP archives can also show this effect. ZIP was created in 1989 and used the same timestamp format as FAT. The ZIP standard has since been updated to support better timestamps, down to the millisecond, but some ZIP software still uses the old standard.</p><p>In particular, the &#8220;Compress to&#8230;&#8221; feature on Microsoft Windows (even still with Windows 11) uses this old format. If you compress files with it to create a ZIP archive, then extract all the files, all the odd timestamps will be rounded up a second to an even timestamp.</p><p>You can easily reproduce this on your Windows desktop.</p><p>The second major flaw in the forensics theory is that USB (or ZIP) copies didn&#8217;t need to happen just at the moment the files were stolen. It could&#8217;ve happened at any time in the lifecycle of the files. Employees often exchange files with USB drives and ZIP archives within an organization. If you hack into a victim and steal their files, there&#8217;s a good chance a lot will have these rounded timestamps.</p><p>When you see these rounded timestamps, you can&#8217;t be certain when and where rounding happened. It could&#8217;ve been by an employee exchanging files with another employee using USB. It could&#8217;ve been a remnote hacker who used Window&#8217;s built-in &#8220;Compress to&#8230;&#8221; feature.</p><p>This condition is certainly a valid clue, one that can guide investigation, but by itself, it&#8217;s not evidence of any sort. There&#8217;s no way one can look at this and say the most likely explanation is an insider stealing the data with a USB drive.</p><h1>Central timezone</h1><p>Guccifer 2.0 might&#8217;ve used a USB drive, but the key to this forensics blogpost is that the computer was in the Central timezone of the United States. The combination of a physical USB drive and physical location means Guccifer 2.0 must have been located in America and not in Russia as claimed by CrowdStrike or FBI&#8217;s analysis.</p><p>The claim of the Central timezone isn&#8217;t bad, but it&#8217;s not as reliable as you think. It&#8217;s common for computers, especially servers, to have the &#8220;wrong&#8221; timezone configured.</p><p>A server services users from all sorts of timezones. They are often managed by remote IT workers located in different timezones as well. Thus, the idea of of a timezone matching the physical location of a server is somewhat meaningless.</p><p>But it&#8217;s still a strong clue. It&#8217;s not really evidence that CrowdStrike/FBI are lying to you, but is still something that can&#8217;t be easily ignored.</p><p>But here&#8217;s the thing: the 2018 GRU indictment clearly describes how Fancy Bear exfiltrated the data to a computer in Illinois, which is located in the Central time zone. This forensics blogpost even mentions the Illinois computer &#8212; but without noting that it&#8217;s located in the Central timezone.</p><p>Far from disputing the narrative in the DoJ&#8217;s GRU indictment, this timezone clue confirms it.</p><h1>Transfer Rates #2</h1><p>Another section of that document makes the claim: </p><p>&#8220;<em>Extremely Slow Acquisition Times, Run Counter to Claims in the GRU Indictment</em>&#8221;</p><p>They are referring to the second set of timestamps. The one above is the &#8220;Creation Time&#8221; from which we can calculate how fast the files were transferred/extracted onto Guccifer 2.0&#8217;s machine. The second is &#8220;Last Modified&#8221; timestamp, which they claim is the timestamp where they copied the files off the DNC machines.</p><p>That problem is that files have a life cycle with many repeated copy events. These &#8220;Last Modified&#8221; timestamps could reflect a copy by employees, or one of several copy events during the acquisition of the files &#8212; rather than the specific acquisition step they are talking about</p><p>Fancy Bear reportedly broke in on April 18, this copy event has timestamps from April 26, and they published the files on June 21. It&#8217;s reasonable to expect that the hackers are somehow responsible for these timestamps.</p><p>But we can&#8217;t possibly imagine why.</p><p>It doesn&#8217;t run counter to the GRU indictment. Acquisition of files often involve <strong>multiple</strong> copying steps. There could&#8217;ve been a slow copying step to get files to where the hackers staged them, and then copied at a fast speed when exfiltrating. There is therefore no conflict with how the GRU indictment describes things.</p><p>The forensics discussions speculates that X-Tunnel is sensitive to high-latency, which can introduce delays when copying small files that look like slow transfer speeds. But that&#8217;s true of a lot of protocols. A good example is the SMB protocol, the one that&#8217;s used for Microsoft servers.</p><p>The point is that we can&#8217;t conclude anything. Despite this, that forensics blogpost insists on a conclusion (Conclusion #2). All that can be concluded is that this mass copy of files happened on April 16 and nothing else, especially not that it&#8217;s the copy event we are thinking of (like an exfiltration copy).</p><h1>Conclusion</h1><p>A typical scenario that explains all the forensics is that Fancy Bear created a compressed archive on the hacked computers at the DNC, exfiltrated that archive to the computer in Illinois over then Internet, then extracted the contents onto that drive. They then re-archived those files in an encrypted ZIP to produce DNC_pass.zip. It matches all the forensics evidence from that that blogpost and also all the evidence from CrowdStrike and that 2018 GRU indictment.</p><p>By &#8220;typical&#8221; I don&#8217;t assert any likelihood, other than it&#8217;s as least as likely anything the authors of that blogpost claim. I have no idea what actually happened.</p><p>There are a few reasons why these people got this so wrong.</p><p>The biggest reason is <strong>confirmation bias</strong>. Human nature is to jump to a conclusion, and then look for evidence that confirms the guess. It&#8217;s extremely common in computer forensics. The Durham report notes that biggest reason for that 2016 Russian collusion investigation by the FBI was due to extreme confirmation bias, it&#8217;s a common problem.</p><p>A related problem is the <strong>need for cognitive closure</strong>. That forensics document is attempting to pick the most likely scenario and defend it as the correct answer, rather than admitting they simply don&#8217;t have a clue as to the cause of what they see. They demand that we must have a cause.</p><p>Another reason is <strong>hubris</strong>, being impressed with your own cleverness uncovering secrets. It&#8217;ll also impress other techies, who&#8217;ll be proud of their ability to understand it. These &#8220;Last Modified&#8221; and &#8220;Creation Time&#8221; timestamps are actually pretty complicated, where &#8220;Last Modified&#8221; is often the time when the first copy of the file was created, and &#8220;Creation Time&#8221; when the last copy was made. (By &#8220;often&#8221; I mean &#8220;not always&#8221; &#8212; as I said, these things are complicated.)</p><p>A more relevant reason here is <strong>politics</strong> and <strong>conspiracy theory</strong>. They&#8217;ve decided that Russia didn&#8217;t hack the DNC, that CrowdStrike and that DoJ indictment are lying, and that an insider/whistleblower like Seth Rich is responsible. Even if they admit that it&#8217;s <em>possible </em>other things transfer at 15 MBps and ZIPs can cause rounded timestamps, they&#8217;ll still insist their scenarios are the most <em>likely</em>. I&#8217;ve had conversations with obstinate people on twitter who make this claim.</p><p>As a tech expert myself, I dissent. Whatever is visible to them is not visible to me. I can&#8217;t see any evidence or even clues here that calls the mainstream narrative into question.</p><div><hr></div><p><strong>Replication</strong></p><p>The original Guccifer 2.0 dumping HDR_pass.zip is at this location:<br><a href="https://guccifer2.wordpress.com/2016/06/21/hillary-clinton/">https://guccifer2.wordpress.com/2016/06/21/hillary-clinton/</a></p><p>There are links at the bottom pointing to the file. Some are broken, I used this link. Be careful you don&#8217;t click on the wrong thing and infect yourself with malware.<br><a href="https://www.mediafire.com/?79a6zy27q9ung">https://www.mediafire.com/?79a6zy27q9ung</a></p><p>The file is encrypted. Use this as a password:<br><strong>#GucCi2/0</strong></p><p>Transfer speeds vary wildly. On my Windows machine, my USB drive is over twice as fast. Likewise, ZIP extraction is near instantaneous on my MacBook, so fast I can&#8217;t even measure it. Also, modern USB thumbdrives likely use exFAT and not FAT, so won&#8217;t show the timestamp effect. Other ZIP software than Windows maintain the correct timestamps.</p><p>The timestamp metadata is counterintuitive.</p><p>When you see a file on your disk drive, the &#8220;Creation Time&#8221; is when the file was created on this disk drive. It&#8217;s really the &#8220;Creation Time&#8221; of the directory entry, the entry that holds the metadata, rather than the file itself. When archiving files into a ZIP, RAR, or 7zip, this metadata is recorded.</p><p>When copying a bunch of files, one after the other, and then archiving them, the "Creation Time&#8221; timestamps will record the speed at which the files were copied to the local disk. In this case, they record the event when Guccifer 2.0 copied them or extracted them to the disk before creating HRC_pass.zip.</p><p></p>]]></content:encoded></item><item><title><![CDATA[I am speaking up in support of Chris Krebs]]></title><description><![CDATA[We all need to]]></description><link>https://cybersect.substack.com/p/i-am-speaking-up-in-support-of-chris</link><guid isPermaLink="false">https://cybersect.substack.com/p/i-am-speaking-up-in-support-of-chris</guid><dc:creator><![CDATA[Robert Graham]]></dc:creator><pubDate>Thu, 17 Apr 2025 00:35:26 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!_-M_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91be168d-bd18-4e32-8f71-c03249123ac1_1024x768.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!_-M_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91be168d-bd18-4e32-8f71-c03249123ac1_1024x768.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_-M_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91be168d-bd18-4e32-8f71-c03249123ac1_1024x768.png 424w, https://substackcdn.com/image/fetch/$s_!_-M_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91be168d-bd18-4e32-8f71-c03249123ac1_1024x768.png 848w, https://substackcdn.com/image/fetch/$s_!_-M_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91be168d-bd18-4e32-8f71-c03249123ac1_1024x768.png 1272w, https://substackcdn.com/image/fetch/$s_!_-M_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91be168d-bd18-4e32-8f71-c03249123ac1_1024x768.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_-M_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91be168d-bd18-4e32-8f71-c03249123ac1_1024x768.png" width="1024" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/91be168d-bd18-4e32-8f71-c03249123ac1_1024x768.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1253716,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://cybersect.substack.com/i/161496641?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91be168d-bd18-4e32-8f71-c03249123ac1_1024x768.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!_-M_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91be168d-bd18-4e32-8f71-c03249123ac1_1024x768.png 424w, https://substackcdn.com/image/fetch/$s_!_-M_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91be168d-bd18-4e32-8f71-c03249123ac1_1024x768.png 848w, https://substackcdn.com/image/fetch/$s_!_-M_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91be168d-bd18-4e32-8f71-c03249123ac1_1024x768.png 1272w, https://substackcdn.com/image/fetch/$s_!_-M_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F91be168d-bd18-4e32-8f71-c03249123ac1_1024x768.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">An obviously AI generated image as the theme for this post. Triump must go!!</figcaption></figure></div><p>The ever great Katie Moussouris bravely <a href="https://www.lutasecurity.com/post/in-support-of-chris-krebs-and-sentinelone">writes</a> in support of Chris Krebs, the former head of CISA who spoke up against Trump defending the integrity of the 2020 election, who is now suffering Trump's retribution. Trump has not only announced a criminal investigation into Krebs, but is also punishing his employer, SentinelOne.</p><p>I say "<strong>bravely</strong>" because this puts her and her company in danger of retribution from the Trump administration. Her revenue includes contracts with government entities. She's therefore at real personal risk here. In contrast, I'm not so brave because I'm not really at risk. I haven't had government contracts for 10 years, so I'm not nearly as exposed for speaking out.</p><p>Krebs is not a singular case. Trump is retaliating against all sorts of foes:</p><ul><li><p>universities like Harvard and Columbia, suspending all payments from the government (such as for scientific research) unless they change their free speech policies</p></li><li><p>law firms (like Perkins Coie)</p></li><li><p>legacy media (CBS, ABC, AP)</p></li><li><p>new media (Facebook)</p></li><li><p>purging FBI and DoJ of lawyers and agents involved in Jan 6, his documents theft case, and others</p></li></ul><p>All of us citizens have to decide whether to stand against this. The question is particularly acute for those in specific areas, like law firms standing up in defense of other law firms, FBI agents and DoJ prosecutors resigning in protest of the purge of their fellow employees, and so on.</p><p>The question for cybersecurity is whether we risk retribution to stand in defense of our own, such as Chris Krebs and likely more in the future.</p><p>Sadly, the correct answer for most is to keep your head down and stay quiet. This is especially true when you're an officer of a public company, where your duty to your shareholders is more important than personal politics. Same with officers in the military, where your duty is to follow orders, to avoid disputing the politics of your Commander in Chief. That's what "duty" means, that you aren't free in this situation.</p><p>But for the majority of us, there is no real cost. You should consider history, such as Niem&#246;ller's famous statement about Nazism, abbreviated "First they came for the Jews, and I didn't speak out... and then they came for me, and there was nobody left to speak out." Despots will keep going until people stand up against them. Staying quiet now risks Trump's despotism getting worse to a point where you have no choice but to resist. The more we stand together now, the less chance we'll have to stand alone later.</p><p>Some of you readers are Trumpists who believe such retribution is justified. It's not, it never has been. You might point to the legal cases against Trump as justifications for Trump's own actions against enemies. Two wrongs don't make a right. Assuming actions against Trump were politically motivated corruption, then what you are implicitly agreeing is that Trump's actions are also political corruption. The response to corruption isn't saying "they did it so we can," but to double-down on "all such corruption is wrong." Allowing such corruption is evil, and you are evil if you support it. I mean, I empathize with you, Letitia James ran on a political platform, so at least her actions were political. But at the same time, Trump is so obviously guilty of so much fraud and crime that it's unreasonable to think it's all politics.</p><p>Some of you readers are Trumpists who believe that the 2020 election was stolen, and therefore, Krebs was "lying." Maybe, but none of you have pointed to any evidence that hasn't been debunked. All Krebs is guilty of saying is this fact, that no evidence has been produced by Trump or supporters that calls into question the integrity of the 2020 election. The Republicans are now in control of all three branches of government and they still aren't producing any evidence.</p><p>The only proven "liar" here is Trump himself, not Krebs. Trump is guilty of endless lies about the election, most notably supporting Lindell's lies about "Chinese hackers" or D'Souza's lies about "mules." I've written much in both cases about how these people are lying.</p><p>Trump's EO targeting Krebs is clear and unambiguous political corruption punishing his enemies. Any good person would oppose this, at least privately. If they would not suffer obvious consequences, they should do so publicly.</p><p>I stand in support of Krebs, though it's not really that meaningful. I'm a jerk who loves to stand against things, like wokeness or Trumpism. Indeed, I oppose Krebs's work on "misinformation" because it's gone too far in the direction of suppressing opposition to wokeness. I mean, I'm quite sincere here. I studied pre-war Germany in college, and have committed to opposition to tyrants decades ago. But at the same time, I'm regularly in opposition to things.</p><p>But for the rest of you, this is a time to actually stand up against something. Ten years from now you'll get to look back and say "I stood against tyrants" or "I didn't speak out."</p><p>If you can, speak out.</p><div><hr></div><p><strong>Update:</strong> Krebs <a href="https://techcrunch.com/2025/04/16/former-cisa-director-chris-krebs-vows-to-fight-back-against-trump-ordered-federal-investigation/?utm_source=dlvr.it&amp;utm_medium=bluesky&amp;guccounter=1&amp;guce_referrer=aHR0cHM6Ly9nby5ic2t5LmFwcC8&amp;guce_referrer_sig=AQAAANYw06D1Qk24FUY5gyqB1c4cG7K2Idxe5oO7yFKUcU6Y4-SmF31as0LShmOy1YzDAKlbbBqonhXow-vL-iIoaAEF_e6LtmWtHfYb-sv86T9yBlNt7YRtaGaTnkI4kAwwX_qvDjyHnwbfRYW7Y9RBzI0AALCvJSrUYcUZxYZSK4wA">resigned</a> today from SentinelOne. Alex Stamos <a href="https://www.linkedin.com/posts/alexstamos_exclusive-former-trump-official-targeted-activity-7318372702438707201-SLo2?utm_source=share&amp;utm_medium=member_ios&amp;rcm=ACoAACQUf14BlYcwxJinojLBtgi1w9UlUWw-IJk">speaks</a> up in support of Krebs.</p><p></p>]]></content:encoded></item><item><title><![CDATA[History: what really happened with Ciscogate]]></title><description><![CDATA[an inside-insider's view]]></description><link>https://cybersect.substack.com/p/history-what-really-happened-with</link><guid isPermaLink="false">https://cybersect.substack.com/p/history-what-really-happened-with</guid><dc:creator><![CDATA[Robert Graham]]></dc:creator><pubDate>Tue, 18 Feb 2025 03:42:03 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!eRW0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e13ffc0-811c-4522-8242-b42b918fcc64_1024x1024.webp" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!eRW0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e13ffc0-811c-4522-8242-b42b918fcc64_1024x1024.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!eRW0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e13ffc0-811c-4522-8242-b42b918fcc64_1024x1024.webp 424w, https://substackcdn.com/image/fetch/$s_!eRW0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e13ffc0-811c-4522-8242-b42b918fcc64_1024x1024.webp 848w, https://substackcdn.com/image/fetch/$s_!eRW0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e13ffc0-811c-4522-8242-b42b918fcc64_1024x1024.webp 1272w, https://substackcdn.com/image/fetch/$s_!eRW0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e13ffc0-811c-4522-8242-b42b918fcc64_1024x1024.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!eRW0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e13ffc0-811c-4522-8242-b42b918fcc64_1024x1024.webp" width="1024" height="1024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2e13ffc0-811c-4522-8242-b42b918fcc64_1024x1024.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;A dramatic depiction of a corporate scandal involving Cisco, inspired by the Watergate scandal. The scene shows a dimly lit office with stacks of confidential documents marked 'Top Secret,' a computer screen displaying leaked emails, and shadowy figures discussing in secrecy. A journalist is seen taking notes while a security officer looks suspicious. The atmosphere is tense, with a hint of espionage and corporate intrigue.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A dramatic depiction of a corporate scandal involving Cisco, inspired by the Watergate scandal. The scene shows a dimly lit office with stacks of confidential documents marked 'Top Secret,' a computer screen displaying leaked emails, and shadowy figures discussing in secrecy. A journalist is seen taking notes while a security officer looks suspicious. The atmosphere is tense, with a hint of espionage and corporate intrigue." title="A dramatic depiction of a corporate scandal involving Cisco, inspired by the Watergate scandal. The scene shows a dimly lit office with stacks of confidential documents marked 'Top Secret,' a computer screen displaying leaked emails, and shadowy figures discussing in secrecy. A journalist is seen taking notes while a security officer looks suspicious. The atmosphere is tense, with a hint of espionage and corporate intrigue." srcset="https://substackcdn.com/image/fetch/$s_!eRW0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e13ffc0-811c-4522-8242-b42b918fcc64_1024x1024.webp 424w, https://substackcdn.com/image/fetch/$s_!eRW0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e13ffc0-811c-4522-8242-b42b918fcc64_1024x1024.webp 848w, https://substackcdn.com/image/fetch/$s_!eRW0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e13ffc0-811c-4522-8242-b42b918fcc64_1024x1024.webp 1272w, https://substackcdn.com/image/fetch/$s_!eRW0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2e13ffc0-811c-4522-8242-b42b918fcc64_1024x1024.webp 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The <a href="https://en.wikipedia.org/wiki/Ciscogate">Ciscogate</a> issue came up again recently. As an insider who saw it play out from the inside, I thought I'd write up what I witnessed.</p><h1>What was the event?</h1><p>The event is famous in the hacker community. In typical fashion, a cybersecurity researcher found vulnerabilities in a product, in this case, Cisco routers. He was set to disclose them in the normal, responsible manner, at a talk at the BlackHat cybersecurity conference.</p><p>But things went crazy. Cisco swooped in with a bunch of lawyers the night before the talk and forced BlackHat to remove all materials from the printed program, with a large team ripping out pages early into the morning.</p><p>Nonetheless, the researcher (Michael Lynn) gave the talk. It was pretty good, one of the most entertaining.</p><h1>At ISS</h1><p>The whole thing started months before BlackHat.</p><p>The researcher, Mike Lynn, worked for Internet Security Systems (ISS), one of the pioneering cybersecurity companies from the 1990s that was swallowed up by IBM a year later.</p><p>ISS had a research team called "X-Force", full of hacker types that went hunting for vulnerabilities. It was one of the best teams at the time.</p><p>I don't want to take away anything from Mike Lynn's discoveries, but it should be remembered that the entire team contributed to the work. It was an environment where people bounced ideas off each other, or where experts could explain things. I don't know if any other researcher deserved credit for big contributions to this research, but I do feel that the X-Force group as a whole deserves some credit.</p><p>Once the details of the vulnerability had been confirmed, ISS and Cisco started going through the normal disclosure process. It's a process whereby researchers (ISS X-Force here) disclose the bug to a vendor (Cisco in this case), and then go through the process of helping them fix it. Once a fix is available, the researcher(s) in question give a talk at a cybersecurity conference, fully disclosing the bug.</p><p>Part of this disclosure is researchers wanting fame for their brilliance. Finding a bug in Cisco was (and still is) a pretty big deal, so would have given Lynn a bunch of fame.</p><p>But disclosure is mainly about fixing bugs, both the immediate bug in question but also in general. So many bugs don't exist today because they've been thoroughly disclosed and discussed. Such disclosure is a good thing.</p><h1>Things go off the rails</h1><p>ISS had a dysfunctional corporate culture. I'm pretty sure this is not exceptional, that all companies do. It's just that here, Ciscogate is the direct consequence of ISS's problems.</p><p>We had a person in charge of disclosure discussions with other vendors. Let's call him "Pete". Pete was also our representative within various industry groups and forums. He wasn't a "hacker", he was completely non-technical. He was a former special operations soldier from the military.</p><p>Pete was extremely political, in terms of corporate politics. He could often be found spreading rumors about other employees, or schmoozing the bosses. He was pretty toxic, in regards to corporate politics.</p><p>But he was also well-liked. He was a fun guy to hang around with, and there was always promise of some sort of story from his special operations days, though often only alluded to, because of course, it was still secret, and he couldn't reveal the details. I liked Pete a lot &#8212; except for this political streak.</p><p>His corporate politics weren't simply about increasing his standing at ISS, but also within the various industry groups he participated in.</p><p>He saw this Cisco bug as an opportunity. As part of its products and services, ISS needed vulnerability information from other vendors. We had good relationships with most of the big vendors (like Microsoft), but we didn't get vuln info from Cisco.</p><p>Pete's plan was this: in exchange for a better relationship with Cisco, exchanging vulnerability information, he could promise them the vuln would be squashed. This was his own plan, he came up with by himself. He told me this plan early in the process.</p><p>At the time, there were rumors of leaked Cisco source-code in the hacker underground. Pete convinced Cisco that Mike Lynn's research was based upon this leaked source-code, and that Lynn was going to reveal important trade secrets in his BlackHat talks.</p><p>In other words, maybe the offer to suppress the vuln wasn't enough, so he increased it to suppressing trade secrets and source code.</p><p>I doubt he ever said this directly. He had a way of alluding to things that he never said, of convincing the listeners of things that he never explicitly said. This is how he pushed rumors in the corporation, or discussed his exploits in the military.</p><h1>Trade secrets</h1><p>Intellectual property is a difficult area. Enforcement of some things are optional. A company doesn't have to enforce copyrights or patents. There have been other cases of corporations suppressing researcher talks based upon copyrights/patents. In those cases, we know the corporation is evil, because they don't have to. They are using those as an excuse.</p><p>But trademarks and trade secrets are different. If a corporation doesn't enforce, they lose them. There are many cases of corporate lawyers seizing domain names that contain trademarks. But this doesn't mean they are evil &#8212; the companies don't want the bad publicity, it's just something that trademark law forces them to do.</p><p>The point here is that when Cisco lawyers learn that trade secrets were going to be revealed, they took control of the situation.</p><p>Corporate lawyers don't care about vulnerabilities. That's a PR, marketing problem, or engineering problem, not theirs.</p><p>But when it's trade secrets, they go scorched earth on the situation. Cisco's lawyers don't see the situation as we do, that of typical vuln disclosure at a BlackHat talk. They only saw the trade secrets issue.</p><p>Of course, it was false, there was no Cisco trade secret issue, but their primary contact at ISS had told them there was. They were techies, they didn't know. All they knew is that they had to fix it.</p><p>From this perspective, they were totally justified. Had ISS's representative been telling the truth, this is roughly how their lawyers should've responded. Remember: it's not optional according to the law. Cisco had marketing people who knew this would damage their reputation, and cybersecurity researchers of their own who knew this was an evil way of dealing with vuln disclosure. Level heads could not prevail because the lawyers were in charge, falsely believing it was trade secrets.</p><h1>The meeting</h1><p>ISS was getting pushback from Cisco, of course. Cisco was telling ISS that they needed to cancel the talk.</p><p>So shortly before BlackHat (the Friday before, I think), ISS had a meeting, pulling in all the principal players. I was "Chief Scientist", not directly part of the X-Force, but still, high up in the company.</p><p>The problem was that neither the ISS CEO nor Cisco CEO were available to discuss the problem. They were in Washington DC as members of President Bush's cybersecurity council.</p><p>There was this other communication channel &#8212; the CEOs talking directly to each other. Pete schmoozed the ISS CEO, who in turned passed on the information to the Cisco CEO, who then told his lawyers.</p><p>At the start of this meeting, the ISS CEO said that Pete was in charge of resolving the situation. This was very bad since it was Pete who had created the whole mess to begin with.</p><p>ISS couldn't actually cancel the talk. They couldn't call up BlackHat and have the talk canceled. Instead, the most they could do is threaten to fire Mike Lynn if he went through with the talk.</p><p>I tried to be the voice of reason. I tried to be on Mike Lynn's side. Canceling a talk like this was a Bad Thing, for ISS, for Cisco, for Mike Lynn. ISS shouldn't have been pressuring him to cancel the talk. They shouldn't have put him in that position.</p><p>But once he was in that position, his best personal course of action would've been to comply. He'd be the most famous hacker on the planet for a few months, but forgotten after. Getting a job in the field would be difficult after that, as nobody wanted an employee who would rage quit and dump trade secrets (even if, in my opinion, there really weren't any trade secrets). He did get a new job, at Cisco&#8217;s major competitor Juniper, but I don&#8217;t remember him giving another cybersecurity talk afterward.</p><p>All of us at the time, except for Pete, were caught in a web of misinformation. We didn't understand the forces that were causing the problem. Pete was in charge, and he was driving things to destruction.</p><h1>Aftermath</h1><p>It's after all this that the public story starts. Mike decided to give the talk anyway, Cisco lawyers came in and ripped pages from the conference book, and <a href="https://archive.is/oCexz">you know the rest</a>.</p><p>From what I saw, this was not the case of a company suppressing vulnerability research. Instead, it was corporate politics gone awry, crushing an individual employee. I suspect there is a little of this in every such story: it's never really "corporations" making such decisions so much as individuals. How they make decisions is often flawed, such as pursuing their own corporate politics goals.</p><p>This recent (horrible) paper cites the Ciscogate scandal as everyone knows it, "thin skinned lawyers" suppressing a vulnerability. It's wrong, it was thick skinned lawyers who knew next to nothing about vulns but who were protecting trade secrets.</p>]]></content:encoded></item><item><title><![CDATA[SSN# are only mostly unique]]></title><description><![CDATA[Inconceivable!]]></description><link>https://cybersect.substack.com/p/ssn-are-only-mostly-unique</link><guid isPermaLink="false">https://cybersect.substack.com/p/ssn-are-only-mostly-unique</guid><dc:creator><![CDATA[Robert Graham]]></dc:creator><pubDate>Thu, 13 Feb 2025 02:57:40 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!sfge!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f0c456e-f8ca-4ac7-8442-c1b0c40f4344_1466x492.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Elon Musk (pbuh) teaches us that Social Security Numbers (SSN#) aren&#8217;t unique. He&#8217;s technically right, but mostly stupid about this. Let me explain.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!sfge!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f0c456e-f8ca-4ac7-8442-c1b0c40f4344_1466x492.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!sfge!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f0c456e-f8ca-4ac7-8442-c1b0c40f4344_1466x492.png 424w, https://substackcdn.com/image/fetch/$s_!sfge!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f0c456e-f8ca-4ac7-8442-c1b0c40f4344_1466x492.png 848w, https://substackcdn.com/image/fetch/$s_!sfge!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f0c456e-f8ca-4ac7-8442-c1b0c40f4344_1466x492.png 1272w, https://substackcdn.com/image/fetch/$s_!sfge!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f0c456e-f8ca-4ac7-8442-c1b0c40f4344_1466x492.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!sfge!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f0c456e-f8ca-4ac7-8442-c1b0c40f4344_1466x492.png" width="1456" height="489" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6f0c456e-f8ca-4ac7-8442-c1b0c40f4344_1466x492.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:489,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:128591,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!sfge!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f0c456e-f8ca-4ac7-8442-c1b0c40f4344_1466x492.png 424w, https://substackcdn.com/image/fetch/$s_!sfge!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f0c456e-f8ca-4ac7-8442-c1b0c40f4344_1466x492.png 848w, https://substackcdn.com/image/fetch/$s_!sfge!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f0c456e-f8ca-4ac7-8442-c1b0c40f4344_1466x492.png 1272w, https://substackcdn.com/image/fetch/$s_!sfge!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f0c456e-f8ca-4ac7-8442-c1b0c40f4344_1466x492.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h1>Uniqueness</h1><p>SSNs were invented before computers (as we know them). My parents were issued their SSNs back in the 1940s (for example). While they were intended to be unique for each person, the lack of computers back then meant they functionally weren't. Millions of people had faulty SSNs back then &#8212; not just duplicates, but people having multiple SSNs. My great-grandmother apparently had two.</p><p>It wasn't really until Gen Z that the system became robust against common flaws. But still, it's the Greatest Generation and Boomers who are getting retirement checks from when the system wasn't computerized.</p><p>This isn't necessarily a flaw. Europe loves the centralized government control of a national ID, but America has long rejected this. We don't necessarily want the federal government to assign us a unique number.</p><p>In America, it's the state, or even local community, that is in charge of such things as citizenship and voting rights. We want it that way. As a country, we've long been hostile to the central government being involved in our affairs. The national "REAL ID" law has taken 20 years to finally come into force. Having state databases synchronized with federal databases is a potential privacy violation.</p><p>It's not just our hostility to the federal government; we have strong freedom and privacy traditions that reject any sort of government interference with our identity.</p><p>As a consequence, roughly 20 million people in the United States have no government ID, or even birth certificates where they can establish such ID. This includes many people in rural communities, including those living far from civilization in the Appalachian Mountains or Louisiana Bayou. Sure, they may be getting their Social Security check, but they may otherwise be disconnected from all other government institutions.</p><p>The original problems with SSNs are well documented. There are legendary problems, such as a wallet company that once printed a sample Social Security card to put in their wallets with the number 078-05-1120. At its peak in the 1940s, over 5,000 people were using that as their number.</p><p>What's not documented is how well they've cleaned this up.</p><p>We know they attempt to clean it up. When two people are accidentally assigned the same SSN, they do indeed try to fix it.</p><p>But we don't know the rate of success. Maybe they fix 100% of such problems, but maybe they only fix 99.9%. When those people are in the mountains or bayous with duplicate numbers, how do you contact them to fix the problem? It's much harder than you think. Sure, you can send them mail to their mailing address, or try to send federal agents to talk to them in person, but what if they just still keep using the wrong number?</p><p>I suspect that there are a few sticky accounts they just can't solve and "de-duplicate." Government famously must accommodate extreme edge cases &#8212; to treat everyone equally. For example, any fingerprint identification system must also handle the case where people have no fingers. Our instinct that such people don't exist or don't matter would be wrong.</p><h1>Fraud</h1><p>This entire discussion is separate from <strong>fraud</strong>, such as immigrants stealing people's SSNs, or identity theft. That's the problem Musk is really concerned about, not the fact of duplicate numbers.</p><p>And, I suspect, Musk is right that the Social Security Administration isn't doing enough to solve it.</p><p><strong>But uniqueness really has nothing to do with fraud.</strong> For example, this past year the government got more diligent about dead people receiving Social Security checks and recovered $30 million in false payments. They can do this even when numbers aren't unique.</p><h1>SQL databases</h1><p>Musk goes on to talk about &#8220;SQL&#8221;. Here he grossly wrong.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!v7EF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F973fe418-da3e-4243-a773-3c93b0b294bf_1450x260.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!v7EF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F973fe418-da3e-4243-a773-3c93b0b294bf_1450x260.png 424w, https://substackcdn.com/image/fetch/$s_!v7EF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F973fe418-da3e-4243-a773-3c93b0b294bf_1450x260.png 848w, https://substackcdn.com/image/fetch/$s_!v7EF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F973fe418-da3e-4243-a773-3c93b0b294bf_1450x260.png 1272w, https://substackcdn.com/image/fetch/$s_!v7EF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F973fe418-da3e-4243-a773-3c93b0b294bf_1450x260.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!v7EF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F973fe418-da3e-4243-a773-3c93b0b294bf_1450x260.png" width="1450" height="260" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/973fe418-da3e-4243-a773-3c93b0b294bf_1450x260.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:260,&quot;width&quot;:1450,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:69795,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!v7EF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F973fe418-da3e-4243-a773-3c93b0b294bf_1450x260.png 424w, https://substackcdn.com/image/fetch/$s_!v7EF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F973fe418-da3e-4243-a773-3c93b0b294bf_1450x260.png 848w, https://substackcdn.com/image/fetch/$s_!v7EF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F973fe418-da3e-4243-a773-3c93b0b294bf_1450x260.png 1272w, https://substackcdn.com/image/fetch/$s_!v7EF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F973fe418-da3e-4243-a773-3c93b0b294bf_1450x260.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>"SQL" is the language we use to access (modern) databases.</p><p>The discussion pivots here because SQL arranges data around <strong>unique keys</strong>. If we know somebody's unique key, like an SSN, we can then look up all the data entries related to that number.</p><p>If a key isn't actually unique, things misbehave.</p><p>That's the real discussion, that it's <strong>inconceivable</strong> that an SSN wouldn't be a unique key for database lookups. Of course it would be! It's obvious to any programmer!</p><p>Except, well, it isn't necessarily. In fact, most of the tables in such big databases would not use the SSN as a unique key. For example, somewhere there is a table containing how much you've earned every year. It would be the <strong>combination</strong> of your SSN and year that would be the unique key, not just the SSN alone.</p><p>If there exist valid duplicate uses of SSNs, then they could likewise use a combo key, including such things as date of birth, last name, or even just an arbitrary number (1, 2, 3, etc.) as the unique key.</p><p>From a programmer's point of view, there's nothing really that I can conclude from "SSNs are not de-duplicated." My naive assumptions about how they might've structured their SQL databases probably don't match the reality.</p><p>Now, Musk might be right. Back in the 1970s, there were big mainframe databases that predate SQL. Big corporations and big government have a lot of apps written in Cobol and IBM&#8217;s old database-like technology. However, indexing such files and tables doesn&#8217;t change. You still make the decision of SSN uniqueness, regardless of the technology.</p><p>Part of my knowledge here is as a programmer, and the <em><a href="https://news.ycombinator.com/item?id=18567548">Falsehoods Programmers Believe about Names</a></em>. The things we consider immutable and unique about a person, such as names, date/place of birth, address, and so on &#8212; simply aren't.</p><p>For example, both my parents have different names on different official government documents. These aren't radically different names, just slight differences. This is the norm. It's especially true with people from different cultures where multiple "names" are the norm.</p><p>The point is:</p><ul><li><p>There are lots of good historical reasons why Social Security entries weren't unique, and it's not clear whether they've all been solved</p></li><li><p>None of this really has anything to do with SQL database construction</p></li></ul><h1>Conclusion</h1><p>The point of this post is that there's no reason for outrage and partisanship here. Musk hasn't supplied enough information to tell us what's happening, only enough to develop assumptions and misconceptions.</p><p>If there's something actually wrong, then he could quickly write up a document and explain things in full, addressing the sorts of issues I bring up here.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!DlXB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36460448-dc3a-4e60-8148-8c1590e69ec0_400x225.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!DlXB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36460448-dc3a-4e60-8148-8c1590e69ec0_400x225.jpeg 424w, https://substackcdn.com/image/fetch/$s_!DlXB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36460448-dc3a-4e60-8148-8c1590e69ec0_400x225.jpeg 848w, https://substackcdn.com/image/fetch/$s_!DlXB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36460448-dc3a-4e60-8148-8c1590e69ec0_400x225.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!DlXB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36460448-dc3a-4e60-8148-8c1590e69ec0_400x225.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!DlXB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36460448-dc3a-4e60-8148-8c1590e69ec0_400x225.jpeg" width="400" height="225" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/36460448-dc3a-4e60-8148-8c1590e69ec0_400x225.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:225,&quot;width&quot;:400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!DlXB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36460448-dc3a-4e60-8148-8c1590e69ec0_400x225.jpeg 424w, https://substackcdn.com/image/fetch/$s_!DlXB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36460448-dc3a-4e60-8148-8c1590e69ec0_400x225.jpeg 848w, https://substackcdn.com/image/fetch/$s_!DlXB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36460448-dc3a-4e60-8148-8c1590e69ec0_400x225.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!DlXB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36460448-dc3a-4e60-8148-8c1590e69ec0_400x225.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div>]]></content:encoded></item><item><title><![CDATA[Some easy answers to complicate questions]]></title><description><![CDATA[The wise Lesley Carhart asks:]]></description><link>https://cybersect.substack.com/p/some-easy-answers-to-complicate-questions</link><guid isPermaLink="false">https://cybersect.substack.com/p/some-easy-answers-to-complicate-questions</guid><dc:creator><![CDATA[Robert Graham]]></dc:creator><pubDate>Mon, 10 Feb 2025 19:39:32 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!aas5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0399474-d435-4848-b777-8ff7627eec57_1024x768.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!aas5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0399474-d435-4848-b777-8ff7627eec57_1024x768.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!aas5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0399474-d435-4848-b777-8ff7627eec57_1024x768.png 424w, https://substackcdn.com/image/fetch/$s_!aas5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0399474-d435-4848-b777-8ff7627eec57_1024x768.png 848w, https://substackcdn.com/image/fetch/$s_!aas5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0399474-d435-4848-b777-8ff7627eec57_1024x768.png 1272w, https://substackcdn.com/image/fetch/$s_!aas5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0399474-d435-4848-b777-8ff7627eec57_1024x768.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!aas5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0399474-d435-4848-b777-8ff7627eec57_1024x768.png" width="1024" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c0399474-d435-4848-b777-8ff7627eec57_1024x768.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:950689,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!aas5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0399474-d435-4848-b777-8ff7627eec57_1024x768.png 424w, https://substackcdn.com/image/fetch/$s_!aas5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0399474-d435-4848-b777-8ff7627eec57_1024x768.png 848w, https://substackcdn.com/image/fetch/$s_!aas5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0399474-d435-4848-b777-8ff7627eec57_1024x768.png 1272w, https://substackcdn.com/image/fetch/$s_!aas5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0399474-d435-4848-b777-8ff7627eec57_1024x768.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>The wise Lesley Carhart <a href="https://bsky.app/profile/hacks4pancakes.com/post/3lhtow6q4ny2s">asks</a>:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ocbm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F938b1bd9-21fd-4f41-a5a6-3fe9c1c95ae6_1152x490.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ocbm!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F938b1bd9-21fd-4f41-a5a6-3fe9c1c95ae6_1152x490.png 424w, https://substackcdn.com/image/fetch/$s_!ocbm!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F938b1bd9-21fd-4f41-a5a6-3fe9c1c95ae6_1152x490.png 848w, https://substackcdn.com/image/fetch/$s_!ocbm!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F938b1bd9-21fd-4f41-a5a6-3fe9c1c95ae6_1152x490.png 1272w, https://substackcdn.com/image/fetch/$s_!ocbm!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F938b1bd9-21fd-4f41-a5a6-3fe9c1c95ae6_1152x490.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ocbm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F938b1bd9-21fd-4f41-a5a6-3fe9c1c95ae6_1152x490.png" width="1152" height="490" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/938b1bd9-21fd-4f41-a5a6-3fe9c1c95ae6_1152x490.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:490,&quot;width&quot;:1152,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:123511,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ocbm!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F938b1bd9-21fd-4f41-a5a6-3fe9c1c95ae6_1152x490.png 424w, https://substackcdn.com/image/fetch/$s_!ocbm!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F938b1bd9-21fd-4f41-a5a6-3fe9c1c95ae6_1152x490.png 848w, https://substackcdn.com/image/fetch/$s_!ocbm!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F938b1bd9-21fd-4f41-a5a6-3fe9c1c95ae6_1152x490.png 1272w, https://substackcdn.com/image/fetch/$s_!ocbm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F938b1bd9-21fd-4f41-a5a6-3fe9c1c95ae6_1152x490.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Her wise answer to all three is "it's complicated," that these are in fact not "easy questions." It's the complexity of the answer that makes it the correct answer &#8212; even if different techies disagree on the complex parts.</p><p>But I'm somebody who gives wrong answers. I'm going to insist that there are easy answers to these questions. Specifically, the easy answers are:</p><ul><li><p>No. The US power grid is too diverse for hackers to seriously threaten as a whole, though localized blackouts are a big threat. The solution isn't to focus on the power grid as a whole, but to diversify things, such as households having battery backups.</p></li><li><p>No. There is no silver bullet, magic pill solution to security, and AI isn't close to becoming one. AI will change the job of human analysts, but at the same rate their job is always changing.</p></li><li><p>No. Anti-Microsoft hate is pervasive in the community, but the security features of all major operating systems are roughly the same and can be hardened the same. The best business solution is the one that satisfies business needs, not cybersecurity needs.</p></li></ul><p>The following is a more extensive discussion.</p><h1>Power Grid</h1><p>Hackers can't take down the US power grid &#8212; at least, as a national policy, it's not something we need to worry about. Solar mass ejections are far more important. That's because the US power grid is really diverse, with over 10,000 companies involved in generation and transmission. It's designed to quickly segment itself. We've addressed the cascade of failures that happened in the  <a href="https://en.wikipedia.org/wiki/Northeast_blackout_of_2003">2003 East Coast Blackout</a>..</p><p>National policy should instead focus on local blackouts, such as that of a major city. Hackers can break into local grids, or simply bribe a local operator, and cause painful blackouts.</p><p>The reason I describe "national policy" is that the threat of a "Cyber 9/11" for the last 30 years, from the likes of <a href="https://en.wikipedia.org/wiki/Richard_A._Clarke">Richard Clarke</a>, often results in bad policy. For example, it's pushed "Einstein" intrusion detection sensors everywhere which themselves now become a threat. It's now a single target the hacker can attack that impacts the entire grid, where before the grid was too diverse to attack with a single thing.</p><p>The long term path to securing the grid, from hackers or solar mass ejections, is more diversity, such as more home battery storage and solar panels. Solar and wind produce an over-abundance of power for a few hours each day. The grid should just deliver that to households which recharge their backup batteries and cars. Households would have incentive to invest in such infrastructure with current smart-grid technologies that charge more or less depending upon the current production and load on the grid.</p><p>In other words, to resist hackers, thinking in terms of "too big to fail" is the wrong approach. We should be thinking in diversifying infrastructure, such that households and businesses have more continuity in the face of a grid attack.</p><h1>AI Replacing Security Analysts</h1><p>Well, part of this question has nothing to do with cybersecurity, but is about the current capabilities of AI right now.</p><p>AI is "trained" on existing things. It'll certainly become a useful defensive technology, able to easily recognize known attacks in ways that human analysts struggle to.</p><p>But on the other hand, cybersecurity always works this way. Defenders address known attacks, and hackers are constantly pivoting to new things.</p><p>The reason security analysts are human is so that they can likewise pivot and deal with novel attacks.</p><p>In other words, AI isn't going to be the "magic pill" that solves cybersecurity. Nor is it the "magic pill" that's going to automate hacker attacks. Magic pills are the wrong way to conceptualize problems.</p><p>Now, AI is certainly going to change the job of cybersecurity analyst, but then, technology has always been changing that job. There are a few chronic problems that remain the same, but most of the job completely changes every decade.</p><h1>Operating System</h1><p>There is no secure operating system. All operating systems have roughly the same sort of features that experts can use to harden them, such as removing admin access or removing app privileges.</p><p>Classically, there has always been operating-system partisanship in the tech community. Specifically, it's standard for techies to tell you how insecure and unreliable Windows is, because they hate the monopoly dominance Windows has on the desktop. But it's never been technically true &#8212; technical experts exploit the trust people have in their expertise in order to pursue partisan anti-Microsoft goals. A classic example is the "<a href="https://ccianet.org/wp-content/uploads/2003/09/cyberinsecurity%20the%20cost%20of%20monopoly.pdf">Monoculture</a>" paper by Dan Geer &#8212; technically vacuous but strokes the prejudices of those who hate Microsoft, so you'll get cheers from the crowd whenever you mention it at a cybersecurity conference.</p><p>I'd agree that most organizations are flawed in how they've deployed Microsoft solutions. But replacement is probably just a very different deployment of Microsoft solutions, not switching to macOS or (gasp) Linux on the desktop.</p><p>But the biggest flaw here is simply pretending that the best operating system is the most secure one. Even if there was one that was notably more secure, the best business operating system is still the one that best solves business needs, not which solves cybersecurity needs. We in cybersecurity believe that we are gods and everyone should listen to us, that the purpose of the organization is to solve our needs. The chief cause of burnout in the industry is that nobody seems to be listening to us when we stress the importance of cybersecurity. But cybersecurity isn't that important &#8212; the business is.</p><p>In short, it's our job to secure the business operating system, whichever one they choose. Cybersecurity needs should be considered, but only as one of many needs.</p><h1>Conclusion</h1><p>Of course, Lesley has the right answers: the only people you should trust are those who claim the answers are complicated.</p><p>But, as a contrarian, I'm still going to reach for the wrong answers. So that's this post.</p><div><hr></div><p>AI disclaimer: AI will replace copy editors. I can&#8217;t help but make stupid mistakes that. I cannot see, so I&#8217;m now using AI to copy-edit my crap. Here&#8217;s the list of changes claude.ai made to this piece before I posted it. Also, the image at top was created by Grok.ai.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ve3o!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f6311a7-216c-44cf-b4a0-eb98201a1f0f_1056x1368.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ve3o!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f6311a7-216c-44cf-b4a0-eb98201a1f0f_1056x1368.png 424w, https://substackcdn.com/image/fetch/$s_!ve3o!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f6311a7-216c-44cf-b4a0-eb98201a1f0f_1056x1368.png 848w, https://substackcdn.com/image/fetch/$s_!ve3o!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f6311a7-216c-44cf-b4a0-eb98201a1f0f_1056x1368.png 1272w, https://substackcdn.com/image/fetch/$s_!ve3o!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f6311a7-216c-44cf-b4a0-eb98201a1f0f_1056x1368.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ve3o!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f6311a7-216c-44cf-b4a0-eb98201a1f0f_1056x1368.png" width="1056" height="1368" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0f6311a7-216c-44cf-b4a0-eb98201a1f0f_1056x1368.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1368,&quot;width&quot;:1056,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:549530,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ve3o!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f6311a7-216c-44cf-b4a0-eb98201a1f0f_1056x1368.png 424w, https://substackcdn.com/image/fetch/$s_!ve3o!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f6311a7-216c-44cf-b4a0-eb98201a1f0f_1056x1368.png 848w, https://substackcdn.com/image/fetch/$s_!ve3o!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f6311a7-216c-44cf-b4a0-eb98201a1f0f_1056x1368.png 1272w, https://substackcdn.com/image/fetch/$s_!ve3o!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0f6311a7-216c-44cf-b4a0-eb98201a1f0f_1056x1368.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p> </p><p></p><p></p><p></p>]]></content:encoded></item><item><title><![CDATA[CISA CSRB: good riddance]]></title><description><![CDATA[It was a political group pushing policy, not a technical group doing failure analysis]]></description><link>https://cybersect.substack.com/p/cisa-csrb-good-riddance</link><guid isPermaLink="false">https://cybersect.substack.com/p/cisa-csrb-good-riddance</guid><dc:creator><![CDATA[Robert Graham]]></dc:creator><pubDate>Wed, 22 Jan 2025 23:28:16 GMT</pubDate><content:encoded><![CDATA[<p>In my social media timeline, I see journalists lamenting[<a href="https://x.com/dnvolz/status/1881819429505482775">1</a>][<a href="https://x.com/ericgeller/status/1881804954547220650">2</a>] the <a href="https://www.documentcloud.org/documents/25500093-dhs-advisory-boards-termination-letter/">dissolution</a> of the &#8220;Cyber Safety Revue Board&#8221; or &#8220;<a href="https://www.cisa.gov/resources-tools/groups/cyber-safety-review-board-csrb">CSRB</a>&#8221;. But this is a good thing, the board was very much a misuse of resources.</p><p>The CSRB was an advisory board setup by CISA modeled after the NTSB, the group that investigates major accidents involving airplanes, trains, pipelines, and so on.</p><p>But while it copied the NTSB purpose, it wasn&#8217;t structured anything like the NTSB. The NTSB is a federal agency, with 5 political leaders (it&#8217;s their paid full time job), a large number of technical experts (likewise, paid full time jobs), subpoena power, and a $150 million budget.</p><p>In contrast, the CSRB is just 13 to 20 people, who volunteer their time, most of whom aren&#8217;t particular technical.</p><p>The CSRB output hasn&#8217;t been technical but political. The board was more about gathering political consensus than producing technical information.</p><p>They&#8217;ve produced only a few reports, a lot of effort with little output. Their reports covered the <a href="https://www.cisa.gov/resources-tools/resources/CSRB-Review-Summer-2023-MEO-Intrusion">MS Exchange 2023 hack,</a> the <a href="https://www.cisa.gov/resources-tools/resources/review-attacks-associated-lapsus-and-related-threat-groups-report">Lapsus$ attacks</a>, and <a href="https://www.cisa.gov/resources-tools/resources/csrb-log4j-key-findings-and-recommendations-summary">Log4j</a>.</p><p>None of these reports contribute to our understanding of the subject. These high-profile incidents are already well covered with public information, with lots of experts opining on them. The &#8220;value add&#8221; is the fallacious idea that it&#8217;s &#8220;official&#8221;, that none of the public information is valid unless the government puts its stamp of imprimatur on it.</p><p>Their <a href="https://www.cisa.gov/resources-tools/resources/CSRB-Review-Summer-2023-MEO-Intrusion">report</a> on the MS Exhange hack is a good example. It makes the following political judgement:</p><p><em>&#8220;The Board concludes that this intrusion should never have happened. Storm-0558 was able to succeed because of a cascade of security failures at Microsoft&#8221;</em></p><p>This is nonsense. Every hack &#8220;<em>should never have happened</em>&#8221; and is the result of &#8220;<em>failures</em>&#8221;. It&#8217;s not a &#8220;cascade of failures&#8221;, but a demonstration of the robust &#8220;defense-in-depth&#8221; at Microsoft, that any attack has to get through a lot of barriers.</p><p>An NTSB failure analysis is never so judgmental. The political desire to assign blame is antithetical to failure-analysis, which focused primarily on what failed.</p><p>The CSRB reports are the opposite. Their reports only contain a high-level overview of what went wrong, high-level, hand-waving, non-technical descriptions. They lack the technical detail of NTSB reports, and do not contain enough information where a techie like myself can figure out exactly what went wrong.</p><p>Instead of fixing specific problems, the CSRB reports are about promoting broad policy level initiatives. For example, their report on the Log4j vulnerabilities contains no help for how organizations can find vulnerable systems. Instead, it promotes the political agenda of &#8220;software bill of materials&#8221; that theoretically might help in the future. (But which, in my technical opinion, won&#8217;t).</p><p>The <a href="https://www.documentcloud.org/documents/25500093-dhs-advisory-boards-termination-letter/">memorandum</a> dissolving the CSRB justifies itself by saying it&#8217;s a misused of resources, and it absolutely is. A non-political, non-judgmental NTSB-style failure-analysis would be a good thing. The current CSRB is nothing like that, as we can see from its reports.</p><div><hr></div><p>Disclaimer: I know, like, and respect several people on the CSRB.</p><div><hr></div><p>Somebody sent me these two links, where the NTSB is indeed critical of Boeings safety culture.</p><p><a href="https://www.reuters.com/business/aerospace-defense/ntsb-chair-tells-boeing-ceo-that-planemaker-has-safety-culture-problem-2024-09-12/">https://www.reuters.com/business/aerospace-defense/ntsb-chair-tells-boeing-ceo-that-planemaker-has-safety-culture-problem-2024-09-12/</a></p><p><a href="https://www.nbcnews.com/business/travel/ntsb-grills-boeing-execs-safety-culture-retaliation-allegations-rcna165653">https://www.nbcnews.com/business/travel/ntsb-grills-boeing-execs-safety-culture-retaliation-allegations-rcna165653</a></p><p></p>]]></content:encoded></item><item><title><![CDATA[Debunking Spoonamore's Letter]]></title><description><![CDATA[Somebody named &#8220;Spoonamoore&#8221; wrote a blogpost outlining a conspiracy by Musk (among others) to steal the 2024 election (for Trump).]]></description><link>https://cybersect.substack.com/p/debunking-spoonamores-letter</link><guid isPermaLink="false">https://cybersect.substack.com/p/debunking-spoonamores-letter</guid><dc:creator><![CDATA[Robert Graham]]></dc:creator><pubDate>Fri, 22 Nov 2024 00:45:21 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!M15g!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1de2f4b8-72e6-47fb-b3ef-bdfe94a43350_1024x1024.webp" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!M15g!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1de2f4b8-72e6-47fb-b3ef-bdfe94a43350_1024x1024.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!M15g!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1de2f4b8-72e6-47fb-b3ef-bdfe94a43350_1024x1024.webp 424w, https://substackcdn.com/image/fetch/$s_!M15g!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1de2f4b8-72e6-47fb-b3ef-bdfe94a43350_1024x1024.webp 848w, https://substackcdn.com/image/fetch/$s_!M15g!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1de2f4b8-72e6-47fb-b3ef-bdfe94a43350_1024x1024.webp 1272w, https://substackcdn.com/image/fetch/$s_!M15g!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1de2f4b8-72e6-47fb-b3ef-bdfe94a43350_1024x1024.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!M15g!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1de2f4b8-72e6-47fb-b3ef-bdfe94a43350_1024x1024.webp" width="1024" height="1024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1de2f4b8-72e6-47fb-b3ef-bdfe94a43350_1024x1024.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:382538,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!M15g!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1de2f4b8-72e6-47fb-b3ef-bdfe94a43350_1024x1024.webp 424w, https://substackcdn.com/image/fetch/$s_!M15g!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1de2f4b8-72e6-47fb-b3ef-bdfe94a43350_1024x1024.webp 848w, https://substackcdn.com/image/fetch/$s_!M15g!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1de2f4b8-72e6-47fb-b3ef-bdfe94a43350_1024x1024.webp 1272w, https://substackcdn.com/image/fetch/$s_!M15g!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1de2f4b8-72e6-47fb-b3ef-bdfe94a43350_1024x1024.webp 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>Somebody named &#8220;Spoonamoore&#8221; wrote a <a href="https://substack.com/home/post/p-151721941">blogpost</a> outlining a conspiracy by Musk (among others) to steal the 2024 election (for Trump). This has gotten a lot of attention in social-media. As a long time election conspiracy-theory debunker, people keep asking my opinion about it. I wrote a blogpost debunking the core point, about &#8220;<a href="https://cybersect.substack.com/p/debunking-bullet-ballots">bullet ballots</a>&#8221;, but apparently that wasn&#8217;t enough. In this post, I analyze the entire thing.</p><p>Spoonamore&#8217;s conspiracy-theory has four elements:</p><ol><li><p>Evidence (claimed) of fraudulent ballots, namely a statistically high number of &#8220;bullet ballots&#8221; containing only a vote for President.</p></li><li><p>Musk&#8217;s &#8220;free-speech petition&#8221; harvesting voter records that fake ballots can be tied to.</p></li><li><p>Remote access to &#8220;pollbooks&#8221; to make the count of &#8220;votes&#8221; and &#8220;voters&#8221; match.</p></li><li><p>Change the tabulator results, inserting votes votes at precincts to match how many voters the pollbooks claimed voted.</p></li></ol><h1>Step #1 bullet ballots</h1><p>The core of the conspiracy-theory, the only part that might contain evidence, is the claim that there are an unusual number of &#8220;bullet ballots&#8221; (votes only for President) or &#8220;downvotes&#8221; (missing only some races other than President).</p><p>While he claims such evidence exists, he doesn&#8217;t cite it. He&#8217;s vague where he&#8217;s getting his information from. Neither his data sources or methods are disclosed.</p><p>In fact, &#8220;bullet ballots&#8221; wouldn&#8217;t be public. Few states provide enough information to count them. Georgia does, and once I get a hold of the ballot images after the 2024 election, I&#8217;m going to count this. But for right now, he cites no source for such information.</p><p>I can, however, partly reproduce his results by counting <strong>down votes</strong> instead. These are ballots that have a vote for President, but where some other races are missing votes. The number of downotes must therefore exceed the number of bullet ballots (all bullet ballots are also a downvote).</p><p>The downvotes are public. We can compare the vote counts for the President race against other races, most easily against statewide races like Senator and Governor.</p><p>For example, in the Arizona 2024 race, we can tell there were <a href="https://www.nbcnews.com/politics/2024-elections/arizona-president-results">3,389,405 votes for President</a> and <a href="https://www.nbcnews.com/politics/2024-elections/arizona-senate-results">3,348,017 votes for Senate</a>, a difference of 1.2%. It&#8217;s not precise, we&#8217;d have to look at the actual ballots to know for certain, but it&#8217;s close enough.</p><p>In <a href="https://cybersect.substack.com/p/debunking-bullet-ballots">another blogpost</a>, I do the work and show that number of such ballots is perfectly normal &#8212; at least, those where there&#8217;s a senate race. Remember from high-school civics class that 1/3rd of the states won&#8217;t have a Senate race this year. My home swing state of Georgia has neither a Senator nor Governor race in 2024.</p><p>In that blogpost, I document data sources and methods so that anybody can reproduce my work easily. That&#8217;s how you can identify conspiracy-theories: they don&#8217;t document their sources or methods.</p><h1>Step #2 registration harvesting</h1><p>The next step in the conspiracy-theory is Musk&#8217;s so-called &#8220;<a href="https://www.bbc.com/news/articles/ced0d1g5zyno">free-speech petition</a>&#8221;. Musk created a website where people could sign up to promise to defend the First Amendment. He then gave away $1 million each day to the people who had signed up &#8212; on the condition that they were also registered to vote.</p><p>Musk&#8217;s idea was silly, of course. For one thing, it wasn&#8217;t a &#8220;petition&#8221; but a &#8220;promise&#8221;. For another thing, it&#8217;s unclear whether people were signing up to defend the actual First Amendment or Musk&#8217;s twisted interpretation of it. Thirdly, it&#8217;s not really recording those committed to free-speech so much as those wanting to win $1 million.</p><p>Critics see more in this effort. Offering a $1 million lottery to encourage people to register to vote is an illegal inducement, and Democrats are taking him to court over this. (As I read the law, he&#8217;s not actually guilty, but it&#8217;s close).</p><p>Spoonamore sees this as part of the larger conspiracy. In order to stuff ballot boxes with illegal votes, those ballots still need to be tied to legitimate registered voters.</p><p>At the end of the election, the number of registered voters who voted needs to match the number of votes cast. It&#8217;s a common conspiracy-theory that elections end up with &#8220;more votes than voters&#8221;, but in fact, this never really happens. It&#8217;s such a well-known cliche that it&#8217;s always checked after every election.</p><p>Thus, Spoonamore theorizes that by harvesting the street addresses of registered voters, Musk (or coconspirators) can stuff fraudulent votes matched to real voters.</p><p>It&#8217;s a nonsense theory, though, because <strong>voter registrations are already public records</strong>. In my state of Georgia, it costs $250 to get a list of all registered voters. Something similar is the case in all other states. Musk didn&#8217;t need a nefarious plan to harvest lists of eligible voters, he could simply get them with a public records request.</p><p>Spoonamore claims the scheme requires more than the public record of the registered voter, that knowledge of Trump support was needed. If registered Democrats suddenly voted for Trump in large numbers, this would look suspicious. But this sort of anomaly isn&#8217;t detectable. If it were, the anomaly of suspiciously high turnout among Republicans would be even more noticeable. </p><h1>Step #3  <strong>pollbooks</strong>.</h1><p>The <strong>pollbook</strong> is the list of eligible voters at a precinct. When you go on election day, they check your name against this list, to see if you are allowed. After you vote, they check off your name, so you an&#8217;t vote again.</p><p>Historically, this was a paper printout. On the morning of the election, the computers that hold the voter registration database would print out a list of voters for each precinct, including whether they&#8217;ve already voted (such as by mail-in ballot).</p><p>The theory here is that pollbook numbers need updating. As the count of stuff votes go up, you need to increment the count of voters. You need to mark off specific voter names who you claim have voted.</p><p>Spoonamore claims that &#8220;<em>ePollBook data is nearly always linked to the internet</em>&#8221;, but the opposite is true. It&#8217;s usually paper or a tablet not connected to the Internet.</p><p>That&#8217;s changing. States want to make it easy for people to vote at any precinct, so that if there is a line at one, they can just drive down the road to vote at another. This requires electronic pollbooks that are synchronized via the Internet during the election.</p><p>Arizona does this. They use Internet connected e-pollbooks. They have robust cybersecurity measures (such as using VPNs) that make Internet hacking implausible, but technically, they are connected to the Internet. Indeed, this was a problem during the 2024 primaries, early voting in Arizona was <a href="https://www.votebeat.org/arizona/2024/07/19/microsoft-windows-crowdstrike-outage-arizona-primary-early-voting-disruption/">disrupted</a> by a global IT outage. The electronic pollbooks could not connect to the server, and hence, the polls couldn&#8217;t open.</p><p>In the 2024 Presidential election, some precincts in rural counties had their pollbooks connected via Starlink, Musk&#8217;s satellite Internet service.</p><p>This again brings Musk into election conspiracy theories, but it&#8217;s incidental. Internet communication is encrypted on the ends, doubly so when using VPNs, so there&#8217;s nothing a router can do to spy on or intercept such traffic. Routers, even Musk&#8217;s Starlink routers, can&#8217;t do anything to interfere with this, other than refusing to route traffic. It&#8217;s a fundamental principle of the modern Internet that routers can only see the metadata (addresses of the packet destination) and not the payloads.</p><p>The reason Starlink appears here is because Musk re-invented satellite Internet, converting it from something impractical for most purposes to something as easy to setup as WiFi. It&#8217;s by far the easiest way to connect rural locations to the Internet, everywhere in the world, from the heart of the Amazon, to airplanes flying over the Atlantic, to Antarctica, to the election office in the middle of rural Cochise county in Arizona.</p><p>Musk is going to appear in a lot of conspiracy-theories in the future. Starlink is a revolution in ubiquitous Internet. It&#8217;s showing up everywhere &#8212; and will appear again in the next round of conspiracy-theories. But since it&#8217;s merely a router, it&#8217;s immaterial.</p><h1>Step #4 tabulator stuffing</h1><p>The last step is the ballot stuffing.</p><p>The problem is that a pure computer hack cannot create paper ballots, so we aren&#8217;t stuffing actual ballots, such messing with numbers inside the computer to increase vote count.</p><p>Paper ballots are used almost everywhere.</p><p>In Arizona, ballots are printed out and hand marked by humans, then fed into the <strong>tabulators</strong>. In Georgia, precincts use <strong>ballot marking devices</strong> that help a voter fill out the ballot, which is then printed out. The printout is then fed into a tabulator as a separate step. Sure, a computer is used to vote in Georgia, but there&#8217;s s till a paper ballot.</p><p>In theory, it wouldn&#8217;t be too hard hard for a malicious election worker to create fraudulent ballots and stuff them with the other paper ballots, but there are so many surveillance cameras, election watchers, and other workers that somebody would likely get caught. The conspiracy here is that it all happened via computers. Physical actions can be seen, computer actions are invisible.</p><p>Spoonamore&#8217;s theory is that the <strong>tabulator</strong> is hacked to add numbers to Trump&#8217;s total, creating more votes going out than paper ballots coming in.</p><p>That&#8217;s why hacking the <strong>pollbook</strong> and <strong>tabulator</strong> together is important, so that the number of votes and voters match. The idea is that at the end of the day, right before polls closed, the hacked pollbook will mark of registered voters that have not yet voted, to make the numbers even.</p><p>We can&#8217;t detect the hack by simply looking at the tabulator or pollbook records of the number of votes/voters, but we can detect this by counting the number of paper ballots. That&#8217;s why they suggest a hand recount of the President race.</p><p>The simplest way to guard against this is to count the paper ballots at the precinct at the end of the election day and verify the number of <strong>ballots tabulated</strong> match the number of <strong>paper ballots</strong>. This was a requirement proposed by the (Republican controlled) Georgia Election Board, but was struck down by the courts. Democrats claimed this was some sort of evil conspiracy by the Republicans, but is actually quite reasonable.</p><p>Tabulators are not connected to the Internet as Spoonamore claims, only some pollbooks. Thus, the reality is that local precinct workers would need to be part of the conspiracy. This is implausible &#8212; it demands a conspiracy to big that it&#8217;s unlikely to go undetected. Spoonamore claims that such workers can tricked into bad actions, but really, election procedures are more secure than that.</p><p>The one conspiracy-theory type thing I might agree with is that local election workers can plausibly tamper with tabulators. In 2021, Republican election conspiracy-theorists <a href="https://www.lawfaremedia.org/article/what-the-heck-happened-in-coffee-county-georgia">raided Coffee County in Georgia</a> and stole all the code for Dominion&#8217;s computers, including tabulators. They&#8217;ve had 3 years to study that code looking for ways to subvert it. </p><p>There&#8217;s no evidence of such subversion, but it&#8217;s the one part of this entire conspiracy that&#8217;s plausible. I would demand evidence before I&#8217;d believe it did happen, but I cannot rule it out. In other words, it&#8217;s not as crazy as the rest of the conspiracy-theory.</p><h1>Other nonsense</h1><p>Spoonamore claims this hack is plausible because it&#8217;s a lot less complex than the Hamas pager hack.</p><p>It&#8217;s a silly comparison, such as claiming since we can land an austronaut on the moon that we can land an astronaut on the sun.</p><p>His overstates the complexity of the pager attack. It was not actually a &#8220;hack&#8221;, no &#8220;hackers&#8221; were involved. It was straightforward spycraft, inserting explosives into devices the enemy used. It&#8217;s impressive as heck, but not a hack.</p><p>Hacking pollbooks and tabulators is far harder than you think. The number of people involved would be absurdly high &#8212; no conspiracy that big could go long without some whistleblower revealing it.</p><h1>No rational argument</h1><p>You don&#8217;t need to do the work or be an expert to know this that this bunk. You can simply read the shape of his letter.</p><ul><li><p>He lists a lot of vague qualifications, like being the CTO or cofounder of companies that he doesn&#8217;t name. Rational people list their specific qualifications, if they were a CTO of a company, they name the company.</p></li><li><p>He expects to be believed by the strength of such qualifications, not the strength of his arguments. For example, he doesn&#8217;t document where he gets his &#8220;bullet ballot&#8221; numbers from, so nobody can directly check them.</p></li><li><p>He makes grandiose statements, like &#8220;duty to warn&#8221; or &#8220;defend the Constitution against all enemies foreign and domestic&#8221;. He&#8217;s got visions of grandeur.</p></li></ul><p>The point is that he thinks he&#8217;s increasing his credibility by such things. He evidently is &#8212; among the conspiracy-theory crowd that keeps repeating his letter. But among rational people, all of this decreases his credibility.</p><p>Specifically, rational people demand evidence, and he&#8217;s provided none of that, only a theory. Has hasn&#8217;t even provided evidence of the one element where evidence would be available, the number of &#8220;bullet ballots&#8221; or &#8220;undervotes&#8221;.</p><p>This is why it&#8217;s right to call this a &#8220;conspiracy-theory&#8221;: he theorizes a very large conspiracy based upon no evidence.</p><h1>Conclusion</h1><p>This is an overly long blogpost, and I&#8217;m sorry if you had to slog through it, but my goal is to address all the points. Apparently, simply <a href="https://cybersect.substack.com/p/debunking-bullet-ballots">debunking his &#8220;bullet ballots&#8221;</a> wasn&#8217;t enough, people <a href="https://bsky.app/profile/grambo1980.bsky.social/post/3lbi6lgfzwc2b">wanted</a> me to look at the rest of the claims.</p><p></p><p> </p><p></p><p></p>]]></content:encoded></item><item><title><![CDATA[Debunking "bullet ballots"]]></title><description><![CDATA[Bad data, bad theory]]></description><link>https://cybersect.substack.com/p/debunking-bullet-ballots</link><guid isPermaLink="false">https://cybersect.substack.com/p/debunking-bullet-ballots</guid><dc:creator><![CDATA[Robert Graham]]></dc:creator><pubDate>Wed, 20 Nov 2024 21:10:09 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!OlaI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F444c6544-7e3f-4a8d-955d-59a717631843_2025x990.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>There are a surprisingly large number of conspiracy-theories that Trumpist stole the 2024 election. Democrat party leaders aren&#8217;t promoting them, but they are still being passed around on social-media.</p><p>One of them is this <a href="https://substack.com/home/post/p-151721941">blogpost</a> claiming there was a statistically impossible number of &#8220;bullet ballots&#8221;, those just containing votes for the Presidential race, and not any for the other ~20 races on the same ballot (such as US Senate, state legislature, or county dog catcher).</p><p>That blogpost is debunked in two ways:</p><ol><li><p>The numbers are bad. I use the vote counts reported in the media (NBC News) to show that there&#8217;s no anomaly.</p></li><li><p>The idea is bad. It&#8217;s a logical fallacy to claim an unexplained anomaly can only be explained by a conspiracy. They distort the numbers to make them unexplainable instead of looking for explainations.</p></li></ol><h1>Doing the math</h1><p>First, let&#8217;s do the calculations ourselves.</p><p>The source of my information is the <a href="https://nbcnews.com">https://nbcnews.com</a> website&#8217;s &#8220;live results&#8221; pages showing the latest reported nubmers as of November 20, 2024. These aren&#8217;t the official numbers, but are close enough for our purposes.</p><p>My algorithm is to compare the President race numbers to the Senate race numbers. This isn&#8217;t &#8220;bullet ballots&#8221; precisely, but close enough. I&#8217;m not sure how actual &#8220;bullet ballots&#8221; can be counted (except in odd cases like Georgia that makes ballot images available).</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!OlaI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F444c6544-7e3f-4a8d-955d-59a717631843_2025x990.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!OlaI!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F444c6544-7e3f-4a8d-955d-59a717631843_2025x990.png 424w, https://substackcdn.com/image/fetch/$s_!OlaI!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F444c6544-7e3f-4a8d-955d-59a717631843_2025x990.png 848w, https://substackcdn.com/image/fetch/$s_!OlaI!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F444c6544-7e3f-4a8d-955d-59a717631843_2025x990.png 1272w, https://substackcdn.com/image/fetch/$s_!OlaI!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F444c6544-7e3f-4a8d-955d-59a717631843_2025x990.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!OlaI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F444c6544-7e3f-4a8d-955d-59a717631843_2025x990.png" width="1456" height="712" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/444c6544-7e3f-4a8d-955d-59a717631843_2025x990.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:712,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:258239,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!OlaI!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F444c6544-7e3f-4a8d-955d-59a717631843_2025x990.png 424w, https://substackcdn.com/image/fetch/$s_!OlaI!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F444c6544-7e3f-4a8d-955d-59a717631843_2025x990.png 848w, https://substackcdn.com/image/fetch/$s_!OlaI!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F444c6544-7e3f-4a8d-955d-59a717631843_2025x990.png 1272w, https://substackcdn.com/image/fetch/$s_!OlaI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F444c6544-7e3f-4a8d-955d-59a717631843_2025x990.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>We see that there were <a href="https://www.nbcnews.com/politics/2024-elections/arizona-president-results">3,389,405 votes for President</a> and <a href="https://www.nbcnews.com/politics/2024-elections/arizona-senate-results">3,348,017 votes for Senate</a>, a differences of 41,388 votes &#8212; or <strong>1.2%</strong>. This is the <strong>normal</strong> range we see across the country this election and in past elections.</p><p>Thus, we have <strong>disproved</strong> the claims of abnormal &#8220;bullet votes&#8221; in Arizona, that there were 123k such votes that was 7.2% of Trump&#8217;s total.</p><p>Conversely, we can do the same thing for Utah. This is not a swing state, Trump easily won it, and there was presumably no reason to cheat. That post claimed it had only 0.01% suspicious votes.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!3vaR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c58a015-13b7-4b76-b132-a4b5c54faf38_2008x1117.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!3vaR!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c58a015-13b7-4b76-b132-a4b5c54faf38_2008x1117.png 424w, https://substackcdn.com/image/fetch/$s_!3vaR!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c58a015-13b7-4b76-b132-a4b5c54faf38_2008x1117.png 848w, https://substackcdn.com/image/fetch/$s_!3vaR!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c58a015-13b7-4b76-b132-a4b5c54faf38_2008x1117.png 1272w, https://substackcdn.com/image/fetch/$s_!3vaR!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c58a015-13b7-4b76-b132-a4b5c54faf38_2008x1117.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!3vaR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c58a015-13b7-4b76-b132-a4b5c54faf38_2008x1117.png" width="618" height="343.80494505494505" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1c58a015-13b7-4b76-b132-a4b5c54faf38_2008x1117.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:810,&quot;width&quot;:1456,&quot;resizeWidth&quot;:618,&quot;bytes&quot;:282761,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!3vaR!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c58a015-13b7-4b76-b132-a4b5c54faf38_2008x1117.png 424w, https://substackcdn.com/image/fetch/$s_!3vaR!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c58a015-13b7-4b76-b132-a4b5c54faf38_2008x1117.png 848w, https://substackcdn.com/image/fetch/$s_!3vaR!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c58a015-13b7-4b76-b132-a4b5c54faf38_2008x1117.png 1272w, https://substackcdn.com/image/fetch/$s_!3vaR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c58a015-13b7-4b76-b132-a4b5c54faf38_2008x1117.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Doing the math, we see that this non-swing state had 2.2% such votes, where there was a vote for <a href="https://www.nbcnews.com/politics/2024-elections/utah-president-results">President</a> but not for <a href="https://www.nbcnews.com/politics/2024-elections/utah-senate-results">Senate</a>. This is in fact much higher than Arizona&#8217;s 1.2%.</p><p>The other swing states with Senate elections break down as follows:</p><ul><li><p>Arizona = 1.2%</p></li><li><p>Michigan = 1.6%</p></li><li><p>Minnesota = 1.7%</p></li><li><p>Nevada = 1.4%</p></li><li><p>Pennsylvania = 1.0%</p></li><li><p>Wisconsin = 0.9%</p></li></ul><p>Some other non-swing states:</p><ul><li><p>Utah = 2.2%</p></li><li><p>New Mexico = 2.2%</p></li><li><p>Texas = 0.8%</p></li><li><p>California = 3.1%</p></li></ul><p>Thus, I&#8217;ve completely debunked that claim. There are no anomalies here. </p><h1>Unexplained anomalies</h1><p>The core principle of conspiracy-theories is that <strong>anything unexplained is proof of the conspiracy</strong>. The &#8220;conspiracy&#8221; is a universal explaination that explains everything, so becomes the null hypothesis if something cannot otherwise be explained.</p><p>In other words, it&#8217;s not positive proof that something happened, but a sort of negative proof based on believing nothing else could&#8217;ve happened.</p><p>And it doesn&#8217;t work out. It&#8217;s inconceivable that if somebody were trying to steal an election that they wouldn&#8217;t also insert votes for Senate and House races. The conspiracy-theory doesn&#8217;t actually explain the anomaly, it doesn&#8217;t explain why <em>only</em> one race was stolen and not others.</p><p>This flawed logic means they <strong>hunt</strong> for anomalies. When they see a data anomaly, they aren&#8217;t interested in explaining it. They instead seek to distort it to become even more anamolous, to make it even more unexplainable.</p><p>That&#8217;s what we saw in the above blogpost. There was no attempt to figure out what was actually going on, but only an attempt to exagerate the anomaly.</p><p>For example, in that post, it usually talks about the number of such votes cast, &gt;1% of <strong>all</strong> votes. But when it gets around to talking about Arizon, it counts them as 7.3% of <strong>Trump</strong> votes cast, effectively doubling the number in comparison, to make it look twice as suspicious. Comparing to <strong>all</strong> votes would&#8217;ve netted a value of only 3.7%.</p><p>Likewise, their number of &gt;1% is suspiciously off, as my count of Utah above shows, with 2.2% suspicious votes.</p><p>The point is that the anomally was largely the work of a creative manipulation of numbers rather than an actual anomaly.</p><h1>Conclusion</h1><p>I&#8217;ve debunked this in two ways. First, I shows that the numbers are wrong. The latest reported results show no anomalies among the swing states, especially not in Arizona and Nevada that were singled out.</p><p>Second, I show that the logic is wrong. The numbers were twisted to heighten anomalies, which then used the flawed premise that any unpexplained anomaly is proof of the conspiracy.</p><div><hr></div><p>The following image shows a &#8220;bullet ballot&#8221; from the 2024 State of Georgia election. It contains only a vote for the President, while all the other races were ignored.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!tf4T!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0358d31-8c1d-486e-8000-e87ef2a4f920_1273x1255.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!tf4T!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0358d31-8c1d-486e-8000-e87ef2a4f920_1273x1255.png 424w, https://substackcdn.com/image/fetch/$s_!tf4T!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0358d31-8c1d-486e-8000-e87ef2a4f920_1273x1255.png 848w, https://substackcdn.com/image/fetch/$s_!tf4T!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0358d31-8c1d-486e-8000-e87ef2a4f920_1273x1255.png 1272w, https://substackcdn.com/image/fetch/$s_!tf4T!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0358d31-8c1d-486e-8000-e87ef2a4f920_1273x1255.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!tf4T!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0358d31-8c1d-486e-8000-e87ef2a4f920_1273x1255.png" width="1273" height="1255" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d0358d31-8c1d-486e-8000-e87ef2a4f920_1273x1255.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1255,&quot;width&quot;:1273,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:148970,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!tf4T!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0358d31-8c1d-486e-8000-e87ef2a4f920_1273x1255.png 424w, https://substackcdn.com/image/fetch/$s_!tf4T!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0358d31-8c1d-486e-8000-e87ef2a4f920_1273x1255.png 848w, https://substackcdn.com/image/fetch/$s_!tf4T!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0358d31-8c1d-486e-8000-e87ef2a4f920_1273x1255.png 1272w, https://substackcdn.com/image/fetch/$s_!tf4T!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0358d31-8c1d-486e-8000-e87ef2a4f920_1273x1255.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p>]]></content:encoded></item><item><title><![CDATA[Debunking Dominion backdoor passwords]]></title><description><![CDATA[All servers have backdoor passwords]]></description><link>https://cybersect.substack.com/p/debunking-dominion-backdoor-passwords</link><guid isPermaLink="false">https://cybersect.substack.com/p/debunking-dominion-backdoor-passwords</guid><dc:creator><![CDATA[Robert Graham]]></dc:creator><pubDate>Tue, 19 Nov 2024 22:37:37 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!vT99!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffefff77f-1774-41c7-879f-6c9cca53b272_2390x734.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>Dominion Voting Systems</em> is the leading provider of election computers to America&#8217;s swing states (Georgia, Wisconsin, Michigan, Pennsylvania, Arizona). They therefore get a lot of attention from conspiracy-theorists.</p><p>The latest is a <a href="https://x.com/RedBear331/status/1858335559724515834">claim</a> that Dominion&#8217;s &#8220;EMS&#8221; servers have a backdoor password of &#8220;dvscorp08!&#8221;, hardcoded in every server they&#8217;ve sold for over a decade.</p><p>The fact are (probably, uncontroversially) true. The characterization is not.</p><p>Dominion&#8217;s cyberscurity rests upon preventing <strong>physical access</strong> to the machines, keeping them <strong>air gapped</strong> from the Internet.</p><p>Anyone with physical access to the machines can subvert them, <strong>with or without backdoor passwords</strong>. Every scenario shown above can already be done without those backdoor passwords.</p><p>Even if you fixed that problem, Dominion has a bunch of other holes. In other words, Dominion is going to fix this by using Windows operating-system accounts instead of MS-SQL accounts, but this is just a band-aid that doesn&#8217;t actually change the security of the system. The password hashes will just be Windows password hashes instead of MS-SQL password hashes.</p><p>The ultimate fix is to re-architect things from scratch, using such technologies as TPMs and DPAPI, to make the security architecture work more like how your phone works, where somebody with physical access can&#8217;t subvert the security. But this only marginally improves security &#8212; hostile election workers would still be able to subvert elections.</p><h1>Details</h1><p>It&#8217;s incredibly irritating that these people don&#8217;t actually go into details about what the heck they are talking about.</p><p>Consider Supreme Court decisions: they go in detail explaining every step to the point that even non-lawyers can understand. It&#8217;s tedious as heck, but you can read the exact reasoning the justices used to come to the decision.</p><p>These conspiracy-theorists do the opposite, skipping steps and important information such that even experts aren&#8217;t certain what, precisely, is going on. We have to make educated guess about what they <strong>might</strong> mean. This process is deliberate &#8212; they are creating an argument to entice those with little knowledge of the system, not building a case that can withstand skeptical experts.</p><p>Simply saying &#8220;backdoor password&#8221; doesn&#8217;t tell us what&#8217;s going on. The first question is &#8220;for what?&#8221;. The three common contexts are:</p><ul><li><p>BIOS passwords</p></li><li><p>Windows account passwords</p></li><li><p>Database passwords</p></li></ul><p>In this case, &#8220;<em>dvscorp08!</em>&#8221; is the password for the a <strong>database</strong> (MS-SQL) account named &#8220;<em>SAdmin</em>&#8221;, on the &#8220;Dominion EMS&#8221; server. This is an administrative account that has full control over the database, meaning it can change values (like the number of votes) and even change some code called &#8220;stored procedure calls&#8221; that return different totals of votes, without changing the votes themselves.</p><p>The problem with Dominion&#8217;s EMS server is that it doesn&#8217;t really have security against hostile insiders. If you have physical access to the machine, you can already do such things as change votes and source code. The reason is that if you were a hostile insider, you could subvert the election in other ways, without needing to do the hacks described here.</p><h1>Dominion EMS server</h1><p>The system in question is Dominion&#8217;s &#8220;<a href="https://www.dominionvoting.com/democracy-suite-ems/">Election Management System</a>&#8221; or &#8220;EMS&#8221;.</p><p>This is the central component of Dominion&#8217;s &#8220;Democracy Suite&#8221; of products which includes a lot of other things, such as ballot marking devices (BMDs) and tabulators.</p><p>Each county runs their own election, and will have one EMS, usually locked away in a room. The EMS is <strong>air gapped</strong> from the Internet, though will usually be part of a small local network connected to other devices.</p><p>The larger the county, the more the components of EMS will be split among various servers and workstations on the air gapped network. For a small county, like Mesa County in Colorado, most components are located on a single server.</p><p>The system manages many stages of the election, such as shown in the graphic:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!vT99!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffefff77f-1774-41c7-879f-6c9cca53b272_2390x734.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vT99!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffefff77f-1774-41c7-879f-6c9cca53b272_2390x734.png 424w, https://substackcdn.com/image/fetch/$s_!vT99!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffefff77f-1774-41c7-879f-6c9cca53b272_2390x734.png 848w, https://substackcdn.com/image/fetch/$s_!vT99!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffefff77f-1774-41c7-879f-6c9cca53b272_2390x734.png 1272w, https://substackcdn.com/image/fetch/$s_!vT99!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffefff77f-1774-41c7-879f-6c9cca53b272_2390x734.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vT99!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffefff77f-1774-41c7-879f-6c9cca53b272_2390x734.png" width="1456" height="447" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fefff77f-1774-41c7-879f-6c9cca53b272_2390x734.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:447,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:221915,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!vT99!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffefff77f-1774-41c7-879f-6c9cca53b272_2390x734.png 424w, https://substackcdn.com/image/fetch/$s_!vT99!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffefff77f-1774-41c7-879f-6c9cca53b272_2390x734.png 848w, https://substackcdn.com/image/fetch/$s_!vT99!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffefff77f-1774-41c7-879f-6c9cca53b272_2390x734.png 1272w, https://substackcdn.com/image/fetch/$s_!vT99!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffefff77f-1774-41c7-879f-6c9cca53b272_2390x734.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Elections are much more complex than you think. In your mind, you simply get a paper ballot, mark which President you want, it then gets counted, and that&#8217;s the result.</p><p>But in America, we typically overload the Presidential election with all the other races. It&#8217;ll usually contain state elections, such as your local legislature representative. It&#8217;s also contain local county offices, like the water commissioner. It may contain municipal elections, like the local mayor.</p><p>The following is a ballot image from Douglas County in Georgia form 2020:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!bBXM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef3bbaef-8ad8-4c05-a42c-169dc26f2080_1436x694.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!bBXM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef3bbaef-8ad8-4c05-a42c-169dc26f2080_1436x694.png 424w, https://substackcdn.com/image/fetch/$s_!bBXM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef3bbaef-8ad8-4c05-a42c-169dc26f2080_1436x694.png 848w, https://substackcdn.com/image/fetch/$s_!bBXM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef3bbaef-8ad8-4c05-a42c-169dc26f2080_1436x694.png 1272w, https://substackcdn.com/image/fetch/$s_!bBXM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef3bbaef-8ad8-4c05-a42c-169dc26f2080_1436x694.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!bBXM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef3bbaef-8ad8-4c05-a42c-169dc26f2080_1436x694.png" width="1436" height="694" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ef3bbaef-8ad8-4c05-a42c-169dc26f2080_1436x694.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:694,&quot;width&quot;:1436,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:420151,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!bBXM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef3bbaef-8ad8-4c05-a42c-169dc26f2080_1436x694.png 424w, https://substackcdn.com/image/fetch/$s_!bBXM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef3bbaef-8ad8-4c05-a42c-169dc26f2080_1436x694.png 848w, https://substackcdn.com/image/fetch/$s_!bBXM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef3bbaef-8ad8-4c05-a42c-169dc26f2080_1436x694.png 1272w, https://substackcdn.com/image/fetch/$s_!bBXM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef3bbaef-8ad8-4c05-a42c-169dc26f2080_1436x694.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The races that can change throughout the county are the U.S Representative, the State Senator, the State Representative, and the Education District.</p><p>So before the election, a worker sits down to use the Dominion &#8220;Election Event Designer&#8221; app to design all these apps. This can include such tasks as creating audio files for use in ballot marking devices to help those with vision problems. It&#8217;s a lot of work.</p><p>Among the lack of details is where this <strong>dbo.Choice</strong> stored procedure comes from. It comes from the Designer app that designs the next election event. It&#8217;ll eventually be used after the election during Tallying of results. To really understand this, we need a full description of how all this works. Note that the <a href="https://x.com/RedBear331/status/1858337111323078688/photo/3">screenshot</a> in the thread only lists the Presidential race, not any of the numerous other races happening at the same time. I&#8217;m not sure if this is real information of an actual race &#8212; there&#8217;s no information where the hacker got this.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FpC2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8fca394-a965-42f5-bb0f-c3fcb57fb8c5_1432x451.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FpC2!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8fca394-a965-42f5-bb0f-c3fcb57fb8c5_1432x451.jpeg 424w, https://substackcdn.com/image/fetch/$s_!FpC2!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8fca394-a965-42f5-bb0f-c3fcb57fb8c5_1432x451.jpeg 848w, https://substackcdn.com/image/fetch/$s_!FpC2!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8fca394-a965-42f5-bb0f-c3fcb57fb8c5_1432x451.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!FpC2!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8fca394-a965-42f5-bb0f-c3fcb57fb8c5_1432x451.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FpC2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8fca394-a965-42f5-bb0f-c3fcb57fb8c5_1432x451.jpeg" width="1432" height="451" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f8fca394-a965-42f5-bb0f-c3fcb57fb8c5_1432x451.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:451,&quot;width&quot;:1432,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Image&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Image" title="Image" srcset="https://substackcdn.com/image/fetch/$s_!FpC2!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8fca394-a965-42f5-bb0f-c3fcb57fb8c5_1432x451.jpeg 424w, https://substackcdn.com/image/fetch/$s_!FpC2!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8fca394-a965-42f5-bb0f-c3fcb57fb8c5_1432x451.jpeg 848w, https://substackcdn.com/image/fetch/$s_!FpC2!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8fca394-a965-42f5-bb0f-c3fcb57fb8c5_1432x451.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!FpC2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8fca394-a965-42f5-bb0f-c3fcb57fb8c5_1432x451.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>During and after the election comes the &#8220;tabulation&#8221; of votes. Dominion&#8217;s devices are called &#8220;ImageCast&#8221;, because among the things they do is to record an image of the ballot (such as the image above) before counting the votes. These devices can be connected via the air gapped network to the EMS, or more often, they record everything to a flash drive, which is then manually transported to the EMS and read in.</p><p>A worker then uses a &#8220;Results Tally and Reporting&#8221; app to then collect and report the votes.</p><h1>Services</h1><p>The EMS is built using standard modern technologies. In this case, they use the technology suite from Microsoft. The web server is running IIS server-side components written in C# that most then access the separate MS-SQL database. &#8220;IIS&#8221; is the name of Microsoft&#8217;s web server that comes with Windows, &#8220;C#&#8221; is the programming language most often used to write these components, and &#8220;MS-SQL&#8221; is Microsoft&#8217;s database software.</p><p>The specific problem here is hardcoded passwords in the C# code and within the database. This is <strong>common practice</strong>, because such servers are physically isolated from the world, but it&#8217;s <strong>not best practice</strong>.</p><p>It&#8217;s common because one component needs to connect to another, and that requires an account. Code running within the web server needs to log into the database just like any other user.</p><p>The Microsoft solution is &#8220;integrated&#8221; accounts, so that instead of the MS-SQL server maintaining it&#8217;s own login accounts (like &#8220;SAdmin&#8221; using the &#8220;dvscorp08!&#8221; password, that it instead trusts a Windows account.</p><p>In other words, Windows maintains a list of login accounts to log into Windows, and the database maintains login accounts to log into the database, and <strong>these are separate</strong>. But they don&#8217;t have to be: you can tell the database to trust Windows. You&#8217;ll still see something like &#8220;SAdmin&#8221; here in the database, but instead of password, you&#8217;ll see which Windows account that maps to.</p><p>It&#8217;s much like how a lot of websites allow you to login using your Apple, Google, or Facebook credentials without having to create a password specially for that website.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!n0Gv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99623809-ff7e-4e6e-a375-ae992f689ed2_1638x1396.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!n0Gv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99623809-ff7e-4e6e-a375-ae992f689ed2_1638x1396.png 424w, https://substackcdn.com/image/fetch/$s_!n0Gv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99623809-ff7e-4e6e-a375-ae992f689ed2_1638x1396.png 848w, https://substackcdn.com/image/fetch/$s_!n0Gv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99623809-ff7e-4e6e-a375-ae992f689ed2_1638x1396.png 1272w, https://substackcdn.com/image/fetch/$s_!n0Gv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99623809-ff7e-4e6e-a375-ae992f689ed2_1638x1396.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!n0Gv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99623809-ff7e-4e6e-a375-ae992f689ed2_1638x1396.png" width="1456" height="1241" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/99623809-ff7e-4e6e-a375-ae992f689ed2_1638x1396.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1241,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:353616,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!n0Gv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99623809-ff7e-4e6e-a375-ae992f689ed2_1638x1396.png 424w, https://substackcdn.com/image/fetch/$s_!n0Gv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99623809-ff7e-4e6e-a375-ae992f689ed2_1638x1396.png 848w, https://substackcdn.com/image/fetch/$s_!n0Gv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99623809-ff7e-4e6e-a375-ae992f689ed2_1638x1396.png 1272w, https://substackcdn.com/image/fetch/$s_!n0Gv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99623809-ff7e-4e6e-a375-ae992f689ed2_1638x1396.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h1>Security</h1><p>To fix Dominion&#8217;s security would be to rearchitect the system to work more like an iPhone, where any &#8220;hard coded passwords&#8221; are stored in a tamper-proof chip.</p><p>Dominion&#8217;s security rests upon <strong>physical access</strong>, preventing outsiders from accessing the machines. Their machines, or local networks, are <strong>air gapped</strong> from the rest of the Internet, so hackers can&#8217;t get in. There is little to no protection against hostile insiders, as we&#8217;ve seen in Mesa County (Colorado) and Coffee County (Georgia), where Republican election officials allowed conspiracy-theorists to access the machines after the 2020 election.</p><p>The point is that <strong>getting rid of these machines will not secure elections</strong>. Malicious election workers can already subvert the elections without the machines.</p><p>Having computers tabulate ballots is certainly a problem because people don&#8217;t trust computers, but the reality is that if we got rid of computers and hand-counted all elections, reliability and trustworthiness of the elections would go down, not up.</p><p>Now with computers, we do have the opportunity to <strong>improve security</strong> and also guard against hostile insiders, but this would require a <strong>complete redesign of Dominion&#8217;s architecture</strong>.</p><p>But the security improvements would be small. You still have to trust <strong>administrators</strong>. All that you&#8217;d be doing is securing the system against hostile <strong>election workers</strong>.</p><h1>How to do with without a backdoor password</h1><p>The disk is not encrypted. Somebody could access the disk physically and change all this. (You can&#8217;t meaningfully encrypt the disk without a hardware TPM chip like what you have in your phone).</p><p>Anybody who can login to access the server, such as uploading votes to tally, can execute database commands to change values in the database. That&#8217;s what they are doing when uploading new votes. This can be done at any workstation with any user account.</p><p>All these things can be subverted outside of the EMS before sending the data to be tallied.</p><p>Without computers, ballots can be tampered with using the same techniques they could always have been tampered with. There are a lot of security controls to make this harder, but dedicated malicious elections workers can still cause problems.</p><h1>How to discover such a hack</h1><p>Among many other things, the timestamps would change. The hack shown here changing the stored procedure would be trivially detected.</p><p>After an election, the entire database is archived and can be audited to discover such things.</p><h1>Conclusion</h1><p>Details matter. The <a href="https://x.com/RedBear331/status/1858335559724515834">post</a> above doesn&#8217;t contain enough details for experts to really know what&#8217;s going on. It only lists suggestive things, hoping to convince non-experts.</p><p>I try to go into more details in this post, but it would really require an entire textbook to explain it all.</p><p>In short, the scenarios described don&#8217;t need this &#8220;backdoor password&#8221;. It&#8217;s relying on the fact that people are scared by the concept of a &#8220;backdoor password&#8221;.</p><p>Dominion has crap security. It&#8217;s really only designed to keep outsiders out, and doesn&#8217;t do a good job protecting against malicious insiders. But malicious insiders have plenty of opportunity to subvert the system even without touching Dominion&#8217;s servers.</p><p>Sure, Dominion is going to &#8220;patch&#8221; this problem, but it&#8217;s not a real fix. The real fix is to redesign the security from scratch, such as using TPMs to encrypt the hard-drive.</p><p></p><p></p><p></p>]]></content:encoded></item></channel></rss>