zoukankan      html  css  js  c++  java
  • [Web] 网络安全(SSH SSL HTTPS)

    概念

    • SSH(Secure Shell)
      • 一种安全通信协议
      • 为shell提供加密通信服务
      • 使用了非对称加密和对称加密
        • 对称加密(Symmetric-Key Encryption):只用一个密钥来进行加密和解密
        • 非对称加密(Asymmetric-Key Encryption):用一个密钥来进行加密(公钥),用另一个密钥来解密(私钥)
      • 用于远程登录会话和其他网络服务
      • SSH=SSL+用户登录功能等应用层协议
      • 只有SSH客户端,和SSH服务器端之间的通信才能使用SSH协议,其他软件服务无法使用
      • 传统网络通信服务(FTP、Telnet)采用明文传输很不安全
      • 位于传输层和应用层
      • 过程
        • A、B之间建立TCP连接
        • B生成一对公私密钥
        • B把公钥发送给A
        • A生成一个用于加密数据的密钥K
        • A把K用公钥加密发给B,B解密(非对称加密)
        • A、B之间的通信数据都用K进行加密和解密(对称加密)
      • 中间人攻击
        • 黑客H埋伏在A、B之间的某个路由器上
        • 假冒B生成一对公私密钥,把密钥发送给A
        • H假冒B与A进行通信
        • SSH通过判断公钥的fingerprint(如本机MAC地址)是否可信来防止
      • 公钥登录(免密码登录)
        • 客户端将自己的公钥储存在远程服务器上
        • 客户端登录时,服务器发送一个经过公钥加密的随机数据给客户端
        • 客户端用私钥解密信息,并发还给服务器
        • 服务器验证正确后,即确认客户端是可信任的,从而建立起一条安全的信息通道,允许客户端不用输入密码直接登录 Shell
    • SSL(Secure Socket Layer 安全套接字层)
      • 一种安全通信协议
      • 位于传输层和应用层之间(比SSH范围小)
      • 为互联网上的所有客户端与服务器连接提供加密通信服务(比SSH范围广)
      • 常用的加密算法是RSA
      • 基本思想是先用公钥加密法,得到对话密钥,再用对称加密通信
      • 公钥加密法(非对称加密)
        • 客户端先向服务器端索要公钥,然后用公钥加密信息
        • 服务器收到密文后,用自己的私钥解密
      • 传统非对称加密的问题
        • 如何保证公钥不被篡改
          • 将公钥放在数字证书中
        • 如何减少公钥加密的计算量
          • 每次对话(session),客户端和服务端都生成一个对话密钥(session key)
          • 服务器公钥只用于加密对话密钥
      • 数字签名(Digital Signature)
        • 指出一个文件的所有者或创作者
        • 用Hash函数生成信件摘要,再使用私钥对摘要加密,生成数字签名
        • 公钥认证:证实一个公钥属于某个特定实体
      • 数字证书(Digital Certification)
        • 用于证实一个实体的真实身份
        • 将一个将实体身份标识信息(如IP,数字签名等)和实体公钥绑定起来
        • CA(Certification Authority 数字证书认证机构)
        • CA用自己的私钥,对实体的公钥和相关信息进行加密,生成数字证书
        • 收到实体信息的人,用CA的公钥解开数字证书,拿到实体的公钥
      • 使用过程  
        • 服务端用Hash函数生成信件摘要,再使用私钥对摘要加密,生成数字签名
        • 服务端将数字签名和数字证书一起附在信件中发给客户端
        • 客户端收到信件后,取下数字签名,用公钥解密得到摘要(公钥认证)
        • 客户端对信件本身使用Hash函数,将得到的结果与上一步一样(未篡改)
        • 客户端用CA的公钥解开证书,拿到服务端的公钥(未冒充)
      • 通信过程
        • 客户端向服务端索要并验证公钥
        • 双方协商生成对话密钥
          • 客户端发出请求:一个随机数
          • 服务端回应:一个随机数;服务器证书
          • 客户端回应:一个随机数(用服务端公钥加密);握手结束通知
          • 服务端回应:用三个随机数生成session key;握手结束通知
        • 双方采用对话密钥进行加密通信
    • RSA
      • 一种非对称加密算法
      • 原理:对两个大质数乘积进行分解十分困难
    • HTTPS(Hypertext Transfer Protocol Secure)
      • SSL+HTTP
      • HTTP通信的风险
        • 窃听:第三方可以获知通信内容
        • 篡改:第三方可以修改通信内容
        • 冒充:第三方可以冒充他人身份参与通信
      • SSL协议
        • 所有信息都是加密传播,第三方无法窃听
        • 提供数字签名,一旦被篡改,通信双方会立刻发现
        • 配备数字证书,防止身份被冒充
      • 为网站申请数字证书
        • 为服务器生成一对公私密钥
        • 把你网站的信息连同你的公钥一起发送给某个权威的CA
        • CA通过某种方式认证申请人是否是网站的所有人(比如让你在网站的指定路径上传他指定的特殊文字序列)
        • 验证通过得到证书

    参考

    SSH和SSL的区别—基于原理和协议

    http://news.west.cn/52031.html

    SSH、SSL与HTTPS

    https://blog.csdn.net/m0_37402140/article/details/78568583

    数字签名是什么?

    http://www.ruanyifeng.com/blog/2011/08/what_is_a_digital_signature.html

    Linux ssh命令详解

    https://www.cnblogs.com/ftl1012/p/ssh.html

    SSL和SSH有什么区别(写得有点乱)

    https://blog.csdn.net/box_kun/article/details/79209031

    OpenSSH下载

    https://www.mls-software.com/opensshd.html

    Linux使用ssh公钥实现免密码登录另外一台Linux

    http://php-note.com/article/1464.html

  • 相关阅读:
    PAT (Advanced Level) Practice 1054 The Dominant Color (20 分)
    PAT (Advanced Level) Practice 1005 Spell It Right (20 分) (switch)
    PAT (Advanced Level) Practice 1006 Sign In and Sign Out (25 分) (排序)
    hdu 5114 Collision
    hdu4365 Palindrome graph
    单链表查找最大值、两个递增的链表合并并且去重
    蓝桥杯-最短路 (SPFA算法学习)
    蓝桥杯-最大最小公倍数
    Codeforces-470 div2 C题
    蓝桥杯-地宫取宝
  • 原文地址:https://www.cnblogs.com/cxc1357/p/12638632.html
Copyright © 2011-2022 走看看