<?xml version="1.0" encoding="utf-8" ?>

<?xml-stylesheet type="text/xsl" href="/templates/2k11/rss.xsl" media="screen" ?>
<rss version="2.0" 
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/"
   xmlns:content="http://purl.org/rss/1.0/modules/content/"
   >
<channel>
    
    <title>Daniel Lange's blog (Entries tagged as security)</title>
    <link>https://daniel-lange.com/</link>
    <description>agrep -pB IT /dev/life</description>
    <dc:language>en</dc:language>
    <generator>Serendipity 2.6.0 - http://www.s9y.org/</generator>
    <pubDate>Sat, 23 Aug 2025 16:40:37 GMT</pubDate>

    <image>
    <url>//daniel-lange.com/uploads/Avatar_Blog_144_234.png</url>
    <title>RSS: Daniel Lange's blog - agrep -pB IT /dev/life</title>
    <link>https://daniel-lange.com/</link>
    <width>144</width>
    <height>234</height>
</image>

<item>
    <title>Polkitd (Policy Kit Daemon) in Trixie ... allowing remote users to suspend, reboot, power off the local system</title>
    <link>https://daniel-lange.com/archives/194-Polkitd-Policy-Kit-Daemon-in-Trixie-...-allowing-remote-users-to-suspend,-reboot,-power-off-the-local-system.html</link>
            <category>Debian</category>
    
    <comments>https://daniel-lange.com/archives/194-Polkitd-Policy-Kit-Daemon-in-Trixie-...-allowing-remote-users-to-suspend,-reboot,-power-off-the-local-system.html#comments</comments>
    <wfw:comment>https://daniel-lange.com/wfwcomment.php?cid=194</wfw:comment>

    <slash:comments>7</slash:comments>
    <wfw:commentRss>https://daniel-lange.com/rss.php?version=2.0&amp;type=comments&amp;cid=194</wfw:commentRss>
    

    <author>nospam@example.com (Daniel Lange)</author>
    <content:encoded>
    &lt;p&gt;As per &lt;a href=&quot;https://daniel-lange.com/archives/193-Polkitd-Policy-Kit-Daemon-in-Trixie-...-getting-rid-of-Authentication-is-required-to-create-a-color-profile.html&quot;&gt;the previous Polkit blog post&lt;/a&gt; the policykit framwork has lost the ability to understand its own .pkla files and policies need to be expressed in Javascript with .rules files now.&lt;/p&gt;

&lt;p&gt;To re-enable allowing remote users (think ssh) to reboot, hibernate, suspend or power off the local system, create a &lt;code&gt;10-shutdown-reboot.rules&lt;/code&gt; file in &lt;code&gt;/etc/polkit-1/rules.d/&lt;/code&gt;:&lt;/p&gt;

&lt;div class=&quot;js geshi&quot; style=&quot;text-align: left&quot;&gt;polkit.addRule(function(action, subject) {&lt;br /&gt;
&amp;#160; &amp;#160; if ((action.id == &amp;quot;org.freedesktop.login1.reboot-multiple-sessions&amp;quot; ||&lt;br /&gt;
&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160;action.id == &amp;quot;org.freedesktop.login1.reboot&amp;quot; ||&lt;br /&gt;
&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160;action.id == &amp;quot;org.freedesktop.login1.suspend-multiple-sessions&amp;quot; ||&lt;br /&gt;
&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160;action.id == &amp;quot;org.freedesktop.login1.suspend&amp;quot; ||&lt;br /&gt;
&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160;action.id == &amp;quot;org.freedesktop.login1.hibernate-multiple-sessions&amp;quot; ||&lt;br /&gt;
&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160;action.id == &amp;quot;org.freedesktop.login1.hibernate&amp;quot; ||&lt;br /&gt;
&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160;action.id == &amp;quot;org.freedesktop.login1.power-off-multiple-sessions&amp;quot; ||&lt;br /&gt;
&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160;action.id == &amp;quot;org.freedesktop.login1.power-off&amp;quot;) &amp;amp;&amp;amp;&lt;br /&gt;
&amp;#160; &amp;#160; &amp;#160; &amp;#160; (subject.isInGroup(&amp;quot;sudo&amp;quot;) || (subject.user == &amp;quot;root&amp;quot;)))&lt;br /&gt;
&amp;#160; &amp;#160; {&lt;br /&gt;
&amp;#160; &amp;#160; &amp;#160; &amp;#160; return polkit.Result.YES;&lt;br /&gt;
&amp;#160; &amp;#160; }&lt;br /&gt;
});&lt;/div&gt;

&lt;p&gt;and run &lt;code&gt;systemctl restart polkit&lt;/code&gt;.&lt;/p&gt;
 
    </content:encoded>

    <pubDate>Fri, 22 Aug 2025 17:30:00 +0000</pubDate>
    <guid isPermaLink="false">https://daniel-lange.com/archives/194-guid.html</guid>
    <category>javascript</category>
<category>polkit</category>
<category>security</category>

</item>
<item>
    <title>Polkitd (Policy Kit Daemon) in Trixie ... getting rid of &quot;Authentication is required to create a color profile&quot;</title>
    <link>https://daniel-lange.com/archives/193-Polkitd-Policy-Kit-Daemon-in-Trixie-...-getting-rid-of-Authentication-is-required-to-create-a-color-profile.html</link>
            <category>Debian</category>
    
    <comments>https://daniel-lange.com/archives/193-Polkitd-Policy-Kit-Daemon-in-Trixie-...-getting-rid-of-Authentication-is-required-to-create-a-color-profile.html#comments</comments>
    <wfw:comment>https://daniel-lange.com/wfwcomment.php?cid=193</wfw:comment>

    <slash:comments>5</slash:comments>
    <wfw:commentRss>https://daniel-lange.com/rss.php?version=2.0&amp;type=comments&amp;cid=193</wfw:commentRss>
    

    <author>nospam@example.com (Daniel Lange)</author>
    <content:encoded>
    &lt;p&gt;On the way to Trixie,&lt;strong&gt; polkitd (Policy Kit Daemon) has lost the functionality to evaluate its .pkla (Polkit Local Authority) files&lt;/strong&gt;.&lt;/p&gt;

&lt;pre&gt;
$ zcat /usr/share/doc/polkitd/NEWS.Debian.gz 
policykit-1 (121+compat0.1-2) experimental; urgency=medium

  This version of polkit changes the syntax used for local policy rules:
  it is now the same JavaScript-based format used by the upstream polkit
  project and by other Linux distributions.

  System administrators can override the default security policy by
  installing local policy overrides into /etc/polkit-1/rules.d/*.rules,
  which can either make the policy more restrictive or more
  permissive. Some sample policy rules can be found in the
  /usr/share/doc/polkitd/examples directory. Please see polkit(8) for
  more details.

  Some Debian packages include security policy overrides, typically to
  allow members of the sudo group to carry out limited administrative
  actions without re-authenticating. These packages should install their
  rules as /usr/share/polkit-1/rules.d/*.rules. Typical examples can be
  found in packages like flatpak, network-manager and systemd.

  Older Debian releases used the &quot;local authority&quot; rules format from
  upstream version 0.105 (.pkla files with an .desktop-like syntax,
  installed into subdirectories of /etc/polkit-1/localauthority
  or /var/lib/polkit-1/localauthority). The polkitd-pkla package
  provides compatibility with these files: if it is installed, they
  will be processed at a higher priority than most .rules files. If the
  polkitd-pkla package is removed, .pkla files will no longer be used.

 -- Simon McVittie &lt;smcv@debian.org&gt;  Wed, 14 Sep 2022 21:33:22 +0100
&lt;/pre&gt;

&lt;p&gt;This applies now to the &lt;strong&gt;polkitd version 126-2 destined for Trixie&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The most prominent issue is that you will get an error message:
&quot;Authentication is required to create a color profile&quot; asking for the root(!) password every time you remotely log into a Debian Trixie system via RDP, x2go or the like.&lt;/p&gt;

&lt;p&gt;This used to be mendable with a .pkla file dropped into &lt;code&gt;/etc/polkit-1/localauthority/50-local.d/&lt;/code&gt; ... but these .pkla files are void now and need to be replace with a Javascript &quot;rules&quot; file.&lt;/p&gt;

&lt;p&gt;The background to his is quite a fascinating read ... 13 years later:&lt;br /&gt;
&lt;a href=&quot;https://davidz25.blogspot.com/2012/06/authorization-rules-in-polkit.html&quot;&gt;https://davidz25.blogspot.com/2012/06/authorization-rules-in-polkit.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The solution has been listed in &lt;a href=&quot;https://devanswe.rs/fix-authentication-required-create-color-profile-ubuntu-polkit/&quot;&gt;DevAnswers&lt;/a&gt; as other distros (Fedora, ArchLinux, OpenSuse) have been faster to depreciate the .pkla files and require .rules files.
I amended the solution given there with checking for root to be automatically authenticated, too.&lt;/p&gt;

&lt;p&gt;So, create a &lt;code&gt;50-color-manager.rules&lt;/code&gt; file in &lt;code&gt;/etc/polkit-1/rules.d/&lt;/code&gt;:&lt;/p&gt;

&lt;div class=&quot;js geshi&quot; style=&quot;text-align: left&quot;&gt;polkit.addRule(function(action, subject) {&lt;br /&gt;
&amp;#160; &amp;#160; if (action.id.startsWith(&amp;quot;org.freedesktop.color-manager.&amp;quot;) &amp;amp;&amp;amp; (subject.isInGroup(&amp;quot;users&amp;quot;) || (subject.user == &amp;quot;root&amp;quot;))) {&lt;br /&gt;
&amp;#160; &amp;#160; &amp;#160; &amp;#160; return polkit.Result.YES;&lt;br /&gt;
&amp;#160; &amp;#160; }&lt;br /&gt;
});&lt;/div&gt;

&lt;p&gt;and run &lt;code&gt;systemctl restart polkit&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;You should be good until polkit is rewritten in Rust.&lt;/p&gt;
 
    </content:encoded>

    <pubDate>Sat, 17 May 2025 10:00:00 +0000</pubDate>
    <guid isPermaLink="false">https://daniel-lange.com/archives/193-guid.html</guid>
    <category>archlinux</category>
<category>fail</category>
<category>fedora</category>
<category>javascript</category>
<category>opensuse</category>
<category>polkit</category>
<category>remove</category>
<category>security</category>
<category>updated</category>

</item>
<item>
    <title>Cleaning a broken GnuPG (gpg) key</title>
    <link>https://daniel-lange.com/archives/159-Cleaning-a-broken-GnuPG-gpg-key.html</link>
            <category>IT</category>
    
    <comments>https://daniel-lange.com/archives/159-Cleaning-a-broken-GnuPG-gpg-key.html#comments</comments>
    <wfw:comment>https://daniel-lange.com/wfwcomment.php?cid=159</wfw:comment>

    <slash:comments>7</slash:comments>
    <wfw:commentRss>https://daniel-lange.com/rss.php?version=2.0&amp;type=comments&amp;cid=159</wfw:commentRss>
    

    <author>nospam@example.com (Daniel Lange)</author>
    <content:encoded>
    &lt;p&gt;I&#039;ve long said that the main tools in the Open Source security space, OpenSSL and GnuPG (gpg), &lt;a href=&quot;https://daniel-lange.com/archives/105-Security-is-hard,-open-source-security-unnecessarily-harder.html&quot;&gt;are broken&lt;/a&gt; and only a complete re-write will solve this. And that is still pending as nobody came forward with the funding. It&#039;s not a sexy topic, so it has to get really bad before it&#039;ll get better.&lt;/p&gt;

&lt;p&gt;Gpg has a UI that is &lt;a href=&quot;https://daniel-lange.com/archives/83-Encrypting-files-with-gpg-for-synchronization-across-the-Internet.html&quot;&gt;close to useless&lt;/a&gt;.
That won&#039;t substantially change with more bolted-on improvements.&lt;/p&gt;

&lt;p&gt;Now Robert J. Hansen and Daniel Kahn Gillmor had somebody add ~50k signatures (read &lt;a href=&quot;https://gist.github.com/rjhansen/67ab921ffb4084c865b3618d6955275f&quot; title=&quot;Robert J. Hansen: SKS Keyserver Network Under Attack&quot;&gt;1&lt;/a&gt;, &lt;a href=&quot;https://gist.github.com/rjhansen/f716c3ff4a7068b50f2d8896e54e4b7e&quot; title=&quot;Robert J. Hansen: SKS Keyserver Network Attack: Consequences&quot;&gt;2&lt;/a&gt;, &lt;a href=&quot;https://dkg.fifthhorseman.net/blog/openpgp-certificate-flooding.html&quot; title=&quot;Daniel Kahn Gillmor: OpenPGP Certificate Flooding&quot;&gt;3&lt;/a&gt;, &lt;a href=&quot;https://dkg.fifthhorseman.net/blog/community-impact-openpgp-cert-flooding.html&quot; title=&quot;Daniel Kahn Gillmor: Community Impact of OpenPGP Certificate Flooding&quot;&gt;4&lt;/a&gt; for the g{l}ory details) to their keys and - oops - they say that breaks gpg.&lt;/p&gt;

&lt;p&gt;But does it?&lt;/p&gt;

&lt;p&gt;I downloaded &lt;a href=&quot;https://sks-keyservers.net/pks/lookup?op=vindex&amp;amp;search=0xCC11BE7CBBED77B120F37B011DCBDC01B44427C7&quot;&gt;Robert J. Hansen&#039;s key off the SKS-Keyserver network&lt;/a&gt;.
It&#039;s a nice 45MB file when de-ascii-armored (&lt;code&gt;gpg --dearmor broken_key.asc ; mv broken_key.asc.gpg broken_key.gpg&lt;/code&gt;).&lt;/p&gt;

&lt;p&gt;Now a friendly:&lt;/p&gt;

&lt;div class=&quot;bash geshi&quot; style=&quot;text-align: left&quot;&gt;$ &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;usr&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;bin&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;time&lt;/span&gt; &lt;span style=&quot;color: #660033;&quot;&gt;-v&lt;/span&gt; gpg &lt;span style=&quot;color: #660033;&quot;&gt;--no-default-keyring&lt;/span&gt; &lt;span style=&quot;color: #660033;&quot;&gt;--keyring&lt;/span&gt; .&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;broken_key.gpg &lt;span style=&quot;color: #660033;&quot;&gt;--batch&lt;/span&gt; &lt;span style=&quot;color: #660033;&quot;&gt;--quiet&lt;/span&gt; &lt;span style=&quot;color: #660033;&quot;&gt;--edit-key&lt;/span&gt; 0x1DCBDC01B44427C7 clean save quit&lt;br /&gt;&lt;br /&gt;pub &amp;#160;rsa3072&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;0x1DCBDC01B44427C7&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160;erzeugt: &lt;span style=&quot;color: #000000;&quot;&gt;2015&lt;/span&gt;-07-&lt;span style=&quot;color: #000000;&quot;&gt;16&lt;/span&gt; &amp;#160;verfällt: niemals &amp;#160; &amp;#160; Nutzung: SC &amp;#160;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160;Vertrauen: unbekannt &amp;#160; &amp;#160; Gültigkeit: unbekannt&lt;br /&gt;sub &amp;#160;ed25519&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;0xA83CAE94D3DC3873&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160;erzeugt: &lt;span style=&quot;color: #000000;&quot;&gt;2017&lt;/span&gt;-04-05 &amp;#160;verfällt: niemals &amp;#160; &amp;#160; Nutzung: S &amp;#160; &lt;br /&gt;sub &amp;#160;cv25519&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;0xAA24CC81B8AED08B&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160;erzeugt: &lt;span style=&quot;color: #000000;&quot;&gt;2017&lt;/span&gt;-04-05 &amp;#160;verfällt: niemals &amp;#160; &amp;#160; Nutzung: E &amp;#160; &lt;br /&gt;sub &amp;#160;rsa3072&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;0xDC0F82625FA6AADE&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160;erzeugt: &lt;span style=&quot;color: #000000;&quot;&gt;2015&lt;/span&gt;-07-&lt;span style=&quot;color: #000000;&quot;&gt;16&lt;/span&gt; &amp;#160;verfällt: niemals &amp;#160; &amp;#160; Nutzung: E &amp;#160; &lt;br /&gt;&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#91;&lt;/span&gt; unbekannt &lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#41;&lt;/span&gt;. Robert J. Hansen &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;lt;&lt;/span&gt;rjh&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;@&lt;/span&gt;sixdemonbag.org&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#91;&lt;/span&gt; unbekannt &lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#41;&lt;/span&gt; &amp;#160;Robert J. Hansen &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;lt;&lt;/span&gt;rob&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;@&lt;/span&gt;enigmail.net&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#91;&lt;/span&gt; unbekannt &lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#41;&lt;/span&gt; &amp;#160;Robert J. Hansen &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;lt;&lt;/span&gt;rob&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;@&lt;/span&gt;hansen.engineering&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;User-ID &lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;Robert J. Hansen &amp;lt;rjh@sixdemonbag.org&amp;gt;&amp;quot;&lt;/span&gt;: &lt;span style=&quot;color: #000000;&quot;&gt;49705&lt;/span&gt; Signaturen entfernt&lt;br /&gt;User-ID &lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;Robert J. Hansen &amp;lt;rob@enigmail.net&amp;gt;&amp;quot;&lt;/span&gt;: &lt;span style=&quot;color: #000000;&quot;&gt;49704&lt;/span&gt; Signaturen entfernt&lt;br /&gt;User-ID &lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;Robert J. Hansen &amp;lt;rob@hansen.engineering&amp;gt;&amp;quot;&lt;/span&gt;: &lt;span style=&quot;color: #000000;&quot;&gt;49701&lt;/span&gt; Signaturen entfernt&lt;br /&gt;&lt;br /&gt;pub &amp;#160;rsa3072&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;0x1DCBDC01B44427C7&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160;erzeugt: &lt;span style=&quot;color: #000000;&quot;&gt;2015&lt;/span&gt;-07-&lt;span style=&quot;color: #000000;&quot;&gt;16&lt;/span&gt; &amp;#160;verfällt: niemals &amp;#160; &amp;#160; Nutzung: SC &amp;#160;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160;Vertrauen: unbekannt &amp;#160; &amp;#160; Gültigkeit: unbekannt&lt;br /&gt;sub &amp;#160;ed25519&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;0xA83CAE94D3DC3873&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160;erzeugt: &lt;span style=&quot;color: #000000;&quot;&gt;2017&lt;/span&gt;-04-05 &amp;#160;verfällt: niemals &amp;#160; &amp;#160; Nutzung: S &amp;#160; &lt;br /&gt;sub &amp;#160;cv25519&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;0xAA24CC81B8AED08B&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160;erzeugt: &lt;span style=&quot;color: #000000;&quot;&gt;2017&lt;/span&gt;-04-05 &amp;#160;verfällt: niemals &amp;#160; &amp;#160; Nutzung: E &amp;#160; &lt;br /&gt;sub &amp;#160;rsa3072&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;0xDC0F82625FA6AADE&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160;erzeugt: &lt;span style=&quot;color: #000000;&quot;&gt;2015&lt;/span&gt;-07-&lt;span style=&quot;color: #000000;&quot;&gt;16&lt;/span&gt; &amp;#160;verfällt: niemals &amp;#160; &amp;#160; Nutzung: E &amp;#160; &lt;br /&gt;&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#91;&lt;/span&gt; unbekannt &lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#41;&lt;/span&gt;. Robert J. Hansen &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;lt;&lt;/span&gt;rjh&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;@&lt;/span&gt;sixdemonbag.org&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#91;&lt;/span&gt; unbekannt &lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#41;&lt;/span&gt; &amp;#160;Robert J. Hansen &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;lt;&lt;/span&gt;rob&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;@&lt;/span&gt;enigmail.net&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#91;&lt;/span&gt; unbekannt &lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#41;&lt;/span&gt; &amp;#160;Robert J. Hansen &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;lt;&lt;/span&gt;rob&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;@&lt;/span&gt;hansen.engineering&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; Command being timed: &lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;gpg --no-default-keyring --keyring ./broken_key.gpg --batch --quiet --edit-key 0x1DCBDC01B44427C7 clean save quit&amp;quot;&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; User &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;time&lt;/span&gt; &lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#40;&lt;/span&gt;seconds&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#41;&lt;/span&gt;: &lt;span style=&quot;color: #000000;&quot;&gt;3911.14&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; System &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;time&lt;/span&gt; &lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#40;&lt;/span&gt;seconds&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#41;&lt;/span&gt;: &lt;span style=&quot;color: #000000;&quot;&gt;2442.87&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; Percent of CPU this job got: &lt;span style=&quot;color: #000000;&quot;&gt;99&lt;/span&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;%&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; Elapsed &lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #c20cb9; font-weight: bold;&quot;&gt;wall&lt;/span&gt; clock&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;time&lt;/span&gt; &lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#40;&lt;/span&gt;h:mm:ss or m:ss&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#41;&lt;/span&gt;: &lt;span style=&quot;color: #000000;&quot;&gt;1&lt;/span&gt;:&lt;span style=&quot;color: #000000;&quot;&gt;45&lt;/span&gt;:&lt;span style=&quot;color: #000000;&quot;&gt;56&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; Average shared text &lt;span style=&quot;color: #c20cb9; font-weight: bold;&quot;&gt;size&lt;/span&gt; &lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#40;&lt;/span&gt;kbytes&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#41;&lt;/span&gt;: &lt;span style=&quot;color: #000000;&quot;&gt;0&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; Average unshared data &lt;span style=&quot;color: #c20cb9; font-weight: bold;&quot;&gt;size&lt;/span&gt; &lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#40;&lt;/span&gt;kbytes&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#41;&lt;/span&gt;: &lt;span style=&quot;color: #000000;&quot;&gt;0&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; Average stack &lt;span style=&quot;color: #c20cb9; font-weight: bold;&quot;&gt;size&lt;/span&gt; &lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#40;&lt;/span&gt;kbytes&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#41;&lt;/span&gt;: &lt;span style=&quot;color: #000000;&quot;&gt;0&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; Average total &lt;span style=&quot;color: #c20cb9; font-weight: bold;&quot;&gt;size&lt;/span&gt; &lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#40;&lt;/span&gt;kbytes&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#41;&lt;/span&gt;: &lt;span style=&quot;color: #000000;&quot;&gt;0&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; Maximum resident &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;set&lt;/span&gt; &lt;span style=&quot;color: #c20cb9; font-weight: bold;&quot;&gt;size&lt;/span&gt; &lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#40;&lt;/span&gt;kbytes&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#41;&lt;/span&gt;: &lt;span style=&quot;color: #000000;&quot;&gt;107660&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; Average resident &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;set&lt;/span&gt; &lt;span style=&quot;color: #c20cb9; font-weight: bold;&quot;&gt;size&lt;/span&gt; &lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#40;&lt;/span&gt;kbytes&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#41;&lt;/span&gt;: &lt;span style=&quot;color: #000000;&quot;&gt;0&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; Major &lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#40;&lt;/span&gt;requiring I&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;/&lt;/span&gt;O&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#41;&lt;/span&gt; page faults: &lt;span style=&quot;color: #000000;&quot;&gt;1&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; Minor &lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#40;&lt;/span&gt;reclaiming a frame&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#41;&lt;/span&gt; page faults: &lt;span style=&quot;color: #000000;&quot;&gt;26630&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; Voluntary context switches: &lt;span style=&quot;color: #000000;&quot;&gt;43&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; Involuntary context switches: &lt;span style=&quot;color: #000000;&quot;&gt;59439&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; Swaps: &lt;span style=&quot;color: #000000;&quot;&gt;0&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; File system inputs: &lt;span style=&quot;color: #000000;&quot;&gt;112&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; File system outputs: &lt;span style=&quot;color: #000000;&quot;&gt;48&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; Socket messages sent: &lt;span style=&quot;color: #000000;&quot;&gt;0&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; Socket messages received: &lt;span style=&quot;color: #000000;&quot;&gt;0&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; Signals delivered: &lt;span style=&quot;color: #000000;&quot;&gt;0&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; Page &lt;span style=&quot;color: #c20cb9; font-weight: bold;&quot;&gt;size&lt;/span&gt; &lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#40;&lt;/span&gt;bytes&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#41;&lt;/span&gt;: &lt;span style=&quot;color: #000000;&quot;&gt;4096&lt;/span&gt;&lt;br /&gt;&amp;#160; &amp;#160; &amp;#160; &amp;#160; Exit status: &lt;span style=&quot;color: #000000;&quot;&gt;0&lt;/span&gt;&lt;br /&gt;&amp;#160;&lt;/div&gt;

&lt;p&gt;And the result is a nicely useable 3835 byte file of the clean public key.
If you supply a keyring instead of &lt;code&gt;--no-default-keyring&lt;/code&gt; it will also keep the non-self signatures that are useful for you (as you apparently know the signing party).&lt;/p&gt;

&lt;p&gt;So it does not break gpg. It does break things that call gpg at runtime and not asynchronously. I heard Enigmail is affected, quelle surprise.&lt;/p&gt;

&lt;p&gt;Now the main problem here is the runtime. 1h45min is just ridiculous. As &lt;a href=&quot;https://twitter.com/FiloSottile/status/1145091106138394625&quot; title=&quot;Filippo Valsorda: Twitter message&quot;&gt;Filippo Valsorda puts it:&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
Someone added a few thousand entries to a list that lets anyone append to it.

GnuPG, software supposed to defeat state actors, suddenly takes minutes to process entries.

How big is that list you ask? 17 MiB. Not GiB, 17 MiB. Like a large picture.

&lt;a href=&quot;https://dev.gnupg.org/T4592&quot; title=&quot;gpg bug tracker entry: gpg takes &gt; 30s to list the keys from a 17MiB pubring.gpg that contains a single certificate&quot;&gt;https://dev.gnupg.org/T4592&lt;/a&gt;
&lt;/blockquote&gt;

&lt;p&gt;If I were a gpg / SKS keyserver developer, I&#039;d&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;speed this up so the edit-key run above completes in less than 10 s (just getting rid of the lseek/read dance and deferring all time-based decisions should get close)&lt;/li&gt;
&lt;li&gt;(ideally) make the drop-sig import-filter syntax useful (date-ranges, non-reciprocal signatures, ...)&lt;/li&gt;
&lt;li&gt;clean affected keys on the SKS keyservers (needs coordination of sysops, drop servers from unreachable people)&lt;/li&gt;
&lt;li&gt;(ideally) use the opportunity to clean all &lt;a href=&quot;https://github.com/yakamok/keyserver-fs&quot;&gt;keyserver filesystem&lt;/a&gt; and the &lt;a href=&quot;https://www.quaxio.com/message_board_over_pgp_key_servers.html&quot;&gt;message board over pgp key servers&lt;/a&gt; keys, too&lt;/li&gt;
&lt;li&gt;only accept new keys and new signatures on keys extending the strong set (rather small change to the &lt;a href=&quot;https://bitbucket.org/skskeyserver/sks-keyserver/src&quot;&gt;existing codebase&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That way another key can only be added to the keyserver network if it contains at least one signature from a previously known &lt;a href=&quot;https://pgp.cs.uu.nl/plot/&quot; title=&quot;Henk P. Penning: analysis of the strong set in the PGP web of trust&quot;&gt;strong-set&lt;/a&gt; key.
Attacking the keyserver network would become at least non-trivial. And the web-of-trust thing may make sense again.&lt;/p&gt;

&lt;h2&gt;Updates&lt;/h2&gt;

&lt;p&gt;09.07.2019&lt;/p&gt;

&lt;p&gt;GnuPG 2.2.17 has been &lt;a href=&quot;https://lists.gnupg.org/pipermail/gnupg-announce/2019q3/000439.html&quot;&gt;released&lt;/a&gt; with another set of quickly bolted together fixes:&lt;/p&gt;

&lt;pre&gt;
  * gpg: Ignore all key-signatures received from keyservers.  This
    change is required to mitigate a DoS due to keys flooded with
    faked key-signatures.  The old behaviour can be achieved by adding
    keyserver-options no-self-sigs-only,no-import-clean
    to your gpg.conf.  [#4607]
  * gpg: If an imported keyblocks is too large to be stored in the
    keybox (pubring.kbx) do not error out but fallback to an import
    using the options &quot;self-sigs-only,import-clean&quot;.  [#4591]
  * gpg: New command --locate-external-key which can be used to
    refresh keys from the Web Key Directory or via other methods
    configured with --auto-key-locate.
  * gpg: New import option &quot;self-sigs-only&quot;.
  * gpg: In --auto-key-retrieve prefer WKD over keyservers.  [#4595]
  * dirmngr: Support the &quot;openpgpkey&quot; subdomain feature from
    draft-koch-openpgp-webkey-service-07. [#4590].
  * dirmngr: Add an exception for the &quot;openpgpkey&quot; subdomain to the
    CSRF protection.  [#4603]
  * dirmngr: Fix endless loop due to http errors 503 and 504.  [#4600]
  * dirmngr: Fix TLS bug during redirection of HKP requests.  [#4566]
  * gpgconf: Fix a race condition when killing components.  [#4577]
&lt;/pre&gt;

&lt;p&gt;&lt;a href=&quot;https://dev.gnupg.org/T4607&quot; title=&quot;GNUpg bug T4607&quot;&gt;Bug T4607&lt;/a&gt; shows that these changes are all but well thought-out.
They introduce artificial limits, like 64kB for WKD-distributed keys or 5MB for local signature imports (&lt;a href=&quot;https://dev.gnupg.org/T4591&quot;&gt;Bug T4591&lt;/a&gt;) which weaken the web-of-trust further.&lt;/p&gt;

&lt;p&gt;I recommend to not run gpg 2.2.17 in production environments without extensive testing as these limits and the unverified network traffic may bite you. Do validate your upgrade with valid &lt;u&gt;and&lt;/u&gt; broken keys that have segments (packet groups) surpassing the above mentioned limits. You may be surprised what gpg does. On the upside: you can now refresh keys (sans signatures) via WKD. So if your buddies still believe in limiting their subkey validities, you can more easily update them bypassing the SKS keyserver network. NB: I have not tested that functionality. So test before deploying.&lt;/p&gt;

&lt;p&gt;10.08.2019&lt;/p&gt;

&lt;p&gt;Christopher Wellons (skeeto) has released his &lt;a href=&quot;https://github.com/skeeto/pgp-poisoner&quot;&gt;pgp-poisoner tool&lt;/a&gt;. It is a go program that can add thousands of malicious signatures to a GNUpg key per second. He comments &quot;[pgp-poisoner is] proof that such attacks are very easy to pull off. It doesn&#039;t take a nation-state actor to break the PGP ecosystem, just one person and couple evenings studying RFC 4880. This system is not robust.&quot; He also hints at the next likely attack vector, public subkeys can be bound to a primary key of choice.&lt;/p&gt;
 
    </content:encoded>

    <pubDate>Tue, 02 Jul 2019 08:25:00 +0000</pubDate>
    <guid isPermaLink="false">https://daniel-lange.com/archives/159-guid.html</guid>
    <category>crypt</category>
<category>gpg</category>
<category>security</category>
<category>updated</category>

</item>
<item>
    <title>Wiping harddisks in 2019</title>
    <link>https://daniel-lange.com/archives/157-Wiping-harddisks-in-2019.html</link>
            <category>Linux</category>
    
    <comments>https://daniel-lange.com/archives/157-Wiping-harddisks-in-2019.html#comments</comments>
    <wfw:comment>https://daniel-lange.com/wfwcomment.php?cid=157</wfw:comment>

    <slash:comments>4</slash:comments>
    <wfw:commentRss>https://daniel-lange.com/rss.php?version=2.0&amp;type=comments&amp;cid=157</wfw:commentRss>
    

    <author>nospam@example.com (Daniel Lange)</author>
    <content:encoded>
    &lt;p&gt;Wiping hard disks is part of my company&#039;s policy when returning servers. No exceptions.&lt;/p&gt;

&lt;p&gt;Good providers will wipe what they have received back from a customer, but we don&#039;t trust that as the hosting / cloud business is under constant budget-pressure and cutting corners (&lt;code&gt;wipefs&lt;/code&gt;) is a likely consequence.&lt;/p&gt;

&lt;p&gt;With modern SSDs there is &quot;security erase&quot; (&lt;code&gt;man hdparm&lt;/code&gt; or see the - as always well maintained - &lt;a href=&quot;https://wiki.archlinux.org/index.php/Solid_state_drive/Memory_cell_clearing&quot;&gt;Arch wiki&lt;/a&gt;) which is useful if the device is encrypt-by-default. These devices basically &quot;forget&quot; the encryption key but it also means trusting the devices&#039; implementation security. Which &lt;a href=&quot;https://www.tomshardware.com/news/crucial-samsung-ssd-encryption-bypassed,38025.html&quot;&gt;doesn&#039;t seem warranted&lt;/a&gt;. Still &lt;em&gt;after&lt;/em&gt; wiping and trimming, a secure erase can&#039;t be a bad idea &lt;img src=&quot;https://daniel-lange.com/plugins/serendipity_event_emoticate/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;.&lt;/p&gt;

&lt;p&gt;Still there are three things to be aware of when wiping modern hard disks:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Don&#039;t forget to add &lt;code&gt;bs=4096&lt;/code&gt; (blocksize) to &lt;code&gt;dd&lt;/code&gt; as it will still default to 512 bytes and that makes writing even zeros less than half the maximum possible speed. SSDs may benefit from larger block sizes matched to their flash page structure. These are usually 128kB, 256kB, 512kB, 1MB, 2MB and 4MB these days.&lt;sup id=&quot;fnref:1&quot;&gt;&lt;a href=&quot;#fn:1&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;All disks can usually be written to in parallel. &lt;code&gt;screen&lt;/code&gt; is your friend.&lt;/li&gt;
&lt;li&gt;The write speed varies greatly by disk region, so use 2 hours per TB and wipe pass as a conservative estimate. This is better than extrapolating what you see initially in the fastest region of a spinning disk.&lt;/li&gt;
&lt;li&gt;The disks have become huge (we run 12TB disks in production now) but the write speed is still somewhere 100 MB/s ... 300 MB/s. So wiping servers on the last day before returning is not possible anymore with disks larger than 4 TB each (and three passes). Or 12 TB and one pass (where e.g. fully encrypted content allows to just do a final zero-wipe).&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;style&gt;
table.blueTable {
  border: 1px solid #1C6EA4;
  background-color: #EEEEEE;
  text-align: center;
  border-collapse: collapse;
}
table.blueTable td, table.blueTable th {
  border: 1px solid #AAAAAA;
  padding: 3px 2px;
}
table.blueTable tbody td {
  font-size: 12px;
}
table.blueTable tr:nth-child(even) {
  background: #D0E4F5;
}
table.blueTable thead th {
  font-size: 12px;
  font-weight: bold;
  text-align: center;
}
table.blueTable thead th:first-child {
  border-left: none;
}
&lt;/style&gt;&lt;/p&gt;

&lt;table class=&quot;blueTable&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;hard disk size&lt;/th&gt;
&lt;th&gt;one pass&lt;/th&gt;
&lt;th&gt;three passes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;1 TB&lt;/td&gt;&lt;td&gt;2 h&lt;/td&gt;&lt;td&gt;6 h&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;2 TB&lt;/td&gt;&lt;td&gt;4 h&lt;/td&gt;&lt;td&gt;12 h&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;3 TB&lt;/td&gt;&lt;td&gt;6 h&lt;/td&gt;&lt;td&gt;18 h&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;4 TB&lt;/td&gt;&lt;td&gt;8 h&lt;/td&gt;&lt;td&gt;24 h (one day)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;5 TB&lt;/td&gt;&lt;td&gt;10 h&lt;/td&gt;&lt;td&gt;30 h&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;6 TB&lt;/td&gt;&lt;td&gt;12 h&lt;/td&gt;&lt;td&gt;36 h&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;8 TB&lt;/td&gt;&lt;td&gt;16 h&lt;/td&gt;&lt;td&gt;48 h (two days) &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;10 TB&lt;/td&gt;&lt;td&gt;20 h&lt;/td&gt;&lt;td&gt;60 h&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;12 TB&lt;/td&gt;&lt;td&gt;24 h&lt;/td&gt;&lt;td&gt;72 h (three days)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;14 TB&lt;/td&gt;&lt;td&gt;28 h&lt;/td&gt;&lt;td&gt;84 h&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;16 TB&lt;/td&gt;&lt;td&gt;32 h&lt;/td&gt;&lt;td&gt;96 h (four days)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;18 TB&lt;/td&gt;&lt;td&gt;36 h&lt;/td&gt;&lt;td&gt;108 h&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;20 TB&lt;/td&gt;&lt;td&gt;40 h&lt;/td&gt;&lt;td&gt;120 h (five days)&lt;/td&gt;&lt;/tr&gt;

&lt;/tbody&gt;
&lt;/tr&gt;
&lt;/table&gt;

&lt;p&gt;&lt;img class=&quot;serendipity_image_left&quot; width=&quot;811&quot; height=&quot;154&quot;  src=&quot;https://daniel-lange.com/uploads/entries/harddisk_wipe.gif&quot; title=&quot;Hard disk wipe&quot; alt=&quot;Hard disk wipe animation&quot;&gt;&lt;/p&gt;

&lt;div style=&quot;clear:both&quot;&gt;&lt;/div&gt;

&lt;div class=&quot;footnotes&quot;&gt;
&lt;hr /&gt;
&lt;ol&gt;

&lt;li id=&quot;fn:1&quot;&gt;
&lt;p&gt;As Douglas pointed out correctly in the comment below, these are &lt;strong&gt;IT&lt;/strong&gt; Kilobytes and Megabytes, so 2&lt;sup&gt;10&lt;/sup&gt; Bytes and 2&lt;sup&gt;20&lt;/sup&gt; Bytes. So &lt;a href=&quot;https://en.wikipedia.org/wiki/Kibibyte&quot; title=&quot;Saying Kibibyte makes me cringe every time. So I don&#039;t.&quot;&gt;Kibibytes&lt;/a&gt; and Mebibytes for those firmly in SI territory.&amp;#160;&lt;a href=&quot;#fnref:1&quot; rev=&quot;footnote&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;

&lt;/ol&gt;
&lt;/div&gt;
 
    </content:encoded>

    <pubDate>Tue, 12 Mar 2019 08:55:00 +0000</pubDate>
    <guid isPermaLink="false">https://daniel-lange.com/archives/157-guid.html</guid>
    <category>data</category>
<category>erase</category>
<category>harddisk</category>
<category>security</category>
<category>ssd</category>
<category>wipe</category>

</item>
<item>
    <title>Openssh taking minutes to become available, booting takes half an hour ... because your server waits for a few bytes of randomness</title>
    <link>https://daniel-lange.com/archives/152-Openssh-taking-minutes-to-become-available,-booting-takes-half-an-hour-...-because-your-server-waits-for-a-few-bytes-of-randomness.html</link>
            <category>Linux</category>
    
    <comments>https://daniel-lange.com/archives/152-Openssh-taking-minutes-to-become-available,-booting-takes-half-an-hour-...-because-your-server-waits-for-a-few-bytes-of-randomness.html#comments</comments>
    <wfw:comment>https://daniel-lange.com/wfwcomment.php?cid=152</wfw:comment>

    <slash:comments>22</slash:comments>
    <wfw:commentRss>https://daniel-lange.com/rss.php?version=2.0&amp;type=comments&amp;cid=152</wfw:commentRss>
    

    <author>nospam@example.com (Daniel Lange)</author>
    <content:encoded>
    &lt;p&gt;So, your machine now needs minutes to boot before you can ssh in where it used to be seconds before the Debian Buster update?&lt;/p&gt;

&lt;h1&gt;Problem&lt;/h1&gt;

&lt;p&gt;Linux 3.17 (2014-10-05) learnt a new syscall getrandom() that, well, gets bytes from the entropy pool.
Glibc learnt about this with 2.25 (2017-02-05) and &lt;a href=&quot;https://github.com/openssl/openssl/pull/180&quot;&gt;two tries&lt;/a&gt; and four years after the kernel, OpenSSL used that functionality from release 1.1.1 (2018-09-11).
OpenSSH implemented this natively for the 7.8 release (2018-08-24) as well.&lt;/p&gt;

&lt;p&gt;Now the getrandom() syscall will block&lt;sup id=&quot;fnref:1&quot;&gt;&lt;a href=&quot;#fn:1&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; if the kernel can&#039;t provide enough entropy. And that&#039;s frequenty the case during boot. Esp. with VMs that have no input devices or IO jitter to source the pseudo random number generator from.&lt;/p&gt;

&lt;h2&gt;First seen in the wild January 2017&lt;/h2&gt;

&lt;p&gt;I vividly remember not seeing my Alpine Linux VMs back on the net after the Alpine 3.5 upgrade. That was basically the same &lt;a href=&quot;https://bugs.alpinelinux.org/issues/6635&quot; title=&quot;Alpine Linux bug tracker #6636&quot;&gt;issue&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;&lt;a name=&quot;systemd&quot;&gt;&lt;/a&gt;Systemd. Yeah.&lt;/h2&gt;

&lt;p&gt;Systemd makes this behaviour worse, see issues &lt;a href=&quot;https://github.com/systemd/systemd/issues/4271&quot;&gt;#4271&lt;/a&gt;, &lt;a href=&quot;https://github.com/systemd/systemd/pull/4513&quot;&gt;#4513&lt;/a&gt; and &lt;a href=&quot;https://github.com/systemd/systemd/pull/10621&quot;&gt;#10621&lt;/a&gt;.&lt;br /&gt;
Basically as of now the entropy file saved as &lt;code&gt;/var/lib/systemd/random-seed&lt;/code&gt; will not - drumroll - add entropy to the random pool when played back during boot. Actually it will. It will just not be accounted for. So Linux doesn&#039;t know. And continues blocking getrandom(). This is obviously different from SysVinit times&lt;sup id=&quot;fnref:2&quot;&gt;&lt;a href=&quot;#fn:2&quot; rel=&quot;footnote&quot;&gt;2&lt;/a&gt;&lt;/sup&gt; when &lt;code&gt;/var/lib/urandom/random-seed&lt;/code&gt; (that you still have lying around on updated systems) made sure the system carried enough entropy over reboot to continue working right after enough of the system was booted.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/systemd/systemd/issues/4167&quot;&gt;#4167&lt;/a&gt; is a re-opened discussion about systemd eating randomness early at boot (hashmaps in PID 0...). Some Debian folks participate in the recent discussion and it is worth reading if you want to learn about the mess that booting a Linux system has become.&lt;/p&gt;

&lt;p&gt;While we&#039;re talking systemd ... &lt;a href=&quot;https://github.com/systemd/systemd/pull/10676&quot;&gt;#10676&lt;/a&gt; also means systems will use RDRAND in the future despite &lt;a href=&quot;https://plus.google.com/+TheodoreTso/posts/SDcoemc9V3J&quot;&gt;Ted Ts&#039;o&#039;s warning on RDRAND&lt;/a&gt; [&lt;a href=&quot;https://web.archive.org/web/20180320163305/https://plus.google.com/+TheodoreTso/posts/SDcoemc9V3J&quot;&gt;Archive.org mirror&lt;/a&gt; and mirrored locally as &lt;a href=&quot;https://daniel-lange.com/documents/130905_Ted_Tso_on_RDRAND.pdf&quot;&gt;130905_Ted_Tso_on_RDRAND.pdf, 205kB&lt;/a&gt; as &lt;a href=&quot;https://killedbygoogle.com/&quot;&gt;Google+ will be discontinued&lt;/a&gt; in April 2019].&lt;br /&gt;
Update: RDRAND doesn&#039;t return random data on pre-Ryzen AMD CPUs (AMD CPU family &amp;lt;23) as per &lt;a href=&quot;https://github.com/systemd/systemd/issues/11810#issuecomment-489727505&quot;&gt;systemd bug #11810&lt;/a&gt;. It will always be 0xFFFFFFFFFFFFFFFF (2&lt;sup&gt;64&lt;/sup&gt;-1). This is a known issue since 2014, see &lt;a href=&quot;https://bugzilla.kernel.org/show_bug.cgi?id=85911&quot;&gt;kernel bug #85991&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;Debian&lt;/h2&gt;

&lt;p&gt;Debian is seeing the same issue working up towards the Buster release, e.g. &lt;a href=&quot;https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=912087&quot;&gt;Bug #912087&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The typical issue is:&lt;/p&gt;

&lt;div class=&quot;bash geshi&quot; style=&quot;text-align: left&quot;&gt;&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#91;&lt;/span&gt; &amp;#160; &amp;#160;&lt;span style=&quot;color: #000000;&quot;&gt;4.428797&lt;/span&gt;&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#93;&lt;/span&gt; EXT4-fs &lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#40;&lt;/span&gt;vda1&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#41;&lt;/span&gt;: mounted filesystem with ordered data mode. Opts: &lt;span style=&quot;color: #007800;&quot;&gt;data&lt;/span&gt;=ordered&lt;br /&gt;&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#91;&lt;/span&gt; &lt;span style=&quot;color: #000000;&quot;&gt;130.970863&lt;/span&gt;&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#93;&lt;/span&gt; random: crng init &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;done&lt;/span&gt;&lt;/div&gt;

&lt;p&gt;with delays up to tens of minutes on systems with very little external random sources.&lt;/p&gt;

&lt;p&gt;This is what it should look like:&lt;/p&gt;

&lt;div class=&quot;bash geshi&quot; style=&quot;text-align: left&quot;&gt;&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#91;&lt;/span&gt; &amp;#160; &amp;#160;&lt;span style=&quot;color: #000000;&quot;&gt;1.616819&lt;/span&gt;&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#93;&lt;/span&gt; random: fast init &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;done&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#91;&lt;/span&gt; &amp;#160; &amp;#160;&lt;span style=&quot;color: #000000;&quot;&gt;2.299314&lt;/span&gt;&lt;span style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;&amp;#93;&lt;/span&gt; random: crng init &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;done&lt;/span&gt;&lt;/div&gt;

&lt;p&gt;Check &lt;code&gt;dmesg | grep -E &quot;(rng|random)&quot;&lt;/code&gt; to see how your systems are doing.&lt;/p&gt;

&lt;p&gt;If this is not fully solved before the Buster release, I hope some of the below can end up in the &lt;a href=&quot;https://salsa.debian.org/ddp-team/release-notes&quot;&gt;release notes&lt;/a&gt;&lt;sup id=&quot;fnref:3&quot;&gt;&lt;a href=&quot;#fn:3&quot; rel=&quot;footnote&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;

&lt;h1&gt;Solutions&lt;/h1&gt;

&lt;p&gt;You need to get entropy into the random pool earlier at boot. There are many ways to achieve this and - currently - all require action by the system administrator.&lt;/p&gt;

&lt;h2&gt;Kernel boot parameter&lt;/h2&gt;

&lt;p&gt;From kernel 4.19 (Debian Buster currently runs 4.18 [Update: but will be getting 4.19 before release according to &lt;a href=&quot;https://twitter.com/mikagrml/status/1080602882737610754&quot; title=&quot;Of course this is formal Debian planning. It&#039;s on Twitter!&quot;&gt;Ben via Mika&lt;/a&gt;]) you can set &lt;code&gt;RANDOM_TRUST_CPU&lt;/code&gt; at compile time or &lt;code&gt;random.trust_cpu=on&lt;/code&gt; on the kernel command line. This will make recent Intel / AMD systems trust RDRAND and fill the entropy pool with it. See the warning from Ted Ts&#039;o linked above.&lt;/p&gt;

&lt;p&gt;Update: Since Linux kernel build 4.19.20-1 &lt;code&gt;CONFIG_RANDOM_TRUST_CPU&lt;/code&gt; has been &lt;a href=&quot;https://lists.debian.org/debian-devel/2019/02/msg00170.html&quot;&gt;enabled by default&lt;/a&gt; in Debian.&lt;/p&gt;

&lt;h2&gt;Using a TPM&lt;/h2&gt;

&lt;p&gt;The Trusted Platform Module has an embedded random number generator that can be used. Of course you need to have one on your board for this to be useful. It&#039;s a hardware device.&lt;/p&gt;

&lt;p&gt;Load the &lt;code&gt;tpm-rng&lt;/code&gt; module (ideally from initrd) or compile it into the kernel (&lt;code&gt;config HW_RANDOM_TPM&lt;/code&gt;).
Now, the kernel does not &quot;trust&quot; the TPM RNG by default, so you need to add&lt;/p&gt;

&lt;p&gt;&lt;code&gt;rng_core.default_quality=1000&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;to the kernel command line.
1000 means &quot;trust&quot;, 0 means &quot;don&#039;t use&quot;. So you can chose any value in between that works for you depending on how much you consider your TPM to be unbugged.&lt;/p&gt;

&lt;h2&gt;VirtIO (KVM, QEMU, ...)&lt;/h2&gt;

&lt;p&gt;For Virtual Machines (VMs) you can forward entropy from the host (that should be running longer than the VMs and have enough entropy) via &lt;code&gt;virtio_rng&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;So on the host, you do:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;kvm ... -object rng-random,filename=/dev/urandom,id=rng0 -device virtio-rng-pci,rng=rng0,bus=pci.0,addr=0x7&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;and within the VM newer kernels should automatically load &lt;code&gt;virtio_rng&lt;/code&gt; and use that.&lt;/p&gt;

&lt;p&gt;You can confirm with dmesg as per above.&lt;/p&gt;

&lt;p&gt;Or check:&lt;/p&gt;

&lt;div class=&quot;bash geshi&quot; style=&quot;text-align: left&quot;&gt;&lt;span style=&quot;color: #666666; font-style: italic;&quot;&gt;# cat /sys/devices/virtual/misc/hw_random/rng_available&lt;/span&gt;&lt;br /&gt;virtio_rng.0&lt;br /&gt;&lt;span style=&quot;color: #666666; font-style: italic;&quot;&gt;# cat /sys/devices/virtual/misc/hw_random/rng_current&lt;/span&gt;&lt;br /&gt;virtio_rng.0&lt;/div&gt;

&lt;h2&gt;Patching systemd&lt;/h2&gt;

&lt;p&gt;The Fedora bugtracker has a &lt;a href=&quot;https://bugzilla.redhat.com/show_bug.cgi?id=1572944#c46&quot;&gt;bash / python script&lt;/a&gt; that replaces the systemd &lt;code&gt;rnd&lt;/code&gt; seeding with a (better) working one. The script can also serve as a good starting point if you need to script your own solution, e.g. for reading from an entropy provider available within your (secure) network.&lt;/p&gt;

&lt;h2&gt;Chaoskey&lt;/h2&gt;

&lt;p&gt;The wonderful Keith Packard and Bdale Garbee have developed a USB dongle, &lt;a href=&quot;https://altusmetrum.org/ChaosKey/&quot;&gt;ChaosKey&lt;/a&gt;, that supplies entropy to the kernel. Hard- and software are open source.&lt;/p&gt;

&lt;p&gt;&lt;a name=&quot;jitterentropy_rng&quot;&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;Jitterentropy_RNG&lt;/h2&gt;

&lt;p&gt;Kernel 4.2 introduced &lt;a href=&quot;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=bb5530e4082446aac3a3d69780cd4dbfa4520013&quot;&gt;&lt;code&gt;jitterentropy_rng&lt;/code&gt;&lt;/a&gt; which will use the jitter in CPU timings to generate randomness.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;modprobe jitterentropy_rng&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This &lt;a href=&quot;https://pthree.org/2016/05/24/cpu-jitter-entropy-for-the-linux-kernel/&quot;&gt;apparently needs a userspace daemon&lt;/a&gt; though (read: design mistake) so&lt;/p&gt;

&lt;p&gt;&lt;code&gt;apt install jitterentropy-rngd&lt;/code&gt; (available from &lt;a href=&quot;https://packages.debian.org/search?keywords=jitterentropy-rngd&quot;&gt;Buster/testing&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;The current version 1.0.8-3 installs nicely on Stretch. &lt;code&gt;dpkg -i&lt;/code&gt; is your friend.&lt;/p&gt;

&lt;p&gt;But - drumroll - that daemon doesn&#039;t seem to use the kernel module at all.&lt;/p&gt;

&lt;p&gt;That&#039;s where I stopped looking at that solution. At least for now. There are extensive &lt;a href=&quot;http://www.chronox.de/jent/doc/CPU-Jitter-NPTRNG.html&quot;&gt;docs&lt;/a&gt; if you want to dig into this yourself.&lt;/p&gt;

&lt;p&gt;Update: The Linux kernel 5.3 will have an updated jitterentropy_rng as per &lt;a href=&quot;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4d2fa8b44b891f0da5ceda3e5a1402ccf0ab6f26&quot;&gt;Commit 4d2fa8b44&lt;/a&gt;. This is based on the &lt;a href=&quot;https://www.chronox.de/jent.html&quot;&gt;upstream&lt;/a&gt; version &lt;a href=&quot;https://github.com/smuellerDD/jitterentropy-library/releases/tag/v2.1.2&quot;&gt;2.1.2&lt;/a&gt; and should be worth another look.&lt;/p&gt;

&lt;h2&gt;Haveged&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;apt install haveged&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Haveged is a user-space daemon that gathers entropy though the timing jitter any CPU has. It will only run &quot;late&quot; in boot but may still get your openssh back online within seconds and not minutes.&lt;/p&gt;

&lt;p&gt;It is also - to the best of my knowledge - not verified at all regarding the quality of randomness it generates.
The haveged &lt;a href=&quot;http://issihosts.com/haveged/history.html#havege&quot;&gt;design and history page&lt;/a&gt; provides and interesting read and I wouldn&#039;t recommend haveged if you have alternatives. If you have none, haveged is a wonderful solution though as it works reliably. And unverified entropy is better than no entropy. Just forget this is &lt;del&gt;2018&lt;/del&gt; 2019 &lt;img src=&quot;https://daniel-lange.com/plugins/serendipity_event_emoticate/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;.&lt;/p&gt;

&lt;h2&gt;early-rng-init-tools&lt;/h2&gt;

&lt;p&gt;Thorsten Glaser has posted newly developed &lt;a href=&quot;https://evolvis.org/plugins/scmgit/cgi-bin/gitweb.cgi?p=alioth/early-rng-init-tools.git;a=tree&quot;&gt;early-rng-init-tools&lt;/a&gt; in a &lt;a href=&quot;https://lists.debian.org/debian-devel/2019/02/msg00327.html&quot;&gt;debian-devel thread&lt;/a&gt;. He provides packages at &lt;a href=&quot;http://fish.mirbsd.org/~tg/Debs/dists/sid/wtf/Pkgs/early-rng-init-tools/&quot;&gt;http://fish.mirbsd.org/~tg/Debs/dists/sid/wtf/Pkgs/early-rng-init-tools/&lt;/a&gt; .&lt;/p&gt;

&lt;p&gt;First he deserves kudos for naming a tool for what it does. This makes it much more easily discoverable than the trend to name things after girlfriends, pets or anime characters. The implementation hooks into the early boot via initrd integration and carries over a seed generated during the previous shutdown. This and some other implementation details are not ideal and there has been quite extensive &lt;a href=&quot;https://lists.debian.org/debian-devel/2019/02/threads.html#00327&quot;&gt;scrutiny&lt;/a&gt; but none that discovered serious issues. Early-rng-init-tools look like a good option for non-RDRAND (~CONFIG_RANDOM_TRUST_CPU) capable platforms.&lt;/p&gt;

&lt;p&gt;&lt;a name=&quot;linustotherescue&quot;&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;Linus to the rescue&lt;/h2&gt;

&lt;p&gt;Luckily end of September Linus Torvalds was fed up with the entropy starvation issue and the non-conclusive discussions about (mostly) who&#039;s at fault and ... &lt;a href=&quot;https://lore.kernel.org/lkml/CAHk-=wi0vxLmwEBn2Xgu7hZ0U8z2kN4sgCax+57ZJMVo3huDaQ@mail.gmail.com/&quot;&gt;started coding&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;With the kernel 5.4 release on 25.11.2019 his &lt;a href=&quot;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=50ee7529ec4500c88f8664560770a7a1b65db72b&quot;&gt;patch&lt;/a&gt; has made it into mainline. He created a &lt;code&gt;try_to_generate_entropy&lt;/code&gt; function that uses CPU jitter to generate seed entropy for the PRNG early in boot.&lt;/p&gt;

&lt;p&gt;In the &lt;a href=&quot;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=3f2dc2798b81531fd93a3b9b7c39da47ec689e55&quot;&gt;merge commit&lt;/a&gt; Linus explains:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;This is admittedly partly &quot;for discussion&quot;.  We need to have a way
forward for the boot time deadlocks where user space ends up waiting for
more entropy, but no entropy is forthcoming because the system is
entirely idle just waiting for something to happen.&lt;/p&gt;

&lt;p&gt;While this was triggered by what is arguably a user space bug with
GDM/gnome-session asking for secure randomness during early boot, when
they didn&#039;t even need any such truly secure thing, the issue ends up
being that our &quot;getrandom()&quot; interface is prone to that kind of
confusion, because people don&#039;t think very hard about whether they want
to block for sufficient amounts of entropy.&lt;/p&gt;

&lt;p&gt;The approach here-in is to decide to not just passively wait for entropy
to happen, but to start actively collecting it if it is missing.  This
is not necessarily always possible, but if the architecture has a CPU
cycle counter, there is a fair amount of noise in the exact timings of
reasonably complex loads.&lt;/p&gt;

&lt;p&gt;We may end up tweaking the load and the entropy estimates, but this
should be at least a reasonable starting point.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So once this kernel is available in your distribution, you should be safe from entropy starvation at boot on any platform that has hardware timers (I haven&#039;t encountered one that does not in the last decade).&lt;/p&gt;

&lt;p&gt;Ted Ts&#039;o &lt;a href=&quot;https://lore.kernel.org/lkml/20190930033706.GD4994@mit.edu/&quot;&gt;reviewed the approach and was fine&lt;/a&gt; and Ahmed Dawish did some &lt;a href=&quot;https://lore.kernel.org/lkml/20191001161448.GA1918@darwi-home-pc/&quot;&gt;testing of the quality of randomness generated and that seems fine&lt;/a&gt;, too.&lt;/p&gt;

&lt;h1&gt;Updates&lt;/h1&gt;

&lt;h3&gt;14.01.2019&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://sfritsch.de/&quot;&gt;Stefan Fritsch&lt;/a&gt;, the Apache2 maintainer in Debian, OpenBSD developer and a former Debian security team member stumbled over the systemd issue preventing Apache libssl to initialize at boot in a Debian bug &lt;a href=&quot;https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=916690&quot;&gt;#916690 - apache2: getrandom call blocks on first startup, systemd kills with timeout&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The bug has been retitled &quot;document getrandom changes causing entropy starvation&quot; hinting at not fixing the underlying issue but documenting it in the Debian Buster release notes.&lt;/p&gt;

&lt;p&gt;Unhappy with this &quot;minimal compromise&quot; Stefan wrote a &lt;a href=&quot;https://lists.debian.org/debian-devel/2018/12/msg00184.html&quot;&gt;comprehensive summary of the current situation&lt;/a&gt; to the Debian-devel mailing list. The discussion spans over &lt;a href=&quot;https://lists.debian.org/debian-devel/2018/12/&quot;&gt;December 2018&lt;/a&gt; and &lt;a href=&quot;https://lists.debian.org/debian-devel/2019/01/&quot;&gt;January 2019&lt;/a&gt; and mostly iterated what had been written above already. The discussion has - so far - not reached any consensus. There is still the &quot;systemd stance&quot; (&lt;a href=&quot;https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=914297#59&quot;&gt;not our problem, fix the daemons&lt;/a&gt;) and the &quot;ssh/apache stance&quot; (&lt;a href=&quot;https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=914297#66&quot;&gt;fix systemd, credit entropy&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;The &quot;document in release notes&quot; minimal compromise was brought up again and Stefan &lt;a href=&quot;https://lists.debian.org/debian-devel/2019/01/msg00129.html&quot;&gt;warned of the problems this would create for Buster users&lt;/a&gt;:&lt;/p&gt;

&lt;pre&gt;
&gt; I&#039;d prefer having this documented in the release notes:
&gt; https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=916690
&gt; with possible solutions like installing haveged, configuring virtio-rng,
&gt; etc. depending on the situation.

That would be an extremely user-unfriendly &quot;solution&quot; and would lead to 
countless hours of debugging and useless bug reports.
&lt;/pre&gt;

&lt;p&gt;This is exactly why I wrote this blog entry and keep it updated. We need to either fix this or tell everybody we can reach before upgrading to Buster. Otherwise this will lead to huge amounts of systems dead on the network after what looked like a successful upgrade.&lt;/p&gt;

&lt;p&gt;Some interesting tidbits were mentioned within the thread:&lt;/p&gt;

&lt;p&gt;Raphael Hertzog fixed the issue for Kali Linux by &lt;a href=&quot;https://lists.debian.org/debian-devel/2019/01/msg00120.html&quot;&gt;installing haveged by default&lt;/a&gt;. Michael Prokop did &lt;a href=&quot;https://lists.debian.org/debian-devel/2019/01/msg00122.html&quot;&gt;the same for the grml distribution&lt;/a&gt; within its December 2018 release.&lt;/p&gt;

&lt;p&gt;Ben Hutchings pointed to an &lt;a href=&quot;https://lists.debian.org/debian-release/2018/05/threads.html#00130&quot;&gt;interesting thread&lt;/a&gt; on the debian-release mailing list he kicked off in May 2018. Multiple people summarized the options and the fact that there is no &lt;a href=&quot;https://lists.debian.org/debian-release/2018/05/msg00374.html&quot;&gt;&quot;general solution that is both correct and easy&quot;&lt;/a&gt; at the time.&lt;/p&gt;

&lt;p&gt;Sam Hartman identified Debian Buster VMs running under VMware as an issue, because that supervisor does not provide virtio-rng. So &lt;a href=&quot;https://lists.debian.org/debian-devel/2019/01/msg00167.html&quot;&gt;Debian VMs wouldn&#039;t boot into ssh availability&lt;/a&gt; within a reasonable time. This is an issue for real world use cases albeit running a proprietary product as the supervisor.&lt;/p&gt;

&lt;h3&gt;16.01.2019&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://dkg.fifthhorseman.net/blog/&quot;&gt;Daniel Kahn Gillmor&lt;/a&gt; wrote in to explain a risk for VMs starting right after the boot of the host OS:&lt;/p&gt;

&lt;p&gt;&lt;tt&gt;
If that pool is used by the guest to generate long-term secrets because it appears to be well-initialized, that could be a serious problem.&lt;br /&gt;
(e.g. &quot;Mining your P&#039;s and Q&#039;s&quot; by Heninger et al -- &lt;a href=&quot;https://factorable.net/weakkeys12.extended.pdf&quot;&gt;https://factorable.net/weakkeys12.extended.pdf&lt;/a&gt;)&lt;br /&gt;
I&#039;ve just opened &lt;a href=&quot;https://bugs.launchpad.net/qemu/+bug/1811758&quot;&gt;https://bugs.launchpad.net/qemu/+bug/1811758&lt;/a&gt; to report a way to improve that situation in qemu by default.
&lt;/tt&gt;&lt;/p&gt;

&lt;p&gt;So ... make sure that your host OS has access to a hardware random number generator or at least carries over its random seed properly across reboots. You could also delay VM starts until the crng on the host Linux is fully initialized (&lt;code&gt;random: crng init done&lt;/code&gt;).&lt;br /&gt;
Otherwise your VMs may get insufficiently generated pseudo-random numbers and won&#039;t even know.&lt;/p&gt;

&lt;h3&gt;12.03.2019&lt;/h3&gt;

&lt;p&gt;Stefan Fritsch revived the &lt;a href=&quot;https://lists.debian.org/debian-devel/2019/01/msg00079.html&quot;&gt;thread on debian-devel&lt;/a&gt; again and got a few more interesting tidbits out of the developer community:&lt;/p&gt;

&lt;p&gt;Ben Hutchings has &lt;a href=&quot;https://lists.debian.org/debian-devel/2019/02/msg00170.html&quot;&gt;enabled CONFIG_RANDOM_TRUST_CPU for Debian kernels from 4.19.20-1&lt;/a&gt; so the problem is somewhat contained for recent CPU AMD64 systems (RDRAND capable) in Buster.&lt;/p&gt;

&lt;p&gt;Thorsten Glaser developed &lt;a href=&quot;https://lists.debian.org/debian-devel/2019/02/msg00327.html&quot;&gt;early-rng-init-tools&lt;/a&gt; which combine a few options to try and get entropy carried across boot and generated early during boot. He received some &lt;a href=&quot;https://lists.debian.org/debian-devel/2019/02/threads.html#00327&quot;&gt;scrutiny&lt;/a&gt; as can be expected but none that would discourage me from using it. He explains that this is for early boot and thus has initrd integration. It &lt;a href=&quot;https://lists.debian.org/debian-devel/2019/02/msg00383.html&quot;&gt;complements safer randomness sources or haveged&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;16.04.2019&lt;/h3&gt;

&lt;p&gt;The Debian installer for Buster is running into the same problem now as indicated in the &lt;a href=&quot;https://lists.debian.org/debian-devel-announce/2019/04/msg00004.html&quot;&gt;release notes for RC1&lt;/a&gt;.
&lt;a href=&quot;https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=923675&quot;&gt;Bug #923675&lt;/a&gt; has details. Essentially &lt;code&gt;choose-mirror&lt;/code&gt; waits serveral minutes for entropy when used with https mirrors.&lt;/p&gt;

&lt;h3&gt;08.05.2019&lt;/h3&gt;

&lt;p&gt;The RDRAND use introduced in systemd to bypass the kernel random number generator during boot falls for a AMD pre-Ryzen bug as RDRAND on these systems doesn&#039;t return random data after a suspend / resume cycle. Added an update note to the &lt;a href=&quot;#systemd&quot;&gt;systemd section&lt;/a&gt; above.&lt;/p&gt;

&lt;h3&gt;03.06.2019&lt;/h3&gt;

&lt;p&gt;Bastian Blank reports the issue is &lt;a href=&quot;https://lists.debian.org/debian-devel/2019/06/msg00027.html&quot;&gt;affecting Debian cloud images&lt;/a&gt; now as well as cloud-init generates ssh keys during boot.&lt;/p&gt;

&lt;h3&gt;10.07.2019&lt;/h3&gt;

&lt;p&gt;Added the update of jitterentropy_rng to a version based on upstream v2.1.2 into the &lt;a href=&quot;#jitterentropy_rng&quot;&gt;Jitterentropy section above&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;16.09.2019&lt;/h3&gt;

&lt;p&gt;The Linux Kernel Mailing List (LKML) is re-iterating the entropy starvation issue and the un-willingness of systemd to fix its usage of randomness in early boot. Ahmed S. Darwish has &lt;a href=&quot;https://lore.kernel.org/linux-ext4/20190910042107.GA1517@darwi-home-pc/&quot;&gt;reported the issue leading to ext4 reproducibly blocking boot with Kernel 5.3-r8&lt;/a&gt;. There are a few patches floated and the whole discussion it worth reading albeit non-conclusive as of now.&lt;/p&gt;

&lt;blockquote&gt;Ted Ts&#039;o says &quot;I really very strongly believe that the idea of making getrandom(2) non-blocking and to blindly assume that we can load up the buffer with &#039;best efforts&#039; randomness to be a terrible, terrible idea that is going to cause major security problems that we will potentially regret very badly. Linus Torvalds believes I am an incompetent systems designer.&quot; in &lt;a href=&quot;https://lore.kernel.org/linux-ext4/20190915052242.GG19710@mit.edu/&quot;&gt;this email&lt;/a&gt;.&lt;/blockquote&gt;

&lt;p&gt;In case you needed a teaser to really start reading the thread! Linus Torvalds also mentions the issue (and a primer on what &quot;never break userspace&quot; means) in the &lt;a href=&quot;https://lkml.org/lkml/2019/9/15/241&quot;&gt;Linux kernel 5.3 release notes&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;18.09.2019&lt;/h3&gt;

&lt;p&gt;... and &lt;a href=&quot;https://lkml.org/lkml/2019/9/17/885&quot;&gt;Martin Steigerwald kindly noticed that I update this blog post&lt;/a&gt; with the relevant discussions I come across as this entropy starvation mess continues to haunt us.&lt;/p&gt;

&lt;h3&gt;25.11.2019&lt;/h3&gt;

&lt;p&gt;Added the &lt;a href=&quot;#linustotherescue&quot;&gt;&quot;Linus to the rescue&quot;&lt;/a&gt; section after the Linux kernel 5.4 has been released.&lt;/p&gt;

&lt;h3&gt;02.04.2020&lt;/h3&gt;

&lt;p&gt;I ran into the same issue on a Gentoo system today. Luckily &lt;a href=&quot;https://en.wikipedia.org/wiki/OpenRC&quot;&gt;OpenRC&lt;/a&gt; handeled this gracefully but it delayed booting:
&lt;code&gt;syslog-ng&lt;/code&gt; actually hangs the boot for some time ... waiting for entropy. Argh.
The &lt;a href=&quot;https://forums.gentoo.org/viewtopic-t-1053732-start-0.html&quot;&gt;Gentoo forums thread&lt;/a&gt; on the topic clearly listed the options:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Make syslog-ng depend on haveged by adding &lt;code&gt;rc_syslog_ng_need=&quot;haveged&quot;&lt;/code&gt; to &lt;code&gt;/etc/rc.conf&lt;/code&gt; (and obviously having haveged installed)&lt;/li&gt;
&lt;li&gt;Re-compiling the kernel with &lt;code&gt;CONFIG_RANDOM_TRUST_CPU=y&lt;/code&gt; where that is an option&lt;/li&gt;
&lt;/ol&gt;

&lt;div class=&quot;footnotes&quot;&gt;
&lt;hr /&gt;
&lt;ol&gt;

&lt;li id=&quot;fn:1&quot;&gt;
&lt;p&gt;it will return with EAGAIN in the GRND_NONBLOCK use case. The blocking behaviour when lacking entropy is a security measure as per &lt;a href=&quot;https://bugs.chromium.org/p/project-zero/issues/detail?id=1559&quot;&gt;Bug #1559 of Google&#039;s Project Zero&lt;/a&gt;.&amp;#160;&lt;a href=&quot;#fnref:1&quot; rev=&quot;footnote&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;

&lt;li id=&quot;fn:2&quot;&gt;
&lt;p&gt;Update 18.12.2018: &quot;SysVinit times&quot; ::= &quot;The times when most Linux distros used SysVinit over other init systems.&quot; So Wheezy and previous for Debian. Some people objected to the statement, so I added this footnote as a clarification. See the discussion in the comments below.&amp;#160;&lt;a href=&quot;#fnref:2&quot; rev=&quot;footnote&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;

&lt;li id=&quot;fn:3&quot;&gt;
&lt;p&gt;there is no Buster branch in the release notes repository yet (17.12.2018). Update: I wrote a section for the release notes 06.05.2019 and Paul Gevers amended and committed that. So when users of affected systems read the release notes before upgrading to Buster they will hopefully not be surprised (and worried) by the long boot delays.&amp;#160;&lt;a href=&quot;#fnref:3&quot; rev=&quot;footnote&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;

&lt;/ol&gt;
&lt;/div&gt;
 
    </content:encoded>

    <pubDate>Mon, 17 Dec 2018 15:45:00 +0000</pubDate>
    <guid isPermaLink="false">https://daniel-lange.com/archives/152-guid.html</guid>
    <category>alpine</category>
<category>apache</category>
<category>boot</category>
<category>debian</category>
<category>fedora</category>
<category>hang</category>
<category>linux</category>
<category>random</category>
<category>security</category>
<category>ssh</category>
<category>sshd</category>
<category>updated</category>

</item>
<item>
    <title>Google GMail continues to own the email market, Microsoft is catching up</title>
    <link>https://daniel-lange.com/archives/150-Google-GMail-continues-to-own-the-email-market,-Microsoft-is-catching-up.html</link>
            <category>Other</category>
    
    <comments>https://daniel-lange.com/archives/150-Google-GMail-continues-to-own-the-email-market,-Microsoft-is-catching-up.html#comments</comments>
    <wfw:comment>https://daniel-lange.com/wfwcomment.php?cid=150</wfw:comment>

    <slash:comments>1</slash:comments>
    <wfw:commentRss>https://daniel-lange.com/rss.php?version=2.0&amp;type=comments&amp;cid=150</wfw:commentRss>
    

    <author>nospam@example.com (Daniel Lange)</author>
    <content:encoded>
    &lt;p&gt;Back in 2009 I wrote about &lt;a href=&quot;https://daniel-lange.com/archives/46-Google-GMail-dominating-the-email-market.html&quot;&gt;Google&#039;s GMail emerging as the dominant platform for email&lt;/a&gt;.
It had 46% of all accounts I sampled from American bloggers for the Ph.D. thesis of a friend. Blogging was big back then &lt;img src=&quot;https://daniel-lange.com/plugins/serendipity_event_emoticate/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;.&lt;/p&gt;

&lt;p&gt;Now I wondered how things have changed over the last decade while I was working on another email related job. Having access to a list of 2.3 million email addresses from a rather similar (US-centric) demographic, let&#039;s do some math:&lt;/p&gt;

&lt;p&gt;Google&#039;s GMail has 39% in that (much larger, but still non-scientific and skewed) sample. This is down from 46% in 2009. Microsoft, with its various email domains from Hotmail to Live.com has massively caught up from 10% to 35%. This is definitely also due to now focussing more on the strong Microsoft Office brands e.g. for Office 365 and Outlook.com. Yahoo, the #2 player back in 2009, is at 18%, still up from the 12% back then.&lt;/p&gt;

&lt;p&gt;So Google plus Microsoft command nearly ¾ of all email addresses in that US-centric sample. Adding Yahoo into the equation leaves the accounts covered at &gt;92%. Wow.&lt;/p&gt;

&lt;p&gt;&lt;!-- s9ymdb:656 --&gt;&lt;img class=&quot;serendipity_image_center&quot; width=&quot;469&quot; height=&quot;225&quot;  src=&quot;https://daniel-lange.com/uploads/entries/181204_Email_domains.png&quot; title=&quot;Distribution of email domains&quot; alt=&quot;&quot;&gt;&lt;/p&gt;

&lt;p&gt;Email has essentially centralized onto three infrastructure providers and with this the neutrality advantage of open standards will probably erode. Interoperability is something two or three players can make or break for 90% of the user base within a single meeting in Sunnyvale.&lt;/p&gt;

&lt;p&gt;Google is already trying their luck with &lt;a href=&quot;https://support.google.com/mail/answer/7674059&quot;&gt;&quot;confidential email&quot;&lt;/a&gt; which carry expiry dates and revokable reading rights for the recipient. So ... not really email anymore. More like Snapchat. Microsoft has been famous for their &lt;a href=&quot;https://support.microsoft.com/en-us/help/278061&quot;&gt;&lt;tt&gt;winmail.dat&lt;/tt&gt;&lt;/a&gt; attachments and other &lt;a href=&quot;https://www.msoutlook.info/question/600&quot; title=&quot;Meeting requests from Outlook 2010+ don&#039;t include human readable info for the receiver&quot;&gt;negligence of email best practices&lt;/a&gt;. Yahoo is probably busy trying to develop a sustainable business model and trying to find cash that Marissa didn&#039;t spend so hopefully less risk of trying out misguided &quot;innovations&quot; in the email space from them.&lt;/p&gt;

&lt;p&gt;All other players are less that 1% of the email domains in the sample. AOL used to have 3.1% and now the are at 0.6% which is in the same (tiny) ball park as the combined Apple offerings (mac.com, me.com) at 0.4%.&lt;/p&gt;

&lt;p&gt;There is virtually no use of the new &lt;abbr title=&quot;Top Level Domains (like .com, .net or .app). Yup. It&#039;s a thing.&quot;&gt;TLDs&lt;/abbr&gt; for (real, user)&lt;sup id=&quot;fnref:1&quot;&gt;&lt;a href=&quot;#fn:1&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; email. Just a few hundreds of .info and .name. And very few that consider themselves .sexy or .guru and want to tell via their email TLD.&lt;/p&gt;

&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
  &lt;th align=&quot;right&quot;&gt;Domain owner&lt;/th&gt;
  &lt;th align=&quot;right&quot;&gt;&amp;#160; 2009&lt;/th&gt;
  &lt;th align=&quot;right&quot;&gt;2018&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
  &lt;td align=&quot;right&quot;&gt;GMail&lt;/td&gt;
  &lt;td align=&quot;right&quot;&gt;&amp;#160; 46.1%&lt;/td&gt;
  &lt;td align=&quot;right&quot;&gt;38.6%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td align=&quot;right&quot;&gt;Yahoo&lt;/td&gt;
  &lt;td align=&quot;right&quot;&gt;11.6%&lt;/td&gt;
  &lt;td align=&quot;right&quot;&gt;18.3%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td align=&quot;right&quot;&gt;Microsoft&lt;/td&gt;
  &lt;td align=&quot;right&quot;&gt;9.9%&lt;/td&gt;
  &lt;td align=&quot;right&quot;&gt;35.4%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td align=&quot;right&quot;&gt;AOL&lt;/td&gt;
  &lt;td align=&quot;right&quot;&gt;3.1%&lt;/td&gt;
  &lt;td align=&quot;right&quot;&gt;0.6%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td align=&quot;right&quot;&gt;Apple&lt;/td&gt;
  &lt;td align=&quot;right&quot;&gt;1.0%&lt;/td&gt;
  &lt;td align=&quot;right&quot;&gt;0.4%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td align=&quot;right&quot;&gt;Comcast&lt;/td&gt;
  &lt;td align=&quot;right&quot;&gt;2.3%&lt;/td&gt;
  &lt;td align=&quot;right&quot;&gt;0.2%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td align=&quot;right&quot;&gt;SBCGlobal&lt;/td&gt;
  &lt;td align=&quot;right&quot;&gt;0.9%&lt;/td&gt;
  &lt;td align=&quot;right&quot;&gt;&amp;#160; 0.09%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;

&lt;div class=&quot;footnotes&quot;&gt;
&lt;hr /&gt;
&lt;ol&gt;

&lt;li id=&quot;fn:1&quot;&gt;
&lt;p&gt;There is extensive use of &lt;a href=&quot;https://www.spamhaus.org/statistics/tlds/&quot;&gt;cheap &lt;abbr title=&quot;Top Level Domains (like .com, .net or .app). Yup. It&#039;s a thing.&quot;&gt;TLDs&lt;/abbr&gt; for &quot;throw-away&quot; spam operations&lt;/a&gt;.&amp;#160;&lt;a href=&quot;#fnref:1&quot; rev=&quot;footnote&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;

&lt;/ol&gt;
&lt;/div&gt;
 
    </content:encoded>

    <pubDate>Tue, 04 Dec 2018 18:30:00 +0000</pubDate>
    <guid isPermaLink="false">https://daniel-lange.com/archives/150-guid.html</guid>
    <category>email</category>
<category>gmail</category>
<category>google</category>
<category>microsoft</category>
<category>monopoly</category>
<category>privacy</category>
<category>security</category>
<category>yahoo</category>

</item>
<item>
    <title>Tales from the Edge. #Security.</title>
    <link>https://daniel-lange.com/archives/145-Tales-from-the-Edge.-Security..html</link>
            <category>Fun</category>
    
    <comments>https://daniel-lange.com/archives/145-Tales-from-the-Edge.-Security..html#comments</comments>
    <wfw:comment>https://daniel-lange.com/wfwcomment.php?cid=145</wfw:comment>

    <slash:comments>5</slash:comments>
    <wfw:commentRss>https://daniel-lange.com/rss.php?version=2.0&amp;type=comments&amp;cid=145</wfw:commentRss>
    

    <author>nospam@example.com (Daniel Lange)</author>
    <content:encoded>
    &lt;p&gt;&lt;em&gt;Late 2017, King county, Washington&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;An overworked team with an impossible mission, to create a secure Internet browser, on Windows, is called to the weekly &lt;del&gt;time-waster&lt;/del&gt; product team meeting.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Product Manager:&lt;/strong&gt;&lt;br /&gt;
Team, you know that Edge needs to be the most secure browser on the planet, right?&lt;br /&gt;
So how can this thing segfault if some dude from the security consultancy fuzzes the &lt;code&gt;Backup.dat&lt;/code&gt;?&lt;/p&gt;

&lt;p&gt;You MUST make sure this is &lt;strong&gt;protected&lt;/strong&gt;. It MUST be &lt;strong&gt;a violation of Windows Policy to modify&lt;/strong&gt; the file. Go, make it happen! Report back next week!&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The team disperses.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Early next morning, at a set of tables in the middle of a dimly lit cube farm...&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Developer:&lt;/strong&gt;&lt;br /&gt;
Hey, team lead, do you know what the PM meant with &quot;Windows Policy&quot;? I never heard about a &quot;Windows Policy&quot;. Is this the &quot;Group Policy&quot;? Or did he mean the product license? Like the shrink-wrap contract? Do we need to consult legal?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Team lead:&lt;/strong&gt;&lt;br /&gt;
Oh, ffs, Bob. No time for discussion. The requirement is crystal clear. Implement it. You&#039;re the security lead. We have a deadline approaching.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Developer:&lt;/strong&gt;&lt;br /&gt;
O.k., boss. I&#039;ll see what I can do.&lt;/p&gt;

&lt;p&gt;&lt;!-- s9ymdb:652 --&gt;&lt;img class=&quot;serendipity_image_center&quot; width=&quot;680&quot; height=&quot;288&quot;   style=&quot;border:1px solid black&quot; src=&quot;https://daniel-lange.com/uploads/entries/180610_Windows_Explorer_Edge_Security.png&quot; title=&quot;Windows Edge backup folder &amp;quot;Protected - It is a violation of Windows Policy to modify&amp;quot;&quot; alt=&quot;Windows Edge backup folder &amp;quot;Protected - It is a violation of Windows Policy to modify&amp;quot;&quot; /&gt;&lt;/p&gt;
 &lt;a class=&quot;block_level&quot; href=&quot;https://daniel-lange.com/archives/145-Tales-from-the-Edge.-Security..html#extended&quot;&gt;Continue reading &quot;Tales from the Edge. #Security.&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Mon, 11 Jun 2018 00:05:00 +0000</pubDate>
    <guid isPermaLink="false">https://daniel-lange.com/archives/145-guid.html</guid>
    <category>edge</category>
<category>fun</category>
<category>security</category>
<category>update</category>
<category>windows</category>

</item>
<item>
    <title>Prevent Ubuntu from phoning home</title>
    <link>https://daniel-lange.com/archives/133-Prevent-Ubuntu-from-phoning-home.html</link>
            <category>Linux</category>
    
    <comments>https://daniel-lange.com/archives/133-Prevent-Ubuntu-from-phoning-home.html#comments</comments>
    <wfw:comment>https://daniel-lange.com/wfwcomment.php?cid=133</wfw:comment>

    <slash:comments>2</slash:comments>
    <wfw:commentRss>https://daniel-lange.com/rss.php?version=2.0&amp;type=comments&amp;cid=133</wfw:commentRss>
    

    <author>nospam@example.com (Daniel Lange)</author>
    <content:encoded>
    &lt;p&gt;Ubuntu unfortunately has decided again to implement another &quot;phone home&quot; feature, this time transferring your &lt;code&gt;lsb_release&lt;/code&gt; information, CPU model and speed (from &lt;code&gt;/proc/cpuinfo&lt;/code&gt;), &lt;code&gt;uptime&lt;/code&gt; output, most of &lt;code&gt;uname -a&lt;/code&gt; and curl version to a &lt;a href=&quot;https://news.ubuntu.com&quot;&gt;Ubuntu news web-service&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Here is the Launchpad bug report &lt;a href=&quot;https://bugs.launchpad.net/ubuntu/+source/base-files/+bug/1637800&quot;&gt;#1637800&lt;/a&gt; introducing this ... web bug.&lt;/p&gt;

&lt;p&gt;This thing runs both systemd-timer based (via &lt;code&gt;/lib/systemd/system/motd-news.service&lt;/code&gt;  and &lt;code&gt;/lib/systemd/system/motd-news.timer&lt;/code&gt;) and on request when you log in (via &lt;code&gt;/etc/update-motd.d/50-motd-news&lt;/code&gt;).&lt;/p&gt;

&lt;p&gt;&lt;!-- s9ymdb:644 --&gt;&lt;img class=&quot;serendipity_image_center&quot; width=&quot;520&quot; height=&quot;142&quot;  src=&quot;https://daniel-lange.com/uploads/entries/170629_Ubuntu_news_on_ssh_login.png&quot; title=&quot;Ubuntu news on ssh login&quot; alt=&quot;Ubuntu news on ssh login&quot; /&gt;&lt;/p&gt;

&lt;p&gt;There has even been a bug filed about the &lt;a href=&quot;https://bugs.launchpad.net/ubuntu/+source/base-files/+bug/1701068&quot;&gt;motd advertising HBO&#039;s Silicon Valley show&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;To prevent this from running (it is enabled by default on Ubuntu 17.04 and may probably propagate down to earlier versions as well), edit
&lt;code&gt;/etc/default/motd-news&lt;/code&gt; to include&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;ENABLED=0
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;so&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;sed -i &quot;s/ENABLED=1/ENABLED=0/&quot; /etc/default/motd-news # run as root
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;for your automated installs.&lt;/p&gt;

&lt;h3&gt;Update:&lt;/h3&gt;

&lt;p&gt;02.07.2017:
Dustin Kirkland &lt;a href=&quot;https://news.ycombinator.com/item?id=14663947&quot;&gt;responded&lt;/a&gt; to a YC &quot;hacker news&quot; mention of his motd spam. He mentions:&lt;/p&gt;

&lt;blockquote&gt;
You&#039;re welcome to propose your own messages for merging, if you have a well formatted, informative message for Ubuntu users.&lt;br /&gt;We&#039;ll be happy to review and include them in the future.
&lt;/blockquote&gt;

&lt;p&gt;What could possibly go wrong?&lt;/p&gt;
 
    </content:encoded>

    <pubDate>Thu, 29 Jun 2017 08:18:00 +0000</pubDate>
    <guid isPermaLink="false">https://daniel-lange.com/archives/133-guid.html</guid>
    <category>privacy</category>
<category>security</category>
<category>ssh</category>
<category>systemd</category>
<category>ubuntu</category>
<category>updated</category>

</item>
<item>
    <title>Generate an indexed list of passwords</title>
    <link>https://daniel-lange.com/archives/107-Generate-an-indexed-list-of-passwords.html</link>
            <category>Other</category>
    
    <comments>https://daniel-lange.com/archives/107-Generate-an-indexed-list-of-passwords.html#comments</comments>
    <wfw:comment>https://daniel-lange.com/wfwcomment.php?cid=107</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://daniel-lange.com/rss.php?version=2.0&amp;type=comments&amp;cid=107</wfw:commentRss>
    

    <author>nospam@example.com (Daniel Lange)</author>
    <content:encoded>
    &lt;p&gt;Generating an indexed list of passwords without complex perl or python:&lt;/p&gt;

&lt;div class=&quot;bash geshi&quot; style=&quot;text-align: left&quot;&gt;pwgen &lt;span style=&quot;color: #660033;&quot;&gt;-y&lt;/span&gt; &lt;span style=&quot;color: #000000;&quot;&gt;20&lt;/span&gt; &lt;span style=&quot;color: #000000;&quot;&gt;30&lt;/span&gt; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;|&lt;/span&gt; &lt;span style=&quot;color: #c20cb9; font-weight: bold;&quot;&gt;nl&lt;/span&gt; &lt;span style=&quot;color: #660033;&quot;&gt;-w&lt;/span&gt; &lt;span style=&quot;color: #000000;&quot;&gt;2&lt;/span&gt; &lt;span style=&quot;color: #660033;&quot;&gt;-n&lt;/span&gt; rz &lt;span style=&quot;color: #660033;&quot;&gt;-s&lt;/span&gt; -&lt;/div&gt;

&lt;p&gt;&lt;em&gt;Explanation:&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;pwgen: -y = complex passwords (including symbols) ; 20 = length of password; 30 = number of passwords to generate&lt;/p&gt;

&lt;p&gt;nl: -w 2 = zero pad to a width of two characters; -n rz = print right-justified; -s - = use dash as a separator&lt;/p&gt;

&lt;p&gt;&lt;!-- s9ymdb:616 --&gt;&lt;img class=&quot;serendipity_image_center&quot; width=&quot;394&quot; height=&quot;471&quot;  src=&quot;https://daniel-lange.com/uploads/entries/150809_generate_indexed_list_of_passwords.png&quot; title=&quot;nl ... old but golden&quot; alt=&quot;screenshot of pwgen | nl&quot; /&gt;&lt;/p&gt;
 
    </content:encoded>

    <pubDate>Sun, 09 Aug 2015 17:31:58 +0000</pubDate>
    <guid isPermaLink="false">https://daniel-lange.com/archives/107-guid.html</guid>
    <category>bash</category>
<category>passwords</category>
<category>security</category>
<category>shell</category>

</item>
<item>
    <title>Security is hard, open source security unnecessarily harder</title>
    <link>https://daniel-lange.com/archives/105-Security-is-hard,-open-source-security-unnecessarily-harder.html</link>
            <category>IT</category>
    
    <comments>https://daniel-lange.com/archives/105-Security-is-hard,-open-source-security-unnecessarily-harder.html#comments</comments>
    <wfw:comment>https://daniel-lange.com/wfwcomment.php?cid=105</wfw:comment>

    <slash:comments>3</slash:comments>
    <wfw:commentRss>https://daniel-lange.com/rss.php?version=2.0&amp;type=comments&amp;cid=105</wfw:commentRss>
    

    <author>nospam@example.com (Daniel Lange)</author>
    <content:encoded>
    &lt;p&gt;Now it is a commonplace that security is hard. It involves advanced mathematics and a single, tiny mistake or omission in implementation can &lt;a href=&quot;http://breakingmalware.com/vulnerabilities/one-bit-rule-bypassing-windows-10-protections-using-single-bit/&quot; title=&quot;One-Bit To Rule Them All: Bypassing Windows’ 10 Protections using a single Bit&quot;&gt;spoil everything&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;And the only sane IT security can be open source security. Because you need to assess the algorithms and their implementation and you need to be able to completely verify the implementation. You simply can&#039;t if you don&#039;t have the code and can compile it yourself to produce a trusted (ideally &lt;a href=&quot;https://dhole.github.io/post/reproducible_builds_debian_gsoc2015/&quot; title=&quot;Google Summer of Code Project: Debian reproducible builds&quot;&gt;reproducible&lt;/a&gt;) build. A no-brainer for everybody in the field.&lt;/p&gt;

&lt;p&gt;But we make it unbelievably hard for people to use security tools. Because these have grown over decades fostered by highly intelligent people with no interest in &lt;abbr title=&quot;User eXperience, the art of creating a good end user interaction&quot;&gt;UX&lt;/abbr&gt;.&lt;br /&gt;
&quot;It was hard to write, so it should be hard to use as well.&quot;&lt;br /&gt;
And then complain about adoption.&lt;/p&gt;

&lt;p&gt;PGP / gpg has received &lt;a href=&quot;http://www.thoughtcrime.org/blog/gpg-and-me/&quot; title=&quot;Moxie Marlinspike on why gpg is a failure&quot;&gt;quite&lt;/a&gt; &lt;a href=&quot;http://blog.cryptographyengineering.com/2014/08/whats-matter-with-pgp.html&quot; title=&quot;Matthew Green on why gpg is a failure&quot;&gt;some&lt;/a&gt; &lt;a href=&quot;https://www.mailpile.is/blog/2015-02-26_Revisiting_the_GnuPG_discussion.html&quot; title=&quot;Mailpile devs on ... you get the notion, do you?&quot;&gt;fire&lt;/a&gt; this year and the good news is this has resulted in funding for the sole gpg developer. Which will obviously not solve the &lt;abbr title=&quot;User eXperience, the art of creating a good end user interaction&quot;&gt;UX&lt;/abbr&gt; problem.&lt;/p&gt;

&lt;p&gt;But the much worse offender is OpenSSL. It is &lt;strong&gt;so hard to use&lt;/strong&gt; that even experienced hackers fail.&lt;/p&gt;

&lt;p&gt;&lt;!-- s9ymdb:614 --&gt;&lt;img class=&quot;serendipity_image_center&quot; width=&quot;738&quot; height=&quot;109&quot;  src=&quot;https://daniel-lange.com/uploads/entries/150703_hackint_own_CA.png&quot; title=&quot;Kudos to hexa- for the clear communication.&quot; alt=&quot;IRC wallop on hackint&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Now, securely encrypting a mass communication media like IRC is not possible at all.
Read &lt;a href=&quot;https://web.archive.org/web/20180620083100/https://www.quakenet.org/articles/99-trust-is-not-transitive-or-why-irc-over-ssl-is-pointless&quot; title=&quot;Quakenet article from 2009&quot;&gt;Trust is not transitive: or why IRC over SSL is pointless&lt;/a&gt;&lt;sup id=&quot;fnref:1&quot;&gt;&lt;a href=&quot;#fn:1&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;.&lt;br /&gt;
Still it makes wiretapping harder and that may be a good thing these days.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.libressl.org/&quot; title=&quot;LibreSSL home page&quot;&gt;LibreSSL&lt;/a&gt; has forked the OpenSSL code base &quot;with goals of modernizing the codebase, improving security, and applying best practice development processes&quot;. No &lt;abbr title=&quot;User eXperience, the art of creating a good end user interaction&quot;&gt;UX&lt;/abbr&gt; improvement. A cleaner code for the chosen few. Duh.&lt;/p&gt;

&lt;p&gt;I predict the re-implementations and gradual improvement scenarios will fail. The nearly-impossible-to-use-right situation with both gpg and (much more importantly) OpenSSL cannot be fixed by gradual improvements and however thorough code reviews.&lt;/p&gt;

&lt;p&gt;Now the &quot;there&#039;s an App for this&quot; security movement won&#039;t work out on a grand scale either:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Most often not open source. Notable exceptions: &lt;a href=&quot;https://github.com/chatsecure&quot; title=&quot;Chatsecure github repository&quot;&gt;ChatSecure&lt;/a&gt;, &lt;a href=&quot;https://github.com/whispersystems/&quot; title=&quot;TextSecure github repositories&quot;&gt;TextSecure&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;No reference implementations with excellent test servers and well documented test suites but products. &quot;Use my App.&quot;, &quot;No, use MY App!!!&quot;.&lt;/li&gt;
&lt;li&gt;Only secures chat or email. So the &lt;abbr title=&quot;Venture Capital, rich people&#039;s money to burn in Stanford grad founded startups&quot;&gt;VC&lt;/abbr&gt;-powered (&quot;next WhatsApp&quot;) mass-adoption markets but not the really interesting things to improve upon (&lt;abbr title=&quot;Certificate Authority, the thing you need to manage trust in X.509 certificates&quot;&gt;CA&lt;/abbr&gt;, code signing, &lt;abbr title=&quot;Full Disk Encryption&quot;&gt;FDE&lt;/abbr&gt;, ...).&lt;/li&gt;
&lt;li&gt;While everybody is focusing on mobile adoption the heavy lifting is still on servers. We need sane libraries and APIs. No App for that.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;So we need a new development, a new code, a new open source product. Sadly so the &lt;a href=&quot;http://www.linuxfoundation.org/programs/core-infrastructure-initiative&quot; title=&quot;Linux Foundation&#039;s Core Infrastructure Initiative home page&quot;&gt;Core Infrastructure Initiative&lt;/a&gt; so far only funds existing open source projects in dire needs and people bug hunting.&lt;/p&gt;

&lt;p&gt;It basically makes the bad solutions of today a bit more secure and ensures maintenance of decade old crufty code bases. That way it extends the suffering of everybody using the inadequate solutions of today.&lt;/p&gt;

&lt;p&gt;That&#039;s inevitable until we have a better stack but we need to look into getting rid of gpg and OpenSSL and replacing it with something new. Something designed well from the ground up, technically and from a user experience perspective.&lt;/p&gt;

&lt;p&gt;Now who&#039;s in for a five year funding plan? $3m&lt;sup id=&quot;fnref:2&quot;&gt;&lt;a href=&quot;#fn:2&quot; rel=&quot;footnote&quot;&gt;2&lt;/a&gt;&lt;/sup&gt; annually. &lt;abbr title=&quot;Return on Capital Employed&quot;&gt;ROCE&lt;/abbr&gt; 0. But a very good chance to get the &lt;abbr title=&quot;Order of the British Empire&quot;&gt;OBE&lt;/abbr&gt; awarded.&lt;/p&gt;

&lt;p&gt;&lt;!-- s9ymdb:615 --&gt;&lt;img class=&quot;serendipity_image_center&quot; width=&quot;430&quot; height=&quot;600&quot;  src=&quot;https://daniel-lange.com/uploads/entries/keep-calm-and-enjoy-the-silence.png&quot; title=&quot;Surprise me!&quot; alt=&quot;Keep calm and enjoy the silence&quot; /&gt;&lt;/p&gt;

&lt;h3&gt;Updates:&lt;/h3&gt;

&lt;p&gt;10.06.22:
Carl Tashian made a &lt;a href=&quot;https://smallstep.com/blog/if-openssl-were-a-gui/&quot;&gt;GUI mockup&lt;/a&gt; to show the complexity of the OpenSSL &quot;user interface&quot;.&lt;/p&gt;

&lt;p&gt;21.07.19:
A current essay on &lt;a href=&quot;https://latacora.micro.blog/2019/07/16/the-pgp-problem.html&quot;&gt;&quot;The PGP problem&quot;&lt;/a&gt; is making rounds and lists some valid issues with the file format, RFCs and the gpg implementation. The GnuPG-users mailing list has a &lt;a href=&quot;https://lists.gnupg.org/pipermail/gnupg-users/2019-July/thread.html#62396&quot;&gt;discussion thread&lt;/a&gt; on the issues listed in the essay.&lt;/p&gt;

&lt;p&gt;19.01.19:
Daniel Kahn Gillmor, a Senior Staff Technologist at the ACLU, tried to get his gpg key transition correct. He put a huge amount of thought and preparation into the transition. To support Autocrypt (another try to get GPG usable for more people than a small technical elite), he specifically created &lt;a href=&quot;https://web.archive.org/web/20190118070041/https://dkg.fifthhorseman.net/blog/2019-dkg-openpgp-transition.html&quot;&gt;different identities for him as a person and his two main email addresses&lt;/a&gt;. Two days later he has to invalidate his new gpg key and back-off to less &quot;modern&quot; identity layouts because many of the brittle pieces of infrastructure around gpg from emacs to gpg signature management frontends to mailing list managers &lt;a href=&quot;https://dkg.fifthhorseman.net/blog/2019-dkg-openpgp-transition.html&quot;&gt;fell over dead&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;28.11.18:
Changed the Quakenet link on why encrypting IRC is useless to an archive.org one as they have removed the original content.&lt;/p&gt;

&lt;p&gt;13.03.17:
Chris Wellons writes about &lt;a href=&quot;http://nullprogram.com/blog/2017/03/12/&quot;&gt;why GPG is a failure&lt;/a&gt; and created a small portable application &lt;a href=&quot;https://github.com/skeeto/enchive&quot;&gt;Enchive&lt;/a&gt; to replace it for asymmetric encryption.&lt;/p&gt;

&lt;p&gt;24.02.17:
Stefan Marsiske has written a &lt;a href=&quot;https://www.ctrlc.hu/~stef/blog/posts/on_pgp.html&quot;&gt;blog article: On PGP&lt;/a&gt;. He argues about adversary models and when gpg is &quot;probably&quot; &lt;sup id=&quot;fnref:3&quot;&gt;&lt;a href=&quot;#fn:3&quot; rel=&quot;footnote&quot;&gt;3&lt;/a&gt;&lt;/sup&gt; still good enough to use. To me a security tool can never be a sane choice if the UI is so convoluted that only a chosen few stand at least a chance of using it correctly. Doesn&#039;t matter who or what your adversary is.&lt;br /&gt;
Stefan concludes his blog article:&lt;/p&gt;

&lt;blockquote&gt;
PGP for encryption as in &lt;a href=&quot;https://www.ietf.org/rfc/rfc4880.txt&quot; title=&quot;RFC 4880 OpenPGP Message Format&quot;&gt;RFC 4880&lt;/a&gt; should be retired, some sunk-cost-biases to be coped with, but we all should rejoice that the last 3-4 years had so much innovation in this field, that RFC 4880 is being rewritten&lt;sup&gt;&lt;a href=&quot;https://xkcd.com/285/&quot; title=&quot;Citation needed: Stefan does not provide any verification for this claim&quot;&gt;[Citation needed]&lt;/a&gt;&lt;/sup&gt; with many of the above in mind and that hopefully there&#039;ll be more and better tools. [..]&lt;/blockquote&gt;

&lt;p&gt;He gives an extensive list of tools he considers worth watching in his article. Go and check whether something in there looks like a possible replacement for gpg to you. Stefan also gave a talk on the OpenPGP conference 2016 with similar content, &lt;a href=&quot;https://openpgp-conf.org/2016/openpgp-2016-a-few-concerns.pdf&quot; title=&quot;OpenPGP conference 2016, talk slides by Stefan Marsiske&quot;&gt;slides&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;14.02.17:
James Stanley has written up a &lt;a href=&quot;http://incoherency.co.uk/blog/stories/gpg.html&quot;&gt;nice account&lt;/a&gt; of his two hour venture to get encrypted email set up. The process is speckled with bugs and inconsistent nomenclature capable of confusing even a technically inclined person. There has been no progress in the last ~two years since I wrote this piece. We&#039;re all still riding dead horses. James summarizes:&lt;/p&gt;

&lt;blockquote&gt;Encrypted email is nothing new (PGP was initially released in 1991 - 26 years ago!), but it still has a huge barrier to entry for anyone who isn&#039;t already familiar with how to use it.&lt;/blockquote&gt;

&lt;p&gt;04.09.16:
Greg Kroah-Hartman ends an &lt;a href=&quot;https://plus.google.com/+gregkroahhartman/posts/N2eFYMyAM9r&quot;&gt;analysis of the Evil32 PGP keyid collisions&lt;/a&gt; with:&lt;/p&gt;

&lt;blockquote&gt;gpg really is horrible to use and almost impossible to use correctly.&lt;/blockquote&gt;

&lt;p&gt;14.11.15:&lt;br /&gt;
Scott Ruoti, Jeff Andersen, Daniel Zappala and Kent Seamons of BYU, Utah, have &lt;a href=&quot;http://arxiv.org/pdf/1510.08555.pdf&quot; title=&quot;PDF of Why Johnny Still, Still Can’t Encrypt: Evaluating the Usability of a Modern PGP Client on arXiv&quot;&gt;analysed the usability&lt;/a&gt; [&lt;a href=&quot;https://daniel-lange.com/documents/Ruoti_Andersen_Zappala_Seamons_Usability_Mailvelope_arxiv_1510.08555.pdf&quot; title=&quot;local mirror of the ArXiv paper, 173kB download&quot;&gt;local mirror, 173kB&lt;/a&gt;] of &lt;a href=&quot;https://www.mailvelope.com&quot; title=&quot;Mailvelope home page&quot;&gt;Mailvelope&lt;/a&gt;, a webmail PGP/GPG add-on based on a Javascript PGP implementation. They describe the results as &quot;disheartening&quot;:&lt;/p&gt;

&lt;blockquote&gt;
In our study of 20 participants,  grouped into 10 pairs  of  participants  who  attempted  to  exchange  encrypted
email,  only one pair was able to successfully complete the assigned tasks using Mailvelope.  All other participants were
unable to complete the assigned task in the one hour allotted to the study.  Even though a decade has passed since the last
formal study of PGP, our results show that Johnny has still not gotten any closer to encrypt his email using PGP.
&lt;/blockquote&gt;

&lt;div class=&quot;footnotes&quot;&gt;
&lt;hr /&gt;
&lt;ol&gt;

&lt;li id=&quot;fn:1&quot;&gt;
&lt;p&gt;Quakenet has removed that article citing &quot;near constant misrepresentation of the presented argument&quot; sometime in 2018. The contents (not misrepresented) are still valid so I have added and archive.org Wayback machine link instead.&amp;#160;&lt;a href=&quot;#fnref:1&quot; rev=&quot;footnote&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;

&lt;li id=&quot;fn:2&quot;&gt;
&lt;p&gt;The estimate was $2m until end of 2018. The longer we wait, the more expensive it&#039;ll get. And - obviously - ever harder. E.g. nobody needed to care about sidechannel attacks on &lt;a href=&quot;https://en.wikipedia.org/wiki/ARM_big.LITTLE&quot;&gt;big-LITTLE&lt;/a&gt; five years ago. But now they start to hit servers and security-sensitive edge devices.&amp;#160;&lt;a href=&quot;#fnref:2&quot; rev=&quot;footnote&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;

&lt;li id=&quot;fn:3&quot;&gt;
&lt;p&gt;Stefan says &quot;probably&quot; &lt;strong&gt;five&lt;/strong&gt; times in one paragraph. Probably needs an editor. The person not the application.&amp;#160;&lt;a href=&quot;#fnref:3&quot; rev=&quot;footnote&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;

&lt;/ol&gt;
&lt;/div&gt;
 
    </content:encoded>

    <pubDate>Fri, 03 Jul 2015 07:42:00 +0000</pubDate>
    <guid isPermaLink="false">https://daniel-lange.com/archives/105-guid.html</guid>
    <category>gpg</category>
<category>gpp</category>
<category>irc</category>
<category>opensource</category>
<category>openssl</category>
<category>security</category>
<category>ssl</category>
<category>updated</category>

</item>
<item>
    <title>Security by policy does not work</title>
    <link>https://daniel-lange.com/archives/86-Security-by-policy-does-not-work.html</link>
            <category>Management</category>
    
    <comments>https://daniel-lange.com/archives/86-Security-by-policy-does-not-work.html#comments</comments>
    <wfw:comment>https://daniel-lange.com/wfwcomment.php?cid=86</wfw:comment>

    <slash:comments>3</slash:comments>
    <wfw:commentRss>https://daniel-lange.com/rss.php?version=2.0&amp;type=comments&amp;cid=86</wfw:commentRss>
    

    <author>nospam@example.com (Daniel Lange)</author>
    <content:encoded>
    &lt;p&gt;The laptop systems aboard the International Space Station (ISS) have been infected by computer viruses and worms &lt;a href=&quot;http://www.wired.com/threatlevel/2008/08/virus-infects-s/&quot; title=&quot;Wired: Virus Infects Space Station Laptops (Again)&quot;&gt;multiple times&lt;/a&gt;.
The &lt;a href=&quot;http://www.symantec.com/security_response/writeup.jsp?docid=2007-082706-1742-99&quot; title=&quot;Symantec virus database: W32.Gammima.AG information&quot;&gt;W32.Gammima.AG&lt;/a&gt; virus made it to space in July 2008. And it happily spread from laptop to laptop onboard the ISS.
The virus has been written to steal credentials for some common games. It is unknown how many of these were run in orbit. The latency would kill the experience for sure.&lt;/p&gt;

&lt;p&gt;I am sure there have been policies in place to prevent astronauts carrying personal soft- and hardware up to the ISS. Personal items must be explicitly applied for and will only be approved after severe scrutiny of each item. Even beyond the obvious security considerations, this is necessary as the launch weight needs to be calculated exactly.&lt;br /&gt;
NASA and Roscosmos both have very strict policies for their personnel and strict training to make sure they know and follow policy.
The group of astronauts primarily affected by the policy is very well known and counts a few dozen heads.&lt;/p&gt;

&lt;p&gt;Still at least one infected USB stick made it up to the ISS and could spread its malware. Other infections have happened and we can assume similar infection vectors.&lt;/p&gt;

&lt;p&gt;So the policy has proven unenforceable. It is broken. It is still correct per se. There is nothing wrong with prohibiting personal soft- and hardware in a high risk environment. So the policy stays in place. NASA still needed to make sure to rely much less on its effectiveness.&lt;/p&gt;

&lt;p&gt;Hence NASA did the only sane thing: Move from an unenforceable policy to a technically feasible solution, significantly reducing the security exposure. In May 2013 NASA &lt;a href=&quot;http://www.theinquirer.net/inquirer/news/2267703/nasa-migrates-iss-laptops-from-windows-to-linux&quot; title=&quot;The Inquirer: NASA migrates ISS laptops from Windows to Linux&quot;&gt;announced&lt;/a&gt; the ISS laptops are being migrated to Debian 6. Imagine how much pressure Microsoft must have put up to prevent such a technical decision due to the adverse marketing message it provides along the way. And still the engineers at NASA saw this as the best way forward.&lt;/p&gt;

&lt;p&gt;The take-away message here is: &lt;strong&gt;Security by policy does not work&lt;/strong&gt;.&lt;/p&gt;
 &lt;a class=&quot;block_level&quot; href=&quot;https://daniel-lange.com/archives/86-Security-by-policy-does-not-work.html#extended&quot;&gt;Continue reading &quot;Security by policy does not work&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Tue, 12 Nov 2013 15:00:00 +0000</pubDate>
    <guid isPermaLink="false">https://daniel-lange.com/archives/86-guid.html</guid>
    <category>nasa</category>
<category>passwords</category>
<category>policy</category>
<category>security</category>
<category>strategy</category>
<category>updated</category>
<category>viruses</category>

</item>
<item>
    <title>Encrypting files with openssl for synchronization across the Internet</title>
    <link>https://daniel-lange.com/archives/84-Encrypting-files-with-openssl-for-synchronization-across-the-Internet.html</link>
            <category>Linux</category>
    
    <comments>https://daniel-lange.com/archives/84-Encrypting-files-with-openssl-for-synchronization-across-the-Internet.html#comments</comments>
    <wfw:comment>https://daniel-lange.com/wfwcomment.php?cid=84</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>https://daniel-lange.com/rss.php?version=2.0&amp;type=comments&amp;cid=84</wfw:commentRss>
    

    <author>nospam@example.com (Daniel Lange)</author>
    <content:encoded>
    &lt;p&gt;Well, shortly after I wrote about &lt;a href=&quot;https://daniel-lange.com/83-Encrypting-files-with-gpg-for-synchronization-across-the-Internet.html&quot;&gt;encrypting files with a keyfile / passphrase with gpg&lt;/a&gt; people asked about a solution with openssl.&lt;/p&gt;

&lt;p&gt;You should prefer to use the gpg version linked above, but if you can&#039;t, below is a script offering the same functionality with openssl.&lt;/p&gt;

&lt;p&gt;You basically call &lt;code&gt;crypt_openssl &amp;lt;file&amp;gt; [&amp;lt;files...&amp;gt;]&lt;/code&gt; to encrypt &lt;code&gt;file&lt;/code&gt; to &lt;code&gt;file.aes&lt;/code&gt; using the same keyfile as used in the gpg script (&lt;code&gt;~/.gnupg/mykey001&lt;/code&gt; per default).&lt;/p&gt;

&lt;p&gt;A simple &lt;code&gt;crypt_openssl -d &amp;lt;file.aes&amp;gt; [&amp;lt;files.aes...&amp;gt;]&lt;/code&gt; will restore the original files from the encrypted AES256 version that you can safely transfer over the Internet even using insecure channels.&lt;/p&gt;

&lt;p&gt;Please note that you should feed compressed data to &lt;code&gt;crypt_openssl&lt;/code&gt; whenever you can. So use preferably use it on &lt;code&gt;.zip&lt;/code&gt; or &lt;code&gt;.tar.gz&lt;/code&gt; files.&lt;/p&gt;
 &lt;a class=&quot;block_level&quot; href=&quot;https://daniel-lange.com/archives/84-Encrypting-files-with-openssl-for-synchronization-across-the-Internet.html#extended&quot;&gt;Continue reading &quot;Encrypting files with openssl for synchronization across the Internet&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Mon, 23 Sep 2013 17:50:00 +0000</pubDate>
    <guid isPermaLink="false">https://daniel-lange.com/archives/84-guid.html</guid>
    <category>bash</category>
<category>crypt</category>
<category>openssl</category>
<category>script</category>
<category>security</category>
<category>sync</category>

</item>
<item>
    <title>Encrypting files with gpg for synchronization across the Internet</title>
    <link>https://daniel-lange.com/archives/83-Encrypting-files-with-gpg-for-synchronization-across-the-Internet.html</link>
            <category>Linux</category>
    
    <comments>https://daniel-lange.com/archives/83-Encrypting-files-with-gpg-for-synchronization-across-the-Internet.html#comments</comments>
    <wfw:comment>https://daniel-lange.com/wfwcomment.php?cid=83</wfw:comment>

    <slash:comments>6</slash:comments>
    <wfw:commentRss>https://daniel-lange.com/rss.php?version=2.0&amp;type=comments&amp;cid=83</wfw:commentRss>
    

    <author>nospam@example.com (Daniel Lange)</author>
    <content:encoded>
    &lt;p&gt;Automatically transferring (syncing) files between multiple computers is easy these days. Dropbox, owncloud or &lt;a href=&quot;https://github.com/sickill/bitpocket&quot;&gt;bitpocket&lt;/a&gt; to name a few. You can imagine I use the latter (if you want a recommendation)&lt;sup id=&quot;fnref:1&quot;&gt;&lt;a href=&quot;#fn:1&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;

&lt;p&gt;In any case you want to encrypt what you send to be stored in &quot;the cloud&quot; even if it is just for a short time. There are many options how to encrypt the &quot;in flight&quot; data. Symmetric ciphers are probably the safest and most widely researched cryptography these days and easier to use than asymmetric key pairs in this context as well.&lt;/p&gt;

&lt;p&gt;Encryption is notoriously hard to implement correctly and worthless when the implementation is flawed. So I looked at &lt;a href=&quot;http://www.gnupg.org/&quot;&gt;gpg&lt;/a&gt;, a well known reference implementation, and was amazed that it can neither use a proper keyfile for symmetric encryption (you can just supply a passphrase via &lt;code&gt;--passphrase-file&lt;/code&gt;) nor does it handle multiple files on the command line consistently.
You can use &lt;code&gt;--multifile&lt;/code&gt; (wondering...why does a command need that at all?) with &lt;code&gt;--decrypt&lt;/code&gt; and &lt;code&gt;--encrypt&lt;/code&gt; (asymmetric public/private key pair encryption) but not with &lt;code&gt;--symmetric&lt;/code&gt; (symmetric shared key encryption). Duh!&lt;/p&gt;

&lt;p&gt;With a bit of scripting around the gpg shortcomings, you end up with &lt;code&gt;crypt_gpg&lt;/code&gt; that can nicely encrypt or decrypt multiple files (symmetric cipher) in one go.&lt;/p&gt;

&lt;div class=&quot;footnotes&quot;&gt;
&lt;hr /&gt;
&lt;ol&gt;

&lt;li id=&quot;fn:1&quot;&gt;
&lt;p&gt;Dropbox is closed source so it cannot be assessed for its security. Owncloud needs a thorough code review before I would dare to run it on my systems.&amp;#160;&lt;a href=&quot;#fnref:1&quot; rev=&quot;footnote&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;

&lt;/ol&gt;
&lt;/div&gt;
 &lt;a class=&quot;block_level&quot; href=&quot;https://daniel-lange.com/archives/83-Encrypting-files-with-gpg-for-synchronization-across-the-Internet.html#extended&quot;&gt;Continue reading &quot;Encrypting files with gpg for synchronization across the Internet&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Fri, 20 Sep 2013 16:00:00 +0000</pubDate>
    <guid isPermaLink="false">https://daniel-lange.com/archives/83-guid.html</guid>
    <category>bash</category>
<category>crypt</category>
<category>gpg</category>
<category>script</category>
<category>security</category>
<category>sync</category>

</item>
<item>
    <title>Securing the grub boot loader</title>
    <link>https://daniel-lange.com/archives/75-Securing-the-grub-boot-loader.html</link>
            <category>Open Source</category>
    
    <comments>https://daniel-lange.com/archives/75-Securing-the-grub-boot-loader.html#comments</comments>
    <wfw:comment>https://daniel-lange.com/wfwcomment.php?cid=75</wfw:comment>

    <slash:comments>1</slash:comments>
    <wfw:commentRss>https://daniel-lange.com/rss.php?version=2.0&amp;type=comments&amp;cid=75</wfw:commentRss>
    

    <author>nospam@example.com (Daniel Lange)</author>
    <content:encoded>
    &lt;p&gt;Since version 2.0 the behaviour of grub regarding passwords has changed quite substantially.
It can be nicely used to secure the boot process so that a X display manager (gdm, kdm, lightdm, ...) or login prompt cannot be circumvented by editing the Linux kernel boot command line parameters. The &lt;a href=&quot;http://www.gnu.org/software/grub/manual/html_node/Security.html&quot; title=&quot;GNU grub manual page on Authentication and authorisation&quot;&gt;documentation&lt;/a&gt; is concise but many old how-tos may lead you down the wrong GNU grub &quot;legacy&quot; (the pre-2.0 versions) path.&lt;/p&gt;

&lt;p&gt;So this assumes you have a grub installed and working.
I.e. if you press Shift during boot, you get a grub menu and can edit menu entries via the e key.&lt;/p&gt;

&lt;p&gt;First you need to setup grub users and corresponding passwords:&lt;/p&gt;

&lt;p&gt;Run &lt;em&gt;grub-mkpasswd-pbkdf2&lt;/em&gt; to encrypt every password you want to use for grub users (which are technically unrelated to Linux system users at this time).&lt;br /&gt;
You&#039;ll get a string like &#039;grub.pbkdf2.sha512.10000...&#039;. It will replace the plain text passwords.&lt;/p&gt;

&lt;p&gt;In &#039;/etc/grub/40_custom&#039; add lines like:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&amp;#35; These users can change the config at boot time and run any menuentry:&lt;br /&gt;
  set superusers=&quot;root user1&quot;&lt;br /&gt;
  password_pbkdf2 root  grub.pbkdf2.sha512.10000.aaa...&lt;br /&gt;
  password_pbkdf2 user1 grub.pbkdf2.sha512.10000.bbb...&lt;br /&gt;
  &amp;#35; This user can only run specifically designated menuentries (not a superuser):&lt;br /&gt;
  password_pbkdf2 user2 grub.pbkdf2.sha512.10000.ccc...&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Now once you did this grub v. 2.0+ will ask for a supervisor password every time you want to boot any menu item.
This is a changed behavior from v. 1.9x which defaulted to allow all entries if no user restriction was specified.
So you need to add &#039;--unrestricted&#039; to all &#039;menuentries&#039; that any user shall be able to boot.
You can edit &#039;/boot/grub/grub.cfg&#039; and add --unrestricted to (the default) menuentries.
Or you can edit the &#039;linux_entry ()&#039; function in &#039;/etc/grub/10_linux&#039; so that the &#039;echo &quot;menuentry ...&quot;&#039; lines include --unrestricted by default:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;[...]&lt;br /&gt;
  echo &quot;menuentry &#039;$(echo &quot;$title&quot; | grub_quote)&#039; &lt;font color=&quot;red&quot;&gt;--unrestricted&lt;/font&gt; ${CLASS} \$menuentry_id_option &#039;gnulinux-$version-$type-$boot_device_id&#039; {&quot; | sed &quot;s/^/$submenu_indentation/&quot;&lt;br /&gt;
  else&lt;br /&gt;
  echo &quot;menuentry &#039;$(echo &quot;$os&quot; | grub_quote)&#039; &lt;font color=&quot;red&quot;&gt;--unrestricted&lt;/font&gt; ${CLASS} \$menuentry_id_option &#039;gnulinux-simple-$boot_device_id&#039; {&quot; | sed &quot;s/^/$submenu_indentation/&quot;&lt;br /&gt;
  [...]&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Make a backup of this file as it will be overwritten by grub updates.
This way all Linux kernels detected by the script will be available to all users without identifying to grub via username / password.&lt;/p&gt;

&lt;p&gt;Now issue &lt;em&gt;update-grub&lt;/em&gt; to re-generate &#039;grub.cfg&#039; with the amended menuentries.&lt;/p&gt;

&lt;p&gt;If everything worked well, your system can now be booted unrestricted but the grub configuration can only be changed from the grub superusers after identifying with their username and password at the grub prompt.&lt;/p&gt;

&lt;p&gt;Bonus point:&lt;/p&gt;

&lt;p&gt;If you want to create menuentries that user2 (and any superuser) from the above example user list can run, add blocks like these to the end of &#039;40_custom&#039;:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;menuentry &quot;Only user2 (or superuser) can run this Windows installation&quot; &lt;font color=&quot;red&quot;&gt;--users user2&lt;/font&gt; {&lt;br /&gt;
    set root=(hd1,1)&lt;br /&gt;
    chainloader +1&lt;br /&gt;
  }&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;Update&lt;/h2&gt;

&lt;p&gt;16.12.2015:&lt;br /&gt;
Hector Marco and Ismael Ripoll have found a nearly unbelievable exploit in Grub2 that allows you to tap backspace 28 times to get a rescue shell and that way bypass a password prompt. Time to update!&lt;br /&gt;
Read the excellent analysis of the bug and the exploit vector in &lt;a href=&quot;http://hmarco.org/bugs/CVE-2015-8370-Grub2-authentication-bypass.html&quot;&gt;Hector Marco&#039;s blog post&lt;/a&gt;.&lt;/p&gt;
 
    </content:encoded>

    <pubDate>Sun, 07 Oct 2012 21:55:00 +0000</pubDate>
    <guid isPermaLink="false">https://daniel-lange.com/archives/75-guid.html</guid>
    <category>boot</category>
<category>grub</category>
<category>security</category>
<category>updated</category>

</item>
<item>
    <title>Google GMail dominating the email market</title>
    <link>https://daniel-lange.com/archives/46-Google-GMail-dominating-the-email-market.html</link>
            <category>Other</category>
    
    <comments>https://daniel-lange.com/archives/46-Google-GMail-dominating-the-email-market.html#comments</comments>
    <wfw:comment>https://daniel-lange.com/wfwcomment.php?cid=46</wfw:comment>

    <slash:comments>1</slash:comments>
    <wfw:commentRss>https://daniel-lange.com/rss.php?version=2.0&amp;type=comments&amp;cid=46</wfw:commentRss>
    

    <author>nospam@example.com (Daniel Lange)</author>
    <content:encoded>
    &lt;p&gt;Google&#039;s GMail was launched in April 2004 and only in February 2007 Google dropped its invite system to open up to the general public acc. to &lt;a href=&quot;http://en.wikipedia.org/wiki/History_of_Gmail&quot; title=&quot;Wikipedia article on the history of GMail&quot;&gt;Wikipedia&#039;s history of GMail&lt;/a&gt;. That&#039;s some five years of operations up to now.&lt;/p&gt;

&lt;p&gt;It kind of amazed me how many people I know have GMail as their primary mail provider. So I took the chance today to get a bit of statistics to check my gut feelings:&lt;/p&gt;

&lt;p&gt;A friend of mine selected some (mostly American) bloggers that have indicated specific interests in a topic related to his Doctoral thesis. This sample ended up to be 1,375 people. These folks have 295 different email domains. Only.&lt;/p&gt;

&lt;p&gt;A whooping 46% of the (rather random) sample use GMail, 12% Yahoo, 8% Hotmail and about 3% AOL.
While Yahoo has some foreign domains in the sample (yahoo.co.uk, yahoo.ca, see &lt;em&gt;mostly&lt;/em&gt; American bloggers above), these add up to around 0.1% of the sample so it&#039;s not really significant.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://daniel-lange.com/uploads/entries/090528_Blogger_Email_Domains.png&quot; alt=&quot;Distribution of American blogger&#039;s email domains&quot; /&gt;&lt;/p&gt;

&lt;p&gt;This data is in no way representative, but still wow. Google basically has a monopoly on search and now seems to have a close-to-majority footprint in personal email.&lt;/p&gt;

&lt;p&gt;I guess the dominance is currently larger in the States than in Europe or Asia as GMail has only gradually learned languages beyond English.&lt;br /&gt;
Large local providers should also have some foothold in these markets. Similar to the Comcast and SBC customers still significant in sample depicted above. Just the local providers in Europe and Asia will be somewhat stronger (for now). Google is also aggressively targeting corporations with hosted email and apps now so one can expect further and accelerated growth in that area. Quite a number of companies are considering using hosted email instead of the conventional mail system they have operated on site for many years now.&lt;/p&gt;

&lt;p&gt;So while &lt;a href=&quot;http://ginatrapani.org/&quot; title=&quot;Gina Trapani&#039;s homepage&quot;&gt;Gina Trapani&lt;/a&gt; recommends &lt;a href=&quot;http://lifehacker.com/5261934/break-googles-monopoly-on-your-data-switch-to-yahoo-search&quot; title=&quot;Lifehacker blog entry: Break Google&#039;s Monopoly on Your Data: Switch to Yahoo Search&quot;&gt;&quot;Break Google&#039;s Monopoly on Your Data: Switch to Yahoo Search&quot;&lt;/a&gt;, may I humbly point out: It&#039;s becoming quite impossible to just keep your emails between the recipient and the addressee these days.&lt;/p&gt;

&lt;p&gt;Even if you personally do not use GMail, Google can (technically) still profile you because a huge chunk of  people you communicate with send from GMail and receive and store your emails there.&lt;/p&gt;

&lt;p&gt;Nearly all email that is sent also passes spam filters before delivery. Google bought the &lt;a href=&quot;http://www.google.com/intl/en/press/pressrel/postini_20070709.html&quot; title=&quot;Google Press Release about the Postini acquisition&quot;&gt;Postini&lt;/a&gt; spam filter in 2007. That anti-spam service is used by many enterprises and even city governments, see &lt;a href=&quot;http://www.google.com/postini/customers.html&quot; title=&quot;Google Postini customer testimonials&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;So time to consider (unencrypted) email as what it has always been: The digital equivalent of a postcard.&lt;br /&gt;
Just now Google has become the postmen. All of them, every second shift. You should hope they&#039;re not nosey. Or send letters.&lt;/p&gt;

&lt;h3&gt;Update:&lt;/h3&gt;

&lt;p&gt;11.05.2014: Benjamin Mako Hill has written a blog entry &lt;a href=&quot;http://mako.cc/copyrighteous/google-has-most-of-my-email-because-it-has-all-of-yours&quot; title=&quot;Benjamin Mako Hill&#039;s blog post&quot;&gt;Google Has Most of My Email Because It Has All of Yours&lt;/a&gt; doing analysis for his own email box. He found a third of his inbox emails come from Google and - as he doesn&#039;t usually reply to newsletters and the like - more than half of his own email replies (57% in 2013) end up at GMail. He published his code in case you want to do the analysis on our own email.&lt;/p&gt;
 
    </content:encoded>

    <pubDate>Thu, 28 May 2009 21:55:00 +0000</pubDate>
    <guid isPermaLink="false">https://daniel-lange.com/archives/46-guid.html</guid>
    <category>email</category>
<category>gmail</category>
<category>google</category>
<category>monopoly</category>
<category>privacy</category>
<category>security</category>
<category>updated</category>

</item>

</channel>
</rss>
