[发明专利]基于OpenMP线程优化的电子邮件服务器的安全分发方法有效

专利信息
申请号: 202010000169.2 申请日: 2020-01-02
公开(公告)号: CN111124690B 公开(公告)日: 2023-06-23
发明(设计)人: 刘嘉辉;章慧鸣;朱宝森 申请(专利权)人: 哈尔滨理工大学
主分类号: G06F9/50 分类号: G06F9/50;G06F9/54;G06F21/60;H04L9/00;H04L9/08;H04L51/42
代理公司: 暂无信息 代理人: 暂无信息
地址: 150080 黑龙*** 国省代码: 黑龙江;23
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 基于 openmp 线程 优化 电子邮件 服务器 安全 分发 方法
【权利要求书】:

1.一种基于OpenMP线程优化的电子邮件服务器的安全分发方法,其特征在于,包括:

Part_1,初始化OpenMP参数环境,进行系统参数设置,启动邮件服务守护进程,初始化SMTP(简单邮件传输协议)队列和POP(邮局协议)队列,建立邮件安全存储区,

Part_2,执行SMTP邮件接收线程,根据邮件的目的地址进行路由转发,对于目的地址是本地邮件服务器的邮件进行加密,存入邮件安全存储区,

Part_3,执行POP邮件获取线程,根据用户请求对邮件进行解密,发送邮件给客户,

Part_4,执行线程优化过程,根据系统环境动态自动调整优化方程参数;

基于OpenMP线程优化的电子邮件服务器的安全分发方法的数据结构定义和基本过程定义如下:

(1)用户邮件信息控制块MailCB,用于存储用户邮件的基本信息,具体包括:

数据项1,用户邮件在系统中编号MailID,

数据项2,用户邮件头信息HeaderMail,

数据项3,用户邮件内容BodyMail,

数据项4,用户邮件附件UserAttachment,

数据项5,用户邮件寄件人地址SourceAdd,

数据项6,用户邮件收件人地址DestinationAdd,

数据项7,用户邮件紧急度EmergentDegree,

数据项8,用户邮件状态信息MailStatus,初始值为空,和分为已经阅读状态和未阅读状态,

(2)SMTP队列SMTPQueue,用于接收和转发用户发往目的地址邮件服务器的邮件,定义如下:

数据项1,SMTP队列头TopQ_SMTP,

数据项2,SMTP队列尾TailQ_SMTP,

数据项3,SMTP队列下一个结点指针NextQ_SMTP,

数据项4,路由目的服务器地址MailHost,

数据项5,用户邮件信息控制块MailCB,

(3)用户邮件列表UserMailList,存储用户的邮件列表信息,定义如下:

数据项1,表中序号IDatTab,

数据项2,用户邮件信息控制块MailCB,

数据项3,邮件数字证书DigLicence,

数据项4,文件位置指针FilePoint,初始值为空,

数据项5,其它信息OtherInfo,

(4)POP队列POPQueue,响应用户阅读邮件的请求,实现让用户从邮件服务器上下载邮件到本地,选择删除保存在邮件服务器上的所请求邮件,定义如下:

数据项1,用户账号UserID,初始值为空,

数据项2,用户邮件列表UserMailList,初始值为空,

数据项3,系统处理状态OP_PV,初始值为空,和分为未处理,正在处理和处理完毕状态,

数据项4,系统事物状态Sys_Transaction,初始值为空,和分为事物正常状态和事物异常状态,

数据项5,用户会话期状态UserSession,初始值为空,和分为在线和离线状态,用户需要在时间onlineTime内接受系统的反馈信息,当用户在时间onlineTime内响应邮件服务器的反馈,那么,时间onlineTim设置为0,设置用户会话期状态UserSession为在线状态,如果用户在时间onlineTime内没有响应反馈,那么,关闭用户在POP3的连接端口和数据连接请求,设置用户会话期状态UserSession为离线状态,时间onlineTime的初始值由系统管理员设置,

数据项6,用户登录状态UserLogIn,初始值为空,和分为用户登录和未登录状态,

数据项7,POP队列头TopQ_POP,

数据项8,POP队列尾TailQ_POP,

数据项9,POP队列下一个结点指针NextQ_POP,

(5)分段线性混沌方程lcm,定义如下:

如果0lcm[i]cp,则lcm[i+1]=lcm[i]/cp,

如果cplcm[i]1,则lcm[i+1]=(1-lcm[i])/(1-cp),

其中,分段线性混沌方程迭代的时间序列lcm[i]中,i为正整数,初始迭代值为lcm[0],cp为分段线性混沌方程的控制参数,

(6)加密/解密过程thread_EncryptMail,所述加密/解密过程属于对称加密算法,加密秘钥和解密秘钥相同,具体过程如下:

秘钥集合长度为512,Keys={k1,k2,…,ki,…,k512},

输入文本信息集合,Text_in={in_1,in_2,…,in_n},n为输入文本信息集合的元素个数,

输出文本信息集合,Text_out={out_1,out_2,…,out_n},

每个字节加密/解密过程为:out_i=ki异或in_i,i是指第i个数据,异或是指执行两个字节的异或运算,

当输入文本信息小于等于512字节时,利用Keys集合内的前n个秘钥实现加密/解密操作,当输入文本大于512字节时,每次处理输入文本的512字节数据,当剩余数据不足512字节时,利用Keys集合内的前n个秘钥实现剩余数据加密/解密过程,

(7)生成用户数字证书过程thread_GenLicence,具体过程如下:

数字证书长度512字节,分别设定分段线性混沌方程lcm_0,lcm_1,lcm_2,lcm_3和lcm_4,其中,当前的系统时间的时分秒转换为lcm_0的初始迭代值lcm[0]_0,当前用户邮件在系统中编号MailID数字化转换为lcm_0的控制参数cp_0,迭代分段线性混沌方程lcm_0,初始化迭代次数设定为1000次,迭代产生lcm_1,lcm_2,lcm_3和lcm_4的初始迭代值lcm[0]_1,lcm[0]_2,lcm[0]_3,lcm[0]_4和控制参数cp_1,cp_2,cp_3,cp_4,每个分段线性混沌方程进行初始化迭代1000次之后,迭代128次,产生128字节的数据,把四段128字节数据合并成为512字节的用户数字证书,

(8)优化方程,数学定义描述如下:

权重集合p定义为:p={p1,p2,…,pi,…,pn},其中,pi是权重集合的第i个元素,n是权重集合的元素总数,

权重集合p的元素满足:0p1+p2+…+pn=1,

权重集合的行分量形式记为:pm=[p1,p2,…,pn],

矢向量em定义为[e1,e2,…,ej,…,en],其中,ej是矢向量em的第j个分量,n是矢向量em的分量总和,

矢向量em的转置向量记为:turn[em],

优化方程的特征值ri计算公式为:

ri=pm*turn[em]*num

其中,num为优化方程的特征总量,当ri计算后为实小数时,对计算数值进行截尾取整;

基于OpenMP线程优化的电子邮件服务器的安全分发方法的Part_1的具体过程描述如下:

初始化OpenMP并行环境,测试、验证系统有效物理计算核心数量Num_PhyComCore和有效逻辑计算核心数量Num_LogicComCore,当物理计算核心数量Num_PhyComCore小于4时,没有达到系统物理计算核心的最低要求,结束本过程,当物理计算核心数量Num_PhyComCore大于等于4时,系统管理员设置逻辑计算核心数量Num_LogicComCore,Num_LogicComCore的数值需要大于等于10,获得操作系统版本和OpenMP版本信息,

启动邮件服务守护进程DaemonPro,邮件服务守护进程DaemonPro创建过程具体如下:

在操作系统中建立父进程FatherPro,在父进程中创建子进程DaemonPro,强制结束父进程FatherPro,将其退出系统,在子进程DaemonPro中创建新会话,DaemonPro继承当前会话组的管理员,结束父进程会话的控制,结束父进程FatherPro原进程组的控制,结束父进程受控制终端的控制,改变当前目录为邮件服务目录区域,重新设定文件权限掩码,系统管理员建立线程组ThreadGroup={thread_1,thread_2,…,thread_n},其中,n是系统管理员设置的线程组ThreadGroup中线程的总数,n需要大于等于逻辑计算核心数量Num_LogicComCore,初始化优化方程的特征值ri_thread_i的参数值,启动线程优化过程,实现线程的优化调度,打开监听端口,监听来自POP3服务器和SMTP服务器的网络端口,接收用户请求,实现对用户的邮件的接收和发送的管理过程,接收系统管理员手动设置参数和优化方程重置的请求,DaemonPro实现对线程的分配和回收管理过程,

初始化SMTP队列SMTPQueue,具体为:

在系统共享内存区建立SMTP队列头结点TopQ_SMTP和SMTP队列尾结点TailQ_SMTP,TailQ_SMTP结点的下一个结点指针NextQ_SMTP设置为空,SMTP队列头结点TopQ_SMTP的下一个结点指针NextQ_SMTP设置为TailQ_SMTP结点,SMTP队列头结点TopQ_SMTP和SMTP队列尾TailQ_SMTP结点的路由目的服务器地址MailHost设置为本地SMTP邮件服务器的地址,SMTP队列头结点TopQ_SMTP和SMTP队列尾TailQ_SMTP结点的用户邮件信息控制块MailCB设置为空,

初始化POP队列POPQueue,具体为:

在系统共享内存区建立POP队列头结点TopQ_POP和POP队列尾结点TailQ_POP,TailQ_POP结点的下一个结点指针NextQ_POP设置为空,POP队列头结点TopQ_POP的下一个结点指针NextQ_POP设置为TailQ_POP结点,POP队列头结点TopQ_POP和POP队列尾TailQ_POP结点的用户账号UserID,用户邮件列表UserMailList,系统处理状态OP_PV,系统事物状态Sys_Transaction,用户会话期状态UserSession,用户登录状态UserLogIn均初始化为空,

在系统共享内存区域根据当前邮件服务目录区建立邮件安全存储区,

邮件服务守护进程DaemonPro建立完毕,

Part_1具体过程描述完毕;

基于OpenMP线程优化的电子邮件服务器的安全分发方法的Part_2的具体过程描述如下:

在守护进程DaemonPro中选择线程组ThreadGroup中空闲线程,执行线程thread_SMTPlisten,所述线程继承线程组ThreadGroup中该空闲线程的优化方程的特征值的数值,

线程thread_SMTPlisten的创建过程,具体为:

执行监听SMTP的用户邮件接收和转发过程,监听来自SMTP网络端口的用户请求,如果用户SMTP邮件目的服务器地址OtherAdd,即用户邮件收件人地址DestinationAdd的邮件目的服务器地址不是本地邮件服务器地址LocalAdd,查询系统路由表中是否有该用户SMTP邮件目的服务器地址,如果系统路由表中存在网络地址OtherAdd,则转发用户SMTP邮件给该目的服务器地址OtherAdd,如果系统路由表中没有网络地址OtherAdd,则把当前用户SMTP邮件通过SMTP协议进行转发,发送给默认邮件服务器路由地址,

线程thread_SMTPlisten保持监听,当守护进程DaemonPro中调用结束线程thread_SMTPlisten时,线程thread_SMTPlisten结束,

在守护进程DaemonPro中选择线程组ThreadGroup中空闲线程,执行SMTP邮件接收线程thread_smtp,所述线程继承线程组ThreadGroup中该空闲线程的优化方程的特征值的数值,

线程thread_smtp的创建过程,具体为:

监听来自SMTP网络端口的用户请求,如果用户SMTP邮件目的服务器地址OtherAdd是本地邮件服务器地址LocalAdd,那么,在共享内存区申请新建用户邮件信息控制块MailCB结点,提取当前邮件信息,设置用户邮件在系统中编号MailID,初始化用户邮件头信息HeaderMail,用户邮件内容BodyMail,用户邮件附件UserAttachment,用户邮件寄件人地址SourceAdd,用户邮件收件人地址DestinationAdd,用户邮件紧急度EmergentDegree,初始化用户邮件状态信息MailStatus为空,

读取用户邮件紧急度EmergentDegree,每一个用户24小时之内具有一次权限设置紧急邮件,如果该邮件为紧急邮件,在SMTP队列头TopQ_SMTP后插入当前邮件,否则在SMTP队列尾TailQ_SMTP插入当前邮件,路由目的服务器地址MailHost设置为LocalAdd,用户邮件信息控制块MailCB设置为当前邮件结点,

当守护进程DaemonPro中调用结束线程thread_smtp时,线程thread_smtp结束,否则,所述线程监听来自SMTP网络端口的用户请求,

在守护进程DaemonPro中选择线程组ThreadGroup中空闲线程,执行线程thread_inMailProcess,所述线程继承线程组ThreadGroup中该空闲线程的优化方程的特征值的数值,

线程thread_inMailProcess的创建过程,具体为:

如果SMTP队列不为空,在SMTP队列SMTPQueue的TopQ_SMTP出队一个结点,记为CurSMTP,在系统共享内存区申请新的用户邮件列表UserMailList结点,存储用户的新邮件信息,初始化表中序号IDatTab,在用户的总邮件数量上加1后设置IDatTab的值,添加用户邮件信息控制块MailCB,按照优化方程的特征值,在守护进程DaemonPro中选择线程组ThreadGroup中空闲线程,如果当前线程组ThreadGroup中没有空闲线程,则等待,直到获得空闲线程CurThread,线程CurThread执行生成用户数字证书过程thread_GenLicence,生成本邮件的数字证书DigLicence,释放线程CurThread,守护进程回收线程CurThread,加入线程组ThreadGroup中为空闲线程,

按照优化方程的特征值,在守护进程DaemonPro中选择线程组ThreadGroup中空闲线程,如果当前线程组ThreadGroup中没有空闲线程,则等待,直到获得空闲线程CurThread,线程CurThread执行加密/解密过程thread_EncryptMail,调用加密过程对用户邮件内容BodyMail和用户邮件附件UserAttachment进行加密,加密后的内容存储到文件位置指针FilePoint进行保存,在其它信息OtherInfo保存用户的SMTP邮件的其它信息,释放线程CurThread,守护进程回收线程CurThread,加入线程组ThreadGroup中为空闲线程,

在POP队列中查找用户账号UserID,如果没有该用户账号UserID,那么,申请新的结点POPQueue插入POP队列尾TailQ_POP,加入当前邮件在该结点用户邮件列表UserMailList中,设置系统处理状态OP_PV为未处理,设置系统事物状态Sys_Transaction为正常状态,初始化用户会话期状态UserSession为离线状态,初始化用户登录状态UserLogIn为未登录状态,

在POP队列中查找用户账号UserID,如果有该用户账号UserID,增加当前邮件在用户邮件列表UserMailList中,并设置新结点的系统处理状态OP_PV为未处理,设置系统事物状态Sys_Transaction为正常状态,初始化用户会话期状态UserSession为离线状态,初始化用户登录状态UserLogIn为未登录状态,

线程thread_inMailProcess查询SMTP队列,如果SMTP队列不为空,在SMTP队列SMTPQueue的TopQ_SMTP出队下一个结点,进行下一个用户邮件处理过程,如果SMTP队列为空,线程thread_inMailProcess执行空等待,当守护进程中调用结束线程thread_inMailProcess时,所述线程结束,

Part_2具体过程描述完毕;

基于OpenMP线程优化的电子邮件服务器的安全分发方法的Part_3的具体过程描述如下:

在守护进程中选择线程组ThreadGroup中空闲线程,执行线程thread_POPlisten,所述线程继承线程组ThreadGroup中该空闲线程的优化方程的特征值的数值,

线程thread_POPlisten的创建过程,具体为:

当线程thread_POPlisten监听到POP3端口有用户获取邮件请求时,按照优化方程的特征值,在守护进程中选择线程组ThreadGroup中空闲线程,如果当前线程组ThreadGroup中没有空闲线程,则等待,直到获得空闲线程CurThread,线程CurThread执行用户登录身份验证thread_LogIn,如果用户是非法用户,则拒绝阅读邮件的请求,如果用户是合法用户,那么在POP队列POPQueue中查找用户账号UserID,在该用户账号UserID结点下的用户登录状态UserLogIn设置为登录状态,释放线程CurThread,守护进程回收线程CurThread,加入线程组ThreadGroup中为空闲线程,

如果POP队列POPQueue中当前用户账号UserID的用户登录状态UserLogIn为登录状态,接收用户的阅读邮件列表UserMailList的请求,设置系统处理状态OP_PV为正在处理,按照优化方程的特征值,在守护进程中选择线程组ThreadGroup中空闲线程,如果当前线程组ThreadGroup中没有空闲线程,则等待,直到获得空闲线程CurThread,CurThread执行线程thread_response读取用户选择的用户邮件列表UserMailList邮件信息,读取邮件数字证书DigLicence,在守护进程DaemonPro中选择线程组ThreadGroup中空闲线程,如果当前线程组ThreadGroup中没有空闲线程,则等待,直到获得空闲线程CurThread2,使用该数字证书对文件位置指针FilePoint的数据进行解密,并把解密后的数据添加到用户邮件信息控制块的对应位置,释放线程CurThread2,守护进程回收线程CurThread2,加入线程组ThreadGroup中为空闲线程,

封装用户邮件信息控制块MailCB的用户邮件头信息HeaderMail,已经解密的用户邮件内容BodyMail,已经解密的用户邮件附件UserAttachment,用户邮件寄件人地址SourceAdd,用户邮件收件人地址DestinationAdd,用户邮件紧急度EmergentDegree,其它信息OtherInfo发送给请求客户,当用户接收数据后,设置用户邮件状态信息MailStatus为已经阅读状态,

当用户选择删除邮件服务器中的该邮件时,删除该用户邮件信息控制块MailCB结点和在用户邮件列表UserMailList中删除表中序号IDatTab的邮件内容,

设置该结点系统处理状态OP_PV为处理完毕状态,

启动线程thread_UserSession检测该邮件的用户在时间onlineTime内的反馈信息,如果该用户响应反馈信息,那么,时间onlineTim设置为0,设置用户会话期状态UserSession为在线,如果用户在时间onlineTime内没有反馈,设置用户会话期状态UserSession为离线状态,关闭用户在POP3的连接端口和数据连接过程,设置用户登录状态UserLogIn为未登录状态,设置用户系统事物状态Sys_Transaction为事物异常状态,当用户重新登录并再次进行阅读邮件请求时,设置用户登录状态UserLogIn为登录状态,设置用户系统事物状态Sys_Transaction为事物正常状态,

如果该结点系统处理状态OP_PV为处理完毕状态与用户系统事物状态Sys_Transaction为事物正常状态,该用户的阅读邮件列表的请求处理完毕,删除UserMailList中的该邮件结点,如果该用户的UserMailList为空,则在POP队列POPQueue中删除该结点,释放线程thread_response,守护进程回收所述线程,加入线程组ThreadGroup中为空闲线程,

当守护进程中调用结束线程thread_POPlisten时,线程thread_POPlisten结束,

Part_3具体过程描述完毕;

基于OpenMP线程优化的电子邮件服务器的安全分发方法的Part_4的具体过程描述如下:

守护进程以时间TimeCheck作为一个周期,系统管理员设置TimeCheck的值,初始值是30分钟,设并行系统任务总数为totalTask,

totalTask=Num[SMTPQ]+Num[POPQ]+Num[OtherMail]+totalNum[OtherProcess]

其中,Num[SMTPQ]是SMTP队列在一个周期内的接收本地邮件的数量,Num[POPQ]是POP队列在一个周期内的用户请求邮件数量,Num[OtherMail]是在一个周期内非本地邮件服务器的邮件数量,totalNum[OtherProcess]是在守护进程中的一个周期内线程组ThreadGroup中线程OtherProcess执行的最大数量,

设定线程组ThreadGroup={thread_1,thread_2,…,thread_i,…,thread_n}所对应的权重为pi_thread_i,线程thread_i的优化方程的特征值ri计算公式为:

ri_thread_i=pm*turn[em]*totalThread

其中,totalThread是在守护进程中当前空闲线程总数,初始化优化方程的pm的值,初始化为:

p1=p2=…=pn=1/n

其中,n的值是系统管理员设定的线程总数,经过周期tk后,pi的值变化为pi_tk:

pi_tk=pi_value/totalTask

其中,pi_value是pi在totalTask中所占任务数量,重新计算线程thread_i的优化方程的特征值为:

ri_thread_i_tk=pm_tk*turn[em]_tk*totalThread

守护进程启动后,启动线程优化过程thread_OptimalProcess,具体为:

初始化优化方程的pm的值和矢向量em[e1,e2,…,ej,…,en],在守护进程的线程组ThreadGroup中,申请空闲线程thread_need需要满足的条件:

(1)当线程thread_need的并行执行数量大于等于线程thread_need对应的优化方程的特征值时,新的线程thread_need申请需要等待,

(2)当线程thread_need的并行执行数量小于线程thread_need对应的优化方程的特征值时,分配空闲线程给新的线程thread_need申请,

每经过一个周期时间,重新计算线程thread_i的优化方程的特征值:

ri_thread_i_tk=pm_tk*turn[em]_tk*totalThread

更新线程thread_i的优化方程的特征值,在一个周期结束时,守护进程接受系统管理员手动重新设定优化方程的pm的值和矢向量em请求,如果系统管理员不进行手动设置,系统参数继承和进行自动周期更新,当守护进程中调用结束线程thread_OptimalProcess时,线程thread_OptimalProcess结束,

Part_4具体过程描述完毕。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于哈尔滨理工大学,未经哈尔滨理工大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/202010000169.2/1.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top