随着互联网的高速普及和发展,已经彻底成为我们生活中不可缺少的一部分,它不仅提升了我们的工作效率,还成为人与人沟通必不可少的桥梁。众所周知,互联网这把双刃剑有时候也会给我们带来一些麻烦,而这些麻烦可大可小,在数据为王的今天,面对各种安全隐患我们应该如何应对呢?
###############################################
一、数据传输过程中的安全隐患
二、如何解决数据传输过程中的安全性
三、https保证数据安全传输
四、OpenSSL简介
五、openssl实现私有CA
六、OpenSSH服务 ###############################################
一、数据传输过程中的安全隐患
机密性
使用ftp、http、smtp、telnet这些协议进行传输的数据是明文,任何人监听即可截获数据,如图:
完整性
数据传输过程中别人篡改,如图:
身份验证
监听者伪装PAUL身份与KEBO通信,如图:
二、如何解决数据传输过程中的安全性
机密性
使用一种转换规则将明文转换为密文传输,接收方使用同样规则转换将密文转换为明文,如图:
转换算法:密钥(就算对方知道转换算法,不知道秘钥依然无法还原plaintext)
对称加密:加解密同一个密匙,算法计算速度快,安全性完全依赖于密匙,
缺点:通信对象很多的情况下,无法有效的对密钥进行管理。
优点:算法计算速度快。
常见类型有:
DES Data Encrption Standard 56bit(计算机暴力破解)
3DES 三次DES(固然可以解决一部分现有问题)
AES 高级加密标准 128bit 密钥
AES192 AES256 AES512 越长速度越慢,安全性越高
Blowfish
大小相同的数据库(再进行加密)
完整性
发送方提取元数据特征码,并且附加在元数据后面,接收方接收到数据之后进行同样的操作提取特征码,对比两个特征是否一致,来判断传输过程中元数据是否被修改如图:
单向加密算法的特点:
1、输入一样,输出必然相同
2、雪崩效应:输入的微小改变,将会引起结果的巨大改变
3、定长输出:无论原始数据多大,结果大小都是相同的(定长输出)
4、不可逆:无法根据特征码还原源数据
常见类型有:
MD4
MD5
SHA1
SHA192 SHA256 SHA384 输出长度
CRC-32循环冗余校验码校验用的,输入不一样,有可能输出一样
身份验证
非对称加密算法中,发送方用自己的私钥加密数据,可以实现身份验证,如图:
非对称加密算法的特点
1、公钥来自于私,钥公钥加密私钥解密。
2、拿别人公钥成功解密可证明这个人的身份,因为只有加密者的公钥可以解密。
3、发送方用自己的私钥加密数据,可以实现身份验证
缺点:公钥加密算法很少用来加密数据,速度太慢,通常用来实现身份认证。
优点:有效解决的对密钥管理的问题。
证书颁发机构如何签署证书
首先CA对证书申请者的姓名、地址、公钥等相关数据提取特征码,之后CA用自己的私钥对这段特征码进行加密,这段加密的特征码又称数字签名,申请者数据和CA的数据签名共同组成证书。
证书如何确保公钥的可靠性:
1、接收方有CA的证书,因此可以得到可靠的CA公钥。
2、接收方使用CA公钥解密发送方证书中的特征码。
3、如果可以机密,则可以确认此证书确实是CA签署的(信任具有传递性)。
4、接收方对证书中数据部分提取特征码,对比与机密特征码是否一致。
5、如果一致则说明姓名、地址、公钥等信息完全可靠。
机密性+完整性+身份验证
PAUL收到数据,用对称秘钥机密实现机密性,用KOBE公钥机密特征码实现其身份验证,对元数据重新提取特征码,对比机密解密出来的特征码是否一致实现完整性。
注释:以上所有内容称为PKI,目前流行的TLS/SSL均使用 x509证书格式。
PKI的第二种实现叫做OpenGPG,也是一种证书管理机制。
三、https保证数据安全传输
Secure Socket Layer
它是https得以实现的一个基础,它本身只是一个库,应用层和传输层之间,当应用层(http)数据到达传输层(tcp)之前,调用SSL加密数据,从此http摇身一变成为https,smtp成为smtps,众多明文协议都可以通过调用SSL实现密文传输,但是https和http仍然是两种完全不同的协调,虽然他们上层的功能是一样的。
https通信过程
四、OpenSSL简介
为网络通信提供安全及数据完整性的一种安全协议,囊括了主要的密码算法、常用的密钥和证书封装管理功能以及SSL协议,并提供了丰富的应用程序供测试或其它目的使用,OpenSSL是SSL的开源实现。
文件结构
libcrpto 通用加密库
libssl TLS/SSL的实现
基于会话的、实现了身份认证、数据机密性和会话完整性的TLS/SSL库
opensll 多用途命令行工具
实现私有证书颁发机
加解密数据
提取文件特征码
生成用户的密码串
五、openssl实现私有CA
创建CA
1、修改配置文件vim /etc/pki/tls/openssl.cnf 如图:
3、生成自签证书
3、准备目录
mkdir certs newcerts crl touch index.txt touch serial echo 01 > serial
客户端证书颁发请求
每一种应用都有自己的证书,刚才的秘钥是CA用的,此处用同一台机器模拟客户端,如图:
CA签署证书
1、签署此证书后传送给客户端
查看数据库是否签署成功
六、OpenSSH服务
openssh是telnet的开源密文实现,telnet为TCP/23号端口,ssh为TCP/22号端口,OpenSSH即使软件,又是协议,常见版本有sshv1、sshv1,因v1无法有效拒绝中间人攻击,所以目前v2版较为常见。
ssh --> telnet如何实现认证加密
1、基于口令的认证(登录普通用户,再su到root)
2、基于秘钥的认证
配置文件
客户端 ssh /etc/ssh/ssh_config
服务器 sshd /etc/ssh/sshd_config
基于口令的认证
远程登录
以非登陆的方式执行远程主机命令
基于秘钥的认证
1、生成一对密钥
命令默认创建路径和文件
2、使用ssh-copy-id 工具公钥传输至服务器端某用户的家目录下的.ssh/authorized_keys文件中,再次登录无需密码。
3、使用scp手动完成复制公钥至目标主机操作,在没有ssh-copy-id命令情况下使用,如图:
总结:
1、密码应该经常换;切足够复杂
2、使用非默认端口
3、限制登录客户地址
4、禁止管理员直接登录
5、使用基于秘钥的认证
6、仅允许有限用户登陆
7、禁止使用版本1