zoukankan      html  css  js  c++  java
  • 04.openssl背景

    4.1 openssl结构
    4.1.1 Openssl总体结构
    Openssl整个软件包大概可以分成三个主要功能部分:密码算法库、SSL协议库及应用程序
    目录名
    功能描述
    crypto
    存放Openssl所有加密算法源码文件和相关标准如X509源码文件,
    是Openssl 中最重要的目录,包含了Openssl密码算法库的所有内容
    SSL
    存放Openssl中SSL协议各个版本和TLS1.0协议源码文件,包含了Openssl
    协议库的所有内容
    Apps
    存放Openssl中所有应用程序员文件,
    如ca、x509等应用有的源文件就存放在这里
    Doc
    存放了Openssl中所有的使用文档,包含三个部分:应用程序说明文档、
    加密算法库API说明文档及SSL协议API说明文档
    Demos
    存放了一些基于Openssl的应用程序例子,这些例子一般很简单,
    演示怎么使用Openssl其中一个功能
    Include
    存放了使用Openssl的库时需要的头文件
    Test
    存放Openssl自身功能测试程序的源码文件。
    4.1.2 Openssl算法目录
    目录名称
    目录类型
    内容或功能描述
    AES
    对称算法
    美国新的对称加密算法标准AES算法源码
    Bf
    对称算法
    Blowfish对称加密算法源码
    Cast
    对称算法
    CAST对称加密算法源码
    Des
    对称算法
    DES和3DES对称算法源码
    Idea
    对称算法
    IDEA对称算法源码
    rc2
    对称算法
    RC2对称算法源码
    rc4
    对称算法
    RC4对称算法源码
    rc5
    对称算法
    RC5对称算法源码
    dh
    非对称算法
    DH非对称密钥交换算法源码
    dsa
    非对称算法
    DSA非对称算法源码,用于数字签名
    ec
    非对称算法
    EC椭圆曲线算法源码
    rsa
    非对称算法
    RSA非对称加密算法源码,既可以用于密钥交换,
    也可以用于数字签名
    md2
    信息摘要算法
    MD2信息摘要算法源码
    md5
    信息摘要算法
    MD5信息摘要算法源码
    mdc2
    信息摘要算法
    MDC2信息摘要算法源码
    sha
    信息摘要算法
    SHA信息摘要算法源码,包括了SHA1算法
    ripemd
    信息摘要算法
    RIPEMD-160信息摘要算法源码
    comp
    数据压缩算法
    数据牙酸算法的函数接口,目前没有压缩算法,
    只是定义了一些空的借口函数
    asn1
    PKI相关标准
    ASN.1标准实现源码,只实现了PKI相关的部分,
    不是完全实现,包括DER编解码等功能
    ocsp
    PKI相关标准
    OCSP(在线证书服务协议)实现源码
    pem
    PKI相关标准
    PEM标准实现源码,包括了PEM的编解码功能
    pkcs7
    PKI相关标准
    PKCS#7标准实现源码。PKCS#7是实现加密信息封装的标准,
    包括了证书封装的标准和加密数据的封装标准
    pkcs12
    PKI相关标准
    PKCS#12 标准实现源码。包括了PKCS#12文件的编解码功能。
    PKCS#12是一种常用的证书和密钥封装格式
    x509
    PKI相关标准
    X509标准的实现源码
    x509v3
    PKI相关标准
    X509第三版扩展功能的实现源码
    krb5
    其他标准支持
    支持Kerberos协议的一些接口函数和结构定义
    hmac
    其他标准支持
    HMAC标准的支持接哦古和函数源码
    lhash
    其他标准支持
    动态HASH表结构和函数源码
    bio
    自定义
    openssl自身定义的一种抽象IO接口,
    封装了各种平台的几乎所有IO接口,
    如文件、内存、缓存、标准输入输出及SOCKET,等等。
    bn
    自定义
    openssl实现大数管理的结构及其函数
    buffer
    自定义
    openssl自定义的缓冲区结构体
    conf
    自定义
    openssl自定的管理配置结构和函数
    dso
    自定义
    openssl自定义的加载动态链接库的管理函数接口
    engine
    自定义
    openssl自定义的Engine机制源代码。
    err
    自定义
    Openssl自定义的错误信息处理机制
    evp
    自定义
    openssl定义的一组高层算法封装函数,
    包括了对称加密算法封装、非对称加密算法封装、签名验证算法封装
    及信息摘要算法封装
    objects
    自定义
    openssl管理各种数据对象的定义和函数。
    事实上objects的oid是根据ASN.1的标准进行命名的,
    不完全是Openssl自定义结构
    rand
    自定义
    openssl的安全随机数产生函数和管理函数
    stack
    自定义
    定义了Openssl中STACK结构和相关管理函数
    threads
    自定义
    Openssl处理线程的一些机制
    txt_db
    自定义
    openssl提供文本证书库的管理机制
    ui
    自定义
    openssl定义的一下用户接口交换函数
    perlasm
    自定义
    编译的时候需要用到一些Perl辅助配置文件
    4.1.3 Openssl文档目录
    openssl的文档主要分为三部分:应用程序说明文档、密码算法库API文档及SSL协议库API文档。
    4.2 Openssl功能
    4.2.1 应用程序
    指令
    类型
    功能说明
    asn1parse
    其他
    对ASN.1编码的文件或字符串进行解析,
    比如对证书文件,可以使用该指令对其进行解释,
    他会将其中每一个数据对象打印处理
    ca
    证书签发和管理
    该指令是一个功能强大的指令,模拟一个小型CA的功能,
    并跟Openssl提供的文本数据库联系起来作为证书数据库。
    该指令具有证书签发、验证、吊销等功能
    ciphers
    其他
    该指令可以列出不同的协议支持的算法体系。
    crl
    证书签发和管理
    该指令可以吊销证书列表(CRL)文件进行文本解析和验证
    crl2pkcs7
    格式转换
    该指令可以CRL和多个证书封装成一个PKCS#7格式的证书文件
    dgst
    信息摘要和签名
    该指令可以使用不同的信息摘要算法对输入的信息进行信息摘要操作,
    并且可以对摘要的信息进行签名或者验证
    dh
    非对称密钥
    生成和处理DH密钥参数文件,dhparam已经继承了该指令的功能,
    一般不使用该指令了
    dhparam
    非对称密钥
    用于生成DH密钥参数文件、解析DH密钥参数文件及格式转换等
    dsa
    非对称密钥
    该指令用于对DSA密钥的格式转换及信息输出处理,
    并且可以对DSA密钥进行加密
    dsaparam
    非对称密钥
    该指令用于生成和处理DSA参数文件,
    并且可以用于生成DSA密钥
    enc
    对称密钥
    该指令可以使用Openssl支持的各种对称加密算法给定的数据
    或者文件进行加密或者解密
    engine
    其他
    该指令显示Openssl支持的Engine借口列表,
    并可以测试Openssl支持的engine借口是否有效
    errstr
    其他
    根据给定错误代码显示响应的错误信息
    gendh
    非对称密钥
    生成DH密钥,该功能应景继承到dhparam指令中
    gendsa
    非对称密钥
    根据DSA参数文件生成一个DSA私钥,
    可以采用不同的算法对DSA私钥加密保护
    nseq
    格式转换
    将普通X509证书转换成Netscape格式的证书
    ocsp
    其他
    是一个实现在线证书状态协议OCSP的指令工具,
    可以对证书的有效性进行验证等OCSP任务操作
    passwd
    其他
    根据给定的口令通过HASH算法生成密钥
    pkcs12
    格式转换
    该指令可以将X.509证书和PEM编码的私钥封装成PKCS#12格式的证书,
    也可以将PKCS#12格式的证书专程X509证书和私钥
    pkcs7
    格式转换
    该指令级那个PKCS#7格式文件转换成普通的X509格式证书或CRL
    pkcs8
    格式转换
    该指令可以将私钥加密转换成PKCS#8格式或者将PKCS#8格式私钥
    转换成普通的PEM或DER编码私钥
    rand
    其他
    该质量可能给可以产生一些列的为随机数比特,并保存在文件中
    req
    证书签发和管理
    该指令生成证书标准的请求文件,
    而且可以生成自签名的跟证书
    rsa
    非对称密钥
    该指令对RSA密钥进行格式转换和文本解析输出等处理,
    格式转换的时候可以对密钥进行加密
    rsautl
    非对称密钥
    该指令采用RSA算法对输入数据进行签名、验证、加密和解密等操作
    s_client
    SSL测试
    该指令模拟一个SSL客户端,
    可以对支持SSL的服务器进行测试和调试操作
    s_server
    SSL测试
    该指令模拟一个SSL服务器,可以对支持SSL的浏览器进行测试和链接操作
    s_time
    SSL测试
    该指令可以用来测试建立一个SSL链接的时间
    sess_id
    SSL测试
    该指令可以处理经编码保存下来的SSL session结构
    并可以根据选项打印出其中的信息
    smime
    其他
    该只ing可以用来对S/MIME邮件进行加密、解密、签名和验证等操作
    speed
    其他
    该指令测试算法的速度,如果有硬件加密设备,
    也可以测试硬件加密设备的速度
    spkac
    SSL测试
    该指令用来处理Nestcape的签名公钥和挑战文件(SPKAC),
    可以验证SPKAC的签名,打印信息,也可以用来生成SPKAC文件
    verify
    证书签发和管理
    该指令用来验证证书或者证书链的合法性
    version
    其他
    该指令用来输出openssl的版本信息
    x509
    证书签发和管理
    该指令用来显示证书内容及签发新的证书
    4.2.1 Engine机制
    简要名称
    Engine接口描述
    dynamic
    动态加载Engine设备的接口
    cswift
    CrytoSwift的硬件加密设备Engine支持
    chil
    nChipher硬件加密设备Engine支持
    atalla
    Atalla硬件加密设备Engine支持
    nuron
    Nuron硬件加密设备Engine支持
    ubsec
    UBSEC硬件设备Engine支持
    aep
    Aep硬件加密设备Engine支持
    sureware
    SureWare硬件加密设备Engine支持
    4758cca
    IBM 4758 CCA硬件加密设备Engine支持
    4.3 Openssl应用
    openssl的应用一般可以分为两种不同的方式:基于Openssl指令的应用和基于Openssl加密库和协议库应用。
    4.4 Openssl授权
    openssl的授权问题很多人并不重视,或者,你也不愿意浪费宝贵的时间在这一节上面。但是,阅读本书的人基本上都是以通过自己的知识在产品中的实现来体现自己的价值的,所以努力维护知识产权,从根本上还是维护了我们自己的利益。
    Openssl的授权有两部分组成的:Openssl授权和原始的SSLeay授权。当然,这两种授权大同小异,基本上没有限制的,只要产品加入或者保留Openssl和SSLeay的版本声明就行。
    4.5 本章小结
    本章对Openssl作了一个初步的介绍,给读者全面展示openssl的历史、结构、功能和应用。
    本章首先介绍了Openssl的背景,并将Openssl和其他同类的加密算法做了比较
  • 相关阅读:
    UITableView加载显示更多内容
    UITableView  折叠效果
    40个GitHub上最受欢迎的iOS开源项目
    oc中的block使用心得
    iOS CGRectContainsPoint的用法
    ios NSComparator 三种枚举类型
    错误提示 Unsupported compiler 'com.apple.compilers.llvmgcc42' selected for architecture 'i386'
    IOS 第三方库之-MBProgressHUD的使用详解
    ios 测试工程是否内存泄漏
    单双击手势
  • 原文地址:https://www.cnblogs.com/aixiaoxiaoyu/p/8394960.html
Copyright © 2011-2022 走看看