zoukankan      html  css  js  c++  java
  • fabric和证书机制

    概念
    数字证书就是互联网通讯中标志通讯各方身份信息的一串数字,提供了一种在Internet上验证通信实体身份的方式,数字证书不是数字身份证,而是身份认证机构盖在数字身份证上的一个章或印(或者说加在数字身份证上的一个签名)。它是由权威机构——CA机构,又称为证书授权(Certificate Authority)中心发行的,人们可以在网上用它来识别对方的身份。
    数据摘要就是这样一个东西,通过使用数据摘要算法,常见的有(MD5,SHA1等),我们可以生成文件的数据摘要,并且可以认为这个摘要是独一无二的。
     
    签名是为了让信息的接收者可以验证发送者的身份。
    同样假设A发送信息M给B,A首先生成一下所要发送信息的数据摘要,然后用自己的私钥对摘要进行加密,用私钥加密摘要的这个过程就叫签名,操作之后就得到了签名S。
    然后A用B的公钥加密信息M得到密文C,将C和生成的签名S一起发送给B。
    B收到后,用自己的私钥对密文C进行解密,得到明文M。
    然后B生成M的数据摘要D2,用A的公钥解密签名S,得到数据摘要D2,将D1和D2进行比较,如果相同则证明这个消息确实来自于A。
    注意:用私钥加密,公钥解密。和用公钥加密,私钥解密都是可以的。
    CA
    证书颁发机构,CA用自己的私钥对A的公钥进行签名,将这个签名和A的公钥,以及与A相关的一些信息做成证书。
    而CA证书的公钥一般都是内置于浏览器等软件中的。
     
    fabric证书机构:
    MSP( Membership Service Provider):成员管理服务提供商
    Msp的证书是没有有效期的,除非在CRL中
    CRL (证书吊销列表)OCSP  目前只支持CRL的方式。
     
    数字证书采用公钥体制:
    •数字证书是”公钥+证书名称信息+签发机构对证书的数字签名”、匹配的私钥
    •数字证书遵从X.509国际标准–每一个用户有一个各不相同的名称,一个可信的认证中心CA(Certificate Authority)给每个用户分配一个唯一的名称并签发一个包含用户名称和公钥的证书。–证书可以存储在网络中的数据库中。用户可以利用网络彼此交换证书。当证书撤销后,签发此证书的CA仍保留此证书的副本,以备日后解决可能引起的纠纷。
     
    关于证书概念:
    同样的X.509证书,可能有不同的编码格式,目前有以下两种编码格式.
     
    PEM - Privacy Enhanced Mail,打开看文本格式,以"-----BEGIN..."开头, "-----END..."结尾,内容是BASE64编码.
    Apache和*NIX服务器偏向于使用这种编码格式.
     
    DER - Distinguished Encoding Rules,打开看是二进制格式,不可读.
    Java和Windows服务器偏向于使用这种编
     
    相关的文件扩展名
    CRT - CRT应该是certificate的三个字母,其实还是证书的意思,常见于*NIX系统,有可能是PEM编码,也有可能是DER编码,大多数应该是PEM编码,相信你已经知道怎么辨别.
     
    CER - 还是certificate,还是证书,常见于Windows系统,同样的,可能是PEM编码,也可能是DER编码,大多数应该是DER编码.
     
    KEY - 通常用来存放一个公钥或者私钥,并非X.509证书,编码同样的,可能是PEM,也可能是DER.
     
    CSR - Certificate Signing Request,即证书签名请求,这个并不是证书,而是向权威证书颁发机构获得签名证书的申请,其核心内容是一个公钥(当然还附带了一些别的信息),在生成这个申请的时候,同时也会生成一个私钥,私钥要自己保管好.做过iOS APP的朋友都应该知道是怎么向苹果申请开发者证书的吧.
     
    PFX/P12 - predecessor of PKCS#12,对*nix服务器来说,一般CRT和KEY是分开存放在不同文件中的,但Windows的IIS则将它们存在一个PFX文件中,(因此这个文件包含了证书及私钥)这样会不会不安全?应该不会,PFX通常会有一个"提取密码",你想把里面的东西读取出来的话,它就要求你提供提取密码,PFX使用的时DER编码
     
    其中CACert.crt是CA(权威证书颁发机构)的根证书,有的话也通过-certfile参数一起带进去.这么看来,PFX其实是个证书密钥库.
     
    JKS - 即Java Key Storage,这是Java的专利,跟OpenSSL关系不大,利用Java的一个叫"keytool"的工具,可以将PFX转为JKS,当然了,keytool也能直接生成JKS,不过在此就不多表了.
     
    fabric分布式账本需要解决的问题:
    –不可更改的加密交易数据(分布式账本)    --默克尔树
    –可追责、不可陷害            签名
    –隐私保护:交易匿名、交易不可关联   
            使用对称加密,非对称加密混合,由对称密钥加密数据,在由对方的公钥加密对称密钥,发给对方,对方用私钥解开对称密钥,而后进行交易。使用T-cert进行交易,每次申请一个,不包含身份信息,避免被回溯查到
    –监管和审计支持    区分签名用途的密钥对,和加密用途的私钥对,加密密钥用途的密钥对由监管方同事管理
    fabric证书体系:
    T-Cert
    –Transaction Certificate (交易证书证书),执行交易时使用
    •E-Cert
    –Enrollment Certificate (注册证书),携带实体信息的证书
    •CSR–证书吊销列表
     
    T-cert每次都会生成一个。用于交易,而E-cert则负责验证身份
     
    加密算法种类
    对称密码算法,典型算法:DES, AES,
    •加解密方共用一个密钥
    •加/解密速度快,但密钥分发比较困难
     
    哈希或散列函数(Hash),典型算法SHA,MD5
    • 如果两个散列值是不相同的,那么这两个散列值的原始输入也是不相同的
    •用于信息压缩,并发现信息是否发生变化
    •计算速度快,特定算法其结果长度统一
    •目前至少使用SHA256
     
    非对称密码算法(公钥体系),典型算法:RSA, ECC
    •加解密时,通讯一方有一对密钥(公钥和私钥)
    •公钥可以公开,分发给任何人
    •私钥不可以公开,严格持有,例如U盾中存放私钥等•公钥加密,只能用私钥解密,反之亦然
    •加/解密速度较慢,但无密钥分发问题
    •区块链主要使用ECC椭圆曲线算法BA
     
    加密传输交互方式
    –公钥体系与对称密钥相结合的加密方式
    •公钥体系通常运算性能低,做大量数据加解密力不从心
    •通常利用公钥体系实现对称密钥的安全交换,利用公钥体系的安全性和对称密钥的便利性
    典型应用:HTTPS
     
     
  • 相关阅读:
    家目录,Linux常用命令概述
    Day003_Linux基础——系统目录结构
    Day002_LInux基础_常用命令_001
    Day002_LInux基础_常用命令
    Linux_Day001-002章常用命令
    Linux基础Day001-001章
    pycharm单行及多行注释快捷键
    配置ospf的路由器连通配置静态路由的路由器
    python--闭包
    主机数和可用主机数计算
  • 原文地址:https://www.cnblogs.com/wanglao/p/11162583.html
Copyright © 2011-2022 走看看