区块链学习1-证书

  • 加密和签名:

在现实生活中,如果想在某个银行存钱或者取钱,首先要开立账户,这是中心化系统的标准流程。在区块链中,我们同样需要具备这样一个账户:

公链是去中心化的,每个用户自己决定是否开户,不需要任何中心的批准。

以比特币为例,开户的过程就是创建一个公私钥对,类似于现实生活中的银行账号和密码。

        一个比特币账户 =(public key, private key)

公私钥来源于非对称加密(Asymmetric encryption algorithm)其使用场景例如:

       A用B的公钥(public_key_B)为信息(Msg)加密后通过网络发送给B 而B用自己的私钥(private_key_B)解密,注意:加密和解密用的都是接收方的。

在对称加密体中,一旦网络被窃听,盗用者可以使用同一个密钥解密信息众而得到文件内容。而在非对称加密中公钥通过网络发送给对方,而保存在本地,更为安全。

在以上例子中,非对称加密被用来做信息加密,其主要目的是防止信息泄露,密钥越长破解难度越大,但是运算时间也越长,性能也就越差。相同安全强度下,对称密钥长度在最短,ECC次之,RSA密钥长度则最长。

       在比特币系统中,公私钥对被用来签名,例如A要给B转账,如何证明是A本人发起的交易呢:

       A需要在发起转账交易时,用自己的私钥(private_key_A)对交易签名,而B使用A的公钥(public_key_A)去验证这笔交易。注意:签名用私钥,验证用公钥,都是发送方的。

在签名的过程中会使用签名算法。

加密的目的是防止信息泄露

签名的目的是防止篡改。

  • 证书
相比于公链,联盟链并不是完全去中心化的,它只允许被授权的机构参与到网络当中,这些机构例如现实中的某几个公司,他们组织利益相关的机构共同参与区块链的运行。因此相比公链,联盟链多了“授权”的操作,而这个操作多以“颁发数字证书”的形式完成。完成这个操作的,就是证书颁发机构——认证中心CA,拥有合格证书的节点才能加入到联盟链当中。
证书的签发过程大致为:
  1. 用户生成自己的公私钥对(使用非对称加密技术)。
  2. 申请认证:用户将自己的公钥,以及部分信息(例如组织信息、个人信息等)发送给CA.
  3. CA审核: CA通过线上、线下等多种手段验证申请者提供信息的真实性,如组织是否存在、企业是否合法等
  4. 审核通过后,CA会向申请者签发认证文件-证书。
证书一般包含以下信息:
用户(申请者)的公钥
申请者的组织信息和个人信息
签发机构 CA 的信息
有效时间
证书序列号等信息的明文
CA的签名(签名=用私钥对证书摘要加密)

公私钥用于证明你是谁,信息是不是你发送的,有没有被篡改

证书则用于证明你是否拥有可以从事某项活动的“资质”,除此之外,证书可以证明“你”不是冒充的。

在上面A给B转账的例子中,假如出现一个C,他使用非法手段攻击了B的数据库,将public_key_A的内容,替换成了public_key_C的内容,这样,他就可以用private_key_C加密冒充A将信息发送给B,而由于B保存的A的公钥内容其实是C的,从而验证通过,

       为了避免这个问题,A将公钥绑定了一个数字证书cert_A,cert_A里包含了公钥的信息以及A的其他信息,B保存了A的证书用以验证签名。这样C如果想要替换cert_A为自己的cert_C时,B通过读取证书发现这是另一个人的公钥。

签名的过程:

  • 使用hash算法对申请的信息计算出摘要A

  • 用CA的私钥对信息摘要进行加密,产生的密文即签名;

验签的过程:

在联盟链中,只有被信任的成员才被允许加入。新加入的成员需要携带被信任的证书。其他成员通过以下方式验证其证书的合法性:

  • 读取证书中的相关的明文信息,采用相同的hash计算得到信息摘要B
  • 用颁发者CA的公钥解密签名数据,得到摘要信息A
  • 对比A和B是否一致

长安链两种证书的生成方式:

  1. 证书生成工具:https://docs.chainmaker.org.cn/dev/证书生成工具.html

     在其配置文件chainmaker-cryptogen/config/crypto_config_template.yml提供了上述两种算法的配置项:

           区块链学习1-证书_第1张图片

  2.  CA证书服务:https://docs.chainmaker.org.cn/tech/CA证书服务.html

也同相在配置文件: chainmaker-ca-backend/src/conf/config.yaml中提供了相应的配置:

区块链学习1-证书_第2张图片

长安链支持的加密算法如下:

     区块链学习1-证书_第3张图片

你可能感兴趣的:(从开源项目学习区块链,区块链,学习)