为什么Anthropic刚刚发布的MCP协议应该使用DID进行身份鉴权
在引领AI操控计算机的革命之后,OpenAI的强劲对手正酝酿一场全新的范式变革。
就在这两天,Anthropic正式发布了一项具有革命意义的技术——模型上下文协议(Model Context Protocol,MCP)。这一技术有望彻底解决LLM应用在链接数据方面的难题。从此,无需为每个数据源编写定制集成代码,LLM应用的生态或将迎来颠覆性变化。
MCP作为一个开放协议,旨在实现LLM应用程序与外部数据源及工具的无缝集成。通过允许LLM访问和利用外部资源,这项技术将极大提升其功能性和实用性,为未来AI系统带来更多可能性。
但是MCP有一个致命的缺陷——**不支持访问远程数据**。而背后的原因,是他们还没有想好如何做身份验证。
这两天在github上和MCP的技术同学讨论了远程身份认证的问题,[这里给出我们的方案。](https://github.com/modelcontextprotocol/specification/discussions/64#)
目前,大多数讨论都围绕基于OAuth的解决方案展开。虽然OAuth功能强大且足够标准化,可以利用现有的基础设施,但其整体流程仍然比较复杂。
我想提出一个全新的基于W3C DID(分布式标识符)标准的解决方案。我们在这一方案上进行了长期的研究和探索,主要目标是解决智能体之间的身份认证和加密通信问题。我认为这一方案同样可以应用于MCP客户端和MCP服务端之间的身份认证。
### 为什么选择DID?
首先,**MCP开发同学认为未来AI系统的通信协议(如MCP)应当是开放的,并避免依赖中心化的信任机构**。这一点我们也是非常认同的。这正是W3C DID标准所倡导和擅长的,W3C DID的目标是让用户完全掌控自己的身份信息,而无需依赖中心化的认证实体。
备注:W3C DID是2022年正式发布为推荐标准的。
### DID all 方法概述
我们设计了一种名为“all”(代表“alliance”)的DID方法,来专门用于智能体之间的身份认证。
以下是all方法处理身份生成和认证的简化说明。为了便于理解,我将以Alice和Bob之间的通信场景为例进行说明。
#### 身份生成:
1. **密钥生成**:Alice和Bob分别生成一对非对称密钥对(私钥和公钥)。私钥由用户安全保存。
2. **DID创建**:通过对公钥进行哈希生成DID,作为唯一标识。例如:did:all:[email protected]
其中,`example.com`为DID文档服务器。
3. **DID文档**:创建包含DID和公钥的DID文档,并使用私钥对其签名,然后将文档存储在`example.com`的Web服务器上。第三方可以通过DID获取DID文档,从而获得对应的公钥。
#### 身份认证:
1. **Alice发送请求**:在建立连接时,Alice发送一个包含其DID的请求,并使用私钥对消息进行签名。
2. **Bob验证Alice**:
- Bob使用Alice的DID从`example.com`获取其DID文档。
- 使用文档中的公钥验证Alice的签名以及DID(DID是通过公钥哈希生成的)。
- 如果验证成功,说明请求确实来自Alice。
3. **Bob发送响应**:Bob通过类似流程向Alice发送响应消息,包含自己的DID和签名。
4. **Alice验证Bob**:Alice通过相同的步骤验证Bob的身份。
5. **身份认证完成**:双方确认对方身份后,开始加密通信。
#### 加密通信:
由于Alice和Bob各自拥有非对称密钥对,他们可以使用ECDHE(椭圆曲线Diffie-Hellman临时密钥交换协议)协商生成加密密钥,实现端到端加密通信。
### 示例用例
#### 文件系统访问:
1. MCP客户端访问存储在MCP服务端的文件。
2. MCP服务端将文件与用户的DID关联。
3. 当客户端请求文件时,服务端根据上述流程验证客户端提供的DID。认证通过后,返回文件或文件访问令牌。
4. 客户端还可以通过服务端的DID或域名验证服务端的身份。
#### 预订披萨:
1. 用户通过MCP客户端向披萨店的MCP服务端预订披萨(假设用户通过可靠渠道获得了披萨店的DID和通信URL)。
2. MCP客户端验证服务端的DID,确保通信对象是目标披萨店。
3. MCP服务端同样验证客户端的DID,并记录订单信息,以便后续处理。
### 挑战与机会
**挑战**:
- **采用情况**:DID是W3C最新发布的标准,目前尚未被广泛使用,基础设施也尚不完善。
**机会**:
- **潜力**:尽管存在上述挑战,我认为DID是最适合智能体之间身份认证的方案。
希望这一提案能够引发大家的兴趣和讨论,也希望大家能认真考虑这种方案在项目中的应用。
---
### 相关资源
- **W3C DID规范**:[https://www.w3.org/TR/did-core/](https://www.w3.org/TR/did-core/)
- **DID all方法设计规范**:[https://github.com/chgaowei/AgentNetworkProtocol/blob/main/02-did%3Aall%20Method%20Design%20Specification.md](https://github.com/chgaowei/AgentNetworkProtocol/blob/main/02-did%3Aall%20Method%20Design%20Specification.md)
- **Agent Network Protocol(用于智能体之间通信的协议)**:[https://github.com/chgaowei/AgentNetworkProtocol](https://github.com/chgaowei/AgentNetworkProtocol)
- **AgentConnect(协议的开源实现,支持DID all方法及端到端加密通信)**:[https://github.com/chgaowei/AgentConnect](https://github.com/chgaowei/AgentConnect)
本文由[mdnice](https://mdnice.com/?platform=6)多平台发布
版权声明:
作者:congcong
链接:https://www.techfm.club/p/173175.html
来源:TechFM
文章版权归作者所有,未经允许请勿转载。
共有 0 条评论