<?xml version='1.0'?>
<!DOCTYPE rfc SYSTEM 'rfc2629.dtd'>
<rfc ipr="trust200902" docName="draft-hallambaker-mesh-app-01" category="info">
<?rfc toc="yes"?>  
<?rfc symrefs="yes"?>  
<?rfc sortrefs="yes"?>  
<?rfc compact="yes"?>  
<?rfc subcompact="no"?>  
<front>
<title abbrev="Mesh/SSH">Mathematical Mesh: Application Profiles</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="10" month="April" year="2018"/>
<area/>
<workgroup/>
<abstract>
<t>
The use of the Mathematical Mesh to manage cryptographic keys for use with Mail and SSH is described. The format of the application profiles is described with examples.</t>
<t>
This document is also available online at <eref target="http://prismproof.org/Documents/draft-hallambaker-mesh-app.html">
http://prismproof.org/Documents/draft-hallambaker-mesh-app.html</eref>
.</t>
</abstract>
</front>
<middle>
<section title="Introduction" anchor="s-1">
</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">
</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">
</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">
</xref>
.</t>
</section>
</section>
<section title="Mesh Application Profiles" anchor="s-3">
<t>
(Pull piece from Mesh Reference to here)</t>
</section>
<section title="Catalog Profiles" anchor="s-4">
<t>
Catalog profiles are used to synchronize encrypted data sets across devices. The catalog data model is restricted so as to permit a common set of management tools to be used to access and maintain profiles containing different types of data (bookmarks, credentials, contacts, etc.). Catalogs do not contain per device data. A catalog may not be shared with every device in the user?s profile but all the data in a catalog is available to all the devices with which it is shared.</t>
<t>
The management operations supported are:</t>
<t><list style="hanging">
<t hangText="Synchronization">
Permit user to add, delete and update entries from multiple devices with minimal surprise. The mechanism is designed to be reasonably robust if network connectivity is lost during an attempted update.</t>
<t hangText="Labelling">
Allow entries to be grouped into hierarchical categories defined by the user. An entry may be added to more than one category at once.</t>
</list></t>
<t>
Each catalog entry SHOULD contain exactly one timestamp field of time Added, Updated or Deleted. If present, the timestamp entries and the entry identifiers are used to merge catalog profiles that have been updated separately leading to an inconsistent state.</t>
<t>
Applications SHOULD specify a timestamp field on every entry unless it is known that update inconsistency cannot occur. For example, when initially populating a catalog.</t>
<section title="Catalog Example" anchor="s-4_1">
<t>
Alice creates a new bookmarks profile which is shared between her laptop and her phone. The initial profile is empty: </t>
<figure anchor="s-4_1-2">
<artwork>
<![CDATA[{
  "BookmarkProfilePrivate": {
    "Entries": []}}]]></artwork>
</figure>
<t>
Alice adds a bookmark entry to her profile on the browser on her laptop: </t>
<figure anchor="s-4_1-4">
<artwork>
<![CDATA[{
  "BookmarkProfilePrivate": {
    "Entries": [{
        "Added": "2018-04-10T23:16:06Z",
        "Title": "First Site",
        "Uri": "http://example.com/"}]}}]]></artwork>
</figure>
<t>
Later, Alice is attempting to connect to a site on her phone but has no network  connection. She decides to bookmark the site instead.  </t>
<figure anchor="s-4_1-6">
<artwork>
<![CDATA[{
  "BookmarkProfilePrivate": {
    "Entries": [{
        "Added": "2018-04-11T00:50:44Z",
        "Title": "Second Site",
        "Uri": "https://example.com/"}]}}]]></artwork>
</figure>
<t>
At this point, the profiles on Alice's two devices are out of sync. When the phone is finally able to connect to the network, the profiles are merged: </t>
<figure anchor="s-4_1-8">
<artwork>
<![CDATA[{
  "BookmarkProfilePrivate": {
    "Entries": [{
        "Added": "2018-04-10T23:16:06Z",
        "Title": "First Site",
        "Uri": "http://example.com/"},
      {
        "Added": "2018-04-11T00:50:44Z",
        "Title": "Second Site",
        "Uri": "https://example.com/"}]}}]]></artwork>
</figure>
</section>
<section title="Credentials" anchor="s-4_2">
<t>
A credentials catalog contains access credentials, typically usernames and passwords, for a set of network resources such as Web sites that do not support the use of Mesh device profile data for authentication.</t>
<t>
Mesh/Credential enabled applications SHOULD offer to generate strong passwords for the user if the AutoGenerate field is set to true in the credential profile. Since the use of automatically generated passwords is likely to be inconvenient for users unless all the applications on all the devices they might use support Mesh/Credential profiles, applications MUST NOT automatically generate passwords unless the user has affirmatively indicated that they want to use them.</t>
<t>
Further Work: Credential entries MAY specify that the credential is restricted to use with certain protocols (Web browsing, SFTP, etc.) and/or certain authentication mechanisms but the precise means of identifying both is not currently defined.</t>
<section title="Credentials Example" anchor="s-4_2_1">
<figure anchor="s-4_2_1-1">
<artwork>
<![CDATA[{
  "CredentialProfilePrivate": {
    "AutoGenerate": true,
    "Entries": [{
        "Sites": ["luggage.example.net"],
        "Username": "Alice",
        "Password": "12345"},
      {
        "Label": ["Linux"],
        "Sites": ["host.example.net"],
        "Username": "BitAlice",
        "Password": "password",
        "Protocol": "ssh"}],
    "NeverAsk": ["secure.example.com",
      "bank.example.com"]}}]]></artwork>
</figure>
</section>
</section>
<section title="Bookmarks" anchor="s-4_3">
<t>
A bookmarks catalog contains a collection of bookmarks that have been saved for later use. While the ability share bookmarks between groups of users has obvious advantages, at present, the implementation and specification are only written with the use of a single user have been considered.</t>
<t>
A bookmark entry contains the URI of the target and a title. If the book mark entry is a HTML resource, the title is taken from the &lt;title&gt; element in the document header. If network and storage resources permit, catalog entries MAY include a favicon value for easy identification.</t>
<t>
Further Work: Bookmark entries MAY contain details describing the security properties of the connection to protect against downgrade attack. For example, information from HTTP strict security <xref target="RFC6797">
</xref>
 and key pinning headers <xref target="RFC7460">
</xref>
.</t>
<t>
tbs </t>
</section>
<section title="Contacts" anchor="s-4_4">
<t>
A contacts catalog contains a collection of contacts. The ContactEntry object contains the usual fields for describing the person or organization the entry refers to, and means of contact (Internet, Postal).</t>
<t>
One significant deviation from existing formats is that the fact that people change names (e.g. marriage) is captured and that means of contact MAY be scoped to a particular organization.</t>
<section title="Contacts Example" anchor="s-4_4_1">
<figure anchor="s-4_4_1-1">
<artwork>
<![CDATA[{
  "ContactProfilePrivate": {
    "Entries": [{
        "Personals": [{
            "First": "Alice"}],
        "Internets": [{
            "Uri": "mailto:alice@example.com"}]},
      {
        "Personals": [{
            "First": "Bob"}],
        "Internets": [{
            "Uri": "mailto:bob@example.com"}]}]}}]]></artwork>
</figure>
</section>
</section>
<section title="Calendar" anchor="s-4_5">
<t>
It is generally acknowledged that representation of calendar information is a ?difficult? problem. Since it is the author?s experience that such problems almost invariably arise from an attempt to make use of an inadequate data model, the format for exchange of calendar information is currently undefined.</t>
<t>
Further Work: Two major causes of difficulty are the use of local time zones and daylight savings, the definition of which are capricious at best. When a recurring meeting is specified it is vital that the time zone in which the meeting is to recur is specified explicitly. Attempts to normalize meetings to a single time zone will inevitably fail when the definition of time changes between the time the meeting is called and the meeting is held.</t>
<t>
Another major limitation in existing formats is the lack of understanding that when the user travels, at least some part of their context for scheduling also changes. It should be possible to integrate all parts of the user?s schedule to offer alerts and reminders appropriate to their current location. </t>
</section>
</section>
<section title="Mail" anchor="s-5">
<t>
Mesh Mail profiles serve two distinct purposes:</t>
<t><list style="symbols">
<t>
To provision a user?s devices with the credentials, network configuration and cryptographic keys necessary to support use of mail and end-to-end mail security enhancements.</t>
<t>
To publish necessary information for use by mail senders.</t>
<t>
While the principle focus of Mesh/Mail is to support exchange of mail over SMTP protocol, any infrastructure that provides a mechanism for publishing a recipient?s public keys for use by senders can, at least in principle, also publish information describing the user?s mail capabilities including the ability to support new messaging protocols.</t>
<t>
The use of end-to-end secure protocols requires the generation and use of at least one public key pair for signature and encryption. Best current practices require the use of separate keypairs for signature and encryption and if practical separate signature keys for each device.</t>
<t>
Since S/MIME and OpenPGP as currently specified do not support the use of Proxy Re-Encryption (recryption) to enable separate the use of separate decryption keys for each device, a single encryption keypair is used. A mail profile must therefore contain an encrypted copy of the corresponding decryption key for each device.</t>
<t>
Further Work: Support Signal etc. At present the profiles are not differentiated on a per device level. It is likely that it would be useful to specify that certain devices are to carry a complete copy of the user?s mail while others should only carry messages from the last few weeks or months. It is also likely that it would be useful to be able to mark certain selections as being likely to be most useful offline. </t>
</list></t>
<section title="Mail Example" anchor="s-5_1">
</section>
</section>
<section title="SSH" anchor="s-6">
<t>
The Secure Shell (SSH) transport layer protocol <xref target="RFC4253">
</xref>
 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 machine without creating an insecure path first is not a trivial matter.</t>
<t>
A Mesh/SSH profile contains three sets of information:</t>
<t><list style="symbols">
<t>
A set of the user?s public authentication keys. This is used to generate auth_hosts files and equivalents to enable the user to access machines.</t>
<t>
A set of hosts known to the user. This is encrypted as it shows the machines that the user at least is likely to visit. This is used to generate known_hosts files and equivalents to enable the user to authenticate hosts.</t>
<t>
A set of device key entries. The entry for each host is encrypted. This is used to create the private key file(s) for the user on each of their devices.</t>
</list></t>
<section title="SSH Example" anchor="s-6_1">
</section>
</section>
<section title="Catalog Application Profiles" anchor="s-7">
<t>
Catalogues are application profiles that consist of a set of related information (contacts, passwords, bookmarks) but do not contain  any cryptographic private keys or device specific data. These restrictions allow management of these profiles to be simplified. </t>
<section title="Shared" anchor="s-7_1">
<t>
The following objects are common to multiple profiles. </t>
<section title="Structure: ApplicationProfileCatalog" anchor="s-7_1_1">
<t><list style="hanging">
<t hangText="Inherits: ApplicationProfile"></t>
</list></t>
<t>
Base class for all application profiles that are tied to an  account profile </t>
<t><list style="hanging">
<t hangText="AccountIdentifier: String (Optional)">
The account to which this profile is bound </t>
<t hangText="PersonalUDF: String (Optional)">
The person to which this profile is bound  </t>
</list></t>
</section>
<section title="Structure: CatalogEntry" anchor="s-7_1_2">
<t>
Base class for catalog entries, contains base information on which catalog operations are performed. </t>
<t><list style="hanging">
<t hangText="ID: String (Optional)">
Unique identifier for the entry. If present, overrides the identifier  specified in the entry. </t>
<t hangText="Added: DateTime (Optional)">
The time the site was added </t>
<t hangText="Updated: DateTime (Optional)">
The last time the entry was updated </t>
<t hangText="Deleted: DateTime (Optional)">
The last time the entry was updated </t>
<t hangText="Label: String [0..Many]">
Labels identifying the group(s) that the entry is filed under </t>
<t hangText="Source: TypedData [0..Many]">
Source data for the entry  </t>
</list></t>
</section>
<section title="Structure: TypedData" anchor="s-7_1_3">
<t>
Typed content. </t>
<t><list style="hanging">
<t hangText="ContentType: String (Optional)">
IANA Content Type identifier </t>
<t hangText="Data: Binary (Optional)">
The described data  </t>
</list></t>
</section>
</section>
<section title="Credential Catalog" anchor="s-7_2">
<t>
Profile for recording access credentials for Web sites and other projects. Currently this is  limited to usernames and passwords but could expand to include other credential  forms. </t>
<section title="Structure: CredentialProfile" anchor="s-7_2_1">
<t><list style="hanging">
<t hangText="Inherits: ApplicationProfileCatalog"></t>
</list></t>
<t>
Stores usernames and passwords. There are no public fields. </t>
<t>
[No fields] </t>
</section>
<section title="Structure: CredentialProfilePrivate" anchor="s-7_2_2">
<t><list style="hanging">
<t hangText="Inherits: ApplicationProfilePrivate"></t>
</list></t>
<t>
Private part of the profile. </t>
<t><list style="hanging">
<t hangText="AutoGenerate: Boolean (Optional)">
If true, a client MAY offer to automatically generate strong (i.e. not memorable) passwords for a user. A user would not normally want to use this feature unless they have access to Mesh password management on every device they use to browse the Web </t>
<t hangText="Entries: CredentialEntry [0..Many]">
A list of password credential entries. </t>
<t hangText="NeverAsk: String [0..Many]">
A list of domain names of sites for which clients MUST NOT ask to store passwords for.  </t>
</list></t>
</section>
<section title="Structure: CredentialEntry" anchor="s-7_2_3">
<t><list style="hanging">
<t hangText="Inherits: CatalogEntry"></t>
</list></t>
<t>
Username password entry for a single site </t>
<t><list style="hanging">
<t hangText="Sites: String [0..Many]">
DNS name of site *.example.com matches www.example.com etc. </t>
<t hangText="Username: String (Optional)">
Case sensitive username </t>
<t hangText="Password: String (Optional)">
Case sensitive password. </t>
<t hangText="Protocol: String (Optional)">
Protocol identifier, e.g. http, sftp, ssh, etc.  </t>
</list></t>
</section>
</section>
<section title="Bookmark Catalog" anchor="s-7_3">
<t>
Profile for recording Web site bookmarks and related information. </t>
<section title="Structure: BookmarkProfile" anchor="s-7_3_1">
<t><list style="hanging">
<t hangText="Inherits: ApplicationProfileCatalog"></t>
</list></t>
<t>
Stores Web site bookmarks in a hierarchical  </t>
<t>
[No fields] </t>
</section>
<section title="Structure: BookmarkProfilePrivate" anchor="s-7_3_2">
<t><list style="hanging">
<t hangText="Inherits: ApplicationProfilePrivate"></t>
</list></t>
<t>
Private part of the profile. </t>
<t><list style="hanging">
<t hangText="Entries: BookmarkEntry [0..Many]">
The bookmark entries  </t>
</list></t>
</section>
<section title="Structure: BookmarkEntry" anchor="s-7_3_3">
<t><list style="hanging">
<t hangText="Inherits: CatalogEntry"></t>
</list></t>
<t>
Bookmark entry for a single site </t>
<t><list style="hanging">
<t hangText="Title: String (Optional)">
The resource name </t>
<t hangText="Uri: String (Optional)">
The resource identifier </t>
<t hangText="ImageUDF: String [0..Many]">
UDF fingerprint of related favicon image  </t>
</list></t>
</section>
</section>
<section title="Contact Catalog" anchor="s-7_4">
<t>
Profile for recording user contact information </t>
<section title="Structure: ContactProfile" anchor="s-7_4_1">
<t><list style="hanging">
<t hangText="Inherits: ApplicationProfileCatalog"></t>
</list></t>
<t>
Stores Web site bookmarks in a hierarchical  </t>
<t>
[No fields] </t>
</section>
<section title="Structure: ContactProfilePrivate" anchor="s-7_4_2">
<t><list style="hanging">
<t hangText="Inherits: ApplicationProfilePrivate"></t>
</list></t>
<t>
Private part of the profile. </t>
<t><list style="hanging">
<t hangText="Entries: ContactEntry [0..Many]">
The contact entries  </t>
</list></t>
</section>
<section title="Structure: ContactEntry" anchor="s-7_4_3">
<t><list style="hanging">
<t hangText="Inherits: CatalogEntry"></t>
</list></t>
<t>
Contact entry </t>
<t><list style="hanging">
<t hangText="Personals: PersonalName [0..Many]">
Personal names. </t>
<t hangText="MeshUDFs: String [0..Many]">
List of mesh profiles fingerprints for the user. </t>
<t hangText="Internets: Internet [0..Many]">
List of Internet, telephone, etc addresses for contacting this party </t>
<t hangText="Postals: Postal [0..Many]">
List of postal addresses for this party  </t>
</list></t>
</section>
<section title="Structure: PersonalName" anchor="s-7_4_4">
<t>
Personal name structure. </t>
<t><list style="hanging">
<t hangText="First: String (Optional)">
First name </t>
<t hangText="Last: String (Optional)">
Last name </t>
<t hangText="Midle: String (Optional)">
Middle names (if used).  </t>
</list></t>
</section>
<section title="Structure: Address" anchor="s-7_4_5">
<t>
Contact address. </t>
<t><list style="hanging">
<t hangText="Label: String [0..Many]">
Labels identifying the modes in which the label may be used e.g. Home, Business, Mobile	 </t>
<t hangText="Attributes: String [0..Many]">
Attributes describing the mode in which the contact address may be used.  </t>
</list></t>
</section>
<section title="Structure: Internet" anchor="s-7_4_6">
<t>
Internet contact address </t>
<t><list style="hanging">
<t hangText="Inherits: Address">
</t>
<t hangText="Inherits: Address"></t>
<t hangText="Uri: String (Optional)">
The resource identifier describing the mode of contact  </t>
</list></t>
</section>
<section title="Structure: Postal" anchor="s-7_4_7">
<t>
Postal or geographic address. </t>
<t><list style="hanging">
<t hangText="Inherits: Address">
</t>
<t hangText="Inherits: Address"></t>
<t hangText="Adressee: String (Optional)">
The postal name </t>
<t hangText="Street: String (Optional)">
Street name and number </t>
<t hangText="Town: String (Optional)">
Name of town or city </t>
<t hangText="Region: String (Optional)">
State, county, department or other government unit. </t>
<t hangText="Country: String (Optional)">
The country name </t>
<t hangText="Code: String (Optional)">
The ISO 3 letter country code  </t>
</list></t>
</section>
<section title="Structure: ContactPerson" anchor="s-7_4_8">
<t><list style="hanging">
<t hangText="Inherits: ContactEntry"></t>
</list></t>
<t>
Contact entry for a single person </t>
<t><list style="hanging">
<t hangText="FullName: String (Optional)">
The name of the person </t>
<t hangText="Organization: String [0..Many]">
The name of the organizations the person is associated with  </t>
</list></t>
</section>
<section title="Structure: ContactOrganization" anchor="s-7_4_9">
<t><list style="hanging">
<t hangText="Inherits: ContactEntry"></t>
</list></t>
<t>
Contact entry for a single organization </t>
<t><list style="hanging">
<t hangText="FullName: String (Optional)">
The name of the organization  </t>
</list></t>
</section>
<section title="Structure: NetworkProfile" anchor="s-7_4_10">
<t><list style="hanging">
<t hangText="Inherits: ApplicationProfileCatalog"></t>
</list></t>
<t>
Stores usernames and passwords. There are no public fields. </t>
<t>
[No fields] </t>
</section>
<section title="Structure: NetworkProfilePrivate" anchor="s-7_4_11">
<t><list style="hanging">
<t hangText="Inherits: ApplicationProfilePrivate"></t>
</list></t>
<t>
Private part of the profile. </t>
<t><list style="hanging">
<t hangText="AccessPoints: NetworkEntry [0..Many]">
A list of access point entries </t>
<t hangText="VPNs: NetworkEntry [0..Many]">
A list of VPN entries  </t>
</list></t>
</section>
<section title="Structure: NetworkEntry" anchor="s-7_4_12">
<t><list style="hanging">
<t hangText="Inherits: CredentialEntry"></t>
</list></t>
<t>
Describes network access credentials </t>
<t><list style="hanging">
<t hangText="Configuration: String (Optional)">
Network configuration data.  </t>
</list></t>
</section>
</section>
<section title="Mail Application Profile Objects" anchor="s-7_5">
<t>
Profiles that describe mail user agent configuration </t>
<section title="Structure: MailProfile" anchor="s-7_5_1">
<t><list style="hanging">
<t hangText="Inherits: ApplicationProfile"></t>
</list></t>
<t>
Public profile describes mail receipt policy. Private describes Sending policy </t>
<t><list style="hanging">
<t hangText="EncryptionPGP: PublicKey (Optional)">
The current OpenPGP encryption key </t>
<t hangText="EncryptionSMIME: PublicKey (Optional)">
The current S/MIME encryption key  </t>
</list></t>
</section>
<section title="Structure: MailDevicePublic" anchor="s-7_5_2">
<t>
Contains public device description </t>
<t><list style="hanging">
<t hangText="Inherits: ApplicationDevicePublic"></t>
</list></t>
<t>
[No fields] </t>
</section>
<section title="Structure: MailProfilePrivate" anchor="s-7_5_3">
<t><list style="hanging">
<t hangText="Inherits: ApplicationProfilePrivate"></t>
</list></t>
<t>
Describes a mail account configuration </t>
<t>
Private profile contains connection settings for the inbound and outbound mail server(s) and cryptographic private keys. Public profile may contain security policy information for the sender. </t>
<t><list style="hanging">
<t hangText="EmailAddress: String (Optional)">
The RFC822 Email address. [e.g. "alice@example.com"] </t>
<t hangText="ReplyToAddress: String (Optional)">
The RFC822 Reply toEmail address. [e.g. "alice@example.com"] </t>
<t>
When set, allows a sender to tell the receiver that replies to this account should be directed to this address. </t>
<t hangText="DisplayName: String (Optional)">
The Display Name. [e.g. "Alice Example"] </t>
<t hangText="AccountName: String (Optional)">
The Account Name for display to the app user [e.g. "Work Account"] </t>
<t hangText="Inbound: Connection [0..Many]">
The Inbound Mail Connection(s). This is typically IMAP4 or POP3 </t>
<t>
If multiple connections are specified, the order in the sequence indicates the preference order. </t>
<t hangText="Outbound: Connection [0..Many]">
The Outbound Mail Connection(s). This is typically SMTP/SUBMIT </t>
<t>
If multiple connections are specified, the order in the sequence indicates the preference order. </t>
<t hangText="Sign: PublicKey [0..Many]">
The public keypair(s) for signing and decrypting email. </t>
<t>
If multiple public keys are specified, the order indicates preference. </t>
<t hangText="Encrypt: PublicKey [0..Many]">
The public keypairs for encrypting and decrypting email. </t>
<t>
If multiple public keys are specified, the order indicates preference.	  </t>
</list></t>
</section>
<section title="Structure: MailDevicePrivate" anchor="s-7_5_4">
<t>
Private data specific to the device </t>
<t><list style="hanging">
<t hangText="Inherits: ApplicationDevicePrivate"></t>
</list></t>
<t>
[No fields] </t>
</section>
</section>
<section title="SSH Application Profile Objects" anchor="s-7_6">
<t>
Profiles that describe SSH user agent configuration </t>
<section title="Structure: SSHProfile" anchor="s-7_6_1">
<t>
Application profile for SSH. This is an initial cut of the  profile and will need revision. In particular, a sysadmin with  a very large number of hosts they are accessing will need some means of avoiding combinatorial explosion. </t>
<t><list style="hanging">
<t hangText="Inherits: ApplicationProfile"></t>
</list></t>
<t>
[No fields] </t>
</section>
<section title="Structure: SSHDevicePublic" anchor="s-7_6_2">
<t>
Contains public device description </t>
<t><list style="hanging">
<t hangText="Inherits: ApplicationDevicePublic">
</t>
<t hangText="Inherits: ApplicationDevicePublic"></t>
<t hangText="PublicKey: PublicKey (Optional)">
Public authentication key for a device.  </t>
</list></t>
</section>
<section title="Structure: SSHProfilePrivate" anchor="s-7_6_3">
<t>
Private portion or profile. </t>
<t><list style="hanging">
<t hangText="Inherits: ApplicationProfilePrivate">
</t>
<t hangText="Inherits: ApplicationProfilePrivate"></t>
<t hangText="Account: String (Optional)">
The account to which the profile is bound </t>
<t hangText="HostEntries: HostEntry [0..Many]">
Hosts bound to the profile  </t>
</list></t>
</section>
<section title="Structure: HostEntry" anchor="s-7_6_4">
<t>
Describe a host connected to the SSH profile. This is a machine  that the user will access using the credential. </t>
<t><list style="hanging">
<t hangText="Inherits: Entry">
</t>
<t hangText="Inherits: Entry"></t>
<t hangText="Address: String (Optional)">
The DNS address or IP address of the host </t>
<t hangText="AlgorithmID: String (Optional)">
The SSH Algorithm identifier </t>
<t hangText="PublicKey: String (Optional)">
The Base64 encoded public key  </t>
</list></t>
</section>
<section title="Structure: SSHDevicePrivate" anchor="s-7_6_5">
<t>
Private data specific to the device </t>
<t><list style="hanging">
<t hangText="Inherits: ApplicationDevicePrivate">
</t>
<t hangText="Inherits: ApplicationDevicePrivate"></t>
<t hangText="DevicePrivateKey: PublicKey (Optional)">
A private keypair or keypair contribution created for exclusive use  of this device. </t>
<t hangText="KeyUDF: String (Optional)">
Fingerprint of device that this key corresponds to.  </t>
</list></t>
</section>
</section>
</section>
<section title="Acknowledgements" anchor="s-8">
<t>
Your name could appear here.</t>
</section>
<section title="Security Considerations" anchor="s-9">
<t>
[This is just a sketch for the present.]</t>
</section>
<section title="IANA Considerations" anchor="s-10">
<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="RFC6797">
<front>
<title>HTTP Strict Transport Security (HSTS)</title>
<author fullname="J. Hodges" initials="J." surname="Hodges">
<organization/>
<address>
</address>
</author>
<author fullname="C. Jackson" initials="C." surname="Jackson">
<organization/>
<address>
</address>
</author>
<author fullname="A. Barth" initials="A." surname="Barth">
<organization/>
<address>
</address>
</author>
<date month="November" year="2012"/>
</front>
<seriesInfo name="RFC" value="6797"/>
<seriesInfo name="DOI" value="10.17487/RFC6797"/>
</reference>
<reference anchor="RFC7460">
<front>
<title>Monitoring and Control MIB for Power and Energy</title>
<author fullname="M. Chandramouli" initials="M." surname="Chandramouli">
<organization/>
<address>
</address>
</author>
<author fullname="B. Claise" initials="B." surname="Claise">
<organization/>
<address>
</address>
</author>
<author fullname="B. Schoening" initials="B." surname="Schoening">
<organization/>
<address>
</address>
</author>
<author fullname="J. Quittek" initials="J." surname="Quittek">
<organization/>
<address>
</address>
</author>
<author fullname="T. Dietz" initials="T." surname="Dietz">
<organization/>
<address>
</address>
</author>
<date month="March" year="2015"/>
</front>
<seriesInfo name="RFC" value="7460"/>
<seriesInfo name="DOI" value="10.17487/RFC7460"/>
</reference>
<reference anchor="RFC4253">
<front>
<title>The Secure Shell (SSH) Transport Layer Protocol</title>
<author fullname="T. Ylonen" initials="T." surname="Ylonen">
<organization/>
<address>
</address>
</author>
<author fullname="C. Lonvick" initials="C." surname="Lonvick">
<organization/>
<address>
</address>
</author>
<date month="January" year="2006"/>
</front>
<seriesInfo name="RFC" value="4253"/>
<seriesInfo name="DOI" value="10.17487/RFC4253"/>
</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="18" month="September" year="2017"/>
</front>
<seriesInfo name="Internet-Draft" value="draft-hallambaker-mesh-architecture-04"/>
<format type="TXT" target="http://www.ietf.org/internet-drafts/draft-hallambaker-mesh-architecture-04.txt"/>
</reference>
</references>
<references title="Informative References">
<reference anchor="draft-hallambaker-mesh-developer">
<front>
<title>Mathematical Mesh: Reference Implementation</title>
<author fullname="Phillip Hallam-Baker" initials="P" surname="Hallam-Baker">
<organization/>
<address>
</address>
</author>
<date day="18" month="September" year="2017"/>
</front>
<seriesInfo name="Internet-Draft" value="draft-hallambaker-mesh-developer-05"/>
<format type="TXT" target="http://www.ietf.org/internet-drafts/draft-hallambaker-mesh-developer-05.txt"/>
</reference>
</references>
</back>
</rfc>
