先前我曾经写了一篇“网站的安全登录认证设计”,可能是讲述的不够清楚,有一位读者就留言质疑到,“公钥顾名思义就是公开的啦,只要你愿意,谁都会有你的公钥,何来安全?应该是用网站的公钥加密,传到网站后,网站用自己的私钥解密吧”。
这些密码学的概念容易被搞混淆,的确也情有可原。因为公钥、私钥、加密、认证这些都是较为复杂的问题,其概念不太容易理解,理解不透就容易产生各种似是而非的概念,为了让大家对于密码学有进一步的了解,这里我就详细解说一下公钥和私钥的具体作用和使用方法。
加密和认证
首先我们需要区分加密和认证这两个基本概念。
加密是将数据资料加密,使得非法用户即使取得加密过的资料,也无法获取正确的资料内容,所以数据加密可以保护数据,防止监听攻击。其重点在于数据的安全性。身份认证是用来判断某个身份的真实性,确认身份后,系统才可以依不同的身份给予不同的权限。其重点在于用户的真实性。两者的侧重点是不同的。
公钥和私钥
其次我们还要了解公钥和私钥的概念和作用。
在现代密码体制中加密和解密是采用不同的密钥(公开密钥),也就是非对称密钥密码系统,每个通信方均需要两个密钥,即公钥和私钥,这两把密钥可以互为加解密。公钥是公开的,不需要保密,而私钥是由个人自己持有,并且必须妥善保管和注意保密。
公钥私钥的原则:
- 一个公钥对应一个私钥。
- 密钥对中,让大家都知道的是公钥,不告诉大家,只有自己知道的,是私钥。
- 如果用其中一个密钥加密数据,则只有对应的那个密钥才可以解密。
- 如果用其中一个密钥可以进行解密数据,则该数据必然是对应的那个密钥进行的加密。
非对称密钥密码的主要应用就是公钥加密和公钥认证,而公钥加密的过程和公钥认证的过程是不一样的,下面我就详细讲解一下两者的区别。
基于公开密钥的加密过程
比如有两个用户Alice和Bob,Alice想把一段明文通过双钥加密的技术发送给Bob,Bob有一对公钥和私钥,那么加密解密的过程如下:
- Bob将他的公开密钥传送给Alice。
- Alice用Bob的公开密钥加密她的消息,然后传送给Bob。
- Bob用他的私人密钥解密Alice的消息。
上面的过程可以用下图表示,Alice使用Bob的公钥进行加密,Bob用自己的私钥进行解密。
基于公开密钥的认证过程
身份认证和加密就不同了,主要用户鉴别用户的真伪。这里我们只要能够鉴别一个用户的私钥是正确的,就可以鉴别这个用户的真伪。
还是Alice和Bob这两个用户,Alice想让Bob知道自己是真实的Alice,而不是假冒的,因此Alice只要使用公钥密码学对文件签名发送给Bob,Bob使用Alice的公钥对文件进行解密,如果可以解密成功,则证明Alice的私钥是正确的,因而就完成了对Alice的身份鉴别。整个身份认证的过程如下:
- Alice用她的私人密钥对文件加密,从而对文件签名。
- Alice将签名的文件传送给Bob。
- Bob用Alice的公钥解密文件,从而验证签名。
上面的过程可以用下图表示,Alice使用自己的私钥加密,Bob用Alice的公钥进行解密。
总结
好了,上面就详细讲述了加密、认证、公钥、私钥这四个概念,明白这些概念后,你就应该对“网站的安全登录认证设计”一文所讲述的概念有了更清晰的了解了。
分享到:
相关推荐
"公钥加密与PKI实验_加密解密_实验楼 - 实验楼.url"指向的链接可能是一个在线实验平台,提供实践性的教程,让学习者通过实际操作来理解公钥加密和PKI的工作流程。 总之,公钥加密、数字签名、公钥认证和基于PKI的...
1. SSL/TLS协议:SSL(安全套接层)和TLS(传输层安全性)是用于在互联网上进行安全通信的协议,它们利用数字证书和公钥私钥技术为网站和用户之间的数据传输提供加密和身份验证。 2. 数字签名:利用私钥进行签名,...
总结来说,C#中的RSA公钥加密和私钥解密是通过RSACryptoServiceProvider类实现的,它为开发者提供了加密和解密的便捷接口。在VS2017这样的开发环境中,我们可以方便地构建这样的系统,确保数据在传输过程中的安全。
在.NET环境下,我们可以使用内置的System.Security.Cryptography命名空间中的类来实现RSA加密和解密。 首先,让我们深入了解一下RSA的工作原理。RSA的核心是两个密钥:公钥和私钥。公钥可以公开,任何人都可以获取...
通过理解和应用公钥加密和公钥认证,我们可以构建更加安全的网络环境,保护个人信息和商业数据免受威胁。随着技术的不断进步,密码学的应用领域还将继续扩展,为人类社会带来更多的便利和安全。
公钥私钥体系是现代密码学中的核心概念,它基于一对密钥,即公开的公钥和私有的私钥,用于实现数据加密和解密。公钥可以被任何人知道,用于加密信息,而私钥必须保密,用于解密信息。这种机制确保了即使发送者和接收...
RSA算法是一种非对称加密算法,它在信息安全领域扮演着重要...通过阅读该博客,你可以更深入地理解RSA公钥加密和私钥解密的过程,并了解如何在实际场景中应用这一加密机制。为了获取更多细节,建议访问提供的博客链接。
在请求中,数据使用公钥加密,然后由拥有私钥的服务端解密。这种机制确保只有持有私钥的服务端能解密信息,增强了安全性。同时,私钥也可以用于数字签名,证明请求来自合法的源头。 HTTPS(HTTP over TLS/SSL)是一...
在深入讨论公钥和私钥之前,我们先来了解一下加密和认证这两个基础概念: 1. **加密**:通过特定算法将原始信息转换成不可读的形式,即密文,从而防止未授权访问。这一过程确保了信息的机密性,即使信息被截获,...
任何拥有公钥的人都可以验证由相应私钥加密的数据,但无法反向推导出私钥。 #### 二、生成密钥对 接下来详细介绍如何使用MobaXterm生成密钥对。 1. **启动虚拟机和MobaXterm**: - 启动虚拟机“red”。 - 打开...
SM2算法还包括了数字签名和验证功能,这在数据完整性保护和身份认证中扮演重要角色。 在加解密过程中,SM2算法的工作流程如下: 1. 发送方使用接收方的公钥对明文进行加密,得到密文。 2. 接收方收到密文后,使用...
公钥加密的核心原理是,发送方用接收方的公钥对信息加密,接收方再用自己的私钥来解密。这种加密方式让数据可以在不安全的通道中传输,只有持有正确私钥的接收方才能解密和阅读信息。这种方式在安全性上较对称加密有...
本文将详细介绍标题中提到的“公钥加密”、“流加密”和“摘要”算法,以及描述中列出的RSA、Chacha、Salsa20、SHA-1和HMAC等相关知识点。 首先,我们来看公钥加密。公钥加密,也称为非对称加密,是一种使用一对...
RSA算法是一种非对称加密算法,它在信息安全领域有着广泛的应用,特别是在数据传输中的安全保护。此源码示例是基于.NET框架实现的RSA私钥加密和公钥解密功能,对于理解RSA加密机制和在C#编程环境中如何应用非常有...
混合加密方案结合了公钥加密和对称加密的优点,以提高性能和灵活性。在 Boneh-Franklin 的混合加密方案中,全局密钥生成算法(Setup)产生一对全局公钥-私钥(mpk, msk),用户私钥生成算法(UKG)利用全局私钥和...
RSA公钥加密算法是现代密码学中的一个重要组成部分,由Ron Rivest、Adi Shamir和 Leonard Adleman 在1977年共同提出,因此得名RSA。它是一种非对称加密技术,广泛应用于数据传输的安全保护,如HTTPS、数字签名、SSL/...
一旦私钥泄露或被恶意破坏,将导致整个系统的安全崩溃,进而影响信息加密和数字签名的有效性。因此,如何安全地存储私钥成为了亟需解决的问题之一。 #### 基于摘要口令加密私钥的解决方案 为了解决上述问题,文章...
数据加密和身份认证是网络安全中的两个关键概念,它们在保护数据安全和确保用户身份的合法性方面发挥着重要作用。数据加密是将敏感信息转化为无法理解的形式,以防止未经授权的访问,而身份认证则用来验证用户的身份...
2. **加密数据**:将明文数据用公钥加密。 3. **解密数据**:使用私钥解密密文数据,得到原始明文。 ```csharp // 创建RSA对象 RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); // 获取公钥和...