INTERNET-DRAFT Ralf Dorfner Intended Status: Proposed Standard Expires: October 18, 2018 April 16, 2018 SimpleMetadata: An interoperable format for sharing metadata draft-dorfner-core-simplemetadata-00 Abstract This document describes a container format for storing serializable metadata. It shall provide the possibility to store and share any kind of metadata, including encryption support. The idea is to create an open, universal and interoperable standard for storing and distributing every kind of metadata independent from media type or file format. Status of This Memo This is an Internet Standards Track document. This document is a product of the Internet Engineering Task Force (IETF). It represents the consensus of the IETF community. It has received public review and has been approved for publication by the Internet Engineering Steering Group (IESG). Further information on Internet Standards is available in Section 2 of RFC 7841. Information about the current status of this document, any errata, and how to provide feedback on it may be obtained at https://www.rfc- editor.org/info/rfc8335. 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), its areas, and its working groups. Note that other groups may also distribute working documents as Internet- Drafts. 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." The list of current Internet-Drafts can be accessed at http://www.ietf.org/1id-abstracts.html The list of Internet-Draft Shadow Directories can be accessed at Ralf Dorfner Expires October 18, 2018 [Page 1] INTERNET DRAFT SimpleMetadata April 16, 2018 http://www.ietf.org/shadow.html Copyright and License Notice Copyright (c) 2018 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 (https://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. Ralf Dorfner Expires October 18, 2018 [Page 2] INTERNET DRAFT SimpleMetadata April 16, 2018 Table of Contents 1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.1 Terminology . . . . . . . . . . . . . . . . . . . . . . . . 3 2. Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.1 Header Definition . . . . . . . . . . . . . . . . . . . . . 4 2.2 Identifier . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.3 Serialization . . . . . . . . . . . . . . . . . . . . . . . 4 2.4 Crypto . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.5 Major Version . . . . . . . . . . . . . . . . . . . . . . . 5 2.6 Minor Version . . . . . . . . . . . . . . . . . . . . . . . 5 2.6 Schema URI length . . . . . . . . . . . . . . . . . . . . . 5 2.5 Content Length . . . . . . . . . . . . . . . . . . . . . . . 5 3 Schema information . . . . . . . . . . . . . . . . . . . . . . 5 4 Metadata Content . . . . . . . . . . . . . . . . . . . . . . . . 5 5 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 6 Security Considerations . . . . . . . . . . . . . . . . . . . . 6 7 IANA Considerations . . . . . . . . . . . . . . . . . . . . . . 6 8 References . . . . . . . . . . . . . . . . . . . . . . . . . . 6 8.1 Informative References . . . . . . . . . . . . . . . . . . 6 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 6 1 Introduction Nowadays a variety of media file are shared and published all over the world. Information about the origin, purpose or copyright of these files getting more and more important. There are already different standards which enhance files with metadata, like ID3 , Exif or Dublin Core [RFC5013]. SimpleMetadata shall create the foundation to unite these standards and provide an universal and open container format. The metadata payload shall be created, stored and shared with an open standard, like JavaScript Object Notation (JSON) [RFC7159] in combination with schema validation . Every data structure of metadata can be defined and distributed within schema definitions. Furthermore, SimpleMetadata can be extended by additional formatters or crypto standards. 1.1 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]. Ralf Dorfner Expires October 18, 2018 [Page 3] INTERNET DRAFT SimpleMetadata April 16, 2018 2. Structure The SimpleMetadata format consists of the three parts, Header, Schema URI and Metadata payload. +-------------------------------------------------------------------+ | Header (14 bytes) (fixed length) | +-------------------------------------------------------------------+ | Schema URI (variable length, optional) | +-------------------------------------------------------------------+ | Serialized Metadata (variable length) | +-------------------------------------------------------------------+ 2.1 Header Definition The header must be stored at the beginning of a file. +----------------------------------------------------------------+ | Identifier "SMD@" 4 Bytes / string | +----------------------------------------------------------------+ | Serialization 1 Byte / number | +----------------------------------------------------------------+ | Crypto 1 Byte / number | +----------------------------------------------------------------+ | Major version 1 Byte / number | +----------------------------------------------------------------+ | Minor version 1 Byte / number | +----------------------------------------------------------------+ | Schema URI Length 2 Bytes / number | +----------------------------------------------------------------+ | Content Length 4 Bytes / number | +----------------------------------------------------------------+ 2.2 Identifier The first four bytes of the header are always "SMD@" to check if SimpleMetadata is present. 2.3 Serialization Defines the used formatter for the metadata. A formatter serializes or deserializes the metadata with the corresponding procedure. The standard formatter uses Binary JSON (BSON) with the JavaScript Object Notation (JSON) [RFC7159]. 0 = BSON 2.4 Crypto Defines the used crypto standard for en/decrypting metadata. Ralf Dorfner Expires October 18, 2018 [Page 4] INTERNET DRAFT SimpleMetadata April 16, 2018 0 = None encryption 1 = Advanced Encryption Standard (AES) 2.5 Major Version Defines the used major version of the SimpleMetadata format. 1 = Current major version 2.6 Minor Version Defines the used minor version of the SimpleMetadata format. 0 = Current minor version 2.6 Schema URI length Defines the string length of a schema or type. If no schema is defined the schema length is 0. The schema information is described in chapter 3. 2.5 Content Length Defines the length of the serialized metadata, based on the selected formatter (Chapter 2.3). If the content is encrypted, the length is calculated over the encrypted string. 3 Schema information The schema information can be used to validate the metadata against a schema or type. A schema information is an optional string with variable length encoded with UTF-8. It is recommended to use an URI , e.g. "http://exampleschemas.org/Person". Moreover a local file path or even a type definition (AssemblyQualifiedName) can be used. For interoperability, metadata should be based on public schema. The length of the schema is stored in the header (See chapter 2.6). 4 Metadata Content Basically every serializable content can be stored as metadata. It is highly recommended to use for interoperability and compatibility the JavaScript Object Notation (JSON) [RFC7159] for metadata and the according schema definition. 5 Notes Adding SimpleMetadata to a file will damage it under circumstances, unless there is a suitable parser to handle the format! Ralf Dorfner Expires October 18, 2018 [Page 5] INTERNET DRAFT SimpleMetadata April 16, 2018 6 Security Considerations Sensitive metadata can be encrypted within a supported crypto standard (Chapter 2.4). 7 IANA Considerations All data must be stored in UTF-8 [RFC2044]. 8 References 8.1 Informative References [RFC7159] Bray , Tim The JavaScript Object Notation (JSON) Data Interchange Format, March 2014, . [RFC5013] Kunze J., Baker T. The Dublin Core Metadata Element Set, August 2007 [RFC2044] Francois, Yergeau UTF-8, a transformation format of Unicode and ISO 10646, October 1996 . [Internet-Draft] Wright, A. JSON Schema: A Media Type for Describing JSON Documents, November 19, 2017 Authors' Addresses Ralf Dorfner Muensterplatz 8 88250 Weingarten Germany EMail: smd@simplemetadata.org Ralf Dorfner Expires October 18, 2018 [Page 6]