OSCORE

Object Security for Constrained RESTful Environments

Security →
Introduced in Rel-18

OSCORE is a security protocol that provides end-to-end protection for CoAP messages at the application layer by encrypting and authenticating individual request/response payloads and options for IoT communications.

Category
Security
Introduced
Rel-18
Where
Security
Specifications
3 specs
OSCORE Description Purpose Detected Changes Specifications

Description

Object Security for Constrained RESTful Environments (OSCORE) is an application-layer security protocol standardized by the IETF and adopted by 3GPP for securing IoT communications, particularly those using the Constrained Application Protocol (CoAP). Unlike transport-layer security (TLS/DTLS), which secures an entire channel, OSCORE applies protection directly to the CoAP message, transforming it into a secure 'OSCORE message' that encapsulates the original CoAP options and payload. This process is known as 'object security' because the security is bound to the message object itself. The core of OSCORE's operation is the use of the COSE (CBOR Object Signing and Encryption) format for cryptographic operations, specifically employing the AES-CCM algorithm for providing confidentiality, integrity, and authentication of the protected message fields.

OSCORE works by establishing a shared security context between two endpoints (e.g., an IoT device and an application server). This context includes a Master Secret, a Sender ID, and a Recipient ID. From the Master Secret, deriving keys and an Initialization Vector (IV) for each message are generated. Each message is assigned a unique Sequence Number (Sender Sequence Number) by the sender, which is used in the IV derivation to prevent replay attacks. The sender encrypts and integrity-protects the CoAP payload and certain sensitive CoAP options (like Uri-Path), while leaving other options (like those needed for proxy routing) unprotected. The resulting OSCORE message includes the Sender ID, a partial IV (derived from the Sequence Number), and the ciphertext. The recipient uses its security context, the received Sender ID, and the partial IV to reconstruct the full IV, decrypt the payload, and verify integrity.

In a 3GPP network, OSCORE's role is crucial for securing end-to-end communication in IoT scenarios, especially within the Service Capability Exposure Function (SCEF) or Network Exposure Function (NEF) interfaces for Non-IP Data Delivery (NIDD) and other constrained device services. Its key architectural advantage is that it allows messages to remain secure while traversing intermediaries like CoAP proxies or network gateways, which may need to read or modify unprotected CoAP options (e.g., for caching or routing) but cannot access the protected application data. This makes it ideal for low-power, lossy networks (LLNs) where transport-layer security sessions can be expensive to maintain and where hop-by-hop security is insufficient for ensuring data confidentiality all the way to the application server.

Purpose & Motivation

OSCORE was created to solve the specific security challenges inherent in the Internet of Things (IoT), where devices are often severely constrained in terms of processing power, memory, and energy. Traditional security protocols like TLS/DTLS, while robust, can be too heavy for such devices, requiring significant resources for session establishment, maintenance, and per-packet overhead. Furthermore, in IoT deployments, communications frequently pass through intermediaries (proxies, gateways) for protocol translation or network optimization. TLS provides only hop-by-hop security, meaning the intermediary becomes a trusted entity that can see plaintext data, which is undesirable for end-to-end security and privacy.

The primary problem OSCORE addresses is how to provide efficient, end-to-end security for the payload and critical metadata of CoAP messages without imposing the overhead of maintaining a stateful transport-layer security tunnel. It was motivated by the need for a security solution that works in constrained environments, supports the RESTful paradigm of CoAP, and allows for the legitimate operation of intermediaries without breaking security. By securing the 'object' (the CoAP message) itself, OSCORE decouples security from the underlying transport, enabling secure communication over unreliable transports and through untrusted nodes.

3GPP adopted OSCORE to enhance the security of IoT services in its architecture, particularly for services exposed via the NEF/SCEF. It addresses limitations of previous approaches where IoT device data might only be protected between the device and the mobile network, but not all the way to the application server in the cloud. By mandating OSCORE for certain interfaces, 3GPP ensures that sensitive IoT data, such as sensor readings or control commands, remains confidential and integral from the constrained device to its final destination, even when traversing the 3GPP network infrastructure and external IP networks.

Detected Changes Across Releases

from 3GPP Change Requests

Specific changes extracted from the „Change history“ tables of 3GPP specifications (2 CRs across 1 releases). Complements the general historical overview above with the evidence-based evolution of this function.

Rel-18 2 changes

In Release 18, OSCORE was newly introduced as an optional Ua security protocol for both the Generic Bootstrapping Architecture (GBA) and the Authentication and Key Management for Applications (AKMA) framework. This specification defines how OSCORE, a lightweight protocol for securing CoAP communication, is used to protect access to a Network Application Function (NAF), detailing procedures for establishing a security context derived from GBA keys like Ks_(ext)_NAF or Ks_int_NAF. The support for this feature is optional for both the User Equipment (UE) and the NAF.

  • IETF OSCORE as GBA Ua protocol TS 33.220CR0223
  • IETF OSCORE as AKMA Ua protocol TS 33.535CR0175

Explore further

Broader topics and technologies where OSCORE plays a role.

Defining Specifications

3GPP specifications that define or reference OSCORE, with the latest known release. Sourced from the 3GPP document catalog — see methodology.

SpecificationTitleRelease
TS 33.220 vj00 Generic Authentication Architecture (GAA); Generic Bootstrapping Architecture (GBA) Rel-19
TS 33.535 vj00 5G AKMA: Authentication and Key Management for Apps Rel-19
TR 33.938 vj10 3GPP Cryptographic Inventory for 5G Rel-19
Patrick Zandl

About the author: Patrick Zandl (b. 1974)

Telecommunications specialist, technology journalist (founder of the Mobil server), and developer who has been running since 2025 — the largest Czech-language resource on AI-assisted programming. Formerly Chief Wizard Architect at Prusa3D and head of development for Turris at CZ.NIC; currently a consultant and instructor on AI implementation in companies.