网络安全(ssl,https)

Apr 26, 2017


关于对称加密和非对称加密算法

  • RSA就是非对称加密算法,公开的密钥称为公钥,不公开的密钥称为密钥,用公钥加密的数据必须使用对应的私钥解开,反之用私钥加密的数据一定用公钥解开,所以是 不对称的
  • DES就是对称加密算法,需要准备一个密钥进行加密数据,得到密文数据后再使用 一次该密钥进行解密,所以加密和解密都使用该密钥,则为对称的
  • Hash加密算法有MD5 SHA1都是单向加密算法,加密的数据不可以还原回来,用作验证网络传输的数据是否完整的没有被篡改的到达目的地

疑问

  • 关于各种网上支付采用什么机制保证安全可靠?
  • 为什么只需要将本地使用rsa算法生成的公钥放在github中就可以直接拉取和提代码无需输入口令?
  • 如果你需要有一个访问某个服务器的权限,必须要运维部部给你的私钥,你拿到该私钥需要做什么?

ssl数字认证协议和https协议

https协议

https协议:相当于在原来的http协议和tcp/ip协议之间加上了ssl安全套接层,既保证了客户端连接的是合法的服务器,以及在传输过程中是加密的和完整性的。

ssl协议

ssl协议位于tcp/ip和应用层协议之间,是应用层协议提供安全可靠数据传输的基础,其分为两层:ssl记录协议(提供数据的压缩,数据的加密) ssl握手协议(在ssl记录协议基础之上,主要在传输数据之前确保双方身份合法)

####ssl保证客户端连接到合法的服务器

  • 1、 颁发证书机构只会对合法的域名和正当运营服务器发布证书,该证书记载了加密使用的算法,指纹算法和密钥,以及拥有对方的公钥。

  • 2、确认证书的合法性后使用公钥进行加密后的密文和明文发给服务器,然后服务端使用私钥进行解密后和明文对比,通过ssl握手协议保证双方都是合法安全的,之间建立了可靠的通道

####ssl数据加密

  • 1、客户端发起请求

  • 2、 当认证完后,通讯时服务端会发送一个分证书给客户端,然后客户端会根据该证书生成一个会话密钥,不同的会话持有不同的密钥(随机产生,和会话绑定防止黑客探测密钥进行攻击)

  • 3、客户端先使用会话密钥进行对数据包A加密,然后使用证书中的公钥进行再加一次密成数据包B

  • 4、服务端接受到数据后首先使用私钥进行对数据包B解密,然后得到该会话密钥进行对数据包A解密成明文。由于私钥只有认证好的服务器有,黑客并没有

  • 5、服务端使用会话密钥加密数据包A然后使用私钥进行对数据包加密成B最后发送给客户端,即使公钥可以公开,但是黑客无法获取会话密钥,所以此传输通道是安全的

回答以上问题

  • 1、和钱相关的交易使用的都是https协议,保证通讯信道是建立在ssl层上的安全可靠的信道

  • 2、由于能登录上gitHub网站则客户端肯定时合法的,而github服务端也是合法的,所以将客户端的公钥放在github中,首先一步是客户端发送一份公钥给github,若github能找到公钥则使用其加密数据,将密文和明文发送到客户端,然后客户端使用私钥解密和明文对比,相同则后面的数据传输都是使用私钥和公钥加密形式

  • 3、由于使用https协议请求的内容中混合有http的url,当该链接的资源时图片和css危害性还好,当是js或一些动态资源时危害性很大,很容器遭到内容被篡改,因此并不会加载这些http请求的js css等资源。使用Nginx代理服务器可以解决此问题

  • 4、ssh协议:便于客户端安全连接到控制服务器,并且对命令进行解密,以前的ftp pop telnet等协议口令和数据都是明文形式 登录到服务器两种方式 (1)、口令/密码 并不能保证登录的是合法的服务器 (2)、密钥登录

    首先客户端使用非对称,rsa生成一对密钥,然后将公钥放在服务器中,会使用上面提到的验证方式,验证双方是否具备安全通讯的条件。但是实际上如果连接到一台并没有给你权限和口令的服务器,你是无法将本地公钥拷贝到服务器中。

所以通常都是运维人员在该服务器/home下建立一个你的用户目录并且将公钥放在此目录下 autorized_keys中,然后将私钥给你。

客户端使用 ssh -i 私钥路径 用户名@server-ip 进行登录

其中本地客户端有个know_hosts记录的历史访问服务器的公钥,第一次访问没有,当第二次才会记录,下次访问时都会检查该文件中的公钥是否和服务器相同,防止DNS欺骗(攻击)