(作者:郝文江,中国人民公安大学博士研究生,研究方向:计算机物证及网络安全信息研究;杨永川,中国人民公安大学博士研究生导师,一级警监。)
摘要:随着电子邮件的普及和应用,伴随而来的电子邮件安全方面问题也越来越多的引起人们的关注。我们已经认识到电子邮件用户所面临的安全性风险变得日益严重。病毒、蠕虫、垃圾邮件、网页仿冒欺诈、间谍软件和一系列更新、更复杂的攻击方法,使得电子邮件通信和电子邮件基础结构的管理成为了一种更加具有风险的行为。本文通过电子邮件形成技术过程、安全技术现状、电子邮件不安全因素、技术提高安全性的主要途径等方面来探讨一下。
关键词:电子邮件 安全技术 不安全性
电子邮件是一种最广泛的网络应用,也是在异构环境下惟一跨平台的、通用的分布式系统。电子邮件伴随着科学技术的发展,已经成为我们生活中不可缺少的一部分。由于电子邮件的普及,电子邮件安全方面问题也越来越多的引起人们的关注,其认证和保密性的需求也日益增长。
一、电子邮件的形成过程
(一)电子邮件在网络中的生成过程
电子邮件是基于计算机系统、网络协议、传输协议等共同组成的电子邮件传输过程,其在发送电子邮件时,生成TCP/IP网络流量的各个步骤如下:
1.客户编辑电子邮件,然后单击发送按钮;
2.用来生成电子邮件的应用程序创建自己的报头,然后将信息传递给传输层,它会被该层中的TCP或UDP软件处理。电子邮件客户端通常请求TCP服务连接,因此,在传输层执行的TCP软件将会处理数据并为其创建一个TCP报头;
3.在传输层创建完TCP报头并将之添加到电子邮件的前面之后,TCP软件将控制传递给网络层,在该层由IP软件进行处理;
4.在网络层创建完IP报头并将之添加到电子邮件的前面之后,IP软件将控制传递给数据链路层的网卡,该层创建数据链路层报头,并生成网络介质上所使用的电子或光的1和0信号。
5.接收端计算机在物理层接收该数据包,并在每个相应的层以相反的顺序去掉各个报头。这样,在网络层去掉IP报头,在传输层去掉TCP报头,然后,数据被向上传至接收用户的应用层的栈。
(二)电子邮件的封装过程
封装是实现网络协议分层的一种方法。其思想是:多层软件中的每一层,都会在网络流量的创建过程中实现某种特定的用途。每当写完一封欲发的电子邮件时,即是在应用层创建该封电子邮件。当单击发送按钮发出消息时,用来创建电子邮件的应用程序(如Netscape/Outlook)把该电子邮件传递给计算机所使用的表示层软件。表示层软件把控制传递给会话层,该层会进一步处理您的电子邮件,并将之传送给下一层,如此继续向下传送,直到您的电子邮件被数据链路层处理,并被送上网络电缆为止,如图1所示:

图1:OSI(Open Systems Interconnection)模型
所有这些过程对于最终用户几乎都是不可见的。用户只是知道他单击了发送按钮发出了这封电子邮件。这种创建了许多报头的不可见的或者透明的软件称为协议栈。TCP/IP封装是促进两个不同局域网之间的通信的。
电子邮件的封装不同于CPU的封装,它们本质的区别在于一种是封装的类型不同:电子邮件的封装是利用计算机系统自动生成的“0”与“1”信号代码,而与CPU封装技术是硬件的封装,是一种将集成电路用绝缘的塑料或陶瓷材料打包的技术。以CPU为例,我们实际看到的体积和外观并不是真正的CPU内核的大小和面貌,而是CPU内核等元件经过封装后的产品。
下面我们通过C语言中调用电子邮件原代码来正确看待邮件封装过程 :
(1)要调用对象,当然首先就要在程序的最前面导入封装对象的名称空间,例如using System.Web.Mail ;
(2)正确定义MailMessage对象的属性:MailMessage对象中和电子邮件相关的属性可以用下表1来表示:

表1:电子邮件相关属性表
在程序中,具体的实现语句如下:
MailMessage aMessage = new MailMessage ( ) ; //新建一个MailMessage对象
aMessage.From = FromTextBox.Text ; //定义发信人地址,如果是多人,可以用“,”分开
aMessage.To = ToTextBox.Text ; //定义收信人地址,如果是多人,可以用“,”分开
aMessage.Cc = CCTextBox.Text ;//定义抄送人地址,如果是多人,可以用“,”分开
aMessage.Bcc = BCCTextBox.Text ; //定义暗送人地址,如果是多人,可以用“,”分开
aMessage.Subject = SubjectTextBox.Text ; //定义邮件的主题
aMessage.Body = MessageTextBox.Text ; //定义邮件的内容
if ( AttachmentTextBox.Text.Length > 0 )
aMessage.Attachments.Add(new MailAttachment ( AttachmentTextBox.Text, MailEncoding.Base64 ) ) ; // 给邮件增加一个附件
注:“=”右边是程序中定义的文本框的“Text”值。
(3)用SmtpMail对象正确发送电子邮件:
在Visual C#中调用SmtpMail对象的Send ( )方法有多种方式。本文介绍的只是其中的一种比较常用的调用方式,即SmtpMail.Send ( MailMessage对象 )。
在程序中的实现语句如SmtpMail.Send ( a Message ) 。
笔者认为:邮件的封装是邮件形成过程中的重要一步,但由于任何一种软件在邮件封装中都存在不足的方面。其一,软件在编制过程中,由于工程师的疏忽,或特意留出的后门程序入口都会给客户邮件带来安全隐患。例如:上述程序中暗送人地址中aMessage.Bcc = BCCTextBox.Text中将B删去的话就会将暗送人地址转换成收信人地址,可是客户是不知情的,当客户将某一封邮件在发送过程中又希望暗送给某人,但实际发送过程中,暗送人地址已作为收信人地址公布于众,失去了客户的真实目的;其二,邮件封装后缺少完整的密码体系支持,因为邮件在封装后其传送是以“0”、“1”二进制代码进行传送的。在邮件传送过程中的任何一环邮件被获取后,客户的邮件都能很快被破译,使得客户的邮件信息泄漏。故邮件在封装前应先将邮件进行加密后,将邮件转换成密文后再进行传送,这样提高了邮件的安全性。
此文章共有5页 [1] [2] [3] [4] [5] [下一页]
查看郝文江 杨永川的其他文章 本文关键词:电子邮件
收藏到法律网摘 讨论 打印 页顶 关闭