Sunday, May 19, 2019

ASN.1 and Interledger


Interledger is an open protocol suite for the exchange of payments across different ledgers (banks, blockchains, crypto currencies, etc.). It is a standard way of bridging financial systems. Like Internet Protocol (IP), it routes “packets of money” across independent payments networks. The Interledger architecture consists of three types of nodes, a sender, a receiver, and a connector. As their names suggest, the sender initiates a payment request for the receiver, and the request is routed through various connectors.

The Interledger protocol suite is divided into layers of protocols each with different responsibilities. The Ledger protocols represent the existing money systems that Interledger connects to. The Interledger Protocol (ILP) is the core protocol of the entire suite. Its packets pass through all participants in the chain, from the sender, through the connectors, to the receiver. ILP is compatible with any type of currency and underlying ledger systems. The Transport layer protocols are used for end-to-end communication between senders and receivers. The protocols at the application layer communicate details outside of the minimum information that is needed to complete a payment.


The protocols used in the Transport and Interledger layers are specified in ASN.1, a standardized syntax notation to define message structures and encodings in a platform-independent way. Interledger messages are encoded according to the ASN.1 Octet Encoding Rules (OER). Using ASN.1 to define and encode protocol messages allows Interledger applications to interoperate irrespective of their choice of platform and programming language. OER encodings are simple, compact, and very easy to parse. ASN.1 tools - commercially licensed as well as open source - are available to assist with implementation.

Interledger uses advanced features of ASN.1 to make future upgrades of the protocols extremely easy to incorporate and fully backward compatible. For example, if Interledger adds another message type to BilateralTransferProtocolPacket (see the ASN.1 excerpt below), they will only need to define the message and add it to CallSet, without worrying about backward compatibility.
CALL ::= CLASS {
    &typeId UInt8 UNIQUE,
    &Type
} WITH SYNTAX {&typeId &Type}
CallSet CALL ::= {
    {1 Response} |
    {2 Error} |
    {3 Prepare} |
    {4 Fulfill} |
    {5 Reject} |
    {6 Message} |
    {7 Transfer} |
    {8 NewMessageType}
}
BilateralTransferProtocolPacket ::= SEQUENCE {
    -- One byte type ID
    type CALL.&typeId ({CallSet}),
    -- Used to associate requests and corresponding responses
    requestId UInt32,
    -- Length-prefixed main data
    data CALL.&Type ({CallSet}{@type})
}
NewMessageType ::= SEQUENCE {
            -- Add message fields here
}

The OSS ASN.1 Tools can be used to implement the Transport and Interledger layer protocols. The Interledger ASN.1 specification is passed to the ASN.1 compiler to generate programming language specific structures or classes. The compiler generated code along with the high performance OSS ASN.1 runtime libraries are used to create applications for  the sender, the receiver, and the connectors. ASN-1Step, a GUI based product, can be used to view, create, and modify Interledger messages.

The OSS ASN.1 Tools include a sample Interledger program which demonstrates how the implementer of Interledger Bilateral Transfer Protocol (BTP) can use the Tools to serialize and parse BTP messages. The sample simulates the communication between two BTP peers and implements two scenarios, a) a payment request is successfully processed, and b) a payment request is rejected because it’s expired.

Please visit OSS website to find more information about the OSS ASN.1 products, to download a trial, and/or to access the online documentation. If you have any questions about using the OSS ASN.1 products in Interledger applications, please contact info@oss.com.

Wednesday, February 20, 2019

What's New in 2019 - OSS ASN.1 and NAS Tools

2019 is going to be an exciting year for our customers. We will update our ASN.1 and NAS tools to support 3GPP LTE and 5G Releases 15. In addition to enhancing our existing tools with new value added features, we will also introduce new NAS/Java Tools for LTE and 5G as well as new S1/X2 ASN.1 APIs for C# and Java.

Following the success of our NAS/C, NAS/C++, and NAS-1Step products, we are releasing the first version of our NAS/Java Tools supporting LTE Release 14. Users will be able to serialize/parse NAS messages from/to Java objects. In addition, the Tools will provide direct conversion of NAS messages to XML or JSON format. In the second half of the year, the Tools will be upgraded to support LTE and 5G Release 15. OSS will also be updating the existing NAS/C, NAS/C++, NAS-1Step products to support LTE and 5G Release 15.

A new PrintNAS feature will be supported in our NAS/C and NAS/C++ Tools. This feature will enable users to extract the field name, field type (sequence, choice, integer, bit string, etc.), field value (for integers, booleans, strings, etc.), offset of the field within the encoded message, size in bits of the field within the encoded message, and a pointer to the parent of the field. This feature will be useful to those who are interested in knowing the encoding details of their NAS messages.

This year OSS is releasing our new S1/X2 ASN.1 APIs for Java and for C#. Both tools will initially support LTE Release 14. The next version of the tools will be augmented to support LTE Release 15. These APIs will significantly reduce your S1/X2 protocol implementation efforts and provide an easier and less error prone upgrade path to newer 3GPP Releases. In addition, OSS will be updating the existing S1/X2 and LPPa ASN.1 APIs for C to support LTE and 5G Release 15.

An ASN.1 Studio enhancement will automatically create several messages for an input ASN.1 specification. This feature is useful for customers who are testing, as it will automatically generate several different types of test messages for their specification.

ASN.1/C# Tools support for partial decoding will enable you to quickly decode preselected fields from incoming messages. The main advantage of using partial decoding is that, when looking for a particular component in a large message, you can directly receive the value of the component you are looking for without having to navigate through the large message structure. This feature will be useful in many application areas including Lawful Intercept, routers, protocol analyzers, and Self-Organizing Networks (SON).

3GPP is currently working on Release 16 which is expected to be finalized by the end of the year. This Release will include support for Multimedia Priority Service, Vehicle-to-everything (V2X) application layer services, 5G satellite access, Local Area Network support in 5G, wireless and wireline convergence for 5G, terminal positioning and location, communications in vertical domains and network automation and novel radio techniques, etc. The OSS ASN.1 Tools will support Release 16. New samples will be added and existing samples will be updated to demonstrate how Release 16 ASN.1 based protocols can be used with the OSS ASN.1 Tools.



3GPP Protocol Based Products
Availability
3GPP LTE
Release 14 Support
3GPP LTE
Release 15 Support
3GPP 5G Release 15 Support
NAS/C LTE
Now
Now
N/A
NAS/C 5G
N/A
N/A
2Q2019*
NAS/C++ LTE
Now
Now
N/A
NAS/C++ 5G
N/A
N/A
2Q2019*
NAS-1Step LTE
Now
Now
N/A
NAS-1Step 5G
N/A
N/A
2Q2019*
NAS/Java LTE
2Q2019
3Q2019
N/A
NAS/Java 5G
N/A
N/A
4Q2019
S1/X2 ASN.1 API for C
Now
2Q2019
N/A
LPPa API for C
Now
2Q2019
N/A
S1/X2 ASN.1 API for Java
2Q2019
4Q2019
N/A
S1/X2 ASN.1 API for C#
2Q2019
4Q2019
N/A

N/A - Not Applicable
* Early Release available



Thursday, January 24, 2019

ASN.1 and eUICC

Changing your Mobile Network Operator (MNO), even doing so temporarily while travelling internationally, required you to replace your SIM with a new one. In today’s world where everything can be done remotely using online services, it is unreasonable to require a user to go to a store to obtain a new SIM card or wait for days for one to be delivered.
The Embedded Universal Integrated Circuit Card (eUICC) is an embedded SIM card. It differs from an ordinary (replaceable) SIM card in that it’s built into mobile, M2M, and IoT devices and cannot be replaced. When such a device is produced it already contains a smart SIM card (eUICC), containing no information specific to an MNO or an individual user.
With eUICC, there is no need to manually install and replace MNO specific SIM cards. Preparing an eUICC for use is called provisioning and entails downloading a certain MNO specific file, called a profile, to the eUICC. The profile is a data structure specified in ASN.1 and encoded in ASN.1 DER (Distinguished Encoding Rules). Its format is specified in the eUICC Profile Package: Interoperable Format Technical Specification from the SIMAlliance. ASN.1, an international standard supporting features such as compact binary encodings, interoperability, and platform independence, is a perfect choice for the format of eUICC profile.
eUICC vendors can use OSS’ ASN-1Step to manually create eUICC profiles. They would receive provisioning information for a set of devices from a carrier, enter the information in the Value Editor of ASN-1Step, and encode to DER in order to create one or more eUICC profiles which can be transferred to the eUICC of target devices. Profiles can also be viewed or modified using ASN-1Step.



A Remote Provisioning System (RSP) allows for remote provisioning of the eUICC with a Mobile Network Operator (MNO) profile. The RSP also enables the secure, dynamic changing of profiles.
The OSS ASN.1 Tools can be used on the network elements of Remote Provisioning Systems to create and parse profiles. Various interfaces of the RSP nodes exchange profiles (encoded in ASN.1 DER), for example, the interface ES9+ between the SM-DP+ (Subscription Manager Data Preparation) and the LPD (Local Profile Download), and the interface ES11 between the LDS (Local Discovery Service) and the SM-DS (Subscription Manager Discovery Service). These interfaces can be implemented using the OSS ASN.1 Tools. The ASN.1 specification used by the RSPs is found in the GSMA RSP Technical Specification document. The specification is passed to the ASN.1 compiler to generate programming language specific structures or classes. The compiler generated code along with the high performance OSS ASN.1 runtime libraries are used to create applications for use on the RSP nodes to create and parse profiles.




Visit this link for more information about the OSS ASN.1 products and to download a trial. Online documentation for the ASN.1 products can be accessed here. If you have any questions about using the OSS ASN.1 products in eUICC applications, please contact info@oss.com.