惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Attack and Defense Labs
Attack and Defense Labs
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
T
Threatpost
Project Zero
Project Zero
Know Your Adversary
Know Your Adversary
T
The Exploit Database - CXSecurity.com
P
Palo Alto Networks Blog
T
Tenable Blog
Scott Helme
Scott Helme
T
Tor Project blog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
NISL@THU
NISL@THU
Cisco Talos Blog
Cisco Talos Blog
Security Latest
Security Latest
Simon Willison's Weblog
Simon Willison's Weblog
S
Securelist
Help Net Security
Help Net Security
Google DeepMind News
Google DeepMind News
Cloudbric
Cloudbric
C
Check Point Blog
Jina AI
Jina AI
Webroot Blog
Webroot Blog
量子位
博客园 - 三生石上(FineUI控件)
小众软件
小众软件
P
Privacy & Cybersecurity Law Blog
罗磊的独立博客
H
Heimdal Security Blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
人人都是产品经理
人人都是产品经理
N
News and Events Feed by Topic
www.infosecurity-magazine.com
www.infosecurity-magazine.com
宝玉的分享
宝玉的分享
Hacker News - Newest:
Hacker News - Newest: "LLM"
L
LINUX DO - 热门话题
The GitHub Blog
The GitHub Blog
T
Troy Hunt's Blog
PCI Perspectives
PCI Perspectives
Vercel News
Vercel News
N
News | PayPal Newsroom
A
Arctic Wolf
T
The Blog of Author Tim Ferriss
博客园 - 司徒正美
博客园 - 叶小钗
Y
Y Combinator Blog
V
V2EX
美团技术团队
O
OpenAI News
Microsoft Security Blog
Microsoft Security Blog
AWS News Blog
AWS News Blog

博客园 - 追梦华仔

Openfire服务器MySQL优化 放开Linux内核对用户进程可打开文件数和TCP连接的限制 SSL 握手协议 Visual Studio 2008下载 Visual Studio 2008 提示“无法识别工具版本4.0” 改造MUC实现Openfire群 Openfire S2S 经验分享 注册Jmail组件的三种方法 读取excel文件的时候 出错提示:外部表不是预期的格式 - 追梦华仔 - 博客园 System.Runtime.InteropServices.COMException: 服务器出现意外情况 Excel表格导入出错,提示“拒绝访问”的错误,ExcelObj = new Excel.Application(); 在 ASP.NET 中执行 URL 重写 XP下如何解决“ASP.NET 未被授权访问所请求的资源”的问题 - 追梦华仔 - 博客园 无法在web服务器上启动调试 您不具备调试此应用程序的权限 - 追梦华仔 - 博客园 Server Application Error ---Http 500错误解决方法 用Lucene实现在检索结果中再检索 [转载]Ruby on Rails:开源技术将深入企业 Lucene.Net中按时间范围查询,结果没有查到数据 Lucene.Net.Search.Highlight.FragmentQueue 中的派生方法 LessThan 不能减少访问
非对称密码学(Asymmetric Cryptography)- 转载
追梦华仔 · 2012-08-17 · via 博客园 - 追梦华仔

转载:http://www.cnblogs.com/artech/archive/2011/05/23/2054725.html

    作者:Artech

    出处:http://artech.cnblogs.com/

按照维基百科的定义,密码学(Cryptography)一种关于信息隐藏(Hiding Information)的研究或者实践。当代密码学是一种跨学科的研究,涉及的学科主要包括数学、计算机科学和工程学。站在消息交换的角度,密码学就是帮助我们实现对整个消息或者对消息的某个部分进行数字签名和加密的理论和方法。

     数字签名和加密依赖于相应的加密算法(Cryptographic Algorithm),从数学的角度来讲,加密算法是就是将被加密的数据和密钥作为自变量,将加密后的数据作为因变量的函数。与加密相对的操作是解密。按照加密和解密采用的密钥是否相同,我们将加密算法分为对称加密算法和非对称加密算法。前者采用相同的密钥进行加密和解密,后者则采用一组相互配对的密钥分别进行加密和解密。对于非对称加密,我们选择秘钥对中某一个密钥对消息进行加密,该密文只有通过另一个秘要方能解密。非对称密码学具有两个主要的应用:

直接通过对消息进行加密解决机密性问题;

通过数字签名实现身份认证和数据一致性的问题。

1.1     消息加密(Encryption

非对称加密依赖一组由公钥/私钥(Public Key /Private Key)组成的密钥对,所以采用非对称加密又被称为公钥加密(Public Key Cryptography)。具体来说,公钥和私钥均可以用于加密。如果密钥对中的其中一个用于加密,另一个则用于解密。公钥公诸于众,不具有隐私性,任何人均可以获取;而私钥专属于拥有该密钥对的实体,属于绝对隐私。

对于消息交换来说,通过非对称的方式对消息进行加密是能够确保消息的机密性。具体的做法是:消息的发送方采用接收方的公钥进行加密,接收方通过自己的私钥进行解密。由于私钥仅供接收方所有,所有其他人不能对密文进行解密。

1.2     数字签名(Digital Signature

我们所说的数字签名实际上包括两项主要的工作,签名(Signing)和检验(Verification),前者创建一个数字签名,后者验证签名的有效性。接下来,我们来简单介绍一下在消息交换场景下的签名和检验是如何实现的。

 

签名的过程其实很简单,整个流程如上图所示。整个流程包括两个步骤:首先,发送方首先采用某种算法对整个消息的内容实施哈希计算,得到一个哈希码。然后,发送使用自己的私钥对该哈希码就行加密,加密后得到的密文就是数字签名。该数字签名最终会连同发送方密钥对中的公钥(该公钥一般会内嵌于一个数字证书中)附加到原消息上一并发予接收方。

这三项被接收方接收之后,它就可以借助这个数字签名验证发送方的真实身份和消息的完整性,这个过程被称为数字签名的验证。整个数字签名检验流程如下图所示。首先,原消息被提取出来,通过相同的哈希算法得到一个哈希码。然后,数字签名被提取出来,采用相同的算法利用公钥对数字签名进行解密,得到生成数字签名的那个哈希码。两个哈希码进行比较,如果一致则可以证明数字签名的有效性以及消息本身的完整性。

 

采用非对称密码学对消息加密解决的是消息的机密性问题,而数字签名的作用则体现在如下三个方面:

身份认证(Authentication数字证书可以帮助我们验证消息发送源的真实身份,因为数字签名的内容是由一个私钥决定的,发送方只有通过专署于他的密钥对中的私钥生成数字签名,采用通过对方利用公钥实施的数字签名检验。而私钥是属于拥有者的私密信息,不对外公开的。对数字证书的检验实际上就确认消息的发送源是否是私钥的真正拥有者。

防止抵赖(Non-repudiation:防止抵赖在这里的代表对于接收到的经过数字签名的消息,如果接收方采用某个实体的公钥对数字签名检验成功,那么这个实体就是消息的发送方,不容对方抵赖。原因很简单,能够通过公钥对某个数字签名成功检验,证明生成该数字签名使用的是正确的私钥。

消息一致性(Integrity:而数字签名确实可以确保整个消息内容的一致性的,因为最初被用于私钥加密的哈希码是针对整个消息的内容进行哈希计算获得的。消息的内容一旦出现任何的改变,最终对数字签名的检验都将失败。

    在上面介绍数字签名的流程时,我们说发送方的公钥会连同生成的数字签名会附加到消息中,一并传送给接收方,以辅助接收方对发送进行身份验证。实际上,这个公钥在一般情况下是通过数字证书的形式进行传递的。数字证实在这里作为发送方的凭证。