Linux加密、解密安全通信详解

密码算法和协议:四大类
    对称加密:用于加密任意大小的数据块数据内容,加密方和解密方使用的是同一个密码
    公钥加密:(非对称加密)加密和解密使用的是不同的密码,有公钥和私钥,密钥是成对出现的,公钥是从私钥中提前出来的,私钥是很长的,私钥加密速度比较慢。公钥是公开的,公钥加密需要用私钥解密,用私钥加密得用公钥解密。
    单向加密:数据完整性算法:抽取数据的特征码,且在二次抽取后和此前的抽取进行比较,以验证数据的确没有被人篡改过的。
    认证协议:用基于某种特性的算法来完成通信双方的真实性。

对称加密

常见的算法:DES(56位密钥)数据加密标准、3DES、AES(128、192、256、384、512位密钥)高级加密标准、Blowfish、Twofish、IDEA、RC6、CAST5。。。

特性:

1.加密、解密使用同一个口令(密钥);

2.将明文分隔成固定大小的块,逐个进行加密;

简单通信过程:当用户A和B通信时,需要提供一个密钥,A和C通信时也需要提供一个密钥,也即任何人之间通信都需要提供密钥,且在两个人第一次通信时,由于互相都不知道对方的密钥,在网络上传输密钥时是明文传输的,密钥安全性不能得到保证。

缺陷:

1.密钥过多;

2.密钥传输;

密钥交换、身份验证、数据完整性都不能得到保证。

公钥加密也叫非对称加密

常见的算法:RSA(即可用来加密也可用来做身份验证)、DSA(只能做身份验证)、EIGmail

加密和解密不是使用同一个密钥,密钥是成对出现的

密钥:public key公钥,secret key私钥

使用公钥加密只能用与之配对的私钥解密,使用私钥加密也只能用与之配对的私钥加密。

通常用于

身份认证

密钥交换(密钥传送)   IKE(Internet Key Exchange)  互联网密钥交换

常见DH算法

Diffie-Hellman(以下简称DH)密钥交换是一个特殊的密钥交换的方法。DH可以让双方在完全缺乏对方(私有)信息的前提条件下通过不安全的信道达成一个共享的密钥。此密钥用于对后续信息交换进行对称加密。

单向加密

常见的加密工具:MD5(128位)、SHA1(160位)、SHA256、SHA384、SHA512

通过提取数据指纹(特征码)可以实现数据完整性校验

特性

定长输出

雪崩效应(输入条件的微小变化会产生输出条件的巨大变化)

在身份验证、数据完整性、数据保密性都得到保证的一个通信过程。以上三种加密方式都使用到了

以AA和BB通信为例

首先AA把要通信的数据用单向加密计算后得到特征码,用AA的私钥把特征码加密都附加在通信数据的尾部,AA在使用一种算法(对称加密)把整个数据进行加密生成一个字串,AA用BB的公钥把加密的密码加密放在这段字串后面一并发给BB。

BB收到数据后,用自己的私钥把加密的密码解密,再使用解密后的密码解密这段字串,解密后用AA的公钥把加密的特征码解密,再使用相同的单向加密计算这段数据的特征码,把计算出来的特征码和发送过来的特征码对比,一样则接收数据,不一样则放弃接收数据。

简单图示如下:

这里最重要的一步就是公钥的获取,如何得到对方的公钥,又如何得知一定是对方的公钥?

此时就需要依赖于CA,每个人所发的公钥对方无法验证其真假,就像你说自己是xx,那怎么证明你就是xx呢?生活中我们都是通过***来验证的,但是***不能你自己做一张印上一个名字,就说自己叫xx,需要提供一张由公安部门所颁发的权威的***才能得到认可,因为大家是信任公安部门的权威性的。这里把公安部门称为第三方机构也即是这里的CA。AA和BB通信之前要向CA去注册认证自己的身份。

AA向CA申请给自己发一个证(里面包含公钥、名字、有效期等CA会使用单向加密计算这些数据特征码,CA再用自己的私钥加密这段特征码并附加在证书的后面),AA就把自己的证给BB,那此时BB如何去验证AA发来的证书不是伪证书?则BB需要信任CA,才能信任CA所颁发的证书,BB使用CA的公钥解密这段特征码,再用相同的单向加密计算这些数据特征码,比较两个特征码是否一致,此时CA的证书(公钥)从何而来呢?CA是自己给自己给发证书的。有的比较通用的证书在操作系统上都内置有,不需要通过网络传输。还有一些电子商务网站,你信任这些网站,你访问时就安装它的证书。且需要提供有公信力CA是需要向根CA注册申请,都是需要比较高的金额。

如果在公司内部用,只需要自己创建一个私有CA,在公司私有网络中使用。

还有一种特殊情况,如果说私钥丢失了,该如何处理呢?

如何私钥丢了,必须让获得公钥的主机知道公钥被废了,因此CA机构需要维持一张列表(证书吊销列表),一旦私钥丢弃,则向CA申请自己的证书作废。CA机构就把丢失私钥的主机放到证书吊销列表中。

则通信时,还需要增加一步就是通信的对方收到数据后,需要到CA机构查看发送方是否在证书吊销列表中。(注意互联网上绝大部分通信者都没有这样做,因此互联网上通信还是存在安全隐患的)

一个证书颁发机构加上证书吊销列表等等形成了互联网安全通信的基本框架,这个基本框架也叫PKI(公钥基础设施)。

在用户注册证书的时候,就需要到第三方颁发机构申请证书,向RA(注册机构)申请,有CA做签名认证。证书是有很多种格式的。由ITU-T组织所定义的证书格式规范称为x.509(主要定义了关于证书结构和认证协议的标准)。

x.509标准有三个,第1、2、3版本,x509是基于公钥密码体制和数字签名的服务,在众多通信模型中都会被使用到(IP安全、TLS/SSL和S/MIME(安全地址邮件通信模型))。

最新证书所包含的内容:

证书的版本号、证书的序列号、算法参数、发行者的名称、有效期限、主体名称(证书的拥有者名字[用户使用的就是用户名,服务器使用的是主机名不能是ip])、公钥(对方提供的)、发行者的唯一ID、主体的唯一ID、。。、CA的签名(验证证书合法性)

一个证书在签署之前,由请求者自己先发送一个证书签署请求按照特定格式做好自己能填的信息(主体名称、公钥等)其他内容则留空提交给CA,由CA把其他内容都填充完,并且自己做好签名,就可以发给请求者。

PKI公钥基础设施,是一种规范,任何遵循此种规范组织或架构等都认为是遵循PKI标准的,PKI有下面几部分内容组成:

签证机构:CA

注册机构:RA

证书吊销列表:CRL

证书存取库:用来检查证书是否存在的接口

PKI最前端是证书存取库,用户通过证书存取库获取证书,而后内容是证书的注册机构、后是签证机构。

用户通过存取库与RA交互,RA与CA交互,CA前端有一个证书吊销列表,用户通过存取库与证书吊销列表进行交互。

后面再讲解四大类型的实现过程和私有CA的创建。如果有什么错误、欢迎大家指正

时间: 2024-08-05 07:07:10

Linux加密、解密安全通信详解的相关文章

加密 解密过程详解及openssl自建CA  

            加密 解密过程详解及openssl自建CA 为了数据信息能够安全的传输要求数据要有一定的安全性那么数据的安全性包含哪些方面的特性呢?    NIST(美国信息安全署)做了如下的定义:    保密性:       1,数据的保密性 指的是数据或隐私不向非授权者泄漏                   2,隐私性  信息不被随意的收集    完整性:       1,数据的的完整性:信息或程序只能被指定或授权的方式改变不能被随意的             修改        

https加密解密过程详解

在日常互联网浏览网页时,我们接触到的大多都是 HTTP 协议,这种协议是未加密,即明文的.这使得 HTTP 协议在传输隐私数据时非常不安全.因此,用于对 HTTP 协议传输进行数据加密,即 HTTPS . 那么我们再访问https网站时,大家知道https是安全数据加密传输,但是如果让大家仔细描述从访问打开一个网站.到数据整个加解密的流程,估计有很多朋友(可能哈)很难清晰的表达出来吧. 包括我自己描述的也会模拟两可.在此非常有必要详解下整个流程. 要点: https协议对传输内容进行加密,具有更

linux下scp命令详解

scp是 secure copy的缩写, scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令.linux的scp命令可以在linux服务器之间复制文件和目录. scp命令的用处: scp在网络上不同的主机之间复制文件,它使用ssh安全协议传输数据,具有和ssh一样的验证机制,从而安全的远程拷贝文件. scp命令基本格式: scp [-1246BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file] [-l limit] [-o s

linux ./configure 的参数详解

转载自http://blog.csdn.net/zjt289198457/article/details/6918656 linux ./configure 的参数详解   ./configure 该脚本将运行一些测试来猜测一些系统相关的变量并检测你的操作   系统的特殊设置,并且最后在制做树中创建一些文件以记录它找到了什么. 缺省设置将制作服务器和应用程序,还有所有只需要C编译器的客户端程序和接口. 缺省时所有文件都将安装到   /usr/local/pgsql.         你可以通过给

Linux网络配置知识点详解

Linux网络配置知识点详解 一.Linux网络配置 1.网络配置文件 (1)/etc/sysconfig/network-scripts/ifcfg-en0xxx文件 用来指定服务器上的网络配置信息 (2)/etc/hostname文件 包含了Linux系统的主机名 (3)/etc/resolv.conf文件 文件配置了DNS客户,包含了主机的域名搜索顺序和DNS服务器地址 (4)/etc/hosts IP地址和主机名映射 (5)/etc/host.conf 和主机名解析顺序 (6)/etc/

(转)Linux下PS命令详解

(转)Linux下PS命令详解 整理自:http://blog.chinaunix.net/space.php?uid=20564848&do=blog&id=74654 要对系统中进程进行监测控制,查看状态,内存,CPU的使用情况,使用命令:/bin/ps (1) ps :是显示瞬间进程的状态,并不动态连续: (2) top:如果想对进程运行时间监控,应该用 top 命令: (3) kill 用于杀死进程或者给进程发送信号: (4) 查看文章最后的man手册,可以查看ps的每项输出的含义

Linux下chkconfig命令详解

Linux下chkconfig命令详解 chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息.谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接. 使用语法:chkconfig [--add][--del][--list][系统服务] 或 chkconfig [--level <等级代号>][系统服务][on/off/reset] chkconfig在没有参数运行时,显示用法.如果加上服务名,那么就检查这个服务是否在当前运行级启动.如果是,返

转载的 Linux下chkconfig命令详解

Linux下chkconfig命令详解 chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息.谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接. 使用语法: chkconfig [--add][--del][--list][系统服务] 或 chkconfig [--level <等级代号>][系统服务][on/off/reset] chkconfig 在没有参数运行时,显示用法.如果加上服务名,那么就检查这个服务是否在当前运行级启动.如果是

Linux 性能测试工具Lmbench详解

Linux 性能测试工具Lmbench详解 2010-06-04 16:07 佚名 评测中心 字号:T | T Lmbench 是一套简易可移植的,符合ANSI/C 标准为UNIX/POSIX 而制定的微型测评工具.一般来说,它衡量两个关键特征:反应时间和带宽.Lmbench 旨在使系统开发者深入了解关键操作的基础成本. AD:2014WOT全球软件技术峰会北京站 课程视频发布 Linux 性能测试工具Lmbench 是一套简易可移植的,符合ANSI/C 标准为UNIX/POSIX 而制定的微型