Web安全
计算机网络
物理层
数据链路层
网络层
运输层(传输层)
应用层
基础漏洞
01前端基础【HTML】
02前端基础【CSS】
03后端基础【PHP速通】
04后端基础【PHP面向对象】
05MySQL基础操作
06前后端联动【代码练习】
07SQL注入概述
07SQL 注入类型
08SQL注入 Labs
08SQL注入速查表
09XSS
09XSS【概述版】
09XSS Labs
10跨站请求伪造【CSRF】
11服务器端请求伪造【SSRF】
12XML 外部实体注入【XXE】
13代码执行漏洞
14命令执行漏洞
15文件包含漏洞
16文件上传漏洞
17反序列化漏洞
18业务逻辑漏洞
19未授权访问漏洞集合
20跨源资源共享【CORS】
21SSTI模板注入
22并发漏洞
23点击劫持【Clickjacking 】
24请求走私
25路径遍历
26访问控制
27身份验证漏洞
28WebSocket
29Web缓存中毒
30HTTP 主机头攻击
31信息泄露漏洞
32原型污染
33NoSQL注入
小程序
小程序抓包
SessionKey
Appsecret与access_token
openid
数据库
MySQL
Oracle
MongoDB
Redis
PostgreSQL
SQL server
中间件
Nginx
Apache HTTP Server
IIS
Tomcat
框架
ThinkPHP
Spring
Spring Boot
Django
访问控制
身份认证(Authentication)
授权(Authorization)
单点登录(SSO)
零信任(ZTA)
分布式身份(DID)
-
+
首页
分布式身份(DID)
分布式身份(Decentralized Identifier,简称 DID)是数字身份领域的革命性技术,其核心是**打破传统集中式身份对第三方平台的依赖,让用户自主掌控身份数据的所有权、使用权和隐私边界**。 在传统模式中,我们的数字身份(如微信账号、谷歌账号、银行账户)由中心化机构(如腾讯、谷歌、银行)创建和管理,用户无法自主迁移身份,且身份数据易被滥用或泄露;而 DID 通过区块链、密码学等技术,构建了 “用户为中心” 的去中心化身份体系,实现 “一次创建、多场景复用、隐私可控” 的数字身份管理。 ## 定义 > 本质 根据 W3C(万维网联盟)官方定义,**DID 是一种去中心化的数字标识符,由身份主体(用户、设备、组织等)自主创建和控制,不依赖任何中心化的身份提供商(Identity Provider, IdP)**。 其核心特征可概括为三点: - **自主可控**:身份主体(如个人)拥有 DID 的完全控制权,可自主决定是否向第三方披露身份信息、披露哪些信息,无需中心化机构授权; - **去中心化验证**:DID 的有效性通过去中心化网络(如区块链)验证,而非依赖单一平台(如微信验证 “你是微信用户”); - **跨场景复用**:一个 DID 可在多个互不信任的场景中复用(如用同一个 DID 登录电商平台、办理政务、访问医疗系统),无需重复注册账号。 > 核心目标 DID 旨在解决传统集中式身份的三大痛点: - **身份垄断**:中心化机构掌控身份数据,用户无法迁移(如注销微信后,基于微信登录的 APP 账号也无法使用); - **隐私泄露**:用户需向多个平台重复提交身份信息(如手机号、身份证号),数据被过度收集和滥用(如平台数据泄露导致身份信息被盗用); - **互操作性差**:不同平台的身份体系独立(如淘宝账号无法直接登录京东),用户需记忆多个账号密码,体验繁琐。 ## 差异 传统集中式身份(如社交账号、企业账号)与 DID 的本质区别,在于 “身份控制权” 和 “信任机制” 的不同。 | 对比维度 | 传统集中式身份(如微信账号、银行账户) | 分布式身份(DID) | | --------------- | ---------------------------------------------------------- | ------------------------------------------------------------ | | 身份创建者 | 中心化机构(如腾讯创建微信账号、银行创建银行卡账户) | 身份主体(用户 / 设备 / 组织)自主创建 | | 身份控制权 | 中心化机构掌控(如平台可冻结账号、删除身份数据) | 身份主体完全掌控(仅主体能修改、注销 DID,无第三方干预) | | 信任基础 | 依赖中心化机构的信用(如用户信任微信不会泄露数据) | 依赖密码学和去中心化网络(如区块链的不可篡改特性) | | 身份数据存储 | 存储在中心化机构服务器(如微信服务器存储用户手机号、头像) | 存储在主体本地(如用户手机)或去中心化存储(如 IPFS),仅披露 “凭证哈希” 到区块链 | | 隐私保护 | 需向平台提供完整身份信息(如注册 APP 需填手机号),易泄露 | 支持 “最小信息披露”(如证明 “年满 18 岁” 无需提供身份证号) | | 跨平台复用 | 不可复用(如淘宝账号无法登录抖音) | 可跨场景复用(如一个 DID 登录电商、政务、医疗系统) | | 账号找回 / 注销 | 依赖平台流程(如忘记密码需通过平台短信验证找回) | 主体自主操作(通过私钥找回,注销后所有关联场景失效) | ## 核心组件 DID 并非单一技术,而是由**DID 标识符、DID 文档、去中心化身份注册处(DID Registry)、可验证凭证(Verifiable Credentials, VC)** 四大核心组件构成的完整体系,各组件协同实现 “身份创建、验证、复用” 的全流程。 > ### DID 标识符(DID String)—— 身份的 “唯一地址” DID 标识符是 DID 的 “核心标识”,相当于数字世界中身份主体的 “唯一地址”,用于在去中心化网络中定位和识别身份。 其格式由 W3C 标准化,结构如下: ``` did:<方法名>:<具体标识符> ``` did:固定前缀,表明这是一个 DID 标识符; 方法名(Method Name):指定 DID 所依赖的去中心化网络(如区块链),常见方法名包括: - `ethr`:基于以太坊区块链的 DID; - `btcr`:基于比特币区块链的 DID; - `did:web`:基于 Web 服务器的 DID(适用于企业场景); 具体标识符(Method-Specific Identifier):由方法名对应的规则生成的唯一字符串,通常与身份主体的公钥哈希或区块链地址关联。 示例: - 基于以太坊的 DID:`did:ethr:0x1234567890abcdef1234567890abcdef12345678` - 基于 Web 的企业 DID:`did:web:example.com:org:marketing`(表示 “example.com域名下的市场部门”) > ### DID 文档(DID Document)—— 身份的 “详细说明书” DID 文档是与 DID 标识符关联的 JSON 格式文件,包含 “验证身份所需的关键信息”,相当于身份的 “详细说明书”。 其核心内容包括: **DID 标识符**:文档对应的 DID(确保文档与身份一一对应); **公钥(Public Key)**:用于验证身份主体签名的公钥(私钥由主体保管,用于签名;公钥公开,用于验签); **验证方法(Verification Method)**:定义如何验证主体的身份(如 “通过公钥验证签名”“通过生物特征验证”); **服务端点(Service Endpoints)**:身份主体提供的服务地址(如 “凭证存储地址”“身份信息更新接口”); **时间戳**:文档的创建时间、更新时间; **控制器(Controller)**:拥有 DID 文档修改权限的主体(通常是身份主体自身)。 示例: ```json { "@context": "https://www.w3.org/ns/did/v1", "id": "did:ethr:0x1234567890abcdef1234567890abcdef12345678", "publicKey": [ { "id": "did:ethr:0x1234567890abcdef1234567890abcdef12345678#key-1", "type": "EcdsaSecp256k1VerificationKey2019", "controller": "did:ethr:0x1234567890abcdef1234567890abcdef12345678", "publicKeyHex": "0x04a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd5b8dec5235a0fa8722476c7e32c1c22c9966ef9f372df27b7e7e78a240cc5d16" } ], "verificationMethod": [ { "id": "did:ethr:0x1234567890abcdef1234567890abcdef12345678#key-1", "type": "EcdsaSecp256k1Signature2019", "controller": "did:ethr:0x1234567890abcdef1234567890abcdef12345678", "publicKey": "did:ethr:0x1234567890abcdef1234567890abcdef12345678#key-1" } ], "service": [ { "id": "did:ethr:0x1234567890abcdef1234567890abcdef12345678#vc-store", "type": "VerifiableCredentialStore", "serviceEndpoint": "https://vc.example.com/store/0x12345678" } ], "created": "2024-01-01T12:00:00Z", "updated": "2024-01-02T10:30:00Z" } ``` > ### 去中心化身份注册处(DID Registry)—— 身份的 “可信锚点” DID Registry 是 “存储 DID 与 DID 文档关联关系” 的去中心化系统,通常基于区块链实现,其核心作用是**提供 “不可篡改的身份锚定”**—— 确保 DID 对应的 DID 文档不被伪造或篡改,让第三方能够可信地查询和验证身份。 DID Registry 的工作逻辑: - 身份主体创建 DID 后,将 “DID 标识符 + DID 文档的哈希值” 写入区块链(DID Registry); - 第三方验证身份时,先从区块链查询 DID 对应的 “DID 文档哈希值”,再从主体提供的地址(如服务端点)获取完整 DID 文档; - 通过比对 “获取的 DID 文档哈希值” 与 “区块链存储的哈希值”,确认 DID 文档未被篡改,从而信任该身份。 **关键特点**: - 不存储完整 DID 文档(仅存储哈希值),保护主体隐私; - 基于区块链的不可篡改特性,确保 DID 与文档的关联关系可信; - 支持 DID 文档更新(主体通过私钥签名后,将新的文档哈希值写入区块链)。 > ### 可验证凭证(Verifiable Credentials, VC)—— 身份的 “可信证明” VC 是基于 DID 的 “数字化可信凭证”,相当于数字世界中的 “身份证、毕业证、技能证书”,由**可信发行方(如政府、学校、企业)** 向身份主体签发,用于证明主体的特定属性(如 “年满 18 岁”“拥有大学学历”“具备工程师资质”)。 VC 的核心特征: - **可验证性**:包含发行方的数字签名(用发行方的 DID 私钥签名),第三方可通过发行方的公钥验证凭证真伪; - **隐私保护性**:支持 “选择性披露”(如证明 “年满 18 岁” 无需提供完整生日,仅需证明 “年龄≥18”); - **不可篡改性**:签名后的 VC 无法被篡改,篡改后签名失效; - **可携带性**:主体可将 VC 存储在本地(如手机钱包),在需要时提交给第三方验证。 VC的简化版: ```json { "@context": ["https://www.w3.org/ns/credentials/v2"], "id": "https://edu.example.com/credentials/1234", "type": ["VerifiableCredential", "UniversityDegreeCredential"], "issuer": "did:web:edu.example.com"(发行方DID,如某大学), "issuanceDate": "2024-06-01T12:00:00Z", "credentialSubject": { "id": "did:ethr:0x1234567890abcdef1234567890abcdef12345678"(主体DID,如学生), "degree": { "type": "BachelorDegree", "major": "Computer Science", "graduationYear": "2024" } }, "proof": { "type": "EcdsaSecp256k1Signature2019", "created": "2024-06-01T12:05:00Z", "verificationMethod": "did:web:edu.example.com#key-2"(发行方的验证方法), "signatureValue": "z5DfG...(发行方的数字签名)" } } ``` **可验证呈现(Verifiable Presentation, VP)**:VP 是主体将一个或多个 VC “打包后提交给验证方的格式”—— 主体可对 VC 进行选择性披露(如隐藏 “graduationYear”,仅展示 “major”),并添加自己的签名,确保 VP 在传输过程中未被篡改。 ## 工作流程 DID 的完整工作流程涉及**身份主体、发行方、验证方**三大角色,以 “用户用 DID 申请工作” 为例,流程如下: > **步骤 1:身份主体创建 DID(用户创建个人 DID)** 用户通过 DID 钱包(如 MetaMask、Trust Wallet)生成一对非对称密钥(私钥由用户本地保管,公钥用于生成 DID); 钱包根据选定的 DID 方法(如`ethr`),生成 DID 标识符(如`did:ethr:0x12345678...`); 钱包自动生成 DID 文档(包含公钥、验证方法、服务端点),并将 “DID+DID 文档哈希值” 写入以太坊区块链(DID Registry); 用户完成 DID 创建,拥有了自主可控的数字身份(私钥 = 身份的 “钥匙”,丢失则无法恢复)。 > **步骤 2:发行方签发 VC(大学为用户签发学历 VC)** 用户向大学(发行方)申请学历证书,提交自己的 DID(如`did:ethr:0x12345678...`); 大学验证用户的真实学历(如核对校内学籍系统),确认无误后,生成包含 “用户 DID、学历信息” 的 VC; 大学用自己的 DID 私钥对 VC 进行数字签名(确保 VC 不可篡改); 大学将签名后的 VC 发送给用户,用户将 VC 存储在本地 DID 钱包中。 > **步骤 3:主体向验证方提交 VP(用户向公司提交学历证明)** 用户向公司(验证方)申请工作,公司要求提供学历证明; 用户在 DID 钱包中选择 “大学学历 VC”,并进行 “选择性披露”(如隐藏 “graduationYear”,仅展示 “major=Computer Science”); 钱包将处理后的 VC 打包成 VP,并添加用户的 DID 签名(确保 VP 传输过程中未被篡改); 用户将 VP 提交给公司(验证方)。 > **步骤 4:验证方验证 VP(公司验证用户学历真伪)** 公司接收 VP 后,首先验证用户的签名(用用户的公钥,从 DID Registry 查询用户的 DID 文档获取公钥),确认 VP 未被篡改; 公司提取 VP 中的 VC,验证发行方(大学)的签名(用大学的公钥,从 DID Registry 查询大学的 DID 文档获取公钥),确认 VC 是大学真实签发; 公司检查 VC 的有效性(如是否在有效期内、是否被吊销); 验证通过后,公司确认用户的学历真实,无需用户提供纸质证书或身份证号,保护用户隐私。 > **步骤 5:DID 的更新与注销(可选)** **更新**:若用户需修改 DID 文档(如更换公钥),可通过私钥签名生成新的 DID 文档,将 “新文档哈希值” 写入 DID Registry,旧哈希值自动失效; **注销**:若用户需注销 DID,可向 DID Registry 提交 “注销请求”(需私钥签名),区块链记录 DID 已注销,后续该 DID 无法用于验证。 ## 核心技术 DID 的实现依赖三大核心技术:**区块链技术、密码学技术、W3C 标准规范**,三者共同确保 DID 的 “去中心化、安全性、互操作性”。 > ### 区块链技术 —— 提供 “不可篡改的信任基础” 区块链的核心作用是作为 DID Registry,解决 “身份锚定” 和 “可信查询” 问题,具体功能包括: - **不可篡改存储**:将 “DID+DID 文档哈希值” 写入区块链,确保关联关系不被伪造或篡改; - **去中心化验证**:任何第三方均可通过区块链查询 DID 对应的文档哈希值,无需依赖中心化机构; - **抗审查性**:无单一机构可删除或冻结 DID,仅身份主体可通过私钥修改或注销; - **灵活适配**:不同 DID 方法对应不同区块链(如`ethr`对应以太坊、`btcr`对应比特币、`polygon`对应 Polygon),可根据场景选择性能或成本更优的链。 > ### 密码学技术 —— 确保 “身份安全与隐私保护” 密码学是 DID 安全的 “核心屏障”,主要应用包括: **非对称加密算法**:生成用户的私钥(身份控制权)和公钥(身份验证权),确保只有私钥持有者能修改 DID 文档或签名 VC; - 常用算法:ECDSA(用于以太坊)、EdDSA(用于 Solana、Cardano); **零知识证明(Zero-Knowledge Proof, ZKP)**:支持 “选择性披露”,主体可在不泄露完整信息的情况下证明某一属性(如证明 “年满 18 岁” 无需提供生日); - 典型应用:zk-SNARKs(如 Zcash、Mina)、zk-STARKs,用于 VC 的隐私保护; **哈希算法**:将 DID 文档、VC 等数据转换为哈希值,存储在区块链中,确保数据完整性(篡改后哈希值变化); - 常用算法:SHA-256、Keccak-256(以太坊默认)。 > ### W3C 标准规范 —— 确保 “跨平台互操作性” W3C 制定了《DID 核心规范》《Verifiable Credentials 数据模型》等标准,统一了 DID 的格式、文档结构、VC 结构,解决 “不同 DID 系统无法互通” 的问题: - 任何遵循 W3C 标准的 DID,均可在不同平台(如 A 公司的 DID 钱包、B 公司的验证系统)中使用; - 不同发行方(如大学、政府)签发的 VC,均可被任何遵循标准的验证方验证; - 标准的统一降低了企业落地 DID 的成本,推动行业规模化应用。 ## 应用场景 DID 的应用覆盖**个人服务、企业协作、公共服务、Web3 生态**四大领域,核心是解决 “身份可信、隐私保护、跨场景复用” 问题。 > **个人数字身份认证(替代传统 KYC)** **痛点**:用户在银行开户、APP 注册时需重复提交身份证、手机号等信息,易泄露且体验差; DID 解决方案: - 用户在政府 DID 平台创建 “政务 DID”,获取包含身份证信息的 VC; - 银行 / APP 通过验证用户的政务 VC,完成 KYC 认证,无需用户提交纸质身份证; - 示例:欧盟的 eIDAS 2.0 法规支持 DID 作为跨境数字身份,用户可在欧盟各国用同一 DID 办理银行业务。 > **教育与职业认证(学历、技能证书数字化)** **痛点**:纸质学历易伪造,企业验证学历需联系学校,效率低;技能证书(如 PMP、CFA)跨平台不互通; DID 解决方案: - 学校 / 认证机构用 DID 签发数字化学历 / 技能 VC,存储在用户 DID 钱包; - 企业招聘时,用户提交 VC 即可完成验证,无需学校出具证明; - 示例:MIT、斯坦福等高校已试点用 DID 签发数字毕业证书,LinkedIn 支持用户添加 DID 认证的技能证书。 > **供应链与溯源(企业身份、产品身份可信互联)** **痛点**:供应链中企业身份、产品溯源数据易被篡改(如伪造产地、伪造质检报告),信任成本高; DID 解决方案: - 供应链各参与方(如生产商、物流商、经销商)创建企业 DID; - 生产商为产品生成 “产品 DID”,并签发包含 “产地、质检报告” 的 VC; - 物流商、经销商接收产品时,用企业 DID 签名更新产品 VC(如 “已运输至上海”),所有数据可追溯且不可篡改; - 示例:沃尔玛用 DID + 区块链追踪食品供应链,确保食材来源可查。 > **医疗健康(病历数据隐私保护与共享)** **痛点**:患者病历分散在不同医院,跨院就诊需重复检查;病历数据属于敏感信息,易被泄露; DID 解决方案: - 患者创建个人医疗 DID,医院为患者签发包含 “病历、检查报告” 的 VC,存储在患者本地钱包; - 患者跨院就诊时,自主授权医院访问特定病历 VC(如 “近 1 年的体检报告”),无需医院间数据互通; - 示例:美国医疗科技公司 Change Healthcare 试点用 DID 管理患者病历,提升数据隐私与共享效率。 > **Web3 生态(钱包身份、DeFi、NFT、元宇宙)** **痛点**:Web3 用户依赖钱包地址作为身份标识,但地址无语义(如 “0x1234... 无法关联用户身份”),且跨 DApp 复用性差; DID 解决方案: - 用户用钱包创建 Web3 DID(如`did:ethr:0x1234...`),将钱包地址与 DID 关联; - 在 DeFi 中,用 DID 证明 “用户信用等级”(如基于历史借贷记录的 VC),获取更高贷款额度; - 在元宇宙中,用 DID 作为虚拟角色的身份,关联 NFT 资产(如 “用 DID 证明某 NFT 属于自己”); - 示例:ENS(以太坊域名服务)支持将 DID 与域名绑定(如`alice.eth`对应`did:ethr:0x1234...`),提升身份可读性。 > **物联网(IoT)设备身份管理** **痛点**:IoT 设备(如传感器、摄像头)数量庞大,传统集中式身份易被黑客攻击(如伪造设备身份入侵系统); DID 解决方案: - 每个 IoT 设备创建独立 DID,存储设备型号、固件版本、所属企业等信息; - 平台通过验证设备 DID,确认设备合法性,防止伪造设备接入; - 示例:IBM Watson IoT 平台试点用 DID 管理工业传感器身份,提升物联网安全。
毛林
2025年10月11日 11:50
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
PDF文档(打印)
分享
链接
类型
密码
更新密码