{"id":9275,"date":"2019-02-07T22:17:53","date_gmt":"2019-02-07T22:17:53","guid":{"rendered":"https:\/\/www.appservgrid.com\/paw92\/?p=9275"},"modified":"2019-02-10T07:04:04","modified_gmt":"2019-02-10T07:04:04","slug":"disk-encryption-for-low-end-hardware","status":"publish","type":"post","link":"https:\/\/www.appservgrid.com\/paw92\/index.php\/2019\/02\/07\/disk-encryption-for-low-end-hardware\/","title":{"rendered":"Disk Encryption for Low-End Hardware"},"content":{"rendered":"<p>Eric Biggers and Paul Crowley were unhappy with the disk encryption<br \/>\noptions available for Android on low-end phones and watches. For<br \/>\nthem, it was an ethical issue. Eric said:<\/p>\n<blockquote><p>We believe encryption is<br \/>\nfor everyone, not just those who can afford it. And while it&#8217;s<br \/>\nunknown how long CPUs without AES support will be around, there<br \/>\nwill likely always be a &#8220;low end&#8221;; and in any case, it&#8217;s immensely<br \/>\nvaluable to provide a software-optimized cipher that doesn&#8217;t depend<br \/>\non hardware support. Lack of hardware support should not be an<br \/>\nexcuse for no encryption.<\/p><\/blockquote>\n<p>Unfortunately, they were not able to find any existing encryption<br \/>\nalgorithm that was both fast and secure, and that would work with existing<br \/>\nLinux kernel infrastructure. They, therefore, designed the Adiantum<br \/>\nencryption mode, which <a href=\"https:\/\/eprint.iacr.org\/2018\/720.pdf\">they described in a light, easy-to-read and<br \/>\ncompletely non-mathematical way<\/a>.<\/p>\n<p>Essentially, Adiantum is not a new form of encryption; it relies<br \/>\non the ChaCha stream cipher developed by D. J. Bernstein in 2008.<br \/>\nAs Eric put it, &#8220;Adiantum is a construction, not a primitive. Its<br \/>\nsecurity is reducible to that of XChaCha12 and AES-256, subject to<br \/>\na security bound; the proof is in Section 5 of our paper. Therefore,<br \/>\none need not &#8216;trust&#8217; Adiantum; they only need trust XChaCha12 and<br \/>\nAES-256.&#8221;<\/p>\n<p>Eric reported that Adiantum offered a 20% speed improvement over<br \/>\nhis and Paul&#8217;s earlier HPolyC encryption mode, and it offered a very<br \/>\nslight improvement in actual security.<\/p>\n<p>Eric posted some patches, adding Adiantum to the Linux kernel&#8217;s<br \/>\ncrypto API. He remarked, &#8220;Some of these patches conflict with the<br \/>\nnew &#8216;Zinc&#8217; crypto library. But I don&#8217;t know when Zinc will be<br \/>\nmerged, so for now, I&#8217;ve continued to base this patchset on the<br \/>\ncurrent &#8216;cryptodev&#8217;.&#8221;<\/p>\n<p>Jason A. Donenfeld&#8217;s Zinc (&#8220;Zinc Is Not crypto\/&#8221;) is a front-runner<br \/>\nto replace the existing kernel crypto API, and it&#8217;s more simple and<br \/>\nlow-level than that API, offering a less terrifying coding experience.<\/p>\n<p>Jason replied to Eric&#8217;s initial announcement. He was very happy to<br \/>\nsee such a good disk encryption alternative for low-end hardware,<br \/>\nbut he asked Eric and Paul to hold off on trying to merge their<br \/>\npatches until they could rework them to use the new Zinc security<br \/>\ninfrastructure. He said, &#8220;In fact, if you already want to build it<br \/>\non top of Zinc, I&#8217;m happy to work with you on that in a shared repo<br \/>\nor similar.&#8221;<\/p>\n<p>He also suggested that Eric and Paul send their paper through various<br \/>\nacademic circles to catch any unanticipated problems with their<br \/>\nencryption system.<\/p>\n<p>But Paul replied:<\/p>\n<blockquote><p>Unlike a new primitive whose strength can only<br \/>\nbe known through attempts at cryptanalysis, Adiantum is a construction<br \/>\nbased on well-understood and trusted primitives; it is secure if<br \/>\nthe proof accompanying it is correct. Given that (outside competitions<br \/>\nor standardization efforts) no-one ever issues public statements<br \/>\nthat they think algorithms or proofs are good, what I&#8217;m expecting<br \/>\nfrom academia is silence \ud83d\ude42 The most we could hope for would be<br \/>\ngetting the paper accepted at a conference, and we&#8217;re pursuing that<br \/>\nbut there&#8217;s a good chance that won&#8217;t happen simply because it&#8217;s not<br \/>\nvery novel. It basically takes existing ideas and applies them using<br \/>\na stream cipher instead of a block cipher, and a faster hashing<br \/>\nmode; it&#8217;s also a small update from HPolyC. I&#8217;ve had some private<br \/>\nfeedback that the proof seems correct, and that&#8217;s all I&#8217;m expecting<br \/>\nto get.<\/p><\/blockquote>\n<p>Eric also replied, regarding Zinc integration:<\/p>\n<blockquote><p>For now<br \/>\nI&#8217;m hesitant to completely abandon the current approach and bet the<br \/>\nfarm on Zinc. Zinc has a large scope and various controversies<br \/>\nthat haven&#8217;t yet been fully resolved to everyone&#8217;s satisfaction,<br \/>\nincluding unclear licenses on some of the essential assembly files.<br \/>\nIt&#8217;s not appropriate to grind kernel crypto development to a halt<br \/>\nwhile everyone waits for Zinc.<\/p><\/blockquote>\n<p>He added that if Zinc is ready, he&#8217;d be happy to use it. He just<br \/>\nwasn&#8217;t sure whether it was.<\/p>\n<p>However, in spite of the uncertainty, Eric later said, &#8220;I started<br \/>\na branch based on Zinc:<br \/>\n<a href=\"https:\/\/git.kernel.org\/pub\/scm\/linux\/kernel\/git\/ebiggers\/linux.git\">https:\/\/git.kernel.org\/pub\/scm\/linux\/kernel\/git\/ebiggers\/linux.git<\/a>, branch<br \/>\n&#8216;adiantum-zinc&#8217;.&#8221;<\/p>\n<p>He listed the work he&#8217;d done so far and the work that remained to<br \/>\nbe done. But regarding Zinc&#8217;s remaining non-technical issues, he said:<\/p>\n<blockquote><p>Both<br \/>\nmyself and others have expressed concerns about these issues<br \/>\npreviously too, yet they remain unaddressed nor is there a documentation<br \/>\nfile explaining things. So please understand that until it&#8217;s clear<br \/>\nthat Zinc is ready, I still have to have Adiantum ready to go without<br \/>\nZinc, just in case.<\/p><\/blockquote>\n<p>Jason was happy to see the Zinc-based repository and promised to<br \/>\nlook it over. He also promised to add a documentation file covering<br \/>\nmany of Eric&#8217;s concerns before posting another series of Zinc<br \/>\npatches. And as far as Eric and Paul being ready to go without Zinc<br \/>\nintegration, he added, &#8220;I do really appreciate you taking the time,<br \/>\nthough, to try this out with Zinc as well. Thanks for that.&#8221;<\/p>\n<p>Meanwhile, Herbert Xu accepted Eric and Paul&#8217;s original patch-set,<br \/>\nso there may be a bit of friendly shuffling as both Zinc and Adiantum<br \/>\nprogress.<\/p>\n<p>It&#8217;s nice to see this sort of attention being given to low-end<br \/>\nhardware. But, it&#8217;s nothing new. The entire Linux kernel is supposed<br \/>\nto be able to run on absolutely everything\u2014or at least everything<br \/>\nthat&#8217;s still in use in the world. I don&#8217;t think there are too many<br \/>\nactual 386 systems in use anymore, but for real hardware in the<br \/>\nreal world, pretty much all of it should be able to run a fully<br \/>\nfeatured Linux OS.<\/p>\n<p><em>Note: if you&#8217;re mentioned above and want to post a response above the comment section, send a message with your response text to ljeditor@linuxjournal.com.<\/em><\/p>\n<p><a href=\"https:\/\/www.linuxjournal.com\/content\/disk-encryption-low-end-hardware\" target=\"_blank\" rel=\"noopener\">Source<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Eric Biggers and Paul Crowley were unhappy with the disk encryption options available for Android on low-end phones and watches. For them, it was an ethical issue. Eric said: We believe encryption is for everyone, not just those who can afford it. And while it&#8217;s unknown how long CPUs without AES support will be around, &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/www.appservgrid.com\/paw92\/index.php\/2019\/02\/07\/disk-encryption-for-low-end-hardware\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Disk Encryption for Low-End Hardware&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-9275","post","type-post","status-publish","format-standard","hentry","category-linux"],"_links":{"self":[{"href":"https:\/\/www.appservgrid.com\/paw92\/index.php\/wp-json\/wp\/v2\/posts\/9275","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.appservgrid.com\/paw92\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.appservgrid.com\/paw92\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.appservgrid.com\/paw92\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.appservgrid.com\/paw92\/index.php\/wp-json\/wp\/v2\/comments?post=9275"}],"version-history":[{"count":1,"href":"https:\/\/www.appservgrid.com\/paw92\/index.php\/wp-json\/wp\/v2\/posts\/9275\/revisions"}],"predecessor-version":[{"id":9495,"href":"https:\/\/www.appservgrid.com\/paw92\/index.php\/wp-json\/wp\/v2\/posts\/9275\/revisions\/9495"}],"wp:attachment":[{"href":"https:\/\/www.appservgrid.com\/paw92\/index.php\/wp-json\/wp\/v2\/media?parent=9275"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.appservgrid.com\/paw92\/index.php\/wp-json\/wp\/v2\/categories?post=9275"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.appservgrid.com\/paw92\/index.php\/wp-json\/wp\/v2\/tags?post=9275"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}