CBOR Manifest Serialisation

Slides:



Advertisements
Similar presentations
Spring 2012: CS419 Computer Security Vinod Ganapathy SSL, etc.
Advertisements

The Assembly Language Level
Introducing Hashing Chapter 21 Copyright ©2012 by Pearson Education, Inc. All rights reserved.
Operating Systems Concepts 1. A Computer Model An operating system has to deal with the fact that a computer is made up of a CPU, random access memory.
C o n f i d e n t i a l Developed By Nitendra NextHome Subject Name: Data Structure Using C Title: Overview of Data Structure.
Lesson 7-Creating and Changing Directories. Overview Using directories to create order. Managing files in directories. Using pathnames to manage files.
CMPSC 16 Problem Solving with Computers I Spring 2014 Instructor: Lucas Bang Lecture 15: Linked data structures.
Processing of structured documents Spring 2002, Part 2 Helena Ahonen-Myka.
March 16 & 21, Csci 2111: Data and File Structures Week 9, Lectures 1 & 2 Indexed Sequential File Access and Prefix B+ Trees.
COSE Overview Jim Schaad August Cellars. Willing Changes No crypto compatibility Use of CBOR idioms Partial change of naming schemes.
Hashing Sections 10.2 – 10.3 CS 302 Dr. George Bebis.
Today’s Agenda  Reminder: HW #1 Due next class  Quick Review  Input Space Partitioning Software Testing and Maintenance 1.
PGP & IP Security  Pretty Good Privacy – PGP Pretty Good Privacy  IP Security. IP Security.
The goal of XML Protocol Develop technologies allowing peers to communicate…....in a distributed environment......using XML as encapsulation language.
VCE IT Theory Slideshows by Mark Kelly study design By Mark Kelly, vceit.com, Begin.
PerfSONAR Schema and Topology Martin Swany. Schema Key Goals: Extensibility, Normalization, Readability Break representation of performance measurements.
Parallel Computing Chapter 3 - Patterns R. HALVERSON MIDWESTERN STATE UNIVERSITY 1.
Recursion Powerful Tool
Stephen Banghart Dave Waltermire
Chapter 3 Data Representation
Tools Of Structured Analysis
© 2002, Cisco Systems, Inc. All rights reserved.
CHP - 9 File Structures.
PANA Issues and Resolutions
Next Generation: Internet Protocol, Version 6 (IPv6) RFC 2460
IETF#67 – 5-10 November 2006 FECFRAME requirements (draft-ietf-fecframe-req-01) Mark Watson.
Ch. 8 File Structures Sequential files. Text files. Indexed files.
Huffman Coding Based on slides by Ethan Apter & Marty Stepp
OpenStorage API part II
Hash-Based Indexes Chapter 11
draft-ietf-geopriv-lbyr-requirements-02 status update
Data collection methodology and NM paradigms
Array.
Towards PubSub and Storage integration in ANIMA
Systems Analysis and Design 5th Edition Chapter 8. Architecture Design
Interfacing Memory Interfacing.
Design by Contract Fall 2016 Version.
Optimizing Malloc and Free
Disk Storage, Basic File Structures, and Hashing
Discussion section #2 HW1 questions?
Disk storage Index structures for files
Introduction to Database Systems
Chapter 3 The DATA DIVISION.
ELECTRONIC MAIL SECURITY
Hash-Based Indexes Chapter 10
CSC 533: Programming Languages Spring 2015
Lecture 15: Bitmap Indexes
Search Related Algorithms
ELECTRONIC MAIL SECURITY
Analysis models and design models
Hash-Based Indexes Chapter 11
A Robust Data Structure
Introduction C is a general-purpose, high-level language that was originally developed by Dennis M. Ritchie to develop the UNIX operating system at Bell.
Multiway Trees Searching and B-Trees Advanced Tree Structures
File Storage and Indexing
A General Backtracking Algorithm
Modern PC operating systems
Hashing Sections 10.2 – 10.3 Lecture 26 CS302 Data Structures
Instructions in Machine Language
FILS Handling of Large Objects
COMPILERS Semantic Analysis
Measurement reporting in TGh
CSC 533: Programming Languages Spring 2018
Lecture 21 Amortized Analysis
CSC 533: Programming Languages Spring 2019
draft-ietf-dtn-bpsec-06
Lecture 20: Representing Data Elements
BPSec: AD Review Comments and Responses
The devil is in the details
Secret-Key Encryption
Presentation transcript:

CBOR Manifest Serialisation

Open issues Should the primary object be an array or a map? Should the graph described in draft-moran-suit-manifest-02 be replaced with trees? How are they overridden? How are they represented? Are there any use cases that break? Should one digest be used for the whole manifest, or is there a good reason to support more than one? Should more sections be severable? Should it be possible to encrypt severable sections? COSE has no algorithm identifiers for digests, so they cannot be reused May need another SUIT draft for COSE

Open Issues (Cont’d) Should encryption of the manifest be addressed explicitly, or should that be handled one level higher? Encoding of Processing Step Encoding of Directive Encoding of Conditions Extension encoding IANA implications for use of enums throughout the manifest

Primary structure array vs map Most fields are mandatory Version digestInfo* Nonce Sequence Preconditions Resources Targets Those that aren’t used cost 1 byte (nil or 0-length object) Out of 12 fields, 7 are mandatory

Tree-based process description proposal Things that are installed (assets) get their own section Digest Size Component identifier Description of how to obtain an asset: List of processing steps Resources are a processing step with URIs or a ComponentIdentifier instead of inputs

Tree-based process description (cont’d) Asset = [ component: ComponentIdentifier, ; where to store the asset encoding: bstr / nil, ; the format of the asset parameters: bstr / nil, ; any specialized arguments for installing the asset size: uint / nil, ; size of the resource digest: Digest ; digest of the processed resource ] ComponentIdentifier = [* bstr ] Digest = [ digestAlgorithm : DigestIdentifiers / nint, ; Digest identifier rawDigest : bstr ; Raw bytes of the digest ? digestParameters : bstr ; optional extra arguments to the algorithm

Tree-based process description (cont’d) AssetInstallationInfo = [ component : ComponentIdentifier processors : [ * Processor ], ? allowOverride : bool, ? extensions : { * int => bstr } ] Processor = [ type: &( resource: 1, decrypt: 2, decompress: 3, undiff: 4, relocate: 5, unrelocate: 6) / nint, inputs: UriList / ComponentIdentifier / {int => int}, parameters: bstr ; Note: this needs to have more detail instead of bstr

Description of installation process in manifest Why not leave container information in the payload(s)? Reject early if unsupported Important for low-bandwidth Why not enums for aggregate formats? Lots of specialized parameters. Many possible configurations. Registration space of accepted enums becomes large

Description of installation process in manifest Example: Raw binary payload: no arguments Encrypted binary payload: key identifier algorithm identifier Encrypted, compressed binary payload: encryption algorithm identifier compression algorithm identifier Encrypted, compressed, delta payload precursor digest precursor component ID, storage location delta algorithm identifier

Description of installation process in manifest Each enum would need its own parameter structure Easy to miss a reasonable combination of supported steps Describe each step instead Each step can have a defined structure All steps can be represented in the same way How is flow described? Flow of data between steps is a tree, not a linear sequence Delta makes it clear that flow is at least a tree A resource shared between two steps makes it clear that flow is a graph Graphs make constrained processing hard Use multiple trees instead of a graph

Description of installation process in manifest For each asset, a tree defines the installation process To reduce nesting depth in the parser, the tree is encoded as a list, where output identifiers are the index of the processor in the processor list inputs are a map of indices into the processor list. Resources are encoded as a processor with no inputs Assets designate a single input node Output nodes can be marked as non-overridable Dependent manifests can override any installation tree not marked as non- overridable

Examples: Raw Binary payload Installation Information: Component Identifier: [ bstr(0) ] Resource: Parameters: List of URIs Asset Information Encoding: raw-binary

Examples: Delta payload Installation Information: Asset Information Component Identifier: [ bstr(1) ] Processors: Delta: {1 => 1, 2 => 2} Resource: URIs Resource: [ bstr(1) ] Asset Information Encoding: raw-binary inode: bstr(2)

Current changes

Highlights of changes Primary structure is array (not map) Text is severable Multiple payloads allowed Resources (before installation) separated from assets (after installation) Description of installation process in the manifest Conditions divided into preconditions and postconditions Added component identifier (replaces storage identifier) Timestamp removed, added sequence number

WIP status This serialization is still in development There is ongoing discussion on the mailing list See Open Issues for more information

Severable Text Text is for humans Text is not used by devices to make decisions Devices don’t need to receive text Text is still needed in management systems

Severable Text (cont’d) Text lives outside the authenticated container AuthenticatedManifest = [ authenticatedManifest: COSE_Mac / COSE_Sign, text: bstr .cbor TextMap ] TextKeys = &( uninitialised: 0 manifestDescription: 1 payloadDescription: 2 vendorName: 3 modelName: 4 payloadVersion: 5 ) / nint TextMap = { * TextKeys => tstr }

Severable Text (cont’d) Inside the authenticated container, text is authenticated with a digest

Multiple payloads Payloads had three components: A resource identifier Installation instructions (cryptographic info) An asset description Required extension for advanced uses (e.g. Delta) Aliases, Dependencies, Payloads are now all resource references Assets are now separate from their resource identifier Installation instructions are now separate (examples below)

Resources separated from assets All resource references are effectively the same No need to distinguish between alias, dependency, payload Resources define a local or remote input URI Digest Assets define an installed image: Size Location

Conditions divided into preconditions and postconditions Some conditions need to be checked before installation Identifiers, time, precursors, custom Some conditions need to be checked after installation Content not identified by an asset digest, custom Two choices: Two lists makes it easier for devices to know what to do in each step of the process typically costs 1 byte Duplicate condition identifiers typically smaller serialization duplication of identifiers may increase integer encoding size more registration and maintenance with duplicate identifiers

Component Identifier Storage Identifier may not be adequate for all use cases Devices can be aggregates of one or more processors with two or more different storage systems Component Identifier allows designating the storage system Storage systems and hardware components can be nested Component Identifier needs to be a list to handle this. Storage Identifier can be merged into this list as the last element.