加密和认证
首先我们需要区分加密和认证这两个基本概念。
加密是将数据资料加密,使得非法用户即使取得加密过的资料,也无法获取正确的资料内容,所以数据加密可以保护数据,防止监听攻击。其重点在于数据的安全性。身份认证是用来判断某个身份的真实性,确认身份后,系统才可以依不同的身份给予不同的权限。其重点在于用户的真实性。两者的侧重点是不同的。
公钥和私钥
公钥和私钥就是俗称的不对称加密方式,是从以前的对称加密(使用用户名与密码)方式的提高。
在现代密码体制中加密和解密是采用不同的密钥(公开密钥),也就是非对称密钥密码系统,每个通信方均需要两个密钥,即公钥和私钥,这两把密钥可以互为加解密。公钥是公开的,不需要保密,而私钥是由个人自己持有,并且必须妥善保管和注意保密。
公钥私钥的原则:
- 一个公钥对应一个私钥。
- 密钥对中,让大家都知道的是公钥,不告诉大家,只有自己知道的,是私钥。
- 如果用其中一个密钥加密数据,则只有对应的那个密钥才可以解密。
- 如果用其中一个密钥可以进行解密数据,则该数据必然是对应的那个密钥进行的加密。
用电子邮件的方式说明一下原理。
使用公钥与私钥的目的就是实现安全的电子邮件,必须实现如下目的:
1. 我发送给你的内容必须加密,在邮件的传输过程中不能被别人看到。
2. 必须保证是我发送的邮件,不是别人冒充我的。
要达到这样的目标必须发送邮件的两人都有公钥和私钥。
公钥,就是给大家用的,你可以通过电子邮件发布,可以通过网站让别人下载,公钥其实是用来加密/验章用的。私钥,就是自己的,必须非常小心保存,最好加上 密码,私钥是用来解密/签章,首先就Key的所有权来说,私钥只有个人拥有。公钥与私钥的作用是:用公钥加密的内容只能用私钥解密,用私钥加密的内容只能 用公钥解密。
比如说,我要给你发送一个加密的邮件。首先,我必须拥有你的公钥,你也必须拥有我的公钥。
首先,我用你的公钥给这个邮件加密,这样就保证这个邮件不被别人看到,而且保证这个邮件在传送过程中没有被修改。你收到邮件后,用你的私钥就可以解密,就能看到内容。
其次我用我的私钥给这个邮件加密,发送到你手里后,你可以用我的公钥解密。因为私钥只有我手里有,这样就保证了这个邮件是我发送的。
非对称密钥密码的主要应用就是公钥加密和公钥认证,而公钥加密的过程和公钥认证的过程是不一样的,下面我就详细讲解一下两者的区别。
基于公开密钥的加密过程
比如有两个用户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的公钥进行解密。
根证书
根证书是CA认证中心给自己颁发的证书,是信任链的起始点。安装根证书意味着对这个CA认证中心的信任。
总结
根据非对称密码学的原理,每个证书持有人都有一对公钥和私钥,这两把密钥可以互为加解密。公钥是公开的,不需要保密,而私钥是由证书持人自己持有,并且必须妥善保管和注意保密。
数字证书则是由证书认证机构(CA)对证书申请者真实身份验证之后,用CA的根证书对申请人的一些基本信息以及申请人的公钥进行签名(相当于加盖发证书机构的公章)后形成的一个数字文件。CA完成签发证书后,会将证书发布在CA的证书库(目录服务器)中,任何人都可以查询和下载,因此数字证书和公钥一样是公开的。
可以这样说,数字证书就是经过CA认证过的公钥,而私钥一般情况都是由证书持有者在自己本地生成的,由证书持有者自己负责保管。具体使用时,签名操作是发送方用私钥进行签名,接受方用发送方证书来验证签名;加密操作则是用接受方的证书进行加密,接受方用自己的私钥进行解密。
分享到:
相关推荐
### 公钥私钥加密解密、数字证书与数字签名详解 #### 一、基础知识概述 在探讨公钥私钥加密解密、数字证书以及数字签名之前,我们需要先理解几个核心概念。 **1. 密钥对:** - 在非对称加密技术中,存在两种密钥...
### 公钥私钥加密详解 #### 一、公钥私钥加密原理 **公钥私钥加密**是一种非对称加密技术,它基于一对密钥:公钥和私钥。其中,公钥可以公开分享给任何需要的人,而私钥则由密钥所有者独自保管,不得泄露。这种...
数字证书是公钥加密系统中不可或缺的一部分,它用于身份验证、数据加密和数字签名。常见的数字证书格式有 X.509,它定义了两种证书:公钥证书和属性证书。 X.509 证书格式由以下部分组成: * 证书元数据...
- **数字签名**:私钥可以用于生成数字签名,公钥用于验证签名的合法性,确保数据未被篡改。 - **SSH连接**:在SSH协议中,公钥被放在远程服务器上,允许客户端使用相应的私钥进行安全登录。 **5. 其他OpenSSL命令*...
### 数字签名与数字证书详解 #### 一、数字签名概览 数字签名是一种用于验证电子文档完整性和来源的技术手段,常被应用于电子商务、电子政务以及其他需要确保信息安全传输的领域。数字签名通过加密技术实现,具体...
### 数字证书原理详解 #### 一、基础知识 在深入探讨数字证书之前,我们需要了解一些基本的概念和技术背景,包括公钥密码体制、对称加密算法、非对称加密算法、RSA算法及其应用。 ##### 1.1 公钥密码体制(Public...
本文将深入探讨Java中的数字证书概念,生成过程,以及相关的文档说明。 一、数字证书概述 数字证书是网络安全的基础,它类似于现实生活中的身份证,通过权威机构(称为证书颁发机构,或CA)进行签名,以证明持有者...
《数字证书格式详解与操作指南》 数字证书在网络安全中扮演着至关重要的角色,它用于确认网络实体的身份,确保信息传输的安全性。本文将深入探讨常见的数字证书格式、它们的区别以及相关的操作方法。 1. 数字证书...
### 个人数字证书与CA认证知识点详解 #### 一、数字证书的概念与作用 - **定义**:数字证书是一种用于在网络环境中验证用户身份的技术手段,它由一系列数据组成,包括用户的个人信息及其对应的数字签名。 - **功能...
【Java安全通信与数字证书详解】 在Java编程中,安全通信是确保数据在传输过程中不被篡改或窃取的关键。数字证书作为一种重要的安全机制,用于验证通信双方的身份,保证信息的真实性。本篇文章将深入探讨Java中如何...
- 私钥不应以明文形式存储,应采用安全方式如证书存储或加密后存储。 - 在传输过程中,公钥也需要保护,以防中间人攻击。 - 加密数据的长度有限制,通常小于RSA密钥长度的一半。 8. **应用场景**: RSA常用于...
**X.509数字证书详解** X.509是一种国际标准,定义了公钥证书的格式,用于在开放的网络环境中验证身份。这个标准由国际电信联盟电信标准部门(ITU-T)的X系列建议制定,编号为X.509。X.509证书是网络安全体系中的...
**X509数字证书详解** X509是一种国际标准,用于定义公钥基础设施(PKI)中数字证书的格式。这个标准由国际电信联盟(ITU)的T组(Telecommunication Standardization Sector)制定,具体是X.509v3版本。X509证书...
- 服务器端证书:证明服务器身份的数字证书,包含服务器的公钥和身份信息。 - 服务器端私钥:与服务器端证书的公钥配对,用于证明服务器持有证书。 - 客户端证书:证明客户端身份的数字证书,包含客户端的公钥和身份...
### Java数字证书详解 #### 一、加密算法概述 在探讨Java数字证书之前,我们首先需要理解加密算法的基础知识。加密算法是确保网络通信安全的关键技术之一,它通过将原始数据转换成一种不可读的形式来保护信息不被...
**IIS 6.0 服务器数字证书部署详解** 在互联网通信中,为了保障数据的安全传输,服务器证书扮演着至关重要的角色。特别是对于运行在Windows Server 2003上的IIS 6.0(Internet Information Services)应用程序...
#### 四、浏览器数字证书应用接口规范详解 **1. 接口概述** 该规范详细定义了浏览器数字证书应用接口的功能、参数、返回值等,确保不同开发者能够基于这些接口实现一致的数字证书管理功能。 **2. 功能模块** - *...