理解三种加密方式

  • 前言
  • 对称密钥加密 (Symmetric-key Cryptography)
    • 对称密钥加密的工作原理
    • 对称加密的分类与典型对称加密算法
      • 块加密 (Block cipher) 与流加密 (Stream cipher)
      • 典型对称加密算法
  • 非对称密钥加密 (Asymmetric Cryptography)
    • 非对称密钥加密工作原理
    • 典型非对称密钥加密算法
    • 非对称密钥加密算法面临的问题与对策
  • 混合加密 (Hybrid Cryptography)
    • 混合加密的工作原理
    • 混合加密的应用场景
  • 结语

前言

在21世纪,最重要的莫过于情报了。任何公司、组织和国家都有非公开的机密情报,任何人都有自己的不能为他人所知的小九九。而21世纪是互联网的时代,当情报在互联网上传输的时候,不经加密直接传输的话,机密内容会被别有用心的第三者盗听的风险。为了使盗听者无法直接阅读或破译机密情报,有非常多的加密方式算法被发明。本文讨论其中最重要的三种。

本文不讨论具体的加密算法是如何工作的。仅讨论三种加密方式的原理。

对称密钥加密 (Symmetric-key Cryptography)

对称密钥加密,对笔者来说,中文版确实难以理解。在日本这被称为 「共通鍵暗号方式」。一言以蔽之,加密的人与解密的人用的密钥是一样的。这种加密方式被称为对称密钥加密

对称密钥加密的工作原理

对称密钥加密的工作机制首先参考下图。对于送信的一方,使用公共密钥加密明文之后传输给受信一方,受信一方用同一个公共密钥解密密文拿到明文。

看到这里我们可以清楚知道到,一旦密钥泄露那么盗听的人可以轻易地破解传输中的密文拿到机密情报。这也是为什么这种加密方式仅在早期被使用的原因。

对称加密的分类与典型对称加密算法

在介绍典型对称加密算法之前,我们先了解一下对称加密算法的分类。

块加密 (Block cipher) 与流加密 (Stream cipher)

对称加密算法按照是否把明文分割成块之后再进行处理来分类,分为块加密和流加密。具体参考下表。

加密方式 简介 从属算法
块加密 (Block cipher) 对明文按大小分块,对每一块分别进行加密,如AES的Block Size就是固定128bits。 DES,AES,FEAL,IDEA,Camellia
流加密 (Stream cipher) 对明文不分块,对每一bit进行加密 RC4,KCipher-2

典型对称加密算法

下面简单列举3个典型的对称加密算法。

算法 简介 参考
DES (Data Encryption Standard) 代表性对称加密算法,密钥长度为56bits,因此存在2⁵⁶种密钥,对明文每8字节进行分块(block),对每一块加密。现由于计算机处理速度大幅增加导致尝试2⁵⁶种密钥进行暴力破解成为可能。现已经不推荐使用DES。 DES_百度百科
AES (Advanced Encryption Standard) 作为DES后继者登场,区块的长度固定为128 bits,密钥的长度可以是128,192,256 bits。安全性相较于DES大大增加。大众产品大都默认使用128位密钥,而高度机密的情报,则推荐使用192位以上的密钥。 AES_百度百科
Triple DES 就像其名字所表示的,三重DES,即使用三次DES进行加密,每次分别使用独立密钥加密,变相增加了密钥长度至168 (3x56) bits。使暴力破解难度大大增加。 3DES_百度百科

其他的还有一些如FEAL、IDEA等,笔者就不一一列举了。有兴趣的读者可以自己查询。

非对称密钥加密 (Asymmetric Cryptography)

非对称密钥加密,不过这还是难以理解,非对称密钥加密别称公开密钥加密,通过公开的密钥进行加密,通过非公开的私有的密钥进行解密。也因这种公钥私钥不一致的特性,被称为非对称加密

非对称密钥加密工作原理

非对称密钥加密的工作机制首先参考下图。对于送信的一方,使用公开密钥加密明文之后传输给受信一方,受信一方用另同一个私有密钥解密密文拿到明文。

看到这里我们可以与对称密钥加密做对比,即使公开密钥泄露,盗听的人也不能轻易地破解密文拿到机密情报。当然如果私有秘钥泄露了,那么破解就不是问题了。参考下表,非对称加密里唯一没被公开的就是私钥,只有私钥泄露会导致情报泄露。因此私钥保管是非常重要的。

是否公开?
公钥 (Public-Key)
私钥 (Private-Key)
公钥加密算法
私钥加密算法

典型非对称密钥加密算法

下面简单列举几个典型的非对称加密算法。

算法 简介 参考
RSA (Rivest–Shamir–Adleman) 代表性非对称加密算法,RSA是由三作者的名字组成,这个算法利用对极大整数做因数分解需要大量时间的特性来实现。 RSA_百度百科
ELGamal 目前笔者仅知道这是一种相对常见的非对称加密算法。有兴趣的读者可以自行查阅实现细节。 ELGamal_百度百科

非对称密钥加密算法面临的问题与对策

非对称密钥加密算法和对称密钥加密算法相比,加密・解密的花销十分庞大。处理时间十分缓慢,无法大量用在公众领域,这会占用大量计算资源。
为了解决这一问题,对策就是接下来一节笔者将要介绍的混合加密

混合加密 (Hybrid Cryptography)

混合加密,如其名,就是混用对称密钥加密和非对称密钥加密来实现加密。
混合加密被发明用来解决两个问题

  1. 对称加密的密钥泄露问题: 公共密钥传输或派发之时一旦泄露,机密情报有被破解的风险。
  2. 非对称加密的处理缓慢问题:公开密钥传输或派发之时即使泄露,也不会被破解。但处理速度慢,无法大量使用。

那么我们来看一下混合加密的工作原理。

混合加密的工作原理

混合加密的工作原理简单的来说就是分两步(下有图)

  1. 送信一方(※注意是送信一方,BS里就是浏览器的一方)把使用的公共秘钥本身作为内容通过非对称加密的方式与受信方共享。
  2. 送信一方用第一步共享的公共秘钥,和受信一方通过对称加密的方式共享数据。

这里第一步公共秘钥一般是临时的。如SSL里,这个公共秘钥被称为”symmetric session key”,笔者不知道中文叫什么,字面上可以理解为“会话对称密钥”。通常会话结束,这个密钥就失效了。参考下图。

通过这种混合的方式,仅用非对称加密解密公共秘钥的那一点数据(<100B)的话,并不会慢,也同时保证了安全性。

混合加密的应用场景

前一节提到了混合加密能同时保证速度和安全性,所以能大量在公众领域使用。笔者在下表中梳理了常见的应用场景。

应用场景 简介
SSL/TLS 全称SSL(Secure Sockets Layer) / TLS(Transport Layer Security),SSL和TLS虽然是各自独立的协议,不过经常被列在一块。TLS是SSL的后继者,基于SSL3.0开发。SSL现已经不推荐使用了(now-deprecated)。
S/MIME 全称Secure Multipurpose Internet Mail Extensions,安全的多用途Internet邮件扩展协议。MIME乍一看也许很陌生,不过你应该在HTTP头里讲过Content-Type这一项,里面所用的就是MIME Type,传输时使用的Public-Key由CA(证书颁发机构 - Link2Wiki)保证,需要注意的是这是一种服务,并不一定是免费的~
PGP 和S/MIME一样,提供了邮件加密和签名的功能。和S/MIME不同的是,PGP不走CA, Publick-Key由第三方保证。

结语

通过本文,希望能帮读者对集中加密有最基本的认识。理解TLS背后的加密工作原理。


ฅ( ̳• ·̫ • ̳ฅ)にゃ♡

[密码学]对称密钥加密、非对称密钥加密和混合加密的基本原理相关推荐

  1. 对称密钥,非对称密钥,单向散列函数—William chu的学习之路(信息安全)

    今天也是元气满满的一天鸭!(土豪巨巨们要是觉得有用,支持一下吧~) 对称密钥密码技术 对称密钥又称为保密密钥,非对称密钥也称公有和私有密钥,对称密钥中加密和解密用相同的密钥如DES和IDEA等. 非对 ...

  2. 你不知道的对称密钥与非对称密钥

    (一)对称加密(Symmetric Cryptography) 对称密钥加密,又称私钥加密,即信息的发送方和接收方用一个密钥去加密和解密数据.它的最大优势是加/解密速度快,适合于对大数据量进行加密,对 ...

  3. PKI基础知识(数字信封与数字签名过程,对称密钥与非对称密钥)

    1.数字信封 关于对称密码术和非对称密码:前者具有加密速度快.运行时占用资源少等特点,后者可以用于密钥交换.一般来说,并不直接使用非对称加密算法加密明文,而仅用它保护实际加密明文的对称密钥,来减少运算 ...

  4. (2)非对称密钥加密——RSA算法ECC算法(简介)

    一:目前主流的加密密钥分为两大类:对称密钥和非对称密钥 1)对称密钥:数据发送方和接收方使用的是同一个密钥,即加密和解密的密钥是同一个(K) 2)非对称密钥:数据发送方使用接收方的公钥进行加密,接收方 ...

  5. 数据加密 第五篇:非对称密钥

    非对称密钥(Asymmetric Keys)跟对称密钥相对,它使用一对密钥(算法),一个密钥用于加密,另一个密钥用于解密,加密的密钥称为私钥(private key),解密的密钥称为公钥(public ...

  6. 公钥和私钥的完全解释(包括对称算法和非对称算法、RSA解释)

    密钥分为两种:对称密钥与非对称密钥 对称密钥加密,又称私钥加密,即信息的发送方和接收方用一个密钥去加密和解密数据.它的最大优势是加/解密速度快,适合于对大数据量进行加密,但密钥管理困难. 非对称密钥加 ...

  7. 前后端通信安全RSA+AES混合加密

    前言 前后端安全通信一直是头疼的问题,如何保证前后端安全通信? 读完这篇文章教你学会前后端安全通信. 什么是前后端通信? 客户端向服务端获取资源(如:html/css/js/jpg/json/api接 ...

  8. mysql 非对称密钥_sqlser 2005 对称加密,非对称加密笔记

    一:对称加密 原始明文---密钥---加密数据---密钥---原始明文 速度快,通过算法将明文混淆,占用系统资源少 二:非对称加密 加密解密速度慢,较高的系统资源占用 三:混合数据加密 加密过程:随机 ...

  9. 密码学--对称加密和非对称加密联合使用

    对称加密与非对称加密联合使用 生成数字信封 明文经过哈希之后,再使用自己的私钥进行签名,生成数字签名 明文和数字签名还有公钥(或者数字证书)对这些数据使用对称加密算法加密生成密文. 对使用的对称加密密 ...

  10. php 生成非对称密钥,php实现非对称加密

    使用非对称加密主要是借助openssl的公钥和私钥,用公钥加密私钥解密,或者私钥加密公钥解密. 1.安装openssl和PHP的openssl扩展 2.生成私钥:openssl genrsa用于生成r ...

最新文章

  1. BinaryTree-学习二叉树的Python库
  2. pandas.to_csv()中文编码问题
  3. eclipse中设置Linux编码环境,更改eclipse中console编码
  4. 牛津大学231页博士论文全面阐述神经微分方程(NDE),Jeff Dean点赞
  5. JDBC——基于Mysql的基本操作
  6. Ruby入门之零基础如何学ruby以及ruby的应用/快速学习ruby/学习ruby的流程是什么?...
  7. 字符串在指针和数组上赋值的区别
  8. 南京的学员看过来 | NVIDIA DLI深度学习入门培训
  9. mysql用navicat无法远程连接,mysql 发现 navicat 可以远程连接,代码无法远程连接
  10. 直接说,我要怎样才能做到年薪 50 万?
  11. cas client 更新ticket_cas sso单点登录系列6_cas单点登录防止登出退出后刷新后退ticket失效报500错...
  12. k8s优先级priority的使用
  13. Python导入Excel名单实现随机抽取
  14. otg usb 定位_怎样打开安卓手机外接USB功能(即OTG功能)
  15. 交换机和路由器技术-11-VLAN Trunk
  16. java 时区id对应时区名称,Java 可以或失去的全部的时区ID
  17. 我国人口预计 15 年内是会逐渐分散在大中小城市,还是继续向大城市集中?我们应留在大城市发展吗?
  18. 那些以玩笑说出口的话,往往是最真的表达
  19. Qt 使用WPS或HTML生成word文档
  20. Android——百度APIstore+Json——获取新闻频道+新闻数据

热门文章

  1. 伺服电控领域的产业情况与各主流制造商简介
  2. matlab设置脚本,MATLAB脚本和功能
  3. 深度学习实战 第7章循环神经网络笔记
  4. Android WebView开发(三):WebView性能优化
  5. Qt界面刷新优化的一些心得
  6. SSH和SSM对比总结
  7. 记住三句话,就会用双拼(韵母键快速记忆口诀)
  8. 用java编写简单的仓库管理_仓库管理系统+可视化界面java编写
  9. python考勤系统_使用Djang的考勤系统
  10. MATLAB----小波去噪