<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:og="http://ogp.me/ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:schema="http://schema.org/" xmlns:sioc="http://rdfs.org/sioc/ns#" xmlns:sioct="http://rdfs.org/sioc/types#" xmlns:skos="http://www.w3.org/2004/02/skos/core#" xmlns:xsd="http://www.w3.org/2001/XMLSchema#" version="2.0" xml:base="https://www.linuxjournal.com/">
  <channel>
    <title>Security</title>
    <link>https://www.linuxjournal.com/</link>
    <description/>
    <language>en</language>
    
    <item>
  <title>Shrinking Linux Attack Surfaces</title>
  <link>https://www.linuxjournal.com/content/shrinking-linux-attack-surfaces</link>
  <description>  &lt;div data-history-node-id="1340684" class="layout layout--onecol"&gt;
    &lt;div class="layout__region layout__region--content"&gt;
      
            &lt;div class="field field--name-node-author field--type-ds field--label-hidden field--item"&gt;by &lt;a title="View user profile." href="https://www.linuxjournal.com/users/zack-brown" lang="" about="https://www.linuxjournal.com/users/zack-brown" typeof="schema:Person" property="schema:name" datatype="" xml:lang=""&gt;Zack Brown&lt;/a&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"&gt;&lt;p&gt;
Often, a kernel developer will try to reduce the size of an attack surface against
Linux, even if it can't be closed entirely. It's generally a toss-up whether such a
patch makes it into the kernel. &lt;strong&gt;Linus Torvalds&lt;/strong&gt; always prefers security patches that
really close a hole, rather than just give attackers a slightly harder time of it.
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;Matthew Garrett&lt;/strong&gt; recognized that userspace applications might have secret data that
might be sitting in RAM at any given time, and that those applications might want to
wipe that data clean so no one could look at it.
&lt;/p&gt;

&lt;p&gt;
There were various ways to do this already in the kernel, as Matthew pointed out. An
application could use &lt;code&gt;mlock()&lt;/code&gt; to prevent its memory contents from being pushed into
swap, where it might be read more easily by attackers. An application also could use
&lt;code&gt;atexit()&lt;/code&gt; to cause its memory to be thoroughly overwritten when the application exited,
thus leaving no secret data in the general pool of available RAM.
&lt;/p&gt;

&lt;p&gt;
The problem, Matthew pointed out, came if an attacker was able to reboot the system at
a critical moment—say, before the user's data could be safely overwritten. If
attackers then booted into a different OS, they might be able to examine the data still
stored in RAM, left over from the previously running Linux system.
&lt;/p&gt;

&lt;p&gt;
As Matthew also noted, the existing way to prevent even that was to tell the
&lt;strong&gt;UEFI&lt;/strong&gt; firmware to wipe system memory before booting to another OS, but this would
dramatically increase the amount of time it took to reboot. And if the good guys had
won out over the attackers, forcing them to wait a long time for a reboot could be
considered a denial of service attack—or at least downright annoying.
&lt;/p&gt;

&lt;p&gt;
Ideally, Matthew said, if the attackers were only able to induce a clean
shutdown—not
simply a cold boot—then there needed to be a way to tell Linux to scrub all data out
of RAM, so there would be no further need for UEFI to handle it, and thus no need for a
very long delay during reboot.
&lt;/p&gt;

&lt;p&gt;
Matthew explained the reasoning behind his patch. He said:
&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;
Unfortunately, if an
application exits uncleanly, its secrets may still be present in RAM. This can't be
easily fixed in userland (eg, if the OOM killer decides to kill a process holding
secrets, we're not going to be able to avoid that), so this patch adds a new flag to
madvise() to allow userland to request that the kernel clear the covered pages whenever
the page reference count hits zero. Since vm_flags is already full on 32-bit, it will
only work on 64-bit systems.
&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;
&lt;strong&gt;Matthew Wilcox&lt;/strong&gt; liked this plan and offered some technical suggestions for Matthew G's
patch, and Matthew G posted an updated version in response.
&lt;/p&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-node-link field--type-ds field--label-hidden field--item"&gt;  &lt;a href="https://www.linuxjournal.com/content/shrinking-linux-attack-surfaces" hreflang="en"&gt;Go to Full Article&lt;/a&gt;
&lt;/div&gt;
      
    &lt;/div&gt;
  &lt;/div&gt;

</description>
  <pubDate>Thu, 18 Jul 2019 11:00:00 +0000</pubDate>
    <dc:creator>Zack Brown</dc:creator>
    <guid isPermaLink="false">1340684 at https://www.linuxjournal.com</guid>
    </item>
<item>
  <title>When Choosing Your Commercial Linux, Choose Wisely!</title>
  <link>https://www.linuxjournal.com/content/when-choosing-your-commercial-linux-choose-wisely</link>
  <description>  &lt;div data-history-node-id="1340737" class="layout layout--onecol"&gt;
    &lt;div class="layout__region layout__region--content"&gt;
      
            &lt;div class="field field--name-node-author field--type-ds field--label-hidden field--item"&gt;by &lt;a title="View user profile." href="https://www.linuxjournal.com/users/vince-calandra" lang="" about="https://www.linuxjournal.com/users/vince-calandra" typeof="schema:Person" property="schema:name" datatype="" xml:lang=""&gt;Vince Calandra&lt;/a&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"&gt;&lt;p&gt;“Linux is Linux is Linux,” is a direct quote I heard in a meeting I had recently with a major multi-national, critical-infrastructure company. Surprisingly and correctly, there was one intelligent and brave engineering executive who replied to this statement, made by one of his team members, with a resounding, “That’s not true.” Let’s be clear, selecting a commercial Linux is not like selecting corn flakes. This is especially true when you are targeting embedded systems. You must be considering key questions regarding the supplier of the distribution, the criticality of the target application, security and life-cycle support for your product.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Choose Wisely&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;There is a wonderful scene in the movie &lt;em&gt;Indiana Jones and the Last Crusade&lt;/em&gt; when our hero, Indiana, must select the true Holy Grail. Set before him is a multitude of cups ranging from opulent, bejeweled challises to simple clay drinking cups. If you have seen the movie, Indiana reasons out the best choice, and it was a life or death selection. The knight who had been guarding the challises for centuries famously says, “You chose… wisely.” Why bring up this iconic scene? When you are selecting a commercial Linux distribution, you have a multitude of choices all bejeweled with wonderful marketing. The bottom line is that you want to save dollars that you would have otherwise spent on a DIY-Linux approach and ensure the commercial Linux selected fits your particular application. Here are some questions that you will need to keep in mind:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;
	&lt;p&gt;Is this for an IT application?&lt;/p&gt;
	&lt;/li&gt;
	&lt;li&gt;
	&lt;p&gt;Is this for an OT (Operational Technology) application?&lt;/p&gt;
	&lt;/li&gt;
	&lt;li&gt;
	&lt;p&gt;How long will this system be in the field?&lt;/p&gt;
	&lt;/li&gt;
	&lt;li&gt;
	&lt;p&gt;What processes and procedures are used by my supplier to cover security vulnerabilities?&lt;/p&gt;
	&lt;/li&gt;
	&lt;li&gt;
	&lt;p&gt;Can my supplier integrate in other Linux packages that support functionality I need going forward?&lt;/p&gt;
	&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;This is the short list. Other elements to keep in mind are the specific distribution’s origin and the Open Source community upon which it is based. How important is that specific Linux supplier with regard to the Open Source community upon which the distribution is based? These elements need to be part of the thought process.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I’ll Let My Silicon Choose&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-node-link field--type-ds field--label-hidden field--item"&gt;  &lt;a href="https://www.linuxjournal.com/content/when-choosing-your-commercial-linux-choose-wisely" hreflang="en"&gt;Go to Full Article&lt;/a&gt;
&lt;/div&gt;
      
    &lt;/div&gt;
  &lt;/div&gt;

</description>
  <pubDate>Wed, 17 Jul 2019 12:00:00 +0000</pubDate>
    <dc:creator>Vince Calandra</dc:creator>
    <guid isPermaLink="false">1340737 at https://www.linuxjournal.com</guid>
    </item>
<item>
  <title>Address Space Isolation and the Linux Kernel</title>
  <link>https://www.linuxjournal.com/content/address-space-isolation-and-linux-kernel</link>
  <description>  &lt;div data-history-node-id="1340685" class="layout layout--onecol"&gt;
    &lt;div class="layout__region layout__region--content"&gt;
      
            &lt;div class="field field--name-node-author field--type-ds field--label-hidden field--item"&gt;by &lt;a title="View user profile." href="https://www.linuxjournal.com/users/zack-brown" lang="" about="https://www.linuxjournal.com/users/zack-brown" typeof="schema:Person" property="schema:name" datatype="" xml:lang=""&gt;Zack Brown&lt;/a&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"&gt;&lt;p&gt;
&lt;strong&gt;Mike Rapoport&lt;/strong&gt; from &lt;strong&gt;IBM&lt;/strong&gt; launched a bid to implement address space isolation in the Linux
kernel. Address space isolation emanates from the idea of virtual memory—where the
system maps all its hardware devices' memory addresses into a clean virtual space so
that they all appear to be one smooth range of available RAM. A system that implements
virtual memory also can create isolated address spaces that are available only to part
of the system or to certain processes.
&lt;/p&gt;

&lt;p&gt;
The idea, as Mike expressed it, is that if hostile users find themselves in an
isolated address space, even if they find bugs in the kernel that might be exploited to
gain control of the system, the system they would gain control over would be just that
tiny area of RAM to which they had access. So they might be able to mess up their own local
user, but not any other users on the system, nor would they be able to gain access to root level
infrastructure.
&lt;/p&gt;

&lt;p&gt;
In fact, Mike posted patches to implement an element of this idea, called &lt;strong&gt;System Call
Isolation&lt;/strong&gt; (SCI). This would cause system calls to each run in their own isolated
address space. So if, somehow, an attacker were able to modify the return values stored
in the stack, there would be no useful location to which to return.
&lt;/p&gt;

&lt;p&gt;
His approach was relatively straightforward. The kernel already maintains a "symbol
table" with the addresses of all its functions. Mike's patches would make sure that any
return addresses that popped off the stack corresponded to entries in the symbol table. And
since "attacks are all about jumping to gadget code which is effectively in the middle
of real functions, the jumps they induce are to code that doesn't have an external
symbol, so it should mostly detect when they happen."
&lt;/p&gt;

&lt;p&gt;
The problem, he acknowledged, was that implementing this would have a speed hit. He saw
no way to perform and enforce these checks without slowing down the kernel. For that
reason, Mike said, "it should only be activated for processes or containers we know
should be untrusted."
&lt;/p&gt;

&lt;p&gt;
There was not much enthusiasm for this patch. As &lt;strong&gt;Jiri Kosina&lt;/strong&gt; pointed out, Mike's code
was incompatible with other security projects like retpolines, which tries to prevent
certain types of data leaks falling into an attacker's hands.
&lt;/p&gt;

&lt;p&gt;
There was no real discussion and no interest was expressed in the patch. The
combination of the speed hit, the conflict with existing security projects, and the
fact that it tried to secure against only hypothetical security holes and not actual
flaws in the system, probably combined to make this patch set less interesting to
kernel developers.
&lt;/p&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-node-link field--type-ds field--label-hidden field--item"&gt;  &lt;a href="https://www.linuxjournal.com/content/address-space-isolation-and-linux-kernel" hreflang="en"&gt;Go to Full Article&lt;/a&gt;
&lt;/div&gt;
      
    &lt;/div&gt;
  &lt;/div&gt;

</description>
  <pubDate>Wed, 10 Jul 2019 11:30:00 +0000</pubDate>
    <dc:creator>Zack Brown</dc:creator>
    <guid isPermaLink="false">1340685 at https://www.linuxjournal.com</guid>
    </item>
<item>
  <title>Understanding Public Key Infrastructure and X.509 Certificates</title>
  <link>https://www.linuxjournal.com/content/understanding-public-key-infrastructure-and-x509-certificates</link>
  <description>  &lt;div data-history-node-id="1340425" class="layout layout--onecol"&gt;
    &lt;div class="layout__region layout__region--content"&gt;
      
            &lt;div class="field field--name-node-author field--type-ds field--label-hidden field--item"&gt;by &lt;a title="View user profile." href="https://www.linuxjournal.com/users/jeff-woods" lang="" about="https://www.linuxjournal.com/users/jeff-woods" typeof="schema:Person" property="schema:name" datatype="" xml:lang=""&gt;Jeff Woods&lt;/a&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"&gt;&lt;p&gt;&lt;em&gt;An introduction to PKI, TLS and X.509, from the ground up.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;
Public Key Infrastructure (PKI) provides a framework of encryption and data
communications standards used to secure communications over public networks.
At the heart of PKI is a trust built among clients, servers and certificate
authorities (CAs). This trust is established and propagated through the
generation, exchange and verification of certificates.
&lt;/p&gt;

&lt;p&gt;
This article focuses on understanding the certificates used to establish
trust between clients and servers. These certificates are the most visible
part of the PKI (especially when things break!), so understanding them will
help to make sense of—and correct—many common errors.
&lt;/p&gt;

&lt;p&gt;
As a brief introduction, imagine you want to connect to your bank to
schedule a bill payment, but you want to ensure that your communication is secure.
"Secure" in this context means not only that the content remains
confidential, but also that the server with which you're communicating actually
belongs to your bank.
&lt;/p&gt;

&lt;p&gt;
Without protecting your information in transit, someone located between you
and your bank could observe the credentials you use to log in to the server,
your account information, or perhaps the parties to which your payments are
being sent. Without being able to confirm the identity of the server, you
might be surprised to learn that you are talking to an impostor (who now has
access to your account information).
&lt;/p&gt;

&lt;p&gt;
Transport layer security (TLS) is a suite of protocols used to negotiate a
secured connection using PKI. TLS builds on the SSL standards of the late
1990s, and using it to secure client to server connections on the internet has
become ubiquitous. Unfortunately, it remains one of the least understood
technologies, with errors (often resulting from an incorrectly configured
website) becoming a regular part of daily life. Because those errors are
inconvenient, users regularly click through them without a second thought.
&lt;/p&gt;

&lt;p&gt;
Understanding the X.509 certificate, which is fully defined in RFC 5280, is
key to making sense of those errors. Unfortunately, these certificates have a
well deserved reputation of being opaque and difficult to manage. With the
multitude of formats used to encode them, this reputation is rightly deserved.
&lt;/p&gt;

&lt;p&gt;
An X.509 certificate is a structured, binary record. This record consists of
several key and value pairs. Keys represent field names, where values may be
simple types (numbers, strings) to more complex structures (lists). The
encoding from the key/value pairs to the structured binary record is done
using a standard known as ASN.1 (Abstract Syntax Notation, One), which is a
platform-agnostic encoding format.
&lt;/p&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-node-link field--type-ds field--label-hidden field--item"&gt;  &lt;a href="https://www.linuxjournal.com/content/understanding-public-key-infrastructure-and-x509-certificates" hreflang="en"&gt;Go to Full Article&lt;/a&gt;
&lt;/div&gt;
      
    &lt;/div&gt;
  &lt;/div&gt;

</description>
  <pubDate>Fri, 21 Jun 2019 12:30:00 +0000</pubDate>
    <dc:creator>Jeff Woods</dc:creator>
    <guid isPermaLink="false">1340425 at https://www.linuxjournal.com</guid>
    </item>
<item>
  <title>Why Smart Cards Are Smart</title>
  <link>https://www.linuxjournal.com/content/why-smart-cards-are-smart</link>
  <description>  &lt;div data-history-node-id="1340643" class="layout layout--onecol"&gt;
    &lt;div class="layout__region layout__region--content"&gt;
      
            &lt;div class="field field--name-node-author field--type-ds field--label-hidden field--item"&gt;by &lt;a title="View user profile." href="https://www.linuxjournal.com/users/kyle-rankin" lang="" about="https://www.linuxjournal.com/users/kyle-rankin" typeof="schema:Person" property="schema:name" datatype="" xml:lang=""&gt;Kyle Rankin&lt;/a&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"&gt;&lt;p&gt;&lt;em&gt;If you use GPG keys, learn about the benefits to storing them on a smart card.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;
GPG has been around for a long time and is used to secure everything
from your email to your software. If you want to send an email to
someone and be sure that no one else can read or modify it, GPG
signing and encryption are the main method you'd use. Distributions use
GPG to sign their packages, so you can feel confident that the ones you
download and install from a package mirror have not been modified from
their original state. Developers in many organizations follow the best
practice of GPG-signing any code they commit to a repository. By signing
their commits, other people can confirm that the changes that claim to
come from a particular developer truly did. Web-based Git front ends
like GitHub and GitLab let users upload their GPG public keys, so when
they do commit signed code, the interface can display to everyone else
that it has been verified.
&lt;/p&gt;

&lt;p&gt;
Yet, all of the security ultimately comes down to the security of
your private key. Once others have access to your private key, they
can perform all of the same GPG tasks as though they were you. This
is why you are prompted to enter a passphrase when you first set up
a GPG key. The idea is that if attackers are able to copy your key,
they still would need to guess your password before they could use the
key. For all of the importance of GPG key security, many people still
just leave their keys in ~/.gnupg directories on their filesystem and
copy that directory over to any systems where they need to use GPG.
&lt;/p&gt;

&lt;p&gt;
There is a better way. With OpenPGP smart cards, you can store your keys on
a secure device that's protected with a PIN and not only store your keys
more securely, but also use them more conveniently. Although some laptops come
with integrated smart card readers, most don't. Thankfully, these devices
are available as part of multi-function USB security token devices from
a number of different vendors, and &lt;em&gt;Linux Journal&lt;/em&gt; has published reviews of such
products in the past. In this article, I discuss
all the reasons OpenPGP smart cards are a better choice for storing
your keys than your local filesystem.
&lt;/p&gt;

&lt;span class="h3-replacement"&gt;
Reason 1: Tamper-proof Key Storage&lt;/span&gt;

&lt;p&gt;
One of the main benefits of a smart card is that it stores your GPG keys
securely. When you store your keys on a filesystem, anyone who can access
that filesystem can copy off the keys. On a smart card, once keys go in,
they never leave, neither accidentally nor from tampering. The smart card
chips themselves are designed to be tamper-proof and resist attempts to
extract key data even when someone has physical access. By putting keys
on a smart card, you can have a reasonable assurance that your keys are
safe, even from a determined attacker.
&lt;/p&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-node-link field--type-ds field--label-hidden field--item"&gt;  &lt;a href="https://www.linuxjournal.com/content/why-smart-cards-are-smart" hreflang="en"&gt;Go to Full Article&lt;/a&gt;
&lt;/div&gt;
      
    &lt;/div&gt;
  &lt;/div&gt;

</description>
  <pubDate>Wed, 12 Jun 2019 11:30:00 +0000</pubDate>
    <dc:creator>Kyle Rankin</dc:creator>
    <guid isPermaLink="false">1340643 at https://www.linuxjournal.com</guid>
    </item>
<item>
  <title>Securing the Kernel Stack</title>
  <link>https://www.linuxjournal.com/content/securing-kernel-stack</link>
  <description>  &lt;div data-history-node-id="1340616" class="layout layout--onecol"&gt;
    &lt;div class="layout__region layout__region--content"&gt;
      
            &lt;div class="field field--name-node-author field--type-ds field--label-hidden field--item"&gt;by &lt;a title="View user profile." href="https://www.linuxjournal.com/users/zack-brown" lang="" about="https://www.linuxjournal.com/users/zack-brown" typeof="schema:Person" property="schema:name" datatype="" xml:lang=""&gt;Zack Brown&lt;/a&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"&gt;&lt;p&gt;
The Linux kernel stack is a tempting target for attack. This is because the
kernel needs to keep track of where it is. If a function gets called, which
then calls another, which then calls another, the kernel needs to remember
the order they were all called, so that each function can return to the
function that called it. To do that, the kernel keeps a "stack" of values
representing the history of its current context.
&lt;/p&gt;

&lt;p&gt;
If an attacker manages to trick the kernel into thinking it should transfer
execution to the wrong location, it's possible the attacker could run
arbitrary code with root-level privileges. Once that happens, the attacker
has won, and the computer is fully compromised. And, one way to trick the
kernel this way is to modify the stack somehow, or make predictions about
the stack, or take over programs that are located where the stack is
pointing.
&lt;/p&gt;

&lt;p&gt;
Protecting the kernel stack is crucial, and it's the subject of a lot of
ongoing work. There are many approaches to making it difficult for
attackers to do this or that little thing that would expose the kernel to
being compromised.
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;Elena Reshetova&lt;/strong&gt; is working on one such approach. She wants to randomize the
kernel stack offset after every system call. Essentially, she wants to
obscure the trail left by the stack, so attackers can't follow it or
predict it. And, she recently posted some patches to accomplish this.
&lt;/p&gt;

&lt;p&gt;
At the time of her post, no specific attacks were known to take
advantage of the lack of randomness in the stack. So Elena was not trying
to fix any particular security hole. Rather, she said, she wanted to
eliminate any possible vector of attack that depended on knowing the order
and locations of stack elements.
&lt;/p&gt;

&lt;p&gt;
This is often how it goes—it's fine to cover up holes as they appear,
but even better is to cover a whole region so that no further holes can be
dug.
&lt;/p&gt;

&lt;p&gt;
There was a lot of interest in Elena's patch, and various developers made
suggestions about how much randomness she would need, and where she should
find entropy for that randomness, and so on.
&lt;/p&gt;

&lt;p&gt;
In general, &lt;strong&gt;Linus Torvalds&lt;/strong&gt; prefers security patches to fix specific
security problems. He's less enthusiastic about adding security to an area
where there are no exploits. But in this case, he may feel that Elena's
patch adds a level of security that wasn't there before.
&lt;/p&gt;

&lt;p&gt;
Security is always such a nightmare. Often, a perfectly desirable feature
may have to be abandoned, not because it's not useful, but because it
creates an inherent insecurity. &lt;strong&gt;Microsoft&lt;/strong&gt;'s operating system and
applications often have suffered from making the wrong decisions in those
cases—choosing to implement a cool feature in spite of the fact that it
could not be done securely. Linux, on the other hand, and the other
open-source systems like &lt;strong&gt;FreeBSD&lt;/strong&gt;, never make that mistake.
&lt;/p&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-node-link field--type-ds field--label-hidden field--item"&gt;  &lt;a href="https://www.linuxjournal.com/content/securing-kernel-stack" hreflang="en"&gt;Go to Full Article&lt;/a&gt;
&lt;/div&gt;
      
    &lt;/div&gt;
  &lt;/div&gt;

</description>
  <pubDate>Tue, 11 Jun 2019 12:00:00 +0000</pubDate>
    <dc:creator>Zack Brown</dc:creator>
    <guid isPermaLink="false">1340616 at https://www.linuxjournal.com</guid>
    </item>
<item>
  <title>WebAuthn Web Authentication with YubiKey 5</title>
  <link>https://www.linuxjournal.com/content/webauthn-web-authentication-yubikey-5</link>
  <description>  &lt;div data-history-node-id="1340427" class="layout layout--onecol"&gt;
    &lt;div class="layout__region layout__region--content"&gt;
      
            &lt;div class="field field--name-node-author field--type-ds field--label-hidden field--item"&gt;by &lt;a title="View user profile." href="https://www.linuxjournal.com/users/todd-jacobs" lang="" about="https://www.linuxjournal.com/users/todd-jacobs" typeof="schema:Person" property="schema:name" datatype="" xml:lang=""&gt;Todd A. Jacobs&lt;/a&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"&gt;&lt;p&gt;&lt;em&gt;A look at the recently released YubiKey 5 hardware
authenticator series and how web authentication with the new
WebAuthn API leverages devices like the YubiKey for painless website
registration and strong user authentication.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;
I covered the YubiKey 4 in the May 2016 issue of &lt;em&gt;Linux Journal&lt;/em&gt;, and
the magazine has published a number of other articles on both YubiKeys
and other forms of multi-factor authentication since then.
Yubico recently has introduced the YubiKey 5 line of products. In addition to the
YubiKey's long-time support of multiple security protocols, the most
interesting feature is the product's new support for FIDO2 and WebAuthn.
&lt;/p&gt;

&lt;p&gt;
WebAuthn is an application programming interface (API) for web
authentication. It uses cryptographic "authenticators", such as a YubiKey
5 hardware token to authenticate users, in addition to (or even instead
of) a typical user name/password combination. WebAuthn is currently a
World Wide Web Consortium (W3C) candidate recommendation, and it's already
implemented by major browsers like Chrome and Firefox.
&lt;/p&gt;

&lt;p&gt;
This article provides an overview of the YubiKey 5 series, and then
goes into detail about how the WebAuthn API works. I also look at
how hardware tokens, such as the YubiKey 5 series, hide the complexity of
WebAuthn from users. My goal is to demonstrate how easy it is to use a
YubiKey to register and authenticate with a website without having to
worry about the underlying WebAuthn API.
&lt;/p&gt;

&lt;span class="h3-replacement"&gt;
About the YubiKey 5 Series&lt;/span&gt;

&lt;p&gt;
The YubiKey 5 series supports a broad range of two-factor and
multi-factor authentication protocols, including:
&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;
Challenge-response (HMAC-SHA1 and Yubico OTP).
&lt;/li&gt;

&lt;li&gt;
Client to Authenticator Protocol (CTAP).
&lt;/li&gt;

&lt;li&gt;
FIDO Universal 2nd-Factor authentication (U2F).
&lt;/li&gt;

&lt;li&gt;
FIDO2.
&lt;/li&gt;

&lt;li&gt;
Open Authorization, HMAC-Based One-Time Password (OATH-HOTP).
&lt;/li&gt;

&lt;li&gt;
Open Authorization, Time-Based One-Time Password (OATH-TOTP).
&lt;/li&gt;

&lt;li&gt;
OpenPGP.
&lt;/li&gt;

&lt;li&gt;
Personal Identity Verification (PIV).
&lt;/li&gt;

&lt;li&gt;
Web Authentication (WebAuthn).
&lt;/li&gt;

&lt;li&gt;
Yubico One-Time Password (OTP).
&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;
In addition, the entire YubiKey 5 series (with the exception of the
U2F/FIDO2-only Security Key model) now supports OpenPGP public key
cryptography with RSA key sizes up to 4096 bits. This is a notable bump
from the key sizes supported by some earlier models. Yubico's OpenPGP
support also includes an additional slot for an OpenPGP authentication
key for use within an SSH-compatible agent, such as GnuPG's
&lt;code&gt;gpg-agent&lt;/code&gt;.
&lt;/p&gt;

&lt;img src="https://www.linuxjournal.com/sites/default/files/styles/max_650x650/public/u%5Buid%5D/12568f1.jpg" width="650" height="434" alt="""" class="image-max_650x650" /&gt;&lt;p&gt;&lt;em&gt;Figure 1. YubiKey 5 Series&lt;/em&gt;&lt;/p&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-node-link field--type-ds field--label-hidden field--item"&gt;  &lt;a href="https://www.linuxjournal.com/content/webauthn-web-authentication-yubikey-5" hreflang="en"&gt;Go to Full Article&lt;/a&gt;
&lt;/div&gt;
      
    &lt;/div&gt;
  &lt;/div&gt;

</description>
  <pubDate>Tue, 21 May 2019 12:00:00 +0000</pubDate>
    <dc:creator>Todd A. Jacobs</dc:creator>
    <guid isPermaLink="false">1340427 at https://www.linuxjournal.com</guid>
    </item>
<item>
  <title>FOSS Project Spotlight: Bareos, a Cross-Network, Open-Source Backup Solution</title>
  <link>https://www.linuxjournal.com/content/foss-project-spotlight-bareos-cross-network-open-source-backup-solution</link>
  <description>  &lt;div data-history-node-id="1340600" class="layout layout--onecol"&gt;
    &lt;div class="layout__region layout__region--content"&gt;
      
            &lt;div class="field field--name-node-author field--type-ds field--label-hidden field--item"&gt;by &lt;a title="View user profile." href="https://www.linuxjournal.com/users/heike-jurzik-and-maik-aussendorf" lang="" about="https://www.linuxjournal.com/users/heike-jurzik-and-maik-aussendorf" typeof="schema:Person" property="schema:name" datatype="" content="Heike Jurzik and Maik Aussendorf" xml:lang=""&gt;Heike Jurzik a…&lt;/a&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"&gt;&lt;p&gt;
&lt;a href="https://www.bareos.org"&gt;Bareos&lt;/a&gt; (Backup Archiving Recovery Open
Sourced) is a cross-network, open-source
backup solution that preserves, archives and recovers data from all major
operating systems. The Bareos project started 2010 as a Bacula fork and is now
being developed under the AGPLv3 license.
&lt;/p&gt;

&lt;p&gt;
The client/server-based backup solution is actually a set of computer programs
(Figure 1) that communicate over the network: the Bareos Director (BD), one or
more Storage Dæmons (SD) and the File Dæmons (FD). Due to this modular
design, Bareos is scalable—from single computer systems (where all
components run on one machine) to large infrastructures with hundreds of
computers (even in different geographies).
&lt;/p&gt;

&lt;img src="https://www.linuxjournal.com/sites/default/files/u%5Buid%5D/12764f1.png" width="1000" height="1124" alt="""" /&gt;&lt;p&gt;
&lt;em&gt;Figure 1. A Typical Bareos Setup: Director (with Database), File Dæmon(s),
Storage Dæmon(s) and Backup Media&lt;/em&gt;
&lt;/p&gt;

&lt;p&gt;
The director is the central control unit for all other dæmons. It manages the
database (catalog), the connected clients, the file sets (they define which
data Bareos should back up), the configuration of optional plugins, before and
after jobs (programs to be executed before or after a backup job), the storage
and media pool, schedules and the backup jobs. Bareos Director runs as a
dæmon.
&lt;/p&gt;

&lt;p&gt;
The catalog maintains a record of all backup jobs, saved files and volumes
used. Current Bareos versions support PostgreSQL, MySQL and SQLite, with
PostgreSQL being the preferred database back end.
&lt;/p&gt;

&lt;p&gt;
The File Dæmon (FD) must be installed on every client machine. It is
responsible for the backup as well as the restore process. The FD receives the
director's instructions, executes them and transmits the data to the Bareos
Storage Dæmon. Bareos offers pre-packed file dæmons for many popular
operating systems, such as Linux, FreeBSD, AIX, HP-UX, Solaris, Windows and macOS.
Like the director, the FD runs as a dæmon in the background.
&lt;/p&gt;

&lt;p&gt;
The Storage Dæmon (SD) receives data from one or more File Dæmons (at the
director's request). It stores the data (together with the file attributes) on
the configured backup medium. Bareos supports various types of backup media, as
shown in Figure 1, including disks, tape drives and even cloud storage
solutions. During the restore process, the SD is responsible for sending the
correct data back to the FD(s). The Storage Dæmon runs as a dæmon on the
machine handling the backup device(s).
&lt;/p&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-node-link field--type-ds field--label-hidden field--item"&gt;  &lt;a href="https://www.linuxjournal.com/content/foss-project-spotlight-bareos-cross-network-open-source-backup-solution" hreflang="en"&gt;Go to Full Article&lt;/a&gt;
&lt;/div&gt;
      
    &lt;/div&gt;
  &lt;/div&gt;

</description>
  <pubDate>Fri, 17 May 2019 12:00:00 +0000</pubDate>
    <dc:creator>Heike Jurzik and Maik Aussendorf</dc:creator>
    <guid isPermaLink="false">1340600 at https://www.linuxjournal.com</guid>
    </item>
<item>
  <title>Signing Git Commits</title>
  <link>https://www.linuxjournal.com/content/signing-git-commits</link>
  <description>  &lt;div data-history-node-id="1340585" class="layout layout--onecol"&gt;
    &lt;div class="layout__region layout__region--content"&gt;
      
            &lt;div class="field field--name-node-author field--type-ds field--label-hidden field--item"&gt;by &lt;a title="View user profile." href="https://www.linuxjournal.com/users/kyle-rankin" lang="" about="https://www.linuxjournal.com/users/kyle-rankin" typeof="schema:Person" property="schema:name" datatype="" xml:lang=""&gt;Kyle Rankin&lt;/a&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"&gt;&lt;p&gt;&lt;em&gt;Protect your code commits from malicious changes by GPG-signing them.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;
Often when people talk about GPG, they focus on encryption—GPG's ability to
protect a file or message so that only someone who has the appropriate
private key can read it. Yet, one of the most important functions GPG offers
is &lt;em&gt;signing&lt;/em&gt;. Where encryption protects a file or message so that only the
intended recipient can decrypt and read it, GPG signing proves that the
message was sent by the sender (whomever has control over the private key used
to sign) and has not been altered in any way from what the sender wrote.
&lt;/p&gt;

&lt;p&gt;
Without GPG signing, you could receive encrypted email that only you could
open, but you wouldn't be able to prove that it was from the sender. But,
GPG signing has applications far beyond email. If you use a modern Linux
distribution, it uses GPG signatures on all of its packages, so you can be
sure that any software you install from the distribution hasn't been altered
to add malicious code after it was packaged. Some distributions even GPG-sign
their ISO install files as a stronger form of MD5sum or SHA256sum to verify
not only that the large ISO downloaded correctly (MD5 or SHA256 can do that),
but also that the particular ISO you are downloading from some random mirror
is the &lt;em&gt;same&lt;/em&gt; ISO that the distribution created. A mirror could change the
file and generate new MD5sums, and you may not notice, but it couldn't
generate valid GPG signatures, as that would require access to the
distribution's signing key.
&lt;/p&gt;

&lt;span class="h3-replacement"&gt;
Why Sign Git Commits&lt;/span&gt;

&lt;p&gt;
As useful as signing packages and ISOs is, an even more important use of GPG
signing is in signing Git commits. When you sign a Git commit, you can prove
that the code you submitted came from you and wasn't altered while you were
transferring it. You also can prove that you submitted the code and not
someone else.
&lt;/p&gt;

&lt;p&gt;
Being able to prove who wrote a snippet of code isn't so you know who to
blame for bugs so the person can't squirm out of it. Signing Git commits is
important because in this age of malicious code and back doors, it helps
protect you from an attacker who might otherwise inject malicious code into
your codebase. It also helps discourage untrustworthy developers from
adding their own back doors to the code, because once it's discovered, the bad
code will be traced to them.
&lt;/p&gt;

&lt;span class="h3-replacement"&gt;
How to Sign Git Commits&lt;/span&gt;

&lt;p&gt;
The simplest way to sign Git commits is by adding the &lt;code&gt;-S&lt;/code&gt; option
to the &lt;code&gt;git
commit&lt;/code&gt; command. First, figure out your GPG key ID with:

&lt;/p&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-node-link field--type-ds field--label-hidden field--item"&gt;  &lt;a href="https://www.linuxjournal.com/content/signing-git-commits" hreflang="en"&gt;Go to Full Article&lt;/a&gt;
&lt;/div&gt;
      
    &lt;/div&gt;
  &lt;/div&gt;

</description>
  <pubDate>Thu, 16 May 2019 12:00:00 +0000</pubDate>
    <dc:creator>Kyle Rankin</dc:creator>
    <guid isPermaLink="false">1340585 at https://www.linuxjournal.com</guid>
    </item>
<item>
  <title>Password Manager Roundup</title>
  <link>https://www.linuxjournal.com/content/password-manager-roundup</link>
  <description>  &lt;div data-history-node-id="1340417" class="layout layout--onecol"&gt;
    &lt;div class="layout__region layout__region--content"&gt;
      
            &lt;div class="field field--name-node-author field--type-ds field--label-hidden field--item"&gt;by &lt;a title="View user profile." href="https://www.linuxjournal.com/users/shawn-powers" lang="" about="https://www.linuxjournal.com/users/shawn-powers" typeof="schema:Person" property="schema:name" datatype="" xml:lang=""&gt;Shawn Powers&lt;/a&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"&gt;&lt;p&gt;&lt;em&gt;If you can remember all of your passwords, they're not good passwords.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I used to teach people how to create "good" passwords. Those passwords
needed to be lengthy, hard to guess and easy to remember. There were lots
of tricks to make your passwords better, and for years, that was enough.&lt;/p&gt;

&lt;p&gt;
That's not enough anymore.
&lt;/p&gt;

&lt;p&gt;
It seems that another data breach happens almost daily, exposing sensitive
information for millions of users, which means you need to have separate, secure
passwords for each site and service you use. If you use the same password
for &lt;em&gt;any&lt;/em&gt; two sites, you're making yourself vulnerable if any single
database gets compromised.
&lt;/p&gt;

&lt;p&gt;
There's a much bigger conversation to be had regarding the best way to
protect data. Is the "password" outdated? Should we have something better
by now? Granted, there is two-factor authentication, which is a great way
to help increase the security on accounts. But although passwords remain
the main method for protecting accounts and data, there needs to be a
better way to handle them—that's where password managers come into play.
&lt;/p&gt;

&lt;span class="h3-replacement"&gt;
The Best Password Manager&lt;/span&gt;

&lt;p&gt;
No, I'm not burying the lede by skipping all the reviews. As Doc Searls,
Katherine Druckman and myself discussed in &lt;a href="https://www.linuxjournal.com/podcast/episode-8-nostalgia-security-and-shawn"&gt;Episode 8 of the &lt;em&gt;Linux
Journal&lt;/em&gt;
Podcast&lt;/a&gt;, the best password manager is the one you &lt;em&gt;use&lt;/em&gt;. It may seem like a
cheesy thing to say, but it's a powerful truth. If it's more complicated
to use a password manager than it is to re-use the same set of passwords
on multiple sites, many people will just choose the easy way.
&lt;/p&gt;

&lt;p&gt;
Sure, some people are geeky enough to use a password manager
at any cost. They understand the value of privacy, understand security,
and they take their data very seriously. But for the vast majority of people,
the path of least resistance is the way to go. Heck, I'm guilty of that
myself in many cases. I have a Keurig coffee machine, not because the coffee
is better, but because it's more convenient. If you've ever eaten a
Hot Pocket instead of cooking a healthy meal, you can understand the
mindset that causes people to make poor password choices. If the goal is
having smart passwords, it needs to be easier to use smart passwords than
to type "password123" everywhere.
&lt;/p&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-node-link field--type-ds field--label-hidden field--item"&gt;  &lt;a href="https://www.linuxjournal.com/content/password-manager-roundup" hreflang="en"&gt;Go to Full Article&lt;/a&gt;
&lt;/div&gt;
      
    &lt;/div&gt;
  &lt;/div&gt;

</description>
  <pubDate>Fri, 03 May 2019 11:00:00 +0000</pubDate>
    <dc:creator>Shawn Powers</dc:creator>
    <guid isPermaLink="false">1340417 at https://www.linuxjournal.com</guid>
    </item>

  </channel>
</rss>
