国际电子技术委员会将“身份”定义为“一组与实体关联的属性”。这里的实体不仅仅是人,对于机器或者物体都可以是实体,甚至网络中虚拟的东西也可以是实体并拥有身份。随着互联网的出现和普及,传统的身份有了另外一种表现形式,即数字身份。一般认为,数字身份的演进经历了以下四个阶段:

(1)中心化身份:中心化身份是由单一的权威机构进行管理和控制的,现在互联网上的大多数身份还是中心化身份,比如ICANN管理的域名与IP地址分配,以及PKI(Public Key Infrastructure)系统中的CA(Certificate Authority)证书机构管理的数字证书。中心化身份系统的本质就是,中央集权化的权威机构掌握着身份数据,个人并不是真正意义上拥有自己的身份且身份在不同应用中无法互通。
(2)联盟身份:联盟身份的出现解决了中心化身份中身份数据零碎混乱的弊端,此种身份是有多个机构或者联盟进行管理和控制的,用户的身份数据具备了一定程度的可移植性,例如允许用户登录某个网站时,可以使用其他网站的账户信息,类似于QQ、微信或者微博的跨平台登录。
(3)以用户为中心的身份:在联盟身份提出后,身份系统就开始走向去中心化了。期间也有很多去中心化的标准、方案出现,比如OpenID。这种以用户为中心的身份将重点集中在去中心化上,通过授权和许可进行身份数据的共享。
(4)自我主权身份:自我主权身份才是真正意义上的去中心化的、完全由个人所拥有和控制的身份。该身份不止是人,包括组织,甚至未来也包括物品。这些人或者组织、物品不简单依靠于原先中心化权威机构,无法被拿走或者删除,而且是终身携带的身份。
(一)分布式数字身份标识符
分布式数字身份标识符是一种去中心化的可验证的数字标识符,具有分布式、自主可控、跨链复用等特点。它是由字符串组成的标识符,用来代表一个数字身份,不需要中央注册机构就可以实现全球唯一性。通常,一个实体可以拥有多个身份,每个身份被分配唯一的DID值,以及与之关联的非对称密钥,实体可自主完成DID的注册、解析、更新或者撤销操作。不同的身份之间没有关联信息,从而有效地避免了所有者身份信息的归集。DID本质上是一个全球唯一的地址标识符URL,在W3C的DID标准化文档中,将DID标识符的规范格式定义为:

前缀did是固定的,表示这个字符串是一个did标识字符串。中间的example被称为DID方法,就是用来表示这个DID标识是用哪一套方案(方法)来进行定义和操作的。这个DID方法我们可以自定义,并且注册到W3C的网站中。最后面的部分是在该DID方法下的唯一标识字符串。
在应用过程中,DID标识将具体解析为写有与用户身份关联的属性信息的DID文档,这个文档就是一个JSON字符串,与DID标识符形成键值对,描述的是与被识别对象进行密码验证交互所必须的DID主体标识、公钥、验证协议、服务端点等,例如下图是W3C官方提供的一个具体的DID文档示例:

我们一般是把DID标识作为Key,把DID文档作为Value存储到区块链中,利用区块链不可篡改、共享数据访问的特点,实现在验证身份时能快速访问获取可信数据。
(二)数字身份凭证(声明集合)
数字身份凭证(声明集合)是指与身份关联的属性信息,往往是个人或机构对自己身份的声称和主张。声明可以由身份所有者自己发出也可以由发行人发出,其中由发行人发出的为可验证声明(Verifiable Credential,简称VC)。可验证声明VC是一个 DID 给另一个 DID 的某些属性做背书而发出的描述性声明,并附加自己的数字签名,用以证明这些属性的真实性,可以认为是一种数字证书。下图为VC的基本组成结构示意图,其包括:(1)VC元数据,主要就是发行人、发行日期、声明的类型等信息。(2)声明,一个或者多个关于主体的说明。比如身份证作为公安机关颁发给我的VC,在声明中会包含:姓名、性别、出生日期、民族、住址等信息。(3)证明,通常就是颁发者的数字签名,保证了本VC能够被验证,防止VC内容被篡改以及验证VC的颁发者。它通过提供该种规范来描述实体所具有的某些属性,来实现基于证据的信任。DID持有者可以通过可验证声明VC,向其他实体(个人、组织、具体事物等)证明自己的某些属性是可信的。可验证声明VC可以表示现实事物所具有的相同信息。数字签名等技术的加入,使得可验证的凭证比其物理对等物更不易被篡改,也更值得信任。可验证的声明可以快速地传输,这使得它们在尝试建立距离上的信任时比物理对等物更方便。第三方根据他们的记录来确认声明是真实的。例如,一所大学可以证明某人在那里学习并获得了学位。来自权威的证明,要比能够伪造的证明更有说服力。

为了增强隐私保护,规范还定义了可验证表述(verifiable presentation),用于证明实体在特定场景下的身份角色属性。可验证表述是一种防篡改的描述,它来自一个或多个可验证凭证,并由披露这些凭证的主体用密码签名。无论是直接使用可验证凭证,还是从可验证凭证中获得的数据构造身份证明, DID 身份证明都将以可验证表述(verifiable Presentation)的方式进行出示。下图为VP的基本组成结构示意图,其通常包括:(1)VP元数据,主要包含了版本,本JSON对象的类型等信息。(2)VC列表,要对外展示的VC的内容,如果是选择性披露或者隐私保护的情形,可能就不包含任何VC。(3)证明,主要就是持有者对本VP的签名信息。

(三)DID认证过程
公钥基础设施(Public Key Infrastructure,简称PKI),其主要功能是绑定证书持有者的身份和相关的密钥对(通过为公钥及相关的用户身份信息签发数字证书),为用户提供方便的证书申请、证书作废、证书获取、证书状态查询的途径,并利用数字证书及相关的各种服务(证书发布,黑名单发布,时间戳服务等)实现通信中各实体的身份认证、完整性、抗抵赖性和保密性。下图为一个PKI系统的层级示意图。一个典型的PKI系统包括PKI策略、软硬件系统、证书机构CA、注册机构RA、证书发布系统和PKI应用等。其中PKI安全策略建立和定义了一个组织信息安全方面的指导方针,同时也定义了密码系统使用的处理方法和原则,它包括一个组织怎样处理密钥和有价值的信息,根据风险的级别定义安全控制的级别。证书机构CA是PKI的信任基础,它管理公钥的整个生命周期,其作用包括:发放证书、规定证书的有效期和通过发布证书废除列表(CRL)确保必要时可以废除证书。注册机构RA提供用户和CA之间的一个接口,它获取并认证用户的身份,向CA提出证书请求,它主要完成收集用户信息和确认用户身份的功能。证书发布系统负责证书的发放,如可以通过用户自己,或是通过目录服务器发放,目录服务器可以是一个组织中现存的,也可以是PKI方案中提供的。

传统的PKI数字证书体系需要CA来颁发,而在DID中也是分为颁发者、持有者、验证者、DID注册系统(也就是区块链),它们的具体关系如图4.2.7所示。DID认证过程中的主要角色有:
(1)颁发者Issuer: 颁发者是拥有用户数据并能开具VC的实体,也即证书的颁发机构,比如身份证就是公安机关作为颁发者,毕业证书就是大学作为颁发者。
(2)持有者Holder: 持有者是证书的持有人,它向颁发者请求、收到和持有VC,向验证者出示VC。开具的VC可以自我保存,方便以后再次使用,例如保存在钱包里。
(3)验证者Verifier:验证者是在我们使用证书时查看我们证书的人或者机构,它通过接受VC并进行验证,由此可以提供给出示VC者某种类型的服务。比如我们入住酒店,前台要验证我们的身份证,那么酒店前台就是验证者;再比如我们入职新公司时需要提供大学毕业证书,新公司HR就是验证者。
(4)标识符注册机构Verifiable Data Registry:标识符注册机构是我们存储了DID标识和DID文档的地方,它维护DIDs的数据库如某条区块链、分布式账本,通过DID标识可以在数据库中查询到对应的DID文档。之所以需有标识符注册机构,是因为验证者要验证VC,也要验证用户。验证VC用VC和发VC的Issuer,验证用户用DID和存DID的数据库。

相对于传统的基于PKI的身份体系,基于区块链建立的DID数字身份系统具有保证数据真实可信、保护用户隐私安全、可移植性强等特征。其优势在于:(1)去中心化:基于区块链,避免了身份数据被单一的中心化权威机构所控制。(2)身份自主可控:基于DPKI (分布式公钥基础设施),每个用户的身份不是由可信第三方控制,而是由其所有者控制,个人能自主管理自己的身份。(3)可信的数据交换:身份相关数据锚定在区块链上,认证的过程不需要依赖于提供身份的应用方。
(一)数据共享
当前,不同机构间存在着大量用户数据流通的需求。然而,由于各个机构之间通常难以组建有效的信任合作机制,因此,各机构间难以将各自保管的用户数据安全可信地授权共享给其他机构。通过分布式数字身份DID解决方案,可帮助机构间进行可信数据授权及共享,使得各机构可基于全面的数据为用户提供更高质量的服务。数据共享过程中的参与方为:用户、数据持有机构、数据使用机构、身份证明机构。其具体流程为:
(1)在身份证明机构、数据持有机构、数据使用机构间搭建区块链网络,机构作为节点接入并注册DID。
(2)由身份证明机构为用户生成DID。
(3)用户授权数据使用机构使用自己的数据。
(4)数据使用机构生成授权凭证(Credential),标明授权对象、数据属主、有效期、授权内容等属性,并使用机构私钥进行签名;数据使用机构可选择将授权凭证生成摘要并写入区块链,达到增信目的。
(5)数据使用机构出示授权凭证给数据持有机构。
(6)数据持有机构通过凭证验证(Verify)接口,验证授权凭证。
(7)验证通过,数据持有机构将数据发送给数据使用机构。
(二)物联网标识
实际应用中IOT也可以与DID进行紧密结合,例如我们给每个IOT设备都分配其独一无二的DID,基于物联网+区块链+DID构建:商品溯源、车联网、智能制造、智慧城市等应用场景。
以制造业中的制造机器为例,每个机器都有一个DID,该DID是由机器的制造商生成并赋予每台机器的,当机器运转时会产生大量的生产数据,该机器会将数据签名,将非敏感生产数据、签名结果和DID上链。机器的制造商可以根据链上数据得知机器的运行情况,便于更好的售后保养服务。当企业需要贷款时,银行可以根据区块链上的生产数据,并结合机器制造商的背书,判断企业的生产经营情况,评估贷款风险。再以高价值商品的物联网防伪溯源为例,当每个商品被制造出来时,商家就为其IOT设备生产私钥并创建唯一的DID。因为私钥无法复制导出,所以只有在区块链上登记了DID的商品才是正品。而且商品的DID可以映射对应的非同质化通证,以数字化的形式表现商品的流转过程。
我想安装一个带有一些身份验证的私有(private)Rubygem服务器。我希望能够使用公共(public)Ubuntu服务器托管内部gem。我读到了http://docs.rubygems.org/read/chapter/18.但是那个没有身份验证-如我所见。然后我读到了https://github.com/cwninja/geminabox.但是当我使用基本身份验证(他们在他们的Wiki中有)时,它会提示从我的服务器获取源。所以。如何制作带有身份验证的私有(private)Rubygem服务器?这是不可能的吗?谢谢。编辑:Geminabox问题。我尝试“捆绑”以安装新的gem..
?博客主页:https://xiaoy.blog.csdn.net?本文由呆呆敲代码的小Y原创,首发于CSDN??学习专栏推荐:Unity系统学习专栏?游戏制作专栏推荐:游戏制作?Unity实战100例专栏推荐:Unity实战100例教程?欢迎点赞?收藏⭐留言?如有错误敬请指正!?未来很长,值得我们全力奔赴更美好的生活✨------------------❤️分割线❤️-------------------------
MIMO技术的优缺点优点通过下面三个增益来总体概括:阵列增益。阵列增益是指由于接收机通过对接收信号的相干合并而活得的平均SNR的提高。在发射机不知道信道信息的情况下,MIMO系统可以获得的阵列增益与接收天线数成正比复用增益。在采用空间复用方案的MIMO系统中,可以获得复用增益,即信道容量成倍增加。信道容量的增加与min(Nt,Nr)成正比分集增益。在采用空间分集方案的MIMO系统中,可以获得分集增益,即可靠性性能的改善。分集增益用独立衰落支路数来描述,即分集指数。在使用了空时编码的MIMO系统中,由于接收天线或发射天线之间的间距较远,可认为它们各自的大尺度衰落是相互独立的,因此分布式MIMO
简单代码require'net/http'url=URI.parse('getjson/otherdatahere[link]')req=Net::HTTP::Get.new(url.to_s)res=Net::HTTP.start(url.host,url.port){|http|http.request(req)}putsres.body只是想知道如何在phpcURL中放置身份验证token,我是这样做的 curl_setopt($ch,CURLOPT_HTTPHEADER,array('Authorization:Bearerxxx'));//Bearertokenfora
我正在尝试复制此GETcurl请求:curl-D--XGET-H"Authorization:BasicdGVzdEB0YXByZXNlYXJjaC5jb206NGMzMTg2Mjg4YWUyM2ZkOTY2MWNiNWRmY2NlMTkzMGU="-H"Content-Type:application/json"http://staging.example.com/api/v1/campaigns在Ruby中,通过电子邮件+apikey生成身份验证:auth="Basic"+Base64::encode64("test@example.com:4c3186288ae23fd9661c
我正在寻找用于Rails的优质管理插件。似乎大多数现有的插件/gem(例如“restful_authentication”、“acts_as_authenticated”)都围绕着self注册等展开。但是,我正在寻找一种功能齐全的基于管理/管理角色的解决方案——但不是简单地附加到另一个非基于角色的解决方案。如果我找不到,我想我会自己动手......只是不想重新发明轮子。 最佳答案 RyanBates最近做了两个关于授权的railscast(注意身份验证和授权之间的区别;身份验证检查用户是否如她所说的那样,授权检查用户是否有权访问资源
我需要在rail3中使用标准注册/登录/忘记密码功能进行身份验证。是否有大多数人为此使用的插件或其他东西? 最佳答案 我不确定最常用的方法是什么-但可以肯定的是,Plataformatec的“Devise”是一个非常流行的方法:http://github.com/plataformatec/devise我已经尝试了一些authgem,对我来说,它是最简单的设置和修改以满足我的需要。它内置了密码恢复、帐户确认(如果需要)和其他一些非常方便的功能。 关于ruby-on-rails-在Rail
我刚刚看到whitehouse.gov正在使用drupal作为CMS和门户技术。drupal的优点之一似乎是很容易添加插件,而且编程最少,即重新发明轮子最少。这实际上正是Ruby-on-Rails的DRY理念。所以:drupal的缺点是什么?Rails或其他基于Ruby的技术有哪些不符合whitehouse.org(或其他CMS门户)门户技术的资格? 最佳答案 Whatarethedrawbacksofdrupal?对于Ruby和Rails,这确实是一个相当主观的问题。Drupal是一个可靠的内容管理选项,非常适合面向社区的站点。它
谁能提供一个使用HTTParty和digestauth的例子?我在网上找不到例子,希望有人能提供一些帮助。谢谢。 最佳答案 您可以在定义类时使用digest_auth方法设置用户名和密码classFooincludeHTTPartydigest_auth'username','password'end 关于ruby-HTTParty摘要认证,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questi
当音乐碰上区块链技术,会擦出怎样的火花?或许周杰伦已经给了我们答案。8月29日下午,B站独家首发周杰伦限定珍藏Demo独家访谈VCR,周杰伦在VCR里分享了《晴天》《青花瓷》《搁浅》《爱在西元前》四首经典歌曲Demo背后的创作故事,并首次公布18年前未发布的神秘作品《纽约地铁》的Demo。在VCR中,方文山和杰威尔音乐提及到“多亏了区块链技术,现在我们可以将这些Demos,变成独一无二具有收藏价值的艺术品,这些Demos可以在薄盒(国内数藏平台)上听到。”如何将音乐与区块链技术相结合,薄盒方面称:“薄盒作为区块链技术服务方,打破传统对于区块链技术只能作为数字收藏的理解。聚焦于区块链技术赋能,在