完整性验证仪(共5篇)
完整性验证仪 篇1
我国卫生部已于2011年2月12日发布了《药品生产质量管理规范 (2010年修订) 》 (通常称新版GMP) , 并于2011年3月1日起实施。在新版GMP中新增的附录一《无菌药品》中, “过滤器”这个词出现了14次之多。可见其在无菌药品生产过程中的重要性。在过滤器系统中, 过滤器的完整性验证是必需的, 也是各国GMP明文规定的。
传统的过滤器验证大多采用手动方式, 即手动润湿过滤器, 手动启动完整性验证仪。手动的操作方式不仅有违GMP对于无菌药品生产的指导原则, 易造成过滤器系统的污染风险加大, 而且效率低, 如果过滤器在无菌室内, 手动操作与人都会对无菌环境造成很大的污染。过滤器的完整性验证越来越需要使用自动操作方式。而自动操作的首要条件就是控制系统与完整性验证仪能够通讯。在本文中, 主要讲述通讯系统的组成、PALL完整性验证仪的通讯参数、软件实现方法。
1 通讯系统构成
本系统由西门子控制器、PALL验证仪、通讯线、通讯协议ASCII组成。系统图见图1, 通讯线制作图见图2。
1.1 CP340模块
CP340是西门子公司推出的串行通讯模块, 提供了3种不同形式的接口类型, 即RS232C、20 m A (TTY) 、Rs422/Rs485。CP430支持3种重要的传输协议:3964 (R) 程序、ASCII驱动程序、打印机驱动程序。通过内置在STEP7中的CP340组态工具可以通讯协议为ASCII, 通讯参数为9600, 8, 2, None, 其他默认。
CP340接口定义见图3。
1.2 验证仪通讯参数
FFS02/FFSXC完整性验证仪是PALL公司生产的专门用于生产环境的便携式的过滤器完整性验证仪器。触摸屏的设计使操作更加简单、友好。
任何带RS232C (24 V) 接口可以发送与接收ASCII码的控制器都可以通过通讯来控制颇尔FFS02/FFSXC完整性验证仪。
FFS02/FFSXC内置一个RS232C (24V) 接口COM1。仪表接口定义见图4。
接口参数 (工厂设定, 不能修改) 如下:
发送接收数据格式共2种:
(1) 格式1:
(2) 格式2:
定义如下:
STX通讯起始符, 占用1个字符, “STX” (2H)
DA设备地址, 占用2个字符, “00” (30H 30H) 工厂设定
IC命令代码, 占用2个字符, Area 01-7F写命令
Area 81-FF读命令
SC附命令代码, 占用2个字符, Area 00-FF
Message ASCII文本, 分2种, 一是设定的参数, 二是命令
BCC校验块, 占用1个字符, BCC测试不执行在通讯时, 在本例中使用“~” (7EH)
ETX ASCII控制字, “ETX” (3H)
CR ASCII控制字, 不强制使用, 在本例中不使用LF ASCII控制字, 不强制使用, 在本例中不使用仪表应答格式:
定义与读写格式相同。
2 发送接收数据命令格式
2.1 PLC写参数命令格式
主要是完整性测试的参数, 分两类, 非强制测试参数与强制测试参数, 以水侵入测试为例, 强制测试参数有三:测试时间 (s) , 测试压力 (通过验证仪设定psi、k Pa、kg/cm2) , 最大流量 (m L/min) 。非强制测试参数有:生产域、产品批号, 滤光器系列号, 润湿液体, 测试空气, 操作者等。
2.2 PLC写命令
写命令时格式分为以下两种:启动仪器热启动、启动完整性测试命令。
启动热启动必须等待15 s的时间再对仪器进行操作, 在这段时间内仪器在热启动的过程中, 不接受外面的命令。
完整性测试有以下几种:前进流测试、水侵入测试、起泡点测试、前进流与起泡点联合测试、流量确认、自我测试。
2.3 PLC发送读数据的命令
读取数据之前发送的写读取命令。
2.4 PLC读数据
读取的数据主要包括:系统状态、仪器参数, 测试参数, 测试状态。
3 发送与接收数据块
本节主要内容是发送与接收的数据块, 以水侵入测试为例。
3.1 写测试压力 (图5)
测试压力共4位, 如果只使用3位, 千位发送空格“SP” (20H) 。
3.2 写测试时间 (图6)
测试时间有2种赋值方法: (1) 发送“000”, 表示测试时间自动; (2) 设定一个3位数, 测试时间固定。
3.3 写最大流量 (图7)
最大流量分配了7位ASCII码, 整数部分4位, 小数点占1位, 小数点后2位。高位不使用时用发送空格, 小数点的位固定。
3.4 启动测试 (图8)
启动测试的“Message”共2位, 本例中发送的是“WT” (即57H54H) 。
3.5 发送读测试状态命令 (图9)
因为验证仪不能自主发送数据, 所以在读取测试状态前必须发送命令请求读取数据。
3.6 读取测试状态 (图10)
测试的状态中比较重要的信息是测试状态, 即图10中的53、54两位。以水侵入测试为例, 线性压力低, 测试压力不稳定, 不能稳定测试压力, 流量太高、太低都表示测试不合格, 流量在设定的范围内为测试合格。
4 软件实现方法
实现PLC与验证仪的通讯, 软件是很关键的一部分, 本部分包括PLC发送数据命令、PLC读取数据、接收到的数据处理程序3个部分。
4.1 PLC发送数据命令程序的设计 (图11)
调用发送数据功能块FB3, 在需要发送的数据存放信息设置在FB3的接口上时就可以启动请求发送位发送数据。数据的存放信息为发送数据存放的数据块、起始地址、发送数据长度。例如, 发送测试压力时, 数据块12, 起始地址24, 长度13。
4.2 PLC读取数据程序的设计 (图12)
在发送了读取测试数据命令后, 立即读取验证发送的数据。在得到请求后5 s内, 验证发送被请求数据。
4.3 ASCII码通讯结果处理 (图13)
验证仪是以ASCII码发送的, 比如, 测试流量为0.31 m L/min, PLC会收到“30”“2E”“33”“31”4个ASCII码。为了更加方便实时显示历史记录、数据处理, 所以要把接收到的数据转化为实数。下面的程序是一位的处理方法。其他位的转换方法与之类似。
总之, 本文所述为西门子PLC与PALL完整性验证仪之间的通讯方法, 其实对于其他品牌的PLC, 只要有通讯接口RS232C (24V) 且支持ASCII码通讯便都可以用相似的方法实行与验证仪的通讯。
通过软件与硬件的建立, 可以实现PLC与验证仪的自由通讯, 这就为过滤器的在线完整性验证的自动控制解决了远程控制与信息反馈两个问题。再配合完整性测试的流程, 就可以实现在线完整性验证的自动控制, 从而使整个测试过程减小人的干预, 减少交叉污染, 更加符合无菌生产的要求。
摘要:以过滤器完整性验证手动控制存在的弊端为切入点, 从通讯系统、通讯协议、PLC与仪器的通讯参数到通讯发送的数据块以及通讯软件的实现方法几方面, 系统地讲述了西门子S7-300控制器与颇尔FFS02/FFSXC完整性验证仪的自由通讯。
关键词:西门子PLC,CP340,过滤器完整性测试,PALL,完整性验证仪,ASCII,通讯
参考文献
[1]Pall Corporation.FFS02&XC Remote Interface Description, 2004
[2]Siemens.S7-300CP340的PtP耦合与组态, 2007
安全完整性等级验证方法的比较 篇2
目前,SIL验证的方法主要包括简易公式法、故障树法和Markov法,其中简易公式法和Markov法应用较多。
本文首先对简易公式法和Markov法进行简要介绍,然后将两种方法应用到某装置丙烯塔顶压力高高联锁切塔釜再沸器加热热源的SIF的SIL验证,并通过验证为该SIF的元件提供检验测试周期。
1 安全完整性等级验证
1.1 安全完整性等级
安全完整性定义为安全仪表系统在规定时段内,在所有规定条件下满足执行要求的仪表安全功能的平均概率[3]。
安全完整性等级定义为用来规定分配给安全仪表系统的仪表安全功能的安全完整性要求的离散等级(4个等级中的一个)[3]。SIL 4是安全完整性的最高等级,SIL 1为最低等级。石油化工厂或装置的SIL最高为SIL3[4]。
1.2 安全完整性等级的验证
SIL验证的步骤见图1。
SIL验证应首先确定SIF中传感器、逻辑控制器(PLC)和执行机构这三部分涉及哪些元件,并确定各元件的冗余关系。
其次,确定各元件的失效数据、假设的检验测试周期(T1)和平均恢复时间(MTTR)。元件的失效数据可查阅OREDA数据库或由制造商、业主提供,并且应按检测到的安全失效率(ASD,单位:小时-1)、未检测到的安全失效率(λSU,小时-1)、检测到的危险失效率(λDD,小时-1)、未检测到的危险失效率(λDU,小时-1)对失效数据分类。T1和MTTR应根据装置的运行情况进行确定。
最后,计算元件和回路的PFDavg。目前计算PFDavg的方法很多,ICE-61508提供了两种比较常用的技术,简易公式法和马尔科夫模型。
1)简易公式法[1]
常见的元件冗余关系包括1取1、2取1、2取2、3取1和3取2,对于不同的冗余关系,应采用以下对应的公式计算元件的PFDavg。
1取1:
式中:λ——仪表元件的失效率,小时
λS——安全失效率,小时-1;
λD——危险失效率,小时-1;
β——共因失效因数。
一个完整SIF回路的PFDavg等于传感器、逻辑求解器和执行机构三个部分的PFDavg的和,即按下式计算:
2)马尔科夫模型
马尔科夫模型用于描述系统随时间的动态变化,它将系统归于不同的若干状态,一个状态会以某个概率转移到其他状态,系统未来的状态与系统历史状态无关,只决定于当前状态。马尔科夫模型可以表示出系统的全部状态:完全正常状态、一次降级状态、二次降级状态以及各种失效状态,不同的状态用带有编号的圆表示,状态之间的转换用带箭头的转移弧表示,并标注相关的失效率λ或维修率μ,如图2所示。
当SIS系统的马尔科夫模型建立后,需要将其转化为马尔科夫矩阵,矩阵的每一项代表着不同状态之间的转换概率。矩阵形式如下:
代入下式计算某时刻的状态矩阵S以获得某时刻的PFDavg。
式中:S0为初始状态矩阵,[10 0…0]。
具体有关马尔科夫模型的内容见参考文献[5],在此不再赘述。因为马尔科夫模型的复杂性,需要借助计算机软件进行编程计算。
2 应用
某装置丙烯塔顶压力高高联锁切塔釜再沸器加热热源的SIF为SIL3(见图3)。当3取2的压力传感器测量的压力达到联锁值后,联锁信号送入三重化冗余设计的PLC,PLC最后将信号送入2取1的执行机构去关闭塔釜再沸器的加热热源。执行机构每一路由1个电磁阀和1个切断阀组成。
小时-1
2.1 简易公式法计算PFDavg
表2为各元件的失效数据。计算中β取0.05,βD取0.025,MTR和MTTR均取8小时。各元件和SIF回路的PFDavg的计算结果见表3。
表3结果表明:每年进行一次检验测试,SIF能满足SIL3的要求。
2.2 Markov模型
本文采用MATLAB软件编写了马尔科夫模型的计算程序该程序计算得到的各元件和SIF回路的PFDavg见表4。表4表明:在每年进行一次检验测试的情况下,SIF不能满足SIL 3的要求,这与简易公式的计算结果不一致。
对于2取1的执行机构,由于每一路是由电磁阀和切断阀组成的子系统,元件失效状态增加,采用简易公式法不能反映执行机构的全部失效状态,所以造成计算结果偏小。而马尔科夫模型可以考虑元件的所有失效状态,因此计算结果更接近实际情况。
2.3 改进措施
根据工程经验,有SIL3要求的SIF多采用双电磁阀的设计。通常,双电磁阀有图4中的两种结构
由于元件增多,失效状态也增多,所以采用Markov模型计算两种电磁阀组态下的执行机构的PFDavg。
图5是电磁阀2取1时的执行机构的马尔科夫模型。图5中各状态的含义如下:
状态1:执行机构中所有元件都处于正常工作状态;
状态2:执行机构发生安全失效;
状态3:执行机构发生危险失效;
状态4:2取1的电磁阀中有一个电磁阀发生不能检测到的危险失效;
状态5:1个切断阀发生不能检测到的危险失效。
图5是电磁阀2取2时的执行机构的马尔科夫模型。图6中各状态的含义如下:
状态1:执行机构中所有元件都处于正常工作状态;
状态2:执行机构发生安全失效;
状态3:执行机构发生危险失效;
状态4:2取2的电磁阀中有一个电磁阀发生不能检测到的安全失效;
状态5:2取2的电磁阀中有一个电磁阀发生不能检测到的危险失效;
状态6:1个切断阀发生不能检测到的危险失效。
表5是执行机构的PFDavg的计算结果。与表4相比,电磁阀采用冗余结构后,执行机构的PFDavg明显降低,并且当检验测试周期为1年时,两种电磁阀配置的SIF的PFDavg分别为8.7E-04和9.2E-04,满足SIL3的要求。
表6是计算得到的执行机构的假跳率,结果表明2取1的假跳率大于2取2。
实际设计中,某装置丙烯塔联锁切热源的SIL3的SIF,以及某装置EO球罐液位高高切进料的SIL3的SIF,它们的执行机构为2取1的切断阀,并且每个切断阀采用2取2的电磁阀设计。
3结论
通过实际案例,对两种SIL验证方法进行比较,得到以下结论:
1)对于SIL1的SIF,结构通常比较简单,可以采用简易公式进行计算,但是对于SIL等级要求较高的工况,回路结构复杂,SIF的失效状态较多,此时公式法的计算结果准确性降低,虽然马尔科夫法建立模型比较耗时,但是计算更准确;
2)对于不满足SIL等级要求的SIF,可以通过降低元件的检验测试周期,提高元件的冗余程度来满足SIL等级的要求。
参考文献
[1]IEC 61508-2010 Functional safety of electrical/electronic/programmable electronic safety-related systems[S].International Electrotechnical commission.
[2]IEC 61511 Functional Safety-Safety instrumented systems for the process industry sector[S].International Electrotechnical Commission.
[3]GB/T 21109.1-2007过程工业领域安全仪表系统的功能安全第1部分:框架、定义、系统、硬件和软件要求[S].北京:中国质检出版社,2007.
[4]GB/T 50770-2013石油化工安全仪表系统设计规范[S].北京:中国计划出版社,2013.
药物溶出仪机械的验证 篇3
药物溶出仪是《中国药典》规定的用于模拟口服固体制剂在胃肠道中崩解和溶出的体外试验仪器,是保证药物口服固体制剂质量的一个重要指标[1]。溶出仪主要由机头(包括升降系统及控制系统)、水浴箱、溶出杯、转篮(桨)、温度传感器等组成[2]。通过检验数据表明,溶出度仪的水平度、溶出杯及篮(桨)轴垂直度、篮(桨)转速、温度等会对溶出效果产生不同程度的影响。其计量性能直接影响对药物性能的评判。
因此,为保证药物溶出仪能够持续保持机械性能的稳定性,有必要定期对药物溶出仪的机械部分进行验证[3]。
本文以上海富科思分析仪器有限公司生产的FADT-800RC型药物溶出仪为验证对象,验证依据为《药物溶出度仪机械验证指导原则》,验证项目包括水平度、篮(桨)轴垂直度、溶出杯垂直度、溶出杯与篮(桨)轴同轴度、篮(桨)轴摆动度、篮摆动度、篮(桨)深度、篮(桨)轴转速、溶出杯内温度9项[4,5,6],以准确评价药物的溶出度,测量药物的有效成分含量。
1 验证前检查
1.1 溶出杯
杯体应光滑,无凹陷或凸起,无划痕、裂痕、残渣等缺陷。
1.2 篮
篮体应无锈蚀,无网眼堵塞或网线伸出,无网眼或篮体变形等现象。
1.3 篮(桨)轴
篮(桨)轴无锈蚀,桨面涂层光滑、无脱落。
1.4 测量工具
包括倾角仪、百分表、转速表和温度计等,所用仪器均经计量部门校准,能溯源至国家基准。
2 验证项目
2.1 溶出度仪水平度
(1)验证方法:在溶出杯的水平面板上从两个垂直方向上分别测量。
(2)技术要求:两次测量的数值均不得超出0.5°。
(3)测量工具:数字倾角仪。
(4)验证数据:横向0.01°,纵向0.2°。
2.2 篮(桨)轴垂直度
(1)验证方法:将倾角仪紧贴篮(桨)轴上,读取篮(桨)轴垂直度,将倾角仪沿篮(桨)轴旋转90°再次测量并记录读数。
(2)技术要求:每根篮(桨)轴两次测量的数值均不得超出90°±0.5°。
(3)测量工具:数字倾角仪。
(4)验证数据:篮(桨)轴垂直度验证数据如表1所示。
单位:°
2.3 溶出杯垂直度
(1)验证方法:将倾角仪沿溶出杯内侧圆柱面(避免触及溶出杯底部圆弧部分)测量垂直度,再沿内壁旋转90°测量并记录读数。
(2)技术要求:每个溶出杯两次测量的数值均不得超出90°±1.0°。
(3)测量工具:数字倾角仪。
(4)验证数据:溶出杯垂直度验证数据如表2所示。
2.4 溶出杯与篮(桨)轴同轴度
(1)验证方法:将百分表安装在转轴上,距离篮(桨叶)上缘2 mm处,与溶出杯内壁接触。设置转速为25 r/min,记录百分表读数,最大读数与最小读数差值即为位置1的同轴度偏差;将百分表安装在转轴上,距离篮(桨叶)上缘60 mm,即溶出杯上部靠近溶出杯上缘处,与溶出杯内壁接触。设置转速为25 r/min,记录百分表读数,最大读数与最小读数差值即为位置2的同轴度偏差。
(2)技术要求:每个测量点的最大值与最小值之差均不得超出2.0 mm。
(3)测量工具:数字百分表。
(4)验证数据:溶出杯与篮(桨)轴同轴度验证数据如表3所示。
2.5 篮(桨)轴摆动
(1)验证方法:将百分表安装在支架上并固定在溶出杯上,百分表头在篮(桨叶)上方约20 mm处并与轴接触。设置篮(桨)轴转速为50 r/min,连续测量15 s,记录百分表读数。
(2)技术要求:每根篮(桨)轴测量的最大值与最小值之差不得超出1.0 mm。
(3)测量工具:数字百分表。
单位:°
单位:mm
(4)验证数据:篮(桨)轴摆动验证数据如表4所示。
2.6 篮摆动
(1)验证方法:将百分表安装在支架上并固定在溶出杯上,百分表头与转篮底部接触。
设置篮轴转速为50 r/min,连续测量15 s,记录百分表读数。
(2)技术要求:每个篮测量的最大值与最小值之差不得超出1.0 mm。
(3)测量工具:数字百分表。
(4)验证数据:篮摆动验证数据如表5所示。
2.7 篮(桨)深度
(1)验证方法:将23 mm标准高度球放置在溶出杯底部,使仪器下降至试验位置,用百分表测量每个溶出杯内篮(桨)下缘与高度球的距离,记录百分表读数。
(2)技术要求:均应为(25±2)mm。
(3)测量工具:定位球、百分表。
(4)验证数据:篮(桨)深度验证数据如表6所示。
2.8 篮(桨)轴转速
(1)验证方法:将反光套管安装在篮(桨)轴上,调整搅拌转轴高度使转速表发射光斑覆盖反光条。分别设定转速为50 r/min、75 r/min、100 r/min,待转速平稳后,记录转速表示值。
(2)技术要求:各篮(桨)轴的转速误差均≤±4%。
(3)测量工具:转速表。
(4)验证数据:篮(桨)轴转速如表7所示。
2.9 溶出杯内温度
(1)验证方法:在各溶出杯内注入900 m L纯化水,设定溶出度仪的水浴温度为37℃,转速为100 r/min,待显示温度恒定后(温度波动度±0.1℃),用数显温度计测量各溶出杯内的温度。
(2)技术要求:均应为(37±0.5)℃。
(3)测量工具:数显温度计。
(4)验证数据:溶出杯内温度验证数据如表8所示。
单位:mm
单位:mm
单位:mm
单位:℃
3 结语
经验证,仪器水平度最大偏差为0.2°;篮轴垂直度最大偏差为0.35°,桨轴垂直度最大偏差为0.29°;溶出杯垂直度最大偏差为4号杯,偏差为0.37°;溶出杯与篮轴同轴度最大偏差为1.37 mm,溶出杯与桨轴同轴度最大偏差为1.23 mm;篮轴最大摆动度为0.26 mm,桨轴最大摆动度为0.30 mm;转篮最大摆动度为0.54 mm;篮深度最大为26.43 mm,桨深度最大为26.07 mm;篮(桨)轴转速最大偏差为0.6(设定75 r/min时);溶出杯内温度最大偏差为0.1℃。
以上实验数据表明,该药物溶出仪各项指标均符合指导原则要求,该溶出仪可用于药物一致性评价的研究工作。其他品牌溶出仪也可按以上方法进行验证。
摘要:药物溶出度试验是作为模拟口服固体制剂在胃肠道中崩解和溶出的体外试验法,溶出检测仪的检测性能与药物有效成分含量的测定有密切关系,药物溶出度测定仪在评价药物溶出度时起着重要作用。现以上海富科思分析仪器有限公司生产的FADT-800RC型药物溶出仪为验证对象,依据《药物溶出度仪机械验证指导原则》,对水平度、篮(桨)轴垂直度、溶出杯垂直度、溶出杯与篮(桨)轴同轴度、篮(桨)轴摆动度、篮摆动度、篮(桨)深度、篮(桨)轴转速、溶出杯内温度9个验证项目进行了分析探讨。
关键词:药物溶出度,机械验证,确认,校准方法
参考文献
[1]国家药典委员会.中华人民共和国药典[M].北京:中国医药科技出版社,2015.
[2]制药装备行业标准化技术委员会.药物溶出试验仪[M].北京:中国计划出版社,2005.
[3]楼舸,古海锋.药物溶出度仪机械性能验证方法的探讨[J].首都医药,2011(24):41-42.
[4]国家食品药品监督管理总局.药物溶出度仪机械验证指导原则的通告[A/0L].(2016-04-28)[2016-09-28].http://www.sda.gov.cn/WS01/CL0087/151716.html.
[5]中华人民共和国工业和信息化部.药物溶出试验仪:JB/T20076-2013[S].北京:中国计划出版社,2013.
完整性验证仪 篇4
云存储服务中,服务提供商( CSP) 是不可信的,为了谋取更大的利益,CSP可能将存储在云服务器上的数据进行篡改和删除,为了保护数据的安全和完整性,研究人员提出数据持有型证明( PDP) 来检测云存储中的数据的正确性和完整性。数据完整性验证研究主要集中在可恢复证明( POR) 和数据持有型证明,其主要的区别是PDP支持检测数据完整性,但无法保证数据可恢复性; POR可以确保存储数据的可恢复性[1]。
在文献[2,3]中,Ateniese等人正式定义了PDP方案,并使用基于RSA的模指运算构造同态标签来实现持有性证明。但是由于RSA编码的使用,PDP方案给服务器端带来了极大的计算开销和通信负载。文献[3]中,Ateniese等人考虑到在文献[2]中的静态数据更新问题,提出了基于对称密钥的半动态数据更新的方法,然而在数据更新过程中,数据拥有者需要重新生成已保留的挑战,这对于大文件不适用。文献[4]中,Erway等人提出动态数据持有性证明方法,该方法主要实现了数据验证的动态性,尽管该方案可以保证可变大小数据块的完整性,但是并不能验证独立数据块的完整性。文献[5]中,Juels等提出可恢复证明方案,该方案可保证数据的完整性和可恢复性。但是该方案在数据更新时,由于错误恢复和数据加密,会给客户端带来高额的计算负载。文献[6,7]中,Waters利用BLS签名提出一个支持公开审计的POR方案,但该方案可泄露客户隐私信息并且不支持数据的动态更新。文献[8 - 12]中,Wang等人提出云计算下的数据完整性公共审计方案。该方案利用梅克尔散列树( MHT) 解决了数据动态化的问题,并实现了审计批处理操作,使得TPA能够同时处理来自多个不同用户的审计请求。可是不足的是该方案泄漏数据内容给审计者,并且会给审计者带来严重的计算负载。文献[13,14]中,Yang等克服了在文献[11]中的隐私问题,实现了一个基于双线性对的数据完整性验证方案,该方案引入一种新的数据结构来支持动态数据更新。然而,随着数据块数的增加,会给审计者带来严重的计算负载和通信开销。
综合考虑以上方案,本文提出一种基于代数签名的远程数据完整性验证方法,该方案允许用户检测在云存储中的数据持有性,引入一种数据结构表来支持数据的动态更新,扩展了本文所提出的数据完整性验证方案,并且极大地减小了服务端和客户端的计算负载和通信负载。最后通过与其他文献方法的对比分析,实验结果证明该方法具有高效性、可行性。
1 系统模型
本文案的云存储服务架构如图1 所示,这个架构由用户( Client) 、数据管理员( DA) 、云存储服务器CSS( cloud storage server) 和第三方审计者TPA( Third Party Auditor) 4 个部分构成。其中用户拥有大量的数据需要存储在云服务器。数据管理员( DA) 对于存储在云服务器中的数据进行动态更新操作,如修改、删除和插入。云存储服务器( CSS) 由云服务提供商管理,拥有庞大的存储和计算资源。备份用户数据和生产一个挑战的证明。本文中的TPA可认为是可靠且独立的,并没有与云存储服务商或用户勾结的动机。
2 云存储数据完整性检测方法
2. 1 数据完整性检测算法
代数签名是一个具有同态性和代数性的哈希函数。代数签名方法的基本特性是指数据块代数签名的和与所对应得数据块和的代数签名结果一致[15]。设 λ 是有限域中的一个元组,是由不同的非零元素 λ = ( λ1,λ2,…,λn) 组成的一个向量。文件F化分成n数据块f[1],f[2],…,f[n],计算文件F的代数签名公式为:
其代数签名的性质如下:
性质1 长度为r的数据块b[1]和b[2]相连接的代数签名计算公式为:
性质2 文件F的所有数据块的总和的代数签名与每个数据块代数签名的总和相等。
性质3 两个文件F,G的总和的代数签名与每个文件签名的总和相等。
数据完整性证明是一种帮助用户验证不可信存储运营商是否正确地持有其数据的有效手段,一般由三方组成用户( Client) 、云存储服务器CSS ( cloud storage server ) 和可信第三方( TPA) 。本文中引入了数据管理员( DA) 作为对外包数据的管理。在该数据完整性检测方法中,假设文件F包含n数据块并且每个数据块被划分成r子数据块,如果最后的数据块有较少的字块,通过设置fl,j= 0 for j ≤ r来增加数据块的大小。本检测方法由以下几个步骤。
1) 初始化设置: 数据管理员( DA) 首先通过执行Key Gen算法生成公私钥对( pk,sk) ,Key Gen( 1k) → ( k0,( pk,sk) ) 其中k0用于对文件数据块F进行加密,( pk,sk) 用于生成数据块验证标签。计算步骤为k0← { 0,1}k; sk ← { 0,1}k; pk = ( N,g) 其中N =pq,p和q是两个大素数,g是ZN*的一个生成元。然后,基于块的代数签名,运用以下公式计算输入文件每个数据块的唯一标签。
这里,f[i]是文件F的第i数据块,IDF是文件的唯一身份标识,LDi是文件在DT表中的逻辑序号,Vi标识数据块的版本号。此外,DA为了防止重放攻击为每个数据块计算Ci=Sλ( IDf‖i‖LDi‖Vi) 。当所有数据标签生成以后,DA将外包的数据块连同生成的标签一块发送给云存储服务器
2) 挑战阶段: 执行数据检测时,DA向TPA发出标签请求,TPA将数字标签返回,用户用自己的公钥pk验证数字标签的合法性。同时为了防止服务器预测数据块的索引位置,DA在检测外包数据时,通过使用伪随机置换和随机数生成密钥的方式,随机选取c数据块作为一个挑战信息,然后向云存储服务运营商发送挑战信息。
3) 证据生成阶段: CSP收到挑战信息后,依据收到的挑战信息和对应的标签信息,利用式( 6) 计算数据块 σ 的线性组合和聚集认证标签 μ,然后将P = ( σ,μ) 作为组成数据验证证据信息。
然后CSP将证据P = ( σ,μ) 返回给DA。
4) 在接收到证据后,DA运用块标签的代数签名以及公钥pk ,以及下面的公式对文件块进行正确性验证,如果等式成立,则数据完整性未受到破坏。否则,数据块遭到破坏。
2. 2 算法正确性和安全性
为验证用户存储数据的完整性,即验证,依据接收到的挑战信息,CSP生成的证据信息对P = ( σ,μ) 。运用代数签名的性质计算如下:
DA从云服务器获得证据信息后,验证这些证据信息以确保存储的远程数据的正确性及完整性。运用代数标签的性质计算如下:
可见,Sλ( σ) = μ ,即数据完整性得到证明。
代数签名在使用中,碰撞概率是非常低的,甚至可以忽略不计。一个256 B的签名仅有2- 256的可能性发生碰撞,这对于一个未持有任何秘密信息的攻击者来说,构造签名碰撞是非常困难的。挑战中选取的数据块数量可根据用户的要求进行改变,这样可以防止云存储服务器对固定的挑战块c预先计算并存储所有可能的校验标签值。所以代数签名技术对于验证远程数据的正确性是非常有用的。
2. 3 数据动态更新
为了支持动态数据更新,这里引进一种称作Data Table( DT) 的数据结构。DT数据表可以防止存储服务器使用之前版本存储的数据而不是更新过的数据导致数据通过恶意攻击,造成存储的数据受到破坏。DT数据表由两部分组成,逻辑块LDi和版本号Vi。LDi表示数据块的原始索引,Vi表示当前数据块的版本号。如果有一数据块被更新,则表DT中的版本号Vi必需自加1。同时,在DT表中的每个数据块的索引也表示远程数据块的物理位置。
数据管理员( DA) 负责创建数据表DT,并且在数据更新期间管理DT数据表。下面具体介绍动态数据操作: 修改、插入和删除。
1) 数据修改: 假设DA想要修改文件F中第i块f[i] 为f'[i]。则DA执行的修改算法如下:
( 1) 找到请求数据块所在的特定数据表DT,然后更新版本号Vi= Vi+ 1 ;
( 2) 为所修改的数据块生成新的块标签,如下:
( 3) 发送修改的信息( IDF,i,f'[i],T'i,C'i) 到CSP,接收到修改的信息以后,CSP将子块文件f[i]替换为f'[i],替换标签信息( Ti,Ci) 为( T'i,C'i) 。图2 显示DA修改数据块f[8],其中数据表中每个子表项的数为5。
2) 数据插入: DA需要在f[i]后插入一新数据块f*[i],插入新数据块的算法如下:
( 1) 在DT数据表中依据range范围找到文件F的第i块数据块f[i]。
( 2) 在表DT的第i块数据后创建新数据表项,并且向后移动个位置,然后设置新建块的逻辑索引LDi*+1= n +1,新建数据块的版本号Vi*+1= 1,这里n代表所有的数据块。
(3)DA修改表项的最大、最小范围,即range的取值。
(4)为新建数据块生成数据块标签信息(T*i+1,C*i+1):
( 5) 发送插入信息( IDF,i + 1,f*[i],Ti*+1,Ci*+1) 到CSP,当CSP收到信息后,新建的数据块和标签信息插入到文件块的第i个位置之后。例如,图3 显示在第一个表中的块f[3]之后插入新建块DT1[3] = { 11,1} 的过程。
3) 数据删除: 删除操作是相对于插入操作而言的,若删除文件F中的第i块数据f[i],DA需要依据DT表中的range寻找到需要删除的数据块f[i],然后向上移动后面的数据块个位置,最后DA发送删除数据块请求给CSP。图4 显示删除第4 个数据块f[4]的过程。
3 方案性能分析
本部分主要是评估本文所提的远程数据验证方法的性能,首先分析本方法对远程数据篡改检测的概率。其次,对比分析本方法与近期在文献[11]和文献[14]所提出的方法在数据更新操作过程中的计算负载和通信负载。
3. 1 数据篡改检测的概率分析
本方法中的远程数据验证是基于随机抽样策略来降低服务器工作负载。这里分析方法中的数据篡改检测的概率是基于块抽样。假设CSP修改了远程数据块n中的m块,那么,篡改块的概率相当于pm= m / n。设c为挑战块数,r为基本块数,x为随机变量用来表示选择的块数与CSP修改的块数相比。命名为px( x ≥ 1) ,计算如下:
则计算得到数据篡改检测的概率范围为:
假设DA把1 GB文件划分为125 000 数据块,每个数据块为8 KB,外包给云存储服务器。图5 显示在数据篡改检测概率在px= { 0. 8,0. 9,0. 99,0. 99999} 集合下,挑战块c与损坏块数m ( 篡改块数占总块数的比例)之间的关系,例如,如果服务器修改远程数据块的10%,那么DA需要随机选取98块数据作为挑战块才能实现px至少为0.99999。很显然,随着损坏块数的增加,在检测概率一定的情况下,所需要的挑战块数达到最小。
3. 2 计算复杂度的对比分析
表1 显示了本文用到的远程数据验证方法与文献[11]、文献[14]中的方法关于数据的动态更新操作所花费的计算和通信负载进行对比分析。其中n为所有数据块数,s是基本数据块数,c为挑战块数,k为DT表的数量。通信负载主要集中在DA数据更新过程中,修改、插入和删除操作,只需要发送修改后的验证标签到CSP ,DT表存储在DA端,降低了通信开销,其复杂度为O( c) 。从表1 中可以看到文献[11]在数据更新中有最大的计算负载O( clogn) ,文献[14]中插入或删除块文件块f[i],验证端必须移动n - i个数据块,因此文献[14]中的方法在执行插入和删除时的计算负载为O( n) 。本文中的方法通过引入一种新的数据结构表( DT) 来优化本方法从而降低计算负载,正如在2. 3 节中所介绍,插入和删除操作,验证端仅需要移动数据块,即在验证端的计算负载为,其中重要的是查找数据块f[i]时,验证端仅需要把数据块的逻辑位置划分为k个片段,然后查找其合适的DT数据表,其间产生的计算负载可以忽略不计,执行更新操作,通过计算所请求数据块的索引i与每个DT数据表中的数据块数k的比值,其商表示DT的个数,余数显示数据块i在所查找的数据表DT中的位置。执行修改操作仅仅需要找到待修改数据块在DT数据表中的位置,修改其内容,因此需要的计算负载为O( c) 。
4 实验结果
为了检测本文所提架构的可用性,本文利用Eucalyptus技术搭建小型云平台,使用两台计算机和三台惠普服务器分别作为客户端、数据管理员、可信第三方服务器和两台云服务器。首先配置Eucalyptus和云平台的核心组件,配置了统一的网络通信时间; 然后配置云服务器与客户端的SSH服务和监听服务;以及配置了MIRACL库; 最后,根据本文提出的云存储数据完整性验证方法进行以下实验。
实验一
对比分析文献[14]和文献[11]所提出的最新远程数据完整性验证方法,计算数据在插入、删除和修改的操作中的复杂度计算。对一个大小为1 GB的外包文件F进行数据更新实验,文件F包含125 000 个数据块,图6 显示了本文所提出的数据更新方案的高效性,这里更新( 插入、删除) 的数据块数从100 到1000 递增,之间的间隔为100。文献[14]的方案,插入或是删除一个数据块需要在MHT树中寻找到第i块的位置,同时每次都需要重新计算根节点的哈希表带来了极大的计算负载。文献[11]的方案寻找文件第i块的位置,需要预先移动n - i数据块作为插入或删除操作,同时需要重复操作至少100 次,极大地加重了验证服务器的计算负载。本文所提方案可以在客户端极大地降低计算负载。图6 显示了在更新不同的数据块所花费的计算开销,结果显示本文所提方案是非常高效的。
实验二
对比分析不同文件块大小对计算负载的影响,图7 显示的是文件块的大小对计算负载的影响,这里DA通过从1 ~ 10 GB文件中随机插入或删除100 个数据块来更新不同大小的外包数据。文献[14]中的计算负载随着文件块大小的增长,从0. 8 到大约2. 3 快速的增长。文献[11]的方案中,当文件的大小从1 到10 GB增长时( 文件中的数据块大小都是8KB) ,数据块的数量也随着增加。因此,验证服务器为了进行数据更新需要移动大量的数据块。正如在图7 中所示,本文的方案由于使用10 个DTs而不是1 个,带来了极小的计算负载。所以,本文方法能够应用在大规模的动态数据验证。
实验三
对于同一个文件F,选择不同的文件块大小,对完整性检测计算实验开销,选择200 MB的文件,依次选取4、8、16、32、64、128 KB,每次选取560 块,然后记录每次实验所花费的时间和通信开销。实验结果如表2 所示。
实验结果显示,在进行数据完整性检测时,文件块的大小对检测计算开销没有什么影响,各个阶段的计算时间基本保持稳定,检测请求阶段计算时间约为0. 76 s,验证信息生成阶段计算时间约为1. 08 s,完整性验证阶段计算时间约为1. 65 s,对于一个200 MB的文件整个检测过程大概需要3. 49 s左右,计算时间总体较小,符合预期的目标。实验环境稳定的情况下,每次实验的通信开销稳定在60 KB左右,通信开销较小,符合预期设计的目标。
5 结语
本文提出了一种有效的远程数据验证方法来确保存储在云服务器上的数据安全。该方法运用代数签名的性质验证远程数据的完整性,可以极大地减少数据验证的计算开销。同时引入了一个称为Data Table的数据结构表,用来支持数据的动态更新,包括插入、修改和删除操作。然后分析该方案的正确性和安全性,最后与其他文献中的方法进行对比分析,实验证明该方法的可行性和高效性。下一步将在此基础上在DT表中寻找最佳的划分子块数来扩展该方案。同时也希望本方案能够运用在分布式云存储服务上。
摘要:云存储服务中,用户将数据存储在不可信的云储存服务器上,用户数据面临安全考验。针对这种情况,为了让用户可以验证存储在云存储服务器上数据的完整性,提出一种基于代数签名的远程数据完整性验证方法。首先运用代数签名的特性,生成轻型的代数标签进行数据验证,同时引入一种新的数据结构(DT)来实现远程数据的动态更新从而降低数据验证的计算和通信开销。最后给出该方法的正确性和安全性分析,以及性能分析。实验结果表明,在大规模数据验证时,该方法与其他方法相比具有更高的验证效率、较小的计算和通信开销。
完整性验证仪 篇5
1 主要功能
表单验证对于任何一个编程者都不陌生, 此类程序主要应用在用户注册、信息采集、网络报名等程序流程中, 对于表单严整不严格的程序会给后期数据加工、数据处理工作带来很大的麻烦, 所以在做表单验证程序的时候, 需要尽量详细地考虑存在的相关问题。
常用的表单验证主要包括是否填写信息、填写信息是否规范、密码强度判断、两次密码输入是否一致、中英文数字的处理判断、出生日期格式判断、电子邮箱的验证、留言信息长度限定等功能, 最后在提交表单时出现是否确认提交的提示, 提交成功后出现提示框。
密码已经是人们生活工作中必不可少的工具, 但一个不安全的密码有又有可能会给人们造成不必要的损失。作为设计者, 如果在网页中能对用户输入的密码进行安全评估, 并显示出相应的提示信息, 那么对用户设置一个安全的密码将有很大帮助。评估方式:
(1) 如果密码少于5位, 那么就认为这是一个弱密码。
(2) 如果密码只由数字、小写字母、大写字母或其他特殊符号当中的一种组成, 则认为这是一个弱密码。
(3) 如果密码由数字、小写字母、大写字母或其他特殊符号当中的两种组成, 则认为这是一个中度安全的密码。
(4) 如果密码由数字、小写字母、大写字母或其他特殊符号当中的3种以上组成, 则认为这是一个比较安全的密码。
出生日期在数据库中存储是有一定格式要求的, 如果不是规范存储则填写的日期将无法进行处理、分析。所以出生日期需要用标准的“xxxx—xx—xx (年-月-日) 这种方式进行填写。
电子邮箱的填写能否收集用户联系方式, 这就需要用户按照规范填写, 填写时要按照电子邮箱的填写标准进行填写, 一般电子邮箱的格式为username@***.net、username@***.com.cn等, 这样就可以按照规范进行判断。
下面对验证的主要功能进行详细分析:
(1) 验证用户名是否填写, 并且填写是否规范, 用户名需要是A-Za-z0-9_。
(2) 密码和确认密码是否一致。
(3) 密码强度的评估。
(4) 检测是否为中文。
(5) 检测姓名拼音是否都为字母。
(6) 日期的格式检测。
(7) 电子邮件的格式检测。
(8) 手机号码应该全部为数字。
(9) 填写留言信息字数限制以及现有字符数显示。
(10) 提交表单后出现的确认对话框提示。
此程序在开发过程中存在的难点问题:
(1) 密码强度的评估, 弱、中、强的判断与检测。
(2) 利用正则表达式来对用户输入信息进行验证。
2 代码详解
程序主要由若干部分组成, 可以把每一部分功能都定义为一个函数模块, 下面分别介绍详细程序代码, 如图1, 图2所示。
2.1 用户标识判断
主要利用form1.name.value获取所填写的内容, 判断内容是否为空, 如果为空则出现相应提示, 并且利用form1.name.focus () ;获取当前焦点。
利用正则表达式的知识来对条件进行限制, 用户标识需要是字母或者是数字。JavaScript中的RegExp对象用于正则表达式相关的操作, 这个对象提供了一个方法test来判定某个字符串是否满足某个表达式, 返回值是true/false。
2.2 用户密码、确认密码
判断两次密码输入是否一致, 如果不一致则出现错误提示。并且利用form1.pwdok.focus () ;获取当前焦点, form1.pwdok.select () ;选中当前不相同密码。
2.3 中文姓名
判断输入的字符是否为中文, 在正则表达式中u4E00-u9FA5 (unicode码) 中表示汉字, reg0.test对输入的字符串进行检测, 如果输入的不是中文, 则出现相应提示信息。
2.4 姓名拼音
此部分对拼音进行判断, 利用for循环字符串的遍历出所有输入字符, 然后利用form1.ename.value.charAt (i) 获取每一个字符, 进行字母的判断, 如果不是大写或小写字母, 则会出现错误提示。此部分判断也可以利用正则表达式来校验, 读者可以根据相关知识认真思考一下。
2.5 出生日期
利用正则表达式来列出日期的条件, 2009-12-30为标准格式, 不符合此格式就会出现错误提示。Str.match (reg) 表示规定要匹配的模式的RegExp对象, 若没有找到任何匹配的子串, 则返回null。
2.6 电子邮件
利用正则表达式来列出电子邮件的条件, 在上一部分内容中详细分析了电子邮件的基本格式, username@***.com和username@***.com.cn两种标准格式, 不符合此格式就会出现错误提示。Str.search (reg) 方法用于检索字符串中指定的子字符串, 或检索与正则表达式相匹配的子字符串。如果没有找到任何匹配的子串, 则返回-1, 在此实例中-1表示输入的电子邮件格式有误, 不符合正则表达式的规范。
2.7 手机号码
手机号码的验证主要是判断它是否为数字, 如果输入汉字或者字符则输入错误, 此部分利用isNaN来判断当前输入的是否为数字, isNaN表示返回一个Boolean值, 指明提供的值是否是保留值NaN (不是数字) 。
2.8 留言信息
留言信息主要判断输入字符的长度, 如果超过40个字符出现错误提示。程序利用form1.liuyan.value.length来获取当前长度来判断是否超出范围, 如果超出范围则出现alert错误提示, 并且利用form1.liuyan.focus () ;获取焦点, 同时利用form1.liuyan.select () ;选中当前字符, 如图3所示。
2.9 信息提交判断
此部分代码主要使用confirm方法, confirm是Windows中的一个方法。它可以弹出一个包含“确定”与“取消”的对话框, 如果用户按下了确定, 返回true;如果按下了取消, 返回false。form1.reset () ;表示重置表单中的所有信息, 程序中/n的含义表示在JavaScript中的回车, 如图4所示。
2.1 0 计算字符
在留言信息中可以计算当前字符的数量, onkeydown和onkeyup是键盘的两个事件, 通过onkeydown="showlen (this) "和onkeyup="showlen (this) "这两个事件调用showlen () 函数, 表示每输入一个字符都会有当前的数值变化, 利用form1.contentlen.value=obj.value.length;把当前的字符显示到contentlen文本框中。
style="border-width:0;background:transparent;"表示隐藏文本框的边框。
2.1 1 密码强度
密码强度判断主要是通过以下4个函数构成, 分别是CharMode () , bitTotal () , checkStrong () , pwStrength () , 如图5所示。
2.1 1. 1 CharMode函数
CharMode () 主要是测试输入的每一个字符都是哪一类, 主要分为4类, 数字、大写、小写和特殊字符。
2.1 1. 2 modetotal函数
Modetotal函数计算出当前密码一共有多少种模式, 此部分使用了不太常用的移位操作符>>>, 它是一种“无符号”右移位操作符 (>>>) , 它使用了“零扩展”:无论正负, 都在高位插入0。移位可与等号 (>>>=) 组合使用时, 操作符左边的值会移动由右边的值指定的位数, 再将得到的结果赋回左边的变量。
2.1 1. 3 checkpwd函数
Checkpwd函数是返回密码的强度级别, 主要分为4个级别0, 1, 2和3以上, 主要利用循环方式把当前输入的密码进行按位或的运算, 分别会得出0, 1, 2和3以上。
2.1 1. 4 pwdstrong函数
pwdstrong函数是当用户放开键盘或密码输入框失去焦点时, 根据不同的级别显示不同的颜色。
通过以上JavaScript版表单验证程序的学习, 基本可以使用学习过的知识进行实例的操作, 此表单验证基本囊括了目前收集客户信息时需要验证的内容, 在以上程序讲解中, 读者可能会注意到正则表达式这个概念经常出现, 在JavaScript的表单验证中起了很重要的作用, 目前关于正则表达式出版了很多相关的书籍提供参考, 书中对验证的介绍更加详细 (包括一些复杂验证) , 此程序的介绍意在抛砖引玉, 使更多的初学者入门, 并深入学习。
3 结语
以上代码是在Internet Explore6.0、Internet Explore7.0中测试通过, 实例截图为Internet Explore6.0中运行效果。此表单验证比较简单, 此程序的学习对于初学者来说有很大的帮助, 该实例长期作为JavaScript这门课程的一个典型实例为学生进行讲授, 在一些报名系统中表单验证程序均使用此代码, 所以此实例的学习对于今后想深入学习JavaScript这门语言的读者有一定促进作用。
摘要:通过实例对表单验证程序进行详细讲解, 实例中基本包括了用户在填写表单时需要验证的信息, 每部分功能使用函数来完成, 这让初学者能够很容易接受并且理解语句段的含义, 快速地掌握JavaScript这门语言。