作业文档

更新时间:2023-12-31 16:16:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

面向权限的隐私数据管理系统

目录

面向权限的隐私数据管理系统 ....................................................................................................... 1

1. 引言 ...................................................................................................................................... 2

1.1 系统背景 .................................................................................................................... 2 1.2 系统概述 .................................................................................................................... 3 2. 全局数据结构 ...................................................................................................................... 4

2.1 常量 ............................................................................................................................ 4 2.2 变量 ............................................................................................................................ 4 2.3 自定义数据结构 ........................................................................................................ 4

2.3.1 用户相关信息 ................................................................................................. 4 2.3.2 登录验证类 ..................................................................................................... 6 2.3.3 message类 ....................................................................................................... 7 2.3.4 秘钥协商类 ................................................................................................... 10

3. 系统模块设计 .................................................................................................................... 11

3.1 系统结构图 .............................................................................................................. 11

3.1.1 服务器框架 ................................................................................................... 11 3.1.2 客户端框架 ................................................................................................... 12 3.2 功能模块设计 .......................................................................................................... 13

3.2.1 登陆验证模块 ............................................................................................... 13 3.2.2 注册模块 ....................................................................................................... 15 3.2.3 C/S公共临时秘钥协商模块 ......................................................................... 16

3.2.3.1 DH算法原理 ...................................................................................... 16 3.2.3.2 系统实现 ............................................................................................ 17

3.3 全同态加密算法设计 .............................................................................................. 18

3.3.1 加密系统 ....................................................................................................... 18

3.3.1.1 平台搭建 ............................................................................................ 18 3.3.1.2 系统结构 ............................................................................................ 18 3.3.1.3 系统功能模块 .................................................................................... 19 3.3.2 加密方案设计 ............................................................................................. 20

3.3.2.1 全同态加密简介 ................................................................................ 20 3.3.2.2 全同态加密算法设计 ........................................................................ 20 3.3.2.3 加法运算 ............................................................................................ 21 3.3.2.4 减法运算 ............................................................................................ 21 3.3.2.5 乘法(除法)运算 ................................................................................. 21 3.3.2.6 除法运算 ............................................................................................ 22 3.3.3 同态性验证 ................................................................................................... 22

3.3.3.1 加法运算验证 .................................................................................... 22

4. 数据库设计 ........................................................................................................................ 23

4.1 系统ER模型 ........................................................................................................... 24

4.1.1 administrator .................................................................................................. 24 4.1.2 authority ......................................................................................................... 24 4.1.3 client ............................................................................................................... 25 4.1.4 clientcase ........................................................................................................ 25 4.1.5 clientinfo ........................................................................................................ 26 4.1.6 clientkeystore ................................................................................................. 26 4.1.7 全局ER图 .................................................................................................... 27 4.2 逻辑数据结构 .......................................................................................................... 28 4.3 设计总结 .................................................................................................................. 28 5. 系统功能测试分析 ............................................................................................................ 28 6. 系统总结 ............................................................................................................................ 28

1. 引言

1.1 系统背景

云计算在最近几年取得了很大的发展,并有继续发展的趋势。作为一种新兴的技术,云计算的安全问题尚未得到充分的研究,也没有提出相关完整的解决方案。目前,有关云计算的安全性问题主要集中在访问控制(基于层次密钥生成与分配策略实施访问控制的方法);利用基于属性的加密算法(如密钥规则的基于属性加密方案(KP-ABE));虚拟安全技术(Santhanam 等人提出了基于虚拟机技术实现的 Grid 环境下的隔离执行机);数据保护(Mowbray 等人提出了一种基于客户端的隐私管理工具,提供以用户为中心的信任模型,帮助用户控制自己的敏感信息在云端的存储和使用)等方面。综合各种研究,其中公认最核心的是数据安全问题。

总结起来,云计算服务时主要面临的数据安全风险有以下几方面。 1) 数据传输安全

通常情况下,企业数据中心保存有大量的企业私密数据,这些数据往往代表了企业的核心竞争力,如企业的客户信息、财务信息、关键业务流程等等。在云计算模式下,企业将数据通过网络传递到云计算服务商进行处理时,面临着几个方面的问题:一是如何确保企业的数据在网络传输过程中严格加密,保证数据即使被窃取也无法还原;二是如何保证云计算服务商在得到数据时不将企业保密数据泄露出去; 三是在云计算服务商处存储时,如何保证访问用户经过严格的权限认证并且是合法的数据访问,同时须保证企业在任何时候都可以安全访问到自身的数据。

2) 数据存储安全

企业的数据存储是非常重要的环节,其中包括数据的存储位置、数据的相互隔离、数据的灾难恢复等。在云计算模式下,云计算服务商在高度整合的大容量存储空间上,开辟出一部分存储空间提供给企业使用。但客户并不清楚自己的数据被放置在哪台服务器上,甚至根本不了解这台服务器放置在哪个国家;云计算服务商在存储资源所在国是否会存在信息安全等问题,能否确保企业数据不被泄露;同时,在这种数据存储资源共享的环境下,即使采用了加密方式,云计算服务商是否能够保证数据之间的有限隔离;另外,即使企业用户了解数据存放的服务器的准确位置,也必须要求服务商作出承诺,对所托管数据进行备份,以防止出现重大事故时,企业用户的数据无法得到恢复。 3) 数据审计安全

实际工作中,为了保证数据的准确性和有效性往往会引入第三方的认证机构进行数据审计。在云计算环境下,云计算服务商必须确保不对其他企业的数据计算带来风险的同时,又提供必要的信息支持,以便协助第三方机构对数据的产生进行安全性和准确性的审计,实现企业的合规性要求;另外,企业对云计算服务商的可持续性发展进行认证的过程中,如何确保云计算服务商既能提供有效的数据,又不损害其他已有客户的利益。在实施审计的过程中,还需保证审计机构不泄漏相关企业的敏感数据。

1.2 系统概述

基于云计算的概念,我们设计了面向权限的隐私数据管理系统。该系统通过C/S框架结构来模拟云计算环境,斌在此基础上加入了登陆安全控制以及访问安全控制,同时在数据传输以及数据操纵方面引入了全同态加密机制,保证了数据的盲操作和安全。

其中,客户端提供用户个人信息,个人体检表和病历的查询等相关操作,并及时与服务器交互来实现更新操作(更新前需要赋予用户读写权限)。

服务器端分为用户管理系统和信息处理系统。用户管理系统包括了一切对于用户的相关操作,例如用户的授权操作,用户相关信息的更新操作。除此之外,它负责处理客户端发送的所有用户响应,执行相关的服务操作并将结果返回给客户端;信息处理系统是服务器后台的数据操作中心,负责将服务器通过加密处理后的信息进行计算分析操作,将最终结果返回于服务器显示。

2. 全局数据结构

该系统除了引用相关jar包之外,还自定义了许多与系统相关的数据结构,故在这一节将详细结构列出。

2.1 常量

2.2 变量

2.3 自定义数据结构

该系统的自定义数据结构供客户端和服务器双方共享,放在com.hms.common包中。

2.3.1 用户相关信息

1) Authority类定义了用户权限的相关数据结构,如下所示:

public class Authority implements java.io.Serializable{ }

2) ClientBasicInfo类定义了用户的基本信息表的属性,如下所示:

// 只读权限

private boolean read_only = false; // 只写权限

private boolean write_only = false; // 读写权限

private boolean read_write = false; // 修改权限

private boolean modify_authority = false;

public class ClientBasicInfo implements java.io.Serializable {

// 用户姓名 private String Name; // 用户名 private String Id; // 密码

private String password; // 用户类型 private String type; }

3) ClientCase类定义了用户的病历表的属性,如下所示:

public class ClientCase implements java.io.Serializable { }

4) ClientPhysicalExamination类定义了用户的体检表的属性,如下所示:

public class ClientPhysicalExamination implements java.io.Serializable {

// 体检表索引

private String Index = null; // 用户名

private String Id = null; // 年龄 // 病历索引 private String Index; // 用户名 private String Id; // 病历信息

private String Diagnosis; // 日期

private String Date;

}

private String Age = null; // 性别

private String Sex = null; // 身高

private String Height = null; // 体重

private String Weight = null;

2.3.2 登录验证类

1) ClientRequest类定义了用户登录验证是所用的用户质询结构,如下所示:

public class ClientRequest implements java.io.Serializable { }

2) ServerQuest类定义了用户登录验证所用的服务器质询结构,如下所示:

public class ServerQuest implements java.io.Serializable { }

3) ServerReply类定义了用户登录验证所用的服务器回应结构,如下所示:

public class ServerReply implements java.io.Serializable {

// 客户ID

private String clientId; // 加密的CRCS // 序列号

private int sequence; // 服务器随机认证种子 private String SRCS; // 认证信息 private byte[] KEY; // 客户端随机认证种子 private String CRCS;

}

private byte[] ECRCS;

2.3.3 message类

Message类定义了客户端与服务器之间所有请求和信息封装的载体,是两者之间传输的基本信息单元,结构如下所示:

public class Message implements java.io.Serializable { // 请求用户权限标示

private boolean authority = false; // 用户信息标示符 private int Type = 0; // 网络链接标示

private boolean ConIsClose = false;

// 请求登陆标示

private boolean QuestForLogin = false; // 请求服务质询

private boolean QuestForSRCS = false; // 登陆认证标示

private boolean LoginConfirm = false; // 客户质询

private boolean ClientRequest = false; // 请求注册标示

private boolean QuestForRegister = false; // 注册成功标示

private boolean RegisterSuccess = false;

// 请求用户名校验标示

private boolean QuestForCheck = false; // 用户存在标示

private boolean ClientExist = false;

// 请求索要用户基本信息标示

private boolean QuestForClientBasicInfo = false; // 请求修改用户基本信息标示

private boolean QuestForModifyClientBasicInfo = false; // 修改用户基本信息成功标示

private boolean ModifyClientBasicInfoSuccess = false; // 请求索要用户体检信息标示

private boolean QuestForClientPhysicalExamination = false; // 请求添加用户体检信息标示

private boolean QuestForCreateClientPhysicalExamination = false; // 添加用户体检信息成功标示

private boolean CreateClientPhysicalExaminationSuccess = false; // 请求修改用户体检信息标示

private boolean QuestForModifyClientPhysicalExamination = false; // 修改用户体检信息成功标示

private boolean ModifyClientPhysicalExaminationSuccess = false; // 请求索要用户病历信息标示

private boolean QuestForClientCase = false; // 请求添加用户病历信息标示

private boolean QuestForCreateClientCase = false; // 添加用户体检病历成功标示

private boolean CreateClientCaseSuccess = false; // 请求修改用户病历信息标示

private boolean QuestForModifyClientCase = false; // 修改用户体检病历成功标示

private boolean ModifyClientCaseSuccess = false; // 请求协商用户秘钥标示

private boolean QuestForGenerateKey = false; // 协商用户秘钥标示

private boolean GenerateKey = false;

// 用户id标示

private String clinetid = null; // ClientBasicInfo类

private ClientBasicInfo cbi = null; // ClientPhysicalExamination类

private ClientPhysicalExamination cpe = null; // ClientCase类

private ClientCase cc = null; // CommonAlgorithmData类

private CommonAlgorithmData cad = null; // 服务质询

private ServerQuest sq = null; // 服务器回应

private ServerReply sr = null; // 客户质询

private ClientRequest cr = null; // 用户权限

private Authority useAuthority = null;

// 报表行值

private Vector> rowData; // 报表列名

private Vector columnName;

}

// 加密数据对象

private SealedObject so = null; //

private Notification notification = null;

2.3.4 秘钥协商类

CommonAlgorithmData类中定义了密钥协商所使用的相关参数,如下所示:

public class CommonAlgorithmData implements java.io.Serializable { }

// 素数p的原根a private BigInteger a; // 素数p

private BigInteger p;

// (YA=a^XA mod p) 所得的y private BigInteger y; // 协商公共秘钥 private BigInteger k; // 公钥

private byte[] publicKey;

3. 系统模块设计

3.1 系统结构图

3.1.1 服务器框架

服务器框架如图所示,包括服务器监听模块、用户注册管理模块、用户登录管理模块、用户校验模块、用户秘钥管理模块、用户状态管理模块。

服务器监听模块包含用户注册管理模块、用户登录管理模块、用户校验模块这三个子模块,负责监听网络上所有客户端的请求,并分别对用户登录、用户注册、用户检验这三种请求执行应答。

用户注册管理模块负责用户的注册信息的保存和在服务器上生成对应的用户密钥文档。 用户登录管理模块包含用户秘钥管理模块、用户状态管理模块两个子模块,负责对已登陆用户的详细信息(秘钥和个人数据等)和状态的刷新。

用户秘钥管理模块负责管理用户注册后服务器生成的用户密钥文档,并对其进行更新,提供用户登录验证的真实信息。

用户状态管理模块负责实时更新用户登录状态,从而管理用户的登陆和退出操作。

注:

① 用户注册管理模块将用户注册信息加入秘钥管理文档中 ② 用户校验模块从用户状态管理模块中更新用户状态

3.1.2 客户端框架

客户端框架如图所示,包括登陆模块,注册模块和客户端主体。

登录模块由登陆管理模块和登录验证子模块组成,以此来验证用户身份的合法性。 注册模块负责非合法用户的实时注册,并将注册信息提交至服务器,生成相关用户文档记录。

客户端主体是用户操作个人信息的主窗口,以此来进行个人信息的查看和管理。

注:

① 非合法用户注册 ② 注册完成返回登录 ③ 用户登录

3.2 功能模块设计

3.2.1 登陆验证模块

我们知道系统安全的一道防线就是登录验证,只有做出一个更加健全的用户登录方案,才能更好的保障系统的安全。在此,我们在传统的OTP(one time password)机制的基础上,通过改进认证过程,实现了一种新的一次一密的登陆方案。如图所示,这是我们改进后的登陆验证模块的结构图。

具体步骤释义如下:

① 客户端向服务器发送登陆请求 ② 服务器向客户端发送服务器质询(sq)

③ 客户端将接收到的服务器质询(sq)发送到计算中心

④ 计算中心将服务器质询(sq)中的服务器随机认证种子(srcs)加密后返回给客户端 ⑤ 客户端将加密的服务器随机认证种子(esrcs)和客户端随机认证种子(crcs)合并成客户端质询(cq)发送给服务器

⑥ 服务器接收到客户端质询(cq)后将加密的服务器随机认证种子(esrcs)解密进行验证,若认证成功,则将加密的客户端随机认证种子(ecrcs)作为服务器回应(sr)发送给客户端

验证过程如下:

首先,用户在注册后系统会自动为用户生成一个随机序列号(sequence),并将用户的密码做sequence次的Hash运算,最后将所得结果old_otp和sequence存入用户秘钥文档中。

如上所述,当客户端发送登陆请求后,服务器从用户秘钥文档中提取序列号(sequence),之后将服务器随机认证种子(srcs)和随机序列号(sequence)自加一作为服务器质询(sq)发送给客户端。

客户端收到服务器质询(sq)后将用户密码做sequence+1次Hash运算,运算所得到的

结果作为密钥来加密服务器随机认证种子(srcs)得到加密的服务器随机认证种子(esrcs),最后将加密的服务器随机认证种子(esrcs)和客户端随机认证种子(crcs)作为客户端质询(cq)发送给服务器。

服务器接收到客户端质询(cq)后,将用户秘钥文档中的old_otp再做一次Hash得到一个new_otp作为密钥来解密加密的服务器随机认证种子(esrcs),之后通过验证解密结果是否和服务器随机认证种子(srcs)匹配来判断用户的合法性,此时服务器验证成功。最后,服务器还会用new_otp加密客户端随机认证种子(crcs)作为服务器回应(sr)发给客户端;

客户端接收服务器回应(sr)后来解密加密的客户端随机认证种子(ecrcs)并进行匹配来验证服务器的真实性。

至此,客户端和服务器完成了双向验证。

3.2.2 注册模块

系统注册模块用于用户注册,并初始化相关参数,配置用户密钥文档,以及设置用户权限。本系统为用户定义了四种权限,分别是read_only、write_only、read_write、modify_authority,系统初次为用户只提供了read_only权限,之后的权限修改交予系统管理员负责。除此之外,为了配置用户密钥文档,系统进行密钥存储时,都会随机初始序列号来进行哈希运算。注册流程如图所示:

注:

① 用户提交信息 ② 返回注册状态

③ 服务器将数据送至用户注册管理模块 ④ 返回注册状态

3.2.3 C/S公共临时秘钥协商模块

注册用户登陆请求发送后,服务器和客户端之间将会分别建立公共加密秘钥来加密message里的数据对象。因此,双方的秘钥协商采用DH秘钥交换算法来生成公共秘钥。

3.2.3.1 DH算法原理

下面我们以Alice和Bob为例叙述Diffie-Hellman密钥交换的原理。

Diffie-Hellman交换过程中涉及到的所有参与者定义一个组,在这个组中定义一个大质数p,底数g。

Diffie-Hellman密钥交换是一个两部分的过程,Alice和Bob都需要一个私有的数字a,b。

下面是DH交换的过程图:

假如用户Alice和用户Bob希望交换一个密钥:

1) 取素数p和整数a,a是p的一个原根,公开a和p。 2) A选择随机数XA

3) B选择随机数XB

3.2.3.2 系统实现

在本系统中,流程如图所示:

注:

① 客户端首先发送QuestForGenerateKey来让服务器在本地生成一个秘钥对,这个秘钥对包含一个公有秘钥和服务器专有秘钥。

② 服务器生成秘钥对后,将其中的公有秘钥发送给客户端

③ 客户端根据服务器传来的公有秘钥生成自己的秘钥对,同理,客户端将它的公有秘钥发送给服务器,并发送GenerateKey标识来让服务器根据客户端秘钥和自己的私有秘钥开生成双方的公共秘钥。同样,客户端也根据自己的私有秘钥和服务器的公有秘钥来生成公共秘钥。

3.3 全同态加密算法设计

3.3.1 加密系统

3.3.1.1 平台搭建

我们的加密系统最主要的目的在于构建一个平台,为加密、解密算法提供实际的使用环境,并模拟实际应用中的云平台,为当今云系统面临的数据安全与信息处理问题提供解决方案。

该加密系统是典型的C-S模型。在客户端用户可以向服务器请求个人数据,并执行任意操作,完成后可将数据加密上传于服务器。服务器加密存储了所有用户的数据,并且可以对相关数据进行盲处理。

3.3.1.2 系统结构

1) 客户端:功能是数据的加密解密,以及密文数据的上传和下载。 2) 服务器:功能是接受和存储用户密文数据,并进行相应的统计计算。

3.3.1.3 系统功能模块

1) 数据加密模块

该模块负责明文数据加密,和密文数据的解密。服务器和客户端的所有交换信息操作全部都要经过数据加密模块进行加密。登陆之前双方协商的秘钥用AES来加密数据实例对象,之后添加到message包,其中的用户私有数据会用同态加密算法进行加密。这样保证网络传输中信息的安全。 2) 数据传输模块

该模块负责双方秘密数据的传输工作。服务器和客户端采用序列化对象message类来进行数据的传输,message类包含了所有的数据请求对象以及回复状态标识,所以在传输之前要进行加密操作。 3) 服务器控制模块

该模块负责对所有用户密文数据的统计分析等相关运算操作。服务器后台的数据控制模块实际上是一个用户数据分析据算中心,服务器将用户的所有数据利用全同态加密发送至该模块进行数据处理,计算平均值,最大值以及最小值。

3.3.2 加密方案设计

3.3.2.1 全同态加密简介

全同态加密是在同态加密的基础上提出的。同态加密(Homomorphic Cryptograph)是由 Rivest 等人于 1978 年提出的,也称为秘密同态(Private Homomorphic)。记加密操作为 E,明文为 m,加密得 e,解密操作为D,即 e = E(m),m= D(e)。已知针对明文有操作 f,针对 E 可构造 F,使得 F(e) =E(f(m)),这样 E 就是一个针对 f 的同态加密算法。也就是说,可以在不知道明文的情况下,对密文直接进行操作,效果就如同先对明文进行操作,然后加密得到的结果一样。同态加密包括两种基本的同态类型,即乘同态和加同态,加密算法分别对乘法和加法具备同态特性。比如,原始的RSA算法就是乘同态的。

3.3.2.2 全同态加密算法设计

整数范围内的同态加密运算在实际应用中有所限制,因为实际生活中我们接触到的大多是实数范围内的运算,所以应该找到一种方案来实现实属范围内的同态运算,根据整数域上的同态算法我们可以进行修改以适应实属范围内的运算,我们在此规定另一个模运算规则lmod(x, p),则有:

mod (x, p) x≥0

lmod(x, p) =

- mod (|x|, p)

基于上述lmod运算,我们就可以实现以下算法:

预定义数据常量:p、q(这两个是选取的大素数),n = p*q,r是一个随机数。设Zp = {|x| | |x| < p}为明文空间,Zn = {|x| | |x| < n}为密文空间,则有:

加密算法:E(x) = lmod( x + sign(x)*p*r, n ) 解密算法:D(y) = lmod( y, p )

x<0

3.3.2.3 加法运算

1) 设有两个实数x1和x2,则进行加密后有y1 = E(x1),y2 = E(x2)。

2) 利用y1和y2相加后的结果 y1 + y2 = E(x1 + x2),通过解密算法即可得到x1和x2相加的结果。

3.3.2.4 减法运算

1) 设有两个实数x1和x2,则进行加密后有y1 = E(x1),y2 = E(x2)。

2) 利用y1和y2相加后的结果 y1 - y2 = E(x1 - x2),通过解密算法即可得到x1和x2相减的结果。

3.3.2.5 乘法(除法)运算

1) 设有实数x1和x2进行乘法同态,则在加密之前先进行整数化操作,即 X = Int(x) = x*10e (e是x小数点后的位数)。

2) 对整数化后的X1和X2进行加密操作得到Y1 = E(X1),Y2 = E(X2),并分别记录e1和e2。

3) 将Y1和Y2相乘得Y,利用解密算法解密得到 X = D(Y)*10 - (e1 + e2) ,这便是x1*x2后的结果。

3.3.2.6 除法运算

1) 设有实数x1和x2进行乘法同态,则在加密之前先进行整数化操作,即 X = Int(x) = x*10e (e是x小数点后的位数)。

2) 对整数化后的X1和X2进行加密操作得到Y1 = E(X1),Y2 = E(X2),并分别记录e1和e2。

3) 将Y1和Y2相除得Y,利用解密算法解密得到 X = D(Y)*10 e2 - e1 ,这便是x1*x2后的结果。

3.3.3 同态性验证

由于加法和减法,乘法和除法互为逆运算,在此我们只验证加法和乘法关系。

3.3.3.1 加法运算验证

1) 若x1≥0,x2≥0,则有:

E(x1) = lmod( x1, p )= ( x1 + p*r1 )mod p*q E(x2) = lmod( x2, p )= ( x2 + p*r2 )mod p*q

将加密结果相加得E(x1) + E(x2) = [ x1 + x2 + p*( r1 + r2 ) ] mod p*q,解密上述结果得 D[ E(x1) + E(x2) ] = lmod( E(x1) + E(x2),p ) = ( [ x1 + x2 + p*( r1 + r2 ) ] mod p*q ) mod p = x1 + x2。

2) 若x1≥0,x2<0,则有:

E(x1) = lmod( x1, p )= ( x1 + p*r1 )mod p*q E(x2) = lmod( x2, p )= - ( p*r2 - x2 )mod p*q

将加密结果相加得E(x1) + E(x2) = [ x1 + x2 + p*( r1 - r2 ) ] mod p*q,解密上述结果得 D[ E(x1) + E(x2) ] = lmod( E(x1) + E(x2),p ) = ( [ x1 + x2 + p*( r1 - r2 ) ] mod p*q ) mod p = x1 + x2。

3) 若x1<0,x2<0,则有:

E(x1) = lmod( x1, p )= - ( p*r1 - x1 )mod p*q E(x2) = lmod( x2, p )= - ( p*r2 - x2 )mod p*q

将加密结果相加得E(x1) + E(x2) = [ x1 + x2 - p*( r1 + r2 ) ] mod p*q,解密上述结果得 D[ E(x1) + E(x2) ] = lmod( E(x1) + E(x2),p ) = ( [ x1 + x2 - p*( r1 + r2 ) ] mod p*q ) mod p = x1 + x2。

综上,加法同态已验证。 3.3.3.2 乘法运算验证 1) 若x1≥0,x2≥0,则有:

E(x1) = lmod( x1, p )= ( x1 + p*r1 )mod p*q E(x2) = lmod( x2, p )= ( x2 + p*r2 )mod p*q

将加密结果相乘得E(x1) * E(x2) = [x1*x2 + p( x1*r2 + x2*r1 + p*r1*r2 )] mod p*q,解密上述结果得 D[ E(x1) * E(x2) ] = lmod( E(x1) * E(x2),p ) = ( [x1*x2 + p*( x1*r2 + x2*r1 + p*r1*r2 )] mod p*q ) mod p = x1*x2。 2) 若x1≥0,x2<0,则有:

E(x1) = lmod( x1, p )= (x 1 + p*r1 )mod p*q E(x2) = lmod( x2, p )= - ( p*r2 - x2 )mod p*q

将加密结果相乘得E(x1) * E(x2) = [x1*x2 + p*( - x1*r2 + x2*r1 - p*r1*r2 )] mod p*q,解密上述结果得 D[ E(x1) * E(x2) ] = lmod(E(x1) * E(x2),p) = ( [x1*x2 + p*( - x1*r2 + x2*r1 - p*r1*r2 )] mod p*q ) mod p = x1*x2。 3) 若x1<0,x2<0,则有:

E(x1) = lmod( x1, p )= - (p*r1 - x1)mod p*q E(x2) = lmod( x2, p )= - (p*r2 - x2)mod p*q

将加密结果相乘得E(x1) * E(x2) = [x1*x2 - p*( - x1*r2 - x2*r1 + p*r1*r2 )] mod p*q,解密上述结果得 D[ E(x1) * E(x2) ] = lmod( E(x1) * E(x2),p ) = ( [x1 + x2 - p*( - x1*r2 - x2*r1 + p*r1*r2 )] mod p*q ) mod p = x1*x2。

综上,乘法同态已验证。

4. 数据库设计

该系统采用mysql数据库作为存储中心,用户所有的个人信息以及用户密钥文档和权限表等都存储在数据库中

4.1 系统ER模型

该系统总共设计了6张表,分别为administrator(管理员信息表),authority(用户权限表),client(用户账号及密码表),clientcase(用户病历表),clientinfo(用户体检表),clientkeystore(用户密钥文档表)。

4.1.1 administrator

administrator表的ER图如下所示:

其中,Id表示管理员的标识号,Name是管理员的姓名,Password是管理员登录密码,它们组成了管理员信息表administrator。

4.1.2 authority

authority表的ER图如下所示:

其中,Id表示用户名,read_only表示只读权限,write_only表示只写权限,read_write表示读写权限,modify表示修改权限,一般只有系统管理员拥有。以上属性构成了用户权限表authority。

4.1.3 client

client表的ER图如下所示:

其中,Id表示用户名,Name表示用户姓名。以上属性构成了用户账号及密码表client。

4.1.4 clientcase

clientcase表的ER图如下所示:

本文来源:https://www.bwwdw.com/article/0ajx.html

Top