加密和安全

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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,222评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,455评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,720评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,568评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,696评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,879评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,028评论 3 409
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,773评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,220评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,550评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,697评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,360评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,002评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,782评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,010评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,433评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,587评论 2 350

推荐阅读更多精彩内容