电子邮件安全性

编程入门 行业动态 更新时间:2024-10-28 16:28:04
1.简介

电子邮件是Internet中使用的最广的应用程序,利用电子邮件,Internet用户可以向其他Internet用户发送消息、图形、声音、视频,等等。RFC 822定义了文本电子邮件消息格式。电子邮件消息分为两个部分:内容(体)和头。电子邮件消息包括几个头行和实际消息内容。头行通常包括关键字、冒号和关键字的变元。
电子邮件通信使用简单邮件传输协议(Simple Mail Transfer Protocol,SMTP)。发送方的电子邮件客户机软件将电子邮件传递给本地SMTP服务器。这个SMTP服务器实际将电子邮件消息传输到接收方的SMTP服务器,其主要任务是在发送方与接收方之间传递电子邮件消息,它的基础协议是TCP/IP,即SMTP在TCP/IP之上(应用层)运行,如下图所示:

电子邮件通信涉及下列基本步骤:
1.发送方SMTP服务器取得用户计算机发送的消息。
2.然后发送方的SMTP服务器将消息传递到接收方的SMTP服务器。
3.然后接收方计算机从接收方SMTP服务器取电子邮件消息,即使用邮局协议(Post Office Protocol,POP)或互联网邮件访问协议(Internet Mail Access Protocol,IMAP)。

2.隐私增强型邮件协议

2.1 简介
隐私增强型邮件协议(Privacy Enhanced Mail,PEM)是Internet体系结构委员会(IAB)采用的电子邮件安全标准,在Internet上提供安全电子邮件通信。PEM支持加密、不可抵赖、消息完整性三大密码学功能。
2.2 PEM工作原理
PEM首先进行规范转换,其次是数字签名,然后是加密,最后是64进制编码。发送电子邮件消息时,PEM提供了3个安全选项:
1.只签名(第一步和第二步)。
2.签名加64进制编码(第一、二、四步)。
3.签名、加密和64进制编码(第一、二、三、四步)。
下面介绍这四个步骤,注意接收方要按相反顺序执行这四个步骤,取得原先的明文电子邮件消息。
第一步:规范转换
电子邮件消息发送方与接收方使用的计算机可能具有不同体系结构和操作系统。这是因为,Internet支持只有TCP/IP堆栈的任何计算机,不管其体系结构和操作系统如何。因此,同一个计东西在不同计算机上可能有不同计算机上可能有不同的表示。因此,PEM把每个电子邮件消息变成抽象的规范表示,即不管发送方与接收方体系结构和操作系统如何,电子邮件消息总是按统一、独立格式传输。
第二步:数字签名
这是个典型数字签名过程,曾先用MD2与MD5之类算法生成电子邮件消息的消息摘要,如下图所示:
然后将生成的消息摘要用发送方的私钥加密,形成发送方的数字签名,如下图所示:

第三步:加密
这一步用对称密钥将电子邮件消息和数字签名加密,为此使用DES算法和CBC模式。
第四步:64进制编码
64进制编码也称为ASCII编码,将任意二进制输入变成可打印字符输出。这个方法用3个8位块(共24位)处理二进制输入,构成4组,各6位,每个6位组对应于一个8位输出字符,如下图所示:

注意图中的值并没有正确使用,只是在演示概念。
在64进制编码示例中,24位原始流为001000110101110010010001,下图显示了这个流的64进制编码过程:

映射64进制表,这里使用的是标准预定义表,如下表所示,从表中查找生成的十进制值,输出中使用表中十进制指定位置对应的字符。

6位值字符6位值字符6位值字符6位值字符
0A16Q32g48w
1B17R33h49x
2C18S34i50y
3D19T35j51z
4E20U36k520
5F21V37l531
6G22W38m542
7H23X39n553
8I24Y40o564
9J25Z41p575
10K26a42q586
11L27b43r597
12M28c44s608
13N29d45t619
14O30e46u62+
15P31f47v63/
(填充)=
3.PGP

PGP最有意义的方面是支持加密的基本要求,即简单易用、安全免费,包括文档和源代码。PGP支持的算法是用RSA、DSS与Diffie-Hellman进行非对称密钥加密,用IDEA、DES进行对称密钥加密,用SHA-1求消息摘要。
3.1 PGP工作原理
PGP的主要步骤分别为:数字签名、压缩、加密、数字信封以及64进制编码。发送电子邮件消息时,PGP提供了3个安全选项:
1.只签名(第一步和第二步)。
2.签名加64进制编码(第一、二、五步)。
3.签名、加密、封包与64进制编码(第一至第五步)。
下面介绍这5个步骤。注意接收方要按相反顺序执行这5个步骤,取得原先的明文电子邮件消息。
第一步:数字签名
PGP主要用SHA-1算法生成电子邮件信息的消息摘要,然后将生成的消息摘要用发送方的私钥加密,形成发送方的数字签名,得到发送方的数字签名。
第二步:压缩
这是PGP中增加的步骤,压缩输入消息和数字签名,减少要传输的最终消息长度,为此要使用著名的ZIP程序,ZIP基于Lempel-Ziv算法,Lempel-Ziv算法寻找重复的单词和字符串,将其存放在变量中,然后把重复的单词或字符串实例换成相应变量的指针。由于指针只要几位内存,因此这个方法可以压缩数据。
第三步:加密
这一步用对称密钥将第二步的压缩输出加密,即对压缩的电子邮件和数字签名进行加密,为此,通常使用IDEA算法和CFB模式。
第四步:数字信封
这里用接收方的公钥加密第三步加密所用的对称密钥,第三步与第四步的输出形成数字信封,如下图所示:

第五步:64进制编码
对第四步的输出进行64进制编码,和PEM中的64进制编码原理一样。
3.2 PGP算法
PGP支持很多种算法,下表中列举了最常用的一些短发:

算法类型描述
非对称密钥RSA:加密和签名,只用于加密,只用于签名
数字签名DSS:只用于签名
消息摘要MD5、SHA-1
加密IDEA、DES-3、AES

3.3 密钥环
当发送方要发送一个邮件消息给单个接收方时,没有太多的问题。当要把一个消息发送给多个接收方时,就会出现复杂性。如果Alice需要与10个人通信,Alice需要所有这10个人的公钥,因此,Alice需要10个公钥的密钥环。另外,PGP指定了一个公钥-私钥环。这是因为Alice需要改变她的公钥-私钥对,或者对不同的用户组需要不同的密钥对。换句话说,每个PGP用户需要两组密钥环:自己的公钥-私钥对环以及其他用户的公钥环密钥。
在一个密钥换种,Alice维护这一个密钥对组,而在另一个中,则只是维护着其他用户的公钥,显然她是不可能有其他用户的私钥的。同样,PGP系统中的其他用户也有他们自己的两个密钥环。
3.4 PGP证书
为了信任用户的公钥,需要具有该用户的数字证书。PGP可以使用由CA签发的证书或使用它自己的证书系统。在PGP中,没有CA,每个用户可以为密钥环中的用户签发一个数字证书。在PGP中,CA的等价者(即签发证书的用户)称为倡导者,利用如下3个概念可以更好地理解这个概念:倡导者信任、证书信任和密钥合法性。
3.4.1 倡导者信任
在PGP中没有分层的概念,因此,每个用户都必须信任系统中的其他用户,PGP的可信环也不会太大,在现实生活中,也不可能完全信任认识的所有人。为了解决这个问题,PGP提供了多级信任,其级数取决于PGP的实现,但是为了简单起见,这里假设实现3级可信,分别称为不信任、部分信任和完全信任。倡导者信任指定了倡导者为系统中的其他用户分配给什么级别的信任。例如,Atul可能完全信任Jui,而Amity部分信任Jui。Jui则可能不信任Harsh,Harsh部分信任Amit等等,如下图所示:

3.4.2 证书信任
当用户A接收另一个用户的证书(由第三方C签发的)时,根据A在C中具有的信任级别。通常这与签发该证书的倡导者信任级别相同。下面来看一个示例,假设系统中有一个用户集,其中Mahesh完全信任Naren,部分信任Ravi和Amol,不信任Amit。
1.Naren签发两个证书,一个给Amrita(公钥为K1),另一个给Pallavi(公钥为K2)。Mahesh在他的公钥环中存储了Amrita和Pallavi的公钥和证书,其证书信任级别完全信任。
2.Ravi签发一个证书给Uday(公钥为K3)。Mahesh在他的公钥环中存储了Uday的公钥和证书,其证书级别为部分信任。
3.Amol签发两个证书,一个给Uday(公钥为K3),另一个给Parag(公钥为K4)。Mahesh在他的公钥环中存储了Uday和Parag的公钥和证书,其证书信任级别为部分信任。注意,Mahesh此时有Uday的两个证书了,一个是Ravi签发的,另一个是Amol签发的,证书级别都是部分信任。
4.Amit签发一个证书给Pramod(公钥为K4)。Mahesh在他的公钥环中存储了Pramod的公钥和证书,其证书信任级别为不信任,Mahesh也可以丢弃这个证书。
3.4.3 密钥合法性
倡导者信任和证书信任目的是确定是否信任某个用户的公钥,在PGP术语中,称为密钥合法性。Mahesh西药知道Amrita、Pallavi、Uday、Parmod等用户的公钥是否合法。PGP定义了如下的简单规则来确定的合法性:某个用户的密钥合法性级别就是该用户的加权信任级别。在这种情况下,为了信任任意其他用户的公钥(即证书),Mahesh就需要一个完全信任证书或者两个部分信任证书。这样,根据Amrita和Pallavi从Naren接收的证书,Mahesh可以完全信任Amrita和Pallavi。由于Uday从Ravi和Amol接收了两个部分信任证书,Mahesh也可以信任Uday。注意,属于某个人的公钥合法性,与该人的信任级别没有关系。
3.5 信任网
如果没有人创建完全信任或部分信任的证书,这时候就没会存在一个潜在的问题,假设没有人为Naren创建证书,那就根据什么来信任Naren的公钥,PGP中有几个方案,简要介绍如下:
1.Mahesh可以通过与Naren见面,在纸上或通过磁盘文件实际获得Naren的公钥。
2.也可以通过电话来完成。
3.Naren可以把他的公钥用电子邮件发给Mahesh。
不管是什么方式,获得其他用户的密钥以及自己的密钥发送给其他人的过程,最终在用户组之间形成了一个信任网(web of trust)。这使得密钥环越来越大,有助于安全的邮件通信。当某个用户需要吊销其公钥时,需要发送一个密钥吊销证书给其他用户,改证书是用户用自己的私钥进行自签名的。

4.安全多用途Internet邮件扩展

4.1 简介
传统电子邮件系统基于文本,即可以用编辑器编写文本消息,然后通过Internet发给另一个人。但是,现在需要交换不同格式的文档、多媒体文件,等等。为了满足这种需求,多用途Internet邮件扩展(Multipurpose Internet Mail Extensions,MIME)系统扩展基本电子邮件系统,允许用户用基本电子邮件系统发送二进制文件。MIME电子邮件消息包含正常的Internet文本消息和一些特殊的头与格式化文本段。每个段中可以放ASCII编码数据。每个段开头说明如何在接收方解释/译码后面的数据,接收方电子邮件系统根据这个解释译码数据。为了改进基本MIME系统,提供安全特性,采用安全多用途Internet邮件扩展(Secure Multipurpose Internet Mail Extensions,S/MIME)。
4.2 MIME概述
电子邮件系统提供From、To、Date、Subject之类的电子邮件头。MIME规范在电子邮件系统中增加5个新头,描述消息体的信息,这些MIME头描述如下:
1.MIME版本(MIME-Version):包含MIME的版本号。
2.内容类型(Content-Type):描述消息体重包含的数据,这些内容足以使接收方的电子邮件系统能够按照相应方式处理收到的电子邮件消息。MIME指定了7种内容类型和15种子类型,如下表所示:

类型子类型描述
TextPlain无格式文本
TextEnriched含合适文本
MultipartMixed包含多个部分的电子邮件,各个部分要依次一起发送
MultipartParallel包含多个部分的电子邮件,各个部分要按不同顺序分别发送
MultipartAlternative包含多个部分的电子邮件,各个部分要表示同意信息的不同版本,使接收方电子邮件系统能够选择其中最合适的版本
MultipartDigest类似于Mixed
MessageRFC822消息体为包装消息,符合RFC 822
MessagePartial将大电子邮件消息分块
MessageExternal-boby包含对象指针,对象放在其他位置
ImageJPEGJPEG格式图形
ImageGIFGIF格式图形
VideoMpegMPEG格式视频
AudioBasic声音格式
ApplicationPostScriptAdobe PostScript
Applicationoctet-stream一般二进制数据

3.内容传输码(Content-Transfer-Encoding):指定表示消息体时使用的交换类型。有5中内容编码方法,如下表所示:

类型描述
7位NVT ASCII(网络虚拟终端ASCII码)字符和短线
8位非ASCII字符和短线
二进制非ASCII和无限长线
64进制6位的数据块加密为8位的ASCII字符
可打印非ASCII字符,编码为一个等号,后面跟一个ASCII码

4.内容ID(Content-ID):唯一标识MIME实体,引用多个上下文。
5.内容描述(Content-Description):在消息体不可读时使用。
4.3 S/MIME功能
S/MIME的一般功能与PGP相似。和PGP一样,S/MIME提供电子邮件消息的数字签名和加密功能,具体地说,S/MIME提供的功能如下表所示:

功能描述
封包数据任何类型的加密内容,加密密钥用接收方的公钥加密
签名数据包括用发送方私钥加密的消息摘要,内容与数字签名采用64进制编码
明文签名数据类似于签名数据,但只有数字签名采用64进制编码
签名且封包数据可以组合签名与封包数据,对封包数据签名或封包签名/明文签名数据

4.4 S/MIME使用的加密算法
从加密算法看,S/MIME使用下列加密算法:
1.用DSS(数字签名标准)进行数字签名;
2.用Diffie-Hellman算法加密对称会话密钥;
3.用RSA算法进行数字签名或加密对称会话密钥;
4.用DES-3加密对称会话密钥。
S/MIME定义了两个术语:
1.必须:表示这个加密算法是绝对必要的,MIME的影虎系统必须支持这些算法。
2.应该:有时可以不支持这个算法,但应尽量支持。
根据这些术语,S/MIME支持如下表所示不同加密算法:

功能对S/MIME建议的算法支持
消息摘要必须支持MD5;应该支持SHA-1
数字签名发送方与接收方必须支持DSS;发送方宇与接收方应该支持RSA
封包发送方与接收方必须支持Diffie-Hellman;发送方与接收方应该支持RSA
对称密钥加密发送方应该支持DES-3与RC4;接收方必须支持DES-3,应该支持RC2

4.5 S/MIME消息
S/MIME要保护的是含签名、已加密或两者的MIME实体。这里所说的MIME实体是整个消息,或整个消息的一部分。MIME实体按照常见的MIME规则生成。它和与安全相关的数据(如算法标识和数字证书)一起由S/MIME进行处理。该处理的输出称为公钥加密标准(Public Key Cryptography Standard,PKCS)对象,这个PKCS对象本身被看作是一个消息的内容,与相应的MIME头一起封装在MIME中。对于电子邮件消息,S/MIME支持数字签名、加密或两者。S/MIME处理电子邮件消息和其他与安全相关数据。然后对待消息一样处理PKCS对象,即增加相应的MIME头。
4.6 S/MIME证书处理
S/MIME使用的是X.509V3证书,与PGP一样,S/MIME需要配置可信密钥与CRL列表,证书由CA签发的。S/MIME用户执行3种密钥管理功能,如下表所示:

功能描述
密钥生成具有某些管理权限的用户必须能创建Diffie-Hellman和DSS密钥对,以及能创建RSA密钥对。
注册用户的公钥密钥在CA注册,以接收一个X.509数字证书
证书存储与检索一个用户需要其他的数字证书来解密输入的消息,并验证输入消息的签名。这些必须由一个本地的管理实体来维护

4.7 S/MIME的其他安全特性
在S/MIME协议中,还提议了3种其他的安全特性,具体归纳如下:
1.已签名接收:该消息还可以用作初始消息的确认。这可以向初始发送方提供消息传送的证据。接收方给实体消息(包括发送方发送的初始消息、发送方的签名以及确认)签名,从中创建一个S/MIME消息类型。
2.安全标签:可以把一个安全标签添加到消息中,以标识其保密性、访问控制和优先级别。
3.安全邮件列表:当发送方需要把一个消息发送给多个用户时,可以创建一个S/MIME邮件列表代理(Mailing Listing Agent,MLA),由MLA来接管剩下的工作。

5.域密钥身份识别邮件

域密钥身份识别邮件(Domain Keys Identified Mail,DKIM)是一种建议的Internet标准。DKIM在创建与E-mail相关的身份识别中很有用。简单地说,用户的E-mail消息用私钥进行了数字签名,该私钥属于发出该E-mail的管理域。这种数字签名是在整个E-mail内容上添加一些首部,接收方的E-mail系统使用发送方管理域的公钥对消息的数字签名进行验证,这可以确保接收方接收到的E-mail的确是来自发送方的管理域,且可以确保在传输过程中消息是保持完整的。
在传统E-mail安全协议中,发送方自己对消息进行签名,但在DKIM中,则是由发送方的管理域对消息进行签名。

更多推荐

电子邮件安全性

本文发布于:2023-06-14 07:48:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1453003.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:安全性   电子邮件

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!