The emergence of ASN.1 as an XML Schema Notation

Slides:



Advertisements
Similar presentations
ASN.1 and its use for e-health standards John Larmouth ITU-T ASN.1 Rapporteur ITU-T SG17 Workshop on Standardization in E-health.
Advertisements

Best Practices in Web Service Style, Data Binding and Validation (for use in Data-Centric Applications) David Meredith, Asif Akram, Rob Allan CCLRC Daresbury.
What is XML? a meta language that allows you to create and format your own document markups a method for putting structured data into a text file; these.
Programming Paradigms and languages
SOAP.
CIS 375—Web App Dev II SOAP.
1 Web Data Management XML Schema. 2 In this lecture XML Schemas Elements v. Types Regular expressions Expressive power Resources W3C Draft:
Lecture 14 XML Validation. a simple element containing text attribute; attributes provide additional information about an element and consist of a name.
RELAX NG. Caveat I did not have a RELAX NG validator when I wrote these slides. Therefore, if an example appears to be wrong, it probably is.
Chapter 3 Program translation1 Chapt. 3 Language Translation Syntax and Semantics Translation phases Formal translation models.
Sunday, June 28, 2015 Abdelali ZAHI : FALL 2003 : XML Schemas XML Schemas Presented By : Abdelali ZAHI Instructor : Dr H.Haddouti.
Introduction to XML This material is based heavily on the tutorial by the same name at
Efficient XML Interchange. XML Why is XML good? A widely accepted standard for data representation Fairly simple format Flexible It’s not used by everyone,
17 Apr 2002 XML Schema Andy Clark. What is it? A grammar definition language – Like DTDs but better Uses XML syntax – Defined by W3C Primary features.
JXON An Architecture for Schema and Annotation Driven JSON/XML Bidirectional Transformations David A. Lee Senior Principal Software Engineer Slide 1.
Chapter 9 Web Services Architecture and XML. Objectives By study in the chapter, you will be able to: Describe what is the goal of the Web services architecture.
Abstract Syntax Notation One ASN.1
Lecture 15 XML Validation. a simple element containing text attribute; attributes provide additional information about an element and consist of a name.
XML introduction to Ahmed I. Deeb Dr. Anwar Mousa  presenter  instructor University Of Palestine-2009.
T Network Application Frameworks and XML Web Services and WSDL Sasu Tarkoma Based on slides by Pekka Nikander.
Object and component “wiring” standards This presentation reviews the features of software component wiring and the emerging world of XML-based standards.
CREATED BY ChanoknanChinnanon PanissaraUsanachote
Dr. Azeddine Chikh IS446: Internet Software Development.
XML CPSC 315 – Programming Studio Fall 2008 Project 3, Lecture 1.
Introduction to XML 1. XML XML started out as a standard data exchange format for the Web Yet, it has quickly become the fundamental instrument in the.
1 © Netskills Quality Internet Training, University of Newcastle Introducing XML © Netskills, Quality Internet Training University.
XML 1 Enterprise Applications CE00465-M XML. 2 Enterprise Applications CE00465-M XML Overview Extensible Mark-up Language (XML) is a meta-language that.
AML ASN.1 Markup Language A markup notation for ASN.1 values Copyright © 2001 Griffin Consulting, All Rights Reserved. Griffin Consulting 1625 Glenwood.
Presentation Services  need for a presentation services  ASN.1  declaring data type  encoding data types  implementation issues  reading: text, section.
What is XML?  XML stands for EXtensible Markup Language  XML is a markup language much like HTML  XML was designed to carry data, not to display data.
 XML is designed to describe data and to focus on what data is. HTML is designed to display data and to focus on how data looks.  XML is created to structure,
Processing of structured documents Spring 2002, Part 2 Helena Ahonen-Myka.
Abstract Syntax Notation ASN.1 Week-5 Ref: “SNMP…” by Stallings (Appendix B)
Avoid using attributes? Some of the problems using attributes: Attributes cannot contain multiple values (child elements can) Attributes are not easily.
How do I use HTML and XML to present information?.
1 Chapter 10: XML What is XML What is XML Basic Components of XML Basic Components of XML XPath XPath XQuery XQuery.
Study Group 7/17 ASN.1 ASN.1: Past uses, new developments, and future prospects in security and e-commerce applications John Larmouth
Abstract Syntax Notation One ASN.1. Abstract Syntax Notation One  Both the information and communications models need to be specified syntactically and.
An Introduction to Abstract Syntax Notation 1 (ASN.1)
Accessing Data Using XML CHAPTER NINE Matakuliah: T0063 – Pemrograman Visual Tahun: 2009.
What it is and how it works
XML 2nd EDITION Tutorial 4 Working With Schemas. XP Schemas A schema is an XML document that defines the content and structure of one or more XML documents.
1 Tutorial 14 Validating Documents with Schemas Exploring the XML Schema Vocabulary.
Tutorial 13 Validating Documents with Schemas
CS 157B: Database Management Systems II February 11 Class Meeting Department of Computer Science San Jose State University Spring 2013 Instructor: Ron.
Study Group 17 ASN.1 The importance of colour John Larmouth ISO ASN.1 Rapporteur Note, for best viewing, this presentation needs.
XML Validation II Advanced DTDs + Schemas Robin Burke ECT 360.
XML Validation. a simple element containing text attribute; attributes provide additional information about an element and consist of a name value pair;
C Copyright © 2011, Oracle and/or its affiliates. All rights reserved. Introduction to XML Standards.
CHAPTER NINE Accessing Data Using XML. McGraw Hill/Irwin ©2002 by The McGraw-Hill Companies, Inc. All rights reserved Introduction The eXtensible.
XML Extensible Markup Language
Chapter 1: Preliminaries Lecture # 2. Chapter 1: Preliminaries Reasons for Studying Concepts of Programming Languages Programming Domains Language Evaluation.
XML Notes taken from w3schools. What is XML? XML stands for EXtensible Markup Language. XML was designed to store and transport data. XML was designed.
Study Group 17 ASN.1 John Larmouth ITU-T and ISO/IEC ASN.1 Rapporteur
Chapter 27 Network Management Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display.
Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved Chapter 9 Web Services: JAX-RPC,
9/21/2016 Presentation layer Abstract Syntax Notation #1 Basic Encoding Rules.
XML BASICS and more…. What is XML? In common:  XML is a standard, simple, self-describing way of encoding both text and data so that content can be processed.
Jaringan Telekomunikasi, Sukiswo ST, MT Sukiswo
Introduction to Algorithms
The ITU-T X.500 series and X.509 in a changing world
ASN.1: Introduction Zdeněk Říha.
Introduction to the C Language
XML QUESTIONS AND ANSWERS
UNIT 2 – LESSON 6 ENCODE AN EXPERIENCE.
Dept. of Computer Science and Engineering
Data Modeling II XML Schema & JAXB Marc Dumontier May 4, 2004
Switch, Rounding Errors, Libraries
Chapter 9 Web Services: JAX-RPC, WSDL, XML Schema, and SOAP
Introduction to Algorithms
Presentation transcript:

The emergence of ASN.1 as an XML Schema Notation ©John Larmouth

What is ASN.1? (1) Today, it is a notation for defining the content and form of an XML document That is, it is an XML schema notation But originally it was a notation for defining the content – the abstract syntax of documents, supported by binary encoding rules Hence Abstract Syntax Notation One

What is ASN.1? (2) Quite old – early 1980s. Mature! But still developing. ISO Standards and ITU-T Recommendations Heavily used to define messages in many industrial and commercial sectors Until recently, all ASN.1-defined messages were encoded in binary.

ASN.1 - lineage ASN.1 was borne around 1982 ish First ASN.1 Standard (CCITT X.409) in 1984 Borne from X.400 (mother with an early child, and the e-mail standard the world *should* have had!) Fathered by X.500 (certified insane at birth, but totally secure) Grand-parents (OSI) died prematurely and are not discussed in polite conversation today

X X X X X X Waving a magic wand Without ASN.1-defined messages: The lights go out! Portable phones don’t work! Parcels get lost! Traffic lights fail! Aircraft fall from the sky! Your impending marriage suffers as Net Meeting fails! X X X X X X On second thoughts – it might be a better world?

A sample of ASN.1 notation BBCard ::= SEQUENCE { name IA5String, team IA5String, age INTEGER, position IA5String, handedness ENUMERATED { left-handed, right-handed, ambidextrous }, batting-average REAL }

A sample of ASN.1 notation with "facets" (encouraged) BBCard ::= SEQUENCE { name IA5String (SIZE (1..60)), team IA5String (SIZE (1..60)), age INTEGER (1..100), position IA5String (SIZE (1..60)), handedness ENUMERATED { left-handed, right-handed, ambidextrous }, batting-average REAL }

The C data-structure for the base-ball card typedef struct BBCard { char name [61] ; char team [61] ; short age ; char position [61] ; enum { left_handed = 0, right_handed = 1, ambidextrous = 2, } handedness ; float batting_average ; } BBCard ;

A base-ball card value in XML syntax <BBCard> <name>Jorge Posada</name> <team>New York Yankees</team> <age>29</age> <position>C</position> <handedness>right-handed</handedness> <batting-average>0.277</batting-average> </BBCard>

The Montagues and the Capulets (A shorter history of contending philosophies) (With apologies to William Shakespeare and to those from a non-UK culture!)

The Montagues and Capulets A long and on-going civil dispute Montagues => Binary-based specification Capulets => Character-based specification

Understanding of protocol specification techniques 1.5 billion seconds ago ….. Computers started to communicate Major advances every 150 million seconds There was a need for A means of syntax (data structure) specification Procedure (sequence) specification Test suite specification Validation And tools to support rapid implementation!

The stone-age Montagues Diagrams of bits and bytes - e.g. IPv4 (The earliest approach, simple and clear, but focusing totally on the bits-on-the-line.) Tool support not possible Extensibility support crude - based on reserved fields. ©John Larmouth

The stone-age Capulets Simple “command lines” – in ASCII! Simple character mnemonics and error codes (eg “200 OK”) Simple comma-separated parameters Good for simple dialogues Extensibility by adding commands in V2, with unknown commands ignored by V1 systems

The Bronze Age Montagues invent TLV and Tabular Notation Each PDU and each parameter has an ID (or Tag), a Length, and a Value Nested TLVs in TLVs – sounds familiar? (Should have been patented? No XML!) Tables list each parameter: Tabular Notation ©John Larmouth

Tabular Notation and TLV was a break-through Extensibility was EXCELLENT. Version 1 systems just skipped (using TLV) anything they did not know. Tool-support, however, not possible. But it was verbose! But not as verbose as the character-based encodings used by the Capulets!

The Bronze Age Capulets invent BNF The Capulets’ main concern was with precise specification of correct syntax This was the dawning of Backus Naur Form (BNF) This potentially allowed more complex information to be specified in a “command” But it never really made it to the modern era of automatic mapping to Java, C++, C etc.

150 Million seconds after the Bronze Age Recognition of: Separation of "abstract syntax" (content) from encoding Encoding rules ASN.1 specifications define a de facto, platform and language independent API Tools emerge to support the transformation of ASN.1 to a platform-specific API, and the encoding of data across that API Supported on a wide range of platforms and languages – typically C, C++, Java Profits for all!

300 Million seconds later, the Capulets develop XML Don't really need to describe it to this audience! But focus still more on what is a syntactically correct document, rather than on its content Can be seen as the TLV approach stolen from the Montagues (!) but with an end-tag instead of a length field to delimit elements Rapidly gained popularity! The encoding-of-choice for many applications today

And finally, after another Million seconds ASN.1 develops XML Encoding Rules Romeo and Juliet marry!

Back to the serious business! The separation of the specification of document content from representation issues has been retained XML is (just) another way of encoding data defined using ASN.1 The same ASN.1 definition (schema) defines both XML and (very efficient) binary encodings This includes canonical encodings for security sensitive work and signatures

Current work using ASN.1 as a schema There are two pieces of OASIS work that use ASN.1 The XCBF work (Extensible Common Biometrics Formats) uses ASN.1 alone to define the XML document The UBL (Universal Business Language) work uses XSD as the master schema, but this is algorithmically mapped into an ASN.1 schema by a mapping tool in order to provide binary protocols

Mapping between binary and XML All existing message formats defined using ASN.1 now also have a defined XML format (no additional work needed) Tools are available to map message formats between compact binary and XML formats for such protocols (in both directions) XSD definition of message formats can be mapped to an ASN.1 definition using available tools, giving access to the efficient binary encodings

Stage 1 of ASN.1 support for XML The first Standard developed for XML support in ASN.1 was called "basic XML encoding rules", or BASIC-XER This provided no control over details of XML representation such as use of attributes instead of elements, space-separated lists, xsi:type, or namespaces This was very much basic XML! A canonical representation was also defined

Stage 2 of ASN.1 support for XML Encoding Instructions were introduced into the ASN.1 notation These control things such as encoding as an attribute rather than as an element, or as a space-separated list Also support for XSD concepts such as union, default-for-empty, nillable, and so on Encoding instructions can be prefixed or can be included separately in an Encoding Control Section (see later)

“Coloring” the BaseBall card schema BBCard ::= SEQUENCE { name [ATTRIBUTE] IA5String, team [ATTRIBUTE] IA5String, age INTEGER, position IA5String, handedness ENUMERATED { left-handed, right-handed, ambidextrous }, batting-average REAL } Unchanged API

The new XML syntax <BBCard name = “Jorge Posada” team = “New York Yankees” > <age>29</age> <position>C</position> <handedness>right-handed</handedness> <batting-average>0.277</batting-average> </BBCard>

Another example Employee ::= [UNCAPITALIZED] SEQUENCE { id [ATTRIBUTE] INTEGER(0..MAX), recruited Date, salaries [LIST] SEQUENCE OF salary REAL }

Without the coloring, we have basic XML: <Employee> <id>239</id> <recruited>27-11-2002</recruited> <salaries> <salary>29876</salary> <salary>54375</salary> <salary>98435</salary> </salaries> </Employee>

With the coloring, we get: <employee id = "239"> <recruited>27-11-2002</recruited> <salaries>29876 54375 98435</salaries> </employee> Much less verbose, assuming you care! But the same information content

Equivalently we could write: Employee ::= SEQUENCE { id INTEGER(0..MAX), recruited Date, salaries SEQUENCE OF salary REAL } ENCODING-CONTROL XER NAME Employee AS UNCAPITALIZED ATTRIBUTE Employee.id LIST Employee.salaries At first sight this is more verbose and less clear! But …..

Advantages of the separate Encoding Control Section It keeps a much clearer separation of encoding issues from content In most cases it is much less verbose, as you are able to apply encoding instructions globally, or to selected parts of the spec, and also to use NOT on selected parts The embedded form is usually good for examples The separate section is best for real specifications

Stage 3 of ASN.1 support for XML Standardisation of the mapping from an arbitrary XSD definition into an ASN.1 schema (with coloring) Provides exactly the same specification of the XML document as the XSD Tools available to do the mapping Enables binary encodings to be used for the XSD specification, and mapping of it into a C, C++ or Java datastructure.

Part of an invoice in XSD and the ASN.1 equivalent <xsd:complexType name=“LineItemPair"> <xsd:sequence> <xsd:element name="part-no" type="xsd:number"/> name="quantity" type="xsd:number"/> </xsd:sequence> </xsd:complexType> maps to: LineItemPair ::= SEQUENCE { part-no INTEGER, quantity INTEGER } ©John Larmouth

The full invoice in ASN.1 (couldn't get the XSD onto a single slide!) Invoice ::= SEQUENCE { number INTEGER, name UTF8String, details SEQUENCE OF LineItemPair, charge REAL, authenticator BIT STRING} LineItemPair ::= SEQUENCE { part-no INTEGER, quantity INTEGER } ©John Larmouth

The XML encoding of an Invoice (1) <number>32950</number> <name>funny-name with <</name> <details> <Line-item> <part-no>296</part-no> <quantity>2</quantity> </Line-item> Cont ©John Larmouth

The XML encoding of an Invoice (2) Continuation <Line-item> <part-no>4793</part-no> <quantity>74</quantity> </Line-item> </details> <charge>397.65</charge> <authenticator> EFF8 E976 5403 629F </authenticator> </invoice> ©John Larmouth

Determinism, or "safety" versus power! See the supporting paper BASIC-XER is totally "safe" – a total idiot can produce a specification where the XML is never ambiguous! Everything is wrapped up With EXTENDED-XER you can remove wrappers (XML tags) round repetitions, choices and sequences (that may have optional elements) using the [UNTAGGED] encoding instruction Caveat Emptor!

ASN.1 and RELAX NG (all on one slide!) Invoice ::= SEQUENCE { number INTEGER, name UTF8String, details SEQUENCE OF SEQUENCE { part-no INTEGER, quantity INTEGER }, charge REAL, authenticator BIT STRING} element Invoice { element number {integer}, element name {text}, element details { element part-no {integer}, element quantity {integer} } * , element charge {float}, element authenticator {bits} } Pretty similar!

The importance of having binary encodings available? Re-opening the Montague and Capulet war! Romeo and Juliet, happily married for a few years, get divorced! Maybe not! There are real merits in using the same schema definition for both character and binary encodings Work on binary XSD recognises that, but is hampered because XSD basically defines allowed syntax, not content. ASN.1 binary encodings are very mature! (And have canonical variants.) The next example can be taken quickly

A personnel-record defined (1) PersonnelRecord ::= SEQUENCE { name Name, title VisibleString, number EmployeeNumber, dateOfHire DATE-TIME (Date), nameOfSpouse Name, children SEQUENCE OF child ChildInformation DEFAULT {} }

A personnel-record defined (2) ChildInformation ::= SEQUENCE { name Name, dateOfBirth DATE-TIME (Date)} Name ::= SEQUENCE { givenName VisibleString, initial VisibleString, familyName VisibleString} EmployeeNumber ::= INTEGER

An example personnel-record (1) <name> <givenName>John</givenName> <initial>P</initial> <familyName>Smith</familyName> </name> <title>Director</title> <number>51</number> <dateOfHire>19710917</dateOfHire> <nameOfSpouse> <givenName>Mary</givenName> <initial>T</initial> </nameOfSpouse Cont ©John Larmouth

An example personnel-record (2) <children> <child> <name> <givenName>Ralph</givenName> <initial>T</initial> <familyName>Smith</familyName> </name> <dateOfBirth>19571111</dateOfBirth> </child> <givenName>Susan</givenName> <initial>B</initial> <familyName>Jones</familyName> <dateOfBirth>19590717</dateOfBirth> </children> </PersonnelRecord> ©John Larmouth

A count of octets for the personnel-record value With white-space omitted, 653 octets Fully human-readable with white-space, can be double that! Binary TLV-style encoding 136 octets Compact binary encoding 94 octets (other examples compress better) ZIP compression ….. of XML or binary? But does size (or transaction processing speed) matter anyway?

Tail-end remarks Everyone is bored by now! One example is much like another. Refer to the paper if you wish. Messages from these examples: Simplicity and clarity of specification Content clearly separated from syntax Ability to apply coloring The same schema definition provides all forms of encoding as well as C, C++ and Java APIs

Future developments Discussions are ongoing on The application of ASN.1 to SOAP Use of ASN.1 in web services An ASN.1 definition of the infoset Mapping UML to ASN.1 Much is in place already, but work continues on the full integration of ASN.1 with XML ASN.1 earlier shed its dependence on OSI and is now shedding its dependence on binary encodings

Synergy Never reject the new. But don't ignore what has been learned in the past. Usually a combination of the two will be best. We have learned a lot over the years on message specification and encoding techniques, and XML was a big advance. But …. Synergy! The End – clapping is allowed! ©John Larmouth