基本概念

信息安全的首要是解决保密性,完整性,不可否认,不可抵赖四大问题,为此设计了很多算法以及算法的组合来解决。

保密性通过加解密实现,加密算法如DES AES SM1 chacha20,加密算法一般加解密使用同样的key,如果分发通信双方的密钥是需要面对和解决的问题。

哈希摘要算法保证数据完整性校验和唯一性,将大数据可用一个较小的 bit 来表征,同时也起到压缩校验的作用,常见算法如MD5 SHA,也有专门的HMAC计算算法。

公钥算法里,数字签名即满足不可否认性,具体说来就是私钥签名,公约验签,同时也可以满足加解密需求,如公钥加密,私钥解密。常见算法有RSA ECC等。

随机数生成,有专门的 NIST 标准,越随机最好。

数字证书是由正规 CA 中心认证并制作的包含公钥和被认证者基本信息的文件。证书是为了解决公钥的可信度问题。CA 可以有根 CA 和节点 CA,认证过程可成链式反映,对不同的节点也可做不同的权限控制。

为通信双方安全使用密钥,还有许多实现密钥交换or密钥共享的方法。

下文将梳理下碰到的使用上述信息安全算法的的应用。

银行 u 盾

以前就是做安全芯片,即银行 u 盾,对这块最了解。

银行 u 盾的特点是:

  • 客户端验证;
  • 密钥对由 u 盾生成,硬件防护保证私钥等信息不被读取。
  • 证书公钥也来自 u 盾,由银行第1次使用时初始化证书;
  • 基于 pki 体系。

u 盾的个人证书秘钥对产生放在 u 盾而不是传统的服务器上,这是 u 盾的一大特点。但证书的生成还是要经过银行,银联等的 CA 的。

简略过程为:

u盾流程

SSH

可参考阮神的文章

SSH 一种计算机间的加密登录协议.登录别人是作为 client,要想别人登录自己,需要运行 ssh 的 server 端。

正常登录时,server 端产生密钥对,(自己产生,不跟 CA 玩),把 pubkey 下发 client,client 确认接受该主机后,将 host 添加到 login list($HOME/.ssh/known_hosts).

每次都会要求登录密码(usr 对应的密码)。如何免密登录?

client 也产生密钥对,然后将 pubkey 上传 server,以后登录时,server 发送一个随机串,client 用私钥签名后,交给 server 验证后,即证明 client 可信。

流程如下:

ssh流程

git 登录也是类似的。

比特币和区块链

也是才读,搞懂再说。

比特币入门教程