Skip to content
@pps-protocol

PulseProof Sentinel Protocol

PulseProof Sentinel Protocol (PPS): asymmetric time-bound authentication for offline, OTP-style, transaction, duress, and threshold flows.

PulseProof Sentinel Protocol

Time-bound asymmetric authentication proofs for offline, OTP-style, transaction-signing, duress-aware, and multi-device flows.

IETF Internet-Draft Protocol Version 1 Status: Experimental License: Apache-2.0

PPS Website Read the PPS specification PPS documentation


What is PPS?

PulseProof Sentinel Protocol, abbreviated PPS, is an experimental open authentication protocol that replaces shared-secret TOTP-style codes with signed, time-bound, asymmetric proofs called Pulses.

Instead of storing OTP secrets on the server, PPS verifiers store only public keys.

TOTP
  code = HMAC(shared_secret, time)

PPS
  Pulse = Sign(private_key, time + rp + nonce + counter + context + policy)

A Pulse can be verified using a public key, while being bound to a relying party, time window, nonce, counter, policy, context, and optional transaction data.


Positioning

PPS is designed to complement, not replace, WebAuthn/FIDO2.

WebAuthn remains the preferred mechanism for browser-based passkey authentication.

PPS targets operational gaps where WebAuthn is unavailable or insufficient:

Area Use Case
Offline authentication Terminals, IoT devices, unstable networks
Legacy OTP flows Systems that still expect OTP-style input
QR / deep-link login Mobile-to-web and cross-device authentication
Constrained hardware POS devices, embedded modules, hardware tokens
Transaction signing Human-visible transaction confirmation
Silent duress Coercion-aware authentication with Honey-Pulse
Threshold approval Offline multi-device authorization

Core Features

Feature Description
Asymmetric time-bound proofs Authentication is based on signed Pulses, not shared OTP secrets
No shared server secret Verifiers store only public keys
Offline-capable Pulse generation can work without a live network round-trip
Forward-secure ratcheting Optional key rotation to limit key-compromise exposure
Silent duress signaling Optional Honey-Pulse mechanism for coercion scenarios
Threshold approval Optional offline n-of-m multi-device authorization
Transaction AmountMark Optional human-visible amount checksum inside the Trust Code
Dynamic policy binding Optional server-issued policy hash bound to each Pulse
Context binding Optional session, transaction, proximity, and device-context binding
Deterministic CBOR Technology-neutral wire format using deterministic CBOR encoding

High-Level Flow

Authenticator                              Verifier
     |                                        |
     |  <------- challenge / nonce ---------- |
     |                                        |
     |  sign Pulse with private key           |
     |                                        |
     |  -------- Pulse Token + Trust Code --> |
     |                                        |
     |                    verify signature    |
     |                    check nonce         |
     |                    check counter       |
     |                    check policy        |
     |                    check context       |
     |                                        |
     |  <---------------- ok ---------------- |

Ecosystem

Repository Type Description Links
pulseproof-sentinel Specification Core protocol specification, documentation, IETF materials, examples, and test vectors Website · SPEC · Docs
pps-php Core Implementation Framework-agnostic PHP implementation of PPS Website · Docs · Packagist
laravel-pps Laravel Integration Laravel bridge for PPS: routes, controller, facade, config, migrations, and storage integration Website · Packagist

Quick Start

Install the core PHP package:

composer require pps-protocol/pps-php

Install the Laravel integration:

composer require pps-protocol/laravel-pps

Then publish the Laravel configuration:

php artisan pps:install

Implementation Roadmap

Language / Framework Package Status
PHP pps-php Available
Laravel laravel-pps Available
JavaScript / TypeScript pps-js Planned
Python pps-python Planned
Go pps-go Planned
Rust pps-rust Planned

Specification

Resource Link
Main repository pps-protocol/pulseproof-sentinel
Protocol website pps-protocol.github.io/pulseproof-sentinel
Specification SPEC.html
Documentation docs/
IETF Internet-Draft draft-hezami-pulseproof-sentinel

IETF

PPS is submitted as an individual Internet-Draft:

draft-hezami-pulseproof-sentinel

Datatracker:

https://datatracker.ietf.org/doc/draft-hezami-pulseproof-sentinel/


Explore

Pinned Loading

  1. pulseproof-sentinel pulseproof-sentinel Public

    PulseProof Sentinel Protocol (PPS) — asymmetric time-bound authentication proofs for offline, OTP-style, transaction-signing, duress-aware, and multi-device flows.

    1

Repositories

Showing 5 of 5 repositories

Top languages

Loading…

Most used topics

Loading…