自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(87)
  • 资源 (3)
  • 问答 (1)
  • 收藏
  • 关注

原创 04.openssl背景

4.1 openssl结构4.1.1 Openssl总体结构Openssl整个软件包大概可以分成三个主要功能部分:密码算法库、SSL协议库及应用程序目录名功能描述crypto存放Openssl所有加密算法源码文件和相关标准如X509源码文件,是Openssl 中最重要的目录,包含了Openssl密码算法库的所有内容SSL存放Openssl中SSL协议各个版本和TLS1.0协议源码文件,...

2018-01-31 21:23:00 178

原创 03.openssl密码实现技术

3.1 密钥管理技术一个好的密码通信系统依赖的不是算法的机密性,而是密钥的机密性。在一个使用的密码通信系统中,安全地产生、保存、分发和使用密钥是整个系统安全性得到保证的前提。3.1.1 密钥生成*如何安全地生成密钥。即如何生成可信任的密钥,保证用户得到的密钥是安全的,生成密钥的及其或程序是可信的。*如何生成安全的密钥。安全的密钥没有同一的定义,但一般来说是指密钥抗猜测和抗穷举等针对密钥攻...

2018-01-30 21:25:00 165

原创 02.密钥学基本概念

2.1 密码学作用密码学主要涉及信息加密、鉴别、完整性和抗抵赖的内容。2.1.1 信息加密有必要使用某种方法伪装明文以隐藏真正消息,这个伪装过程称为加密,加密后得到的信息称为密文。总是有人试图要从密文中使用各种手段恢复出明文是其中主要的原因。我们称这种行为为密码分析,自然这种技术叫做密码分析技术;而设计密码算法的技术则称为密码编码技术。2.1.2 鉴别鉴别能力就是指消息的接收者应该能够确...

2018-01-30 21:24:00 372

原创 01.openssl-概述

1.1 信息安全1.1.1 信息安全内容在解决任何一个实际的货抽象的系统的安全问题之前,都应该首先分析其可能存在的安全缺陷,今儿采取相应的安全措施。a.机密性机密性是指保护信息免受主要的非法窃取,阅读等攻击。机密性主要包括内容a1.内容的机密性是很容易理解的,就是确保数字信息的内容不被没有授权的人访问。a2.采用通信量分析进行攻击要求攻击者能够在通信设施上坚挺到通信的源地址和目的地址、通...

2018-01-30 21:23:00 193

原创 31.openssl编程——SSL实现

31.1 概述SSL协议最先由netscape公司提出,包括sslv2和sslv3两个版本。当前形成标准为tls协议(rfc2246规范)和DTLS(rfc4347,用于支持UDP协议)。sslv3和tls协议大致一样。SSL协议能够保证通信双方的信道安全。他能提供数据加密、身份验证以及消息完整性保护。SSL协议通过客户端和服务端握手来协商各种算法和密钥。31.2 openss

2018-01-26 19:04:35 1281

原创 27.openssl编程——OCSP

27.1 概述在线证书状态协议(OCSP, Online Certificate Status Protocol,rfc2560)用于实时表明证书状态。OCSP客户端通过查询OCSP服务来确定一个证书的状态。OCSP可以通过HTTP协议来实现。27.2 Openssl实现openssl在crypto/ocsp目录实现了ocsp模块,包括客户端和服务端各种函数*ocsp_asn.

2018-01-26 19:04:32 1481

原创 30.openssl编程——PCKS12

30.1 概述pkcs12(个人数字标准)用于存放用户证书、crl、用户私钥以及证书链,pkcs12中的私钥是加密存放的。30.2 openssl实现openssl的pkcs12实现在crypto/pkcs12目录,有如下源码:目录架构用途p12_add.c处理PCKS12_SAFEBAG, PKCS12_SA

2018-01-26 19:04:29 809

原创 28.openssl编程——CRL

28.1 CRL介绍证书撤销列表(Certificate Revocation List, 简称CRL),是液体中包含撤销的证书列表的签名数据结构。CRL是证书撤销状态的公布形式,CRL就像信用卡的黑名单,用于公布某些数字证书不在有效。CRL是一种离线的证书状态信息。他一一定的周期进行更新。CRL可以分为完全CRL和增量CRL。在完全CRL中包含了所有的被撤销证书信息,增量CRL由一些列的

2018-01-26 19:04:27 910

原创 29.openssl编程——PKCS7

29.1 概述加密消息语法(pkcs7),是各种消息存放的格式标准。这些消息包括:数据、签名数据、数字信封、签名数据数字信封、摘要数据和加密数据。29.2 数据结构typedef struct pkcs7_signed_st {ASN1_INTEGETR *version;STACK_OF(X509_ALGOR) *MD_ALGS;STACK_OF(X509) *cer

2018-01-26 19:04:24 1207

原创 26.openssl编程——X509数字证书

26.1 X509数字证书数字证书是将用户(或其他实体)身份与公钥绑定的信息载体。一个合法的数字证书不仅要符合X509格式规范,还必须有CA的签名。用户不仅有自己的数字证书,还必须有对应的私钥。X509V3数字证书主要包含的内容有:a.证书版本b.证书序列号c.签名算法d.颁发者信息e.有效时间f.持有者信息g.公钥信息h.颁发者信息i.公钥信息j.

2018-01-26 19:04:22 1379

原创 25.openssl编程——证书申请

25.1 证书申请介绍生成X509数字证书前,一般先由用户提交证书申请文件,然后由CA来签发证书。a.用户生成自己的公私钥对b.构造自己的证书申请文件,符合PKCS#10标准。该文件主要包括了用户信息、公钥以及一些可选的属性信息,并用自己的私钥给改内容签名c.用户将证书申请文件提交给CAd.CA验证签名,提取用户信息,并加上其他信息,用CA的私钥签发数字证书。X509证

2018-01-26 19:04:19 431

原创 22.openssl编程——PEM格式

22.1  PEM概述openssl使用PEM(Privacy Enhanced Mail)格式来存放各种信息,他是openssl默认采用信息方式。openssl中PEM文件一般包含如下信息:a.内容类型表明本文件存放的是什么信息内容,他的形式为"---------------BEGIN XXXX-------------------",与结尾的"-----------------EN

2018-01-26 19:04:16 1245

原创 23.openssl编程——Engine

23.1  Engineopenssl硬件引擎(Engine)能够使用户比较容易地将自己的硬件加入到openssl中去,替换提供的软算法。一个Engine提供了密码计算中各种计算方法的集合,他用于控制opnessl的各种密码计算23.2 Engine支持的原理Openssl中的许多数据结构不仅包含数据本身,还包含各种操作,并且这些操作是可替换的。Openssl中这些结构集合一般叫做

2018-01-26 19:04:13 1377

原创 24.openssl编程——通用数据结构

24.1 通用数据结构本文中数据结构主要指的是证书相关各个数据结构。他们主要用在数字证书申请、数字证书和CRL中。*X509_ALGORX509算法*X509_VALX509有效时间*X509_PUBKEYX509公钥*X509_SIGX509摘要或者签名值*X509_NAME_ENTRYX509中的一项名臣*X509_NAMEX509名称集

2018-01-26 19:04:11 572

原创 21.openssl编程——EVP

21.1 EVP简介Openssl EVP (high-level cryptographic functions)提供丰富的密码学中的各种函数。EVP主要封装如下功能函数:a.实现了base64编解码BIOb.实现了加解密BIOc.实现了摘要BIOd.实现了reliableBIO;e.封装了摘要算法f.封装了对称加解密算法g.封装了非对称密钥的加密(公钥)、解

2018-01-26 19:04:08 800

原创 20.openssl编程——椭圆曲线

20.1 ECC介绍椭圆曲线(ECC)算法一种公钥算法,他比流行的RSA算法很多优点:a.安全性能更高,如果160位ECC与1024位RSA、DSA有相同的安全强度b.计算量小,处理速度快,在私钥的处理速度上(解密和签名),ECC比RSA、DSA快得多c.存储空间占用小、ECC的密钥尺寸和系统参数与RSA、DSA相比要小得多,d.带宽要求低。 20.2 openssl的

2018-01-26 19:04:05 1142

原创 18.openssl编程——DSA

18.1 DSA简介Digital Signature Algorithm(DSA)算法是一种公钥算法。a.p一个大素数,长度为L(64的正数倍)比特。b.q一个160比特素数c.g=h(p-1)/q mod p,其中h小于p-1。d.xe.y= gx mod p 其中x为私钥,y为公钥.p、q和g是公开信息(openssl中称为密钥参数)DSA签名包括两个部分

2018-01-26 19:04:02 1682

原创 19.openssl编程——DH

19.1 DH算法介绍DH算法实质是一个通信双方进行密钥协商的协议:两个实体中的任何一个使用自己的私钥和另一个实体的公钥,得到一个对称密钥,这一对称密钥其他实体都计算不出来。首先,发送方和接收方设置相同的大数数n和g,这两个不是保密的,他们可以通过非安全通道来协商这两个素数。协商密钥:a.发送方选择一个大随机整数x,计算X=g^x mod n,发送X给接收者b.接收方选择一个大

2018-01-26 19:03:59 762

原创 17.openssl编程——RSA介绍

17.1  RSA介绍RSA算法是一个广泛使用的公钥算法。器密钥包括公钥和私钥。他能用于数字签名、身份认证以及密钥交换。RSA密钥信息主要包括:* n:模数* e:公钥指数* d:私钥指数* p:最初的大素数* q:最初的大素数* dmp1:e * dmp1 = 1 (mod(p-1))* dmp1:e * dmp1 = 1 (mod(q -1))* iqmp:

2018-01-26 19:03:57 921

原创 16.openssl编程——数据压缩

16.1 简介数据压缩是将原有数据通过某种压缩算法计算得到相对数据量小的过程。这种过程是可逆的,即能通过压缩后的数据恢复出原数据。数据压缩能够节省存储空间,减轻网络负载。在即需要加密又需要压缩的情况下,必须先压缩在加密,次序不能颠倒。  16.2 数据结构openssl通过函数地址来抽象数据压缩a.COMP_METHOD该数据结构定义了具体压缩/解压函数,这些函数可

2018-01-26 19:03:54 287

原创 15.openssl编程——摘要与HMAC

15.1 概述摘要函数用于将任意数据通过计算获取唯一对应值,而这个值的长度比较短。他是一种多对一关系。用户需要对数据进行签名时,不可能对大的数据进行运算。如果只对摘要结果进行计算,则会提供运算速度。常用摘要算法有:sha\sha1\sha256\md5\md4\md2\mdc2或ripemd160 15.2 openssl摘要实现openssl摘要实现的源码位于crypto目录下的

2018-01-26 19:03:51 312

原创 14.openssl编程——错误处理

14.1 概述程序设计时,一般通过函数的返回值来判断是否调用成功。设计良好的函数以及好的错误处理能版主调用者快速找到错误:*错误码*出错文件以及行号*错误原因*出错函数*出错库*出错模块与类别信息*错误堆栈信息等 14.2 数据结构openssl中,通过unsgined long 类型来存放错误信息。它包含三部分内容:库代码、函数代码以及错误原因代码。

2018-01-26 19:03:49 501

原创 13.openssl编程——ASN1库

13.1  ASN1简介ANS.1(Abstract Syntax Notation One, X.208),是一套灵活的标记语言,他允许定义多种数据类型,从integer、bit string、一类的简单类型到结构化类型,如set和sequence,并且可以使用这些类型构建复杂类型。DER编码是ANS.1定义的将对象描述数据编码成8位串值的编码规则,他给出了对ANS.1值(对象的类型和值

2018-01-26 19:03:46 6443 4

原创 12.openssl编程——BASE64编码介绍

12.1 BASE64编码介绍BASE64编码是一种常用的将十六进制数据转换为可见字符编码。与ASCII码相比,它占用的空间较小。BASE64编码在rfc3548中定义。 12.2 BASE64编解码原理将数据编码成BASE64编码时,以3字节数据为一组,转换为24bit的二进制,将24bit的二进制数据,得到一个数字:0-63。 Value Encoding  Value

2018-01-26 19:03:43 317

原创 11.openssl编程——大数

11.1 介绍大数一般指的是位数很多的数。计算机表示的数的大小是有限的,精度也是有限的,精度也是有限的,它不能支持大数运算。密码学中采用了很多大数计算,为了让计算机实现大数运算,用户需要定义自己的大数表示方式及实现各种大数运算。Openssl为我们提供了这些功能,主要用于非对称算法。 11.2   openssl大数表示struct bignum_st{BN_ULONG *

2018-01-26 19:03:40 713

原创 10.openssl编程——文本数据库

10.1 概述openssl实现了一个简单的文本数据库,他可以从文件读取数据和将数据写到文件中,兵切可以根据关键字段来查询数据。 10.2 数据结构typedef struct txt_db_st {int num_fields; 表明文本数据库的列数STACKP_OF(OPENSSL_PSTRING) *data; 用来存放数据,每一行数据组织成为一个字符串数组(每个

2018-01-26 19:03:38 202

原创 09.openssl编程——随机数

9.1 随机数随机数是一种无规律的数,但是真正做到完全无规律也比较困难,所有一般将它称为伪随机数。9.2 openssl随机数数据结构与源码a.openssl生成随机数的源码位于crypto/rand目录下。openssl维护一个内部随机状态数据(md_rand.c中定义的全局变量state和md),通过对这些内部数据计算摘要来生成随机数struct rand_meth_s

2018-01-26 19:03:35 1144

原创 08.openssl编程——配置文件

8.1   概述openssl采用自定义的配置文件获取配置信息。段信息,段信息由[xxx]来表示,其中xxx为段标识;属性-值信息,表示方法为a=b,这种信息可以在一个段内页可以不属于任何段。典型配置文件为apps/openssl.cnf(同时该文件也是openssl最主要的配置文件)  # OpenSSL example configuration file.oid_

2018-01-26 19:03:32 282

原创 07.openssl编程——抽象IO

7.1    openssl抽象IOopenssl抽象(I/O abstraction,即BIO)是openssl对于io类型的抽象封装,包括:内存、文件、日志、标准输入输出、socket(TCP/UDP)、加解密、摘要和ssl通道等。Openssl BIO通过回调函数为用户隐藏了底层实现细节,所有的类型bio的调用答题上是类似的。7.2 数据结构a. BIO_METHODst

2018-01-26 19:03:30 224

原创 27.openssl编程——OCSP

27.1 概述在线证书状态协议(OCSP, Online Certificate Status Protocol,rfc2560)用于实时表明证书状态。OCSP客户端通过查询OCSP服务来确定一个证书的状态。OCSP可以通过HTTP协议来实现。27.2 Openssl实现openssl在crypto/ocsp目录实现了ocsp模块,包括客户端和服务端各种函数*ocsp_a...

2018-01-25 17:09:00 2509

原创 31.openssl编程——SSL实现

31.1 概述SSL协议最先由netscape公司提出,包括sslv2和sslv3两个版本。当前形成标准为tls协议(rfc2246规范)和DTLS(rfc4347,用于支持UDP协议)。sslv3和tls协议大致一样。SSL协议能够保证通信双方的信道安全。他能提供数据加密、身份验证以及消息完整性保护。SSL协议通过客户端和服务端握手来协商各种算法和密钥。31.2 openssl实现SS...

2018-01-25 17:09:00 916

原创 30.openssl编程——PCKS12

30.1 概述pkcs12(个人数字标准)用于存放用户证书、crl、用户私钥以及证书链,pkcs12中的私钥是加密存放的。30.2 openssl实现openssl的pkcs12实现在crypto/pkcs12目录,有如下源码:目录架构用途p12_add.c处理PCKS12_SAFEBAG, PKCS12_SAFEBAG用于存放正数和私钥相关的信息p12_attr.c属性处理p12_ct...

2018-01-25 17:08:00 591

原创 28.openssl编程——CRL

28.1 CRL介绍证书撤销列表(Certificate Revocation List, 简称CRL),是液体中包含撤销的证书列表的签名数据结构。CRL是证书撤销状态的公布形式,CRL就像信用卡的黑名单,用于公布某些数字证书不在有效。CRL是一种离线的证书状态信息。他一一定的周期进行更新。CRL可以分为完全CRL和增量CRL。在完全CRL中包含了所有的被撤销证书信息,增量CRL由一些列...

2018-01-25 17:07:00 1288

原创 29.openssl编程——PKCS7

29.1 概述加密消息语法(pkcs7),是各种消息存放的格式标准。这些消息包括:数据、签名数据、数字信封、签名数据数字信封、摘要数据和加密数据。29.2 数据结构typedef struct pkcs7_signed_st { ASN1_INTEGETR *version; STACK_OF(X509_ALGOR) *MD_ALGS; STACK_OF(X509) *...

2018-01-25 17:07:00 1821

原创 26.openssl编程——X509数字证书

26.1 X509数字证书数字证书是将用户(或其他实体)身份与公钥绑定的信息载体。一个合法的数字证书不仅要符合X509格式规范,还必须有CA的签名。用户不仅有自己的数字证书,还必须有对应的私钥。X509V3数字证书主要包含的内容有:a.证书版本b.证书序列号c.签名算法d.颁发者信息e.有效时间f.持有者信息g.公钥信息h.颁发者信息i.公钥信息j.颁发者IDk.扩展项26.2 open...

2018-01-25 17:06:00 2662

原创 25.openssl编程——证书申请

25.1  证书申请介绍生成X509数字证书前,一般先由用户提交证书申请文件,然后由CA来签发证书。a.用户生成自己的公私钥对b.构造自己的证书申请文件,符合PKCS#10标准。该文件主要包括了用户信息、公钥以及一些可选的属性信息,并用自己的私钥给改内容签名c.用户将证书申请文件提交给CAd.CA验证签名,提取用户信息,并加上其他信息,用CA的私钥签发数字证书。X509证书申请的格式标准...

2018-01-25 17:04:00 994

原创 23.openssl编程——Engine

23.1  Engineopenssl硬件引擎(Engine)能够使用户比较容易地将自己的硬件加入到openssl中去,替换提供的软算法。一个Engine提供了密码计算中各种计算方法的集合,他用于控制opnessl的各种密码计算23.2 Engine支持的原理Openssl中的许多数据结构不仅包含数据本身,还包含各种操作,并且这些操作是可替换的。Openssl中这些结构集合一般叫做XXX...

2018-01-25 17:03:00 1625

原创 22.openssl编程——PEM格式

22.1  PEM概述openssl使用PEM(Privacy Enhanced Mail)格式来存放各种信息,他是openssl默认采用信息方式。openssl中PEM文件一般包含如下信息:a.内容类型表明本文件存放的是什么信息内容,他的形式为"---------------BEGIN XXXX-------------------",与结尾的"-----------------END...

2018-01-25 17:03:00 667

原创 24.openssl编程——通用数据结构

24.1 通用数据结构本文中数据结构主要指的是证书相关各个数据结构。他们主要用在数字证书申请、数字证书和CRL中。*X509_ALGOR X509算法*X509_VALX509有效时间*X509_PUBKEYX509公钥*X509_SIGX509摘要或者签名值*X509_NAME_ENTRYX509中的一项名臣*X509_NAMEX509名称集合*X509_EXTENSIONX509扩...

2018-01-24 16:52:00 657

原创 21.openssl编程——EVP

21.1 EVP简介Openssl EVP (high-level cryptographic functions)提供丰富的密码学中的各种函数。EVP主要封装如下功能函数:a.实现了base64编解码BIOb.实现了加解密BIOc.实现了摘要BIOd.实现了reliableBIO;e.封装了摘要算法f.封装了对称加解密算法g.封装了非对称密钥的加密(公钥)、解密(私钥)、签名与验证以及...

2018-01-23 21:37:00 2550

openssl简明教程英文版

1.openssl安装教程 2.openssl常用的指令 3.openssl加密算法 4.openssl证书生成

2017-12-15

学习推荐nginx架构权威推荐

1.nginx架构描述 2.nginx架构代码详细讲解

2017-08-22

UNXI网络编程-卷2-进程间通信

2016-06-05

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除