Othentic
  • Introduction
    • Introducing Othentic Stack
    • Use Cases
  • AVS Framework
    • Abstract
    • Quick Start
    • Othentic CLI
      • Key Management
      • Contracts Deployment
      • Operator Registration
      • AVS Logic Implementation
      • Operator Deposit
      • Node Operators
      • Rewards Distribution
      • P2P Config
        • Custom P2P Messaging
        • P2P Auth Layer
        • Metrics and Monitoring
        • Logging
        • Persistent storage
        • Latency
      • CLI Command Reference
    • Smart Contracts
      • AVS Governance
      • Attestation Center
      • Hooks
        • Task Logic
        • Operator Management
        • Rewards Fee Calculator
      • OBLS
      • Othentic Registry
      • Message Handlers
    • Othentic Consensus
      • Abstract
      • Task & Task Definitions
      • Leader Election
      • Proof of Task
      • Execution Service
      • Validation Service
      • Voting Power
      • Rewards and Penalties
      • Internal Tasks
    • FAQ
    • Supported Networks
    • Explainers
      • Networking
      • Multichain
      • Production Guidelines
      • Operator Allowlisting
      • Governance Multisig
  • External
    • AVS Examples
  • GitHub
  • Othentic Hub
Powered by GitBook
On this page
  • Overview
  • Authentication Protocol
  • Control via AVSGovernance Contract [Optional]
  • Protocol Buffers for Authentication Messages
  • CLI Commands for Authentication
  • Signing a Challenge with BLS
  • Verifying an Authentication Signature
  1. AVS Framework
  2. Othentic CLI
  3. P2P Config

P2P Auth Layer

Overview

Authentication in a peer-to-peer (P2P) network is critical, ensuring that only verified peers participate in the network. We introduce an authentication mechanism that leverages BLS signatures, where only authorized peers can connect and broadcast messages.

Authentication Protocol

Upon peer connection to the network, it must complete an authentication process before being accepted. The protocol follows these steps:

  1. Challenge Generation: The new peer receives a unique challenge string upon attempting to connect.

  2. BLS Signature Signing: The peer must sign the challenge using its private BLS key.

  3. Validation: The network validates the signed challenge by checking the BLS signature against the operator’s registered public key. If the signature is valid, the peer is authenticated and allowed to participate.

This mechanism prevents unauthorized nodes from connecting.

Control via AVSGovernance Contract [Optional]

This authentication protocol is optional and is controlled by the AVS governance contract. The governance contract determines whether authentication is enforced, allowing flexibility in network security policies.

Important Considerations:

  • Once this feature is enabled, peers running older versions of the client that do not support authentication will no longer be able to connect to upgraded peers.

Protocol Buffers for Authentication Messages

The authentication protocol defines the following Protobuf messages for communication:

@Type.d('AuthRequestProto')
export class AuthRequestProto extends Message<AuthRequestProto> {
  @Field.d(1, 'string', 'required')
  public challenge: string;
}

@Type.d('AuthResponseProto')
export class AuthResponseProto extends Message<AuthResponseProto> {
  @Field.d(1, 'string', 'required')
  public address: string;

  @Field.d(2, 'uint32', 'required')
  public operatorId: number;

  @Field.d(3, 'string', 'required')
  public challenge: string;

  @Field.d(4, 'string', 'required')
  public signature: string;
}

CLI Commands for Authentication

Two new CLI commands to facilitate authentication:

Signing a Challenge with BLS

Prompts the operator for their private key and signs the given hashed message.

Usage

othentic-cli operator bls sign-auth [options]

Generate BLS signature for Othentic Auth challenge message

Options:
  --message-hash <data>
  --keystore <keystore>           The file path to the keystore file
  --keystore-password <password>  The file path to the keystore password file
  -h, --help                      display help for command

Verifying an Authentication Signature

Verifies if the given signature is valid for the provided message hash and operator ID. You can provide either:

  • An operator ID (to fetch the BLS public key from the OBLS contract), or

  • A BLS public key directly.

The --bls-pub-key flag accepts a comma-separated list of 4 uint256 values as returned by the getOperatorBLSPubKey function in the OBLS contract. For example:

 --bls-pub-key 123...,456..,789,...,10111..

Usage

Usage: othentic-cli operator bls verify-auth [options]

Verify signed challenge message with BLS public key

Options:
  --message-hash <data>           Hashed message to be verified (required)
  --signature <signature>         Signature object in JSON format (e.g., {"x":"0x...", "y":"0x..."}) (required)
  --operator-id <operator id>     Operator ID to get BLS public key
  --bls-pub-key <bls public key>  BLS public key to verify the signature
  --keystore <keystore>           The file path to the keystore file
  --keystore-password <password>  The file path to the keystore password file
  -h, --help                      display help for command

These commands ensure that authentication can be seamlessly integrated into the P2P network while maintaining security and trust.

PreviousCustom P2P MessagingNextMetrics and Monitoring

Last updated 1 month ago