Backbone Layer
From a user perspective, the deepest layer is the backbone layer. It handles the “untrusted” communication with the Backbone and the processing of data within the Backbone. Payload sent to and received from the Backbone is encrypted.
The Backbone itself requires metadata to work, thus there is also unencrypted data sent and received between the transport layer and the Backbone. However, this data is non-personal and cannot be linked back to any real-world persons by the Backbone operator.
Components
- App
- Backbone
- Connector
Tasks
Identity to Backbone Communication
One of the backbone layer’s tasks is the communication between the App or Connector and the Backbone. This includes the authentication with the Backbone, the request and response behaviors and data serialization and deserialization.
Syntactical validation of encrypted data/metadata
The backbone layer is responsible for validating the data sent to or received from the Backbone.
External Events
The backbone layer keeps track of the current synchronization state of Identities and devices and is able to manually synchronize with the Backbone.
Entities
Challenges
Abbreviated: CHL
Stored data on Backbone:
- id
- createdBy
- createdByDevice
- expiresAt
Submitted data to Backbone:
- id
Datawallet Modifications
Stored data on Backbone:
- Datawallet Modifications
- id: string
- index: number
- objectIdentifier: string
- payloadCategory?: string
- createdAt: string
- createdByDevice: string
- collection: string
- type: string
- encryptedPayload?: string
- External Events
- id: string
- type: string
- index: number
- createdAt: string
- syncErrorCount: number
- payload: object
- Backbone sync run
- id: string
- expiresAt: string
- index: number
- createdAt: string
- createdBy: string
- createdByDevice: string
- eventCount: number
Data submitted to Backbone:
- Datawallet Modifications
- localIndex
- modifications[]
- objectIdentifier: string
- payloadCategory?: string
- collection: string
- type: string
- encryptedPayload?: string
- FinalizeSyncRun
- externalEventResults[]
- externalEventId: string
- errorCode?: string
- datawalletModifications[]
- objectIdentifier?: string
- payloadCategory?: string
- collection: string
- type: string
- encryptedPayload?: string
- externalEventResults[]
Devices
Abbreviated: DEV
Stored data on Backbone:
- id
- createdAt
- createdByDevice
- devicePassword
- username
- platform
- handle
- installationId
Submitted data to Backbone:
- devicePassword
- signedChallenge
- platform
- handle
- installationId
Identities
Stored data on Backbone:
- address
- createdAt
- identityPublicKey
Submitted data to Backbone:
- devicePassword
- signedChallenge
- clientId
- clientSecret
Tokens
Abbreviated: TOK
Stored data on Backbone:
- id: string
- content: string
- createdAt: string
- createdBy: string
- createdByDevice: string
- expiresAt: string
Submitted data to Backbone:
- content
- expiresAt
Files
Abbreviated: FIL
Stored data on Backbone:
- id
- createdAt
- createdBy
- createdByDevice
- modifiedAt
- modifiedBy
- modifiedByDevice
- deletedAt
- deletedBy
- deletedByDevice
- owner
- ownerSignature
- cipherSize: number
- cipherHash
- expiresAt
- encryptedProperties
- file cipher
Submitted data to Backbone:
- file cipher
- cipherHash
- owner
- ownerSignature
- expiresAt
- encryptedProperties
Messages
Abbreviated: MSG
Data stored on Backbone:
- id
- createdAt
- createdBy
- createdByDevice
- body
- attachments[]
- file id
- recipients[]
- address
- encryptedKey
- receivedAt
- receivedByDevice
Data submitted to Backbone:
- body
- recipients[]
- address
- encryptedKey
- attachments[]
- file id
Relationships
Abbreviated: REL
Data stored on Backbone:
- id
- relationshipTemplateId
- from
- to
- creationContent?
- creationResponseContent?
- createdAt
- status
- auditLog[]
- createdAt
- createdBy
- createdByDevice
- reason
- oldStatus?
- newStatus
Data submitted to Backbone:
- relationshipTemplateId
- creationContent
- creationResponseContent
RelationshipTemplates
Abbreviated: RLT
Data stored on Backbone:
- id: string
- createdBy: string
- createdByDevice: string
- maxNumberOfAllocations?: number
- expiresAt?: string
- content: string
- createdAt: string
- deletedAt?: string
Data submitted to Backbone:
- expiresAt?: string
- maxNumberOfAllocations?: number
- content: string