<?xml version='1.0'?>
<!DOCTYPE rfc SYSTEM 'rfc2629.dtd'>
<rfc ipr="trust200902" docName="draft-hallambaker-mesh-app-ssh-01" category="info">
<?rfc toc="yes"?>  
<?rfc symrefs="yes"?>  
<?rfc sortrefs="yes"?>  
<?rfc compact="yes"?>  
<?rfc subcompact="no"?>  
<front>
<title abbrev="Mathematical Mesh: SSH Application">Mathematical Mesh: SSH Application</title>
<author fullname="Phillip Hallam-Baker" initials="P. M." surname="Hallam-Baker">
<organization>Comodo Group Inc.</organization>
<address>
<email>philliph@comodo.com</email>
</address>
</author>
<date day="18" month="August" year="2017"/>
<area/>
<workgroup/>
<abstract>
<t>
Mesh/SSH</t>
<t>
The use of the Mathematical Mesh to manage OpenSSH Keys is described.</t>
<t>
This document is also available online at <eref target="http://prismproof.org/Documents/draft-hallambaker-mesh-app-ssh.html">
http://prismproof.org/Documents/draft-hallambaker-mesh-app-ssh.html</eref>
.</t>
</abstract>
</front>
<middle>
<section title="Introduction" anchor="s-1">
<t>
The Secure Shell (SSH) transport layer protocol [!RFC4253] is widely used as a mechanism for securing access to remote hosts. In addition to providing a terminal connection to a remote host, SSH also supports file transfer and remote access (VPN) functionality. It is also used to provide remote procedure call (RPC) capabilities in applications such as Git.</t>
<t>
While SSH permits a high level of security to be achieved, achieving a high security configuration requires a considerable degree of attention to detail. Numerous ?how to? guides found on the Internet advise the user to engage in many unsafe practices. These include:</t>
<t>
Using a single private key for authentication for every machine to be used as a client.</t>
<t>
Emailing a copy of the authentication key to yourself to transfer it to a new machine. (Alternatively use of insecure FTP, copying the data to /temp, etc.)</t>
<t>
Of equal concern was the fact that none of the guides mentioned any form of maintenance activity such as deleting authentication keys for a decommissioned device or performing a rekey operation in the case that a device is compromised.</t>
<t>
Configuring SSH securely is a non-trivial task because SSH is the tool through which the administrator will be connecting to secure their system. This is a bootstrap problem: It is easy to solve the problem of SSH configuration once we have SSH configured for use. To enable SSH access to a </t>
<t>
The Mathematical Mesh provides an infrastructure for single touch administration of all the devices a user has connected to their Mesh profile. Managing SSH configuration with the Mesh guides the user towards use of a maximally secure configuration. Once the configuration is achieved, it is maintained automatically.</t>
</section>
<section title="Definitions" anchor="s-2">
<t>
This section presents the related specifications and standard, the terms that are used as terms of art within the documents and the terms used as requirements language.</t>
<section title="Requirements Language" anchor="s-2_1">
<t>
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in <xref target="RFC2119">
[RFC2119]</xref>
.</t>
</section>
<section title="Related Specifications" anchor="s-2_2">
<t>
The related specifications are described in the Mesh Architecture specification <xref target="draft-hallambaker-mesh-architecture">
[draft-hallambaker-mesh-architecture]</xref>
</t>
</section>
<section title="Defined Terms" anchor="s-2_3">
<t>
No terms of art are defined.</t>
</section>
<section title="Implementation Status" anchor="s-2_4">
<t>
The implementation status of the reference code base is described in the companion document <xref target="draft-hallambaker-mesh-developer">
[draft-hallambaker-mesh-developer]</xref>
.</t>
</section>
</section>
<section title="User Experience" anchor="s-3">
<t>
Alice is a user of three machines, X, Y and Z. Machines X and Y are configured with monitors and keyboards enabling their use as an SSH client. Machine Z is to be configured as a headless machine (no monitor). When finished, Alice wants to be able to connect to machines X, Y or Z from machine X or Y.</t>
<t>
Since SSH is a tool principally used on UNIX based systems and machines configured to provide similar behavior, this guide assumes machines X, Y and Z are all UNIX systems when describing the files to be modified. When used on a Windows machine, the Mesh tools configure the equivalent Windows files.</t>
<section title="Initial profile creation" anchor="s-3_1">
<t>
If this is the first time Alice has used the Mesh, she creates a personal profile for herself on machine X:</t>
<t>
X&gt; meshman /personal alice@mesh.prismproof.org</t>
</section>
<section title="Configuring SSH for machine X" anchor="s-3_2">
<t>
To configure SSH on machine X, Alice adds it to her profile.</t>
<t>
X&gt; meshman /ssh</t>
<t>
Note that the meshman tool only performs the </t>
<t>
At this point, Alice has a new private key that is unique to machine X and the corresponding public key has been added to her profile </t>
</section>
<section title="Configuring SSH for machine Y" anchor="s-3_3">
<t>
To configure the second machine, Alice first requests adding it to her profile:</t>
<t>
Y&gt;</t>
<t>
This request must be accepted on machine X:</t>
<t>
X&gt;</t>
<t>
Alice now adds the SSH profile to machine Y:</t>
<t>
Y&gt; meshman /ssh</t>
<t>
At this point machines X and Y both have a unique private key and both the corresponding public keys have been added to the authorized key files on Y. The authorized key file on X will be updated by a mesh profile manager running periodically.</t>
</section>
<section title="Configuring SSH for machine Z" anchor="s-3_4">
<t>
Configuration of machine Z begins in exactly the same way as for machine Y. The only difference is that when she creates the SSH profile for the device, she requests it be a host only profile:</t>
<t>
Z&gt; meshman /ssh /host</t>
</section>
<section title="Deleting a Device" anchor="s-3_5">
</section>
<section title="Future directions" anchor="s-3_6">
<section title="Native Mesh support in SSH" anchor="s-3_6_1">
<t>
The chief weakness in this user experience is that the machines cannot update themselves automatically or even know when an update is required. The only approach that is available is for the host devices to periodically poll the Mesh portal and request updates for the registered profiles.</t>
<t>
This delay can be avoided if the SSH protocol and implementations were updated to support direct use of Mesh profiles. This allows a client to push the updated profile data to the server when making the connection attempt.</t>
</section>
<section title="Update Daemon" anchor="s-3_6_2">
<t>
Native support allows the process of adding devices to be automated but does not guarantee timely processing of deletion requests. It also requires action by third parties who may not be interested in providing Mesh support.</t>
<t>
A better approach would be to run a daemon on each machine that could receive update notifications from the portal whenever a significant event (profile addition/deletion) had occurred.</t>
</section>
<section title="Batched Connection Requests" anchor="s-3_6_3">
<t>
The existing management tools require a device to be connected to a profile before use of applications are enabled on the device.</t>
</section>
<section title="Enhanced administration" anchor="s-3_6_4">
<t>
While this approach is functional, it does not meet the requirement for complete mediation of the log in request. While the system administrator has the ability to permit or deny remote access capabilities to a user, these are the only options that the administration tools currently supported by most SSH configurations provide. The administrator cannot control the types of credentials used by specific users.</t>
<t>
The Mesh could be employed to permit a closer level of control. Storing the user?s profile fingerprint in the password database (/etc/passwd or /etc/shadow) would allow every application and system utility to refer to a single root of trust for authenticating every credential presented by a user.</t>
</section>
</section>
</section>
<section title="Platform Bindings" anchor="s-4">
<t>
Since SSH is an application program </t>
<section title="OpenSSH Files" anchor="s-4_1">
<t><list style="hanging">
<t>
Contains a list of all the keys that are authorized to access the corresponding account. This is a list of Mesh SSH per device application keys.</t>
<t>
Default name for the user?s RSA public key</t>
<t>
Default name for the user?s RSA private key</t>
<t>
List of host keys known to this user.</t>
</list></t>
</section>
</section>
<section title="Application Profile" anchor="s-5">
</section>
<section title="Acknowledgements" anchor="s-6">
</section>
<section title="Security Considerations" anchor="s-7">
<t>
[This is just a sketch for the present.]</t>
</section>
<section title="IANA Considerations" anchor="s-8">
<t>
[TBS list out all the code points that require an IANA registration]</t>
</section>
</middle>
<back>
<references title="Normative References">
<reference anchor="RFC2119">
<front>
<title>Key words for use in RFCs to Indicate Requirement Levels</title>
<author fullname="S. Bradner" initials="S." surname="Bradner">
<organization/>
<address>
</address>
</author>
<date month="March" year="1997"/>
</front>
<seriesInfo name="BCP" value="14"/>
<seriesInfo name="RFC" value="2119"/>
<seriesInfo name="DOI" value="10.17487/RFC2119"/>
</reference>
<reference anchor="draft-hallambaker-mesh-architecture">
<front>
<title>Mathematical Mesh: Architecture</title>
<author fullname="Phillip Hallam-Baker" initials="P" surname="Hallam-Baker">
<organization/>
<address>
</address>
</author>
<date day="9" month="May" year="2017"/>
</front>
<seriesInfo name="Internet-Draft" value="draft-hallambaker-mesh-architecture-03"/>
<format type="TXT" target="http://www.ietf.org/internet-drafts/draft-hallambaker-mesh-architecture-03.txt"/>
</reference>
</references>
<references title="Informative References">
<reference anchor="draft-hallambaker-mesh-developer">
<front>
<title>Mathematical Mesh: Developer's Guide</title>
<author fullname="Phillip Hallam-Baker" initials="P" surname="Hallam-Baker">
<organization/>
<address>
</address>
</author>
<date day="19" month="September" year="2016"/>
</front>
<seriesInfo name="Internet-Draft" value="draft-hallambaker-mesh-developer-02"/>
<format type="TXT" target="http://www.ietf.org/internet-drafts/draft-hallambaker-mesh-developer-02.txt"/>
</reference>
</references>
</back>
</rfc>
