1、加密解密技术基础

(1)进程通信
传输层协议有TCP,UDP,SCTP等,端口号port表示进程地址,进程向内核注册独占使用某端口。
同一主机上的进程间通信方式:进程间通信(IPC), 消息队列(message queue),共享内存(shm), 旗语(semerphor)。
不同主机上的进程间通信:socket,远程过程调用(RPC)。
监听模式:LISTEN (ip:port)
(2)安全及攻击
安全的目标:保密性(confidentiality)、完整性(integrity)、可用性(availability)。
攻击类型:
1)威胁保密性的攻击:窃听、通信量分析;
2)威胁完整性的攻击:更改、伪装、重放、否认;
3)威胁可用性的攻击:拒绝服务(DoS);
解决方案:技术(加密和解密)、服务(用于抵御攻击的服务,也即是为了上述安全目标而特地设计的安全服务)。
(3)加密和解密
传统加密方法:替代加密方法、置换加密方法;
现代加密方法:现代块加密方法。
服务:认证机制、访问控制机制。
密钥算法和协议分为四类:对称加密、公钥加密、单向加密、认证协议。
(4)加密算法和协议
1)对称加密:加密和解密使用同一个密钥;
DES:Data Encryption Standard;
3DES:Triple DES;
AES:Advanced Encryption Standard,(128bits, 192bits, 256bits, 384bits);
Blowfish、Twofish、IDEA、RC6、CAST5;
特性:

  1. 加密、解密使用同一个密钥;
  2. 将原始数据分割成为固定大小的块,逐个进行加密;

缺陷:

  1. 密钥过多;
  2. 密钥分发困难;

2)公钥加密:密钥分为公钥与私钥;
公钥:从私钥中提取产生,可公开给所有人,pubkey;
私钥:通过工具创建,使用者自己留存,必须保证其私密性,secret key;
特点:用公钥加密的数据,只能使用与之配对儿的私钥解密;反之亦然。
用途:
数字签名:主要在于让接收方确认发送方的身份;
密钥交换:发送方用对方公钥加密一个对称密钥,并发送给对方;
数据加密:不常用,比对称加密要慢3个数量级;
算法:RSA, DSA, ELGamal;
DSS: Digital Signature Standard
DSA:Digital Signature Algorithm
3)单向加密:即提出数据指纹,只能加密,不能解密;
特性:定长输出、雪崩效应;
功能:完整性;
算法:
MD5:Message Digest 5,128bits;
SHA1:Secure Hash Algorithm 1,160bits;还有SHA224,SHA256,SHA384,SHA512。
4)密钥交换: IKE(Internet Key Exchange)

  1. 公钥加密;
  2. DH(Deffie-Hellman,迪菲-赫尔曼),ECDH(椭圆曲线DH),ECDHE(临时椭圆曲线DH);

DH算法过程:

  1. A:p, g
    B:p, g
  2. A:x
    –> p^x%g ==> B
    B:y
    –> p^y%g ==> A
  3. A:(p^ y%g)^ x=p^yx%g
    B:(p^ x%g)^ y=p^xy%g

(5)PKI:Public Key Infrastructure,公钥基础设施
分为以下组件:
签证机构(CA)、注册机构(RA)、证书吊销列表(CRL)、证书存取库。
X.509v3定义了证书的结构以及认证协议标准:版本号、序列号、签名算法ID、发行者名称、有效期限、主体名称、主体公钥、发行者的惟一标识、主体的惟一标识、扩展、发行者的签名;

2、SSL

(1)SSL简介
SSL(Secure sockets Layer,安全套接字层),是Netscape于1994年提出的,共有V1.0,V2.0,V3.0版本。TLS(Transport Layer Security,传输层安全),是IETF于1999年提出的,共有V1.0,V1.1,V1.2,V1.3版本。SSL V3.0版本被发现有重大漏洞,现在已基本不使用,现在使用的都是TLS。
SSL的分层设计:

  1. 最底层:基础算法原语的实现,aes, rsa, md5
  2. 向上一层:各种算法的实现;
  3. 再向上一层:组合算法实现的半成品;
  4. 用各种组件拼装而成的各种成品密码学协议软件;

SSL协议的开源实现是OpenSSL,OpenSSL由三部分组成:libencrypto库(主要由开发者使用),libssl库(主要由开发者使用)和openssl多用途命令行工具。http + ssl --> https,Linux系统上的安全协议:OpenSSL(ssl协议的开源实现), GPG(pgp协议的开源实现)。
(2)SSL会话
SSL会话主要三步:
1)客户端向服务器端索要并验正证书;
2)双方协商生成“会话密钥”;
3)双方采用“会话密钥”进行加密通信;
SSL会话过程:
第一阶段:ClientHello,发送以下内容:
支持的协议版本,比如tls 1.2;
客户端生成一个随机数,稍后用户生成“会话密钥”;
支持的加密算法,比如AES、3DES、RSA;
支持的压缩算法;
第二阶段:ServerHello:
确认使用的加密通信协议版本,比如tls 1.2;
服务器端生成一个随机数,稍后用于生成“会话密钥”
确认使用的加密方法;
服务器证书;
第三阶段:
验证服务器证书,在确认无误后取出其公钥;(验证以下内容:发证机构、证书完整性、证书持有者、证书有效期、吊销列表);
发送以下信息给服务器端:
一个随机数;
编码变更通知,表示随后的信息都将用双方商定的加密方法和密钥发送;
客户端握手结束通知;
第四阶段:
收到客户端发来的第三个随机数pre-master-key后,计算生成本次会话所有到的“会话密钥”;
向客户端发送如下信息:
编码变更通知,表示随后的信息都将用双方商定的加密方法和密钥发送;
服务端握手结束通知;

3、OpenSSL

(1)OpenSSL命令
OpenSSL有众多子命令,分为三类:标准命令、消息摘要命令(dgst子命令)和加密命令(enc子命令)。
标准命令: enc, ca, req, genrsa, …
(2)各种加密算法及工具
1)对称加密:
工具:openssl enc, gpg
支持的算法:3des, aes, blowfish, towfish
enc命令:
加密:~]# openssl enc -e -des3 -a -salt -in fstab -out fstab.ciphertext
解密:~]# openssl enc -d -des3 -a -salt -out fstab -in fstab.ciphertext
2)单向加密:
工具:openssl dgst, md5sum, sha1sum, sha224sum, …
dgst命令:~]# openssl dgst -md5 /PATH/TO/SOMEFILE
3)生成用户密码:
工具:passwd, openssl passwd
命令:openssl passwd -1 -salt SALT
4)生成随机数:
工具:openssl rand
~]# openssl rand -hex NUM
~]# openssl rand -base NUM
5)公钥加密解密:
算法:RSA,ELGamal
工具:openssl rsautl, gpg
6)数字签名:
算法:RSA, DSA, ELGamal
工具:openssl rsautl, gpg
7)密钥交换:
算法:DH
工具:openssl rsautl, gpg
8)生成密钥:
生成私钥: ~]# (umask 077; openssl genrsa -out /PATH/TO/PRIVATE_KEY_FILE NUM_BITS)
提出公钥: ~]# openssl rsa -in /PATH/FROM/PRIVATE_KEY_FILE -pubout
(3)Linux系统上的随机数生成器
/dev/random:仅从熵池返回随机数;随机数用尽,阻塞;
/dev/urandom:从熵池返回随机数;随机数用尽,会利用软件生成伪随机数,非阻塞;伪随机数不够安全;
熵池中随机数的来源:
1)硬盘IO中断时间间隔;
2)键盘IO中断时间间隔;

4、用OpenSSL搭建私有CA

(1)背景介绍
CA分为:公共信任的CA和私有CA;
建立私有CA可用工具:OpenSSL和OpenCA。
OpenSSL命令的配置文件为:/etc/pki/tls/openssl.cnf。
构建私有CA是在确定配置为CA的服务上生成一个自签证书,并为CA提供所需要的目录及文件即可。
(2)私有CA搭建步骤
1)生成私钥:~]# (umask 077; openssl genrsa -out /etc/pki/CA/private/cakey.pem 4096)
2)生成自签证书:~]# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3655
-new:生成新证书签署请求;
-x509:生成自签格式证书,专用于创建私有CA时;
-key:生成请求时用到的私有文件路径;
-out:生成的请求文件路径;如果自签操作将直接生成签署过的证书;
-days:证书的有效时长,单位是day;
3)为CA提供所需的目录及文件;
~]# mkdir -pv /etc/pki/CA/{certs,crl,newcerts}
~]# touch /etc/pki/CA/{serial,index.txt}
~]# echo 01 > /etc/pki/CA/serial
4)要用到证书进行安全通信的服务器,需要向CA请求签署证书(以httpd为例):

  1. 用到证书的主机生成私钥;
    ~]# mkdir /etc/httpd/ssl ~]# mkdir /etc/httpd/ssl
    ~]# cd /etc/httpd/ssl
    ~]# (umask 077; openssl genrsa -out /etc/httpd/ssl/httpd.key 2048)
  2. 生成证书签署请求
    ~]# openssl req -new -key /etc/httpd/ssl/httpd.key -out /etc/httpd/ssl/httpd.csr -days 365
  3. 将请求通过可靠方式发送给CA主机;
  4. 在CA主机上签署证书;在CA主机上签署证书:~]# openssl ca -in /tmp/httpd.csr -out /etc/pki/CA/certs/httpd.crt -days 365

5)查看证书中的信息:~]# openssl x509 -in /etc/pki/CA/certs/httpd.crt -noout -serial -subject
6)吊销证书:

  1. 客户端获取要吊销的证书的serial(在使用证书的主机执行):
    ~]# openssl x509 -in /etc/pki/CA/certs/httpd.crt -noout -serial -subject
  2. CA主机吊销证书:先根据客户提交的serial和subject信息,对比其与本机数据库index.txt中存储的是否一致;
    吊销命令:# openssl ca -revoke /etc/pki/CA/newcerts/SERIAL.pem
    其中的SERIAL要换成证书真正的序列号;
  3. 生成吊销证书的吊销编号(第一次吊销证书时执行):# echo 01 > /etc/pki/CA/crlnumber
  4. 更新证书吊销列表:# openssl ca -gencrl -out thisca.crl
  5. 查看crl文件:# openssl crl -in /PATH/FROM/CRL_FILE.crl -noout -text

加密解密技术基础及用OpenSSL创建私有CA相关推荐

  1. 加密解密技术基础、PKI及创建私有私有CA

    Linux基础中的加密.解密及openssl  数据为什么要加密?       由于互联网刚开始时使用的人非常少,在互联网中交流信息的人都比较"单纯"几乎没有安全问题:但随着互联网 ...

  2. 加密和解密技术基础、PKI及创建私有CA

    一.数据加密和解密概述 数据加密和解密是一门历史悠久的技术,从古代就已经出现了,一直发展到当代.其中,数据加密的目的有很多,可以是为了保证本地数据存取的安全性,可以是为了保证数据流在网络传输过程中的保 ...

  3. Linux 加密解密技术基础及OpenSSL介绍

    Linux 加密解密技术基础 基础概念 信息安全防护的目标 安全防护环节 安全攻击类型(STRIDE) 安全设计的基本原则 常用的安全技术 安全的解决方案 1.加密和解密 2.服务 3.密钥算法和协议 ...

  4. openssl创建私有ca

    openssl创建私有ca 1.ssl大概内容 PKI:公钥基础设施结构 CA:证书权威机构,PKI的核心 CRL:证书吊销列表,使用证书之前需要检测证书有效性 证书存储格式常见的X509格式 包含内 ...

  5. openssl 创建私有CA

    创建私有CA: openssl的配置文件:/etc/pki/tls/openssl.cnf 1.创建所需要的文件 #touch index.txt #echo 01 > serial # 2.给 ...

  6. 简述ssl协议及利用openssl创建私有CA

    我在这个链接中简单的介绍了下加密解密原理和相关算法及其实现:http://starli.blog.51cto.com/8813574/1671408 CA是什么?为什么需要CA? 先看下面的互联网安全 ...

  7. 在企业内部使用openssl创建私有CA

    随着计算机技术的发展,信息网络技术的应用日益深入,这些应用改进了企业工作方式,提高了工作效率.而如何确保在网络中传输的身份认证.机密性.完整性.合法性.不可抵赖性等问题成为企业进一步发展和推动企业信息 ...

  8. 网络通信中的加密解密及openssl和创建私有CA详解

    本文大纲: 1.为什么网络通信要进行数据加密? 2.数据加密方式有哪些?它们是如何进行加密的? 3.通信中是如何进行数据加密传输的? 4.https方式进行数据传输的具体流程 5.SSL 的实现工具O ...

  9. PKI详解与openssl实现私有CA证书签发

    加密解密技术基础 在看这篇文章之前,首先需要有加密解密的技术基础: 安全目标: 保密性:确保通信信息不被任何无关的人看到 完整性:实现通信双方的报文不丢失.数据完整性.系统完整性 可用性:通信任何一方 ...

最新文章

  1. 给SQL数据库表和字段添加描述信息
  2. PHP 7.0新增特性详解
  3. Linux EXT3文件系统下成功恢复误删的文件
  4. HDU-----(4858)项目管理(模拟)
  5. 复合线转权属线lisp_三权发证中使用MAPGIS CASS如何应用复合线 简单、快速生成集体土地所有权权属线 -...
  6. 如何在“文件资源”左侧栏处删除坚果云图标
  7. SONiC vs testbed搭建
  8. 一个本科生的毕业设计和论文
  9. ERP财务管理模块包括什么
  10. 2021 年 VS Code 主题推荐
  11. byte 16进制 2进制理解
  12. 40.凉鞋问题 11月21日
  13. Java学习路线-1:编程入门
  14. NLP自然语言处理-机器学习和自然语言处理介绍(五)
  15. 转:要使一个人有一颗自由、独立、勇敢的心
  16. uni轮播图添加页数
  17. 第七章租赁法律与合同
  18. c语言中fact函数怎么调用,C语言程序题: 1、编写一个求n!的函数fact(n),要求fact函数分别用递归和非递归两种方法实现...
  19. 适合初学者的java学习网站(1)
  20. 三员之三权分立BMB20-2007

热门文章

  1. KF、EKF、ESKF的区别与联系
  2. 【正点原子FPGA连载】第十二章 呼吸灯实验 -摘自【正点原子】领航者ZYNQ之FPGA开发指南_V2.0
  3. 台式计算机怎么进行打印机共享,台式机共享打印机的方法
  4. 【NOIP2007提高组】矩阵取数游戏
  5. 怎么把path里oracle地址删掉,path路径删除了怎么办
  6. 二、CRUD操作以及配置解析
  7. Gradual warmup lr schedule--pytorch
  8. tensorflow2.0 基于LSTM模型的文本生成
  9. mysql 3358端口_好用的MySQL抓包工具:sniffer-agent
  10. 51单片机c语言试题及答案,单片机C语言期末考试题..