主要内容:
哈希算法,数字摘要,加密算法,数字签名,数字证书,PKI体系,MERKLE树,布隆过滤器,同态加密
一、哈希:
优秀的哈希满足:
正向快速:给定铭文和哈希算法,有限时间有限资源快速计算出哈希值
逆向困难:给定若干哈希值,有限时间内几乎不可能逆向推到出明文
输入敏感:原始数据改变少量,哈希改变大量
冲突避免:不同明文哈希相同概率极低.(强抗碰撞,弱抗碰撞)
二、数字摘要:
通过对数字内容进行哈希计算,获取唯一的哈希值来代替完整的数字内容.解决了验证内容是否被篡改的问题.
三、哈希防护:
通常情况下数据库不会保存明文密码,保存的是加密后的密码,MD5或者哈希之后的密码,但是有人会收集常用密码的密文制作彩虹表,来破解密文,为了防止这种情况通常情况使用加盐的方式,来避免.就是对明文进行加密之前在明文内加入一段值, 称作 “盐”.
四、消息验证码:
主要用于身份的认证,一般是提前共享哈希算法H 和对称加密的秘钥K ,之后A向B 发送随机消息, B进行计算,得到消息的验证码,把消息的验证码返回给A.验证通过. 需要保证安全的信道.
五、数字签名:基于非对称加密,为了证明消息的完成性(未被篡改),和消息的来源.盲签名,多重签名,群签名,环签名.
盲签名:防止签名者看到消息
多重签名:手机到多数签名,多人投票, 多人公正.
群签名:群组中随机一人签名代表群组, 随机选主,签名
环签名:签名者,拉群组中几个人,使用他们的公钥和自己的私钥进行签名.
六、数字证书:解决公钥的分发过程中被篡改,伪造的问题.
证书包括:基本数据(版本,序列号) 所签名对象信息(签名算法类型,签发者信息,有效期,被签发人,签发的公开秘钥),CA数字签名.
一般证书是由 权威的CA机构颁发. 如DigiCert, GlobalSign,VeriSign等
CA数字证书是通过颁发机构的公钥进行加密的数字签名.
验证数字证书的有效性,除了通过版本,有效期等最重要的是通过验证CA数字签名来实现,
验证CA数字签名就需要颁发者的公钥进行验证,颁发者的公钥又可以通过数字证书来颁发.
因此形成的数字证书的信任链.最高级的信任机构是权威的认证机构.
一般目前操作系统和浏览器中都存有权威机构的公钥,这个作为最上级的公钥.
七、KPI体系对数字证书的生命周期进行管理
KPI是建立在公私钥基础上,实现安全可靠传递消息和身份确认的通用框架.
主要包括:
CA:负责颁发证书,作废证书,结构来自RA请求.
RA:对用户身份验证,检验数据合法性,登记,审核过了发给CA.
证书数据库:存放证书,多采用X.500标准格式
流程:用户申请,给RA提交身份信息,RA进行验证,登记,通过后发给CA,CA对用户公钥进行签名(也就是颁发证书).或者作废证书.
两种方式:一种是 CA生成公钥私钥对,公钥签名发给用户, 一种是用户自己生成公钥私钥,把公钥给CA签名.
操作:使用openssl 生成私钥 和对应的证书请求文件.
证书的撤销:维护一个撤销证书列表,证书如果在撤销列表中则已经撤销.
涉及到验证一个证书是否存在于一个数据集中的问题.
通过MERKEL(默克尔)树来解决. 或者布隆过滤器.
参考: http://blog.youkuaiyun.com/zhuihunsuomeng/article/details/54629627 默克尔树
http://blog.bifubao.com/2014/03/16/proof-of-reserves/ 100%准备金证明
零证明问题:
八、常见加密算法:
1、对称加密算法:常见有DES ,AES ,IDEA 等,加密秘钥和解密秘钥相同,加密速度快,适合大数据量加密,通常情况是分组加密,可以并行处理。
2、非对称加密算法:有RSA 算法、椭圆曲线,SM2加密算法。
RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的所有密码攻击,已被ISO推荐为公钥数据加密标准。RSA算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但那时想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。
参考资料: http://blog.youkuaiyun.com/clj198606061111/article/details/9090407
3、DH秘钥交换协议,
实际上就是采用了RSA的原理.把对称加密的秘钥进行交换.
总结:
分布式协议不同节点间达成一致,需要保证消息传递过程中, 消息完整性,消息来源的可靠性,消息的私密性.
因此 需要验证消息的来源,消息的完整,对消息加密.了解各种加密算法,方便进行选择.另外还要考虑加密的效率,加密后密文的大小.