随着互联网的高速普及和发展,已经彻底成为我们生活中不可缺少的一部分,它不仅提升了我们的工作效率,还成为人与人沟通必不可少的桥梁。众所周知,互联网这把双刃剑有时候也会给我们带来一些麻烦,而这些麻烦可大可小,在数据为王的今天,面对各种安全隐患我们应该如何应对呢?

###############################################

一、数据传输过程中的安全隐患

二、如何解决数据传输过程中的安全性

三、https保证数据安全传输

四、OpenSSL简介

五、openssl实现私有CA

六、OpenSSH服务 ###############################################


一、数据传输过程中的安全隐患

机密性

使用ftp、http、smtp、telnet这些协议进行传输的数据是明文,任何人监听即可截获数据,如图:

PKI相关概念及OpenSSL_PKI相关概念及OpenSSL

完整性

数据传输过程中别人篡改,如图:

PKI相关概念及OpenSSL_PKI相关概念及OpenSSL_02

身份验证

监听者伪装PAUL身份与KEBO通信,如图:

PKI相关概念及OpenSSL_PKI相关概念及OpenSSL_03


二、如何解决数据传输过程中的安全性

机密性

使用一种转换规则将明文转换为密文传输,接收方使用同样规则转换将密文转换为明文,如图:

PKI相关概念及OpenSSL_PKI相关概念及OpenSSL_04

转换算法:密钥(就算对方知道转换算法,不知道秘钥依然无法还原plaintext)

对称加密:加解密同一个密匙,算法计算速度快,安全性完全依赖于密匙,

   缺点:通信对象很多的情况下,无法有效的对密钥进行管理。

   优点:算法计算速度快。

常见类型有:

   DES        Data Encrption Standard 56bit(计算机暴力破解)

   3DES      三次DES(固然可以解决一部分现有问题)

   AES        高级加密标准    128bit 密钥

   AES192    AES256    AES512    越长速度越慢,安全性越高

   Blowfish

   大小相同的数据库(再进行加密)

完整性

发送方提取元数据特征码,并且附加在元数据后面,接收方接收到数据之后进行同样的操作提取特征码,对比两个特征是否一致,来判断传输过程中元数据是否被修改如图:

PKI相关概念及OpenSSL_PKI相关概念及OpenSSL_05

单向加密算法的特点:

   1、输入一样,输出必然相同

   2、雪崩效应:输入的微小改变,将会引起结果的巨大改变

   3、定长输出:无论原始数据多大,结果大小都是相同的(定长输出)

   4、不可逆:无法根据特征码还原源数据

常见类型有:

   MD4

   MD5

   SHA1

   SHA192    SHA256    SHA384    输出长度

   CRC-32循环冗余校验码校验用的,输入不一样,有可能输出一样

身份验证

   非对称加密算法中,发送方用自己的私钥加密数据,可以实现身份验证,如图:PKI相关概念及OpenSSL_PKI相关概念及OpenSSL_06

非对称加密算法的特点

   1、公钥来自于私,钥公钥加密私钥解密。

   2、拿别人公钥成功解密可证明这个人的身份,因为只有加密者的公钥可以解密。

   3、发送方用自己的私钥加密数据,可以实现身份验证

   缺点:公钥加密算法很少用来加密数据,速度太慢,通常用来实现身份认证。

   优点:有效解决的对密钥管理的问题。

证书颁发机构如何签署证书

首先CA对证书申请者的姓名、地址、公钥等相关数据提取特征码,之后CA用自己的私钥对这段特征码进行加密,这段加密的特征码又称数字签名,申请者数据和CA的数据签名共同组成证书。

PKI相关概念及OpenSSL_PKI相关概念及OpenSSL_07


证书如何确保公钥的可靠性:

       1、接收方有CA的证书,因此可以得到可靠的CA公钥。

       2、接收方使用CA公钥解密发送方证书中的特征码。

       3、如果可以机密,则可以确认此证书确实是CA签署的(信任具有传递性)。

       4、接收方对证书中数据部分提取特征码,对比与机密特征码是否一致。

       5、如果一致则说明姓名、地址、公钥等信息完全可靠。

机密性+完整性+身份验证

PKI相关概念及OpenSSL_PKI相关概念及OpenSSL_08

PAUL收到数据,用对称秘钥机密实现机密性,用KOBE公钥机密特征码实现其身份验证,对元数据重新提取特征码,对比机密解密出来的特征码是否一致实现完整性。

注释:以上所有内容称为PKI,目前流行的TLS/SSL均使用 x509证书格式。

          PKI的第二种实现叫做OpenGPG,也是一种证书管理机制。


三、https保证数据安全传输

Secure Socket Layer

    它是https得以实现的一个基础,它本身只是一个库,应用层和传输层之间,当应用层(http)数据到达传输层(tcp)之前,调用SSL加密数据,从此http摇身一变成为https,smtp成为smtps,众多明文协议都可以通过调用SSL实现密文传输,但是https和http仍然是两种完全不同的协调,虽然他们上层的功能是一样的。

https通信过程

PKI相关概念及OpenSSL_PKI相关概念及OpenSSL_09


四、OpenSSL简介

为网络通信提供安全及数据完整性的一种安全协议,囊括了主要的密码算法、常用的密钥和证书封装管理功能以及SSL协议,并提供了丰富的应用程序供测试或其它目的使用,OpenSSL是SSL的开源实现。

文件结构

libcrpto    通用加密库

libssl         TLS/SSL的实现

                基于会话的、实现了身份认证、数据机密性和会话完整性的TLS/SSL库

opensll     多用途命令行工具

                实现私有证书颁发机

加解密数据

PKI相关概念及OpenSSL_PKI相关概念及OpenSSL_10

提取文件特征码

PKI相关概念及OpenSSL_PKI相关概念及OpenSSL_11

生成用户的密码串

PKI相关概念及OpenSSL_PKI相关概念及OpenSSL_12生成随机数

PKI相关概念及OpenSSL_PKI相关概念及OpenSSL_13


五、openssl实现私有CA

创建CA

1、修改配置文件vim /etc/pki/tls/openssl.cnf 如图:

PKI相关概念及OpenSSL_PKI相关概念及OpenSSL_142、生成一对密钥(公钥是从私钥中提取的)

PKI相关概念及OpenSSL_PKI相关概念及OpenSSL_15

3、生成自签证书

PKI相关概念及OpenSSL_PKI相关概念及OpenSSL_16

3、准备目录

mkdir certs newcerts crl
touch index.txt
touch serial
echo 01 > serial

客户端证书颁发请求

每一种应用都有自己的证书,刚才的秘钥是CA用的,此处用同一台机器模拟客户端,如图:

PKI相关概念及OpenSSL_PKI相关概念及OpenSSL_17

CA签署证书

1、签署此证书后传送给客户端

PKI相关概念及OpenSSL_PKI相关概念及OpenSSL_18

查看数据库是否签署成功

PKI相关概念及OpenSSL_PKI相关概念及OpenSSL_19


六、OpenSSH服务

openssh是telnet的开源密文实现,telnet为TCP/23号端口,ssh为TCP/22号端口,OpenSSH即使软件,又是协议,常见版本有sshv1、sshv1,因v1无法有效拒绝中间人攻击,所以目前v2版较为常见。

ssh --> telnet如何实现认证加密

1、基于口令的认证(登录普通用户,再su到root)

PKI相关概念及OpenSSL_PKI相关概念及OpenSSL_20

2、基于秘钥的认证

PKI相关概念及OpenSSL_PKI相关概念及OpenSSL_21

配置文件

    客户端     ssh       /etc/ssh/ssh_config

    服务器    sshd     /etc/ssh/sshd_config

基于口令的认证

远程登录

PKI相关概念及OpenSSL_PKI相关概念及OpenSSL_22

以非登陆的方式执行远程主机命令

PKI相关概念及OpenSSL_PKI相关概念及OpenSSL_23

基于秘钥的认证

1、生成一对密钥

PKI相关概念及OpenSSL_PKI相关概念及OpenSSL_24

命令默认创建路径和文件

PKI相关概念及OpenSSL_PKI相关概念及OpenSSL_25

2、使用ssh-copy-id 工具公钥传输至服务器端某用户的家目录下的.ssh/authorized_keys文件中,再次登录无需密码。

PKI相关概念及OpenSSL_PKI相关概念及OpenSSL_26

3、使用scp手动完成复制公钥至目标主机操作,在没有ssh-copy-id命令情况下使用,如图:

PKI相关概念及OpenSSL_PKI相关概念及OpenSSL_27

总结:

   1、密码应该经常换;切足够复杂

   2、使用非默认端口

   3、限制登录客户地址

   4、禁止管理员直接登录

   5、使用基于秘钥的认证

   6、仅允许有限用户登陆

   7、禁止使用版本1