Corda 核心概念:Identity

原文地址:https://docs.corda.net/key-concepts-identity.html

关联阅读:Corda API: Identity

概要

身份(Identities)

在 Corda 中,identities 代表了:

Legal identities 被 transaction 中的相关方所使用,比如一个现金 state 的所有者。Service identities 被这些提供 transaction 相关的服务的节点使用,比如 notary 或者 oracle。Service identities 和 legal identities 是不同的,所有分布式的服务可以在不同的组织拥有的不同的节点中存在。这样的分布式的 service identities 是基于 CompositeKeys的,它描述了对于一个 service 都谁是一个签名的有效的签名者。

Identities 或者是一个 well know(大家都知道的) 的 或者是一个 confidential(保密) 的,这依赖于它的 X.509 证书(和针对于可信任的根证书的相应证书的路径)是否是公开的:

尽管 Corda 的 transaction 隐私模型包含了很多元素, 包括了应该确保 transaction 仅对需要知道的节点才会共享,和计划使用 Intel SGX,但是对于隐私泄露提供深度的防护也是非常重要的。Confidential identities 用来确保即使第三方能够得到一个未被加密的 transaction 信息,但是没有一些额外的信息,他们依然无法识别出来参与者的身份。

证书(Certificates)

节点必须要能够通过使用 X.509 证书来确认一个公钥的所有者的身份信息。当第一次运行一个节点的时候,会生成一个密钥对并且向 Doorman service 提交一个 certificate signing request(CSR)。Doorman service 会进行相应的身份检查,然后给该节点颁发证书,这个证书可以被作为该节点的认证授权(certificate authority, CA)。由这个初始的 CA 证书,节点会自动地创建并签署两个进一步的证书,一个 TLS 证书和一个签名证书(signing certificate)作为 well know identity。最终这个节点会创建一个节点信息记录,该记录包含了它的地址和 well know identity,并且在 network map service 中进行了注册。

从签名证书中,组织机构可以创建 well know 和 confidential 的身份。对于 well know identities 的使用场景包括节点的集群,来表示具有多个目的的一个单独的 identity,或者创建多个组织单元(organisational units)的 identities。

这个完全依赖于组织结构自己的决定,是要在 network map service 中发布一个 well know 的 identity,还是要为了隐私的原因,保持自己身份的保密性(通常是为了避免暴露 transactions 中的商业机密)。另外还有一些情况是有些节点为了运营的目的,会在主的 network map service 以外还是用了私有的 network map service。在这种 network map service 中注册的 identities 必须是 well know identities,并且对于 confidential identities 是永远都不应该存储在一个没有对记录级别进行管控的中心化的目录中,以此来确保只有申请访问一个 identity 的组织才能够获得到相关的证书信息。