`
8366
  • 浏览: 812898 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

加密,解密,认证,数字签名,公钥私钥

阅读更多

 

 

Bob,Alice和数字证书

网络安全中最知名的人物大概就是Bob和Alice了,因为很多安全原理阐述中都用这两个虚拟人物来进行实例说明。

我们来看看Bob是怎么从CA中心获得一个数字证书的:

1、Bob首先创建他自己的密钥对(key pair),包含公钥和私钥;

2、Bob通过网络把他的公钥送到CA中心,公钥中包含了Bob的个人鉴别信息(他的名字、地址、所用设备的序列号等等)。这些信息是证书所必需的;

3、这个证书申请在CA中心服务器上会一直处于等待(pending)状态,直到CA中心的某人开始处理Bob的请求;

4、在CA中心的某人鉴定并确认了Bob确实是那个提交公钥的人。为了确定Bob和密钥之间的对应关系,这个确认过程会通过某种人和人之间、带外的方式进行;

5、Bob定期地对CA服务器进行查询,希望他的证书申请过程能完成并已可取回;

6、CA中心创建并签署一个包含Bob的公钥及个人信息的证书,从而保证密钥的确实性;

7、Bob查询CA服务器,发现证书已准备好,马上下载证书并将证书存储起来;

8、Bob现在可以使用证书来发布他的公钥,而其他使用Bob证书的人可以通过检验CA中心的签名(检验CA签名需要CA的公钥)来验证证书的确实性。
 

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
一,公钥私钥
1,公钥和私钥成对出现
2,公开的密钥叫公钥,只有自己知道的叫私钥
3,用公钥加密的数据只有对应的私钥可以解密
4,用私钥加密的数据只有对应的公钥可以解密
5,如果可以用公钥解密,则必然是对应的私钥加的密
6,如果可以用私钥解密,则必然是对应的公钥加的密
明白了?
假设一下,我找了两个数字,一个是1,一个是2。我喜欢2这个数字,就保留起来,不告诉你们,然后我告诉大家,1是我的公钥。
我有一个文件,不能让别人看,我就用1加密了。别人找到了这个文件,但是他不知道2就是解密的私钥啊,所以他解不开,只有我可以用数字2,就是我的私钥,来解密。这样我就可以保护数据了。
我的好朋友x用我的公钥1加密了字符a,加密后成了b,放在网上。别人偷到了这个文件,但是别人解不开,因为别人不知道2就是我的私钥,只有我才能解密,解密后就得到a。这样,我们就可以传送加密的数据了。
现在我们知道用公钥加密,然后用私钥来解密,就可以解决安全传输的问题了。如果我用私钥加密一段数据(当然只有我可以用私钥加密,因为只有我知道2是我的私钥),结果所有的人都看到我的内容了,因为他们都知道我的公钥是1,那么这种加密有什么用处呢?
但是我的好朋友x说有人冒充我给他发信。怎么办呢?我把我要发的信,内容是 c,用我的私钥2,加密,加密后的内容是d,发给x,再告诉他解密看是不是c。他用我的公钥1解密,发现果然是c。这个时候,他会想到,能够用我的公钥解密的数据,必然是用我的私钥加的密。只有我知道我得私钥,因此他就可以确认确实是我发的东西。这样我们就能确认发送方身份了。这个过程叫做数字签名。当然具体的过程要稍微复杂一些。用私钥来加密数据,用途就是数字签名。
好,我们复习一下:
1,公钥私钥成对出现
2,私钥只有我知道
3,大家可以用我的公钥给我发加密的信了
4,大家用我的公钥解密信的内容,看看能不能解开,能解开,说明是经过我的私钥加密了,就可以确认确实是我发的了。
总结一下结论:
1,用公钥加密数据,用私钥来解密数据
2,用私钥加密数据(数字签名),用公钥来验证数字签名。
在实际的使用中,公钥不会单独出现,总是以数字证书的方式出现,这样是为了公钥的安全性和有效性。
二,SSL
我和我得好朋友x,要进行安全的通信。这种通信可以是QQ聊天,很频繁的。用我的公钥加密数据就不行了,因为:
1,我的好朋友x没有公私钥对,我怎么给他发加密的消息啊?(注:实际情况中,可以双方都有公私钥对)
2,用公私钥加密运算很费时间,很慢,影响QQ效果。
好了,好朋友x,找了一个数字3,用我的公钥1,加密后发给我,说,我们以后就用这个数字来加密信息吧。我解开后,得到了数字3。这样,只有我们两个人知道这个秘密的数字3,别的人都不知道,因为他们既不知x挑了一个什么数字,加密后的内容他们也无法解开,我们把这个秘密的数字叫做会话密钥。
然后,我们选择一种对称密钥算法,比如DES,(对称算法是说,加密过程和解密过程是对称的,用一个密钥加密,可以用同一个密钥解密。使用公私钥的算法是非对称加密算法),来加密我们之间的通信内容。别人因为不知道3是我们的会话密钥,因而无法解密。
好,复习一下:
1,SSL实现安全的通信
2,通信双方使用一方或者双方的公钥来传递和约定会话密钥(这个过程叫做握手)
3,双方使用会话密钥,来加密双方的通信内容
上面说的是原理。大家可能觉得比较复杂了,实际使用中,比这还要复杂。不过庆幸的是,好心的先行者们在操作系统或者相关的软件中实现了这层(Layer),并且起了一个难听的名字叫做SSL,(Secure Socket Layer)。

本文来自CSDN博客,转载请标明出处:http://blog.chinaunix.net/u2/72383/showart_2121978.html

分享到:
评论

相关推荐

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

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

    数字证书原理,公钥私钥加密原理

    3. 安全电子邮件:像S/MIME和PGP这样的协议允许用户使用数字证书和公钥私钥技术对电子邮件进行加密和签名,保证邮件内容的机密性和真实性。 4. 安全身份认证:用户可以使用数字证书和公钥私钥技术来对服务器或...

    RSA生成公钥私钥和使用公钥私钥加密解密demo

    本示例提供了一个RSA加密工具类,用于生成公钥和私钥,并使用它们进行加密和解密操作,这对于保护数据库中的敏感信息,如密码,是非常必要的。 1. **RSA算法原理**: RSA算法基于数论中的大数因子分解难题。其基本...

    公钥加密私钥解密&私钥加密公钥解密

    通过以上介绍,我们可以清晰地了解到公钥加密私钥解密与私钥签名公钥验证这两种技术的区别和联系。前者主要用于数据加密传输,后者则侧重于信息完整性和真实性的验证。两者结合使用,可以在很大程度上提升信息系统的...

    公钥加密,数字签名,公钥认证,认证授权,基于 PKI 授权.zip

    "公钥加密与PKI实验_加密解密_实验楼 - 实验楼.url"指向的链接可能是一个在线实验平台,提供实践性的教程,让学习者通过实际操作来理解公钥加密和PKI的工作流程。 总之,公钥加密、数字签名、公钥认证和基于PKI的...

    C# RSA加密、解密、加签、验签、支持JAVA格式公钥私钥、PEM格式公钥私钥、.NET格式公钥私钥

    C# RSA加密、解密、加签、验签、支持JAVA格式公钥私钥、PEM格式公钥私钥、.NET格式公钥私钥 对应文章: http://blog.csdn.net/gzy11/article/details/54573973

    数字证书原理,公钥私钥加密原理1

    【数字证书原理与公钥私钥加密概述】 在信息技术领域,数据安全至关重要,尤其是在网络通信中。为了确保信息不被未经授权的用户访问或篡改,加密技术被广泛应用。本文将探讨数字证书的基本原理以及公钥私钥加密的...

    C# RSA加密、支持JAVA格式公钥私钥

    RSA算法是一种非对称加密算法,它在信息安全领域有着广泛的应用,特别是在网络通信中的数据加密和数字签名。C#和Java作为两种常见的编程语言,都提供了实现RSA算法的库和接口。这个压缩包中的内容看起来是针对C#环境...

    Go-gorsa支持rsa公钥加密私钥解密;支持rsa公钥解密私钥加密

    "Go-gorsa"是一个专门为Go语言设计的安全库,它专注于RSA(Rivest-Shamir-Adleman)加密算法的实现,允许用户进行公钥加密和私钥解密,以及公钥解密和私钥加密的操作。这一特性使得gorsa在确保信息安全方面具有很高...

    Delphi RSA加解密【支持RSA公钥加密私钥解密,RSA私钥加密公钥解密,秘钥格式支持PKCS8和PKCS1】D7~XE10可用

    本文将详细讲解Delphi环境下如何实现RSA加解密,并着重讨论其支持的公钥加密私钥解密以及私钥加密公钥解密的功能,同时涉及PKCS8和PKCS1两种秘钥格式。 RSA是一种基于大数因子分解困难性的加密算法,由Ron Rivest、...

    Crptopp加密解密加签验签

    1,公钥私钥使用的是PEM格式,可使用网络工具互转xml格式 2,加密解密使用的是文件名,可直接使用字符串加解密 3,验证签名目前使用的UTF8格式,加签和验签必须保持统一,私钥加密,公钥解密。 4,静态库分release...

    支持rsa公钥加密私钥解密;支持rsa公钥解密私钥加密

    这个库可能提供了公钥加密、私钥解密、数字签名以及密钥生成等接口,使得开发者能够轻松地在Go程序中实现RSA算法,增强应用的安全性。使用这样的库,开发者可以遵循上述描述中的模式,灵活地处理加密和解密任务,...

    C# 实现与JAVA互通 加签/验签,RSA加密/解密

    * RSA加密解密:私钥解密,公钥加密。 * RSA数字签名-俗称加签验签:私钥加签,公钥验签。  * RSA加密解密:私钥解密,公钥加密。 * RSA数字签名-俗称加签验签:私钥加签,公钥验签。  * RSA加密解密:私钥...

    使用LibTomCrypt实现RSA加密解密算法,公钥、私钥分离

    最近研究非对称算法,发现LibTomCrypt库算法完善并且方便,但网上的实现了RSA算法的并不多,有实现了RSA算法的代码,但是加密和解密...这段代码生成key后提取了公钥和私钥,多次算法验证并记录加密解密时间,欢迎下载。

    RSA加密解密工具,用于文件的加密和解密* RSA加密解密:私钥解密,公钥加密

    9. **应用场景**:RSA加密解密工具常用于网络通信中的数据保护、软件激活、数字证书、电子邮件安全等领域,确保信息在传输过程中不被窃取或篡改。 总之,通过使用这个RSA加密解密工具并遵循操作指南,用户可以有效...

    Java公钥加密私钥解密.rar

    这个名为"Java公钥加密私钥解密.rar"的压缩包文件包含了一个使用Java实现的公钥/私钥加密解密的示例。在这个案例中,开发者可能使用了Java的Java Cryptography Extension (JCE) 来实现RSA算法,这是一种非对称加密...

    C++实现RSA公钥私钥加密算法

    RSA算法是一种非对称加密算法,它在信息...综上所述,C++实现RSA公钥私钥加密算法涉及了大数运算、素数检测、欧拉函数、模逆运算等多个数学和密码学概念。理解并实现这一算法有助于深入理解信息安全基础和加密技术。

    Android 获取签名公钥和公钥私钥加解密的方法(推荐)

    本文将详细讲解如何在Android中获取签名公钥以及如何进行公钥私钥加解密。 首先,我们需要了解基本的公钥加密原理。公钥加密是一种非对称加密算法,它包含一对密钥:公钥和私钥。公钥可以公开,用于加密数据;私钥...

Global site tag (gtag.js) - Google Analytics