Pubky Ring
Identity Manager for Pubky
Section titled “Identity Manager for Pubky”Your keychain for the Pubky ecosystem. Manage your pubkys, authorize services, and stay in control—no accounts, no passwords.
Overview
Section titled “Overview”Pubky Ring is the key manager and identity application for the Pubky ecosystem. It’s a native mobile app (iOS and Android) that lets you securely manage your pubkys—the public keys that power your presence across decentralized applications.
Core Philosophy:
- Self-custodial: You control your keys, no one else
- No accounts: No usernames, no passwords, no registration
- No tracking: Your identity data stays on your device
- Interoperable: Works seamlessly with Pubky apps
What You Can Do
Section titled “What You Can Do”Identity Management
Section titled “Identity Management”- Create and manage multiple pubkys: Each identity is a separate public key
- Organize identities: Label and categorize your different personas
- Switch between identities: Seamlessly use different pubkys for different contexts
- Backup and restore: Secure backup of your keys with recovery options
Service Authorization
Section titled “Service Authorization”- Authorize apps: Grant specific permissions to Pubky applications
- Revoke access: Instantly remove app permissions
- Session management: View and control all active sessions
- Granular permissions: Choose what each app can access
Cross-Device Sync
Section titled “Cross-Device Sync”- Sync across devices: Keep your identities consistent between phone and tablet
- Secure synchronization: Encrypted sync using Homeserver storage
- Multi-device sessions: Use the same identity on multiple devices simultaneously
Key Derivation Services
Section titled “Key Derivation Services”- Ed25519 identity keys: Primary Pubky identity keys
- X25519 Noise keys: Automatically derived for encrypted communication
- Session keys: Temporary keys for app sessions
- Payment keys: Support for payment protocol integration
Architecture
Section titled “Architecture”Native Mobile App
Section titled “Native Mobile App”Pubky Ring is built with React Native, providing:
- Native performance on iOS and Android
- Platform-specific secure storage (Keychain/Keystore)
- Deep linking support for app integration
- Background services for session management
Key Storage
Section titled “Key Storage”iOS:
- Keychain Services for secure key storage
- Hardware-backed encryption when available
- Biometric authentication (Face ID/Touch ID)
- Secure Enclave integration
Android:
- EncryptedSharedPreferences with hardware-backed keystore
- Biometric authentication (fingerprint/face unlock)
- StrongBox Keymaster support on compatible devices
Session Management
Section titled “Session Management”Pubky Ring manages authentication sessions for connected apps:
- Session creation with capability tokens
- Session expiration and renewal
- Multi-device session coordination
- Session revocation
Deep Linking & Integration
Section titled “Deep Linking & Integration”Paykit Connect (paykit-connect://)
Section titled “Paykit Connect (paykit-connect://)”Pubky Ring provides deep link handlers for Paykit integration:
paykit-connect://[callback-url]?[parameters]Flow:
- Bitkit (or other wallet) requests Paykit authorization
- Opens Pubky Ring via deep link
- User approves in Pubky Ring
- Ring derives Noise keys and creates session
- Returns encrypted session data via callback
- Wallet receives authorization and can use Paykit
Parameters:
callback_url: Where to return authorization dataapp_name: Requesting application namepermissions: Requested capabilitiessession_duration: Requested session lifetime
Other Deep Links
Section titled “Other Deep Links”pubky://- General Pubky protocol handlerpkarr://- PKARR resolution requests- Custom app-specific handlers
Noise Key Derivation
Section titled “Noise Key Derivation”Pubky Ring derives X25519 encryption keys from Ed25519 identity keys using HKDF:
Ed25519 Identity Key (32 bytes) ↓ HKDF-SHA256 with context "pubky-noise-v1"X25519 Static Key (32 bytes) ↓ Used for Noise Protocol IK handshakeEncrypted Communication ChannelThis allows apps to:
- Use a single identity for both signing and encryption
- Derive consistent encryption keys across devices
- Maintain forward secrecy through ephemeral keys
- Authenticate with Pubky identity system
Integration with Paykit
Section titled “Integration with Paykit”Paykit uses Pubky Ring for:
Session Creation:
- User authenticates in Ring
- Ring generates session credentials
- Encrypted session returned to wallet
- Wallet can now use Paykit features
Key Management:
- Ring stores master Ed25519 key
- Derives X25519 keys for Noise channels
- Manages session rotation
- Handles key backup/recovery
Cross-Device Authentication:
- Ring polls relay for pending auth requests
- User approves on trusted device
- Session synchronized via encrypted relay
- Wallet receives authorization on new device
See the Bitkit + Paykit Integration Master Guide for detailed integration documentation.
Technical Specifications
Section titled “Technical Specifications”Supported Platforms
Section titled “Supported Platforms”- iOS: 13.0+
- Android: API level 24+ (Android 7.0)
- React Native: 0.74+
Storage Format
Section titled “Storage Format”Keys are stored in encrypted format:
{ "version": "1", "identities": [ { "id": "unique-id", "label": "My Main Identity", "publicKey": "8pinxxgqs41n4aididenw5apqp1urfmzdztr8jt4abrkdn435ewo", "created": "2024-01-01T00:00:00Z", "lastUsed": "2024-01-05T12:30:00Z" } ], "sessions": [...], "settings": {...}}Private keys never leave the secure storage.
Security Model
Section titled “Security Model”Threat Protection:
- ✅ Key theft via malware (hardware-backed storage)
- ✅ Unauthorized app access (user approval required)
- ✅ Man-in-the-middle (cryptographic authentication)
- ✅ Session hijacking (time-limited sessions, rotation)
Trust Assumptions:
- Device OS is secure and not compromised
- User approves legitimate authorization requests
- Biometric authentication is properly secured
- Secure storage implementation is sound
Attack Surface:
- Deep link handlers (validated and sanitized)
- Session relay communication (encrypted)
- Backup/restore process (user must secure backup)
User Experience
Section titled “User Experience”Onboarding Flow
Section titled “Onboarding Flow”- Install Pubky Ring from app store
- Create first identity - generates Ed25519 key pair
- Set up security - enable biometrics, set PIN
- Backup keys - secure recovery phrase or encrypted backup
- Connect apps - authorize Pubky applications
Daily Usage
Section titled “Daily Usage”- Quick authorization: Biometric approval for app requests
- Session overview: See all connected apps and active sessions
- Identity switching: Tap to switch between personas
- Permission management: Review and adjust app permissions
Privacy Features
Section titled “Privacy Features”- Local-first: All data stored on device
- No telemetry: No analytics or tracking
- No cloud sync (unless user enables encrypted sync)
- Anonymous: No registration, no personal information required
Development & Testing
Section titled “Development & Testing”Local Development
Section titled “Local Development”# Clone repositorygit clone https://github.com/pubky/pubky-ringcd pubky-ring
# Install dependenciesyarn installcd ios && pod install && cd ..
# Run on iOSyarn ios
# Run on Androidyarn androidE2E Testing
Section titled “E2E Testing”Pubky Ring includes Appium/WebdriverIO tests:
# Install test driversyarn e2e:drivers
# Run Android testsyarn e2e:android
# Run iOS testsyarn e2e:iosEnvironment Variables
Section titled “Environment Variables”ANDROID_APP: Path to APK for testingIOS_APP: Path to .app for testingAVD: Android Virtual Device nameIOS_SIM: iOS Simulator name
Relationship to Pubky Ecosystem
Section titled “Relationship to Pubky Ecosystem”Pubky Ring is the identity foundation for:
Pubky Core
Section titled “Pubky Core”- Manages Ed25519 identity keys
- Publishes keys via PKARR to Mainline DHT
- Authorizes apps to store data on Homeservers
Pubky App
Section titled “Pubky App”- Provides identity for social graph
- Authorizes content publishing
- Manages following/follower relationships
Paykit
Section titled “Paykit”- Creates payment sessions
- Derives Noise encryption keys
- Authorizes payment operations
- Manages subscription agreements
Pubky Noise
Section titled “Pubky Noise”- Derives X25519 keys for encryption
- Manages Noise endpoint publishing
- Handles encrypted channel sessions
Repository
Section titled “Repository”- Official: github.com/pubky/pubky-ring
Release Verification
Section titled “Release Verification”Verify APK Authenticity
Section titled “Verify APK Authenticity”# Import maintainer's GPG keygpg --import public-key.asc
# Verify signaturegpg --verify app-release.apk.asc app-release.apk
# Verify checksumgpg --verify SHA256SUMS.ascsha256sum -c SHA256SUMSAlways verify releases to ensure you’re installing authentic, untampered builds.
Roadmap & Future Features
Section titled “Roadmap & Future Features”Planned Enhancements:
- Multi-signature support for shared identities
- Hardware wallet integration
- Decentralized identity recovery (social recovery)
- Advanced permission models
- Identity attestations and verification
- Integration with more Pubky applications
Research Areas:
- Zero-knowledge proofs for privacy-preserving authorization
- Threshold cryptography for distributed key management
- Post-quantum cryptography readiness
- Advanced session policies
Pubky Ring is the secure, self-custodial foundation for your presence in the Pubky ecosystem. Download it to get started with decentralized identity management.