zoukankan      html  css  js  c++  java
  • 整理密码学的系统性地基础知识(图解、密码原理、常用算法、openssl)

    前言:

      工作中,零零散散接触了些密码学的知识,并产生了些疑问,借者工作不忙的情况下,把这些疑问都弄清楚,比如:单向散列函数和HMAC的联系?对称密码为什么要和迭代模式共用?证书和签名的联系?公钥密码的基本原理?怎么安全的交换共享密钥?为什么加入盐可以防止字典攻击?为什么密码中常用到随机数nounce?这些疑问都可以在本章找到答案。

    参考文献:

    《图解密码技术》,人民邮电出版社,2015,(日)结城浩(著)

    1.1.   对称密码

    目的:密钥不被破译的前提下,保证消息的机密性

    1.2.   公钥密码

    目的:私钥不被破译的前提下,保证消息的机密性

    1.3.   单向散列函数

    目的:可将任意长度的消息转换成固定长度的短文,可用于验证消息的完整性,即检测出数据是否被篡改。

    1.4.   消息认证码

    目的:密钥不被破译的前提下,不仅能验证消息的完整性,还能确认消息是否来自所期望的通信对象。

    1.4.1.    HMAC

    说明:HMAC是一种使用单向散列函数来构造消息认证码的方法(RFC2104)。

    1.5.   数字签名

    目的:私钥不被破译的前提下,能验证消息的完整性,能确认所期望的通信对象,能防止通信对象事后否认自己先前发送的消息。

    上图中直接对消息进行签名的方法,非常耗时,因为公钥密码算法本来就非常慢。所以,可以在签名前后,先将消息通过单向散列函数生成一个很短的数据。对消息的散列值签名的流程图如下图,下图是Alice对消息的散列值签名,Bob验证签名。

    1.6.   证书

    目的:私钥不被破译并且认证机构是可信的前提下,能在数字签名的基础上验证公钥的合法性。

    1.7.   分组模式

    说明:

    密码算法可分为流密码和分组密码两种:流密码和分组密码。

    流密码是对数据流进行连续处理的一类密码算法;

    分组密码只能加密固定长度的分组,但是需要加密的明文长度可能会超过分组密码的固定长度,所以需要对分组密码算法进行迭代,实现对一段很长的明文应用分组密码并全部加密。

    本节介绍的就是对分组密码算法进行迭代的方法。

    1.7.1.    ECB模式

    1.7.2.    CBC模式

    1.7.3.    CFB模式

    1.7.4.    OFB模式

    1.7.5.    CTR模式

    1.7.6.    GCM模式

    说明:GCM模式与上述分组模式不同的是,它除了能提供对消息的加密外,还能提供对消息的完整性。

    1.8.   密钥交换

    目的:解决收/发双方在通信前需要共享密钥的问题。

    1.8.1.    Diffie-Hellman

    1.8.2.    公钥密码

    1.9.   基于口令的密码(PBE)

    目的:PBE是一种根据口令生成密钥并用该密钥进行加密的方法。

    1.9.1.    盐的作用

    目的:盐是用来防止字典攻击的

  • 相关阅读:
    窗体设计器出不来
    maven ...../.m2/settings.xml
    myeclipse.ini
    人民币大小写
    驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立 安全连接。错误:
    写了一个浏览器插件
    用Excel计算加权平均分和GPA
    cfree使用cygwin编译程序出现计算机丢失cygwin1.dll解决办法
    apt-cyg update --2017-02-17 07:57:24-- http://mirrors.163.com/cygwin//x86_64/setup.bz2 正在解析主机 mirrors.163.com... 123.58.173.185, 123.58.173.186 正在连接 mirrors.163.com|123.58.173.185|:80... 已连接。 已发出 HTT
    生产者消费者问题
  • 原文地址:https://www.cnblogs.com/aimmiao/p/13187244.html
Copyright © 2011-2022 走看看