惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Jina AI
Jina AI
I
Intezer
F
Fortinet All Blogs
S
SegmentFault 最新的问题
罗磊的独立博客
V
Visual Studio Blog
V
V2EX
大猫的无限游戏
大猫的无限游戏
The Cloudflare Blog
J
Java Code Geeks
美团技术团队
B
Blog
U
Unit 42
F
Full Disclosure
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
P
Privacy International News Feed
G
Google Developers Blog
雷峰网
雷峰网
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
P
Privacy & Cybersecurity Law Blog
T
Tor Project blog
酷 壳 – CoolShell
酷 壳 – CoolShell
量子位
GbyAI
GbyAI
S
Schneier on Security
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Google DeepMind News
Google DeepMind News
D
Darknet – Hacking Tools, Hacker News & Cyber Security
L
LINUX DO - 热门话题
Recorded Future
Recorded Future
D
Docker
博客园 - 聂微东
Project Zero
Project Zero
Know Your Adversary
Know Your Adversary
P
Palo Alto Networks Blog
K
Kaspersky official blog
Martin Fowler
Martin Fowler
H
Hackread – Cybersecurity News, Data Breaches, AI and More
L
Lohrmann on Cybersecurity
A
Arctic Wolf
T
The Blog of Author Tim Ferriss
Microsoft Security Blog
Microsoft Security Blog
T
Threat Research - Cisco Blogs
T
The Exploit Database - CXSecurity.com
V
Vulnerabilities – Threatpost
Simon Willison's Weblog
Simon Willison's Weblog
Cisco Talos Blog
Cisco Talos Blog
T
Threatpost
Hugging Face - Blog
Hugging Face - Blog
博客园_首页

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant Common SOC 2 Failures (Real World) Stop Vibe-Checking Your AI App: A Practical Guide to Evals How to Use SonarQube and SonarScanner Locally to Level Up Your Code Quality Your Next To-Do App Is Dead — I Replaced Mine with an OpenClaw AI Sign a Nostr event in 60 lines of Python using coincurve — no nostr-sdk, no nbxplorer, no rust toolchain ITGC Audit Explained Like You’re in Big 4 Patch Tuesday abril 2026: Microsoft parcha 163 vulnerabilidades y un zero-day en SharePoint Stop scraping everything: a better way to track competitor price changes Listing on MCPize + the Official MCP Registry while routing payments OUTSIDE the marketplace — how I kept 100% of my x402 revenue Building an AI-Powered Risk Intelligence System Using Serverless Architecture Why We Ripped Function Overloading Out of Our AI Toolchain Testing AI-Generated Code: How to Actually Know If It Works SaaS Churn Is Killing Your Business. Here Is What to Do About It (Without a Support Team) The Speed of AI Is No Longer Linear - And Self-Improving Models Are Why How to Implement RBAC for MCP Tools: A Practical Guide for Engineering Teams From Standard Quote to Persuasive Proposal: AI Automation for Arborists I built a CLI that scaffolds complete multi-tenant SaaS apps Axios CVE-2025–62718: The Silent SSRF Bug That Could Be Hiding in Your Node.js App Right Now The dashboard that ended our friendship Data Pipelines Explained Simply (and How to Build Them with Python) The Hidden Cost of AI Systems Nobody Talks About. undefined vs undeclared, and how typeof behaves Switching from file-based jobs to NATS/Kafka in Rust without changing code io_uring Adventures: Rust Servers That Love Syscalls Why Agentic AI is Killing the Traditional Database The POUR principles of web accessibility for developers and designers Quantum Neural Network 3D — A Deep Dive into Interactive WebGL Visualization How To Install Caveman In Codex On macOS And Windows Automation Pipeline Reliability: Why Your Workflow Breaks When Nobody Is Watching I Built an 'Open World' AI Coding Agent — It Works From ANY Folder From Freelancing to Product: A Tech Service Company's SaaS Transformation China's AI Giants: Adding Tencent Hunyuan & ByteDance Doubao to AI University (74 Providers) On the Vibe Coders and Their Lies clerk: Auto-Summarize Your Claude Code Sessions AI Weekly — 2026/04/10–04/17 | The Model Lockdown Is Here, but the Toolchain Is the Real Battleground AI 週報 — 2026/04/10–2026/04/17 模型封鎖潮來了,但工具鏈才是真戰場 Maybe this is how Open-Source apps are born... 🚀 Fine-Tune LLMs with LoRA and QLoRA: 2026 Guide tRPC v11 + Next.js App Router: End-to-End Type Safety Without the Boilerplate ShadCN UI in 2026: Why I Stopped Installing Component Libraries and Started Owning My Components SaaS Billing in React Server Components: Stripe + Supabase Without a Single `useEffect` Join our DEV Weekend Challenge — $1,000 in Prizes Across TEN winners! Submissions Due April 20 at 6:59 AM UTC. Implementing FSRS Spaced Repetition in Flutter + Supabase — Adding Memory Science to an AI Learning App "I Texted My Localhost From the Train — Claude Code Fixed the Bug Before I Got Home" I Built a Sales Prep AI and It Went Deeper Than Expected Design to Code #2: One JSON, Eleven Outputs Solving the 100M-Row Problem: A Summary Table Pattern for High-Volume Push Notification Logs Flutter Web With Wasm: What Actually Changes For Developers I Built 50 Royalty-Free Soundtracks for My Side Project in a Weekend Using AI Music Generation The Vibe Coding Security Checklist: 7 Things to Check Before You Ship Stop Letting Googlebot Guess Fix Your React App's SEO Right Desconstruindo o Streaming do LinkedIn: Como Criar um Engine de Extração de Vídeo de Alta Performance com HLS e FFmpeg (EDA Part-1) EDA (Exploratory Data Analysis) Explained With Real Life — Why Looking at Your Data Is the Most Important Step in Machine Learning Brand Relationship Management at Scale: Our 4-Touch Outreach System for 200+ Brands Why String.fromEnvironment() Might Return an Empty String in Dart JGuardrails 1.0.0 — Hardening Java LLM Apps Against Jailbreaks, Toxicity, and Prompt Injection Plan and Schedule a Full Week of Threads Content From One Claude Conversation Coding Cat Oran Ep3, Five Tables Changed Everything Updated: BFF Pattern I'm done watching freelancers get buried by 200 proposals. So I'm building the alternative. This is my first post BFS Algorithm in Java Step by Step Tutorial with Examples Tracking LLM Pricing Monthly: An Open Dataset for 22 AI Models How We Measure Content ROI on a Comparison Site: Revenue Attribution Without Perfect Data Introducing Nova AI Ops: The AI-Native Operating System for SRE Teams I built a free desktop video downloader for Windows — Grabbit How Talkie OCR Helps Vision-Impaired & Dyslexic Users Read the World Around Them VRCFaceTracking安装和iPhone面捕配置教程,有bug Even CrowdStrike Can't See Your Agents The Automation Gold Rush: What n8n Workflows and Claude Are Opening Up for Developers Right Now
How to Choose a Messaging Protocol for Agent-to-Agent Communication
Artemii Amel · 2026-05-13 · via DEV Community

Use Noise Protocol for synchronous peer-to-peer agent sessions, Signal Protocol (X3DH + Double Ratchet) for asynchronous messaging where agents may be offline, and MLS (RFC 9750) for encrypted group communication across agent fleets. TLS 1.3 remains the right choice when interoperability with existing HTTP infrastructure is required. Each protocol was designed for a different communication shape — using the wrong one adds complexity without adding security.

Why standard TLS is not enough for agent-to-agent communication

TLS was designed for the client-server model: a browser connects to a server, the server proves its identity with a certificate, and the session ends when the response is delivered. Agent-to-agent communication breaks every one of these assumptions.

Agents are peers, not clients and servers. Both sides need to prove identity simultaneously. TLS supports mutual authentication via client certificates, but it treats that as an add-on rather than a first-class primitive. The handshake is asymmetric by design — one side is always the "server" — which maps poorly onto two agents that may each initiate contact with the other at any time.

More fundamentally, TLS 1.3 (RFC 8446) does not provide forward secrecy for session resumption tickets, and it has no native mechanism for the kind of ratcheting encryption that protects long-running agent relationships if a session key is ever compromised.

What is the Noise Protocol Framework and when should agents use it

Noise Protocol is a framework for building cryptographic handshake protocols. It is the foundation underneath WireGuard and was designed specifically for the mutual-authentication, peer-to-peer use case that TLS handles awkwardly.

A Noise handshake is defined by a pattern — a short string like XX or IK that specifies the exact sequence of key exchanges between the two parties. The XX pattern (transmit, transmit) means both sides send their static public keys during the handshake, both sides verify each other's identity, and the session key is derived from an X25519 Diffie-Hellman exchange. The resulting session is encrypted with ChaCha20-Poly1305 (RFC 8439).

Use Noise when:

  • Both agents are online simultaneously and need a live encrypted session
  • You control both sides of the connection and do not need interoperability with external HTTP infrastructure
  • You want minimal handshake overhead — Noise XX completes in one round trip
  • You are building on UDP or a custom transport (Noise runs on any byte stream)

The Noise specification is 42 pages and formally verifiable. The security properties are well-understood, unlike ad-hoc TLS configurations.

How Signal Protocol handles asynchronous agent messaging with forward secrecy

Signal Protocol solves a different problem: what happens when the receiving agent is offline when the message is sent?

The protocol has two parts. X3DH (Extended Triple Diffie-Hellman) establishes a shared secret between two parties who have never communicated before, even if one party is offline at the time. The sender uses a bundle of prekeys published by the recipient — including a signed prekey and a set of one-time prekeys — to derive the initial session key without requiring the recipient to be present.

The Double Ratchet algorithm then encrypts each message with a fresh key derived by advancing a cryptographic ratchet. This gives two properties that matter for agent communication:

  1. Forward secrecy: if a session key is compromised, past messages cannot be decrypted
  2. Break-in recovery: if a key is compromised, the ratchet recovers automatically after a few message exchanges

Use Signal Protocol when:

  • Agents communicate asynchronously and cannot be guaranteed to be online simultaneously
  • Messages may be stored in transit and you need past messages protected even if future keys leak
  • You are building an agent messaging layer analogous to a secure inbox

When to use MLS for group agent communication

Messaging Layer Security (RFC 9750) is the IETF standard for end-to-end encrypted group messaging. It was designed to solve the scaling problem that Signal Protocol has in groups: in a naive implementation, sending one message to N agents requires N separate encrypted copies.

MLS uses a binary tree of X25519 key agreements where updating one member's key requires O(log N) operations rather than O(N). A group of 1,000 agents handles a single member key rotation with roughly 10 cryptographic operations instead of 1,000.

MLS also handles membership changes — adding or removing agents from a group — as first-class protocol operations, each of which produces a new group epoch with fresh key material. An agent removed from the group cannot decrypt messages from later epochs, even if it retains messages it observed while it was a member.

Use MLS when:

  • Multiple agents need to participate in a shared encrypted channel
  • Membership changes (agents joining, leaving, being revoked) happen regularly
  • You need post-compromise security: new group members cannot read historical messages

For an overview of how these properties apply to multi-agent deployments, Pilot Protocol's agent communication security guide covers the practical tradeoffs in production environments.

How to decide: a protocol decision framework

Scenario Protocol Why
Two agents, both online, need a live session Noise (XX pattern) Symmetric handshake, minimal overhead, no cert infrastructure
Agent sends message to offline peer Signal (X3DH + Double Ratchet) Async key agreement, per-message forward secrecy
Fleet of agents sharing an encrypted channel MLS (RFC 9750) Scales to thousands of members, handles membership changes
Calling an external HTTP API or human-facing service TLS 1.3 Interoperability; the external endpoint requires it
Agents communicating over UDP at high frequency Noise over UDP or DTLS (RFC 9147) TLS requires TCP; Noise and DTLS work on datagram transports
Agents requiring HTTP/3 transport QUIC (RFC 9000) QUIC embeds TLS 1.3, eliminates TCP head-of-line blocking

The common mistake is reaching for TLS because it is familiar, then layering API keys on top for agent identity, and separately solving the group communication problem with a message broker. Each of those layers adds a dependency. The protocols above address identity, encryption, and group membership as integrated properties of the channel — not as separate systems that have to agree with each other.

Frequently asked questions

What algorithm should agent keypairs use?

Ed25519 (RFC 8032) for signing, X25519 (RFC 7748) for key agreement. Both are NIST-recommended and standardised across TLS 1.3, Noise, Signal, and MLS. For regulated environments evaluating post-quantum migration, ML-KEM (FIPS 203) replaces X25519 for key agreement and ML-DSA (FIPS 204) replaces Ed25519 for signatures.

Can Noise and Signal Protocol be combined?

Yes. Signal Protocol itself uses a Noise-derived handshake structure for session establishment. A common architecture uses Noise for the transport session and implements the Double Ratchet on top for per-message forward secrecy. WireGuard does something similar: Noise for the tunnel, with rekeying at configurable intervals.

Does MLS require a central server?

MLS requires a delivery service to distribute group messages and a authentication service to verify member credentials, but neither has to be a single server. The spec explicitly allows federated and decentralised delivery services. Group message confidentiality is end-to-end — the delivery service sees ciphertext only.

What happens to in-flight messages when an agent restarts?

With Signal Protocol, the Double Ratchet state must be persisted to survive restarts. If the ratchet state is lost, messages encrypted to future ratchet positions cannot be decrypted. Store ratchet state in the same secrets manager you use for the agent keypair — AWS Secrets Manager, GCP Secret Manager, or HashiCorp Vault — so it survives host replacement.

Is the A2A protocol relevant to this choice?

A2A (Agent-to-Agent, now under the Linux Foundation) is an application-layer protocol that defines how agents exchange tasks, artifacts, and status. It does not specify the transport security layer — that is left to the implementation. A2A messages can be carried over TLS 1.3 for HTTP-based deployments or over Noise/Signal for peer-to-peer deployments. The protocol choice above is orthogonal to A2A adoption.