CN1161704C - 安全电子邮件与Lotus Notes集成的方法 - Google Patents
安全电子邮件与Lotus Notes集成的方法 Download PDFInfo
- Publication number
- CN1161704C CN1161704C CNB011323469A CN01132346A CN1161704C CN 1161704 C CN1161704 C CN 1161704C CN B011323469 A CNB011323469 A CN B011323469A CN 01132346 A CN01132346 A CN 01132346A CN 1161704 C CN1161704 C CN 1161704C
- Authority
- CN
- China
- Prior art keywords
- notes
- signature
- lotus notes
- function
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Storage Device Security (AREA)
- Information Transfer Between Computers (AREA)
Abstract
发明公开了一种安全电子邮件与Lotus Notes集成的方法,在安全电子邮件的发送与接受过程中,利用Lotus Notes安全扩展组件对Lotus Notes的操作界面进行定制和功能扩充,实现对安全电子邮件的加密/签名操作和解密/验证签名操作。本发明提供的方法操作方便、易于掌握且使用安全。
Description
技术领域
本发明涉及一种安全电子邮件与Lotus Notes集成的方法。
背景技术
安全电子邮件主要应用了基于公钥体系结构体制的数字信封和数字签名技术。通过结合使用数字信封和数字签名的方法,用户可以在交换数据时同时获得保密性、完整性和不可抵赖性。
数字信封和数字签名都利用到了非对称加密算法,非对称加密算法利用一对密钥来完成加解密的工作。在安全电子邮件中,数字信封中随机生成的用来加密用的对称密钥将使用收件人的公钥来加密,只有拥有对应私钥的收件人才能解密,从而达到确保数据保密性的效果。数字签名用发信人的私钥对数据进行签名,因为私钥只有拥有者才能获取和使用,且拥有者有义务和责任保证私钥的安全性,再结合数字证书,可以唯一的确认私钥拥有者的身份,从而达到确保数据的完整性和不可抵赖性的效果。
普通的电子邮件发送过程如下所示:
1.发送方撰写电子邮件;
2.通过网络将电子邮件发送到指定的邮件服务器;
3.邮件服务器根据地址将电子邮件发送到收件人的邮箱;
4.收件人通过用户名和口令登录到邮件服务器收取邮件。
这个过程中,存在以下的安全隐患:
1.邮件通过网络传送,可以很容易的被第三方窃取和篡改;
2.邮件以明文的形式存放在邮件服务器上,也可以很容易的被管理员和可以接近该服务器的人员窃取和篡改;
3.第三方可以冒充收件人从服务器上收取信件;
4.收件人无法确认发信者的身份,也无法防止发信者的事后抵赖。
普通的安全电子邮件的发送过程如下所示:
1.发送方撰写电子邮件;
1.1发送方利用其他工具撰写电子邮件的正文;
1.2发送方启动加密签名工具对电子邮件的内容包括正文和附件进行加密和签名;
1.3发送方将得到的加密和签名结果作为电子邮件的附件加入电子邮件中;
2.通过网络将电子邮件发送到指定的邮件服务器;
3.邮件服务器根据地址将电子邮件发送到收件人的邮箱;
4.收件人通过用户名和口令登录到邮件服务器收取邮件。
4.1收件人将电子邮件的附件保存到本地文件中;
4.2收件人启动解密和验证签名的工具对附件进行解密和验证对方的签名,以获取可以理解的原文和确认发信者的身份。
从上面安全电子邮件的发送过程中可以看出,由于采用数字信封技术,可以使得在网络上传输的和在服务器上保存的都是经过加密的密文,因而可以避免上面1.、2.、3.点中描述的邮件内容被第三者窃取的缺陷;而采用数字签名技术,则可以保证数据的完整性不被篡改,同时也能防止发信人的事后抵赖,从而避免上面描述的缺陷。
普通的安全电子邮件技术基本上可以解决数据的安全问题,但在和Lotus Notes的具体结合上会产生如下问题:
1.用户必须脱离Lotus Notes的使用环境来手工完成电子邮件的加解密、签名和验证签名等工作,给用户使用带来极大的不便;
2.正文内容必须用其他编辑编辑工具编写,加密后作为附件发送给对方,无法利用LotusNotes强大的编辑功能;
3.对称加密算法一般使用的是国外算法,在强度上受到限制,从而有在较少代价的前提下被破解的可能性;
4.使用的对称加密算法比较单一和固定,不适合在对安全要求比较高或者有特殊规定的应用中(如政府部门)使用。
发明内容
发明的目的是提供一种操作方便、易于掌握且使用安全的安全电子邮件与LotusNotes集成的方法。
本发明的目的是这样实现的,在安全电子邮件的发送与接受过程中,利用Lotus Notes安全扩展组件对Lotus Notes的操作界面进行定制和功能扩充,实现对安全电子邮件的加密/签名操作和解密/验证签名操作。
所述安全电子邮件是在Lotus Notes环境下撰写编辑的,所述安全电子邮件可以包括格式信息和附件。
所述Lotus Notes安全扩展组件与Lotus Notes接口的部分由一个script库与一个子表单Subform以及一个调用大量Lotus C API函数的动态连接库组成。
所述对Lotus Notes的操作界面进行定制和功能扩充,即修改Notes对应的邮件数据库或数据库模版便笺表单中的发送过程函数,发送过程函数在发送邮件前调用Lotus Notes安全扩展组件中的加密签名函数激活自动加密/签名过程;通过修改Notes对应的邮件数据库或数据库模版便笺表单中的QueryOpen函数,在打开邮件数据库前检查邮件是否已被加密或签名,若已有加密标签,则进入解密/验证签名过程,否则直接进行显示。
所述对Lotus Notes的操作界面进行定制和功能扩充,还可以是通过在Notes对应的邮件数据库或数据库模版便笺表单中增加一个操作,在工具条中添加“网盾加密”按钮,用户点击“网盾加密”按钮即可激活加密/签名过程;通过在Notes对应的邮件数据库或数据库模版便笺表单中增加一个操作,可以在工具条中添加“网盾加密”按钮,用户点击“网盾加密”按钮即可激活加密/签名过程;
所述加密/签名操作,包括以下步骤:
a、在发送过程函数的脚本中通过调用NotesUiWorkspace.CurrentDocument.Document函数,获取当前文档及文档句柄;
b、在发送过程函数的脚本中通过检查表单中收件人、抄送人等字段的内容,获取收件人地址;
c、将文档句柄和收件人地址传入加密签名函数中;
d、加密签名函数调用Lotus C API中EnumComposi teBuffer等函数读取邮件中的内容包括文字、图片、附件等及相关格式信息;
e、将收集到的格式信息进行加密,利用对方的公钥生成数字信封,并用发信人的私钥进行数字签名;
f、将得到加密的格式信息作为一个隐藏字段保存到数据库中,同时将原文从数据库中删除,加上已加密签名的标志。
所述解密/验证签名操作,包括以下步骤:
a、在脚本中通过调用NotesUiWorkspace.CurrentDocument.Document函数,获取当前文档及句柄;
b、将文档句柄传入解密/验证签名函数中;
c、解密/验证签名函数调用Lotus C API中EnumCompositeBuffer等函数读取邮件中包含加密格式信息的隐藏字段,对其进行解密和验证签名操作,如果解密/验证签名通过,则将解密后的内容重新写回到文档中,进入步骤d,否则提示用户出错信息;
d、利用EditDocument函数,将解密后的内容显示在屏幕上。
由于采用了以上的方法,本发明具有如下的优点:
a、操作方便。在自动收发安全电子邮件时,通过修改Notes邮件数据库中相应表单的发送和打开操作的缺省动作,来自动完成邮件的自动加解密、签名和验证签名的操作,使安全电子邮件的使用对用户完全透明,从而减少用户的操作步骤;
b、易于掌握。而在手工收发安全电子邮件时,通过在Notes邮件数据库相应表单中添加操作,在Notes的菜单项和工具条上添加相应菜单项和按钮,与Notes的使用方式完全一致,从而能减少用户的学习时间。
c、使用安全。Lotus Notes安全扩展组件能够完整保存Notes的格式和各种附件,加解密操作能在Notes的环境下完成,使用户在使用Notes强大而方便的功能时,同时能够获得极高的安全保障。在对称加密算法的选择上,即可以使用自主产权的元胞加密算法,从而提高加密强度,最高可以达到512位,也可以采用第三方加密算法,可以大大提高加密强度,完全能满足各种应用对安全的需求。
附图说明
图1是Notes安全扩展文档发送流程图;
图2是Notes安全扩展文档打开流程图;
图3是Notes安全扩展文档保存流程图。
具体实施方式
下面将通过以下的实施例对本发明作进一步的说明。
Lotus Notes安全扩展组件采用Notes脚本语言和子表单对Notes的界面进行定制,Lotus Notes安全扩展组件由应用层和基础层组成,基础层包括一个数字管理中心。在Lotus Notes安全扩展的实现中,每一个Notes用户需要向数字管理中心申请证书用于标识自己的身份。而证书的发放、废除、下载、有效性的验证、证书废除列表的更新将由数字证书管理中心来负责管理和维护。每个Notes用户对应的数字证书称为用户标识符,用户标识符中包含的信息包括证书及其对应的私钥称为用户信息。Lotus Notes安全扩展组件与Notes接口的部分由一个script库与一个子表单Subform以及一个调用大量LotusC API函数的动态连接库(实现将Notes中的电子邮件的信息与一般二进制数据间的转换)组成。Lotus Notes安全扩展组件的基础层中公钥体系结构模块的作用是实现加解密签名与验证签名。
在Notes菜单和工具条上加入加密发送,方便用户进行操作,Lotus Notes安全扩展组件实现,在文档的发送与保存时自动加密签名,在打开文档时自动解密验证签名,进行自动加解密电子邮件。
自动加解密电子邮件在逻辑上可分为三个模块:邮件发送的自动加密签名、邮件打开时的自动解密并验证签名、文档保存时的自动加密签名。下面分别介绍它们的工作流程以及其中涉及的技术。
如图1所示,文档发送工作流程及技术原理是这样的,首先,在Notes自带的CoreEmailClasses script库中,把类UIMemoDocument中的函数QurySave中的实现发送功能的语句删掉,改成在当前Notes文档中加入一个标志发送邮件的域。在子表单Subform的事件QuerySave中,对当前的文档作一个备份,并将文档的保存标志设为0,即不保存到数据库中(否则文档将以明文的形式在数据库中存放),并触发文档关闭事件(此时由于我们将保存标志设为不保存到数据库中事件PostSave已不存在)。
接着,根据当初数字管理中心指定的申请证书的规则来判断用户信息中的证书是否与当前的Notes用户相匹配(Notes用户的信息可由Notesscript中的类NotesSession中的属性NotesUser取得),本地验证用户信息与当前Notes用户信息是否一致,若不一致,通知Notes中断发送操作,若一致则进行下面的操作。
向数字管理中心验证用户信息是否有效,若无效,通知Notes中断发送操作,若用户信息有效,取得用于加密的所有证书对应的标识信息,所述标识信息包括用户自己与所有邮件接收者的用户名。取得用于加密的所有证书对应的标识信息的具体过程为,首先确定文档的收件人域,一般为”EnterSendto”、”EnterCopyTo”、“BlindEnterCopyTo”或”SendTo”、“CopyTo”、”BlindCopyTo”,根据收件人域取得当前文档收件人的名称;接着,若有收件人名称使用简短名请将其扩展为全名,若有收件人名称为群组,将其转化为对应的Notes用户全名,若收件人名称有歧义,提示用户从中选择一个正确的收件人。
将取得的所有加密证书对应的标识信息提交给数字证书管理中心,并发出查询对应证书的要求,数字管理中心接获查询证书的结果后,若证书有效,将返回证书的内容;否则返回出错的原因,若CA服务器返回某证书无效或不存在,通知Notes中断发送操作,若返回证书有效,进行下面的操作。
产生512位的随机密钥,用该随机密钥与元胞加密算法加密文档中所有指定的域。这一操作的具体过程为,用应用程序开发接口函数NsfItemInfo与NsfItemNext等取得该域中所有项目的信息;用应用程序开发接口函数NSFNoteExtractFile等取得该域中的所有附件信息;使用公钥体系结构模块产生一个512位的随机数(若使用第三方算法次数由第三方产生或也可由第三方指定长度),用该随机数作为密钥使用元胞加密算法(或第三方算法)加密本地验证和数字管理中心验证过程中取得的Notes文档信息。
用所有加密证书分别加密该随机密钥,加密结果均附在文档中,即分别用证书中的RSA公钥加密那个随机数。
用用户信息中的证书对应的RSA私钥签名该文档。这一过程的具体过程为,对加密得到的结果以及当前的用户证书,先做SHA1摘要,然后用该用户的证书对应的RSA私钥签名该结果。对上述操作得到的结果用公钥体系结构模块作B64编码,用NotesAPI函数NSFNoteDetachFile等拆离该域中的所有附件,用NotesAPI函数NSFItemDeleteByBLOCKID清空该域中的所有项目信息,用NotesAPI函数NSFItemAppendByBLOCKID等将B64编码后的结果加到域中。
通知Notes继续发送操作,删除自定义的标志发送邮件的域,加入标志加密签名邮件的域;调用Notes文档的发送函数发送此加密邮件,然后通知Notes中断发送操作,将控制权交回给Notes。
如图2所示,文档打开时的工作流程及技术原理是这样的,捕获Notes发出的打开文档的消息,即在子表单Subform的事件QueryOpen中,判断当前文档是否是新建的文档,若不是新建的文档并带有加密签名邮件的标识域,则启动以下操作。
本地验证文档的签名是否已被篡改,用Notes API函数NsfItemInfo取得该域中的项目信息,对得到的数据用公钥体系结构模块作B64解码,解码后的数据由加密的Notes域信息、加密的密钥、签名证书、签名四部分组成,用SHA1算法对加密的Notes域信息、加密的密钥作摘钥,比较用签名证书中的RSA公钥解密签名后的数据,若不一致说明签名已被篡改,通知Ntoes中断打开操作,若一致,进行以下操作。
向数字管理中心验证签名证书是否有效,若签名证书无效,通知Ntoes中断打开操作,若签名证书有效,使用用户信息中的私钥解密随机密钥,即用用户所有的RSA私钥分别解密B64解码后的数据中加密的密钥部分,若全部失败通知Ntoes中断打开操作。否则解密后的结果就是加密Notes域信息时使用的随机数。
用解密后的随机密钥解密文档,即用得到的随机数解密B64解码后的数据中加密的Notes域信息,得到数据由该域中的所有项目的信息与所有附件信息组成,用Notes API函数NSFItemDeleteByBLOCKID清空该域中的所有项目信息,用NotesAPI函数NSFItemAppendByBLOCKID等将项目信息加到该域中,用NotesAPI函数NSFAttachFile等将附件信息加到该域中;通知Notes继续打开操作,在子表单的事件QueryOpen中将Notes参数continue置为真,通知Notes中断打开操作;控制权交回给Notes,在子表单的事件QueryOpen中退出即可。
如图3所示,文档保存时的流程是这样的,首先,在子表单Subform的事件QuerySave中,对当前的文档作一个备份,并将文档的保存标志设为0,即不保存到数据库中(否则文档将以明文的形式在数据库中存放),并触发文档关闭事件(此时由于我们将保存标志设为不保存到数据库中事件PostSave已不存在),捕获Notes发出的保存文档的消息。
根据当初数字管理中心指定的申请证书的规则来判断用户信息中的证书是否与当前的Notes用户相匹配(Notes用户的信息可由Notes script中的类NotesSession中的属性NotesUser取得,本地验证用户信息与当前Notes用户信息是否一致,若不一致,通知Notes中断保存操作,若一致进行以下操作。
首先,向数字管理中心验证用户信息是否有效,若无效,通知Notes中断保存操作,若用户信息有效,则取得用于加密的所有证书对应的标识信息,所述标识信息包括用户自己的用户名,Notes用户名可由Notes script中的类NotesSession中的属性NotesUser取得。然后向CA服务器查询所有证书的内容,若CA服务器返回某证书无效或不存在,通知Notes中断保存操作,若有效进行以下操作。
产生512位的随机密钥,用该随机密钥与元胞加密算法加密文档中所有指定的域,这一操作的具体过程如下:首先用应用程序开发接口函数NsfItemInfo与NsfItemNext等取得该域中所有项目的信息,接着用应用程序开发接口函数NSFNoteExtractFile等取得该域中的所有附件信息,使用公钥体系结构模块产生一个512位的随机数(若使用第三方算法次数由第三方产生或也可由第三方指定长度),用该随机数作为密钥使用元胞加密算法(或第三方算法)加密严验证取得的Notes文档信息,最后用所有加密证书分别加密该随机密钥,加密结果均附在文档中。
用用户信息中的证书对应的RSA私钥签名该文档,这一操作的具体过程是这样的,对元胞加密算法得到的信息,先做SHA1摘要,然后用该用户的证书对应的RSA私钥签名该结果,对上述操作得到的结果用公钥体系结构模块提供的函数作B64编码,用NotesAPI函数NSFNoteDetachFile等拆离该域中的所有附件, 用NotesAPI函数NSFItemDeleteByBLOCKID清空该域中的所有项目信息,用NotesAPI函数NSFItemAppendByBLOCKID等将B64编码后的结果加到域中,通知Notes中断保存操作,将控制权交回给Notes,在子表单的事件QueryClose中将Notes参数continue置为假。
Claims (1)
1、一种安全电子邮件与Lotus Notes集成的方法,其特征在于,在Lotus Notes环境中,在用户发送邮件时,利用Lotus Notes安全扩展模块完成修改Lotus Notes发送邮件的标准过程,即修改Lotus Notes的CoreEmailClasses Script库,删除类UIMemoDocument中函数QuerySave()中的邮件发送部分,改为保存邮件、加密、签名邮件之后发送邮件的,为LotusNotes增加了“自动加密/签名邮件内容”的功能;
在用户打开邮件时,利用Lotus Notes安全扩展模块完成修改Lotus Notes打开邮件的标准过程,即在子表单Subform的事件QueryOpen中,判断邮件类型,如果邮件是加密签名的邮件,则解密邮件、验证邮件的数字签名,使用Notes API函数NSFItemAppendByBLOKCKID()和NSFAttachFile()更新显示的邮件内容,显示解密后的邮件,为Lotus Notes增加了“自动解密/验证邮件内容”的功能;
在发送邮件时的自动加密/签名过程中,根据邮件的收件人域自动查询收件人对应的数字证书,即在发送自动加密时,根据邮件的收件人域取得全部收信人的名称,若有收件人名称为群组,将其转化为对应的Notes用户名,并将所有收信人提交给数字证书管理中心,查询收件人对应的数字证书。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB011323469A CN1161704C (zh) | 2001-11-29 | 2001-11-29 | 安全电子邮件与Lotus Notes集成的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB011323469A CN1161704C (zh) | 2001-11-29 | 2001-11-29 | 安全电子邮件与Lotus Notes集成的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1352433A CN1352433A (zh) | 2002-06-05 |
CN1161704C true CN1161704C (zh) | 2004-08-11 |
Family
ID=4671377
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB011323469A Expired - Fee Related CN1161704C (zh) | 2001-11-29 | 2001-11-29 | 安全电子邮件与Lotus Notes集成的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1161704C (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100495387C (zh) * | 2005-02-06 | 2009-06-03 | 刘怡梅 | 可对电子邮件文本及附件进行确认的方法 |
CN100394746C (zh) * | 2005-03-02 | 2008-06-11 | 北京立通无限科技有限公司 | 一种高效智能获取Lotus Domino邮件服务器中邮件的系统及其方法 |
CN108900535A (zh) * | 2018-08-02 | 2018-11-27 | 密信技术(深圳)有限公司 | 邮件加密方法、装置及计算机可读存储介质 |
CN113014531B (zh) * | 2019-12-20 | 2022-11-29 | 中标软件有限公司 | 一种应用于电子邮件数据加密传输的方法 |
-
2001
- 2001-11-29 CN CNB011323469A patent/CN1161704C/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN1352433A (zh) | 2002-06-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105719120B (zh) | 一种加密快递单隐私信息的方法 | |
US8321669B2 (en) | Electronic data communication system | |
US20020138759A1 (en) | System and method for secure delivery of a parcel or document | |
CN1729647A (zh) | 生成和/或使用附条件电子签名以报告状态变化的方法、装置以及计算机程序 | |
WO2004063871A3 (en) | System and method for secure electronic communication in a partially keyless environment | |
WO2005065358A3 (en) | E-mail certification service | |
CN1777097A (zh) | 加密数据发布方法、加密装置、解密装置、加密程序和解密程序 | |
CN101064595A (zh) | 一种计算机网络安全输入认证系统和方法 | |
CN101115020A (zh) | 一种秘密邮件保护方法及一种邮件系统 | |
CN1451213A (zh) | 用于鉴别电子信息的系统和方法 | |
CN108090370A (zh) | 基于索引的即时通信加密方法和系统 | |
CN1849774A (zh) | 信息安全性 | |
CN103078743B (zh) | 一种电子邮件ibe加密实现方法 | |
US6904524B1 (en) | Method and apparatus for providing human readable signature with digital signature | |
CN1819517A (zh) | 电子邮件、即时通讯签章系统 | |
CN108710931B (zh) | 一种基于二维码的邮寄地址信息隐私保护方法 | |
CN108446539A (zh) | 一种软件授权方法和软件授权文件生成系统 | |
CN102231181B (zh) | 用于文件加密的计算机系统及文件加密方法 | |
CN1161704C (zh) | 安全电子邮件与Lotus Notes集成的方法 | |
CN101924632B (zh) | 一种分路加密传输交易信息的可靠传递方法 | |
CN115378623B (zh) | 身份认证方法、装置、设备及存储介质 | |
CN103780380A (zh) | 一种非对称的安全加密邮件实现方法 | |
CN105743884A (zh) | 邮件隐藏方法和系统 | |
CN1422034A (zh) | 使用对称密码实现网络数字签名 | |
CN101777980A (zh) | 一种数字证书扩展项信息保护方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C06 | Publication | ||
PB01 | Publication | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20040811 Termination date: 20141129 |
|
EXPY | Termination of patent right or utility model |