欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

加密和安全

程序员文章站 2022-03-28 18:13:03
墨菲定律 墨菲定律:一种心理学效应,是由爱德华·墨菲(Edward A. Murphy)提出的, 原话:如果有两种或两种以上的方式去做某件事情,而其中一种选择方式将导 致灾难,则必定有人会做出这种选择 主要内容: 任何事都没有表面看起来那么简单 所有的事都会比你预计的时间长 会出错的事总会出错 如果 ......
墨菲定律
墨菲定律:一种心理学效应,是由爱德华·墨菲(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 #只要定义了盐,那么相同的口令生成密码一样
Pa
(0)
打赏 加密和安全 微信扫一扫

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

加密和安全
验证码: 加密和安全