美文网首页
加密和安全

加密和安全

作者: 一桥长书 | 来源:发表于2017-09-17 19:13 被阅读0次

    1 安全机制

    信息安全防护的目标
      保密性  Confidential
      可用性  Intergrity
      可控制性 Usability
      不可否认性  Controlability
    安全防护环节  Non-repudiation
      物理安全:各种设备/主机,机房环境
      系统安全:主机或设备的操作系统
      应用安全:各种网络服务,应用程序
      网络安全:对网络访问的控制,防火墙规则
      数据安全:信息的备份与恢复,加密解密
      安全管理:各种保障性的规范 流程 方法
    
    • 安全攻击: STRIDE
      spoofing 假冒
      Tampering 篡改
      Repudiation 否认
      Information Disclosure 信息泄露
      Denial of Service 拒绝服务
      Elevation of Privilege 提升权限
    
    • 常用的安全算法
    3A 机制
      认证 authorization
      授权 authentication
      审计 audition
    
    密码算法和协议
      对称加密 
      公钥加密
      单项加密
    linux系统提供的加密工具: openSSL,gpg(gpg) 协议
    
    • 对称加密算法
    对称加密:加密和解密使用的同一个密钥
    常见的对称加密算法
      DES: Data Encryption Standart,56 bits
      3DES:
      AES: Advanced(128,192,256bits)
      Blowfish,Twofish
      IDEA,RC6,CAST5(使用gpg做对称加密默认算法)
    特性:
      1 加密和解密使用同一个密钥,效率高
      2 将原始数据分割成固定大小的块,逐个进行加密
    缺陷:
      1 密钥过多
      2 密钥分发
      3 数据来源无法确认
    
    案例
    对root的目录下的anacoda-ks.cfg 进行对称加密
      1 使用gpg进行加密
        gpg --cipher-algo des -c -o a.gpg anaconda-ks.cfg 
          -o 将加过密的文件保存到哪里
        gpg -d -o b_file a.gpg  对a.pgp 进行解密
      2 使用openssl 进行加密
        openssl enc -e -cast5 -a -salt -in anacoda-ks.cfg -out a.open
        openssl enc -d -cast5 -a -salt  -in a.open -out b_file_open
    
    • 非对称加密算法
    公钥加密: 密钥是成对出现的
      公钥: 公开给所有人;public key
      私钥: 自己留存,必须保证其私密性 secret key
    特点: 用公钥加密数据,只能使用与之配对的私钥解密,反之亦然
    功能: 
      数字签名: 主要在于让接收方确认发送方身份
      对称密钥交换: 发送方用对方的公钥加密一个对称密钥后发送给对方
      数据加密: 适合加密小数据
    缺点:密钥过长,加密效率低下
    算法:
      RSA(加密,数字签名),DSA(数字签名),ELGamal
    
    基于一堆公钥/密钥对
      用密钥对中的一个加密,另一个解密
    实现加密
      接收者
        生成公钥/密钥对:P和S
        公开公钥P,保证私钥S
      发送者
        使用接收者的公钥解密消息M
        将P(M)发送给接受者
      接受者
        使用密钥S来解密: M=S(P(M))
    实现数字签名
      发送者
        生成公钥/私钥: P和S
        公开公钥P,保证密钥S
        使用S来加密消息M
        发送者给接受者S(M)
      接受者
        使用接受者的公钥来解密M=P(S(M))
     结合签名和加密
    分离签名
    
    例子:gpg,需要两台主机同步时间,否者会有问题
      1 首先生成私钥对   在主机A上家目录会新建.gunpg文件夹
          gpg --gen-key  可能需要等待一段时间,需要随机数,可以下载文件或者安装软件进行IO操作,以在熵池产随机数
      2 查看主机的公钥
          gpg --list-keys
      3 到出公钥
          gpg -a --export -o centos6.pubkey
      4 然后将公钥复制到另外一台主机B
          scp centos6.pubkey B:
      5 在主机B上同样生成密钥对
        gpg --gen-key
      6 导入复制过来的公钥文件
        gpg --import centos6.pubkey
      7 查看公钥
        gpg --list-keys
      7 加密一个文件,复制到A上进行解密
        gpg -e -r centos6.key anaconda-ks.cfg
        scp anaconda-ks.cfg.gpg A:
        gpg -o a_file -d anaconda-ks.cfg.gpg 
      8 在B中删除A的公钥
         gpg --delete-keys centos6.key
      9 删除两台主机的公钥,需要先删除密钥
        gpg --delete-secret-keys centos6.key
        gpg --delete-secret-keys centos7.key
    
    • 单向算法
    将任意数据缩小成固定大小的指纹
      任意长度输入
      固定长度输出
      若修改数据,指纹也会改变("不会产生冲突")
      无法从指纹中重新生成数据("单向")
    功能:数据完整性
    常见算法:
      md5:128bits,sha1:162bits,sha224,sha256,sha284,sha512
    常见工具
      md5sum,  sha1sum
      openssl, gpg
      rpm -V
    
    例子
    [root@test5(172.18.254.5) ~]#md5sum anaconda-ks.cfg
    5920fb075bd329543b0f1414350f73da  anaconda-ks.cfg
    [root@test5(172.18.254.5) ~]#openssl dgst  anaconda-ks.cfg
    MD5(anaconda-ks.cfg)= 5920fb075bd329543b0f1414350f73da
    
    • CA和证书
    PKI: Public Key Infrastructure
      签证机构: CA(Certificate Authority)
      注册机构:RA (Register Authority)
      证书吊销列表:CRL (Certificate Revoke list)
    x.509: 定义了证书的结构以及认证协议标准
    版本号             主体公钥
    序列号             CRL分发点
    签名算法          扩展信息
    颁发者              发行者签名
    有效期
    
    证书类型
      证书授权机构的证书
      服务器
      用户证书
    获取证书的两种方法
      使用证书授权机构
        生成签名请求(csr) certificate signature request
        将csr发送给CA
        从CA出接受签名
    自签名的证书
      自己签发自己的公钥
    
    • 安全协议
    SSL: Secure Socket Layer
      TLS: Transport Layer Security
        1995 :SSL 2.0 Netscape
        1996: SSL 3.0
        1999: TLS 1.0
        2006: TLS 1.1 IETF(Internet 工程任务组) RFC 4346
        2008 :TLS 1.2  当前使用
        2015: TLS 1.3
    功能:机密性,认证,完整性,重放保护
    两 阶段协议,分为握手阶段和应用 阶段
    握手阶段( 协商阶段): 客户端和服务器端认证对方身份依赖于PKI体系,利用数字证书进行身份认证),并协商通信中使用的安全数、密码套件 以及主密钥。 后续通信使用的所有密钥都是通过MasterSecret 生成 。
    应用阶段:在握手阶段完成 后进入,在 应用阶段通信双方使用握阶段协商好的密钥进行
    
    openSSL: 开源项目
      三个组件:
        openssl:多用途的命令行工具,包括openssl
        libcrypto:加密算法库,包括openssl-libs
        libssl:加密模块应用库,实现ssl和tls包括nss
    
    openssl命令:
      两种运行模式:交互式和批处理模式
      openss version:程序版本号
      标准命令,消息摘要命令,加密命令
      标准命令
        enc,ca,req
     生成密钥对
      1 私钥
        (umask 0077;openssl genrsa -out my.key -des 1024)
      2 从私钥中提取公钥
        openssl rsa -in my.key -pubout -out my.pub
    openssl的对称加密和单向加密上面已经介绍过了,直接实现非对称加密
    
    创建CA和申请证书
    创建私有CA
      openssl的配置文件 /etc/pki/tls/openssl.cnf
      三种策略:匹配,支持和可选
      匹配指要求申请填写的信息跟CA设置信息必须一致,支持指定必须填写这项申请信息,可选指可有可无
    
    
    1 在主机A 根据/etc/pki/tls/openssl.cnf的配置信息,生成密钥对
      (umask 0077;openssl genrsa -out /etc/pki/CA/private/cakey.pem -des 2048)
    2  生成自签证书
      openssl req -new -x509 -key /etc/pki/CA/privite/cakey.pem -out /etc/pki/CA/cacert.pem -days 3650
    3 创建必要的文件 
      touch /etc/pki/CA/index.txt  证书的数据库
      echo 01 > /etc/pki/CA/serial  表示下一张证书的编号01
      echo 01 > /etc/pki/CA/crlnumber 表示下一张吊销证书编号为01
    4 在主机B上生成密钥和证书申请,并将申请复制到A(CA)主机上
      (umask 0077;openssl genrsa -out /root/httpd.key -des 2048)
      openssl req -new key /root/httpd.key -out httpd.csr
      scp /root/httpd.csr A:/tmp
    5 在A主机上给B主机的申请签名
      openssl ca -in /tmp/httpd.csr -out /etc/pki/CA/certs/httpd.crt -days 365
    6 将签好的证书复制到B主机上,B主机就可以使用了
      scp /etc/pki/CA/certs/httpd.crt B:
    7 如果B主机申请吊销或者A主机主动吊销,首先查找证书的编号
      openssl x509 -in /root/httpd.crt --noout -text 可以查看证书的编号和其他信息
      同时CA 也可以直接查找某个编号的证书信息
      openssl ca -status number(证书编号)
    8 吊销证书
      openssl ca -revoke /etc/pki/CA/newcerts/number.pem
    9 更新吊销列表
      openssl ca gencrl -out /etc/pki/CA/crl/crl.pem
    

    2 OpenSSH

    OpenSSH 介绍
    相关包:
      openssh
      openssh-clients
      openssh-server
    工具:
      基于C/S 结构
      Client: ssh, scp, sftp ,slogin
      Windows 客户端:
        xshell, putty, securecrt, sshsecureshellclient
      Server: sshd
    
    • 客户端组件
    客户端组件:
    ssh,  配置文件:/etc/ssh/ssh_config
    Host PATTERN
    StrictHostKeyChecking no  首次登录不显示检查提示
    格式:ssh [user@]host [COMMAND]
    ssh [-l user] host [COMMAND]
      -p port :远程服务器监听的端口
      -b: 指定连接的源IP
      -v: 调试模式
      -C :压缩方式
      -X:  支持x11 转发
      -Y :支持信任x11 转发
        ForwardX11Trusted yes
      -t: 强制伪tty 分配
        ssh -t remoteserver1 ssh remoteserver2
    
    sshd 服务可以基于passwd 和pubkey认证
    passwd 即登录需要输入密码
    pubkey即需要先将自己的公钥复制到对应主机的对应用户的及目录的.ssh/authorized_keys文件中
    
    基于pubkey认证
      ssh-keygen 生成自己的公钥和私钥
      ssh-copy-id -i ~/.ssh/id_rsa.pub user@IP
    然后就可以不用密码就可以登录对应主机
    
    • SSH 端口转发
    本地端口转发
    ssh -L localport:remotehost:remotehostPort sshserver
    选项:
      -f 后台运行
      -N 不打开远程shell,处于等待状态
      -g 启用网卡功能
     ssh -L 9527:telnetserver:23 -N sshsrv
    远程端口转发:
      ssh -R localport:remotehost:remotehostPort sshserver
         ssh -R 9527:telnetserver:23 -N sshsrv
    ssh端口转发:
      动态端口转发:
      当使用firefox访问internet时,本地的1080端口作为代理服务器,firefox的访问请求被转发到sshserver上,有sshserver替之访问internet
      在本地firefox设置代理socket proxy:127.0.0.1:1080
      ssh -D 1080 user@sshserver
      同时也可以使用curl上网
      curl --socks5 127.0.0.1  http://IP
    

    相关文章

      网友评论

          本文标题:加密和安全

          本文链接:https://www.haomeiwen.com/subject/zscmsxtx.html