CSIP Roles & CSIS Deep Dive

 

BLE Profiles & Services Series
CSIP Roles & CSIS Deep Dive
Part 2 of 3  |  Roles · Service · Characteristics

How Set Coordinator and Set Member Work, What CSIS Exposes, and How SIRK and RSI Enable Private Group Discovery

🧩
2 Roles
Set Coordinator + Set Member
📊
4 Characteristics
Inside the CSIS Service
🔑
SIRK Types
Encrypted vs Plaintext
📡
RSI
Privacy-preserving ID in ADV

Quick Recap from Part 1

In Part 1 we established that CSIP solves the problem of BLE devices that need to be recognised and managed as a group. We defined the Coordinated Set (the group), the Set Coordinator (the phone that manages it), Set Members (the devices in the group), and the SIRK (the shared secret key that ties them together). If those terms are still fuzzy, revisit Part 1 before continuing.

In this part we zoom in on the two roles, examine every characteristic inside the CSIS service, and explain precisely how SIRK and RSI work together to allow private, secure discovery of group members during a BLE scan.

Keywords Covered in This Article

Set Coordinator Role Set Member Role CSIS Service SIRK Characteristic Encrypted SIRK Plaintext SIRK Coordinated Set Size Set Member Lock Set Member Rank RSI AD Type RSI Resolution Multi-Set Membership

🧩 The Two Roles in CSIP

CSIP defines exactly two roles. Every device participating in CSIP must take on at least one of them. The roles map directly to the GATT client/server model you are already familiar with.

CSIP Role Architecture

Set Coordinator
e.g. Smartphone / Tablet
GATT Client
✅ GAP Central (LE)
✅ GAP A-Party (BR/EDR)
✅ Discovers Set Members
✅ Can acquire Lock

GATT

over LE / BR/EDR

Set Member
e.g. Earbud / Hearing Aid
CSIS Service (GATT Server)
Set Identity Resolving Key (SIRK)
Coordinated Set Size
Set Member Lock
Set Member Rank
📡 Advertises RSI in ADV / EIR data

🎮 Set Coordinator Role — In Depth

The Set Coordinator is the device that takes the lead in any CSIP interaction. It actively scans, connects, discovers, and controls. Think of it as the team manager — it knows all the players, keeps track of who is available, and makes sure operations happen in an orderly fashion.

GATT Role

The Set Coordinator is always a GATT client. It reads and writes characteristics on the Set Members but does not host a GATT server of its own for CSIP purposes. Over LE it uses the GAP Central role; over BR/EDR it uses the GAP A-party (inquirer) role during discovery procedures.

Mandatory Capabilities

Service Discovery

Discover all primary services or discover CSIS by UUID on a connected Set Member.

Characteristic Discovery

Discover all four CSIS characteristics and their descriptors (including the CCCD for notifications).

RSI Resolution

Use the obtained SIRK to resolve RSI values received in advertising data during scanning.

Ordered Access (Always)

Support the Ordered Access procedure for coordinating access when bonding is not possible.

Lock/Unlock (if Bonded)

When Bondable mode is supported, must support Lock Request, Lock Release, and SIRK decryption.

📌 Key Rule on Bonding

The Lock Request and Lock Release procedures are only available when the Set Coordinator supports Bondable mode. If it does not, it must fall back to the Ordered Access procedure. This is because the SIRK decryption (needed to obtain the real SIRK from an encrypted Set Member) requires a Long Term Key (LTK) that comes from bonding.

📡 Set Member Role — In Depth

A Set Member is any device that belongs to a Coordinated Set. Its primary job is to make itself discoverable as part of that group, and to host the CSIS service so the coordinator can read its identity information and manage access.

GATT Role

The Set Member is always a GATT server. Over LE it uses the GAP Peripheral role; over BR/EDR it uses the GAP B-party (inquiry scanner) role during discovery phases.

One CSIS Instance Per Set

A Set Member must instantiate one CSIS service for every Coordinated Set it belongs to. This is an important design point: each CSIS instance carries its own SIRK, so if both instances had the same SIRK, there would be no way to tell them apart.

Device Belonging to Two Coordinated Sets Simultaneously

Coordinated Set A
e.g. Earbud Pair
SIRK-A

Smart Earphone (Example)
CSIS Instance 1
SIRK-A · Size · Lock · Rank
Included by Service A
CSIS Instance 2
SIRK-B · Size · Lock · Rank
Included by Service B

Coordinated Set B
e.g. Fitness Sensor Group
SIRK-B

Each CSIS instance carries a different SIRK. The hosting service provides context for which set the instance belongs to.

RSI in Advertising

Every Set Member must include the RSI AD Type in its advertising data (or Scan Response) when using LE transport. For BR/EDR it goes in the Extended Inquiry Response (EIR). If the device belongs to multiple sets, it includes one RSI per set — derived from each respective SIRK.

📊 Inside the CSIS Service: The Four Characteristics

The CSIS service is the heart of CSIP. It contains four GATT characteristics. The Set Coordinator must discover all four of them after connecting to a Set Member. Here is what each one does:

CSIS Service (UUID: 0x1846)
|

Set Identity Resolving Key
UUID: 0x2B84
Format: 17 bytes (1 Type + 16 Value)
Access: Read (bonded)
Notify: Optional

Coordinated Set Size
UUID: 0x2B85
Format: 1 byte (uint8)
Access: Read (bonded)
Notify: Optional

Set Member Lock
UUID: 0x2B86
Format: 1 byte (Locked/Unlocked)
Access: Read + Write
Notify: Yes (critical)

Set Member Rank
UUID: 0x2B87
Format: 1 byte (uint8, 0x01+)
Access: Read only
Notify: No

🔑 SIRK — The Identity Secret of the Group

The Set Identity Resolving Key (SIRK) is the centrepiece of CSIP. It is a 16-byte cryptographic key that serves as the unique identity of the entire Coordinated Set. Every member holds the same SIRK value. The Set Coordinator reads it from the first member it connects to and uses it to identify all remaining members.

The SIRK Characteristic Format

The characteristic value is 17 bytes long: 1 byte for the Type field, followed by 16 bytes for the Value field. The Type field determines how the coordinator must interpret the Value field:

SIRK Characteristic — Two Forms

Encrypted SIRK (Type = 0x00)

The 16-byte Value field contains an encrypted form of the SIRK — the spec calls this EncSIRK. The encryption uses the Long Term Key (LTK) shared during BLE bonding.

The Set Coordinator must use the SIRK Decryption Function (sdf) defined in the CSIS spec to recover the real SIRK:

SIRK = sdf(LTK, EncSIRK)

This is more secure because an eavesdropper who captures the advertising data cannot derive the real SIRK without the LTK.

🔒 Requires Bonding + LTK for decryption

Plaintext SIRK (Type = 0x01)

The 16-byte Value field is the actual SIRK directly — no decryption needed. The coordinator simply reads the characteristic and uses the value as-is:

SIRK = Value field (direct)

This approach is simpler but less secure. It is appropriate only when the physical security of the GATT connection already provides sufficient protection, or when bonding is not feasible.

📖 No decryption needed — readable after pairing

⚠️ Consistency Rule

If any member in a Coordinated Set exposes its SIRK in encrypted form, then no other member in that same set is allowed to expose the SIRK in plaintext. The set must use one form consistently across all members. Mixing would allow an attacker to obtain the plaintext SIRK from one device and then use it against the others.

Coordinated Set Size Characteristic

This is a simple 1-byte read-only value that tells the coordinator how many members make up the complete set. It is optional — a Set Member is not required to expose it. When it is present, the value must be identical across all members that share the same SIRK. The coordinator uses this value to know when it has found all the members during the Set Members Discovery procedure.

Set Member Lock Characteristic

This characteristic has two possible values: Unlocked (0x01) and Locked (0x02). Writing “Locked” to this characteristic on a Set Member reserves exclusive access for the coordinator that wrote it — other coordinators will receive a “Lock Denied” error if they try to write it. The lock is released by writing “Unlocked” back.

Notifications are supported and are very useful: a coordinator waiting for a lock to become available can subscribe to notifications on this characteristic, then go idle until the current lock holder releases it.

Set Member Rank Characteristic

This is a 1-byte read-only value starting from 0x01. It gives each member a priority number within the set. Rank 0x01 represents the highest-priority member. The coordinator always performs lock and access operations in ascending rank order (starting from the member with the lowest rank number). The Rank value 0x01 should be assigned to the member that is most critical to the primary use case.

📡 RSI — How Members Identify Themselves During Scanning

Once the coordinator has obtained the SIRK, it needs to scan for and identify the other members of the set. The challenge: if members just advertised their group membership openly, any eavesdropper could track which devices belong together. CSIP solves this with a privacy-preserving mechanism called the Resolvable Set Identifier (RSI).

What Is the RSI?

The RSI is a compact 6-byte value that a Set Member places inside its BLE advertising data (the RSI AD Type). It is not a raw copy of the SIRK — it is a derived token computed from the SIRK using a hash function. This means that without knowing the SIRK, a scanner cannot determine that two RSI values come from the same set.

RSI Structure and Resolution Concept

RSI = 6 bytes in Advertising Data
hash
(3 bytes)
prand
(3 bytes)
Truncated hash of (SIRK, prand)
Random 3-byte value

How the Set Coordinator Resolves an RSI
Step 1
Extract prand (3 bytes) from received RSI
Step 2
Compute local hash: sih(SIRK, prand)
Step 3
Compare local hash with hash portion in RSI
Result
Match → member of our set. No match → different set.

RSI and BLE Privacy

BLE devices that use resolvable private addresses (RPA) change their Bluetooth address periodically to prevent tracking. The RSI follows the same principle. A privacy-enabled Set Member generates a new RSI every time its private address changes — keeping the RSI and the address renewal in sync. This prevents a third party from correlating an address change to the same device by tracking the RSI.

Because of this design, a privacy-enabled Set Member should only use RSI values that are derived from an encrypted SIRK. Using a plaintext SIRK alongside privacy-enabled advertising would undermine the privacy guarantee.

📋 CSIP Roles and Characteristics — Quick Reference

Item Set Coordinator Set Member
GATT Role Client (reads/writes) Server (hosts CSIS)
GAP Role (LE) Central Peripheral
CSIS Service Discovers & reads Instantiates (mandatory)
RSI Resolves (using SIRK) Advertises in ADV/EIR
Lock Writes Locked/Unlocked Accepts or denies lock
Rank Reads, uses for ordering Exposes its rank value

Solid Foundation — Now See It All in Action

Part 3 walks through every CSIP procedure step-by-step with sequence diagrams: how a coordinator discovers the set identity, how it scans for other members using RSI, and how it uses locking to prevent race conditions.

→ Continue to Part 3: Procedures & Security ← Back to Part 1: Introduction

Leave a Reply

Your email address will not be published. Required fields are marked *