当前位置: 移动技术网 > 科技>操作系统>Linux > 加密和安全

加密和安全

2018年07月15日  | 移动技术网科技  | 我要评论

长春君子兰,女子疑被当小三遭当街扒光衣服群殴,仙锋道骨

墨菲定律
墨菲定律:一种心理学效应,是由爱德华·墨菲(Edward A. Murphy)提出的,
原话:如果有两种或两种以上的方式去做某件事情,而其中一种选择方式将导
致灾难,则必定有人会做出这种选择
主要内容:
任何事都没有表面看起来那么简单
所有的事都会比你预计的时间长
会出错的事总会出错
如果你担心某种情况发生,那么它就更有可能发生
 
安全机制
信息安全防护的目标
保密性 Confidentiality
完整性 Integrity:数据确定完好,不能被篡改
可用性 Usability:read5(高可用性)系统的总体运行时间占全部时间的百分比,百分比越 高,可用性越高,百分比按年计算,%99.9 当机10小时
可控制性Controlability
不可否认性 Non-repudiation
安全防护环节
物理安全:各种设备/主机、机房环境
系统安全:主机或设备的操作系统
应用安全:各种网络服务、应用程序 (文件共享)
网络安全:对网络访问的控制、防火墙规则(iptables -vnL iptables -F)
数据安全:信息的备份与恢复、加密解密
管理安全:各种保障性的规范、流程、方法
安全攻击: STRIDE
1 Spoofing 假冒 (钓鱼网站,可以通过看域名辨别)
2 Tampering 篡改 (发邮件给tom mail -s test tom .或者ctrl+d保存退出邮件,,)
3 Repudiation 否认
4 Information Disclosure 信息泄漏
Denial of Service 拒绝服务DDOS攻击 ping -f(尽对方cpu所能去ping对方)-s 34428 5 ddos"分布式攻击",网络黑客发送大量的访问请求,耗尽资源,网络对方无法进行服务
6 Elevation of Privilege 提升权限(把普通用户的权限设置为管理员权限)
centos5上:1:useradd wang 2:su - wang
安全设计基本原则
1 使用成熟的安全系统 :
2 以小人之心度输入数据 :用户输入的数据有可能是错误的数据,绕过密码的检查
select *(*表示所有字段) from user (查询user表中有没有用户账号)
SQL(注入攻击)where username=‘toot’ and(shall中的&&) password=‘ ’ or ‘1’ = ‘1’
username=root
password=magedu (只要一个为真全为真)
password= ‘ or(shall中的或) ‘ 1’ = ‘ 1 ’ (构造了一个奇怪的口令绕过密码检查)
3 外部系统是不安全的,防火墙:非军事化区(DMZ) 军事化区:严禁外部访问
防水墙:防止企业内部安全的攻击,拒接用户随意的访问企业内部
4 最小授权,
5 减少外部接口
6 缺省使用安全模式:考虑使用SElinux
7 安全不是似是而非
8 从STRIDE(攻击方式)思考
9 在入口处检查:如地铁的入口检查
10 从管理上保护好你的系统
安全算法 3A(认证,授权,审计
常用安全技术
认证 :验证身份方法:用户名,口令等
授权 :用户账号不一样授权不一样
审计 : 记录和安全相关的操作
安全通信
不安全的传统协议
telnet、FTP、POP3等等;不安全密码
http、smtp、NFS等等;不安全信息
Ldap、NIS、rsh等等;不安全验证
密码算法和协议:
对称加密
公钥加密
单向加密
认证协议
对称加密算法
对称加密:加密和解密使用同一个密钥 key1=key2
eg:A (data) 明文 key1 (data) 密文 --------(传输) ------ key2( key1 (data)) B
DES:Data Encryption Standard(数据加密标准),56bits(56位)
补充:ascii码:把所有的数字或字母,符号等编写为ascii码,转化为二进制使得计算机识别
3DES: DES加密3次
AES:Advanced(高级) (128, 192, 256bits)主流的加密
Blowfish,Twofish (商业算法)
IDEA,RC6,CAST5
特性:
1、加密、解密使用同一个密钥,效率高,适合加密大量的数据
2、将原始数据分割成固定大小的块,逐个进行加密
缺陷:
1、密钥过多
2、密钥分发
3、数据来源无法确认:(可能会收到假冒的加密数据)
非对称加密算法
非对称加密算法 key1 ! = key2 安全通行,数据来源确认
public key (公钥,公开,到处发放) A pa sa
secret key (私钥,私有的) B pb sb
eg 1A用 {pb加密(data)}------(传输) ----- B用sb解密(data)
eg 2 Alice 发送 BOb
基于一对公钥/密钥对, 用密钥对中的一个加密,另一个解密
• 接收者BOb
生成公钥/密钥对:P和S
公开公钥P,保密密钥S
• 发送者 Alice
使用接收者的公钥来加密消息M
将P(M)发送给接收者
• 接收者BOb
使用密钥S来解密:M=S(P(M))
Alice :Pa公钥,Sa私钥
BOb :Pb公钥,Sb私钥
加密(Pb)------解密(Sb) Alice 发送 BOb ,,BOb只能解密,其他解不了
加密(Sa)------解密(Pa) Alice 发送 多用户 ,,判断出发出数据这是谁
公钥加密:密钥是成对出现 拿到公钥是推算不出私钥的,公钥可以通过私钥推出
公钥:公开给所有人;public key
私钥:自己留存,必须保证其私密性;secret key
特点:用公钥加密数据,只能使用与之配对的私钥解密;反之亦然
功能:
数字签名:主要在于让接收方确认发送方身份
对称密钥交换:发送方用对方的公钥加密一个对称密钥后发送给对方
数据加密:适合加密较小数据
缺点: 密钥长,加密解密效率低下
算法:
RSA(加密,数字签名) DES 加密1G数据 加密完2G 4m 8m
DSA(数字签名) DES 加密1G数据 加密完1G 1m 64小时
ELGamal
eg:,1 确定数据安全的传输对方,确定数据传输的来源,用非对称加密算法实现
Pb {Sa(data}) 用sa签名,再用pb加密-----用sb解密后,再用pa解密
eg: 2 确定数据安全的传输对方,确定数据传输的来源,用组合加密算法实现
key(data+Sa(data))+pb(key) 解释:
1 A用 key(data)对称秘钥加密+pb(key)再用B的公钥加密key,B用私钥解密key,得到数据
1 再用A的公钥解密数据,在和解密Key的数据进行比对,确认数据的来源
实现数字签名:(只要用私钥加密就是数字签名)
• 发送者
生成公钥/密钥对:P和S
公开公钥P,保密密钥S
使用密钥S来加密消息M
发送给接收者S(M)
• 接收者
使用发送者的公钥来解密M=P(S(M))
结合签名和加密
分离签名
单向散列(hash运算)数据不一样,hash值不同,实现数据的完整性检验
将任意数据缩小成固定大小的“指纹”
• 任意长度输入
• 固定长度输出
• 若修改数据,指纹也会改变(“不会产生冲突”)
• 无法从指纹中重新生成数据(“单向”)
功能: 数据完整性检验
常见算式
md5: 128bits、sha1: 160bits、sha224sum,sha256、sha384、sha512
 
 
进行下面的数据比较得到数据完整性的校验
 
eg: md5sum /etc/fstab /etc/passwd > md5.log"将多个文件保存到一个文件中"
md5sum --check md5sum -C md5.log :保存文件的hash值确认数据有没有改变
md5.log
将现有的文件和已经存好的文件进行比对,出现ok数据就没有被改过
常用工具
• md5sum | sha1sum [ --check ] file
• openssl、gpg
• rpm -V
eg:实现对称,非对称,hash,进行加密:如下:1身份验证,2数据安全
key(data+Sa{hash(data)})+Pb(key)
1 :A用对称加密算法,进行签名并做hash运算,再用B的公钥加密key
2: B用自己的公钥解开key得到: (data+Sa{hash(data)})
3:用A的公钥解密得到hash(data) 再用原数据data做hash运算两者进行比较,确定数据
的来源,如果两者数据一样。,那就确认数据包的来源是A
 
密钥交换
密钥交换:IKE( Internet Key Exchange )
公钥加密:
DH (Deffie-Hellman):生成会话密钥,由惠特菲尔德·迪菲(Bailey
Whitfield Diffie)和马丁·赫尔曼(Martin Edward Hellman)在1976年发表,参
看如下:https://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange
DH:
A: g,p 协商生成公开的整数g, 大素数p
B: g,p
A:生成隐私数据 :a (a<p ),计算得出 g^a%p,发送给B
B:生成隐私数据 :b,计算得出 g^b%p,发送给A
A:计算得出 [(g^b%p)^x] %p = g^ab%p,生成为密钥
B:计算得出 [(g^a%p)^y] %p = g^ab%p,生成为密钥
应用程序:RPM
文件完整性的两种实施方式
被安装的文件
• MD5单向散列
• rpm --verify package_name (or -V) rpm -V检验数据包的每个文件,每次用rpm安装的包,每个数据包的文件的hash值或者初始值存在数据库中,过段时间,用-V检查数据库中得的每个文件的hash值,比对当前文件的hash值,如果不一样,就会报提示:
发行的软件包文件
• GPG公钥签名
• rpm --import(导入公钥) /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat*
• rpm --checksig pakage_file_name (or -K) rpm -k 检验数据包的每个文件
使用gpg实现对称加密
对称加密file文件
cp /etc/fstab /app/f1/
gpg -c file
ls file.gpg
在另一台主机上解密file
gpg -o file -d file.gpg
实验: 1:[root@centos7 ~]# cd /data
2:[root@centos7 /data]# cp /etc/fstab .
3:[root@centos7 /data]# gpg -c fstab 加密数据
输入口令
4:[root@centos7 /data]# ll
total 8
-rw-r--r--. 1 root root 541 Jul 9 21:23 fstab
-rw-r--r--. 1 root root 311 Jul 9 21:25 fstab.gpg
5:[root@centos7 /data]# scp fstab.gpg 192.168.1.8: 发送加密的数据到另一主机
 
6:[root@centos6 ~]# file fstab.gpg 产看文件类型,格式
fstab.gpg: data
7:[root@centos6 ~]# gpg -d fstab.gpg 解密
8:[root@centos6 ~]# gpg -o fstab fstab.gpg (-0相当于重定向,生成文件)
 
使用gpg工具实现公钥加密
在hostB主机上用公钥加密,在hostA主机上解密
在hostA主机上生成公钥/私钥对
gpg --gen-key
在hostA主机上查看公钥
cd .gnupg/ 查看生成的公钥
gpg --list-keys
在hostA主机上导出公钥到wang.pubkey
gpg -a --export -o wang.pubkey
从hostA主机上复制公钥文件到需加密的B主机上
scp wang.pubkey hostB: 如:scp wang.pubkey 172.18.56.56:/app/f1
在需加密数据的hostB主机上生成公钥/私钥对
gpg --list-keys
gpg --gen-key
在hostB主机上导入公钥
gpg --import wang.pubkey
gpg --list-keys
用从hostA主机导入的公钥,加密hostB主机的文件file,生成file.gpg
gpg -e -r wangxiaochun file -e表示加密 -r:用谁的公钥加密
file file.gpg
使用gpg工具实现公钥加密
复制加密文件到hostA主机
scp fstab.gpg hostA:
在hostA主机解密文件
gpg -d file.gpg
gpg -o file(解密的新的文件) -d file.gpg
删除公钥和私钥
gpg --delete-keys wangxiaochun 删除公钥
gpg --delete-secret-keys wangxiaochun 删除私钥
实验1 :[root@centos6 ~]# gpg --gen-key 在centos6上生成秘钥对
Please select what kind of key you want: (那种算法加密,默认RSA)
What keysize do you want? (2048) 1024 (用多少位加密,默认1024)
Key is valid for? (0) (有限期,默认十天)
Real name: wangjin (起一个用户的名字)
Email address: (邮箱)
Comment: (描述)
Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? o(0确定)
2:输入秘钥:(担心私钥被窃取,地私钥用对称秘钥加密)空口令
3:[root@centos6 ~]# cd ~/.gnupg
4:[root@centos6 ~/.gnupg]# gpg --list -keys (查看生成的公钥)
5: [root@centos6 ~/.gnupg]# gpg -a --export -o wang.pubkey (-a用ascii码的文本方式导出 -o指定文件名 wang.pubkey 是自己起的文件名)
6:[root@centos6 ~/.gnupg]#scp wang.pubkey 192.168.56.56: (传到centos7)
7:时间同步
centos6
ntpdate 172.18.0.1
vim /etc/ntp.conf
server 172.18.0.1 iburst
chkconfig ntpd on
service ntpd start
centos7
vim /etc/chrony.conf
systemctl start chronyd
systemctl is-enabled chronyd
systemctl enable chronyd
8:[root@centos7 /data]#cp /root/wang.pubkey .
9:[root@centos7 /data]# gpg -e -r wangjin fstab -e表示加密 -r:用谁的公钥加密
10:[root@centos7 /data]#scp fstab.gpg 192.168.1.8:
11:[root@centos6 ~]#gpg -o -d fstab.gpg 解密生成文件
 
CA和证书 :系统中内置根证书,免费申请证书的网站
 
Base64:A-Z a-z 0-9 + / 共64位
 
PKI(公共的秘钥体系 公钥,私钥,证书 实现): Public Key Infrastructure
签证机构:CA(Certificate Authority) 证书颁发机构,证明通讯双方是合法连接的
注册机构:RA
证书吊销列表:CRL
证书存取库:
X.509:定义了证书的结构以及认证协议标准
版本号 序列号 签名算法 颁发者 有效期限
主体名称 主体公钥 CRL分发点 扩展信息 发行者签名
 
证书获取
证书类型:
证书授权机构的证书 (CA)
服务器 (淘宝或天猫等,给计算机用)
用户证书 (用户用)
获取证书两种方法:
• 使用证书授权机构
生成签名请求(csr)
将csr发送给CA
从CA处接收签名
• 自签名的证书 (根CA)
自已签发自己的公钥
安全协议 https 底层是依赖LLS协议
1 SSL(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
功能:机密性,认证,完整性,重放保护
2 两阶段协议,分为握手阶段和应用阶段
1握手阶段(协商阶段):客户端和服务器端认证对方身份(依赖于PKI体系,利用数字证书 进行身份认证),并协商通信中使用的安全参数、密码套件以及主密钥。后续通信使用的所有密钥都是通过MasterSecret生成。
2 应用阶段:在握手阶段完成后进入,在应用阶段通信双方使用握手阶段协商好的密钥进行安全通信
 
SSL/TLS
Handshake协议:包括协商安全参数和密码套件、服务器身份认证(客户端身份认证可选)、密钥交换
ChangeCipherSpec 协议:一条消息表明握手协议已经完成
Alert 协议:对握手协议中一些异常的错误提醒,分为fatal和warning两个级别,fatal类型错误会直接中断SSL链接,而warning级别的错误SSL链接仍可继续,只是会给出错误警告
Record 协议:包括对消息的分段、压缩、消息认证和完整性保护、加密等
HTTPS 协议:就是“HTTP 协议”和“SSL/TLS 协议”的组合。HTTP overSSL”或“HTTP over TLS”,对http 协议的文本数据进行加密处理后,成为二进制形式传输
 
 
文字描述:client(客户端) server(服务器端) ca
1:https://server (客户端发请求到服务器端)
2:server-----client (服务器端传自己的证书到客户端用CA的私钥签名服务器的公钥,)
Sca(Pserver)+CA+server+expir (证书签名,包括CA的证书,有效期之类的)
3:client (客户端信任CA,所有提前装系统的时候拿到CA的公钥)
Pca( Sca(Pserver))(用CA的公钥进行解密)--------Pserver(得到服务器的公钥)
4:client 客户端生成一个随机数 random 12345
5:Pserver(12345)用获取的服务器的公钥把12345进行加密-----------server
6:Server(Pserver(12345))(服务器用自己的私钥解密获取12345)
7:client
12345(data)《-----》 服务器端和客户端共同获得12345,以此传输数据
 
OpenSSL
OpenSSL:开源项目
三个组件:
openssl: 多用途的命令行工具,包openssl
libcrypto: 加密算法库,包openssl-libs
libssl:加密模块应用库,实现了ssl及tls,包nss
openssl命令:
两种运行模式:交互模式和批处理模式
openssl version:程序版本号
标准命令、消息摘要命令、加密命令
标准命令:
enc, ca, req, ...
1:对称加密:
工具:openssl enc, gpg
算法:3des, aes, blowfish, twofish
2:enc命令:
帮助:man enc
加密:openssl enc -e -des3 -a -salt -in testfile-out testfile.cipher
(-e加密 -des3=3DES 对称秘钥的加密算法; -a=bese64编码 -salt加盐,盐就是随机数
解密:openssl enc -d -des3 -a -salt –in testfile.cipher-out testfile
eg:[root@centos7 ~/data]# openssl enc -e -des3 -a -salt -in fstab -out fstab.des3
[root@centos7 ~/data]# openssl enc -d -des3 -a -salt -in fstab.des3 -out fstab.des2
openssl ?
3:单向加密:
工具:md5sum, sha1sum, sha224sum,sha256sum…
openssl dgst
4:dgst命令:
帮助:man dgst
openssl dgst -md5 [-hex默认] /PATH/SOMEFILE
openssl dgst -md5 testfile
md5sum /PATH/TO/SOMEFILE
eg:[root@centos7 ~/data]# openssl dgst sha1 fstab
sha1: No such file or directory
MD5(fstab)= ea10eb7312d3130f651eef33b184e79f
[root@centos7 ~/data]# openssl dgst -sha1 fstab
SHA1(fstab)= 69f52e22db64aaec6131513ff9fcb41791d80e80 16进制数
[root@centos7 ~/data]# sha1sum fstab
69f52e22db64aaec6131513ff9fcb41791d80e80 fstab 16进制数
 
5:MAC: Message Authentication Code,单向加密的一种延伸应用,用于实现
网络通信中保证所传输数据的完整性机制
CBC-MAC
HMAC:使用md5或sha1算法
 
6:生成用户密码:
passwd命令:
帮助:man sslpasswd
openssl passwd -1 -salt SALT(最多8位) # -1是基于MD5加密算法
openssl passwd -1 –salt centos
eg:[root@centos7 ~/data]# openssl passwd -1 #只要定义了盐,那么相同的口令生成密码一样

相关文章:

验证码:
移动技术网