go语言编程 要点总结(六)安全编程

数据加密

单秘钥加密,整个系统由需要加密的明文,加密算法和秘钥工程。常见的有DES、AES、RC4等

双秘钥加密,整个系统由需要加密的铭文,加密算法,秘钥和公钥。公钥和秘钥都可以用来加密。常见的有RSA等

不可解密,哈希算法,MD5和SHA-1等

数字签名

指用于标记数字文件拥有者、创造者、分发者身份的字符串。拥有标记文件身份、分发的不可抵赖性等作用,

目前常用的数字签名采用了非对称加密。

数字证书

银行U盾初始化的过程就是下载数字证书,数字证书包含银行公钥。有了公钥之后,网银就可可以用公钥加密我们提供给银行的信息,银行才能用对应的私钥解密,确保安全。

PKI体系

全称公钥基础设施,使用非堆成加密理论,提供数字签名、加密、数字证书等服务的体系,一般包括权威认证机构CA、数字证书库、秘钥备份及恢复系统、证书作废系统、应用接口API等

go语言的哈希函数

包crypto/sha1 crypto/md5

加密通信

https是基于ssl(secure sockets layer)协议。ssl是网景公司开发位于tcp与http之间的透明安全协议,通过ssl,可以把http包数据以非对称加密的形式往返于浏览器和站点之间,避免被第三方非法获取。

加密通信流程:

浏览器输入https协议网址服务器向浏览器返回证书,浏览器检车证书合法性浏览器使用证书中的公钥加密一个随机堆成秘钥,并将加密后的秘钥和使用秘钥加密后的请求URL一起发送到服务器服务器用私钥解密随机堆成秘钥,并用获取的秘钥解密加密的请求URL服务器把用户请求的网页用秘钥加密,并返回给用户浏览器用秘钥解密服务器发来的数据,最终显示

上述过程依赖SSL/TLS层实现。工程更复杂一些,基本流程是一致的