< draft-hallambaker-mesh-security-00.txt   draft-hallambaker-mesh-security-01.txt >
Network Working Group P. Hallam-Baker Network Working Group P. Hallam-Baker
Internet-Draft April 4, 2019 Internet-Draft July 8, 2019
Intended status: Informational Intended status: Informational
Expires: October 6, 2019 Expires: January 9, 2020
Mathematical Mesh Part VII: Security Considerations Mathematical Mesh Part VII: Security Considerations
draft-hallambaker-mesh-security-00 draft-hallambaker-mesh-security-01
Abstract Abstract
The Mathematical Mesh 'The Mesh' is an end-to-end secure The Mathematical Mesh 'The Mesh' is an end-to-end secure
infrastructure that facilitates the exchange of configuration and infrastructure that facilitates the exchange of configuration and
credential data between multiple user devices. The core protocols of credential data between multiple user devices. The core protocols of
the Mesh are described with examples of common use cases and the Mesh are described with examples of common use cases and
reference data. reference data.
This document is also available online at This document is also available online at
skipping to change at page 1, line 38 skipping to change at page 1, line 38
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/. Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on October 6, 2019. This Internet-Draft will expire on January 9, 2020.
Copyright Notice Copyright Notice
Copyright (c) 2019 IETF Trust and the persons identified as the Copyright (c) 2019 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(https://trustee.ietf.org/license-info) in effect on the date of (https://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
skipping to change at page 2, line 16 skipping to change at page 2, line 16
the Trust Legal Provisions and are provided without warranty as the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License. described in the Simplified BSD License.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 5 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 5
2. Definitions . . . . . . . . . . . . . . . . . . . . . . . . . 5 2. Definitions . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.1. Requirements Language . . . . . . . . . . . . . . . . . . 5 2.1. Requirements Language . . . . . . . . . . . . . . . . . . 5
2.2. Defined Terms . . . . . . . . . . . . . . . . . . . . . . 5 2.2. Defined Terms . . . . . . . . . . . . . . . . . . . . . . 5
2.3. Related Specifications . . . . . . . . . . . . . . . . . 5 2.3. Related Specifications . . . . . . . . . . . . . . . . . 5
2.4. Implementation Status . . . . . . . . . . . . . . . . . . 5 2.4. Implementation Status . . . . . . . . . . . . . . . . . . 6
2.5. Shared Classes . . . . . . . . . . . . . . . . . . . . . 5 2.5. Shared Classes . . . . . . . . . . . . . . . . . . . . . 6
2.5.1. Structure: PublicKey . . . . . . . . . . . . . . . . 5 2.5.1. Classes describing keys . . . . . . . . . . . . . . . 6
2.6. Mesh Profile Objects . . . . . . . . . . . . . . . . . . 6 2.5.2. Structure: PublicKey . . . . . . . . . . . . . . . . 6
2.6.1. Structure: Profile . . . . . . . . . . . . . . . . . 6 2.5.3. Structure: KeyComposite . . . . . . . . . . . . . . . 6
2.6.2. Keyset Classes . . . . . . . . . . . . . . . . . . . 6 2.5.4. Structure: KeyOverlay . . . . . . . . . . . . . . . . 6
2.6.3. Structure: EscrowedKeySet . . . . . . . . . . . . . . 6 2.5.5. Structure: EscrowedKeySet . . . . . . . . . . . . . . 6
2.6.4. Profile Classes . . . . . . . . . . . . . . . . . . . 6 2.5.6. Structure: DeviceRecryptionKey . . . . . . . . . . . 7
2.6.5. Structure: ProfileMaster . . . . . . . . . . . . . . 6 2.6. Assertion classes . . . . . . . . . . . . . . . . . . . . 7
2.6.6. Structure: ProfileDevice . . . . . . . . . . . . . . 7 2.6.1. Structure: Assertion . . . . . . . . . . . . . . . . 7
2.6.7. Structure: ProfileApplication . . . . . . . . . . . . 7 2.6.2. Structure: Condition . . . . . . . . . . . . . . . . 7
2.6.8. Structure: ProfileMesh . . . . . . . . . . . . . . . 7 2.6.3. Profile Classes . . . . . . . . . . . . . . . . . . . 7
2.6.9. Structure: ProfileMeshDevicePublic . . . . . . . . . 8 2.6.4. Structure: Profile . . . . . . . . . . . . . . . . . 7
2.6.10. Structure: ProfileMeshDevicePrivate . . . . . . . . . 8 2.6.5. Structure: ProfileMaster . . . . . . . . . . . . . . 8
2.6.11. Structure: DeviceRecryptionKey . . . . . . . . . . . 8 2.6.6. Structure: ProfileDevice . . . . . . . . . . . . . . 8
2.7. Common Structures . . . . . . . . . . . . . . . . . . . . 8 2.6.7. Structure: ProfileService . . . . . . . . . . . . . . 8
2.7.1. Structure: Permission . . . . . . . . . . . . . . . . 8 2.6.8. Structure: ProfileAccount . . . . . . . . . . . . . . 9
2.7.2. Structure: Contact . . . . . . . . . . . . . . . . . 9 2.6.9. Structure: ProfileGroup . . . . . . . . . . . . . . . 9
2.7.3. Structure: Role . . . . . . . . . . . . . . . . . . . 10 2.6.10. Structure: ProfileHost . . . . . . . . . . . . . . . 9
2.7.4. Structure: Address . . . . . . . . . . . . . . . . . 10 2.6.11. Connection Classes . . . . . . . . . . . . . . . . . 9
2.7.5. Structure: Location . . . . . . . . . . . . . . . . . 10 2.6.12. Structure: Connection . . . . . . . . . . . . . . . . 9
2.7.6. Structure: Reference . . . . . . . . . . . . . . . . 11 2.6.13. Structure: Permission . . . . . . . . . . . . . . . . 10
2.8. Catalog Entries . . . . . . . . . . . . . . . . . . . . . 11 2.6.14. Structure: ConnectionDevice . . . . . . . . . . . . . 10
2.8.1. Structure: CatalogEntry . . . . . . . . . . . . . . . 11 2.6.15. Structure: ConnectionAccount . . . . . . . . . . . . 10
2.8.2. Structure: CatalogEntryDevice . . . . . . . . . . . . 11 2.6.16. Structure: ConnectionService . . . . . . . . . . . . 11
2.8.3. Structure: CatalogEntryCredential . . . . . . . . . . 11 2.6.17. Structure: ConnectionHost . . . . . . . . . . . . . . 11
2.8.4. Structure: CatalogEntryNetwork . . . . . . . . . . . 12 2.6.18. Structure: ConnectionApplication . . . . . . . . . . 11
2.8.5. Structure: CatalogEntryContact . . . . . . . . . . . 12 2.6.19. Activation Classes . . . . . . . . . . . . . . . . . 11
2.8.6. Structure: CatalogEntryContactRecryption . . . . . . 13 2.6.20. Structure: Activation . . . . . . . . . . . . . . . . 11
2.8.7. Structure: CatalogEntryBookmark . . . . . . . . . . . 13 2.6.21. Structure: ActivationDevice . . . . . . . . . . . . . 11
2.8.8. Structure: CatalogEntryTask . . . . . . . . . . . . . 13 2.6.22. Structure: ActivationAccount . . . . . . . . . . . . 12
2.8.9. Structure: Task . . . . . . . . . . . . . . . . . . . 13 2.7. Cataloged items . . . . . . . . . . . . . . . . . . . . . 12
2.8.10. Structure: CatalogEntryApplication . . . . . . . . . 14 2.7.1. Data Structures . . . . . . . . . . . . . . . . . . . 12
2.8.11. Structure: CatalogEntryApplicationEntry . . . . . . . 15 2.7.2. Structure: Contact . . . . . . . . . . . . . . . . . 12
2.8.12. Structure: CatalogEntryApplicationRecryption . . . . 15 2.7.3. Structure: Role . . . . . . . . . . . . . . . . . . . 13
2.8.13. Structure: CatalogEntryApplicationSSH . . . . . . . . 15 2.7.4. Structure: Address . . . . . . . . . . . . . . . . . 14
2.8.14. Structure: CatalogEntryApplicationMail . . . . . . . 15 2.7.5. Structure: Location . . . . . . . . . . . . . . . . . 14
2.8.15. Structure: CatalogEntryApplicationNetwork . . . . . . 15 2.7.6. Structure: Reference . . . . . . . . . . . . . . . . 14
2.9. Messages . . . . . . . . . . . . . . . . . . . . . . . . 15 2.7.7. Structure: Task . . . . . . . . . . . . . . . . . . . 15
2.9.1. Structure: MeshMessage . . . . . . . . . . . . . . . 15 2.8. Catalog Entries . . . . . . . . . . . . . . . . . . . . . 16
2.9.2. Structure: MeshMessageComplete . . . . . . . . . . . 15 2.8.1. Structure: CatalogedEntry . . . . . . . . . . . . . . 16
2.9.3. Structure: MessageConnectionRequest . . . . . . . . . 16 2.8.2. Structure: CatalogedDevice . . . . . . . . . . . . . 16
2.9.4. Structure: MessageConnectionPIN . . . . . . . . . . . 16 2.8.3. Structure: CatalogedCredential . . . . . . . . . . . 16
2.9.5. Structure: MessageContactRequest . . . . . . . . . . 17 2.8.4. Structure: CatalogedNetwork . . . . . . . . . . . . . 17
2.9.6. Structure: MessageConfirmationRequest . . . . . . . . 17 2.8.5. Structure: CatalogedContact . . . . . . . . . . . . . 17
2.9.7. Structure: MessageConfirmationResponse . . . . . . . 17 2.8.6. Structure: CatalogedContactRecryption . . . . . . . . 17
2.9.8. Structure: MessageTaskRequest . . . . . . . . . . . . 17 2.8.7. Structure: CatalogedBookmark . . . . . . . . . . . . 18
3. Mesh Portal Service Reference . . . . . . . . . . . . . . . . 17 2.8.8. Structure: CatalogedTask . . . . . . . . . . . . . . 18
3.1. Request Messages . . . . . . . . . . . . . . . . . . . . 18 2.8.9. Structure: CatalogedApplication . . . . . . . . . . . 18
3.1.1. Message: MeshRequest . . . . . . . . . . . . . . . . 18 2.8.10. Structure: CatalogedApplicationAccount . . . . . . . 18
3.2. Response Messages . . . . . . . . . . . . . . . . . . . . 18 2.8.11. Structure: CatalogedMember . . . . . . . . . . . . . 19
3.2.1. Message: MeshResponse . . . . . . . . . . . . . . . . 18 2.8.12. Structure: CatalogedGroup . . . . . . . . . . . . . . 19
3.3. Imported Objects . . . . . . . . . . . . . . . . . . . . 18 2.8.13. Structure: CatalogedApplicationSSH . . . . . . . . . 19
3.4. Common Structures . . . . . . . . . . . . . . . . . . . . 18 2.8.14. Structure: CatalogedApplicationMail . . . . . . . . . 19
3.4.1. Structure: KeyValue . . . . . . . . . . . . . . . . . 18 2.8.15. Structure: CatalogedApplicationNetwork . . . . . . . 19
3.4.2. Structure: SearchConstraints . . . . . . . . . . . . 19 2.9. Messages . . . . . . . . . . . . . . . . . . . . . . . . 19
3.5. Transaction: Hello . . . . . . . . . . . . . . . . . . . 19 2.9.1. Structure: Message . . . . . . . . . . . . . . . . . 19
3.6. Transaction: ValidateAccount . . . . . . . . . . . . . . 19 2.9.2. Structure: MessageComplete . . . . . . . . . . . . . 20
3.6.1. Message: ValidateRequest . . . . . . . . . . . . . . 20 2.9.3. Structure: MessagePIN . . . . . . . . . . . . . . . . 20
3.6.2. Message: ValidateResponse . . . . . . . . . . . . . . 20 2.9.4. Structure: RequestConnection . . . . . . . . . . . . 20
3.7. Transaction: CreateAccount . . . . . . . . . . . . . . . 21 2.9.5. Structure: AcknowledgeConnection . . . . . . . . . . 21
3.7.1. Message: CreateRequest . . . . . . . . . . . . . . . 21 2.9.6. Structure: RequestContact . . . . . . . . . . . . . . 21
3.7.2. Message: CreateResponse . . . . . . . . . . . . . . . 21 2.9.7. Structure: RequestConfirmation . . . . . . . . . . . 21
3.8. Transaction: DeleteAccount . . . . . . . . . . . . . . . 21 2.9.8. Structure: ResponseConfirmation . . . . . . . . . . . 21
3.8.1. Message: DeleteRequest . . . . . . . . . . . . . . . 22 2.9.9. Structure: RequestTask . . . . . . . . . . . . . . . 22
3.8.2. Message: DeleteResponse . . . . . . . . . . . . . . . 22 3. Mesh Portal Service Reference . . . . . . . . . . . . . . . . 22
3.9. Transaction: Get . . . . . . . . . . . . . . . . . . . . 22 3.1. Request Messages . . . . . . . . . . . . . . . . . . . . 22
3.9.1. Message: GetRequest . . . . . . . . . . . . . . . . . 22 3.1.1. Message: MeshRequest . . . . . . . . . . . . . . . . 22
3.9.2. Message: GetResponse . . . . . . . . . . . . . . . . 23 3.2. Response Messages . . . . . . . . . . . . . . . . . . . . 22
3.10. Transaction: Publish . . . . . . . . . . . . . . . . . . 23 3.2.1. Message: MeshResponse . . . . . . . . . . . . . . . . 22
3.10.1. Message: PublishRequest . . . . . . . . . . . . . . 23 3.3. Imported Objects . . . . . . . . . . . . . . . . . . . . 23
3.10.2. Message: PublishResponse . . . . . . . . . . . . . . 24 3.4. Common Structures . . . . . . . . . . . . . . . . . . . . 23
3.11. Transaction: Status . . . . . . . . . . . . . . . . . . . 24 3.4.1. Structure: KeyValue . . . . . . . . . . . . . . . . . 23
3.11.1. Message: StatusRequest . . . . . . . . . . . . . . . 24 3.4.2. Structure: SearchConstraints . . . . . . . . . . . . 23
3.11.2. Message: StatusResponse . . . . . . . . . . . . . . 24 3.5. Transaction: Hello . . . . . . . . . . . . . . . . . . . 24
3.12. Transaction: ConnectStart . . . . . . . . . . . . . . . . 25 3.6. Transaction: ValidateAccount . . . . . . . . . . . . . . 24
3.12.1. Message: ConnectStartRequest . . . . . . . . . . . . 25 3.6.1. Message: ValidateRequest . . . . . . . . . . . . . . 24
3.12.2. Message: ConnectStartResponse . . . . . . . . . . . 25 3.6.2. Message: ValidateResponse . . . . . . . . . . . . . . 24
3.13. Transaction: ConnectStatus . . . . . . . . . . . . . . . 25 3.7. Transaction: CreateAccount . . . . . . . . . . . . . . . 25
3.13.1. Message: ConnectStatusRequest . . . . . . . . . . . 26 3.7.1. Message: CreateRequest . . . . . . . . . . . . . . . 25
3.13.2. Message: ConnectStatusResponse . . . . . . . . . . . 26 3.7.2. Message: CreateResponse . . . . . . . . . . . . . . . 26
3.14. Transaction: ConnectPending . . . . . . . . . . . . . . . 26 3.8. Transaction: DeleteAccount . . . . . . . . . . . . . . . 26
3.14.1. Message: ConnectPendingRequest . . . . . . . . . . . 26 3.8.1. Message: DeleteRequest . . . . . . . . . . . . . . . 26
3.14.2. Message: ConnectPendingResponse . . . . . . . . . . 27 3.8.2. Message: DeleteResponse . . . . . . . . . . . . . . . 26
3.15. Transaction: ConnectComplete . . . . . . . . . . . . . . 27 3.9. Transaction: Get . . . . . . . . . . . . . . . . . . . . 27
3.15.1. Message: ConnectCompleteRequest . . . . . . . . . . 27 3.9.1. Message: GetRequest . . . . . . . . . . . . . . . . . 27
3.15.2. Message: ConnectCompleteResponse . . . . . . . . . . 27 3.9.2. Message: GetResponse . . . . . . . . . . . . . . . . 27
3.16. Transaction: Transfer . . . . . . . . . . . . . . . . . . 28 3.10. Transaction: Publish . . . . . . . . . . . . . . . . . . 28
3.16.1. Message: TransferRequest . . . . . . . . . . . . . . 28 3.10.1. Message: PublishRequest . . . . . . . . . . . . . . 28
3.16.2. Message: TransferResponse . . . . . . . . . . . . . 28 3.10.2. Message: PublishResponse . . . . . . . . . . . . . . 28
4. Assets . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 3.11. Transaction: Status . . . . . . . . . . . . . . . . . . . 28
4.1. Data . . . . . . . . . . . . . . . . . . . . . . . . . . 28 3.11.1. Message: StatusRequest . . . . . . . . . . . . . . . 29
4.2. Credentials . . . . . . . . . . . . . . . . . . . . . . . 29 3.11.2. Message: StatusResponse . . . . . . . . . . . . . . 29
4.3. Reputation . . . . . . . . . . . . . . . . . . . . . . . 29 3.12. Transaction: ConnectStart . . . . . . . . . . . . . . . . 29
4.3.1. Outbound Messaging Abuse () . . . . . . . . . . . . . 29 3.12.1. Message: ConnectStartRequest . . . . . . . . . . . . 29
5. Risks . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3.12.2. Message: ConnectStartResponse . . . . . . . . . . . 30
5.1. Confidentiality . . . . . . . . . . . . . . . . . . . . . 29 3.13. Transaction: ConnectStatus . . . . . . . . . . . . . . . 30
5.1.1. Privacy . . . . . . . . . . . . . . . . . . . . . . . 29 3.13.1. Message: ConnectStatusRequest . . . . . . . . . . . 30
5.2. Integrity . . . . . . . . . . . . . . . . . . . . . . . . 29 3.13.2. Message: ConnectStatusResponse . . . . . . . . . . . 30
5.3. Availability . . . . . . . . . . . . . . . . . . . . . . 29 3.14. Transaction: ConnectPending . . . . . . . . . . . . . . . 31
5.3.1. Data loss . . . . . . . . . . . . . . . . . . . . . . 29 3.14.1. Message: ConnectPendingRequest . . . . . . . . . . . 31
5.3.2. Partial data survivability . . . . . . . . . . . . . 29 3.14.2. Message: ConnectPendingResponse . . . . . . . . . . 31
5.4. Inbound Messaging Abuse (Spam) . . . . . . . . . . . . . 29 3.15. Transaction: ConnectComplete . . . . . . . . . . . . . . 31
6. Threats . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3.15.1. Message: ConnectCompleteRequest . . . . . . . . . . 32
6.1. End point Compromise . . . . . . . . . . . . . . . . . . 29 3.15.2. Message: ConnectCompleteResponse . . . . . . . . . . 32
6.2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3.16. Transaction: Transfer . . . . . . . . . . . . . . . . . . 32
7. Controls . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.16.1. Message: TransferRequest . . . . . . . . . . . . . . 32
7.1. Cryptographic . . . . . . . . . . . . . . . . . . . . . . 30 3.16.2. Message: TransferResponse . . . . . . . . . . . . . 33
7.1.1. Triple lock . . . . . . . . . . . . . . . . . . . . . 30 4. Assets . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
7.1.2. Key Protection . . . . . . . . . . . . . . . . . . . 30 4.1. Data . . . . . . . . . . . . . . . . . . . . . . . . . . 33
7.1.3. Key and Nonce Generation . . . . . . . . . . . . . . 31 4.2. Credentials . . . . . . . . . . . . . . . . . . . . . . . 33
7.1.4. Key Escrow and Recovery . . . . . . . . . . . . . . . 31 4.3. Reputation . . . . . . . . . . . . . . . . . . . . . . . 33
7.1.5. Profile Verification . . . . . . . . . . . . . . . . 31 4.3.1. Outbound Messaging Abuse () . . . . . . . . . . . . . 33
7.1.6. Identity Validation . . . . . . . . . . . . . . . . . 31 5. Risks . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
7.1.7. Trust Broker Accountability . . . . . . . . . . . . . 31 5.1. Confidentiality . . . . . . . . . . . . . . . . . . . . . 33
7.2. Mesh Messaging . . . . . . . . . . . . . . . . . . . . . 31 5.1.1. Privacy . . . . . . . . . . . . . . . . . . . . . . . 33
7.2.1. Ingress Control . . . . . . . . . . . . . . . . . . . 31 5.2. Integrity . . . . . . . . . . . . . . . . . . . . . . . . 33
7.2.2. Egress Control . . . . . . . . . . . . . . . . . . . 32 5.3. Availability . . . . . . . . . . . . . . . . . . . . . . 34
7.2.3. Security Signal . . . . . . . . . . . . . . . . . . . 32 5.3.1. Data loss . . . . . . . . . . . . . . . . . . . . . . 34
7.2.4. Accountability . . . . . . . . . . . . . . . . . . . 32 5.3.2. Partial data survivability . . . . . . . . . . . . . 34
8. Security Considerations . . . . . . . . . . . . . . . . . . . 32 5.4. Inbound Messaging Abuse (Spam) . . . . . . . . . . . . . 34
9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 32 6. Threats . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 32 6.1. End point Compromise . . . . . . . . . . . . . . . . . . 34
11. References . . . . . . . . . . . . . . . . . . . . . . . . . 33 6.2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
11.1. Normative References . . . . . . . . . . . . . . . . . . 33 7. Controls . . . . . . . . . . . . . . . . . . . . . . . . . . 34
11.2. Informative References . . . . . . . . . . . . . . . . . 33 7.1. Cryptographic . . . . . . . . . . . . . . . . . . . . . . 34
11.3. URIs . . . . . . . . . . . . . . . . . . . . . . . . . . 33 7.1.1. Triple lock . . . . . . . . . . . . . . . . . . . . . 34
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 33 7.1.2. Key Protection . . . . . . . . . . . . . . . . . . . 34
7.1.3. Key and Nonce Generation . . . . . . . . . . . . . . 35
7.1.4. Key Escrow and Recovery . . . . . . . . . . . . . . . 35
7.1.5. Profile Verification . . . . . . . . . . . . . . . . 35
7.1.6. Identity Validation . . . . . . . . . . . . . . . . . 36
7.1.7. Trust Broker Accountability . . . . . . . . . . . . . 36
7.2. Mesh Messaging . . . . . . . . . . . . . . . . . . . . . 36
7.2.1. Ingress Control . . . . . . . . . . . . . . . . . . . 36
7.2.2. Egress Control . . . . . . . . . . . . . . . . . . . 36
7.2.3. Security Signal . . . . . . . . . . . . . . . . . . . 36
7.2.4. Accountability . . . . . . . . . . . . . . . . . . . 37
8. Security Considerations . . . . . . . . . . . . . . . . . . . 37
8.1. Integrity . . . . . . . . . . . . . . . . . . . . . . . . 37
8.1.1. DNS Spoofing . . . . . . . . . . . . . . . . . . . . 37
8.1.2. TLS Downgrade . . . . . . . . . . . . . . . . . . . . 37
8.1.3. TLS Service Impersonation . . . . . . . . . . . . . . 37
8.1.4. Request Replay Attack . . . . . . . . . . . . . . . . 37
8.1.5. Response Replay Attack . . . . . . . . . . . . . . . 37
8.2. Confidentiality . . . . . . . . . . . . . . . . . . . . . 37
8.2.1. Side Channel Attack . . . . . . . . . . . . . . . . . 37
8.2.2. Session Key Leakage . . . . . . . . . . . . . . . . . 37
9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 37
10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 37
11. References . . . . . . . . . . . . . . . . . . . . . . . . . 37
11.1. Normative References . . . . . . . . . . . . . . . . . . 37
11.2. Informative References . . . . . . . . . . . . . . . . . 38
11.3. URIs . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 38
1. Introduction 1. Introduction
2. Definitions 2. Definitions
This section presents the related specifications and standard, the This section presents the related specifications and standard, the
terms that are used as terms of art within the documents and the terms that are used as terms of art within the documents and the
terms used as requirements language. terms used as requirements language.
2.1. Requirements Language 2.1. Requirements Language
skipping to change at page 5, line 39 skipping to change at page 6, line 15
document. document.
2.4. Implementation Status 2.4. Implementation Status
The implementation status of the reference code base is described in The implementation status of the reference code base is described in
the companion document [draft-hallambaker-mesh-developer] . the companion document [draft-hallambaker-mesh-developer] .
2.5. Shared Classes 2.5. Shared Classes
The following classes are used as common elements in Mesh profile The following classes are used as common elements in Mesh profile
specifications.a specifications.
2.5.1. Structure: PublicKey 2.5.1. Classes describing keys
2.5.2. Structure: PublicKey
The PublicKey class is used to describe public key pairs and trust The PublicKey class is used to describe public key pairs and trust
assertions associated with a public key. assertions associated with a public key.
UDF: String (Optional) UDF fingerprint of the public key parameters/ UDF: String (Optional) UDF fingerprint of the public key parameters/
X509Certificate: Binary (Optional) List of X.509 Certificates X509Certificate: Binary (Optional) List of X.509 Certificates
X509Chain: Binary [0..Many] X.509 Certificate chain. X509Chain: Binary [0..Many] X.509 Certificate chain.
X509CSR: Binary (Optional) X.509 Certificate Signing Request. X509CSR: Binary (Optional) X.509 Certificate Signing Request.
2.6. Mesh Profile Objects 2.5.3. Structure: KeyComposite
Base class for all Mesh Profile objects. Service: String (Optional) Service holding the additional
contribution
2.6.1. Structure: Profile 2.5.4. Structure: KeyOverlay
Parent class from which all profile types are derived UDF: String (Optional) Fingerprint of the resulting composite key
(to allow verification)
BaseUDF: String (Optional) Fingerprint specifying the base key
2.5.5. Structure: EscrowedKeySet
A set of escrowed keys.
[No fields]
2.5.6. Structure: DeviceRecryptionKey
UDF: String (Optional) The fingerprint of the encryption key
RecryptionKey: PublicKey (Optional) The recryption key
EnvelopedRecryptionKeyDevice: DareEnvelope (Optional) The decryption
key encrypted under the user's device key.
2.6. Assertion classes
Classes that are derived from an assertion.
2.6.1. Structure: Assertion
Parent class from which all assertion classes are derived
Names: String [0..Many] Fingerprints of index terms for profile Names: String [0..Many] Fingerprints of index terms for profile
retrieval. The use of the fingerprint of the name rather than the retrieval. The use of the fingerprint of the name rather than the
name itself is a precaution against enumeration attacks and other name itself is a precaution against enumeration attacks and other
forms of abuse. forms of abuse.
Updated: DateTime (Optional) The time instant the profile was last Updated: DateTime (Optional) The time instant the profile was last
modified. modified.
NotaryToken: String (Optional) A Uniform Notary Token providing NotaryToken: String (Optional) A Uniform Notary Token providing
evidence that a signature was performed after the notary token was evidence that a signature was performed after the notary token was
created. created.
2.6.2. Keyset Classes 2.6.2. Structure: Condition
2.6.3. Structure: EscrowedKeySet
A set of escrowed keys. Parent class from which all condition classes are derived.
[No fields] [No fields]
2.6.4. Profile Classes 2.6.3. Profile Classes
Profiles are self signed assertions.
2.6.4. Structure: Profile
Inherits: Assertion
Parent class from which all profile classes are derived
KeySignature: PublicKey (Optional) The permanent signature key used
to sign the profile itself. The UDF of the key is used as the
permanent object identifier of the profile. Thus, by definition,
the KeySignature value of a Profile does not change under any
circumstance. The only case in which a
OnlineSignatureKeys: PublicKey [0..Many] A Personal profile contains
at least one OSK which is used to sign device administration
application profiles.
2.6.5. Structure: ProfileMaster 2.6.5. Structure: ProfileMaster
Inherits: Profile Inherits: Profile
Describes the long term parameters associated with a personal Describes the long term parameters associated with a personal
profile. profile.
This profile MUST be signed by
MasterSignatureKey: PublicKey (Optional) The root of trust for the
Personal PKI, the public key of the PMSK is presented as a self-
signed X.509v3 certificate with Certificate Signing use enabled.
The PMSK is used to sign certificates for the PMEK, POSK and PKEK
keys.
MasterEscrowKeys: PublicKey [0..Many] A Personal Profile MAY contain MasterEscrowKeys: PublicKey [0..Many] A Personal Profile MAY contain
one or more PMEK keys to enable escrow of private keys used for one or more PMEK keys to enable escrow of private keys used for
stored data. stored data.
OnlineSignatureKeys: PublicKey [0..Many] A Personal profile contains KeyEncryption: PublicKey (Optional) Key used to pass encrypted data
at least one OSK which is used to sign device administration to the device such as a DeviceUseEntry
application profiles.
2.6.6. Structure: ProfileDevice 2.6.6. Structure: ProfileDevice
Inherits: Profile Inherits: Profile
Describes a mesh device. Describes a mesh device.
This profile MUST be signed by the DeviceSignatureKey
Description: String (Optional) Description of the device Description: String (Optional) Description of the device
DeviceSignatureKey: PublicKey (Optional) Key used to sign KeyEncryption: PublicKey (Optional) Key used to pass encrypted data
certificates for the DAK and DEK. The fingerprint of the DSK is to the device such as a DeviceUseEntry
the UniqueID of the Device Profile
DeviceAuthenticationKey: PublicKey (Optional) Key used to
authenticate requests made by the device.
DeviceEncryptionKey: PublicKey (Optional) Key used to pass encrypted KeyAuthentication: PublicKey (Optional) Key used to authenticate
data to the device such as a DeviceUseEntry requests made by the device.
2.6.7. Structure: ProfileApplication 2.6.7. Structure: ProfileService
Inherits: Profile Inherits: Profile
Contains the public description of a Mesh application. Profile of a Mesh Service
[No fields] AuthenticationKey: PublicKey (Optional) Key used to authenticate
service connections.
2.6.8. Structure: ProfileMesh 2.6.8. Structure: ProfileAccount
Inherits: ProfileApplication Inherits: Profile
Contains the binding of a device to a MasterProfile. Each device has Account assertion. This is signed by the service hosting the
a separate profile which MUST be signed by an OnlineSignatureKey account.
Account: String (Optional) Account address. ServiceIDs: String [0..Many] Service address(es).
MasterProfile: DareMessage (Optional) Master profile of the account MeshProfileUDF: String (Optional) Master profile of the account
being registered. being registered.
AccountEncryptionKey: PublicKey (Optional) Key used to encrypt data AccountEncryptionKey: PublicKey (Optional) Key used to encrypt data
under this profile under this profile
2.6.9. Structure: ProfileMeshDevicePublic 2.6.9. Structure: ProfileGroup
Inherits: ProfileApplication Inherits: Profile
Inherits: ProfileApplication Describes a group. Note that while a group is created by one person
who becomes its first administrator, control of the group may pass to
other administrators over time.
DeviceProfile: DareMessage (Optional) Device profile of the device [No fields]
making the request.
2.6.10. Structure: ProfileHost
Inherits: Profile
Inherits: Profile
KeyAuthentication: PublicKey (Optional) Key used to authenticate
service connections.
2.6.11. Connection Classes
2.6.12. Structure: Connection
Inherits: Assertion
Inherits: Assertion
SubjectUDF: String (Optional) UDF of the connection target.
AuthorityUDF: String (Optional) UDF of the connection source.
2.6.13. Structure: Permission
Name: String (Optional)
Name: String (Optional)
Role: String (Optional)
Role: String (Optional)
Capabilities: DareEnvelope (Optional) Keys or key contributions
enabling the operation to be performed
2.6.14. Structure: ConnectionDevice
Inherits: Connection
Inherits: Connection
Permissions: Permission [0..Many] List of the permissions that the Permissions: Permission [0..Many] List of the permissions that the
device has been granted. device has been granted.
2.6.10. Structure: ProfileMeshDevicePrivate KeySignature: PublicKey (Optional) The signature key for use of the
device under the profile
Inherits: ProfileApplication KeyEncryption: PublicKey (Optional) The encryption key for use of
the device under the profile
Inherits: ProfileApplication KeyAuthentication: PublicKey (Optional) The authentication key for
use of the device under the profile
2.6.15. Structure: ConnectionAccount
Inherits: Connection
Inherits: Connection
Permissions: Permission [0..Many] List of the permissions that the Permissions: Permission [0..Many] List of the permissions that the
device has been granted. device has been granted.
ProfileNonce: Binary (Optional) Random nonce used to mask the KeySignature: PublicKey (Optional) The signature key for use of the
fingerprint of the profile UDF. device under the profile
ProfileWitness: Binary (Optional) Witness value calculated over the KeyEncryption: PublicKey (Optional) The encryption key for use of
ProfileNonce and profile UDF the device under the profile
2.6.11. Structure: DeviceRecryptionKey KeyAuthentication: PublicKey (Optional) The authentication key for
use of the device under the profile
UDF: String (Optional) The fingerprint of the encryption key 2.6.16. Structure: ConnectionService
RecryptionKey: PublicKey (Optional) The recryption key Inherits: Connection
DeviceRecryptionKeyEncrypted: DareMessage (Optional) The decryption [No fields]
key encrypted under the user's device key.
2.7. Common Structures 2.6.17. Structure: ConnectionHost
2.7.1. Structure: Permission Inherits: Connection
Name: String (Optional) [No fields]
Name: String (Optional) 2.6.18. Structure: ConnectionApplication
Role: String (Optional) Inherits: Connection
Role: String (Optional) [No fields]
Capabilities: DareMessage (Optional) Keys or key contributions
enabling the operation to be performed 2.6.19. Activation Classes
2.6.20. Structure: Activation
Inherits: Assertion
Contains the private activation information for a Mesh application
running on a specific device
[No fields]
2.6.21. Structure: ActivationDevice
Inherits: Assertion
Inherits: Assertion
EnvelopedAssertionDeviceConnection: DareEnvelope (Optional) The
signed AssertionDeviceConnection.
KeySignature: KeyOverlay (Optional) The key overlay used to generate
the account signature key from the device signature key
KeyEncryption: KeyOverlay (Optional) The key overlay used to
generate the account encryption key from the device encryption key
KeyAuthentication: KeyOverlay (Optional) The key overlay used to
generate the account authentication key from the device
authentication key
2.6.22. Structure: ActivationAccount
Inherits: Activation
Inherits: Activation
AccountUDF: String (Optional) The UDF of the account
EnvelopedAssertionAccountConnection: DareEnvelope (Optional) The
account connection assertion
KeyEncryption: KeyComposite (Optional) The key contribution for the
decryption key for the device. NB this is NOT an overlay on the
device signature key, it is an overlay on the corresponding
recryption key.
KeyAuthentication: KeyOverlay (Optional) The key overlay used to
generate the account authentication key from the device
authentication key
KeySignature: KeyOverlay (Optional) The key overlay used to generate
the account signature key from the device signature key
2.7. Cataloged items
2.7.1. Data Structures
Classes describing data used in cataloged data.
2.7.2. Structure: Contact 2.7.2. Structure: Contact
Identifier: String (Optional) Inherits: Assertion
Identifier: String (Optional) Inherits: Assertion
Account: String (Optional) Identifier: String (Optional)
Account: String (Optional) Identifier: String (Optional)
FullName: String (Optional) FullName: String (Optional)
FullName: String (Optional) FullName: String (Optional)
Title: String (Optional) Title: String (Optional)
Title: String (Optional) Title: String (Optional)
First: String (Optional) First: String (Optional)
skipping to change at page 9, line 45 skipping to change at page 13, line 22
Last: String (Optional) Last: String (Optional)
Suffix: String (Optional) Suffix: String (Optional)
Suffix: String (Optional) Suffix: String (Optional)
Labels: String [0..Many] Labels: String [0..Many]
Labels: String [0..Many] Labels: String [0..Many]
AssertionAccounts: ProfileAccount [0..Many]
AssertionAccounts: ProfileAccount [0..Many]
Addresses: Address [0..Many] Addresses: Address [0..Many]
Addresses: Address [0..Many] Addresses: Address [0..Many]
Locations: Location [0..Many] Locations: Location [0..Many]
Locations: Location [0..Many] Locations: Location [0..Many]
Roles: Role [0..Many] Roles: Role [0..Many]
2.7.3. Structure: Role 2.7.3. Structure: Role
CompanyName: String (Optional) CompanyName: String (Optional)
CompanyName: String (Optional) CompanyName: String (Optional)
Addresses: Address [0..Many] Addresses: Address [0..Many]
skipping to change at page 11, line 17 skipping to change at page 15, line 5
MessageID: String (Optional) The received message to which this is a MessageID: String (Optional) The received message to which this is a
response response
ResponseID: String (Optional) Message that was generated in response ResponseID: String (Optional) Message that was generated in response
to the original (optional). to the original (optional).
Relationship: String (Optional) The relationship type. This can be Relationship: String (Optional) The relationship type. This can be
Read, Unread, Accept, Reject. Read, Unread, Accept, Reject.
2.7.7. Structure: Task
Key: String (Optional) Unique key.
Start: DateTime (Optional)
Start: DateTime (Optional)
Finish: DateTime (Optional)
Finish: DateTime (Optional)
StartTravel: String (Optional)
StartTravel: String (Optional)
FinishTravel: String (Optional)
FinishTravel: String (Optional)
TimeZone: String (Optional)
TimeZone: String (Optional)
Title: String (Optional)
Title: String (Optional)
Description: String (Optional)
Description: String (Optional)
Location: String (Optional)
Location: String (Optional)
Trigger: String [0..Many]
Trigger: String [0..Many]
Conference: String [0..Many]
Conference: String [0..Many]
Repeat: String (Optional)
Repeat: String (Optional)
Busy: Boolean (Optional)
2.8. Catalog Entries 2.8. Catalog Entries
2.8.1. Structure: CatalogEntry 2.8.1. Structure: CatalogedEntry
Base class for cataloged Mesh data.
[No fields] [No fields]
2.8.2. Structure: CatalogEntryDevice 2.8.2. Structure: CatalogedDevice
Inherits: CatalogEntry Inherits: CatalogedEntry
Public device entry, indexed under the device ID Public device entry, indexed under the device ID
Account: String (Optional) The Account to which this entry binds AccountIDs: String [0..Many] The accounts to which this device is
this device. bound.
UDF: String (Optional) UDF of the signature key UDF: String (Optional) UDF of the signature key of the device in the
Mesh
AuthUDF: String (Optional) UDF of the authentication ID DeviceUDF: String (Optional) UDF of the signature key of the device
ProfileMeshDevicePublicSigned: DareMessage (Optional) The device EnvelopedProfileDevice: DareEnvelope (Optional) The device profile
profile
ProfileMeshDevicePrivateEncrypted: DareMessage (Optional) The device EnvelopedDeviceConnection: DareEnvelope (Optional) The public
profile assertion demonstrating connection of the Device to the Mesh
DeviceRecryptionKeys: DeviceRecryptionKey [0..Many] Decryption key EnvelopedDevicePrivate: DareEnvelope (Optional) The device profile
entries.
2.8.3. Structure: CatalogEntryCredential 2.8.3. Structure: CatalogedCredential
Inherits: CatalogEntry Inherits: CatalogedEntry
Inherits: CatalogEntry Inherits: CatalogedEntry
Protocol: String (Optional) Protocol: String (Optional)
Protocol: String (Optional) Protocol: String (Optional)
Service: String (Optional) Service: String (Optional)
Service: String (Optional) Service: String (Optional)
Username: String (Optional) Username: String (Optional)
Username: String (Optional) Username: String (Optional)
Password: String (Optional) Password: String (Optional)
2.8.4. Structure: CatalogEntryNetwork 2.8.4. Structure: CatalogedNetwork
Inherits: CatalogEntry Inherits: CatalogedEntry
Inherits: CatalogEntry Inherits: CatalogedEntry
Protocol: String (Optional) Protocol: String (Optional)
Protocol: String (Optional) Protocol: String (Optional)
Service: String (Optional) Service: String (Optional)
Service: String (Optional) Service: String (Optional)
Username: String (Optional) Username: String (Optional)
Username: String (Optional) Username: String (Optional)
Password: String (Optional) Password: String (Optional)
2.8.5. Structure: CatalogEntryContact 2.8.5. Structure: CatalogedContact
Inherits: CatalogEntry Inherits: CatalogedEntry
Inherits: CatalogEntry Inherits: CatalogedEntry
Self: Boolean (Optional) If true, this catalog entry is for the user
who created the catalog. To be valid, such an entry MUST be
signed by an administration key for the Mesh profile containing
the account to which the catalog belongs.
Key: String (Optional) Unique key. Key: String (Optional) Unique key.
Permissions: Permission [0..Many] List of the permissions that the Permissions: Permission [0..Many] List of the permissions that the
contact has been granted. contact has been granted.
Contact: DareMessage (Optional) The (signed) contact data. EnvelopedContact: DareEnvelope (Optional) The (signed) contact data.
2.8.6. Structure: CatalogEntryContactRecryption 2.8.6. Structure: CatalogedContactRecryption
Inherits: CatalogEntryContact Inherits: CatalogedContact
[No fields] [No fields]
2.8.7. Structure: CatalogEntryBookmark 2.8.7. Structure: CatalogedBookmark
Inherits: CatalogEntry Inherits: CatalogedEntry
Inherits: CatalogEntry Inherits: CatalogedEntry
Uri: String (Optional) Uri: String (Optional)
Uri: String (Optional) Uri: String (Optional)
Title: String (Optional) Title: String (Optional)
Title: String (Optional) Title: String (Optional)
Path: String (Optional) Path: String (Optional)
2.8.8. Structure: CatalogEntryTask 2.8.8. Structure: CatalogedTask
Inherits: CatalogEntry
Inherits: CatalogEntry
Task: DareMessage (Optional) Inherits: CatalogedEntry
Task: DareMessage (Optional) Inherits: CatalogedEntry
Key: String (Optional) Unique key. EnvelopedTask: DareEnvelope (Optional)
2.8.9. Structure: Task EnvelopedTask: DareEnvelope (Optional)
Key: String (Optional) Unique key. Key: String (Optional) Unique key.
Start: DateTime (Optional) 2.8.9. Structure: CatalogedApplication
Start: DateTime (Optional)
Finish: DateTime (Optional)
Finish: DateTime (Optional)
StartTravel: String (Optional)
StartTravel: String (Optional)
FinishTravel: String (Optional)
FinishTravel: String (Optional)
TimeZone: String (Optional)
TimeZone: String (Optional)
Title: String (Optional)
Title: String (Optional) Inherits: CatalogedEntry
Description: String (Optional) Inherits: CatalogedEntry
Description: String (Optional) Key: String (Optional)
Location: String (Optional) 2.8.10. Structure: CatalogedApplicationAccount
Location: String (Optional) Wrapper for a signed AccountAssertion
Trigger: String [0..Many] Inherits: CatalogedApplication
Trigger: String [0..Many] Inherits: CatalogedApplication
Conference: String [0..Many] EnvelopedAccountAssertion: DareEnvelope (Optional) The account
assertion
Conference: String [0..Many] 2.8.11. Structure: CatalogedMember
Repeat: String (Optional) UDF: String (Optional)
Repeat: String (Optional) UDF: String (Optional)
Busy: Boolean (Optional) Inherits: CatalogedEntry
2.8.10. Structure: CatalogEntryApplication 2.8.12. Structure: CatalogedGroup
Inherits: CatalogEntry Inherits: CatalogedApplication
Inherits: CatalogEntry [No fields]
Key: String (Optional) 2.8.13. Structure: CatalogedApplicationSSH
2.8.11. Structure: CatalogEntryApplicationEntry Inherits: CatalogedApplication
[No fields] [No fields]
2.8.12. Structure: CatalogEntryApplicationRecryption 2.8.14. Structure: CatalogedApplicationMail
[No fields]
2.8.13. Structure: CatalogEntryApplicationSSH Inherits: CatalogedApplication
[No fields] [No fields]
2.8.14. Structure: CatalogEntryApplicationMail 2.8.15. Structure: CatalogedApplicationNetwork
[No fields]
2.8.15. Structure: CatalogEntryApplicationNetwork Inherits: CatalogedApplication
[No fields] [No fields]
2.9. Messages 2.9. Messages
2.9.1. Structure: MeshMessage 2.9.1. Structure: Message
MessageID: String (Optional) MessageID: String (Optional)
MessageID: String (Optional) MessageID: String (Optional)
Sender: String (Optional) Sender: String (Optional)
Sender: String (Optional) Sender: String (Optional)
Recipient: String (Optional) Recipient: String (Optional)
skipping to change at page 15, line 40 skipping to change at page 20, line 4
MessageID: String (Optional) MessageID: String (Optional)
Sender: String (Optional) Sender: String (Optional)
Sender: String (Optional) Sender: String (Optional)
Recipient: String (Optional) Recipient: String (Optional)
Recipient: String (Optional) Recipient: String (Optional)
References: Reference [0..Many] References: Reference [0..Many]
2.9.2. Structure: MeshMessageComplete 2.9.2. Structure: MessageComplete
Inherits: MeshMessage Inherits: Message
[No fields] [No fields]
2.9.3. Structure: MessageConnectionRequest 2.9.3. Structure: MessagePIN
Inherits: MeshMessage
Inherits: MeshMessage
Account: String (Optional) Account: String (Optional)
Account: String (Optional) Account: String (Optional)
DeviceProfile: DareMessage (Optional) Device profile of the device Inherits: Message
making the request.
ClientNonce: Binary (Optional) Inherits: Message
ClientNonce: Binary (Optional) Expires: DateTime (Optional)
ServerNonce: Binary (Optional) Expires: DateTime (Optional)
ServerNonce: Binary (Optional) PIN: String (Optional)
Witness: String (Optional) 2.9.4. Structure: RequestConnection
Witness: String (Optional) Connection request message. This message contains the information
PinID: String (Optional) Pin identifier used to identify a PIN Inherits: Message
authenticated request.
2.9.4. Structure: MessageConnectionPIN Inherits: Message
Inherits: MeshMessage ServiceID: String (Optional)
Inherits: MeshMessage ServiceID: String (Optional)
Account: String (Optional) EnvelopedProfileDevice: DareEnvelope (Optional) Device profile of
the device making the request.
Account: String (Optional) ClientNonce: Binary (Optional)
Expires: DateTime (Optional) ClientNonce: Binary (Optional)
Expires: DateTime (Optional) PinUDF: String (Optional) Fingerprint of the PIN value used to
authenticate the request.
PIN: String (Optional) 2.9.5. Structure: AcknowledgeConnection
2.9.5. Structure: MessageContactRequest Connection request message generated by a service on receipt of a
valid MessageConnectionRequestClient
Inherits: MeshMessage Inherits: Message
Inherits: MeshMessage Inherits: Message
Contact: DareMessage (Optional) The contact data. EnvelopedMessageConnectionRequest: DareEnvelope (Optional) The
client connection request.
2.9.6. Structure: MessageConfirmationRequest ServerNonce: Binary (Optional)
Inherits: MeshMessage ServerNonce: Binary (Optional)
Inherits: MeshMessage Witness: String (Optional)
2.9.6. Structure: RequestContact
Inherits: Message
Inherits: Message
Reply: Boolean (Optional)
Reply: Boolean (Optional)
Self: DareEnvelope (Optional) The contact data.
2.9.7. Structure: RequestConfirmation
Inherits: Message
Inherits: Message
Text: String (Optional) Text: String (Optional)
2.9.7. Structure: MessageConfirmationResponse 2.9.8. Structure: ResponseConfirmation
Inherits: MeshMessage Inherits: Message
Inherits: MeshMessage Inherits: Message
ResponseID: String (Optional) ResponseID: String (Optional)
ResponseID: String (Optional) ResponseID: String (Optional)
Accept: Boolean (Optional) Accept: Boolean (Optional)
2.9.8. Structure: MessageTaskRequest 2.9.9. Structure: RequestTask
Inherits: MeshMessage Inherits: Message
[No fields] [No fields]
3. Mesh Portal Service Reference 3. Mesh Portal Service Reference
HTTP Well Known Service Prefix: /.well-known/mmm HTTP Well Known Service Prefix: /.well-known/mmm
Every Mesh Portal Service transaction consists of exactly one request Every Mesh Portal Service transaction consists of exactly one request
followed by exactly one response. Mesh Service transactions MAY followed by exactly one response. Mesh Service transactions MAY
cause modification of the data stored in the Mesh Portal or the Mesh cause modification of the data stored in the Mesh Portal or the Mesh
skipping to change at page 32, line 42 skipping to change at page 37, line 14
7.2.4. Accountability 7.2.4. Accountability
Authentication and consequences Authentication and consequences
8. Security Considerations 8. Security Considerations
This document comprises the security considerations for the use and This document comprises the security considerations for the use and
implementation of the Mathematical Mesh. implementation of the Mathematical Mesh.
8.1. Integrity
8.1.1. DNS Spoofing
8.1.2. TLS Downgrade
8.1.3. TLS Service Impersonation
8.1.4. Request Replay Attack
8.1.5. Response Replay Attack
8.2. Confidentiality
8.2.1. Side Channel Attack
8.2.2. Session Key Leakage
9. IANA Considerations 9. IANA Considerations
All the IANA considerations for the Mesh documents are specified in All the IANA considerations for the Mesh documents are specified in
this document this document
10. Acknowledgements 10. Acknowledgements
A list of people who have contributed to the design of the Mesh is
presented in [draft-hallambaker-mesh-architecture] .
11. References 11. References
11.1. Normative References 11.1. Normative References
[draft-hallambaker-mesh-architecture] [draft-hallambaker-mesh-architecture]
Hallam-Baker, P., "Mathematical Mesh Part I: Architecture Hallam-Baker, P., "Mathematical Mesh 3.0 Part I:
Guide", draft-hallambaker-mesh-architecture-06 (work in Architecture Guide", draft-hallambaker-mesh-
progress), August 2018. architecture-08 (work in progress), July 2019.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997. DOI 10.17487/RFC2119, March 1997.
11.2. Informative References 11.2. Informative References
[draft-hallambaker-mesh-developer] [draft-hallambaker-mesh-developer]
Hallam-Baker, P., "Mathematical Mesh: Reference Hallam-Baker, P., "Mathematical Mesh: Reference
Implementation", draft-hallambaker-mesh-developer-07 (work Implementation", draft-hallambaker-mesh-developer-08 (work
in progress), April 2018. in progress), April 2019.
11.3. URIs 11.3. URIs
[1] http://mathmesh.com/Documents/draft-hallambaker-mesh- [1] http://mathmesh.com/Documents/draft-hallambaker-mesh-
security.html security.html
Author's Address Author's Address
Phillip Hallam-Baker Phillip Hallam-Baker
 End of changes. 145 change blocks. 
330 lines changed or deleted 565 lines changed or added

This html diff was produced by rfcdiff 1.47. The latest version is available from http://tools.ietf.org/tools/rfcdiff/