Web 信息安全基础
基本概念
信息安全的首要是解决保密性,完整性,不可否认,不可抵赖
四大问题,为此设计了很多算法以及算法的组合来解决。
保密性通过加解密实现,加密算法如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 的。
简略过程为:
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 可信。
流程如下:
git 登录也是类似的。
比特币和区块链
也是才读,搞懂再说。