Internet DRAFT - draft-lucas-assure-data-security

draft-lucas-assure-data-security







    
opsawg                                                          Lucas 
Internet Draft                            Cisco International Limited 
Intended status: Standards track                   September 13, 2017 
Expires: March 17, 2018 
                                     
                          aSSURE Data Security 
                draft-lucas-assure-data-security-00.txt 


Abstract 
    
   aSSURE uses industry standards and best practice to provide a 
   secure communications platform for device configuration and life 
   cycle management across the entire range of smart devices, from 
   the largest servers through to more constrained devices, with 
   minimal human involvement. Based on extensions to current standard 
   methods, aSSURE also provides secure end to end communication 
   across any network type. 
    
   A new approach allows key distribution and encrypted channels to 
   be established between devices that support RSA, EC and/or simple 
   shared secrets. For devices that only support shared secrets, key 
   derivation algorithms ensure that forward and backward compatible 
   secrecy is supported so that secure change of ownership can be 
   obtained. Owners prove ownership via a "case ID" known by the 
   manufacturer and the "Trusted Authority" ID Server but not known 
   by the device. 
    
   aSSURE defines end-to-end encryption links, called "channels", so 
   that pairs of devices communicate with a unique set of encryption 
   keys. These unique keys, coupled with the end-to-end encryption, 
   mean communication is both secure and private. 
    
   DTLS supports both certificates and pre-shared keys, but does not 
   cover key distribution or management. DTLS does not support 
   client-specific pre-shared keys because the client cannot identify 
   itself during the handshake. Herein are all the APIs required to 
   support key distribution and management as well as an extension to 
   the DTLS handshake that allows the client identity to be provided. 
 
   aSSURE cleanly integrates with the Open Interconnect Consortium 
   (OIC) architecture. Both use CBOR encoded data with CoAP over UDP 
   and DTLS. aSSURE URIs do not collide with OIC URIs and aSSURE 
   channels can be used as a secure transport for OIC requests. 
    
Status of this Memo 
    
   This Internet-Draft is submitted in full conformance with the 
   provisions of BCP 78 and BCP 79. 
    
   Internet-Drafts are working documents of the Internet Engineering 
   Task Force (IETF). Note that other groups may also distribute 
   working documents as Internet-Drafts. The list of current 
   Internet- 

Lucas                    Expires March 17, 2018             [Page 1] 






Internet-Draft           aSSURE Data Security          September 2017 
    

   Drafts is at http://datatracker.ietf.org/drafts/current/. 
    
   Internet-Drafts are draft documents valid for a maximum of six 
   months and may be updated, replaced, or obsoleted by other 
   documents at any time. It is inappropriate to use Internet-Drafts 
   as reference material or to cite them other than as "work in 
   progress." 
    
   This Internet-Draft will expire on March 17, 2018. 
    
Copyright Notice 
    
   Copyright (c) 2017 IETF Trust and the persons identified as the 
   document authors. All rights reserved. 
    
   This document is subject to BCP 78 and the IETF Trust's Legal 
   Provisions Relating to IETF Documents 
   (http://trustee.ietf.org/license-info) in effect on the date of 
   publication of this document. Please review these documents 
   carefully, as they describe your rights and restrictions with 
   respect to this document. Code Components extracted from this 
   document must include Simplified BSD License text as described in 
   Section 4.e of the Trust Legal Provisions and are provided without 
   warranty as described in the Simplified BSD License. 
                        
































Lucas                   Expires March 17, 2018              [Page 2] 






Internet-Draft           aSSURE Data Security          September 2017 
    

Table of Contents 
 
1. INTRODUCTION..................................................... 7 
2. THE ROLE OF ASSURE IN AN IOT ENVIRONMENT......................... 8 
2.1. Background..................................................... 8 
2.2. Who am I allowed to talk to?................................... 8 
2.3. How can I authenticate them?................................... 9 
2.4. What am I allowed to tell them?................................ 9 
2.5. What are they allowed to tell me?.............................. 9 
2.6. How can I ensure that our communication is private?............ 9 
3. TERMINOLOGY..................................................... 10 
4. THE ROLE OF THE MANAGEMENT SYSTEM IN ASSURE..................... 10 
4.1. Overview...................................................... 10 
4.2. Creation of Communication Topologies.......................... 10 
4.3. Examples of communication topologies.......................... 11 
4.3.1. A "star" topology........................................... 11 
4.3.2. A "ring" topology........................................... 11 
4.3.3. A "tree" topology........................................... 12 
4.3.4. A "fully connected" topology................................ 12 
5. ASSURE ARCHITECTURE............................................. 13 
5.1. Internet Accessible Deployments............................... 13 
5.2. Walled Garden Deployments..................................... 14 
6. SECURITY CONSIDERATIONS......................................... 15 
6.1. Overview...................................................... 15 
6.2. Guidelines for manufacturers.................................. 17 
6.2.1. Device UUID................................................. 17 
6.2.2. Device Asymmetric Key....................................... 17 
6.2.3. Device Shared Secret........................................ 17 
6.2.4. Case ID..................................................... 17 
6.2.5. QR Code..................................................... 17 
7. DATA STRUCTURES................................................. 18 
7.1. Overview...................................................... 18 
7.2. Key Definition................................................ 18 
7.3. Signature Definition.......................................... 20 
7.4. Authenticated Key Definition.................................. 21 
7.5. Content Type IDs.............................................. 22 
7.6. Key Format IDs................................................ 23 
7.7. Identity Class IDs............................................ 23 
7.8. Cipher Suite IDs.............................................. 24 
7.9. Signature Format IDs.......................................... 24 
7.10. Authenticated Key Metadata................................... 25 
7.11. aSSURE timestamps............................................ 25 
7.11.1. Simple timestamps.......................................... 25 
7.11.2. Precision timestamps....................................... 25 
8. DTLS WITH ASSURE KEY IDENTITIES................................. 26 
8.1. Overview...................................................... 26 
8.2. Extension to (D)TLS........................................... 26 
8.2.1. Peer Name Indication........................................ 26 
8.3. Proof of identity by public key clients....................... 27 
8.4. Proof of identity by shared secret clients.................... 28 
9. TRUSTED AUTHORITY APIS.......................................... 29 
9.1. Overview...................................................... 29 

Lucas                   Expires March 17, 2018              [Page 3] 






Internet-Draft           aSSURE Data Security          September 2017 
    

9.2. Manufacturer API.............................................. 29 
9.2.1. PUT /v1/devices/<uuid>...................................... 30 
9.2.2. POST /v1/parametersets...................................... 31 
9.2.3. PUT /v1/parametersets/<uuid>................................ 31 
9.2.4. GET /v1/parametersets/<uuid>................................ 31 
9.3. Owner API..................................................... 32 
9.3.1. POST /v1/managementsystems.................................. 32 
9.3.2. PUT /v1/devices/<uuid>/owner?case_string=<string>........... 33 
9.3.3. PUT /v1/devices/<uuid>/owner?mgmtid=<string>................ 33 
9.3.4. PUT /v1/devices/<uuid>/owner?case_string=................... 34 
                                         <string>&mgmtid=<string>  34 
9.3.5. PUT /v1/devices/<uuid>/owner?mgmtid=NULL.................... 34 
9.3.6. GET /v1/devices/<uuid>/parameterset......................... 34 
9.3.7. PUT /v1/devices/<uuid>/bootstrap............................ 35 
9.3.8. GET /v1/devices/<uuid>/bootstrap............................ 35 
9.4. Bootstrap API................................................. 36 
9.4.1. GET /v1/devices/<uuid>/bootstrap............................ 36 
10. DEVICE MANAGEMENT API.......................................... 36 
10.1.1. PUT /v1/keys/<uuid>........................................ 37 
10.1.2. POST /v1/keys/generate?type=<key_type>&persistent=<boolean> 37 
10.1.3. GET /v1/keys/<uuid>........................................ 38 
10.1.4. DELETE /v1/keys/<uuid>..................................... 38 
10.1.5. GET /v1/keys............................................... 39 
10.1.6. PUT /v1/channels........................................... 39 
10.1.7. PUT /v1/channels/<id>...................................... 40 
10.1.8. PUT /v1/channels/<channel_id>/open......................... 41 
10.1.9. PUT /v1/channels/<channel_id>/close........................ 41 
10.1.10. DELETE /v1/channels/<channel_id>.......................... 41 
10.1.11. GET /v1/channels/<id>..................................... 42 
10.1.12. GET /v1/channels.......................................... 43 
10.1.13. PUT /v1/reboot............................................ 44 
10.1.14. PUT /v1/shutdown.......................................... 44 
10.1.15. PUT /v1/bootstrap......................................... 44 
10.1.16. GET /v1/ping.............................................. 45 
10.1.17. GET /v1/info.............................................. 45 
11. MANAGEMENT SERVER API.......................................... 46 
11.1. Overview..................................................... 46 
11.2. Registration API............................................. 46 
11.2.1. POST /v1/devices/<uuid>?case_string=<case_string>.......... 46 
11.2.2. POST /v1/devices/<old_uuid>/replace?uuid=<new_uuid>........ 47 
11.2.3. GET /v1/devices/<uuid>/status.............................. 47 
11.2.4. GET /v1/devices/<uuid>/info................................ 47 
11.3. Presence API................................................. 48 
11.3.1. PUT /v1/devices/<uuid>/info................................ 48 
11.3.2. PUT /v1/devices/<uuid>/goodbye............................. 49 
11.4. Miscellaneous................................................ 49 
11.4.1. GET /v1/timestamp.......................................... 49 
12. PHYSICAL / NETWORK LAYER IMPLEMENTATIONS....................... 50 
12.1. BACnet....................................................... 50 
12.1.1. aSSURE Bootstrap........................................... 50 
12.1.2. aSSURE Secure Management Channels.......................... 52 
12.1.3. aSSURE Secure Data Channels................................ 52 

Lucas                   Expires March 17, 2018              [Page 4] 






Internet-Draft           aSSURE Data Security          September 2017 
    

12.2. IP........................................................... 52 
12.2.1. Bootstrap Server FQDN...................................... 53 
12.3. Bluetooth.................................................... 53 
12.4. Assigned address types....................................... 53 
13. DTLS CONNECTION CONFIGURATION EXAMPLES......................... 54 
13.1. Example Topology............................................. 54 
13.2. Elliptic Curve device . Elliptic Curve device................ 55 
13.3. Elliptic Curve device . RSA device........................... 55 
13.3.1. Option 1 - Issue EC key to RSA device...................... 55 
13.3.2. Option 2 - Issue RSA key to EC device...................... 55 
13.3.3. Option 3 - Issue Shared Secret to both devices............. 55 
13.4. Elliptic Curve device . Shared Secret device................. 55 
13.5. RSA device . RSA device...................................... 55 
13.6. RSA device . Shared Secret device............................ 56 
13.7. Shared Secret device . Shared Secret device.................. 56 
14. MESSAGE SEQUENCE DIAGRAMS...................................... 57 
14.1. Manufacturing Flow........................................... 57 
14.2. Management System Preparation................................ 58 
14.3. Device Registration.......................................... 59 
14.4. Device Ownership State Machine............................... 60 
14.5. Device Configuration and Bootstrap........................... 61 
14.6. Device Configuration and Bootstrap (Walled Garden)........... 62 
14.7. Device Change Owner.......................................... 63 
15. CONFIGURATION AND BOOTSTRAP DATA FORMATS....................... 65 
15.1. Overview..................................................... 65 
15.2. Configuration data format.................................... 65 
15.3. Device connection to the bootstrap server using DTLS using... 66 
      pre-shared secrets........................................... 66 
15.4. Device connection to the bootstrap server using DTLS using... 66 
      public keys.................................................. 66 
15.5. Bootstrap data format........................................ 66 
15.5.1. Payload protected by Elliptic Curve keys................... 67 
15.5.2. Payload protected by RSA keys.............................. 68 
15.5.3. Payload protected by shared secrets........................ 68 
15.5.4. Decrypted payload content.................................. 68 
16. SECURITY CONSIDERATIONS........................................ 69 
17. IANA CONSIDERATIONS............................................ 69 
18. CONCLUSIONS.................................................... 69 
19. REFERENCES..................................................... 69 
19.1. Normative References......................................... 69 
19.2. Informative References....................................... 70 
20. ACKNOWLEDGMENTS............................................... 711 
    
                        










Lucas                   Expires March 17, 2018              [Page 5] 






Internet-Draft           aSSURE Data Security          September 2017 
    

    
Table of Figures 
    
               Star Topology  11 
               Ring Topology  11 
               Tree Topology  12 
               Fully Connected Topology   12 
               Internet-accessible architecture 13 
               Walled-garden architecture 14 
               DTLS Connection Example Topology 55 
               Manufacturing Flow Sequence Diagram 57 
               Management System Preparation Sequence Diagram  58 
               Device Registration Sequence Diagram   59 
               Device Ownership State Machine   60 
               Device Configuration and Bootstrap Sequence Diagram 61 
               Device Configuration and Bootstrap Sequence Diagram  
                                                (Walled Garden)   62 
               Device Change Owner Sequence Diagram (first part)  63 
               Device Change Owner Sequence Diagram (second part) 64 
                        





































Lucas                   Expires March 17, 2018              [Page 6] 






Internet-Draft           aSSURE Data Security          September 2017 
    

Glossary of Terms 
 
   API      Application Programming Interface 
   CA       Certificate Authority 
   CBOR     Concise Binary Object Representation, RFC-7049 
   CoAP     Constrained Application Protocol, RFC-7252 
   DHCP     Dynamic Host Configuration Protocol 
   DNS      Domain Name System 
   DTLS     Datagram Transport Layer Security (v1.2), RFC-6347 
   EC       Elliptic Curve 
   ECDSA    E C Digital Signature Algorithm, NIST FIPS   186-4 
   ECIES    Elliptic Curve Integrated Encryption Scheme, ANSI X9.63 
   FQDN     Fully Qualified Domain Name 
   PKCS     Public Key Cryptography Service 
   PKI      Public Key Infrastructure 
   TA       Trusted Authority 
   TLS      Transport Layer Security (v1.2), RFC-5246 
    
1. Introduction 
    
   This document provides the reference technical specification for 
   aSSURE. 
    
   aSSURE uses industry standards and best practice to provide a 
   secure communications platform for device configuration and life 
   cycle management. Where possible, a minimal approach is taken to 
   standards implementation so that the complexity and code footprint 
   for implementation is kept to a minimum. 
    
   The underlying standards are: 
  o Transport Layer Security, TLS v1.2, RFC-5246 
  o Datagram Transport Layer Security, DTLS v1.2, RFC-6347 
  o Constrained Application Framework, CoAP, RFC-7252 
  o Concise Binary Object Representation, CBOR, RFC-7049  
  o CoAP Block-wise Transfers, https://www.ietf.org/id/draft-ietf 
  o core-block-21.txt 
      
      
   The additional functionality provided by aSSURE is intended to 
   work within existing communications frameworks. This allows aSSURE 
   to provide an upgrade path to add a common security approach that 
   provides both secure communications and lifecycle management 
   including change of ownership. aSSURE uses a "Trusted Authority" 
   (TA), similar to the role that a Certificate Authority (CA) plays 
   in a Public Key Infrastructure (PKI) today, to track the 
   manufacture and ownership of devices. Any number of Trusted 
   Authorities may exist but each device will be assigned to a 
   specific TA during its manufacture and will remain assigned to 
   this TA for its entire life. 
    
   Device owners communicate with the various Trusted Authorities to 
   assert ownership of individual devices and upload the initial 

Lucas                   Expires March 17, 2018              [Page 7] 






Internet-Draft           aSSURE Data Security          September 2017 
    

   configuration for the device. When the device powers up, it will 
   contact the Trusted Authority to obtain its initial configuration 
   - this process is called "bootstrap". The initial configuration 
   will provide sufficient information for the device to establish a 
   secure communications channel to the system that will be managing 
   it. Once this channel is established, additional configuration 
   will be provided from the management system directly to the device 
   and the device can enter "normal service". 
    
   The detailed device lifecycle flow is described elsewhere. 
    
   Note 
   aSSURE is designed to cleanly integrate with the Open Interconnect 
   Consortium (OIC) architecture. Both OIC and aSSURE use CBOR 
   encoded data with CoAP over UDP and DTLS. aSSURE URIs have been 
   deliberately chosen not to collide with OIC URIs and aSSURE 
   channels can be used as a secure transport for OIC requests. 
    
2. The role of aSSURE in an IoT environment 
    
2.1. Background 
    
   In any secure environment, there are five basic questions that any 
   device must ask: 
    
  1. Who am I allowed to talk to? 
  2. How can I authenticate them? 
  3. What am I allowed to tell them? 
  4. What are they allowed to tell me? 
  5. How can I ensure that our communication is private? 
      
   If these basic questions can all be answered with confidence, 
   there is the foundation for a secure system. If any of the above 
   are uncertain then the system has weaknesses that may be exploited 
   by an attacker. 
    
   The aSSURE standard provides an answer to all these questions in a 
   way that allows devices to communicate across different network 
   architectures and device capabilities yet still providing end-to 
   end security at a level that is appropriate to the abilities of 
   the devices that are communicating. 
    
   Furthermore, aSSURE provides this with a solution that involves 
   minimal human involvement. 
    
   The following sections will address each of these questions in 
   turn. 
    
2.2. Who am I allowed to talk to? 
    
   In many ways, this is one of the biggest hurdles to overcome. If 
   we want to be able to manufacture and sell "generic" product that 

Lucas                   Expires March 17, 2018              [Page 8] 






Internet-Draft           aSSURE Data Security          September 2017 
    

   has no pre-configuration, how does that device know that we own 
   it?  There are a lot of different approaches to this with "Trusted 
   On First Use" (TOFU) being an obvious one, but with all of them 
   they either have weaknesses in the initial security or rely on 
   public key cryptography. 
    
   Public key cryptography is fine in more powerful devices, but not 
   an option in the smallest ones, so for a universally secure 
   solution, a different approach is required. 
    
   The aSSURE standard uses a Trusted Authority (TA) as the reference 
   for the device. The device is programmed with the identity and 
   credentials of the TA during manufacture and, on first power up, 
   will only talk to the TA. The user will register ownership of the 
   device with the TA and securely upload the initial configuration 
   data for the device to the TA. The TA will then forward that 
   configuration to the device. That configuration includes the 
   location and security parameters for the device to connect to the 
   owner's systems, so now the device knows that it can trust its 
   owner. 
    
   Once the device has connected to the owner's management system, 
   this system can deliver additional configuration parameters, 
   encryption keys, etc. to the device. This allows the management 
   system to tell devices to set up secure peer-to-peer connections, 
   connect to additional management systems and perform other 
   actions. 
    
2.3. How can I authenticate them? 
    
   The same sequence as for 2.2.  above is used to provide the 
   authentication details to the device. This information allows the 
   device to authenticate the owner's systems and allows the owner's 
   systems to authenticate the device. 
    
2.4. What am I allowed to tell them? 
    
   The same sequence as for 2.2.  above is used to provide the access 
   control rules for access to the device data. This allows the 
   device to know what information it can disclose. 
    
2.5. What are they allowed to tell me? 
    
   The same sequence as for 2.2.  above is used to provide the access 
   control rules for commands and configuration sent to the device. 
   This allows the device to know what parameters and commands it 
   will accept from the owner's systems. 
    
2.6. How can I ensure that our communication is private? 
    
   The aSSURE standard defines end-to-end encryption links, called 
   "channels", that ensure each pair of devices communicate with a 

Lucas                   Expires March 17, 2018              [Page 9] 






Internet-Draft           aSSURE Data Security          September 2017 
    

   unique set of encryption keys. These unique keys, coupled with the 
   end-to-end encryption, means that their communication is both 
   secure and private. 
    
3. Terminology 
    
   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 RFC 2119 
   [RFC2119]. 
    
   In this document, these words will appear with that interpretation 
   only when in ALL CAPS. Lower case uses of these words are not to 
   be interpreted as carrying significance described in RFC 2119. 
    
   In this document, the characters ">>" preceding an indented 
   line(s) indicates a statement using the key words listed above. 
   This convention aids reviewers in quickly identifying or finding 
   The portions of this RFC covered by these keywords. 
    
    
4. The role of the Management System in aSSURE 
    
4.1. Overview 
    
   The Management System is a key part in the trust relationship that 
   the device creates. The root of trust is the Trusted Authority. 
   The Trusted Authority tells the device which management systems(s) 
   it can trust. The Management Systems tell the device which other 
   management systems and devices it can trust (if any) and what 
   their permissions are on the device. 
    
4.2. Creation of Communication Topologies 
    
   The Management System can instruct the aSSURE devices to form any 
   topology that is within their capabilities. The limits on the 
   topology types and complexity are only: 
    
  o Limitations set by the underlying network architecture 
  o Limitations set by the device memory and/or processing power 
  o and/or software  
  o Limitations set by the management software 
      
   In aSSURE terminology, each connection between devices is called a 
   channel. The rules about how channel keys are determined and 
   assigned is described in detail in section 13.  below. 
                     







Lucas                   Expires March 17, 2018              [Page 10] 






Internet-Draft           aSSURE Data Security          September 2017 
    

 
4.3. Examples of communication topologies 
    
4.3.1. A "star" topology 
                                        _______ 
                                       /       \ 
                                       | Device| 
                             _______   \_______/   ______ 
                            /       \      |      /      \ 
                            | Device|      |      |Device| 
                            \_______/\     |     /\______/ 
                                      \ ___|___ / 
                                       /       \ 
                                       | Device| 
                                       \_______/ 
                             _______  /    |    \  _______ 
                            /       \/     |     \/       \ 
                            | Device|      |      | Device| 
                            \_______/   ___|___   \_______/ 
                                       /       \ 
                                       | Device| 
                                       \_______/ 
    
                                  Star Topology 
    
4.3.2. A "ring" topology 
                                        _______ 
                                       /       \ 
                                       | Device| 
                             _______  /\_______/\  ______ 
                            /       \/           \/      \ 
                            | Device|             |Device| 
                            \_______/             \______/ 
                                |                     | 
                                |                     | 
                             ___|___               ___|___ 
                            /       \             /       \ 
                            | Device|             | Device| 
                            \_______/\  _______  /\_______/ 
                                      \/       \/ 
                                       | Device| 
                                       \_______/ 
    
                                  Ring Topology 
    
                     








Lucas                   Expires March 17, 2018              [Page 11] 






Internet-Draft           aSSURE Data Security          September 2017 
    

    
4.3.3. A "tree" topology 
                                        _______ 
                                       /       \ 
                                       | Device| 
                             _______   \_______/   ______ 
                            /       \      |      /      \ 
                            | Device|      |      |Device| 
                            \_______/\     |     /\______/ 
                                      \ ___|___ / 
                                       /       \ 
                                       | Device| 
                                       \_______/ 
                             _______       |       _______ 
                            /       \      |      /       \ 
                            | Device|      |      | Device| 
                            \_______/\  ___|___  /\_______/ 
                                      \/       \/ 
                                       | Device| 
                                       \_______/ 
    
                                  Tree Topology 
    
4.3.4. A "fully connected" topology 
    
   The fully connected topology shows four devices where each device 
   has a connector to all of the other three devices. If there are 
   "n" devices they each have "n-1" connectors. 
                             _______           _______ 
                            /       \         /       \ 
                            | Device|<------->| Device| 
                            \_______/         \_______/ 
                               ^  ^            ^    ^      
                               |   \          /     |     
                               |    \      --/      |     
                               |     \    /         |     
                               |      ------        |     
                               |        /   \       |     
                               |     --/     \      |     
                               |    /         \     |     
                             __v_ _v_          v____v_    
                            /       \         /       \ 
                            | Device|<------->| Device| 
                            \_______/         \_______/ 
 
    
                            Fully Connected Topology 
                     






Lucas                   Expires March 17, 2018              [Page 12] 






Internet-Draft           aSSURE Data Security          September 2017 
    

5. aSSURE Architecture 
    
5.1. Internet Accessible Deployments 
    
     TRUSTED AUTHORITY                    MANUFACTURER         
+-------------------------+       +--------------------------+ 
|                         |       |                          | 
|+----------------------+ |       |    +--------------+      | 
||  MANUFACTURER        |<--(-)--------|MANUFACTURING |--    | 
||   GATEWAY            | |Manufacturer| SYSTEM       |  |   | 
|+--------------------!-+ | Interface  +--------------+  |   | 
|  |                  !   |       |                      V   | 
|  |                  !   |       |                +-------+ | 
|  |                  !   |       |  Short-Lived   | DEVICE| | 
|  |   +--A-I-R-G-A-P-!---|       |  Make & Delete +-------+ | 
|  |   |              !   |       |                    !     | 
|  |   A     LOCK     !   |       +--------------------!-----+ 
|  |   I  +-----------V-+ |                            !       
|  |   R  | IDENTITY    | |                            !       
|  |   G  |  SERVER     | |                            !       
|  |   A  +-----------!-+ |               OWNER        !       
|  |   P              !   |   +------------------------!-----+ 
|  |   |              !   |   |                        !     | 
|  |   +---A-I-R-G-A-P!---|   | Bootstrap Interface+---v---+ | 
|  v                  !   |   |     -----(-)-------| DEVICE| | 
|+-----------------+  !   |   |    /               +-------+ | 
||  REGISTRATION   |  !   |   |   /               /|QR CODE| | 
||   SERVER        |  !   |   |  /               / +-------+ | 
|+-----------------+  !   |   | /               /      |     | 
|  ^       ^          !   |   |/              (/)      |     | 
|  |       |          !   |   /        Management      v     | 
|  |     +------------V-+ | (/)        Interface   +-------+ | 
|  |     |  BOOTSTRAP   |<--/ |            (/)     INSTALLER | 
|  |     |   SERVER     | |   |            /       +-------+ | 
|  |     +--------------+ |   |           /           /      | 
|  |       ^              |   |          /          (/)      | 
|  |       |              |   |  +------v----+  Registration | 
|  |       |              |   |  |           |   Interface   | 
|  |       |              |   |  | MANAGEMENT|   (/)         | 
|+-------------+          |   |  |  SYSTEM   |   /           | 
||  OWNER      |          |   |  |           |  /            | 
||   GATEWAY   |<--------(-)-----|           | /             | 
|+-------------+       Owner  |  |           |v              | 
|                    Interface|  +-----------+               | 
|                         |   |                              | 
|                         |   |                              | 
+-------------------------+   +------------------------------+ 
 
                        Internet-accessible architecture 
                     



Lucas                   Expires March 17, 2018              [Page 13] 






Internet-Draft           aSSURE Data Security          September 2017 
    

5.2. Walled Garden Deployments 
    
TRUSTED AUTHORITY                      MANUFACTURER 
+----------------------+       +----------------------------+ 
|                      |       |                            | 
|+-------------------+ |       |    +----------------+      | 
|| MANUFACTURER      |<----(-)------|  MANUFACTURING |--    | 
||  GATEWAY          | |Manufacturer|   SYSTEM       |  |   | 
|+-----------------!-+ | Interface  +----------------+  |   | 
| |                !   |       |                        V   | 
| |                !   |       |     Short-lived  +-------+ | 
| |                !   |       |    Make & Delete | DEVICE| | 
| | +--A-I-R-G-A-P-!---|       |                  +-------+ | 
| | |              !   |       |                      !     | 
| | A     LOCK     !   |       +----------------------!-----+ 
| | I  +-----------V-+ |                              !       
| | R  | IDENTITY    | |                              !       
| | G  |  SERVER     | |                              !       
| | A  +-----------!-+ |               OWNER          !       
| | P              !   | +----------------------------!-----+ 
| | |              !   | |                            !     | 
| | +---A-I-R-G-A-P!---| |+-----------+ Bootstrap +---v---+ | 
| v                !   | ||  Bootstrap|<--(-)-----| DEVICE| | 
|+--------------+  !   | ||   Server  | Interface +-------+ | 
|| REGISTRATION |  !   | |+-----------+        /  |QR CODE| | 
||  SERVER      |  !   | | ^                 (/)  +-------+ | 
|+--------------+  !   | | ! +----------+ Management  |     | 
| ^     ^          !   | | ! |Management| Interface   |     | 
| |     |          !   | | ! |  Server  |<-/          |     | 
| |   +------------V-+ | | ! +----------+             |     | 
| |   |  BOOTSTRAP   | | | !   ^                      |     | 
| |   |   SERVER     | | +=!===!===WALLED=GARDEN======|=====| 
| |   +--------------+ | | !   !                      v     | 
| |     ^              | | !  /                 +---------+ | 
| |     |              | | ! /                  |INSTALLER| | 
| |     |              | | !/                   +---------+ | 
| |     |              | |+----------+           /          | 
|+----------+          | ||INTERNET  |         (/)          | 
|| OWNER    |          | || FACING   |    Registration      | 
||  GATEWAY |<----(-)-----|MANAGEMENT|     Interface        | 
|+----------+    Owner | || SYSTEM   |      (/)             | 
|             Interface| ||          |<-----/               | 
|                      | |+----------+                      | 
|                      | |                                  | 
+----------------------+ +----------------------------------+ 
    
                           Walled-garden architecture 
                     






Lucas                   Expires March 17, 2018              [Page 14] 






Internet-Draft           aSSURE Data Security          September 2017 
    

6. Security Considerations 
    
6.1. Overview 
    
   The aSSURE framework is intended to be usable across the entire 
   range of smart devices - from the largest servers through to more 
   constrained devices (as defined in RFC-7228). This is a very 
   challenging goal and means that some security approaches in common 
   use today are not universally suitable. 
    
   Examples of approaches that are not universally suitable include: 
    
  o Public Key Cryptography, e.g. RSA, DSA, EC 
       o This is computationally intensive and may take too long to 
          be acceptable on devices with minimal processing ability. 
       o This is computationally intensive and the necessary 
          additional processing load may have an unacceptable impact 
          on battery life. 
       o This requires reasonably large code size to implement in 
          software and this may not be available on the more 
          constrained devices. 
  o X.509 certificates 
       o These use time stamps and small devices may not have a real 
          time clock. 
       o These assume public key cryptography (RSA, DSA or EC) and 
          constrained devices may not be able to support this as 
          explained above. 
       o These have a fixed lifetime, thus requiring them to be 
          reissued before they expire. 
       o These require a certificate authority to issue (and 
          reissue) them. 
       o Due to their complexity, these have been the target of 
          various attacks in the past, so removing them reduces the 
          attack surface. 
  o Complex text-based data representations such as ASN.1, HTML, 
     XML, YAML or JSON 
       o These are difficult to parse, requiring larger code 
          libraries and more processing power than simpler formats 
          such as CBOR. 
       o Due to their complexity, these have been the target of 
          various attacks in the past, so removing them reduces the 
          attack surface. 
  o Complex protocols such as SOAP, HTML, etc. 
       o Again, these are more difficult to parse, requiring larger 
          code libraries and more processing power than simpler 
          protocols such as CoAP. 
  o Full standards implementation 
       o Lots of industry standards are large and have a lot of 
          different options, most of which are unnecessary for a new 
          implementation with no legacy support requirements. 
       o For example, TLS supports over 200 different cipher suites 
          and this list continues to grow. 

Lucas                   Expires March 17, 2018              [Page 15] 






Internet-Draft           aSSURE Data Security          September 2017 
    

       o Due to their complexity, these have been the target of 
          various attacks in the past, so reducing the scope of the 
          implementation also reduces the attack surface. 
    
   Support for shared secrets 
    
   Very constrained devices that cannot support public key 
   cryptography have to fall back on "shared secrets" (also known as 
   "pre-shared keys") to identify themselves. Typical approaches 
   using shared secrets require the secret to be disclosed to both 
   parties to set up the secure connection. Once a secret has been 
   disclosed, it can never be proved to have been forgotten. This 
   makes transfer of device ownership problematic, as the previous 
   owner of the device may still know the shared secret even after 
   the device has been transferred to a new owner. In this scenario, 
   the previous owner would be able to decrypt all traffic between 
   the device and its new owner, making the device untrustworthy to 
   the new owner. 
    
   aSSURE offers a new approach using shared secrets that allows the 
   original secret to be concealed from the peer involved in the 
   connection. 
    
   In the aSSURE scenario, a shared secret can be distributed to a 
   device (or multiple devices) with one or two derivation functions. 
   These derivation functions allow a device with the correct 
   reference key to derive the shared secret. Different derivation 
   functions exist to derive the shared secret from an Elliptic Curve 
   key, an RSA key or another shared secret. 
    
   This ability to derive shared secrets is used to secure the 
   ownership lifecycle for devices that do not support public key 
   cryptography. With this approach, the device owner is provided 
   with the parameters for the hashing function and the derived 
   shared secret but not the original shared secret programmed into 
   the device during manufacture. When the owner wishes to 
   communicate with the device, the owner provides the device with 
   the derived secret parameters, thus allowing the device to derive 
   the new secret from the original secret. The owner is provided 
   with a second derivation function that uses the owner key, so they 
   can also derive the same secret and hence establish a secure 
   communication link to the device. When the device changes owner, 
   the new owner is given a different derived secret, not the 
   original secret. The new owner can communicate with the device 
   using the new parameters and the knowledge of the new derived 
   secret. The previous owner, however, does not have the new owner's 
   key nor the device key, so cannot derive the new shared secret and 
   so is unable to decrypt the communications with the new owner. 
    
   The only entities that know the original device secret are the 
   device itself and the Identity server within the Trusted Authority 
   (this is described in more detail later). 

Lucas                   Expires March 17, 2018              [Page 16] 






Internet-Draft           aSSURE Data Security          September 2017 
    

    
   Shared secrets are described more in 7.2. and 8.4.  below. 
    
6.2. Guidelines for manufacturers 
    
6.2.1. Device UUID 
    
   All device UUIDs should be truly randomly generated. This means 
   that they are completely unpredictable and knowledge of the UUID 
   does not disclose any information about what the device is, who 
   manufactured it or when. 
    
6.2.2. Device Asymmetric Key 
    
   If a device uses an RSA or EC asymmetric key, this should be 
   securely generated within the device and the private key must 
   never be disclosed outside of the device. The device should have 
   access to a suitable entropy source to ensure that the key is 
   truly randomly generated. 
    
6.2.3. Device Shared Secret 
    
   If a device uses a shared secret, this should be truly randomly 
   generated and at least 128 bits in size. It may be generated 
   inside the device or on the local manufacturing station but, if 
   generated outside the device, must never be stored in an 
   unencrypted form and must be wiped from RAM as soon as it is no 
   longer needed. The device secret can only ever be stored in non 
   volatile storage AFTER it has been formed into the device identity 
   structure and encrypted as described in 9.2.1.  below. 
    
6.2.4. Case ID 
    
   The aSSURE solution needs a method for an owner to prove that a 
   device is in their possession. This is done through knowledge of a 
   "case ID", an identification string that is printed on the outside 
   of the case. This number is NOT known to the device - it is only 
   known to the manufacturer and the Trusted Authority's Identity 
   Server. The case ID should be a randomly generated number that is 
   at least 128 bits. 
    
6.2.5. QR Code 
    
   The device ID and case ID should be printed in a QR Code on the 
   side of the device. The data should be encoded in CBOR as follows: 
    
   ARRAY { 
     INTEGER version    // Set to 1 for aSSURE v1 
     BYTE STRING device_uuid 
     BYTE STRING case_id 
   } 
    

Lucas                   Expires March 17, 2018              [Page 17] 






Internet-Draft           aSSURE Data Security          September 2017 
    

   If the device UUID and case UUID are both 128 bits then this will 
   encode in 36 bytes. This can be encoded in a type 3 QR code (27 x 
   27 pixels) with "M" level of error correction, a type 4 QR code 
   (33 x 33 pixels) with a "Q" level of error or a type 5 QR code (37 
   x 37 pixels) with "H" level of error correction. 
    
   The manufacturer may choose any of these QR formats, but the type 
   5 is recommended as it has a higher level of error correction and 
   is therefore less susceptible to damage. 
    
7. Data Structures 
    
7.1. Overview 
    
   Where possible, common data structures are used across the system. 
   This simplifies the development and allows better code reuse. 
    
7.2. Key Definition 
    
   A key is defined using one of the following CBOR formats depending 
   on its type. All keys are identified by their ID, which is a 128 
   bit randomly assigned UUID. 
    
   Keys have a format which may be Elliptic Curve, RSA or derived 
   secret. Elliptic Curve and RSA keys must include the public key 
   part and may optionally also include the associated private key. 
    
   If the key is an Elliptic Curve key, the definition is: 
    
   ARRAY { 
     INTEGER       content  // "Key Content Type", see 7.5. below 
     INTEGER       format  // "EC key", see 7.6.  below 
     BYTE STRING   key_id  // UUID 
     BYTE STRING   public_key  // ASN.1 DER encoded string 
     BYTE STRING   private_key  // ASN.1 DER encoded string 
   } 
    
   The private_key  BYTE STRING must be zero length if only a public 
   key is provided. 
    
   Note that the private key definition is not encrypted so if the 
   private key is provided, the definition must be transferred over 
   an encrypted channel and stored in a protected store. 
    
   If the key is an RSA key, the definition is: 
    
   ARRAY { 
     INTEGER      content  // "Key Content Type", see 7.5. below 
     INTEGER      format   // "RSA key", see 7.6.  below 
     BYTE STRING  key_id   // UUID 
     BYTE STRING  public_key  // ASN.1 DER encoded string 
     BYTE STRING  private_key  // ASN.1 DER encoded string 

Lucas                   Expires March 17, 2018              [Page 18] 






Internet-Draft           aSSURE Data Security          September 2017 
    

   } 
   The private_key  BYTE STRING must be zero length if only a public 
   key is provided. 
    
   Note that the private key definition is not encrypted so if the 
   private key is provided, the definition must be transferred over 
   an encrypted channel and stored in a protected store. 
    
   If the key is a derived secret, the definition is: 
    
   ARRAY { 
     INTEGER         content  // "Key Content Type", see 7.5. below 
     INTEGER         format   // "Derived shared secret", see 7.6.  
   below 
                              // below   
     BYTE STRING     key_id   // UUID 
     ARRAY { 
       // Derivation definition 
       BYTE STRING     reference_A_key // UUID 
       BYTE STRING     salt 
       INTEGER         iterations_or_cipher 
       BYTE_STRING     encrypted_secret 
     } 
     // Additional derivation definitions may be present in 
     // the same format as above 
   } 
    
   The derived secret has one or more derivation definitions.   All 
   derivations can be disclosed publicly and all derivations must 
   produce the same secret. A device may use any of the derivations 
   for which it already knows the reference key. 
    
   If the reference key is a shared secret then the PBKDF2 algorithm 
   is used with SHA2 as the digest function, the reference key shared 
   secret used as the passphrase, the "iterations_or_cipher" used as 
   the iteration count, salt and a length value determined by the 
   length of the "encrypted_secret". After the PBKDF2 is completed, 
   the result is XOR'd against the "encrypted_secret". This allows 
   secure generation of any byte sequence. 
    
   If the reference key is an elliptic curve key, then the "salt" and 
   "iterations_or_cipher" fields are ignored (and should be zero 
   length and value zero respectively). The "encrypted_secret" 
   contains the shared secret protected by the Cryptographic Message 
   Syntax with "enveloped-data" as the ContentInfo (see RFC 5652 and 
   RFC 5753) using the "Standard" variation of Ephemeral Static ECDH 
   (see RFC 5753 section 3.1). The default choices for encryption 
   cipher and hash function should be AES-128 and SHA-256 
   respectively. 
    
   If the reference key is an RSA key, then the "salt" and 
   "iterations_or_cipher" fields are ignored (and should be zero 

Lucas                   Expires March 17, 2018              [Page 19] 






Internet-Draft           aSSURE Data Security          September 2017 
    

   length and value zero respectively). The "encrypted_secret" 
   contains the shared secret protected by the Cryptographic Message 
   Syntax with "enveloped-data" as the ContentInfo (see RFC 5652) 
   using RSAES-OAEP (see RFC 8017 section 7.1). The default choices 
   for encryption cipher and hash function should be AES-128 and SHA 
   256 respectively. The SHA-1 hash should not be used. 
    
7.3. Signature Definition 
    
   Rather than use X.509 signatures, which require public key 
   cryptography and ASN.1 encoding, aSSURE uses a simpler approach 
   using CBOR that can also be used with derived secrets as well as 
   public keys. 
    
   If the signature is generated by an Elliptic Curve private key, 
   the signature structure is: 
    
   ARRAY { 
       INTEGER     content // "Signature Content Type", see 
                           // 7.5. below 
       INTEGER     format // Signature format, see 7.9. below 
       INTEGER     created_at 
       INTEGER     valid_until 
       BYTE STRING key_id 
       BYTE STRING r 
       BYTE STRING s 
   } 
   Here, "r" and "s" are the signature values as defined in the 
   Elliptic Curve Digital Signature Algorithm (ECDSA). 
    
   If the signature is generated by an RSA private key, the signature 
   structure is: 
    
   ARRAY { 
       INTEGER     content // "Signature Content Type", see 
                           // 7.5.  below 
       INTEGER     format  // Signature format, see 7.9. below 
       INTEGER     created_at 
       INTEGER     valid_until 
       BYTE STRING key_id 
       BYTE STRING s 
   } 
   Here, "s" are the signature values as defined in the RSA Digital 
   Signature Algorithm (PKCS #1 v1.5). 
    
    
   If the signature is generated by a derived secret, the signature 
   structure is: 
    
   ARRAY { 
       INTEGER     content // "Signature Content Type", see 
                           // 7.5. below 

Lucas                   Expires March 17, 2018              [Page 20] 






Internet-Draft           aSSURE Data Security          September 2017 
    

       INTEGER     format  // Signature format, see 7.9. below 
       INTEGER     created_at 
       INTEGER     valid_until 
       BYTE STRING key_id 
       BYTE STRING hmac 
   } 
    
   In all cases, the signature covers the original data structure and 
   the signature structure with the "r", "s" and/or "hmac" fields 
   being treated as zero length when performing the sign or 
   validation actions (i.e. the BYTE STRING definition is considered 
   to be the value 0b010_00000). 
    
   Two timestamps are part of each signature:  
    
  o The timestamp of when the signature was created ("created_at") 
  o The timestamp after which the signature invalid ("valid_until") 
  o  
   Each signing authority is free to choose its own validity duration 
   for the signatures that it issues. The authority can therefore 
   balance the rate of re-issue of signatures against the time that a 
   signature or a compromised key would remain valid. These fields 
   can be set to zero to indicate a signature that is always valid 
   and never expires. These fields may also be zero if the signature 
   authority knows that the signature is being issued to a device 
   with no real-time clock capability. If a device has no knowledge 
   of the true time, these fields should be ignored when performing 
   signature validation. 
    
7.4. Authenticated Key Definition 
    
   Rather than use X.509 certificates which require public key 
   cryptography, ASN.1 encoding and knowledge of real time, aSSURE 
   uses a simpler yet more flexible structure to authenticate a 
   public key or a key derived from a shared secret. 
    
   An authenticated key definition combines a header, key definition 
   as in 7.2.  above, optional metadata and signature as in 7.3.  
   above. 
    
   ARRAY { 
       INTEGER content  // "Identity Content Type", see 7.5. below 
       INTEGER class    // Identity class, see 7.7.  below 
       ARRAY { 
           // Key definition, see 7.2.  above 
           INTEGER content // "Key Content Type", see 7.5. below 
       } 
       MAP { 
           // Metadata (key + value pairs), see 7.10.  below 
       } 
       ARRAY { 
           // Signature definition, see 7.3.  above 

Lucas                   Expires March 17, 2018              [Page 21] 






Internet-Draft           aSSURE Data Security          September 2017 
    

           INTEGER content  // "Signature Content Type", see 
                            // 7.5.  below 
       } 
   } 
    
   The device should validate an "authenticated key" as follows: 
    
  1. Check that the key used to generate its signature is already 
     present in the device 
  2. Check that current time is within the timestamp range for the 
     signature  
  3. For each key in the hierarchy of keys required to validate this 
     signature, check that current time is within the timestamp range 
     for that key's signature 
  4. Check that the class of the key used to generate the signature 
     is allowed to sign the class of the new authenticated key. The 
     rules for this are in 7.7.  below. 
  5. Check that the signature matches the authenticated key data 
    
   If all the above checks pass, the authenticated key can be 
   accepted. 
    
7.5. Content Type IDs 
    
   +-------+------------------------------+ 
   | Value | Meaning                      | 
   +-------+------------------------------+ 
   | 0     | Identity Content Type        | 
   | 1     | Key Content Type             | 
   | 2     | Configuration Content Type   | 
   | 3     | Encrypted Key Content Type   | 
   | 4     | Signature Content Type       | 
   | 5     | Owner Content Type           | 
   +-------+------------------------------+ 
    
   +-------+------------------------------+ 
   | Value | Meaning                      | 
   +-------+------------------------------+ 
   | 0     | Identity Content Type        | 
   +--------------------------------------+ 
   | 1     | Key Content Type             | 
   +--------------------------------------+ 
   | 2     | Configuration Content Type   | 
   +--------------------------------------+ 
   | 3     | Encrypted Key Content Type   | 
   +--------------------------------------+ 
   | 4     | Signature Content Type       | 
   +--------------------------------------+ 
   | 5     | Owner Content Type           | 
   +-------+------------------------------+ 
    


Lucas                   Expires March 17, 2018              [Page 22] 






Internet-Draft           aSSURE Data Security          September 2017 
    

7.6. Key Format IDs 
    
   +-------+-------------------------------------+ 
   | Value | Meaning                             | 
   +-------+-------------------------------------+ 
   | 0     | Elliptic Curve Key (ASN1.DER encoded| 
   |       |   following industry standards)     | 
   | 1     | RSA Key (ASN1.DER encoded              | 
   |       |   following industry standards)     | 
   | 2     | Configuration Content Type          | 
   +-------+-------------------------------------+ 
    
7.7. Identity Class IDs 
    
   +---+------------+---------------------------------------+ 
   |                |                    Signing Permissions| 
   +                +----+----+----+----+----+----+    |    + 
   |                |      Identity Classes       |    |    | 
   +                +----+----+----+----+----+----+    |    + 
   |                | M  |    |    |    |    |    |    |    | 
   |                | a  |    |    |    |    |    |    |    | 
   |                | n  |    |M S |    |    |    |    |    | 
   |                | u  |T A |a y |B S |    |    |    |B D | 
   |                | f  |r u |n s |o e |    |    |    |o a | 
   |                | a  |u t |a t |o r |    | C  |    |o t | 
   |---+------------| c  |s h |g e |t v | D  | h  | C  |t a | 
   | V |            | t  |t o |e m |s i | e  | a  | o  |s   | 
   | a |            | u  |e r |m   |t c | v  | n  | n  |t   | 
   | l |            | r  |d i |e   |r e | i  | n  | f  |r   | 
   + u +            | e  |  t |n   |a   | c  | e  | i  |a   | 
   | e |Name        | r  |  y |t   |p   | e    l    g   p   | 
   +---+------------+----+----+----+----+----+----+----+----+ 
   | 0 |Manufacturer|  Y |  Y |  N |  N |  Y |  N |  N |  N | 
   |   |            |    |    |    |    |    |    |    |    | 
   +---+------------+----+----+----+----+----+----+----+----+ 
   | 1 |Trusted     |  N |  Y |  Y |  Y |  Y |  N |  N |  N | 
   |   |Authority   |    |    |    |    |    |    |    |    | 
   +---+------------+----+----+----+----+----+----+----+----+ 
   | 2 |Management  |  N |  N |  Y |  Y |  Y |  Y |  Y |  Y | 
   |   |System      |    |    |    |    |    |    |    |    | 
   +---+------------+----+----+----+----+----+----+----+----+ 
   | 3 |Bootstrap   |  N |  N |  N |  N |  N |  N |  N |  N | 
   |   |Service     |    |    |    |    |    |    |    |    | 
   +---+------------+----+----+----+----+----+----+----+----+ 
   | 4 |Device      |  N |  N |  N |  N |  N |  Y |  N |  N | 
   |   |            |    |    |    |    |    |    |    |    | 
   +---+------------+----+----+----+----+----+----+----+----+ 
   | 5 |Channel     |  N |  N |  N |  N |  N |  N |  N |  N | 
   |   |            |    |    |    |    |    |    |    |    | 
   +--------------------------------------------------------+ 
    
   The Manufacturer is the manufacturer of the device. A manufacturer 

Lucas                   Expires March 17, 2018              [Page 23] 






Internet-Draft           aSSURE Data Security          September 2017 
    

   may install Device identification keys at the factory to allow the 
   device to authenticate itself. If the device is public key 
>> capable, the manufacturer MUST install the identity for the 
   Trusted Authority. 
    
   The Trusted Authority refers to all systems running within the 
   Trusted Authority. A Trusted Authority is only allowed to 
   authenticate other systems running within the Trusted Authority, 
   the Bootstrap Service, the owner's Management Systems or the 
   Device. It is not allowed to authenticate Bootstrap data or 
   device communications Channels. 
    
   The Management System is not allowed to authenticate Manufacturers 
   or Trusted Authorities but it can authenticate all other 
   identities used by the device. 
    
   The Bootstrap Service is not allowed to authenticate anything else 
   - it is only able to deliver bootstrap data to the device. 
    
   The Device is only allowed to authenticate channels. 
    
   The Channel is not allowed to authenticate anything else - it is 
   only allowed to transport data. 
    
7.8. Cipher Suite IDs 
    
   +-------+-------------------------------------------------+ 
   | Value | Meaning                                         | 
   +-------+-------------------------------------------------+ 
   | 0     | "AES-128 CBC" (OID 2.16.840.1.101.3.4.2)"       | 
   | 1     | "AES-192 CBC" (OID 2.16.840.1.101.3.4.22)"      | 
   | 2     | "AES-256 CBC" (OID 2.16.840.1.101.3.4.42)"      | 
   | 3     | "AES-128 CCM" (OID 2.16.840.1.101.3.4.7)"       | 
   | 4     | "AES-192 CCM" (OID 2.16.840.1.101.3.4.27)"      | 
   | 5     | "AES-256 CCM" (OID 2.16.840.1.101.3.4.47)"      | 
   | 6     | "AES-128 GCM" (OID 2.16.840.1.101.3.4.6)"       | 
   | 7     | "AES-192 GCM" (OID 2.16.840.1.101.3.4.26)"      | 
   | 8     | "AES-256 GCM" (OID 2.16.840.1.101.3.4.46)"      | 
   +-------+-------------------------------------------------+ 
    
7.9. Signature Format IDs 
    
   +-------+-------------------------------------------------+ 
   | Value | Meaning                                         | 
   +-------+-------------------------------------------------+ 
   | 0     | ecdsa-with-SHA256 (OID 1.2.840.10045.4.3.2)     | 
   +---------------------------------------------------------+ 
   | 1     | ecdsa-with-SHA384 (OID 1.2.840.10045.4.3.3)     | 
   +---------------------------------------------------------+ 
   | 2     | ecdsa-with-SHA512 (OID 1.2.840.10045.4.3.4)     | 
   +---------------------------------------------------------+ 
   | 3-7   | Reserved..future expansion of ECDSA signatures  | 

Lucas                   Expires March 17, 2018              [Page 24] 






Internet-Draft           aSSURE Data Security          September 2017 
    

   +---------------------------------------------------------+ 
   | 8     | sha256-with-rsa-signature                       | 
   |       | (OID 1.2.840.113549.1.1.11)                     | 
   +---------------------------------------------------------+ 
   | 9     | sha384-with-rsa-signature                       | 
   |       | (OID 1.2.840.113549.1.1.12)                     | 
   +---------------------------------------------------------- 
   | 10    | sha512-with-rsa-signature                       | 
   |       | (OID 1.2.840.113549.1.1.13)                     | 
   +---------------------------------------------------------+ 
   | 11-15 | Reserved..future expansion of RSA signatures    | 
   +---------------------------------------------------------+ 
   | 16    | hmacWithSHA256 (OID 1.2.840.113549.2.9)         | 
   +---------------------------------------------------------+ 
   | 17    | hmacWithSHA384 (OID 1.2.840.113549.2.10)        | 
   +---------------------------------------------------------+ 
   | 18    | hmacWithSHA512 (OID 1.2.840.113549.2.11)        | 
   +---------------------------------------------------------+ 
    
7.10. Authenticated Key Metadata 
    
   +----------+------------------+---------------------------+ 
   | Key      | Value            | Usage                     | 
   +----------+------------------+---------------------------+ 
   |INTEGER(0)| BYTE STRING      | Indicates the device      | 
   |          | (<device uuid>)  |    owning the key         | 
   +----------+------------------+---------------------------+ 
    
7.11. aSSURE timestamps 
    
7.11.1. Simple timestamps 
    
   aSSURE uses a variant of the Unix time format for all its 
   timestamps. An aSSURE simple timestamp is an integer that tracks 
   the number of seconds since midnight on Friday January 1st 2010 
   GMT rather than midnight on January 1st 1970 GMT. This allows a 
   signed 32-bit number to provide a valid timestamp until 2078 
   rather than 2038. 
    
       aSSURE_timestamp_secs = unix_timestamp_secs - 1262304000 
        
   A simple timestamp is defined in CBOR as: 
    
   INTEGER timestamp_secs 
    
7.11.2. Precision timestamps 
    
   If more precision is required, a fractional part may also be 
   provided. This holds the fractional part of the second as a 32-bit 
   value (so the precision is ~233ps). 
    
   A precision timestamp is defined in CBOR as: 

Lucas                   Expires March 17, 2018              [Page 25] 






Internet-Draft           aSSURE Data Security          September 2017 
    

    
   ARRAY { 
     INTEGER timestamp_secs 
     INTEGER timestamp_frac 
   } 
    
8. DTLS with aSSURE key identities 
    
8.1. Overview 
    
   aSSURE uses DTLS for all secure connections due to its low 
   overhead both in code and operation. DTLS supports both 
   certificates and pre-shared keys, but does not cover how the 
   certificate authorities or pre-shared keys are to be securely 
   distributed. 
    
   This section shows how we extend the basic DTLS standard with 
   additional RFC to provide the functionality required for aSSURE.  
   It also shows how to setup DTLS connections in an aSSURE 
   environment. 
    
8.2. Extension to (D)TLS 
    
   aSSURE needs to be able to provide the client identity to the 
   server during the DTLS handshake. This would normally be done 
   using X.509 certificates, but aSSURE avoids the complexity and 
   overhead of X.509 certificates so an alternative approach is 
   required. 
   aSSURE provides the client identity to the server using a new TLS 
   extension, "Peer Name Indication" that is lightweight and similar 
   to the "Server Name Indication" extension. 
    
8.2.1. Peer Name Indication 
    
   TLS does not provide a mechanism for a client to tell a server the 
   name of the client that is connecting before the ServerHello is 
   returned. It may be desirable for clients to provide this 
   information to facilitate secure connections to servers where the 
   ServerHello should vary according to the client identity. 
    
   In order to provide any of the names, clients MAY include an 
   extension of type "peer_name" in the (extended) client hello. The 
   "extension_data" field of this extension SHALL contain 
   "PeerNameList" where: 
    
   struct { 
       NameType name_type; 
       select (name_type) { 
           case uuid: UUID; 
       } name; 
   } PeerName; 
    

Lucas                   Expires March 17, 2018              [Page 26] 






Internet-Draft           aSSURE Data Security          September 2017 
    

   enum { 
       uuid(0), (255) 
   } NameType; 
    
   opaque UUID[16]; 
    
   struct { 
       PeerName peer_name_list<1..2^16-1> 
   } PeerNameList; 
    
   This allows the client to provide its UUID in a compact format to 
   the server. It also allows other client formats to be used in the 
   future. 
    
8.3. Proof of identity by public key clients 
    
   A typical DTLS handshake uses X.509 certificates to allow both 
   mutual authentication of identity and key exchange to set up the 
   secure connection.  aSSURE does not use X.509 certificates for the 
   reasons explained in section 6.1.  above so an alternative 
   approach is required to allow mutual authentication and key 
   exchange. 
    
   aSSURE uses the device API calls to allow the management system to 
   securely provide identity credentials for other peers to the 
   device. An aSSURE device WILL NOT communicate with any peer that 
   has not had the peer identity credentials provided to it by an 
   authorised management system over a secured connection. 
    
   aSSURE uses the Peer Name Indication extension (see 8.2.1.  above) 
   to allow a device to indicate its ID to the peer during the 
   initial connection request. This allows the peer to check that the 
   device is in its list of trusted devices. If the device is not in 
   the list, the peer refuses the connection. 
    
   Similarly, the server uses the Peer Name Indication extension to 
   provide its ID to the client in the initial connection response. 
   This allows the client to quickly check its database to check that 
   the server is in its list of trusted peers. If the server is not 
   in the list, the client aborts the connection attempt. 
    
   aSSURE then uses the Raw Public Key Extension defined in RFC-7250 
   to allow just the public keys to be exchanged between device and 
   peer. Both the device and the peer cross-check the public keys 
   provided in the DTLS handshake against the expected public keys 
   their list of trusted devices. If either device or peer detect a 
   public key mismatch, they abort the handshake. 
    
   If all checks complete without error, the handshake is allowed to 
   continue normally and the secure connection is established. 
    


Lucas                   Expires March 17, 2018              [Page 27] 






Internet-Draft           aSSURE Data Security          September 2017 
    

8.4. Proof of identity by shared secret clients 
    
   When establishing a secure connection, if either device cannot 
   support public keys, they must use the derived shared secret 
   method of authentication. Derived shared secrets are a weaker 
   form of security than public keys, but if used carefully, can 
   still provide a reasonable level of security. 
    
   DTLS connections protected by derived shared secrets differ from 
   public key cryptography in that both parties must know the same 
   secret to allow the DTLS handshake to complete. Hence, a derived 
   shared secret can be used to prove a link relationship but not an 
   endpoint identity. 
    
   The management system will have been provided with a unique 
   derived shared secret for each device - this is provided to the 
   device in the bootstrap configuration so that the device can trust 
   the link relationship from itself to the management system. 
    
   The management system will then generate a unique derived shared 
   secret for each link that the device needs to establish using its 
   knowledge of the available keys on the devices at each end of the 
   link. The management system will then push that derived shared 
   secret to both devices indicating the peer device ID to which the 
   derived shared secret relates and instruct one of them to act as 
   the client to establish the channel. 
    
   The client will then attempt to connect to the peer using DTLS. 
    
   aSSURE uses the Peer Name Indication extension (see 8.2.1.  above) 
   to allow a device to indicate its ID to the peer during the 
   initial connection request. This allows the peer to check that the 
   device is in its list of trusted devices. If the device is not in 
   the list, the peer refuses the connection. 
    
   Similarly, the server uses the Peer Name Indication extension to 
   provide its ID to the client in the initial connection response. 
   This allows the client to quickly check its database to check that 
   the server is in its list of trusted peers. If the server is not 
   in the list, the client aborts the connection attempt. 
    
   aSSURE then uses the Pre-shared Key Identity Hint Extension 
   defined in RFC-4279 to allow the server to provide the necessary 
   key information to the client. The key information is encoded in 
   Base64 because RFC-4279 recommends that the key information only 
   contains printable characters. The key information will be one of: 
    
  o The UUID of a key known to both client and server. The UUID is 
     provided as a CBOR BYTE STRING of 16 bytes. 
  o A key definition as in 7.2.  above. 
      
   The client can determine which is provided by inspecting the data.  

Lucas                   Expires March 17, 2018              [Page 28] 






Internet-Draft           aSSURE Data Security          September 2017 
    

   A simple UUID is a CBOR BYTE STRING whilst a key definition is a 
   CBOR ARRAY. 
    
   The client checks that the indicated (or reference) key is 
   available and appropriate for this connection, derives the secret 
   as appropriate and uses this as the pre-shared key for the DTLS 
   session. The server also derives the secret from the key and uses 
   this as the pre-shared key for the DTLS session. 
    
   The DTLS handshake then continues as normal and the session is 
   established. 
    
9. Trusted Authority APIs 
    
9.1. Overview 
    
   The Trusted Authority provides three distinct APIs as follows: 
  o Manufacturer API 
  o Owner API 
  o Bootstrap API 
      
   The Manufacturer API is used by the manufacturer to upload 
   manufacturing details about each device when it is created. Only 
   the minimum amount of information about the device is uploaded and 
   this information is stored in One-Time Programmable (OTP) memory 
   on the device, so can never be changed. For this reason, the 
   Manufacturing API has no requirement to allow device information 
   to be updated after manufacture, such as during Return Merchandise 
   Authorisation (RMA), because this information can never be 
   changed. 
    
   The Owner API is used by the device owner to assert ownership of 
   the device, update the device bootstrap configuration and change 
   device ownership. 
    
   The Bootstrap API is used by the devices themselves to download 
   their bootstrap configuration so that they can connect to their 
   management systems and enter service. 
    
9.2. Manufacturer API 
    
   The Manufacturer API is used by the manufacturer to upload data 
   about the device when it is manufactured. The manufacturer API is 
   a RESTful interface using JSON over HTTPS with client 
   authentication. Generation of the client key and issuing of the 
   client certificate is out of scope for this document (this 
   information could easily be exchanged via email). Similarly, 
   delivery of the Trusted Authority "Identity Service" certificate 
   to the manufacturer and disclosure of the Manufacturer API URL is 
   also out of scope (again, this information could easily be 
   provided via email). 
    

Lucas                   Expires March 17, 2018              [Page 29] 






Internet-Draft           aSSURE Data Security          September 2017 
    

9.2.1. PUT /v1/devices/<uuid> 
    
   After a device is manufactured, the manufacturer builds the device 
   data into a JSON data structure as follows: 
    
   { 
     "id": "<device UUID>", 
     "bootstrap_server": <bootstrap server ID used by device>, 
     "case_string": "<string printed on case>", 
     "shared_secret": "<Device shared secret as HEX>" 
     "public_key": "<X.509 PEM encoded device public key>" 
     "parameter_set": "<parameter set UUID>" 
     "capabilities": {  // Device bootstrap capabilities 
       "ec_capable": <boolean>, 
       "rsa_capable": <boolean>, 
       "sha384_capable": <boolean>, 
       "sha512_capable": <boolean>, 
       "aes256_capable": <boolean>, 
       // Additional capabilities may be added in the future 
     } 
   } 
    
   If the device uses an RSA or EC key as its device key, the 
   "shared_secret" will not present. If the device is only shared 
   secret capable then the "public_key" will not be present. The JSON 
   data will NEVER have both "shared_secret" and "public_key" fields. 
    
   All devices must support SHA-256, AES-128 and shared secrets. If 
   the device can support other keys, hashing algorithms or ciphers 
   during bootstrap, these should be indicated here. 
    
   The manufacturer's production line will have encrypted the device 
   data immediately after the device has been tested. The device data 
   is encrypted using ECIES and the Identity Service public key 
   (which must be a strong Elliptic Curve key). The ECIES 
   configuration uses SHA512 and AES-256. The encrypted data is then 
   provided as a binary payload in the request. 
    
   No payload is returned. The response code will be one of: 
   +--------------+------------------------------------------+ 
   | Response     | Description                              | 
   +--------------+------------------------------------------+ 
   |201 Created   | The new device has been created          | 
   +--------------+------------------------------------------+ 
   |403 Forbidden | The manufacturer cannot update the       | 
   |              | device because it already exists         | 
   +--------------+------------------------------------------+ 
   | 503 Service  | The device cannot be created at          | 
   | Unavailable  | this time                                | 
   +--------------+------------------------------------------+ 
   Only a single device is uploaded in each PUT request, but the 
   client may re-use the HTTPS session to send additional requests. 

Lucas                   Expires March 17, 2018              [Page 30] 






Internet-Draft           aSSURE Data Security          September 2017 
    

    
9.2.2. POST /v1/parametersets 
    
   This allows a manufacturer to upload a parameter set definition. 
   The format of the parameter set definition is TBD. The parameter 
   set is defined in CBOR and provided as the request payload. The 
   parameter set is provided in the configuration data to the 
   Management System to guide the bootstrap data definition as 
   described in 15.2.  below. 
    
   The payload will contain the assigned UUID as a simple ASCII 
   string. The response code will be one of: 
   +--------------+------------------------------------------+ 
   | Response     | Description                              | 
   +--------------+------------------------------------------+ 
   |201 Created   | The new parameter set has been created   | 
   +--------------+------------------------------------------+ 
   | 503 Service  | The parameter set cannot be created at   | 
   | Unavailable  | this time                                | 
   +--------------+------------------------------------------+ 
    
    
9.2.3. PUT /v1/parametersets/<uuid> 
    
   This allows a manufacturer to replace a parameter set definition. 
   The format of the parameter set definition is TBD. The parameter 
   set is defined in CBOR and provided as the request payload. The 
   parameter set is provided in the configuration data to the 
   Management System to guide the bootstrap data definition as 
   described in 15.2.  below. 
    
   No payload is returned. The response code will be one of: 
   +--------------+------------------------------------------+ 
   | Response     | Description                              | 
   +--------------+------------------------------------------+ 
   |201 Created   | The new parameter set has been created   | 
   +--------------+------------------------------------------+ 
   |403 Forbidden | The manufacturer cannot update the       | 
   |              | parameter set because it does not exist  | 
   |              | or belongs to a different manufacturer   | 
   +--------------+------------------------------------------+ 
   | 503 Service  | The parameter set cannot be created at   | 
   | Unavailable  | this time                                | 
   +--------------+------------------------------------------+ 
    
   Only a single parameter set is uploaded in each POST request, but 
   the client may re-use the HTTPS session to send additional 
   requests. 
    
9.2.4. GET /v1/parametersets/<uuid> 
    
   This allows a manufacturer to download a parameter set definition. 

Lucas                   Expires March 17, 2018              [Page 31] 






Internet-Draft           aSSURE Data Security          September 2017 
    

   The format of the parameter set definition is TBD and is exactly 
   the data as provided in 9.2.2.  above. 
    
   The returned payload is the parameter set data. The response code 
   will be one of: 
   +--------------+------------------------------------------+ 
   | Response     | Description                              | 
   +--------------+------------------------------------------+ 
   |200 OK        | The parameter set has been returned      | 
   +--------------+------------------------------------------+ 
   |403 Forbidden | The parameter set does not exist or was  | 
   |              | provided by a different manufacturer     | 
   +--------------+------------------------------------------+ 
    
9.3. Owner API 
    
   The Owner API is used to take ownership of a device, set the 
   bootstrap data for the device and transfer ownership of the 
   device. 
    
   As with the Manufacturer API, the Owner API is a RESTful interface 
   using JSON over HTTPS with client authentication. 
    
9.3.1. POST /v1/managementsystems 
    
   This is used by management systems to register with the Owner API. 
   The connection does not require client authentication. 
    
   Before making this request, the management system should generate 
   a new Elliptic Curve key and associated X.509 certificate signing 
   request (CSR). The management system provides the CSR in DER 
   format as the request payload. The Owner API will immediately 
   issue a certificate for this CSR and return it as the response 
   payload in DER format. 
    
   All management systems must support both Elliptic Curve and RSA 
   public keys, SHA-256, SHA-512, AES-128 and AES-256 so that they 
   can correctly interoperate with all devices irrespective of the 
   device abilities (or lack of abilities). 
    
   The response code will be one of: 
   +--------------+------------------------------------------+ 
   | Response     | Description                              | 
   +--------------+------------------------------------------+ 
   |201 Created   | The new management system ID             | 
   |              | has been created                         | 
   +--------------+------------------------------------------+ 
   | 503 Service  | The management system ID cannot be       | 
   | Unavailable  | created at this time                     | 
   +--------------+------------------------------------------+ 
    
    

Lucas                   Expires March 17, 2018              [Page 32] 






Internet-Draft           aSSURE Data Security          September 2017 
    

   Note: Some Trusted Authorities may require a username and password 
   to be provided to authenticate this request to prevent attackers 
   trying to overload the system with requests. Alternative 
   validation approaches are also possible. Such extensions are out 
   of scope of this document. 
    
   Note: The serial number of the issued certificate is used as the 
   "manufacturer ID" in owner management API requests (9.3.4.  below 
   and 9.3.5.  below). For security reasons, the manufacturer ID 
   should not be predictable so ought to be a large random number (>= 
   64 bits). 
    
9.3.2. PUT /v1/devices/<uuid>/owner?case_string=<string> 
    
   This is used by management systems to take ownership of a device. 
   The connection must be authenticated with the issued client 
   certificate. 
    
   The case identification string from the QR code must be provided 
   as the "case_string" parameter. No payload is provided. 
   No payload is returned and the response code will be one of: 
   +--------------+------------------------------------------+ 
   | Response     | Description                              | 
   +--------------+------------------------------------------+ 
   |204 Changed   | Ownership has been assigned to this      | 
   |              | management system                        | 
   +--------------+------------------------------------------+ 
   |403 Forbidden | The device is owned by a different       | 
   |              | management system, the wrong case string | 
   |              | was provided or the device does not exist| 
   +--------------+------------------------------------------+ 
    
9.3.3. PUT /v1/devices/<uuid>/owner?mgmtid=<string> 
    
   This is a variant of 9.3.2.  above and used by management systems 
   to transfer ownership of a device to a different management 
   system. The connection must be authenticated with the issued 
   client certificate. 
   The serial number of the certificate issued to the new management 
   system must be provided as the "mgmtid" parameter. No payload is 
   provided. 
    
   No payload is returned and the response code will be one of: 
   +--------------+------------------------------------------+ 
   | Response     | Description                              | 
   +--------------+------------------------------------------+ 
   |204 Changed   | Ownership has been assigned to the new   | 
   |              | owner                                    | 
   +--------------+------------------------------------------+ 
   |403 Forbidden | The device is owned by a different       | 
   |              | management system, or the device         | 
   |              | does not exist                           | 

Lucas                   Expires March 17, 2018              [Page 33] 






Internet-Draft           aSSURE Data Security          September 2017 
    

   +--------------+------------------------------------------+ 
    
9.3.4. PUT /v1/devices/<uuid>/owner?case_string= 
                                            <string>&mgmtid=<string> 
    
   This is a combination of 9.3.2.  and 9.3.3.  above. It is used by 
   management systems to take ownership of a device and immediately 
   assign it to a different management system. The connection must be 
   authenticated with the issued client certificate. 
    
   The case identification string must be provided as the 
   "case_string" parameter and the serial number of the certificate 
   issued to the new management system must be provided as the 
   "mgmtid" parameter. No payload is provided. 
    
   No payload is returned and the response code will be one of: 
   +--------------+------------------------------------------+ 
   | Response     | Description                              | 
   +--------------+------------------------------------------+ 
   |204 Changed   | Ownership has been assigned to the new   | 
   |              | owner                                    | 
   +--------------+------------------------------------------+ 
   |403 Forbidden | The device is owned by a different       | 
   |              | management system, or the device         | 
   |              | does not exist                           | 
   +--------------+------------------------------------------+ 
    
9.3.5. PUT /v1/devices/<uuid>/owner?mgmtid=NULL 
    
   This is a variant of 9.3.2.  above and used by management systems 
   to release ownership of a device. Once a device has been released 
   from ownership, any management system may take ownership of the 
   device if knows the device UUID and case string. The connection 
   must be authenticated with the issued client certificate. 
    
   No payload is provided or returned and the response code will be 
   one of: 
   +--------------+------------------------------------------+ 
   | Response     | Description                              | 
   +--------------+------------------------------------------+ 
   |204 Changed   | Ownership has been released              | 
   +--------------+------------------------------------------+ 
   |403 Forbidden | The device is owned by a different       | 
   |              | management system, or the device         | 
   |              | does not exist                           | 
   +--------------+------------------------------------------+ 
    
9.3.6. GET /v1/devices/<uuid>/parameterset 
    
   This is used by management systems to obtain the parameter set 
   required for the device. The connection must be authenticated with 
   the issued client certificate. 

Lucas                   Expires March 17, 2018              [Page 34] 






Internet-Draft           aSSURE Data Security          September 2017 
    

    
   No payload is provided. If the request is successful, the 
   parameter set will be returned in the payload. The format of the 
   parameter set data is TBD. 
    
   Note that this returns the same data as 9.2.4.  above but 
   references the device not the parameter set UUID itself. 
    
   The response code will be one of: 
   +--------------+------------------------------------------+ 
   | Response     | Description                              | 
   +--------------+------------------------------------------+ 
   |200 OK        | The device parameter set has             | 
   |              | been returned                            | 
   +--------------+------------------------------------------+ 
   |403 Forbidden | The device is owned by a different       | 
   |              | management system, or the device         | 
   |              | does not exist                           | 
   +--------------+------------------------------------------+ 
    
9.3.7. PUT /v1/devices/<uuid>/bootstrap 
    
   This is used by management systems to set the bootstrap data for a 
   device. The connection must be authenticated with the issued 
   client certificate. 
    
   The bootstrap data is provided as a binary payload. The format of 
   the device bootstrap data is device dependent and detailed in the 
   device parameter set returned in 9.3.6.  above. No payload is 
   returned. The response code will be one of: 
   +--------------+------------------------------------------+ 
   | Response     | Description                              | 
   +--------------+------------------------------------------+ 
   |204 Changed   | The device bootstrap data has been       | 
   |              | accepted                                 | 
   +--------------+------------------------------------------+ 
   |403 Forbidden | The device is owned by a different       | 
   |              | management system, or the device         | 
   |              | does not exist                           | 
   +--------------+------------------------------------------+ 
    
9.3.8. GET /v1/devices/<uuid>/bootstrap 
    
   This is used by management systems to return the bootstrap data 
   for a device. The connection must be authenticated with the issued 
   client certificate. 
    
   No payload is provided. If successful, the bootstrap data is 
   returned as a binary payload. The response code will be one of: 
   +--------------+------------------------------------------+ 
   | Response     | Description                              | 
   +--------------+------------------------------------------+ 

Lucas                   Expires March 17, 2018              [Page 35] 






Internet-Draft           aSSURE Data Security          September 2017 
    

   |200 OK        | The device bootstrap data has            | 
   |              | been returned                            | 
   +--------------+------------------------------------------+ 
   |403 Forbidden | The device is owned by a different       | 
   |              | management system, or the device         | 
   |              | does not exist                           | 
   +--------------+------------------------------------------+ 
    
9.4. Bootstrap API 
    
   The Bootstrap API is used by the device to download its bootstrap 
   data. The Bootstrap API is a RESTful interface using CBOR and CoAP 
   over DTLS with client authentication.  
    
9.4.1. GET /v1/devices/<uuid>/bootstrap 
    
   This is used by the device to obtain its bootstrap data. The DTLS 
   connection must be authenticated with the device key as described 
   in section 8.  above. The <uuid> in the URI must belong to the 
   device authenticated during the DTLS handshake. 
    
   No payload is provided. If successful, the bootstrap data is 
   returned as a binary payload. The response code will be one of: 
   +--------------+------------------------------------------+ 
   | Response     | Description                              | 
   +--------------+------------------------------------------+ 
   |2.05          | The device bootstrap data has            | 
   |              | been returned                            | 
   +--------------+------------------------------------------+ 
   |4.03          | The device is not allowed to access the  | 
   |              | requested bootstrap data, or the device  | 
   |              | does not exist                           | 
   +--------------+------------------------------------------+ 
    
10. Device Management API 
    
   The device API is used by the management system to control the 
   aSSURE functionality in the device. Like the Bootstrap API, the 
   Device API is RESTful using CBOR and CoAP over DTLS. The transport 
   of the DTLS messages will vary depending on the device type and 
   installation - examples of different physical and/or network 
   layers are provided in section 11.  below. 
    
   All requests on the Device Management API must be made over 
   authenticated DTLS connections, known as "channels". The 
   definition of channels is in 4.2.  above. 
    
   The Management API is used to define what privileges are assigned 
   to each channel. These privileges are: 
    
   +--------------+------------------------------------------+ 
   | Privilege    | Description                              | 

Lucas                   Expires March 17, 2018              [Page 36] 






Internet-Draft           aSSURE Data Security          September 2017 
    

   +--------------+------------------------------------------+ 
   | Key          | The connection is allowed to create,     | 
   | Management   | reconfigure and delete keys on the       | 
   |              | device.                                  | 
   +--------------+------------------------------------------+ 
   | Channel      | The connection is allowed to create,     | 
   | Management   | reconfigure and delete channel           | 
   |              | definitions on the device.               | 
   +--------------+------------------------------------------+ 
   | System       | The connection is allowed to instruct    | 
   | Management   | the device to perform system level       | 
   |              | actions such as bootstrap or reboot.     | 
   +--------------+------------------------------------------+ 
    
10.1.1. PUT /v1/keys/<uuid> 
    
   This request requires "Key Management" privileges on the 
   requesting channel. 
    
   This instructs the device to add the indicated key to its key 
   store. The key is provided in the payload as a CBOR object as 
   defined in 7.4.  above. 
    
   The response code will be one of: 
   +----------+----------------------------------------------+ 
   | Response | Description                                  | 
   +----------+----------------------------------------------+ 
   | 2.01     | The key has been created                     | 
   +----------+----------------------------------------------+ 
   | 2.04     | The key already exists on the device         | 
   +----------+----------------------------------------------+ 
   | 4.01     | The channel does not have privileges to      | 
   |          | manage keys                                  | 
   +----------+----------------------------------------------+ 
   | 4.13     | The device has no space to add more keys     | 
   +----------+----------------------------------------------+ 
    
10.1.2. POST /v1/keys/generate?type=<key_type>&persistent=<boolean> 
    
   This request requires "Key Management" privileges on the 
   requesting channel. 
    
   This instructs the device to create a new key of the indicated 
   type in its key store. 
    
   +----------+----------------------------------------------+ 
   | Type     | Description                                  | 
   +----------+----------------------------------------------+ 
   | 0        | RSA 2048 bits                                | 
   +----------+----------------------------------------------+ 
   | 1        | Elliptic Curve (NIST P-256)                  | 
   +----------+----------------------------------------------+ 

Lucas                   Expires March 17, 2018              [Page 37] 






Internet-Draft           aSSURE Data Security          September 2017 
    

   | 2        | Elliptic Curve (NIST P-384)                  | 
   +----------+----------------------------------------------+ 
   | 3        | Elliptic Curve (NIST P-521)                  | 
   +----------+----------------------------------------------+ 
    
   If the persistent flag is not set, the key will only exist in RAM 
   and will be lost when the device next reboots or loses power. 
    
   If the creation is successful, the device will create an 
   authenticate key as defined in 7.4.  above. The device will add 
   its own ID in the MAP field and create the signature using its 
   device key. The authenticate key is then returned in the response 
   payload. 
    
   The response code will be one of: 
   +----------+----------------------------------------------+ 
   | Response | Description                                  | 
   +----------+----------------------------------------------+ 
   | 2.01     | The key has been created                     | 
   +----------+----------------------------------------------+ 
   | 4.01     | The channel does not have privileges to      | 
   |          | manage keys                                  | 
   +----------+----------------------------------------------+ 
   | 4.13     | The device has no space to add more keys     | 
   +----------+----------------------------------------------+ 
   | 5.01     | Unsupported key type                         | 
   +----------+----------------------------------------------+ 
    
10.1.3. GET /v1/keys/<uuid> 
    
   This request requires "Key Management" privileges on the 
   requesting channel. 
    
   This instructs the device to return the indicated key in its key 
   store. The key is returned in the payload as a CBOR object as 
   defined in 7.4.  above. 
    
   The response code will be one of: 
   +----------+----------------------------------------------+ 
   | Response | Description                                  | 
   +----------+----------------------------------------------+ 
   | 2.05     | The key information has been returned        | 
   +----------+----------------------------------------------+ 
   | 4.01     | The channel does not have privileges to      | 
   |          | return keys                                  | 
   +----------+----------------------------------------------+ 
   | 4.04     | The key does not exist                       | 
   +----------+----------------------------------------------+ 
    
10.1.4. DELETE /v1/keys/<uuid> 
   This request requires "Key Management" privileges on the 
   requesting channel. 

Lucas                   Expires March 17, 2018              [Page 38] 






Internet-Draft           aSSURE Data Security          September 2017 
    

    
   This instructs the device to delete the indicated key from its key 
   store. The key must not be in use by any channel nor must it be 
   used as a reference key by any other keys. The device will not 
   permit any key defined in the bootstrap data to be deleted. 
    
   The response code will be one of: 
   +----------+----------------------------------------------+ 
   | Response | Description                                  | 
   +----------+----------------------------------------------+ 
   | 2.02     | The key has been deleted or did not exist    | 
   +----------+----------------------------------------------+ 
   | 4.01     | The channel does not have privileges to      | 
   |          | manage keys                                  | 
   +----------+----------------------------------------------+ 
   | 4.03     | The key is in use and cannot be deleted at   | 
   |          | this time or is not allowed to be deleted    | 
   +----------+----------------------------------------------+ 
    
10.1.5. GET /v1/keys 
    
   This request requires "Key Management" privileges on the 
   requesting channel. 
    
   This instructs the device to list the keys in its key store. The 
   key list is returned as a CBOR array of authenticated keys as 
   defined in 7.4.  above. For security reasons, no private keys will 
   be disclosed. Instead, if the device has the private data for the 
   key, the string "PRESENT" will be returned as the "private_key" 
   byte string. If the device does not have the private data for the 
   key, the "private_key" byte string will be zero length. 
    
   The response code will be one of: 
   +----------+----------------------------------------------+ 
   | Response | Description                                  | 
   +----------+----------------------------------------------+ 
   | 2.05     | The key list has been returned               | 
   +----------+----------------------------------------------+ 
   | 4.01     | The channel does not have privileges to      | 
   |          | manage keys                                  | 
   +----------+----------------------------------------------+ 
    
10.1.6. PUT /v1/channels 
    
   This request requires "Channel Management" privileges on the 
   requesting channel. 
    
   This instructs the device to create a new channel. The channel 
   configuration will be provided in the request payload in CBOR 
   format as below: 
    
   ARRAY { 

Lucas                   Expires March 17, 2018              [Page 39] 






Internet-Draft           aSSURE Data Security          September 2017 
    

       BYTE STRING local_key_id 
       BYTE STRING peer_key_id   // Zero length if the same as 
                                 // local_key_id 
       ARRAY { 
           BOOLEAN   persistent_across_reboots 
           BOOLEAN   open_immediately 
           BOOLEAN   channel_management_privilege 
           BOOLEAN   system_management_privilege 
           BOOLEAN   key_management_privilege 
           // Additional configuration flags may follow 
       } 
       ARRAY { 
           INTEGER address_type 
           // Address content, structure varies depending on  
           // address_type 
       } 
   } 
   The format of the address content depends on the target device 
   network and physical layer. As support for additional network and 
   physical layers are added, additional address types and associated 
   address content format will be defined. The list of assigned 
   address types is in 12.4.  below. 
    
   The assigned channel ID will be returned in the response payload 
   as a CBOR integer. 
    
   The response code will be one of: 
   +----------+----------------------------------------------+ 
   | Response | Description                                  | 
   +----------+----------------------------------------------+ 
   | 2.01     | The channel has been created                 | 
   +----------+----------------------------------------------+ 
   | 4.01     | The channel does not have privileges to      | 
   |          | manage channels                              | 
   +----------+----------------------------------------------+ 
   | 4.13     | The device has no space to add more channels | 
   +----------+----------------------------------------------+ 
    
10.1.7. PUT /v1/channels/<id> 
    
   As per 10.1.6.  above, "PUT /v1/channels" but where the channel ID 
   is explicitly provided. The request and response payload formats 
   are unchanged. 
    
   Additional response codes may be: 
    
   +----------+----------------------------------------------+ 
   | Response | Description                                  | 
   +----------+----------------------------------------------+ 
   | 2.04     | The channel already exists                   | 
   +----------+----------------------------------------------+ 
    

Lucas                   Expires March 17, 2018              [Page 40] 






Internet-Draft           aSSURE Data Security          September 2017 
    

10.1.8. PUT /v1/channels/<channel_id>/open 
    
   This request requires "Channel Management" privileges on the 
   requesting channel. 
    
   This instructs the device to open the indicated channel. No 
   request payload is provided. 
    
   The response code will be one of: 
   +----------+----------------------------------------------+ 
   | Response | Description                                  | 
   +----------+----------------------------------------------+ 
   | 2.04     | The device will try to open the channel      | 
   +----------+----------------------------------------------+ 
   | 4.01     | The channel does not have privileges to      | 
   |          | manage channels                              | 
   +----------+----------------------------------------------+ 
   | 4.04     | The channel does not exist                   | 
   +----------+----------------------------------------------+ 
    
   Note that a 2.04 response DOES NOT mean that the channel has been 
   successfully opened. Instead, it means that the device WILL TRY to 
   open the channel. This may take some time and the status can be 
   monitored with the channel status request in 10.1.11.  below. 
    
10.1.9. PUT /v1/channels/<channel_id>/close 
    
   This request requires "Channel Management" privileges on the 
   requesting channel. 
    
   This instructs the device to close the indicated channel. No 
   request payload is provided. 
    
   The response code will be one of: 
   +----------+----------------------------------------------+ 
   | Response | Description                                  | 
   +----------+----------------------------------------------+ 
   | 2.04     | The device will try to close the channel     | 
   +----------+----------------------------------------------+ 
   | 4.01     | The channel does not have privileges to      | 
   |          | manage channels                              | 
   +----------+----------------------------------------------+ 
   | 4.04     | The channel does not exist                   | 
   +----------+----------------------------------------------+ 
    
   Note that a 2.04 response DOES NOT mean that the channel has been 
   successfully closed. Instead, it means that the device WILL TRY to 
   close the channel. This may take some time and the status can be 
   monitored with the channel status request in 10.1.11.  below. 
    
10.1.10. DELETE /v1/channels/<channel_id> 
    

Lucas                   Expires March 17, 2018              [Page 41] 






Internet-Draft           aSSURE Data Security          September 2017 
    

   This request requires "Channel Management" privileges on the 
   requesting channel. 
    
   This instructs the device to delete the indicated channel, closing 
   it automatically if it is currently open. No request payload is 
   provided. The device will not permit any channel defined in the 
   bootstrap data to be deleted. 
    
   The response code will be one of: 
   +----------+----------------------------------------------+ 
   | Response | Description                                  | 
   +----------+----------------------------------------------+ 
   | 2.02     | The channel has been deleted or does not     | 
   |          | exist                                        | 
   +----------+----------------------------------------------+ 
   | 2.04     | The channel was open so will be cleanly      | 
   |          | closed then deleted                          | 
   +----------+----------------------------------------------+ 
   | 4.01     | The channel does not have privileges to      | 
   |          | manage channels                              | 
   +----------+----------------------------------------------+ 
   | 4.03     | The channel is not allowed to be deleted     | 
   +----------+----------------------------------------------+ 
    
   Note that after a 2.04 response the client can poll the channel 
   status using the "GET" request as in 10.1.11. below. If the 
   channel is still being closed, the response will be a 2.05 with 
   status = 4. As soon as the close completes, the channel will be 
   deleted and the "GET" request in 10.1.11.  below will return 4.04 
   because the channel no longer exists. 
    
10.1.11. GET /v1/channels/<id> 
    
   This request requires "Channel Management" privileges on the 
   requesting channel. 
    
   This requests the device to return the configuration and status of 
   the channel. No request payload is provided. The channel 
   configuration and status will be provided in the request payload 
   in CBOR format as below: 
    
   ARRAY { 
       ARRAY { 
           // Configuration structure as in 10.1.6.  above 
       } 
       ARRAY { 
           INTEGER  channel_id 
           INTEGER  state 
           // Additional status flags may follow 
       } 
   } 
    

Lucas                   Expires March 17, 2018              [Page 42] 






Internet-Draft           aSSURE Data Security          September 2017 
    

   The "status" integer will be one of: 
   +----------+----------------------------------------------+ 
   | Response | Description                                  | 
   +----------+----------------------------------------------+ 
   | 0        | The channel is closed                        | 
   +----------+----------------------------------------------+ 
   | 1        | The channel is requested to be opened        | 
   +----------+----------------------------------------------+ 
   | 2        | The channel handshake is in progress         | 
   +----------+----------------------------------------------+ 
   | 3        | The channel is open                          | 
   +----------+----------------------------------------------+ 
   | 4        | The channel is being closed                  | 
   +----------+----------------------------------------------+ 
   | 10       | The channel handshake failed because the     | 
   |          | peer did not answer                          | 
   +----------+----------------------------------------------+ 
   | 11       | The channel handshake failed because the     | 
   |          | peer provided the wrong key ID               | 
   +----------+----------------------------------------------+ 
   | 12       | The channel handshake failed because the     | 
   |          | peer failed authentication                   | 
   +----------+----------------------------------------------+ 
   | 13       | The channel has experienced some other error | 
   +----------+----------------------------------------------+ 
    
   The response code will be one of: 
   +----------+----------------------------------------------+ 
   | Response | Description                                  | 
   +----------+----------------------------------------------+ 
   | 2.05     | The channel information has been returned    | 
   +----------+----------------------------------------------+ 
   | 4.01     | The channel does not have privileges to      | 
   |          | manage channels                              | 
   +----------+----------------------------------------------+ 
   | 4.04     | The channel does not exist                   | 
   +----------+----------------------------------------------+ 
    
10.1.12. GET /v1/channels 
    
   This request requires "Channel Management" privileges on the 
   requesting channel. 
   This requests the device to return the configuration and status of 
   all channels. No request payload is provided. The information is 
   returned as a CBOR array of channel responses as defined in 
   10.1.11.  above. 
    
   The response code will be one of: 
   +----------+----------------------------------------------+ 
   | Response | Description                                  | 
   +----------+----------------------------------------------+ 
   | 2.05     | The configuration and status for all         | 

Lucas                   Expires March 17, 2018              [Page 43] 






Internet-Draft           aSSURE Data Security          September 2017 
    

   |          | channels has been returned                   | 
   +----------+----------------------------------------------+ 
   | 4.01     | The channel does not have privileges to      | 
   |          | manage channels                              | 
   +----------+----------------------------------------------+ 
    
10.1.13. PUT /v1/reboot 
    
   This request requires "System Management" privileges on the 
   requesting channel. 
    
   This instructs the device to reboot. The device will reboot after 
   returning the response. No request payload is provided and no 
   response payload is returned. 
    
   The response code will be one of: 
   +----------+----------------------------------------------+ 
   | Response | Description                                  | 
   +----------+----------------------------------------------+ 
   | 2.04     | The device is about to reboot                | 
   +----------+----------------------------------------------+ 
   | 4.01     | The channel does not have privileges to      | 
   |          | manage the system                            | 
   +----------+----------------------------------------------+ 
    
10.1.14. PUT /v1/shutdown 
    
   This request requires "System Management" privileges on the 
   requesting channel. 
    
   This instructs the device to shut down. The device will shut down 
   after returning the response. No request payload is provided and 
   no response payload is returned. 
    
   The response code will be one of: 
   +----------+----------------------------------------------+ 
   | Response | Description                                  | 
   +----------+----------------------------------------------+ 
   | 2.04     | The device is about to shutdown              | 
   +----------+----------------------------------------------+ 
   | 4.01     | The channel does not have privileges to      | 
   |          | manage the system                            | 
   +----------+----------------------------------------------+ 
    
10.1.15. PUT /v1/bootstrap 
    
   This request requires "System Management" privileges on the 
   requesting channel. 
    
   This instructs the device to perform an aSSURE bootstrap. The 
   device will bootstrap after returning the response. No request 
   payload is provided and no response payload is returned. 

Lucas                   Expires March 17, 2018              [Page 44] 






Internet-Draft           aSSURE Data Security          September 2017 
    

    
   The response code will be one of: 
   +----------+----------------------------------------------+ 
   | Response | Description                                  | 
   +----------+----------------------------------------------+ 
   | 2.04     | The device is about to bootstrap             | 
   +----------+----------------------------------------------+ 
   | 4.01     | The channel does not have privileges to      | 
   |          | manage the system                            | 
   +----------+----------------------------------------------+ 
    
10.1.16. GET /v1/ping 
    
   This request requires no privileges on the requesting channel. 
   This is used to check that the device is online and able to 
   respond to requests. 
    
   A payload may be provided. The device will respond with the same 
   payload (or as much of the payload as the device can return if it 
   is a constrained device). The response code will be: 
    
   +----------+----------------------------------------------+ 
   | Response | Description                                  | 
   +----------+----------------------------------------------+ 
   | 2.05     | Ping response                                | 
   +----------+----------------------------------------------+ 
    
10.1.17. GET /v1/info 
    
   This request requires no privileges on the requesting channel. 
    
   This is used to return basic information about the device. The 
   device will return the CBOR structure below: 
    
   ARRAY { 
       BYTE STRING  device_id 
       BYTE STRING  device_mac_address 
       TEXT STRING  device_manufacturer 
       TEXT STRING  device_product_code 
       TEXT STRING  device_serial_number 
       TEXT STRING  device_build_date 
       TEXT STRING  software_manufacturer 
       TEXT STRING  software_product_code 
       TEXT STRING  software_version 
   } 
    
   The only field that must be present is the device_id. All other 
   fields may be zero length if the device is unable to provide them 
   for any reason. 
    
   The response code will be: 
    

Lucas                   Expires March 17, 2018              [Page 45] 






Internet-Draft           aSSURE Data Security          September 2017 
    

   +----------+----------------------------------------------+ 
   | Response | Description                                  | 
   +----------+----------------------------------------------+ 
   | 2.05     | Information returned                         | 
   +----------+----------------------------------------------+ 
    
    
11. Management Server API 
    
11.1. Overview 
    
   The management server must support the registration and presence 
   APIs. The registration API is used to allow devices to be 
   registered with the management system. The presence API is used by 
   devices after bootstrap to inform the management system of their 
   presence on the network. 
    
11.2. Registration API 
    
   The Registration API is used to register the device with the 
   management system when it is installed. The Registration API is a 
   RESTful interface using JSON over HTTPS. The authentication 
   behaviour is determined by the Management Server implementation 
   but either username + passphrase or client certificates are 
   recommended. 
    
11.2.1. POST /v1/devices/<uuid>?case_string=<case_string> 
    
   This is used to register the indicated device UUID with the 
   management system. The case string is provided to prove the device 
   is physically present. The UUID and case string would normally 
   come from a QR code or similar attached to the device (use of an 
   RFID is not recommended as the source for obvious security 
   reasons). 
    
   No payload is returned. The response code will be one of: 
   +--------------+------------------------------------------+ 
   | Response     | Description                              | 
   +--------------+------------------------------------------+ 
   |201 Created   | The new device has been registered       | 
   +--------------+------------------------------------------+ 
   | 401          | The device cannot be registered because  | 
   | Unauthorised | it already exists                        | 
   +--------------+------------------------------------------+ 
   | 503 Service  | The device cannot be registered          | 
   | Unavailable  | at this time                             | 
   +--------------+------------------------------------------+ 
    
   Only a single device is uploaded in each POST request, but the 
   client may re-use the HTTPS session to send additional requests. 
    


Lucas                   Expires March 17, 2018              [Page 46] 






Internet-Draft           aSSURE Data Security          September 2017 
    

11.2.2. POST /v1/devices/<old_uuid>/replace?uuid=<new_uuid> 
    
   This is used to tell the management system that the indicated 
   device with UUID <old_uuid> has been replaced by the device with 
   UUID <new_uuid>. For example, this would occur when a device has 
   failed and a maintenance engineer has replaced it. The management 
   system can then update its database, etc. to allow the new device 
   to "seamlessly replace" the old device (e.g. by applying the old 
   device configuration to the new device). For security reasons, the 
   management system should immediately disable the old device as 
   this call indicates that the old device is no longer in use. 
    
   The new device must be registered with the call in 11.2.1.  above 
   before performing this call to replace the old device. 
    
   No payload is returned. The response code will be one of: 
   +--------------+------------------------------------------+ 
   | Response     | Description                              | 
   +--------------+------------------------------------------+ 
   | 201 Created  | The new device has replaced the old one  | 
   +--------------+------------------------------------------+ 
   | 401          | The old device does not exist, the client| 
   |              | is not allowed to update the state of the| 
   |              | old device, the new device does not exist| 
   |              | or the client is not allowed to update   | 
   |              | the state of the new device.             | 
   +--------------+------------------------------------------+ 
   | 503 Service  | The device cannot be replaced            | 
   | Unavailable  | at this time                             | 
   +--------------+------------------------------------------+ 
    
11.2.3. GET /v1/devices/<uuid>/status 
    
   This is used to get the status of the device. The registration, 
   configuration, bootstrap and presence of a device may take some 
   time. A registration client may obtain the status of the device 
   here to check if the device has entered service. 
    
   If successful, the payload is a JSON structure: 
    
   { 
       status: <value>, 
       description: "<helpful_text>" 
   } 
    
11.2.4. GET /v1/devices/<uuid>/info 
    
   This is used to get the information for the device. This is only 
   available after the device has sent is presence message to the 
   management system. 
    
   If successful, the payload is a JSON structure with the same 

Lucas                   Expires March 17, 2018              [Page 47] 






Internet-Draft           aSSURE Data Security          September 2017 
    

   information as in 10.1.17.  above: 
    
   { 
       "device_id": "<device uuid>", 
       "device_mac_address": "<device MAC address>", 
       "device_manufacturer": "...", 
       "device_product_code": "...", 
       "device_serial_number": "...", 
       "device_build_date": "...", 
       "software_manufacturer": "...", 
       "software_product_code": "...", 
       "software_version": "..." 
   } 
    
   The response code will be one of: 
   +--------------+------------------------------------------+ 
   | Response     | Description                              | 
   +--------------+------------------------------------------+ 
   | 200 OK       | The device information has been returned | 
   +--------------+------------------------------------------+ 
   | 401          | The client is not authorised to access   | 
   | Unauthorised | this device                              | 
   +--------------+------------------------------------------+ 
   | 503 Service  | Device information cannot be returned at | 
   | Unavailable  | this time                                | 
   +--------------+------------------------------------------+ 
    
   Only a single device response is permitted per GET request, but 
   the client may re-use the HTTPS session to send additional 
   requests. 
    
11.3. Presence API 
    
   The Presence API is used by the device to indicate to the 
   management system that its bootstrap process has completed and it 
   is now online in the network. Like the Bootstrap API and Device 
   Management APIs, the Presence API is RESTful using CBOR and CoAP 
   over DTLS. 
    
11.3.1. PUT /v1/devices/<uuid>/info 
    
   This is used by the device to confirm it is active and has 
   completed its bootstrap. 
    
   The device provides the same CBOR structure as in 10.1.17.  above 
   as the request payload. 
    
   No payload is returned. The response code will be one of: 
   +-------------+-------------------------------------------+ 
   | Response    | Description                               | 
   +-------------+-------------------------------------------+ 
   | 2.01 Created| The device presence has been acknowledged | 

Lucas                   Expires March 17, 2018              [Page 48] 






Internet-Draft           aSSURE Data Security          September 2017 
    

   +-------------+-------------------------------------------+ 
   | 4.01        | The device has attempted to provide       | 
   |Unauthorized | information for a different device        | 
   +-------------+-------------------------------------------+ 
    
11.3.2. PUT /v1/devices/<uuid>/goodbye 
    
   This is used by the device to indicate it is deliberately going 
   offline. It will send this to all connected management systems. 
    
   The device will provide a single INTEGER in CBOR format to 
   indicate the reason. 
    
   +---------+-----------------------------------------------+ 
   | Value   | Reason                                        | 
   +---------+-----------------------------------------------+ 
   | 0       | Device is shutting down                       | 
   +---------+-----------------------------------------------+ 
   | 1       | Device has been instructed to reboot by       | 
   |         | Management System                             | 
   +---------+-----------------------------------------------+ 
   | 2       | Device has been instructed to bootstrap by    | 
   |         | Management System                             | 
   +---------+-----------------------------------------------+ 
   | 3       | Device has been instructed to reboot by       | 
   |         | local controls (e.g. button)                  | 
   +---------+-----------------------------------------------+ 
   | 4       | Device has been instructed to bootstrap by    | 
   |         | local controls (e.g. button)                  | 
   +---------+-----------------------------------------------+ 
    
   No payload is returned. The response code will be one of: 
   +-------------+-------------------------------------------+ 
   | Response    | Description                               | 
   +-------------+-------------------------------------------+ 
   | 2.04 Changed| The device goodbye has been acknowledged  | 
   +-------------+-------------------------------------------+ 
   | 4.01        | The device has attempted to provide       | 
   |Unauthorized | information for a different device        | 
   +-------------+-------------------------------------------+ 
    
11.4. Miscellaneous 
    
11.4.1. GET /v1/timestamp 
    
   This is used to get the current time from a trusted source. A 
   device may use this to set its clock without having to include 
   support for other protocols such as NTP. This request may be made 
   by any client with or without authentication. 
    
   No payload is provided. The response is a timestamp in CBOR as 
   defined in 7.11.  above (both integer and fractional parts). 

Lucas                   Expires March 17, 2018              [Page 49] 






Internet-Draft           aSSURE Data Security          September 2017 
    

    
   The response code will be one of: 
   +--------------+------------------------------------------+ 
   | Response     | Description                              | 
   +--------------+------------------------------------------+ 
   | 200 OK       | The timestamp has been returned          | 
   +--------------+------------------------------------------+ 
   | 503 Service  | Device information cannot be returned at | 
   | Unavailable  | this time                                | 
   +--------------+------------------------------------------+ 
    
12. Physical / Network Layer Implementations 
    
12.1. BACnet 
    
   aSSURE traffic is fully compatible with existing BACnet traffic 
   and is identified as Network Control messages using Message Types 
   0x80 - 0x82 and Vendor ID 0x_TBD_. 
    
   Message Types 0x80 through 0x82 are used to identify the aSSURE 
   traffic as belonging to one of three logical groups. 
    
   +-------------+-------------------------------------------+ 
   | Message Type| Description                               | 
   +-------------+-------------------------------------------+ 
   | 0x80        | aSSURE Bootstrap                          | 
   +-------------+-------------------------------------------+ 
   | 0x81        | aSSURE Secure Management Channels         | 
   +-------------+-------------------------------------------+ 
   | 0x82        | aSSURE Secure Data Channels               | 
   +-------------+-------------------------------------------+ 
    
   When an address is indicated in a CBOR message, the address format 
   is: 
    
   ARRAY { 
       INTEGER     0        // Address type 1 = BACnet 
       INTEGER     net 
       BYTE STRING addr      // "len" is the BYTE STRING length 
   } 
    
   If the "net" field is a NULL (CBOR Major: 7, Value: 22 => 0xF6) 
   rather than an INTEGER (CBOR Major: 0), this indicates a local 
   network address. When creating the BACnet NPDU, the NPDU 
   destination specifier for that address would not be present. 
    
12.1.1. aSSURE Bootstrap 
    
   The aSSURE Bootstrap messages are used to identify the bootstrap 
   gateways on the BACnet network and assign a secure data channel 
   for communication with the bootstrap server. This traffic cannot 
   be secured because it happens BEFORE the bootstrap data has been 

Lucas                   Expires March 17, 2018              [Page 50] 






Internet-Draft           aSSURE Data Security          September 2017 
    

   received so the device has no keys for communicating with peers on 
   the local network. 
    
   All Insecure Control Messages are RESTful using CoAP in the NSDU 
   part of an NPDU frame. They are therefore independent of any 
   specific BACnet LLC such as BACnet IP or BACnet MS/TP. 
    
12.1.1.1. GET /v1/gateway/<bootstrap_server_id> 
    
   This message is broadcast on BACnet to discover the best gateway 
   capable of routing traffic to the indicated bootstrap server. No 
   payload is provided. 
    
   All gateways capable of routing traffic to the broadcast server 
   should respond with their assigned priority for handling traffic 
   (or zero if it has not been explicitly set). This means that a 
   device may receive multiple replies to its GET message and it 
   should be able to handle this. The device should wait a reasonable 
   time (e.g. 5 seconds) for all replies to be received and should 
   pick the gateway with the lowest priority value. If multiple 
   gateways respond with the same lowest priority value, a gateway 
   should be chosen at random. 
    
   If no gateways respond, the device should backoff and retry. 
    
   The gateway response should be a 2.00 status code with a CBOR 
   payload containing the following content: 
    
   INTEGER priority 
    
12.1.1.2. POST /v1/gateway/channel?server=<bootstrap_server_id> 
    
   This message is sent to the chosen gateway that responded to the 
   discovery message described in 12.1.1.1.  above. The gateway 
   should assign a channel that routes messages to the indicated 
   bootstrap server. No payload is provided. If successful, the 
   gateway response should be a CBOR payload with the following 
   content: 
    
   INTEGER channel_id 
   BYTE STRING token 
    
   The cookie should be a random string of at least 4 bytes. The 
   device must provide this token when closing the channel. 
    
   The status code will be one of: 
   +----------+----------------------------------------------+ 
   | Response | Description                                  | 
   +----------+----------------------------------------------+ 
   | 2.01     | The channel has been created                 | 
   +----------+----------------------------------------------+ 
   | 4.04     | The gateway cannot find a route to the       | 

Lucas                   Expires March 17, 2018              [Page 51] 






Internet-Draft           aSSURE Data Security          September 2017 
    

   |          | indicated bootstrap server                   | 
   +----------+----------------------------------------------+ 
   | 5.03     | The gateway cannot create the channel at     | 
   |          | this time                                    | 
   +----------+----------------------------------------------+ 
    
12.1.1.3. DELETE/v1/gateway/channel/<channel_id>?token=<token_in_hex> 
    
   This message is sent to the chosen gateway that responded to the 
   discovery message described in 12.1.1.1.  above. The gateway 
   should assign a channel that routes messages to the indicated 
   bootstrap server. No payload is provided and no payload is 
   returned. The device must offer the token returned by the gateway 
   in the channel assign request in 12.1.1.2.  above and the DELETE 
   request must come from the same network address as the POST 
   request. 
    
   The status code will be one of: 
   +----------+----------------------------------------------+ 
   | Response | Description                                  | 
   +----------+----------------------------------------------+ 
   | 2.02     | The channel has been deleted                 | 
   +----------+----------------------------------------------+ 
   | 4.01     | The device is not allowed to delete this     | 
   |          | channel                                      | 
   +----------+----------------------------------------------+ 
    
    
12.1.2. aSSURE Secure Management Channels 
    
   These messages are used for encrypted aSSURE-protected DTLS 
   sessions accessing the Device Management API defined in 10.  
   above. All messages on the aSSURE Secure Management Channel have 
   the following CBOR structure: 
    
   INTEGER channel_id 
   BYTE STRING dtls_data 
    
12.1.3. aSSURE Secure Data Channels 
    
   These messages are used for all other aSSURE-protected DTLS 
   session such as secure bootstrap or peer-to-peer channels. All 
   messages on the aSSURE Secure Data Channel have the following CBOR 
   structure: 
    
   INTEGER channel_id 
   BYTE STRING dtls_data 
    
12.2. IP 
    
   When deployed on IP networks, aSSURE traffic uses UDP port TBD for 
   Secure Management Channels and UDP port TBD for Secure Data 

Lucas                   Expires March 17, 2018              [Page 52] 






Internet-Draft           aSSURE Data Security          September 2017 
    

   Channels. The UDP payload is the DTLS data. The channel ID is 
   inferred from the local port and remote address and port. 
    
   When compared to BACnet, the "aSSURE Bootstrap" messages are not 
   required because an IP network is already able to route traffic 
   directly to the bootstrap servers without the explicit 
   establishment of a channel. The device is assumed to be capable of 
   DHCP and DNS to obtain a local IP address, determine the subnet 
   gateway and resolve the bootstrap server FQDN. 
    
   When an address is indicated in a CBOR message, the address format 
   is: 
    
   ARRAY { 
       INTEGER     1           // Address type 1 = IP 
       BYTE STRING remote_addr // 4 bytes for IPv4,network byte order 
                               //16 bytes for IPv6,network byte order 
       INTEGER     local_port  // Local UDP port, 0=any 
       INTEGER     remote_port // Remote UDP port 
   } 
    
12.2.1. Bootstrap Server FQDN 
    
   The bootstrap server ID can be converted to a Fully Qualified 
   Domain Name (FQDN) by suffixing the decimal value of the ID with 
   the string ".*TBD*.net". Similarly, an aSSURE bootstrap server 
   FQDN can be converted to the server ID by reversing the process. 
    
12.3. Bluetooth 
    
   Bluetooth implementations should use the "Internet Protocol 
   Support Profile" to allow the device to send and receive IPv6 
   traffic. 
    
   When an address is indicated in a CBOR message, the address format 
   should be type 1 as in 12.2.  above. 
   When a Bluetooth MAC address is specifically indicated in a CBOR 
   message, the address format is: 
    
   ARRAY { 
       INTEGER     2       // Address type 2 = Bluetooth 
       BYTE STRING mac     // MAC address, 6 bytes 
   } 
    
   In all other respects, the Bluetooth implementation follows the 
   "IP" implementation as in 12.2.  above. 
    
12.4. Assigned address types 
   +-------------+-------------------------------------------+ 
   | Address Type| Description                               | 
   +-------------+-------------------------------------------+ 
   | 0           | BACnet NPDU address                       | 

Lucas                   Expires March 17, 2018              [Page 53] 






Internet-Draft           aSSURE Data Security          September 2017 
    

   +-------------+-------------------------------------------+ 
   | 1           | Destination IP address and UDP ports      | 
   +-------------+-------------------------------------------+ 
   | 2           | Bluetooth MAC address                     | 
   +-------------+-------------------------------------------+ 
13. DTLS Connection Configuration Examples 
    
13.1. Example Topology 
    
     ***********       ***********       +++++++++++ 
     +Device G +<-ec-->*Device A *<-ec-->*Device B * 
     +++++++++++       ***********       *********** 
      ^      ^          ^   |    ^        /       ^  
      |   |   \        /    |     \      R        |  
      e   e    \      e     e      s    S         R  
      c   c     R    c      c       s  A          S  
      |   |      SA-----RSA-------RS \/           A  
      |   e        /        |       A/\           |  
      e    c-ec---/-e       e       /\ \          R  
      c          e   c      c      /  \ s         S  
      |         c     \     |     /    \ s        A  
      |        /       \    |    /      \ \       |  
      v       v         v   v   v        v v      v  
     ***********      OOOOOOOOOOOO       +++++++++++ 
     *         *      oManagemento       +         + 
     *Device F *--ec->o  System  o<-RSA--+Device C + 
     ***********      OOOOOOOOOOOO       +++++++++++ 
           ^            ^   ^  ^             ^      
           |           /    |   \            |      
           |          /     |    \           |      
           s         /      s     \          s      
           s     ss-/       s      \-ss      s      
           |    /           |           \    |      
           |   /            |            \   |      
           |  /             |             \  |      
      _____v_/_         _________         _\_v_____ 
     /         \       /         \       /         \ 
     |Device E |<--ss->|Device E |<-ss-->|Device D | 
     |Service X|       |Service Y|       |         | 
     \________ /       \_________/       \_________/ 
 
*** - (Device A & F) Elliptic Curve and Shared Secret Capable 
+++ - (Device C) RSA and Shared Secret Capable 
 
*** _ (Device G) Elliptic Curve, RSA and Shared Secret Capable 
+++   (EC Device Key) 
 
+++ _ (Device B) Elliptic Curve, RSA and Shared Secret Capable 
***   (RSA Device Key) 
 
___ - (device D and E) Only Shared Secret Capable 
      (Shared Secret Device Key) 

Lucas                   Expires March 17, 2018              [Page 54] 






Internet-Draft           aSSURE Data Security          September 2017 
    

 
"ec", "ss", "RSA" are the channels 
                        DTLS Connection Example Topology 
    
13.2. Elliptic Curve device . Elliptic Curve device 
    
   e.g. Device A . Device F 
   Both endpoints have Elliptic Curve keys so no additional keys need 
   to be created. Each endpoint is sent a channel definition 
   indicating the local device key, the peer device key, the peer 
   address and the privileges for the channel. 
    
13.3. Elliptic Curve device . RSA device 
    
   We cannot use the two device keys to directly secure the DTLS 
   connection. There are three possible solutions to allow a secure 
   link. These are presented in the order of most to least preferred. 
    
13.3.1. Option 1 - Issue EC key to RSA device 
    
   e.g. Device A . Device B 
   If the RSA device can support Elliptic Curve keys, then a new 
   Elliptic Curve key should be created on (or issued to) the RSA 
   device by the Management System. The Management System should sign 
   the new key as assigned to the device. 
    
   Now both devices have an EC key, so 13.2.  above can be followed. 
    
13.3.2. Option 2 - Issue RSA key to EC device 
    
   e.g. Device C . Device G 
   If the EC device can support RSA keys, then a new RSA key should 
   be created on (or issued to) the EC device by the Management 
   System. The Management System should sign the new key as assigned 
   to the device. 
    
   Now both devices have an RSA key, so 13.5.  below can be followed. 
    
13.3.3. Option 3 - Issue Shared Secret to both devices 
    
   e.g. Device A . Device C 
   Shared secrets must be used, so 13.7.  below is followed. 
    
13.4. Elliptic Curve device . Shared Secret device 
    
   e.g. Device F . Device E (Service X) 
   Shared secrets must be used, so 13.7.  below is followed. 
    
13.5. RSA device . RSA device 
    
   e.g. Device B . Device C 
   Both endpoints have RSA key so no additional keys need to be 

Lucas                   Expires March 17, 2018              [Page 55] 






Internet-Draft           aSSURE Data Security          September 2017 
    

   created. Each endpoint is sent a channel definition indicating the 
   local device key, the peer device key, the peer address and the 
   privileges for the channel. 
    
13.6. RSA device . Shared Secret device  
    
   e.g. Device C . Device D 
   Shared secrets must be used, so 13.7.  below is followed. 
    
13.7. Shared Secret device . Shared Secret device 
    
   e.g. Device D . Device E (Service Y) 
   The management system must issue a new shared secret (called the 
   "Channel Key") to both devices to identify the channel. Each 
   endpoint is sent a channel definition indicating the Channel Key, 
   the peer address and the privileges for the channel. 
                     









































Lucas                   Expires March 17, 2018              [Page 56] 






Internet-Draft           aSSURE Data Security          September 2017 
    

14. Message Sequence Diagrams 
    
14.1. Manufacturing Flow 
    
+------+ +--------+ +--------+ +--------+ +------------+  +---------+ 
|DEVICE| | MAKER  | | MAKER  | |IDENTITY| |REGISTRATION|  |BOOTSTRAP| 
|      | |        | |GATEWAY | | SERVER | | SERVER     |  | SERVER  | 
+------+ +--------+ +--------+ +--------+ +------------+  +---------+ 
  |         |             |     |                   |             |   
 []<--UUID--|             |     |                   |             |   
 [Key Generation]         |     |                   |             |   
 []UUID+KEY->             |     |                   |             |   
  |        []POST         |     |                   |             |   
  |        []/v1/devices->[]    |                   |             |   
  |        []             []-CheckDeviceExists()--->[]            |   
  |        []             []    |                   []            |   
  |        []             []<-------FALSE-----------[]            |   
  |        []             []    |                   |             |   
  |        []             []-----CreareDevice()---->[]            |   
  |       [Key]           []    |                   []            |   
  |     [Encryption]      []<--------ACK------------[]            |   
  |        []             []    |                   |             |   
  |        []             []--------------CreateDevice()--------->[]  
  |        []             []    |                   |             []  
  |        []             []<-----------------ACK-----------------[]  
  |        []             []    |                   |             |   
  |        []             []SUBMIT device data      |             |   
  |        []             []--->|                   |             |   
  |        []<201 Created-[]    []                  |             |   
  |         |                [Key Decryption]       |             |   
  |         |      [Bootstrap and Registration Identity]          |   
  |         |                [Generation]           |             |   
  |         |                   []ISSUE device bootstrap data---->|   
  |         |                   []                  |             |   
  |         |                   []ISSUE device      |             |   
  |         |                   |   registration    |             |   
  |         |                   |       data------->|             |   
  |         |                   |                   |             |   
  |         |                   |                   []            []  
  |         |                   |                 IMPORT       IMPORT 
  |         |                   |                  data         data  
  |         |                   |                   []            []  
  |         |                   |                   |             |   
  |         |                   |             Ready for    Ready for  
  |         |                   |               device     owner data 
  |         |                   |           registration     upload   
  |         |                   |                   |             |   
 
                       Manufacturing Flow Sequence Diagram 




Lucas                   Expires March 17, 2018              [Page 57] 






Internet-Draft           aSSURE Data Security          September 2017 
    

14.2. Management System Preparation 
    
+------------+                    +-------+ 
| MANAGEMENT |                    | OWNER | 
|   SYSTEM   |                    |GATEWAY| 
+------------+                    +-------+ 
      |                                |    
      []                               |    
   Certificate                         |    
   Generation                          |    
      []             POST              |    
      []   /v1/managementsystems       |    
      []------------------------------>[]   
      []                               []   
      []      201 Created UUID         []   
      []<------------------------------[]   
      []                               |    
      |                                |  
 
Registration of the Management System with the Trusted Authority 
 
                 Management System Preparation Sequence Diagram 



































Lucas                   Expires March 17, 2018              [Page 58] 






Internet-Draft           aSSURE Data Security          September 2017 
    

14.3. Device Registration 
    
+------+ +---------+ +----------+ +-------+ +---------+ +-----------+ 
|DEVICE| |INSTALLER| |MANAGEMENT| | OWNER | |BOOTSTRAP| REGISTRATION| 
|      | |         | |  SERVER  | |GATEWAY| | SERVER  | |   SERVER  |  
+------+ +---------+ +----------+ +-------+ +---------+ +-----------+ 
  |         |             |            |            |             |   
[Installed  |             |            |            |             |   
 On site  ] |             |            |            |             |   
  |         |             |            |            |             |   
  |------->[]             |            |            |             |   
  | QR Code[]------------>[]           |            |             |   
  | scanned[] Upload UUID []           |            |             |   
  |        [] and case ID []           |            |             |   
  |        []             []  PUT      |                          |   
  |        []             []/v1/devices/<id>/owner  |             |   
  |        []             []---------->[]           |             |   
  |        []             []           []     Set DeviceOwner()   |   
  |        []             []           []------------------------>[]  
  |        []             []           []          ACK            []  
  |        []             []           []<------------------------[]  
  |        []             []   200 OK  []           |             |   
  |        []             []<----------[]           |             |   
  |        []     ACK     []           |            |             |   
  |        []<------------[]           |            |             |   
  |         |             |            |            |             |   
  |         |             |            |            |             |   
 
Registration of the device with the management systems 
 
                        Device Registration Sequence Diagram 

























Lucas                   Expires March 17, 2018              [Page 59] 






Internet-Draft           aSSURE Data Security          September 2017 
    

14.4. Device Ownership State Machine 
    
                O                           
                |                           
                |                           
                |                           
                V                           
          +------------+                     
          |   UNOWNED  |                     
          |            |<-----------------  
          +------------+                  | 
                |                         | 
                |                         | 
                |POST                     |POST 
                |/v1/devices/<uuid>/owner |/v1/devices/<uuid>/release 
                |                         | 
                V                         | 
          +------------+                  | 
          |   OWNED    |                  | 
  ------->|            |------------------  
 |        +------------+                     
 |          |                                
 |  POST    |                                
  ----------                                 
    /v1/devices/<uuid>/transfer              
 
                           Device Ownership State Machine 
    




























Lucas                   Expires March 17, 2018              [Page 60] 






Internet-Draft           aSSURE Data Security          September 2017 
    

14.5. Device Configuration and Bootstrap 
    
+------+ +----------------+ +----------+ +----------+ +------------+ 
|DEVICE| |  MANAGEMENT    | |OWNER     | |BOOTSTRAP | |REGISTRATION| 
|      | |    SYSTEM      | |GATEWAY   | | SERVER   | |   SERVER   | 
+------+ +----------------+ +----------+ +----------+ +------------+ 
  |         |                    |                 |             | 
  |     [Device Registration     |                 |             | 
  |      Completed]              |                 |             | 
  |        []                    |                 |             | 
  |        []     GET            |                 |             | 
  |        []/v1/devices/<uuid>/configuration      |             | 
  |        []------------------->[]                |             | 
  |        []                    []                |             | 
  |        []                    []GetDeviceData() |             | 
  |        []                    []-------------->[]GetDeviceOwner() 
  |        []                    []               []------------>[] 
  |        []                    []               []   [Owner]   [] 
  |        []                    []               []<------------[] 
  |        []                    []     [data]    []             | 
  |        []                    []<--------------[]             | 
  |        []                    []                |             | 
  |        []     200 OK [data]  []                |             | 
  |        []<-------------------[]                |             | 
  |        []                    |                 |             | 
  |         |                    |                 |             | 
[Power      |                    |                 |             | 
 Applied]   |                    |                 |             | 
  |         |                    |                 |             | 
 []       GET /v1/devices/<uuid>/bootstrap         |             | 
 []---------------------------------------------->[]             | 
 []         |                    |                []             | 
 []         |   200 OK [image]   |                []             | 
 []<----------------------------------------------[]             | 
 []         |                    |                 |             | 
[Validate and                    |                 |             | 
 decrypt bootstrap               |                 |             | 
 image]     |                    |                 |             | 
 []         |                    |                 |             | 
[Apply bootstrap                 |                 |             | 
 Image]     |                    |                 |             | 
 []         |                    |                 |             | 
 []PUT /v1/devices/<uuid>/info   |                 |             | 
 []------->[]                    |                 |             | 
 [] <data> []                    |                 |             | 
 []<-------[]                    |                 |             | 
  |         |                    |                 |             | 
  |         |                    |                 |             | 
    
                Device Configuration and Bootstrap Sequence Diagram 



Lucas                   Expires March 17, 2018              [Page 61] 






Internet-Draft           aSSURE Data Security          September 2017 
    

14.6. Device Configuration and Bootstrap (Walled Garden) 
+------+  +-------+ +-------+ +-------+ +-------+ +------+ +--------+ 
|DEVICE|  |WALLED | |WALLED | |MANAGE | |OWNER  | |BOOT    | REG    | 
|      |  |BOOT   | |MANAGE | |SYSTEM | |GATEWAY| |SERVER| |SERVER  | 
+------+  +-------+ +-------+ +-------+-+-------+ +------+ +--------+ 
  |          |            |[Device Reg Done] |          |         |   
  |          |            |      []          |          |         |   
  |          |            |      [-GET------>]          |         |   
  |          |            |      [] ?/config[]          []        |   
  |          |            |      []         [-GetDevData ]        |   
  |          |            |      []         []---------->]        |   
  |          |            |      []         []          [GetDevOwner  
  |          |            |      []         []          [--------->]  
  |          |            |      []         []          [] owner  []  
  |          |            |      []         []   data   [<---------]  
  |          |            |      [] 200 OK  []<----------]        []  
  |          |            |      []<---------]          []        |   
  |          |            |      []         []          |         |   
  |          |        (Build Bootstrap Image)|          |         |   
  |          |            |      []          |          |         |   
  |          |<------------------[]EXPORT device bootstrap data   |   
  |          |            |<-----[]EXPORT device management data  |   
  |          []           []      |          |          |         |   
  |        IMPORT       IMPORT    |          |          |         |   
  |   bootstrap data   management data       |          |         |   
  |          []           []      |          |          |         |   
  |          |            |       |          |          |         |   
[Power Applied]           |       |          |          |         |   
  []         |            |       |          |          |         |   
  [-GET----->[]           |       |          |          |         |   
  []?/bootstrap           |       |          |          |         |   
  []         []           |       |          |          |         |   
  [] 200 OK  []           |       |          |          |         |   
  []<---------]           |       |          |          |         |   
  [] (image) []           |       |          |          |         |   
  []                      |       |          |          |         |   
[Validate and decrypt     |       |          |          |         |   
 Bootstrap image]         |       |          |          |         |   
[Apply bootstrap image]   |       |          |          |         |   
  []         |            |       |          |          |         |   
  []         |            []      |          |          |         |   
  []-POST ?/info---------->]      |          |          |         |   
  []         |            []      |          |          |         |   
  []<----------------------]      |          |          |         |   
  []         |            []      |          |          |         |   
  |          |            |       |          |          |         |   
 
?/ is /v1/devices/<uuid>/ 
Configuration of the device to connect to the management system 
 
                Device Configuration and Bootstrap Sequence Diagram 
                                                     (Walled Garden) 

Lucas                   Expires March 17, 2018              [Page 62] 






Internet-Draft           aSSURE Data Security          September 2017 
    

14.7. Device Change Owner 
    
+------+ +--------+ +--------+ +--------+ +----------+ +------------+ 
|DEVICE| | MAKER  | | MAKER  | |OWNER   | |BOOTSTRAP | |REGISTRATION| 
|      | |SYSTEM A| |SYSTEM B| |GATEWAY | | SERVER   | |   SERVER   | 
+------+ +--------+ +--------+ +--------+ +----------+ +------------+ 
  |         |             |           |            |             | 
 []<-data->[]             []---GET--->]            |             | 
 []        []             []?/configuration        |             | 
 []        []             []         []            |             | 
 []        []             []         []GetDeviceData()           | 
 []        []             []         []----------->[]GetDeviceOwner() 
 []        []             []         []            []----------->[] 
 []        []             []         []            []  [Mgmt B]  [] 
 []        []             []         []UNAUTHORISED[]<-----------[] 
 []        []             []   403   []<-----------[]            | 
 []        []             []<--------[]            |             | 
 []        []             |  Forbidden|            |             | 
 []        []  PUT        |           |            |             | 
 []        []------------------------>]            |             | 
 []        []?/transfer?mgmtid=$MgmtB[] SetDeviceOwner("Mgmt B") | 
 []        []             |          []------------------------->[] 
 []        []             |          []            |   Reset     [] 
 []        []             |          []            |   Device    [] 
 []        []             |          []            |  Bootstrap()[] 
 []        []             |          []            []<-----------[] 
 []        []             |          []            []   ACK      [] 
 []        []             |          []            []----------->[] 
 []        []             |          []     ACK    |             [] 
 []        []          200 OK        []<-------------------------[] 
 []        []<-----------------------[]            |             | 
 []<-------[]             |           |            |             | 
 []  PUT /v1/bootstrap    |           |            |             | 
 []        []             |           |            |             | 
 []-------->]             |           |            |             | 
 [] PUT ?/goodbye         |           |            |             | 
 []        []             |           |            |             | 
 []         |             |           |            |             | 
 []-----------GET /v1/devices/<uuid>/bootstrap---->[]            | 
 []         |             |           |            []            | 
 []<-----------------  204 No Content--------------[]            | 
 []         |             |           |            |             | 
  |         |             |           |            |             | 
 [sleeps]   |             |           |            |             | 
  |         |             |           |            |             | 
  |         |             |           |            |             | 
  |         |             |           |            |             | 
 
                 Device Change Owner Sequence Diagram (first part) 
                     



Lucas                   Expires March 17, 2018              [Page 63] 






Internet-Draft           aSSURE Data Security          September 2017 
    

  |         |             |           |            |             | 
+------+ +--------+ +--------+ +--------+ +----------+ +------------+ 
|DEVICE| | MAKER  | | MAKER  | |OWNER   | |BOOTSTRAP | |REGISTRATION| 
|      | |SYSTEM A| |SYSTEM B| |GATEWAY | | SERVER   | |   SERVER   | 
+------+ +--------+ +--------+ +--------+ +----------+ +------------+ 
[sleeps]    |             |           |            |             | 
  |         |             []---GET--->]            |             | 
  |         |             []?/configuration        |             | 
  |         |             []         []            |             | 
  |         |             []         []GetDeviceData()           | 
  |         |             []         []----------->[]GetDeviceOwner() 
  |         |             []         []            []----------->[] 
  |         |             []         []            []  [Mgmt B]  [] 
  |         |             []  200 OK []    [data]  []<-----------[] 
  |         |             []  [data] []<-----------[]            |  
  |         |             []<--------[]            |             |  
  |         |             []          |            |             |  
  |         | [Build bootstrap image] |            |             |  
  |         |             []          |            |             |  
  |         |             [] POST ?/bootstrap      |             |  
  |         |             []-------->[]            |             |  
  |         |             []         []SetDeviceBootstrap()      |  
  |         |             []         []----------->[]            |  
  |         |             []         []            []GetDeviceOwner() 
  |         |             []         []            []----------->[] 
  |         |             []         []            []  [Mgmt B]  [] 
  |         |             []         []     ACK    []<-----------[] 
  |         |             []  200 OK []<-----------[]            |  
  |         |             []<--------[]            |             |  
[wakes up]  |             |           |            |             | 
  |         |             |           |            |             | 
 []         |             |           |            |             | 
 []-----------GET /v1/devices/<uuid>/bootstrap---->[]            | 
 []         |             |           |            []            | 
 []<-----------------------[image]-----------------[]            | 
 []         |             |           |            |             | 
[Validate and decrypt bootstrap data] |            |             | 
 []         |             |           |            |             | 
[Apply bootstrap data]    |           |            |             | 
 []         |             |           |            |             | 
 []-PUT ?/info----------->[]          |            |             | 
 []         |             []          |            |             | 
 []        [data]         []          |            |             | 
 []<--------------------->[]          |            |             | 
  |         |              |          |            |             | 
 
?/ is /v1/devices/<uuid>/ 
Device Change of Ownership 
Change the management system authorized for the device 
 
                 Device Change Owner Sequence Diagram (second part) 
 

Lucas                   Expires March 17, 2018              [Page 64] 






Internet-Draft           aSSURE Data Security          September 2017 
    

15. Configuration and Bootstrap Data Formats 
    
15.1. Overview 
    
   The bootstrap data is critical to the device to determine 
   ownership and allow authentication of the management system. 
   Additional parameters may be provided to the device as part of the 
   bootstrap data. The Management System uploads the bootstrap data 
   for a device to the bootstrap server so that the bootstrap server 
   can be provide it to the device during the bootstrap sequence. he 
   Management System therefore encrypts the bootstrap data so that 
   only the target device can decode it (in the case of shared secret 
   devices, the Identity Service is also theoretically capable of 
   this decryption). This protects the data from exposure should the 
   bootstrap server be compromised. 
    
   The Management System needs to know what information the device 
   needs to complete its bootstrap and it requests this in the 
   request defined in 9.3.6.  above. 
    
15.2. Configuration data format 
    
   The configuration data for a device provides the manufacturing 
   data for the device and information about the key to use to 
   encrypt the bootstrap data. The data is in JSON format as below: 
   { 
     "device": {   
       "id": "<device UUID>", 
       "bootstrap_server": <bootstrap server ID used by device>, 
       "capabilities": {   // Device bootstrap capabilities 
         "ec_capable": <boolean>, 
         "rsa_capable": <boolean>, 
         "sha384_capable": <boolean>, 
         "sha512_capable": <boolean>, 
         "aes256_capable": <boolean>, 
         // Additional capabilities may be added in the future 
       }, 
     }, 
     "authenticated_keys": [ 
       // Array of base-64 encoded key identity strings as in 
       // 7.4.  above 
     ], 
     "owner_information": "<base64-encoded signed owner data  
                                             in 15.3.  below>", 
     "parameter_choices": [ 
         // List of sets of parameter choices. The Management 
         // System should provide exactly one of the sets of 
         // parameters, but it may choose to provide a different 
         // parameter set if it has additional information about 
         // what the device can support. 
     ], 
   } 

Lucas                   Expires March 17, 2018              [Page 65] 






Internet-Draft           aSSURE Data Security          September 2017 
    

    
   The format of the "parameter_choices" array depends on the types 
   of messages that are required by the device. The exact format is 
   TBD at this time. 
    
15.3. Device connection to the bootstrap server using DTLS using 
                                              pre-shared secrets 
    
   The array of "authenticated_keys" provided in the configuration 
   data will include a bootstrap server key. This key and all keys 
   that it relies on to derive it from the device key must be 
   provided to the device by the bootstrap server during the DTLS 
   handshake so that the device can establish the DTLS connection. 
   The bootstrap service in the Trusted Authority will do this 
   automatically. If a bootstrap service is used within the Walled 
   Garden, it must be careful to include all these keys in the 
   correct order (from device key to bootstrap server) so that the 
   device can derive the key necessary for the DTLS session. 
    
15.4. Device connection to the bootstrap server using DTLS using 
                                                     public keys 
    
   There is a special requirement for the device behaviour when 
   establishing the DTLS connection to the bootstrap server. The DTLS 
   handshake (with extensions as in RFC-7250 allowing raw public 
   keys) uses public keys rather than certificates, so the device 
   cannot authenticate the bootstrap server key during the DTLS 
   handshake. 
    
   The device must therefore temporarily accept the public key from 
   the bootstrap server during the DTLS handshake and download the 
   bootstrap data. The device must then check that the public key 
   from the bootstrap server is in the list of identities in the 
   bootstrap and that it has the "Bootstrap Service" identity class. 
    
   Once the identity of the bootstrap server has been confirmed, 
   validation of the bootstrap data can continue. If the identity of 
   the bootstrap server cannot be confirmed, the bootstrap data 
   should be discarded. 
    
15.5. Bootstrap data format 
    
   The bootstrap data is constructed by the management system based 
   on the configuration data and the additional information that the 
   management system needs to provide. 
    
   The bootstrap data is in CBOR format comprises three sections - a 
   header, the encrypted content and the signature. The header 
   includes one or more authenticated keys and the owner information. 
   All authenticated keys in the configuration data must be included 
   in the authenticated key list in the order provided. The 
   management system may then append additional keys if it wishes. 

Lucas                   Expires March 17, 2018              [Page 66] 






Internet-Draft           aSSURE Data Security          September 2017 
    

   The order is important because the device will validate and import 
   the authenticated keys in the order provided. If a key is invalid 
   or depends on a key that is not yet imported, the bootstrap data 
   will be rejected. 
    
   The owner information tells the device the number of owners the 
   device has had. This number starts at zero and is incremented each 
   time the owner changes. The device must store this number in non 
   volatile memory and only accept bootstrap data if the owner 
   sequence_number in the bootstrap data is the same or higher than 
   the owner_sequence_number stored in non-volatile memory. This 
   prevents replay attacks of older owner data in an attempt to 
   reclaim ownership of a device. The owner data must be signed by a 
   manufacturer or registration identity as defined in 7.7.  above. 
    
   ARRAY { 
     // One or more authenticated key definitions in 7.4.  above 
     ARRAY {  
       ...  // Authenticated key definition 
     } 
    
     // Owner information 
     ARRAY { 
       INTEGER content  //"Owner Content Type" as in 7.5.  above 
       INTEGER owner_sequence_number 
       ARRAY { 
         // Signature for owner data, provided by bootstrap 
         // server as in 7.3.  above 
       } 
     } 
     // End of owner information 
    
     // Start of encryption information 
     BYTE STRING decryption_key_id  // Key UUID 
     BYTE STRING encrypted_payload 
    
     // Signature for the entire bootstrap data 
     ARRAY { 
       // Signature as in 7.3.  above, signed by Management  
       // Systems key 
       // Signature covers ENCRYPTED payload, so signature  
       //.validation is done before decryption 
     } 
   } 
    
15.5.1. Payload protected by Elliptic Curve keys 
    
   If the decryption key refers to an Elliptic Curve key, the 
   encrypted_payload is a Cryptographic Message Syntax object 
   containing an enveloped-data block (see RFC 5652 and RFC 5753). 
   The enveloped-data should be encrypted using the "Standard" 
   variation of Ephemeral Static ECDH (see RFC 5753 section 3.1). The 

Lucas                   Expires March 17, 2018              [Page 67] 






Internet-Draft           aSSURE Data Security          September 2017 
    

   default choices for encryption cipher and hash function should be 
   AES-128 and SHA-256 respectively. 
    
   The "enveloped-data", after decryption, contains the payload CBOR 
   structure as defined in 15.5.4.  below. 
    
15.5.2. Payload protected by RSA keys 
    
   If the decryption key refers to an RSA key, then the 
   encrypted_payload is a Cryptographic Message Syntax object 
   containing an enveloped-data block (see RFC 5652). 
    
   The enveloped-data should be encrypted using RSAES-OAEP (see RFC 
   8017 section 7.1). The default choices for encryption cipher and 
   hash function should be AES-128 and SHA-256 respectively. 
   The SHA-1 hash should NOT be used. 
    
   The "enveloped-data", after decryption, contains the payload CBOR 
   structure as defined in 15.5.4.  below. 
    
15.5.3. Payload protected by shared secrets 
    
   If the decryption key refers to a shared secret then the 
   encrypted_payload contains the CBOR structure below. The salt, 
   iterations_or_cipher and encrypted_secret fields are used to 
   derive a decryption key for the cipher in the same way as a 
   derived secret is obtained in section 7.2.  above. This key is 
   then used with the indicated cipher_suite with the cipher_IV and 
   optional tag to decrypt the encrypted_data. 
    
   ARRAY { 
     BYTE STRING     salt 
     INTEGER         iterations_or_cipher 
     BYTE_STRING     encrypted_secret 
     INTEGER         cipher_suite  // As in 7.8.  above 
     BYTE STRING     cipher_IV 
     BYTE STRING     tag        // Zero length for CBC ciphers 
     BYTE STRING     encrypted_data 
   } 
    
   The "encrypted_data", after decryption, contains the payload CBOR 
   structure as defined in 15.5.4.  below. 
    
15.5.4. Decrypted payload content 
    
   The payload has the following CBOR format: 
   ARRAY { 
     BYTE STRING coap_message0 
     BYTE STRING coap_message1 
     ... 
     BYTE STRING coap_messageN 
   } 

Lucas                   Expires March 17, 2018              [Page 68] 






Internet-Draft           aSSURE Data Security          September 2017 
    

    
   Each message is replayed to the local API in the order in the 
   payload. 
    
   If the device requires configuration messages to be replayed to a 
   different API, a local API function should be created that 
   understands how to replay the message content to the other API.  
   E.g. replay of a BACnet APDU to the local device. 
    
16. Security Considerations 
    
   This whole draft concerns security considerations. See Chapter 6. 
    
17. IANA Considerations 
    
   None 
    
18. Conclusions 
    
   End to end certificate handling and encrypted communication using 
   "channels" within the DTLS framework can easily be achieved 
   without inventing new standards, just by enhancing current ones. 
   This covers devices from high end servers down to resource 
   constrained devices across different types of network. 
    
   The underlying standards are: 
    
   Transport Layer Security, TLS v1.2, RFC-5246 
   Datagram Transport Layer Security, DTLS v1.2, RFC-6347 
   Constrained Application Framework, CoAP, RFC-7252 
   Concise Binary Object Representation, CBOR, RFC-7049  
   CoAP Block-wise Transfers, https://www.ietf.org/id/draft-ietf 
   core-block-21.txt 
    
  The aSSURE specification lends itself to the industrial 
  manufacture and distribution of IoT and other connected pieces of 
  equipment and can serve many markets both in retrofit and new 
  build. Indeed IoT is currently disgorging millions of devices in 
  architectures that are not secure enough and could be repaired 
  using the aSSURE framework and philosophy. This problem is better 
  described by Bob Hinden in his paper "Internet of Insecure Things" 
  published in the Internet Protocol Journal. 
    
19. References 
    
19.1. Normative References 
    
   [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 
   Requirement Levels", BCP 14, RFC 2119, March 1997. 
    
   [RFC4279] Eronen, P., Ed., and H. Tschofenig, Ed., "Pre-Shared Key 
   Ciphersuites for Transport Layer Security (TLS)", RFC4279, DOI 

Lucas                   Expires March 17, 2018              [Page 69] 






Internet-Draft           aSSURE Data Security          September 2017 
    

   10.17487/RFC4279, December 2005, <http://www.rfc 
   editor.org/info/rfc4279>. 
    
   [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer 
   Security (TLS) Protocol Version 1.2", RFC 5246, DOI 
   10.17487/RFC5246, August 2008, <http://www.rfc 
   editor.org/info/rfc5246>. 
    
   [RFC5652] Housley, R., "Cryptographic Message Syntax (CMS)", STD 
   70, RFC 5652, DOI 10.17487/RFC5652, September 2009, 
   <http://www.rfc-editor.org/info/rfc5652>. 
    
    [RFC6347] Rescorla, E. and N. Modadugu, "Datagram Transport Layer 
   Security Version 1.2", RFC 6347, DOI 10.17487/RFC6347, January 
   2012, <http://www.rfc-editor.org/info/rfc6347>. 
    
   [RFC7049] Bormann, C. and P. Hoffman, "Concise Binary Object 
   Representation (CBOR)", RFC 7049, DOI 10.17487/RFC7049, October 
   2013, <http://www.rfc-editor.org/info/rfc7049>. 
    
   [RFC7250] Wouters, P., Ed., Tschofenig, H., Ed., Gilmore, J., 
   Weiler, S., and T. Kivinen, "Using Raw Public Keys in Transport 
   Layer Security (TLS) and Datagram Transport Layer Security 
   (DTLS)", RFC 7250, DOI 10.17487/RFC7250, June 2014, 
   <http://www.rfc-editor.org/info/rfc7250>. 
    
   [RFC7252] Shelby, Z., Hartke, K., and C. Bormann, "The Constrained 
   Application Protocol (CoAP)", RFC 7252, DOI 10.17487/RFC7252, June 
   2014, <http://www.rfc-editor.org/info/rfc7252>. 
    
19.2. Informative References 
    
   CoAP Block-wise Transfers, https://www.ietf.org/id/draft-ietf 
   core-block-21.txt 
      
   [RFC2898] Kaliski, B., "PKCS #5: Password-Based Cryptography 
   Specification Version 2.0", RFC 2898, DOI 10.17487/RFC2898, 
   September 2000, <http://www.rfc-editor.org/info/rfc2898>. 
    
   [RFC5753] Turner, S. and D. Brown, "Use of Elliptic Curve 
   Cryptography (ECC) Algorithms in Cryptographic Message Syntax 
   (CMS)", RFC 5753, DOI 10.17487/RFC5753, January 2010, 
   <http://www.rfc-editor.org/info/rfc5753>. 
    
   [RFC7228] Bormann, C., Ersue, M., and A. Keranen, "Terminology for 
   Constrained-Node Networks", RFC 7228, DOI 10.17487/RFC7228, May 
   2014, <http://www.rfc-editor.org/info/rfc7228>. 
    
   "Internet of Insecure Things", Hinden, B., Internet Protocol 
   Journal March 2017 Vol 20, Number 1, Page 12. 
   <http://ipj.dreamhosters.com/wp-content/uploads/issues/2017/ipj20- 
   1.pdf>. 

Lucas                   Expires March 17, 2018              [Page 70] 






Internet-Draft           aSSURE Data Security          September 2017 
    

    
20. Acknowledgments 
    
   This document is a byproduct of the "aSSURE" project, partially 
   funded by Innovate UK. It is provided "as is" and without 
   any express or implied warranties, including, without limitation, 
   the implied warranties of fitness for a particular purpose. The 
   views and conclusion contained herein are those of the authors and 
   should not be interpreted as necessarily representing the official 
   policies or endorsements, either expressed or implied, of the 
   aSSURE project or Innovate UK. 
    
Author's Address 
    
   Roger Lucas 
   c/o Cisco International Limited 
   10, New Square Park 
   Bedfont Lakes 
   Feltham 
   TW14 8HA 
   United Kingdom 
   Email: iot@hiddenengine.co.uk 



































Lucas                   Expires March 17, 2018              [Page 71]