Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PubSubChk Key Manager

PubSubChk is a research prototype for verifiable message delivery in publish-subscribe systems. It extends MQTT with cryptographic checks so that publishers can obtain compact evidence that messages reached the expected subscriber set, while subscribers can detect missing, reordered, modified, or inconsistent streams.

This repository contains the Key Manager, the small key transparency service used by the PubSubChk prototype. It keeps track of client public keys and per-topic subscriber membership, then exposes verifiable commitments that the PubSubChk client and broker use during delivery verification.

This Repository

PubSubChk-KeyManager is the KTS component of the prototype. It is intentionally minimal and experiment-oriented. The service stores registered public keys, tracks topic membership, computes aggregate public keys, and publishes Merkle roots for per-topic subscriber sets.

At a high level, it provides:

  • key registration with BLS Proof-of-Possession checks;
  • topic subscription updates for PubSubChk-enabled clients;
  • per-topic Merkle roots for verifiable subscriber membership;
  • aggregate public keys used to verify compact multi-acknowledgments;
  • small helper endpoints used by the companion broker and evaluation scripts.

The full PubSubChk system is split across three repositories:

Run all three components together for end-to-end experiments.

Getting Started

You need Go 1.23 or newer.

git clone https://github.com/Nokia-Bell-Labs/PubSubChk-KeyManager.git
cd PubSubChk-KeyManager
go run .

By default, the service listens on:

http://localhost:8443

API Sketch

The service exposes a small HTTP API used by the PubSubChk client and broker:

  • POST /register: add or remove client public keys.
  • POST /subscribe: add or remove topic membership.
  • POST /root: retrieve Merkle roots for topic membership commitments.
  • POST /aggpk: retrieve aggregate public keys for subscribed topics.
  • GET /clocks: retrieve publisher clock state used by the prototype.
  • POST /reset and POST /cleanall: clear in-memory state for experiments.

Request and response formats are shaped by the companion prototype components and may change as the research code evolves.

Research Status

This code is a research prototype, not a production key transparency service. It keeps state in memory and is designed to support the PubSubChk evaluation rather than hardened deployment.

For the full protocol design and evaluation, see the paper at (TODO: pending publication). The companion projects at pubsubchk-client and pubsubchk-server are also useful when setting up the complete experiment.

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors