加密和安全

2017-09-17  本文已影响0人  一桥长书

1 安全机制

信息安全防护的目标
  保密性  Confidential
  可用性  Intergrity
  可控制性 Usability
  不可否认性  Controlability
安全防护环节  Non-repudiation
  物理安全:各种设备/主机,机房环境
  系统安全:主机或设备的操作系统
  应用安全:各种网络服务,应用程序
  网络安全:对网络访问的控制,防火墙规则
  数据安全:信息的备份与恢复,加密解密
  安全管理:各种保障性的规范 流程 方法
  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
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 -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
上一篇下一篇

猜你喜欢

热点阅读