`
wx1569488408
  • 浏览: 79134 次
文章分类
社区版块
存档分类
最新评论

SSL 与数字证书 - 第三章 - 加密与算法

 
阅读更多

目录
第一章    为什么网络是不安全的?
第二章    信息安全的基本概念 
    第一节 安全的定义  
    第二节 认证与授权  
第三章    加密与算法  
    第一节 散列(HASH)  
    第二节 对称加密(SYMMETRIC CRYPTOGRAPHY)  
    第三节    非对称加密(ASYMMETRIC CRYPTOGRAPHY)  
    第四节 数字签名(DIGITAL SIGNATURE)  
第四章    数字证书  
    第一节    数字证书的构成  
    第二节 如何验证数字证书?   
    第三节 数字证书的级联(CERTIFICATE CHAIN)   
第五章    SSL的基本原理   
结束语   

 

第三章    加密与算法

加密是保护信息安全的常用手段之一。对信息的加密是需要加密算法的,如果加密算法被破解了,那么一切免谈。不过,基本上,要破解一个加密算法是非常非常困难的。至少,目前流行的加密算法还是安全的,所以我们也就不必考虑这个问题了。

第一节 散列(Hash)
经常用bt下载的人应该很熟悉这个。这就是MD5啊~虽然Hash不只是MD5,常见的还有SHA1。不过MD5最流行所以一般大家说的hash就是它了。值得一提的是,山东大学的王小云在2005年的时候发了一篇“ How to Break MD5 and Other Hash Functions”引起了信息安全界的轰动。虽然我没仔细研读过这篇paper,不过我相信按照paper里面的说法要破解MD5还是很费劲的,要不早就出乱子了。所以我们就不考虑这个问题了。那么究竟什么是MD5呢?我来简单解释一下。

Hash就是一个工具,能把任意大小的文档变成一个 固定大小(MD5是32个字符)的字符串。并且,这个过程是 不可逆的,也就是说,没有任何办法从那个字符串得到原来那个文档。还有很重要的一点是, 任意两个文档(哪怕极其相似)得到相同字符串的概率几乎等于0。现在你有一个10000字的文章,发给你的朋友,那你的朋友怎么判断他收到的文章一个标点符号都没有少呢?你在发送文章的同时把这个文章的Hash字符串也发过去,这样你的朋友收到文章以后,根据收到的文章重新计算一遍这个字符串,如果这个字符串和你发过去的一样,那就证明你朋友收到的文章是和你发送的一模一样。

第二节 对称加密(Symmetric Cryptography)
所谓加密就是把一段能看懂的东西通过某种变换变成看不懂的东西。当然这种变换是可逆的,否则加密有什么用啊!这里所说的“变换”就是加密算法。目前我们所说的加密算法基本上都是基于密钥的。加密算法不能单独工作,必须有密钥配合。就像现实生活中的锁,同一型号的锁的原理都一样,但是每把锁都有各自的钥匙,用来开锁和关锁。 加密的算法是公开的,但密钥是保密的。自己“发明”加密算法是很愚蠢的,除非你是密码学专家。历史上有很多使用自己发明的加密算法的笑话,往往你发明的算法都是自以为是,其实很容易破解的拉。而目前流行的加密算法都是经过时间和众人检验的,一般情况下,只要密钥不泄露,那就是安全的。有一点要说明的是,虽然我们平时一般说“加密算法”,但往往这个加密算法都包含解密算法的。 “对称加密”是指加密和解密的密钥是同一个。目前流行的对称加密算法有DES,AES,Blowfish等等。举个例子,你有一篇文章想要发给你朋友,但是你不想让别人看见这篇文章所以你选择AES加密。用的密钥是你和你朋友事先约定的,只有你们两个人知道。在发送之前,你用AES算法和约定好的密钥给文章加密,然后把加密过的文章发送给你的朋友。你朋友收到以后可以用AES算法和那个密钥解密而获得原始的那篇文章。 对称加密算法的优点是速度快,缺点是密钥管理不方便,要求共享密钥。

第三节    非对称加密(Asymmetric Cryptography)
如果你理解了上面讲的对称加密,那么这里的非对称加密就很简单了。从字面上理解就可以猜到, 加密和解密不是用的同一个密钥,其中一个称为公钥(public key),另一个称为私钥(private key)。公钥就是公开的,大家都知道,而私钥只有你自己知道。这两个密钥在数学上是有联系的,用公钥加密的内容只能由相应的私钥来解密,反过来,用私钥加密的内容只能由相应的公钥来解密。另外很重要的一点是, 不能从公钥推导出私钥,或者说很困难。常用的非对称加密算法有RSA,ECC等等。举个例子,你想要把一篇文章发送给你的朋友,但是不想让别人看到这篇文章。除了用上面讲的方法以外,你还可以用非对称加密来实现。在发送之前,你把文章用你朋友的公钥加密(公钥是公开的,每个人都知道),然后把加密过后的文章发送给你的朋友,你的朋友可以用他的私钥来解密。其他人获得了你传送的内容都是没有用的,因为只有你朋友有私钥可以解密。 非对称加密算法的优点是密钥管理很方便,缺点是速度慢。

第四节 数字签名(Digital Signature)
我们先来看看现实生活中的签名是如何实现的。比如为信用卡账单签名,商家会打印一张消费单子给你,你看过以后觉得没有问题,于是在这张纸上签上自己的大名,表示你承认了这笔消费,并同意商家从你的信用卡账户扣钱。而商家可以对比你的签名和信用卡背后的签名是否一致来验证你是否冒用别人的信用卡(事实上很多商家不看的哦)。这个流程是基于一个假设的: 只有你自己能重现你的签名。虽然我们不能每次都签的一摸一样,但是通过笔迹鉴定,我们可以确定这个签名是否出自你手。分析一下,签名具有哪些特点呢?
    1.    不可伪造 - 通过笔记鉴定来保证。
    2.    不可移植,复制 - 复印,剪贴的签名当然无效咯!
    3.    不可否认 – 因为不可伪造,不可移植,不可复制,所以不可否认。
相似的,在虚拟世界里,我们有数字签名来帮助证明某个文档是你创建的,或者是你认可的。 数字签名所用的技术是散列和非对称加密。数字签名的假设是: 只有你自己有你的私钥。根据前面对散列的介绍,我们先为你要签名的信息生成一个Hash字串,Hash1,然后用你的私钥加密得到Encrypted(Hash1),这就是你对这个文档的数字签名。当别人需要验证某个文档是否是你签名的时候,只需要用你的公钥解密你的签名得到Hash1,并和该文档计算出来的Hash2对比,查看是否一致。如果一致则说明你确实对该文档签过名,否则就是没有。下面来分析一下,数字签名是如何保证上面所讲的签名的特点的。
    1.    不可伪造
    因为只有你有你自己的私钥,所以任何其他人都无法产生用你的私钥加密过的Hash1。
    2.    不可移植,复制
    你对文档A的签名不可能对文档B也有效,因为你对文档B的签名必然和对A的签名不一样,这是由Hash的唯一性保证的。拿你对A的签名去验证B是不可能通过的。
    3.    不可否认
    因为不可伪造,不可移植,不可复制,所以不可否认。
仔细想想数字签名和现实生活中的签名真的蛮像的,逻辑上是一样的。或许你在想,为什么要对Hash加密呢?我直接对文档用我的私钥加密不就完了嘛?对啊,效果是一样的,但是效率不一样哦~别忘了非对称算法是很慢的,加密一个100M的文件要算半天呢!

这里要顺便提一下消息认证码( Message Authentication Code)。 它和数字签名很相似,只不过它是用对称加密的而数字签名用的是非对称加密。

在现实生活中,各种加密手段往往是配合使用以达到最好的效果和效率。比如我将要介绍的SSL和数字证书,就是混合了各种的加密手段。

转载于:https://my.oschina.net/zhlmmc/blog/42109

分享到:
评论

相关推荐

    公钥私钥加密解密数字证书数字签名详解.docx

    ### 公钥私钥加密解密、数字证书与数字签名详解 #### 一、基础知识概述 在探讨公钥私钥加密解密、数字证书以及数字签名之前,我们需要先理解几个核心概念。 **1. 密钥对:** - 在非对称加密技术中,存在两种密钥...

    SSL安全证书-概念解析1

    CA是第三方权威机构,负责发放和管理数字证书,确保网络中各个实体的身份验证。CA通过数字签名确保证书的真实性,防止伪造和篡改。CA建立一个自上而下的信任链,下级CA信任上级CA,并由上级CA为其颁发证书。CA的主要...

    数字证书简介-SSL协议及数据安全传输.pdf

    一个有效的数字证书是通信双方信任的基础,它通过公钥基础设施(PKI)提供了电子文档的权威性,使得任何第三方都难以伪造或篡改。数字证书中包含的用户公钥信息、权威机构的认证信息以及有效期等,都是数据安全传输...

    Wiley - SSL and TLS esssentials- Securing the Web

    - **服务器认证**:服务器向客户端发送数字证书,证书包含服务器的公钥,客户端验证证书的有效性。 - **密钥交换**:双方协商出一个共享密钥,该过程通常基于Diffie-Hellman算法。 - **客户端认证**:在某些场景...

    Openssl与数字证书

    **数字证书**是由可信的第三方机构(证书颁发机构,CA)颁发的一种电子文档,用于验证数字证书持有者身份的真实性及其公钥的有效性。数字证书通常包含以下信息: - 证书持有者的名称和相关信息。 - 证书持有者的公钥...

    ssl加密算法、消息摘要算法[归纳].pdf

    SSL/TLS协议结合了多种密码学技术,包括加密算法、消息摘要算法(哈希算法)以及数字签名等,确保了通信的安全性。 1. 加密算法: 加密算法是SSL/TLS协议的核心组成部分,分为对称加密和非对称加密两种。 - 对称...

    JAVA加密与解密的艺术--第2版.rar

    全书包含3个部分,基础篇对Java企业级应用的安全知识、密码学核心知识、...综合应用篇既细致地讲解了加密技术对数字证书和SSL/TLS协议的应用,又以示例的方式讲解了加密与解密技术在网络中的实际应用,极具实践指导性。

    数字证书签名很强大的算法

    总结来说,数字证书签名是一种强大的安全工具,利用非对称加密算法确保数据的隐私和完整性。在编程中,我们可以通过特定的类库实现这一功能,而在实际网络环境中,数字证书签名广泛应用在各种安全场景,如加密通信、...

    GlobalSign ssl 证书安装配置指南-Apache1

    GlobalSign作为知名的数字证书颁发机构,提供了详尽的SSL证书安装配置流程,以下是具体的步骤解析: ### 第一步:生成证书请求文件(CSR) 生成CSR(Certificate Signing Request)是SSL证书申请的第一步。在OpenSSL...

    本地数字签名证书SSL

    在生成测试版本的HTTPS SSL数字证书时,我们需要了解以下关键步骤和知识点: 1. **证书结构**:一个SSL证书通常包含发行者的身份、拥有者的身份信息(通常是网站域名)、公钥以及证书的有效期等信息。这些信息经过...

    Delphi_d7+加密算法大全

    本文将深入探讨Delphi 7与加密算法的相关知识,旨在为使用Delphi 7进行加密编程的开发者提供详尽的指导。 首先,加密算法是信息安全的核心组成部分,用于保护数据的隐私和完整性。在Delphi 7中,我们可以利用内置的...

    java获取数字证书信息

    在本篇文章中,我们将深入探讨如何使用Java来获取数字证书的信息,包括使用TOMCAT和JDK搭建SSL服务的过程、如何用OpenSSL签发证书以及如何支持第三方CA等内容。 #### 一、使用TOMCAT和JDK搭建SSL服务 ##### 1. ...

    行业分类-设备装置-更新SSL证书的计算机系统和方法.zip

    - 数据加密:SSL证书通过公钥和私钥技术,对在网络上传输的数据进行加密,防止被第三方窃取。 - 身份验证:证书中的数字签名确保了服务器的身份,防止中间人攻击或钓鱼网站。 2. SSL证书的类型: - 域名验证(DV...

    [Java加密与解密的艺术].梁栋.扫描版.pdf

     全书包含3个部分,基础篇...高等数据加密—非对称加密算法第9章 带密钥的消息摘要算法—数字签名算法第三部分 综合应用篇第10章 终极武器—数字证书第11章 终极装备—安全协议第12章 量体裁衣—为应用选择合适的装备

    ssl证书配置

    SSL(Secure Sockets Layer)证书是一种用于加密互联网通信的数字证书,其主要作用是在客户端和服务器之间建立安全连接,确保数据传输的安全性和完整性。本文将详细介绍如何配置SSL证书,包括自签名证书和第三方机构...

    SSL and TLS Theory and Practice.pdf

    第三章转向了对TLS协议的介绍。TLS协议是SSL协议的后续版本,目前已经成为Web安全通信的标准。TLS协议相较于SSL有了许多改进和完善,包括增强的安全性、更灵活的加密算法支持等。 - **TLS伪随机函数(TLS PRF)**:...

    加密及证书技术

    数字证书是一种用于在网络环境中验证用户身份的工具,它是一组数字信息,由第三方信任机构(如CA中心)签发。数字证书可以用来确认网络通信双方的身份,确保信息传输的安全性。 ##### 数字证书的构成 根据CCITT X....

    Android SSL证书验证原理

    3. **数字证书、公钥与密钥**:Android系统使用OpenSSL库交换证书和协商加密算法,但实际的证书验证并非由OpenSSL库完成。系统会将自身的证书和私钥存储在密钥仓库中,在进行SSL握手之前,将这些信息放入SSL_CTX变量...

    https安全认证的证书文件 ssl.zip

    SSL已过时,现代网络多使用TLS协议,它提供了更强的加密算法和更安全的握手过程。TLS1.3是当前的最新版本,提供了更快的连接速度和更高的安全性。 9. **证书吊销** 如果证书被盗用或不再需要,可以通过CRL...

    java数字证书

    数字证书是由权威的第三方机构(CA)颁发的一种数字文档,用于在网络通信中确认实体的身份。它包含了证书所有者的公钥以及其它一些关键信息,例如: - **证书拥有者**:指明该证书的所有人。 - **证书使用者**:...

Global site tag (gtag.js) - Google Analytics