• 整理密码学的系统性地基础知识(图解、密码原理、常用算法、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.    盐的作用

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

  • 相关阅读:
    假如
    天涯 好文章
    Widget中PendingIntent和RemoteViews用法
    申请android google map API key
    初步学习:Eclipse3.6开发C/C++程序
    Android getWidth和getMeasuredWidth的正解
    intent intentfilter
    mapview 生成apikey
    ViewConfiguration.getScaledTouchSlop () 用法
    Android JNI知识简介
  • 原文地址:https://www.cnblogs.com/aimmiao/p/13187244.html
Copyright © 2020-2023  润新知