食品安全验证程序

2024-11-10

食品安全验证程序(共10篇)

食品安全验证程序 篇1

德信诚培训网

食品安全确认验证验证结果的评价与分析控制程序

目的

通过确认,证实各控制措施或控制措施的组合能使相应的食品安全危害达到预期的控制水平;通过验证,证明各控制措施或控制措施的组合确实达到了预期的控制水平。2 范围

适用于对控制措施组合进行确认,适用于对食品安全管理体系进行验证。3 职责

3.1食品安全小组负责对OPRP和HACCP计划进行确认和验证,负责对PRP进行验证。3.2品质部食品安全小组成员负责CCP的验证;负责最终产品的检验。

3.3食品安全小组组长负责组织进行食品安全管理体系的内部审核;负责组织对验证结果进行评价和分析。4 程序

4.1控制措施的确认 4.1.1 OPRP的确认 4.1.1.1确认的时机

①在OPRP实施之前;

②在下列情况下,根据需要,对OPRP做必要的修改,在修改后的OPRP实施之前,要对其进行确认:

a)原料的改变; b)产品或加工的改变; c)复查时发现数据不符或相反; d)重复出现同样的偏差;

e)有关危害或控制手段的新信息(原来依据的信息来源发生变化); f)生产中观察到的异常情况; g)出现新的销售或消费方式。4.1.1.2 确认的内容

具体见OPRP确认记录表

更多免费资料下载请进:http://

好好学习社区

德信诚培训网

4.1.1.3 确认的实施

食品安全小组用“OPRP确认记录表”对OPRP进行确认,确认的结果记录在“OPRP确认记录表”的相关栏目中。4.1.1.4 确认结果的处理

当确认结果表明OPRP不能对相应的食品安全危害进行预期的控制时,应对OPRP进行修改、重新评价和确认。4.1.2 HACCP计划的确认 4.1.2.1确认的时机

①在HACCP计划实施之前;

②在下列情况下,应对危害分析的输入进行必要的更新,重新进行必要的危害分析,并对HACCP计划进行必要的修改,在修改后的HACCP计划实施之前,要对其进行确认:

a)原料的改变; b)产品或加工的改变; c)复查时发现数据不符或相反; d)重复出现同样的偏差;

e)有关危害或控制手段的新信息(原来依据的信息来源发生变化); f)生产中观察到的异常情况; g)出现新的销售或消费方式。4.1.2.2 确认的内容

具体见HACCP计划确认记录表 4.1.1.3 确认的实施

食品安全小组用“HACCP计划确认记录表”对HACCP计划进行确认,确认的结果记录在“HACCP计划确认记录表”的相关栏目中。4.1.1.4 确认结果的处理

当确认结果表明HACCP计划不能对相应的食品安全危害进行预期的控制时,应对HACCP计划进行修改、重新评价和确认。4.2 食品安全管理体系的验证 4.2.1 OPRP、HACCP计划的验证

更多免费资料下载请进:http://

好好学习社区

德信诚培训网

4.2.1.1验证的时机

①每年至少进行一次。

②在下列情况下,应对危害分析的输入进行必要的更新,重新进行必要的危害分析,并对OPRP、HACCP计划进行必要的修改,在修改后的OPRP、HACCP计划实施1个月后,对其效果进行验证:

a)原料的改变; b)产品或加工的改变; c)复查时发现数据不符或相反; d)重复出现同样的偏差;

e)有关危害或控制手段的新信息(原来依据的信息来源发生变化); f)生产中观察到的异常情况; g)出现新的销售或消费方式。4.2.1.2 验证的内容

OPRP、HACCP计划验证的内容具体见“OPRP验证记录表”、“HACCP计划验证记录表”。4.1.1.3 验证的实施

食品安全小组用“OPRP验证记录表”、“HACCP计划验证记录表”分别OPRP、HACCP计划进行验证,验证的结果记录在“OPRP验证记录表”、“HACCP计划验证记录表”的相关栏目中。

4.2.2 PRP的验证 4.2.2.1验证的时机

①每年至少进行一次。

②在产品或工艺过程有显著改变或系统发生严重故障时,对PRP进行适当的修改,在修改后的PRP、实施1个月后,对其效果进行验证: 4.2.2.2 验证的内容

PRP验证的内容具体见“PRP验证记录表”。4.2.2.3 验证的实施

食品安全小组用“PRP验证记录表”对PRP的实施情况进行验证,验证的结果记录在“PRP验证记录表”的相关栏目中。

更多免费资料下载请进:http://

好好学习社区

德信诚培训网

4.2.3 CCP的验证

CCP的验证包括:CCP监视设备的校准、校准记录的审查、针对性的取样检验和CCP记录的审查。

4.2.3.1 CCP监视设备的校准

品质部计量员(食品安全小组成员)按HACCP计划表中规定的频率或监视设备周期送检计划中要求的频率对CCP监视设备进行校准。内校由品质部计量员进行并填写《监视设备内校记录表》。外校由政府部门认可并授权的计量检定机构进行。4.2.3.2 CCP监视设备校准记录的审查

品质部经理对《监视设备内校记录表》、外部校准报告以及“监测结果的评估报告(监测设备偏离校准状态时)”进行审查,审查的内容包括:

a)校准日期是否符合规定的频率要求; b)校准的方式是否正确; c)校准数据是否完整; d)校准结果的判定是否正确;

e)发现不合格监控设备后的处理方法是否适当。审查后,要在被审查的记录表上签字。4.2.3.3针对性的取样检验

品质部实验室实验员(食品安全小组成员)按照“HACCP计划表”要求的频率对CCP点原料或产品进行取样检测(检测项目见相关规定),以验证供应商是否可信或设备设定的操作参数是否适于生产安全的产品。4.2.3.4 CCP记录的审查

品质部主管(食品安全小组成员)按照“HACCP计划表”要求的频率对CCP记录进行审查,审查后要在被审查的记录表上签字。需注意的是审核人员与表格记录人员不可为同一人。

CCP记录审查的内容如下:(1)监控记录审查的内容 ①监控是否按规定的方式进行; ②关键限值是否符合要求;

③关键限值发生偏离时是否采取了纠偏行动;

④记录中是否写明了实际观察到的结果,而不仅仅写出“OK”、“达到”或“超过”等总结性词语;

更多免费资料下载请进:http://

好好学习社区

德信诚培训网

⑤记录中是否有监控者的签名; ⑥记录中是否有食品名称和生产批号; ⑦记录中是否有生产加工企业名称和地址。(2)纠偏记录审查的内容

①纠偏行动记录中是否有采取纠偏的时间;

②纠偏行动记录中是否有原因分析、潜在不合格产品的处理、纠正措施的实施与验证的内容;

③纠偏行动记录中是否有实施者、批准者、验证者的签名; ④纠偏行动记录中是否有食品名称和生产批号; ⑤纠偏行动记录中是否有生产加工企业名称和地址。4.2.4食品安全管理体系内部审核

食品安全小组组长负责按《内部审核控制程序》的要求,对公司的食品安全管理体系进行内部审核。

4.2.5 最终产品的检测

品质部实验室实验员(食品安全小组成员)按《产品监视和测量控制规程》的要求对最终产品的各项理化指标和微生物指标进行检测,以确定食品安全指标达到相关法律法规级顾客的要求。

4.3 单项验证结果的评价

4.3.1 验证的结果应传达给相关食品安全小组成员。

4.3.2 对以上各项验证结果进行评价,以确定验证结果的正确与完整。评价人员应在相关的验证报告上签字。评价的责任如下:

①食品安全小组组长对PRP、OPRP、HACCP计划的验证结果进行评价; ②品质部经理(食品安全小组成员)对CCP的验证结果进行评价; ③食品安全小组组长对食品安全管理体系内、外部审核的结果进行评价; ④品质部经理(食品安全小组成员)对最终产品的检测结果进行评价。

4.3.3 当验证表明不符合时,相关验证人员应向有关部门发出“纠正和预防措施记录表”,要求有关部门采取纠正和预防措施。采取纠正和预防措施时,应至少考虑对下列方面进行评审,看看是否这些方面出现问题;

更多免费资料下载请进:http://

好好学习社区

德信诚培训网

①现有的程序和沟通渠道;

②危害分析的结论、已建立的操作性前提方案和HACCP计划; ③PRP;

④人力资源管理和培训活动有效性。4.4 验证结果的分析

4.4.1 在每次管理评审前,食品安全小组组长组织小组成员对验证的结果(包括内部审核和外部审核的结果)进行分析,以:

(1)证实体系的整体运行满足策划的安排和本公司建立的食品安全管理体系的要求;

(2)识别食品安全管理体系改进或更新的需求;

(3)识别表明潜在不安全产品高事故风险的趋势;

(4)建立信息,便于策划与受审核区域状况和重要性有关的内部审核方案;

(5)证明已采取的纠正和纠正措施的有效性。

4.4.2 将验证结果分析的结论记录在“验证结果分析报告中”。“验证结果分析报告中”应提交给公司总经理,并作为管理评审的输入。

4.4.3 当验证结果分析表明需要更新食品安全管理体系时,应适时按相关文件的规定对食品安全管理体系进行更新。5 相关文件

《内部审核控制程序》 《产品监视和测量控制规程》 《HACCP计划表》 6 相关记录

《OPPR确认记录表》 《HACCP计划确认记录表》

《OPPR验证记录表》 《HACCP计划验证记录表》

《PPR验证记录表》 《监视设备内校记录表》 《验证结果分析报告》

更多免费资料下载请进:http://

好好学习社区

食品安全验证程序 篇2

ASP.NET与IIS、.NET框架和操作系统所提供的基础安全服务配合使用, 共同提供一系列身份验证和授权机制。ASP.NET的安全体系结构如图1所示:

二、ASP.NET安全访问技术[2]

(一) 验证 (Authentication)

身份验证是获取用户标识并验证标识的过程。在ASP.NET中主要用到三种验证模式, 且都在IIS身份验证之后。

1、window身份验证:

ASP.NET将依靠IIS对用户进行身份验证。Web客户的权限将与Windows用户和角色的权限相同。如果所请求的资源允许匿名访问, 则不进行身份验证;如果所请求的资源需要用户具有一定的权限, 则IIS将请求发送到ASP.NET程序去处理, 如果身份未通过或未被授权则拒绝访问。通过对Web.config的设置来启用这种认证:

//Mode为使用的验证服务方式

2、表单窗体身份验证:

当用户向拒绝匿名访问的资源发出请求时, ASP.NET将客户端发送的未经验证的请求重定向到登录页面, 原始请求的URL被保存为URL参数以便以后使用。然后用户输入凭证, 提交页面, 应用程序根据数据存储对凭证进行身份验证, 如果应用程序认可了凭证, ASP.NET发出一个Cookie, 里面包括了一个有效身份票据, 然后用户被重定向到用户原始请求页面。当用户在同一个会话中再次请求受限访问页时, 请求头中将包含带有身份票据的Cookie以便再次验证;如果没有通过验证, 则用户被拒绝访问。对web.config文件修改如下:

forms属性指定认证时使用的cookie名和登录页面的URL, timeout设置cookie有效期, path指示发出cookie所用的路径。C r e d e n t i a l s配置段指定认证时的有效用户身份。PasswordFormat指定发送证件给服务器时使用的加密方法, 该属性取值可以是clear (不加密) 、MD5、SHA1。user元素的name和password属性分别为用户名和密码。

3、Passport身份验证:

由Microsoft提供的集中身份验证服务, 该服务为参与站点提供单一的登录程序和成员服务。它将ASP.NET与Microsoft Passport软件开发包 (SDK) 相结合, 将用户重定向到Passport站点, 通过Passport服务来检查用户的证件, 然后生成Cookie返回到客户端。

(二) 授权 (Authorization)

授权旨在确定通过验证的用户可以访问哪些资源, ASP.NET提供了两种授权方式:

1、文件授权[3]

文件授权由FileAuthorizationModule执行, 利用NTFS文件系统的访问控制列表ACL控制用户或组访问受保护的资源, 但验证方式必须是Windows身份验证。这种授权方式主要通过系统管理员对文件的权限设定来实现, 文件权限被存储在ACL中。当通过认证的用户试图访问Web服务器上的文件时Windows将检查相应的ACL, 以确定该角色或身份是否被允许读取该文件。

2、URL授权

URL授权是通过Web.config文件定义用户、角色、操作类型和指定文件或文件夹, 并将用户映射到特定的URL, 然后再利用URLAuthorizationModule确保调用者的凭证与定义的用户和URL映射相匹配的功能。在web.config文件中对授权和角色进行配置, 语法如下:

三、ASP.NET表单验证方案的安全[4]

在ASP.NET应用程序中, 窗体身份验证通常是最佳的选择。

(一) 系统说明

本系统由两个页面构成, 其中success.aspx是登录成功的页面, L o g i n.a s p x用于验证用户登录, 它包含:用户名txtUserName, 密码框txtPassword, 选择加密类型的下拉列表框d l l E n c r y T y p e, 登录按钮b t n L o g i n和显示错误信息的lblMessage。用户账号和加密后的密码保存在数据库UserInfos的Users表中, 包括userName、password、salt几个字段。ASP.NET支持MD5和SHA1两种加密算法。登录时, 首先根据用户的选择对输入的密码加密, 再从数据库中找出与用户名匹配的密码, 将两者进行比较。若一致则认为该用户为合法用户, 通过Session.Add记录用户信息, 显示用户请求界面, 否则将其强制引导回登录界面。

(二) 配置表单身份验证

(三) 选择加密算法对密码加密

ASP.NET可以方便地实现对密码的加密, 本例根据用户选择的加密类型和一个随机salt值来对密码加密, 然后存入数据库。

1、Salt值的函数

private static string CreateSalt (int size)

{R N G C r y p t o S e r v i c e P r o v i d e r r n g=n e w RNGCryptoServiceProvider () ;

Byte[]buf=new byte[size];rng.GetBytes (buff) ;

return Convert.ToBase64String (buff) ;}

2、创建加密函数

根据用户提供的密码、加密类型和salt值生成加密密码, 下面是具体的代码:

private static string CreatePassword (string pwd, string salt, string EncryType)

{string PwdAndsalt=String.Concat (pwd, salt) ;

switch (EncryType)

{case"SHA1":{Password=FormsAuthentication.HashPasswordForStoringInConfigFile

(PwdAndsalt, "SHA1") ;break;}

case"MD5":{Password=FormsAuthentication.

HashPasswordForStoringInConfigFile (PwdAndsalt, "MD5") ;break;}}return Password;}

(四) 通过数据库对用户进行验证

ASP.NET 2.O提供的Session对象用来存储特定用户会话所需的信息, 让后续的网页读取, 避免了在不同页面间传递信息的时候信息显示在地址栏中。[5]

(五) 测试应用程序

假定我们已注册了一个用户, 然后登录, 下面是登录按钮的触发事件代码:

四、结束语

本文讲述了IIS和ASP.NET应用程序的安全机制, 并用实例说明了基于窗体的身份验证的一些实现方法。虽然.NET框架自身有一些安全保护机制, 但对于要建造一个真正安全的ASP.NET应用程序是远远不够的, 我们还需要更深入地研究。

参考文献

[1]蔡群英, 黄镇建《ASP.NET安全策略的研究》.计算机与现代化[J], 2007.6;

[2]罗海涛, 李心广《ASP.NET Web应用程序安全策略》.微计算机信息[J], 2007.9-3;

[3]Mark minasi Christa Anderson Michele Beveridge《Windows Server2003从入门到精通》.电子工业出版社[M], 2004.6;

[4]陈浩《构建安全的ASP.NET Web应用程序》.乐山师范学院学报[J], 2006.12;

食品安全验证程序 篇3

实际上,混凝土徐变对组合梁交接面滑移的影响应该分为两部分,一是由于栓钉受由徐变引起的附加内力而产生的剪切滑移,定义为徐变剪切滑移;二是混凝土本身的徐变变形。对于受徐变影响的滑移增量如何分配,可以采用MIDAS有限元程序进行验证。

【关键词】钢筋混凝土组合梁;混凝土徐变;交接面滑移;MIDAS

1、组合梁受徐变影响的滑移公式的得出

1.1徐变剪切滑移:徐变实际上是由混凝土的应力产生,所以研究交接面滑移的徐变效应可从研究交接面处混凝土的应力着手。在一定的荷载和边界条件下,交接面滑移和交接面处混凝土应力之间的关系是一定的,所以由徐变产生的徐变剪切滑移和由徐变产生的交接面处混凝土附加内力之间的关系也是一定的,可由方程表示出来。

对于简支梁在正向集中荷载下的交接面滑移方程为[1]:

s//(x)-α2s(x)=βV(x)(1.1)

V(x)为竖向剪力,V(x)=P/2=2M/L=2σ0w0cb/L (1.2)

σ0为混凝土板跨中底部的正应力;w0cb为按换算截面法换算到钢梁截面后对混凝土板底部的抵抗矩。从公式可以看出,在一定的荷载和边界条件下,无论混凝土处于弹性状态还是塑性状态,交接面滑移可以认为和混凝土板跨中底部的正應力有关。

由徐变引起的混凝土板跨中底部t时刻的附加应力可表示为[2]:

Δσ0(t)=σ0C(t,t0)E(t,t0) (1.3)

C(t,t0)为混凝土的徐变度;E(t,t0)为混凝土的有效模量。结合以上两式,再根据边界条件Δs(0)=0,Δs/(L/2)=0即可解得徐变剪切滑移方程:Δs(x)=2(σ0C(t,t0)E(t,t0)w0cbβ)

[(1+e-αL-e-αx-eαx-αL)/(1+e-αL)α2L]

其中α与β为和结构几何形状、材料特性有关的量:

α2=(K/R)(1/EA+h2/EI) β=h/EI

EI=ECIC+ESIS 1/EA=1/ECAC+1/ESAS

1.2徐变变形:从滑移方程可以看出,滑移和荷载呈线性关系,所以可以假设:

1、在滑移过程中,钢梁相对静止,全部滑移量由混凝土板承担;

2、在短期内小应力情况下,认为徐变和应力呈线性关系。

那么t时刻混凝土板的徐变变形可表示为:

S徐(x,t)= S(x)×Ф(t,t0)(1.4)

其中,Ф(t,t0)为时间段(t,t0)内混凝土的徐变系数。

1.3算例:计算模型采用长4m,宽80cm,高12cm的C30混凝土板和型号为HW200×200的钢梁,混凝土板和钢梁之间采用栓钉进行抗剪连接,栓钉的间距为15cm,单排满布。计算过程如下:

1、应力计算采用换算截面法,换算为钢梁截面惯性矩I0=1.76×10-4m4

换算为钢梁截面后对混凝土板底的抵抗矩w0cb=1.2×10-4m3,那么结合材料力学知识得到组合梁中混凝土板跨中底部的应力为1.31×106PA,1/4跨处的应力为0.65×106PA。

2、初始滑移采用s(x)=(Pβ/2α2)[1-eαx+(eαx-e-αx)/(1+e-αL)]计算,混凝土板截面面积为0.096m2,钢梁的截面面积为6.35×10-3m2,混凝土板的截面惯性矩为1.15×10-4m4,钢梁的截面惯性矩为4.72×10-5m4,钢梁和混凝土板弹性模量的比值为6.9。那么经过计算得到的α=2.22,β=1.24×10-5。

3、徐变系数Ф(t,t0)采用规范[3]。

以100天为例,经过计算得到的组合梁滑移结果如下:

2、徐变剪切滑移的MIDAS程序验证

MIDAS软件是为了能够精确完成对土木结构的结构分析与设计而开发的土木结构专用结构分析与优化设计软件,有着非常好的准确性和高效性。在结构设计方面,MIDAS全面强化了实际工作中结构分析所需要的分析功能,能够计算出更加准确的和切合实际的分析结果。

2.1建模关键步骤:以计算模型为例,为了产生组合梁交接面处的滑移效应,混凝土板和钢梁模型分开建立,足够小的距离为D。混凝土板采用体单元;钢梁采用三个面单元拼接而成;栓钉采用弹性连接的方式进行模拟。

弹性连接各个方向的线刚度=刚度/(栓钉长度+D),D取0.01cm,经计算得弹性连接的竖向线刚度(满足竖向变形协调)为659400KN/m,横向线刚度(抗剪线刚度)为253620KN/m。为保证混凝土板和钢梁在反向荷载作用下共同受力,在混凝土板两端和钢梁上翼缘两端同时施加简支边界条件。

由于本文主要考察MIDAS程序对徐变剪切滑移的验证情况,组合梁由于徐变剪切滑移产生的应力通过栓钉传递实现,所以用混凝土板底部的应力等效条件来考察交接面处的滑移。即让混凝土板底部应力等于考虑徐变效应时100天的应力,然后查看通过有效模量法折算为塑性变形后的交接面处的滑移大小。

2.2程序运行结果和计算结果的比较:

组合梁交接面处的滑移既是混凝土板单元和钢梁单元之间的位移差,表2.1中78号至88号为混凝土板单元节点,45号至55号为钢梁单元节点。根据表2.1的数据,可以得到徐变剪切滑移与计算结果的的对比情况见表2.2。

从表2.2中可以看出,程序运行结果和计算结果存在偏差,这是因为在程序运行中没有考虑混凝土不参与抗拉作用以及钢梁和混凝土板具有相同转角和曲率的假设(由于边界条件的限制,能够近似满足),造成程序运行结果偏小。

计算结果和程序运行结果的对比(初始滑移+徐变剪切滑移):

MIDAS模型(如图2.1)。

3、结束语

本文首先从交接面处混凝土的应力着手,根据简支组合梁交接面处的滑移微分方程,得到徐变剪切滑移微分方程。把受徐变影响的组合梁交接面处的滑移量分解为徐变变形和徐变剪切滑移,具有很强的理论性,继而通过MIDAS有限元分析程序对二者滑移量的分配情况进行了验证。

由于钢梁的约束作用对组合梁混凝土徐变的发展具有一定的影响,这种影响又具体表现在交接面处的滑移量上,从而进一步影响到连续梁的徐变次内力。连续组合梁在施工过程中发生体系转换时,组合结构的这种次内力,无论在设计或施工中,都应该加以考虑。

参考文献

[1] 李文斌,杨强跃,钱磊. 钢筋桁架楼承板在钢结构建筑中的应用[J]. 施工技术,2006,12

[2] 白林红. 采用钢筋桁架替代压型钢板的技术经济分析[J]. 山西建筑,2008,9

环保产品原材料采购及验证程序 篇4

编号:DM-QP-01-05版本:A/0页码:1/目的为了确保环保产品所需的原材料符合要求,特对环保产品原材料采购和验证作出规定。范围

适用环保产品原材料的采购和验证。职责

3.1 采购负责对环保产品供应商的认定及采购清单作出符合环保条件的要求;

3.2 品管部协助采购部对环保产品供应商的认定及对环保产品原材料验证确认。4 管理程序

4.1 采购部应要求环保产品供应商提供原材料的“环保原材料试验报告”及“环保保证书”,与供应商签订“环保协议书”,并在每批原材料供货时提供“环保产品一致性声明”。凡是能达到上述要求的供应商本公司可确认评定为环保产品原材料的合格供应商,可列入环保原材料合格供商名录中,以后环保产品原材料就必须在合格的供应商名录中采购。对合格供应商评定的其他要求按----------------《采购控制程序》执行。

4.2 凡是环保产品的原材料“采购清单”必须在技术标准栏或备注栏中明确清晰注明“必须符合环保要求”字样。并要求供应商在来料的大小包装中粘贴有环保标志,以便于识别。

4.3 品管部IQC员在检验环保产品的原材料时,必须核对“采购清单”与进料的名称、型号规格及环保标志是否相符,并检查每批环保产品的原材料是否同时附有“环保产品一致性声明”,如符合这些条件及按“原材料检验规程”中有关规定进行检验合格的,则判该批原材料合格。如对某批原材料是否符合环保要求有疑问的可送到国家认可的有环保材料产品检测资质的试验室进行检验,合格的方可确认收货,并保存检验记录。

食品安全验证程序 篇5

----------registor.aspx-----------

注册页……

-----------default1.aspx------------

default1页………………

---------------Login.aspx--------------------

--------------Login.aspx.cs-----------------------

protected void Button1_Click(object sender, EventArgs e)

{

if (this.TextBox1.Text == “admin” && this.TextBox2.Text == “123”)

{

//from授权,

FormsAuthentication.SetAuthCookie(this.TextBox1.Text, false);

}

食品安全验证程序 篇6

建设工程质量安全监督机构和监督人员验证考核工作的情况汇报 在自治区质量安全监督总站和**市质量安全监督站的关怀指导下,在**县规划建设局的正确指导下,使我县工程质量监督力度得到加强,项目建设得到扎实推进。根据区建设厅 《关于开展 2009 年建设工程质量安全监督机构和监督人员验证考核工作的通知》的要求,现将工作开展情况汇报如下:

一、机构概况 本机构全称:**县建设工程质量安全监督站,受**县规划建设局的直接领导,并接受**建设工程质量安全监督总站及**市建委和市建设工程质量安全监督站的业务指导。办公地点设在**县规划建设局院内。本站是 1986 年 2 月经**县人民政府以马政发 [1986]10 号“关于成立**县建筑工程质量监督站的通知”批复成立,于 2005 年 9 月 22 日更名为“**县建设工程质量安全监督站”,新增安全管理职能。本站受**县规划建设局的委托对本县辖区内所有从事建设工程的**、扩建、改建、拆除等有关活动,实施对建设工程质量安全生产的监督管理,对建设项目的建筑工程和建筑构件、制品及建设施工现场所用的有关材料,结构、构件和设备安装质量进行检测、监督的法定单位。

二、组织机构人员设置及经费来源 本站总人数为 7 人,其中专职 2 人,兼职 4 人,专业技术人员 6 人,技术人员占总人数的 85.7%(附:在职人员一览表)。

食品安全验证程序 篇7

软件事务内存(STM)[1,2,3]是基于软件的事务内存实现,近些年的研究[4,5,6]表明,STM不仅能有效利用现已大量投入使用的多核多处理器,而且有希望像垃圾收集器一样被广泛应用在现代编译器的开发中,为自动实现对共享资源的互斥安全访问提供运行时的支持,从而大大减轻程序员开发并发程序的负担。但STM算法通常采用乐观投机和细粒度并发的实现方式,算法思想十分精妙,可靠性难以保证。因此,研究STM并发机制的验证方法对提高并发软件的可靠性和安全性有重要意义。

Transactional Locking II(TL2)[7]是经典的基于锁的STM算法,它通过细粒度并发代码来实现事务的原子性。验证底层细粒度并发代码的正确性等价于证明它与高层抽象事务原子块间的上下文精化关系[8],即在任意的调用环境下底层代码产生的行为不会比原子事务的行为多。但该算法思想巧妙,验证难度很大。据作者所知,目前还没有在代码级上对TL2事务底层实现的验证工作。

本文基于TL2算法给出了一个典型的读写事务T(3行)对应的底层细粒度并发代码P(28行),使用基于依赖保证的程序模拟技术证明代码P是对事务T的一个精化实现,即在代码级上验证读写事务底层实现的正确性。

本文的主要贡献如下:应用程序精化技术完成了TL2事务的底层实现在代码级的验证,总结出了TL2算法中具体状态和抽象状态对应关系满足的不变式和基于时间戳的读集检验策略满足的不变式,为完成整个TL2算法在代码级的验证奠定了基础。

1 软件事务内存和TL2算法

STM是模拟数据库事务的并发控制机制来控制并行计算时的共享内存访问的一种技术,它是锁的一种替代机制。在STM中,一个事务指的是一段读、写共享内存的代码。这些读写操作在逻辑上是一个独立的单元,其中间状态对于其它的事务而言,是不可见的。与现在许多并发应用程序广泛使用的锁机制不同,STM通常采用一种乐观投机的并发控制方式:一个线程独立完成对共享内存的修改,完全忽略可能存在的其它线程,线程在日志中记录对共享内存的每一个投机的读写动作,然后根据日志中的记录进行共享内存的一致性检查,如果没有冲突就提交事务并更新共享内存,否则根据日志中的记录进行回滚,并重新开始一个新的事务。这种乐观投机的策略往往可以增加系统的并发度:任何线程无需等待一个资源,多个线程可以并发而且安全地修改同一共享数据结构的多个部分,从而实现共享数据结构的细粒度同步访问控制。

STM机制提供一些接口,主要包括以下几个重要接口:STM_begin()表示开始一个事务并完成对事务的初始化操作;STM_read(x)用于读共享变量x并更新读集;STM_write(x, buffer)将新的值写入写集buffer; STM_validate()用于冲突检测; STM_c o m m i t ( ) 用于提交 事务并更 新共享内 存 ;STM_abort()用于事务失败时进行回滚。图1左边表示“STM_atom{y=x+3}”,表示一个被原子执行的事务,而右边则是调用STM机制提供的接口进行程序变换后得到的运行时程序。

TL2和多数STM算法思想类似,采用“投机→检查→提交或回滚”的方式实现对共享数据的同步访问控制,它通过维护一个全局时间戳来完成对共享数据的一致性检查,并为每个事务存储单元额外添加锁和版本号两个域,事务在提交时会根据最新的全局时间戳来更新存储单元的版本号。因而事务可通过比较存储单元的版本号与全局时间戳之间的关系来判断共享存储是否已过时,是否需要回滚重新读取。事务对共享存储单元进行写入操作时,不是直接写入,而是写在一个缓冲区中,最后提交前才获取该单元的锁,最后提交时写入并释放锁。

图2是一个支持共享存储读写访问的原子事务。该事务中x和y是整型共享变量(事务共享存储),它们会被多个并发执行的事务同时访问。tmp是事务内部的局部整型变量,只能被当前线程访问。该事务提供给 程序员的 抽象行为 是原子地 执行STM_atom{}内的三行代码。

图4给出上述事务基于TL2算法的底层实现,可认为它是TL2算法对上述事务编译的目标代码。其中每个共享变量会被翻译成为一个结构体(如图3所示)。该结构体中,data保存与高层对应的值;ver是版本号;lk是底层共享结构体的保护锁,锁空闲时为0,被线程id获取后为id。代码中gt是全局时间戳,是一个可被多个并发执行的事务同时访问的整型共享变量。代码中的NAN类似C语言中的NAN,意思是“非数(Not a Number)”,在验证时表示某个变量的值是未定义的。

图4中,函数increment_and_fetch(>)原子地把全局时间戳gt加1并返回gt的新值。函数trylock(&x)非阻塞地获取结构体x的锁:如果锁空闲,便获取锁并返回0;如果锁已被占用,直接返回1。函数unlock(&x)释放结构体x的锁。

程序用fail作为指示标志,用来表示事务是否成功提交。当fail为1时,表示失败;当fail为0时,表示成功。程序主干部分由while循环构成。如果事务未成功提交,则fail为1,就继续执行循环体直至事务成功提交。

底层细粒度代码执行过程如下:首先将fail置为0(第3行)并进行STM_begin操作(第4~5行),读取全局时间戳并初始化各变量。之后对变量x进行投机读操作(STM_read):首先检查x的锁是否空闲(第6行),之后读取x的值保存在tmp中(第8行),再检查锁是否空闲、版本号是否小于等于rv(第9行)。读前和读后的这两次检查就保证了从开始执行事务至今,x未被其他线程更改。随后进行STM_write操作,将值存在缓冲区中(第10~11行)。之后尝试获取x与y的锁(第12~15行)。之后改变全局时间戳并且把这个新的全局时间戳记录在一个线程局部变量wv中(第17行)。在这以后执行STM_validate操作(第18行),再次检查x的版本号是否小于等于rv。如果有不符,则将fail置为1。这就保证了从开始执行事务至今,x的值未被修改。最后进行提交(STM_commit,第21~22行):把缓冲区内的值写入x和y,用wv更新版本号,并释放锁。整个过程存在很多检查,任意一次检查失败就把fail置为1并进行回滚。

验证TL2实现时,通常把实现事务的底层代码的每一步对应到高层事务代码的某一步上,即找到底层代码每执行一步时高层代码执行到的对应位置(高层代码可以不执行,也可以执行若干步),本文把这个对应位置称作“线性化点”。找到这些线性化点后,证明两层程序状态满足某个对应关系,而这个关系体现了两层程序状态的一致性,进而体现了实现的正确性。但验证难度很大。

首先,验证时很难确定底层代码每执行一步时高层代码执行到的对应位置。比如底层代码改变全局时间戳之后,就要进行STM_validate和STM_commit操作。大多数人直观地认为再次检查x版本号是否小于等于rv后的那个程序点或者提交过程中的某个子步是线性化点,和高层事务执行后的那个程序点对应。但是因为检查x版本号后,x就可被其他线程修改,这样高层执行事务代码后,高层x和底层x的值就不一致。这样就不能建立一个清晰的对应关系。另外线性化点也不能“简单地”放在再次检查x版本号这步之前,因为在检查完成后才知道是否可以提交,才能确定这个到底是不是线性化点。

另外验证时要指定在线性化点上高层程序状态和底层程序状态的对应关系。但是TL2算法实现的代码的粒度很细,因此这个对应关系非常微妙。大多数人很容易直观地以为这个对应关系可以表述为“如果一个共享变量的锁空闲,那么该共享变量在高层程序状态上的值和在底层程序状态上的值相等”。但这个对应关系无法描述如下情况:如果最后一次检查x的版本号后要进行回滚,那么即使已经获取了一个共享变量的锁,它在高层程序状态上的值和在底层程序状态上的值依然相等。

2 TL2事务的精化验证

如果要对STM的实现进行验证,那么就必须对其正确性有一个定义。目前有许多对STM正确性的定义,比如可线性化(linearizability)[9]、可串行化(serializability)[10]、不透明度(opacity)[11]以及其他几种变形。这些都是针对事务执行历史定义的,很难直接应用在STM代码级的验证上。最近Attiya等人使用上下文精化关系来刻画STM实现的正确性[8]。基于这个定义,如果一个原子事务的实现是正确的,那么该原子事务和实现这个事务的底层代码之间具有精化关系,即底层实现事务的代码在执行过程中表现出来的可观测行为不比原有事务在执行过程中表现出的可观测行为多。这个定义很直观,通俗易懂,可以在代码层面对事务内存的实现进行验证,所以本文采用这个定义来描述TL2实现的正确性。

图4实现事务的底层代码 (参见下页)

验证两个程序之间是否满足上下文精化关系可采用Liang等人提出的基于依赖保证的模拟技术(RGSim)[12]。这个技术可用于模块化验证两个并发程序之间的精化关系。验证时需要指定两个程序在执行时的依赖保证条件以及两个程序在执行时程序状态要满足的不变式。两个程序状态始终要满足这个不变式,这个不变式反映了两个程序状态之间的对应关系,也就体现了两个程序状态之间的一致性,进而体现了实现的正确性。验证精化关系时,要确定高层和底层代码的对应点(即线性化点),验证不变式在这些对应点上始终成立;同时要验证在程序执行过程中,每个指令的前后条件都在环境(由依赖条件指定)中始终成立。Liang等人提出的基于依赖

保证的向前向后模拟技术[13]扩展了RGSim,通过证明并发数据结构提供的并发操作满足上下文精化关系,来证明并发数据结构的可线性化性。采用这项技术验证程序A是程序B的精化实现时,需要模拟地执行A和B。A每执行一步,就要找B的对应点(即线性化点)。如果对应点确定,那么B执行到对应点,即B执行线性化操作到达线性化点。如果对应点不确定,此时就遇到了“疑似的”对应点,那么在此做一个尝试性的线性化操作,将线性化后的程序结果与未线性化的程序结果均记录在验证时使用的程序状态中。以后检查中,如果发现某个条件不满足,此前的线性化结果要被舍弃,那么就在程序状态中舍弃线性化后的结果。如果发现条件都满足,此前的线性化结果应该被保留,那么就在程序状态中舍弃没有线性化的结果。本文验证时就采用RGSim和基于依赖保证的向前向后模拟技术。

对于线性化点确定的代码,RGSim验证精化关系非常有效。为了降低验证的复杂性,本文在高层和底层中加入一个中间层,将高层代码转换为中间层代码,然后验证高层代码和中间层代码的精化关系,之后再验证中间层代码和底层代码的精化关系。在验证高层和中间层代码的精化关系时,因为高层和中间层的线性化点确定,所以采用RGSim。

首先将高层代码转换为中间层代码,如图5所示。表示中间层共享变量的结构体和表示底层共享变量的结构体类似,但只有data和lk两个域。函数lock(&x)获取结构体x的锁,如果这个锁被其他线程占用,函数便阻塞直至锁被本线程获取。函数unlock(&x)释放结构体x的锁。图5中的尖括号“< >”将若干语句包含在一起组成一条原子指令。中间层先原子地执行如下操作:获取x和y的锁并执行原始事务。之后逐一释放x和y的锁。

验证高层和中间层之间的精化关系时,依赖保证条件可根据操作语义得出,此处省略。用到的不变式是

此不变式中,对高层和中间层都存在的变量,用下标进行区别,H表示高层,M表示中间层。此不变式体现了高层变量和中间层变量应始终保持的一致性,即x与y两个共享变量在高层和中间层中的值始终相等,且高层和中间层对应的局部变量tmp的值始终相等。高层和中间层的对应点是:当中间层线程执行第一个原子操作时,高层线程执行事务;当中间层线程执行余下操作时,高层线程不执行任何操作。经过推导,高层和中间层的精化关系便可得到验证。

验证中间层和底层的精化关系时,因为线性化点不确定,采用基于依赖保证的向前向后模拟技术。首先考虑中间层代码和底层代码在执行时的线性化点:底层代码在用increment_and_fetch函数改变全局时间戳之后,中间层代码尝试性地进行线性化。在提交之前,底层代码要对读取的共享变量x进行再次检查。如果发现没有问题,就进行提交,同时保留中间层线性化后的结果,舍弃中间层没有线性化的结果;如果发现有问题,那么就需回滚,同时保留中间层没有线性化的结果,舍弃中间层线性化后的结果。

在验证中间层和底层的精化关系时,依赖保证条件可以根据操作语义得出,此处不再赘述。用到的不变式反映了算法的本质,是验证的关键,所以下文主要对不变式进行阐述。表示不变式时,对中间层和底层都存在的变量,用下标进行区别,M表示中间层,L表示底层。

首先阐述的是中间层和底层程序状态的对应关系满足的不变式,即TL2算法中具体状态与抽象状态对应关系满足的不变式。该不变式为

该不变式是说,如果一个共享变量在中间层或底层的锁空闲,那么它在中间层和底层的值对应相等。该不变式保证了中间层和底层共享变量的一致性。同时它也体现了引入中间层的必要性。为了看清这个问题,假设没有中间层,那么就需要讨论高层和底层状态的对应关系满足的不变式,这个不变式可以写作

假设底层代码投机执行时已获取了x和y的锁,但是在最后STM_validate检查中失败,必须回滚。回滚前,x和y的锁没有被释放,不变式的前提为假,因此不变式为真。回滚后,不变式的前提为真,要保证不变式依然成立,不变式的结论必须为真,但这个是无法推导出的。在加上中间层后,就可以解决这个问题。在中间层尝试进行线性化操作后,程序状态中有两种结果,一种是线性化后的结果,一种是没有线性化的结果。如果在STM_validate检查中失败,那么就要保留没有线性化的结果。在这个结果中,回滚前,由于不变式成立,并且中间层的锁空闲(即不变式的前提为真),所以不变式的结论为真;回滚后,不变式的前提依然为真,回滚操作不改变共享变量的data域,这就使得不变式的结论依然为真,所以不变式依然为真。因此加入中间层后,这个不变式就能恒成立。

另外一个重要的不变式是基于时间戳的读集检验策略满足的不变式,这个不变式为

它的意思是如果1)共享变量x已经通过了初次检查并读取了x的值,并且2)x的锁在中间层或底层空闲,并且3)x的版本号不大于rv,那么读取x时保存值的局部变量tmp和对应的底层共享变量x的值相等。在读取x前的那次检查可使得条件1)成立,读取x后的那次检查可使得条件2)和3)成立。因为共享变量的版本号单调增加,所以只要在任意程序点条件3)成立,那么在这个程序点之前它始终成立。因此如果读取x之后的那次检查没问题,那么在读取x前检查锁的时刻以及读取x的时刻,条件3)都成立。这个就可以保证读取的x的值正确。类似地,也可以推导出在STM_validate时,如果通过了检查,读取的x的值正确。

最后还有一个不变式比较重要,这个不变式是

它是说线程局部变量rv和共享变量的版本号都始终小于或等于全局时间戳,这反映了全局时间戳单调增加的性质。在验证时这个不变式是一个重要的辅助。

采用基于依赖保证的向前向后模拟技术进行验证时,根据操作语义推导出每个语句在执行过程中的前后条件,同时验证这些前后条件在环境(由依赖条件指定(中始终保持。推导后便验证了中间层和底层的精化关系。

在验证高层和中间层的精化关系以及中间层和底层的精化关系之后,根据精化关系的定义,便可知高层和底层之间也有精化关系。这样便在代码级上完成了对这个TL2读写事务底层实现的精化验证。

3 相关工作

已有的许多工作[14,15,16,17]使用模型检查(modelchecking)验证STM算法,但为了减少状态数量并简化验证,他们的抽象模型通常将STM算法的若干步合为一个原子指令,这样就忽略了真实的STM算法在线程交叉执行时的微妙状态。而本文在代码级上对TL2事务的底层实现进行验证,并关注了这些微妙状态,同时还给出了这些状态对应关系满足的不变式。

Tasiran[18]对STM算法在代码级上进行了精化验证,但所验证的STM算法的策略与TL2的策略不同,所以所用方法不适用于TL2的验证。Mohsen等人[19]基于模拟技术提出了验证STM的框架,但只支持向前模拟,不支持向前向后模拟,也无法验证TL2事务的实现。而本文采用向前向后模拟技术验证了TL2事务的底层实现。

4 结束语

本文用TL2算法实现的代码具有代表性,体现了TL2算法的本质,帮助人们对TL2算法有更深入的理解。

引入中间层后,本文使用基于依赖保证的向前模拟技术(RGSim)验证了高层和中间层的精化关系,再使用基于依赖保证的向前向后模拟技术验证了中间层和底层的精化关系。这样便验证了高层和底层的精化关系,完成了对一个典型读写事务基于TL2算法的底层实现在代码级的验证工作。

安全大检查程序 篇8

按照“制度化管理、程序化运作、闭合化考核”的原则,对公司安全生产大检查的工作程序做如下规定:

一、检查准备:

每月底由安监处确定次月安全生产大检查的时间、日期、重点检查内容,并向全公司各单位下达检查通知;由各专业副总负责将届时参加检查的人员、检查路线、地点及检查组组长,以书面形式于检查前一日17:00前报安监处信息办公室;安监处负责进行汇总整理,书面报调度室;调度室值班主任在大检查专题会议上发放到有关人员。

二、实施检查:

各检查小组成员在组长带领下,在规定期限内按检查要求和标准对现场所有地点进行全面、认真、细致的审计性检查。查出问题时,应采取现场制定整改措施、限期整改的方式加以落实,并根据有关规定给予责任单位和责任人相应的处罚。

三、检查汇报:

检查完成后,于当日17时前,由各检查组组长负责将查出的问题和整改措施进行汇总,以书面材料(谁检查谁签字)和电子版报安监处信息办公室,并负责书面通知责任单位。由生产经理主持在指定日期公司生产会例上对安全生产大检查进行专题汇报,会议由调度室负责人负责,由各检查组组长负责汇报检查出的问题、质量得分情况、现场整改情况、责任追究情况和限期整改问题的整改单位及负责人、完成时间、验收人。

四、整改与监督:

责任单位对本单位存在的问题要积极采取措施,认真抓好整改工作,保证符合整改标准和要求;各检查组组长负责按规定的完成时间组织人员对问题进行检查验收和消号,对无正当理由到期未整改或整改不合格的进行责任追究,并将验收及考核结果报安监处(问题到期后的第一天上午报)。安监处进行二次跟踪督察,安监处根据督察情况对有关问题的落实追究考核,并在公司生产例会上通报,安监处负责做好全公司安全生产大检查相关资料的保存工作。

五、考核:

有机食品认证程序 篇9

1、申请人向中心递交《有机食品标志使用申请书》《企业及生产情况调查表》及以下材料。

(1)保证执行有机食品标准和规范的声明

(2)生产操作规程(种植规程)

(3)公司对基地的质量控制体系(包括基地图、管理制度)

(4)产品执行标准

(5)产品注册商标文本(复印件)

(6)企业营业执照(复印件)

(7)企业质量管理手册

(8)要求提供的其他材料(通过体系认证的附证书复印件)

2、受理及文审

2.1中心收到上述申请材料后,进行登记、编号,5个工作日内完成对申请认证材料的审查工作,并向申请人发出《文审意见通知单》。

2.2申请认证材料不齐全的,要求申请人收到《文审意见通知单》后10个工作日提交补充材料。

2.3 申请认证材料不合格的,通知申请人本生长周期不再受理其申请。

2.4 申请认证材料合格的,执行第3条。

3.现场检查、产品抽样

3.1 中心应在《文审意见通知单》中明确现场检查计划,并在计划得到申请人确认后委派2名或2名以上检查员进行现场检查。

3.2检查员根据《有机食品检查员工作手册》和《有机食品产地环境质量现状调查技术规范》中规定的有关项目进行逐项检查。每位检查员单独填写现场检查表和检查意见。现场检查和环境质量现状调查工作在5个工作日内完成,完成后5个工作日内向中心递交现场检查评估报告和环境质量现 1

状调查报告及有关调查资料。

3.3现场检查合格,可以安排产品抽样。凡申请人提供了近一年内有机食品定点产品监测机构出具的产品质量检测报告,并经检查员确认,符合有机食品产品检测项目和质量要求的,免产品抽样检测。

3.4现场检查合格,需要抽样检测的产品安排产品抽样:

3.4.1当时可以抽到适抽产品的,检察员依据《有机食品产品抽样技术规范》进行产品抽样,并填写《有机食品产品抽样单》,同时将抽样单抄送中心认证处。特殊产品(如动物性产品等)另行规定。

3.4.2当时无适抽产品的,检查员与申请人当场确定抽样计划,同时将抽样计划抄送中心认证处。

3.4.3申请人将样品、产品执行标准、《有机食品产品抽样单》和检测费寄送有机食品定点产品监测机构。

3.5现场检查不合格,不安排产品抽样。

4.环境监测

4.1 有机食品产地环境质量现状调查由检查员在现场检查时同步完成。

4.2经调查确认,产地环境质量符合《有机食品产地环境质量现状调查技术规范》规定的免测条件,免做环境监测。

4.3根据《有机食品产地环境质量现状调查技术规范》的有关规定,经调查确认,必要进行环境监测的,中心自收到调查报告2个工作日内以书面形式通知有机食品定点环境监测机构进行环境监测。

4.4定点环境监测机构收到通知单后,30个工作日内出具环境监测报告,连同填写的《有机食品环境监测情况表》,报送中心认证处。

5.产品检测

有机食品定点产品检测机构自收到样品、产品执行标准、《有机食品产品抽样单》、检测费后,20个工作日内完成检测工作,出具产品检测报告,连同填写的《有机食品产品检测情况表》,报送中心认证处。

6.认证审核

6.1中心收到检查员现场检查评估报告和环境质量现状调查报告后,3个工作日内签署审查意见,并将认证申请材料(包括现场检查合格的和不合格的)、检查员现场检查评估报告、环境质量现状调查报告及《中心有机食品认证情况表》等材料报送中心认证处。

6.2 中心认证处收到报送材料、环境监测报告、产品检测报告及申请人直接寄送的《申请有机食品认证基本情况调查表》后,进行登记、编号,在确认收到最后一份材料后2个工作日内下发受理通知书,书面通知申请人。

6.3中心认证处组织审查人员及有关专家对上述材料进行审核,20个工作日内做出审核结论。

6.4 审核结论为“有疑问,需现场检查”的,中心认证处在2个工作日内完成现场检查计划,书面通知申请人。得到申请人确认后,5个工作日内派检查员再次进行现场检查。

6.5审核结论为“材料不完整或需要补充说明”的,中心认证处向申请人发送《有机食品认证审核通知单》。申请人需在20个工作日内将补充材料报送中心认证处。

6.6审核结论为“合格”或“不合格”的,中心认证处将认证材料、认证审核意见报送有机食品评审委员会。

7.认证评审

7.1有机食品评审委员会自收到认证材料、认证处审核意见后10个工作日内进行全面评审,并做出认证终审结论。

7.2认证终审结论分为两种情况:

(1)认证合格

(2)认证不合格

7.3结论为“认证合格”,执行第8条。

7.4结论为“认证不合格”,评审委员会秘书处在做出终审结论2个工作日

内,将《认证结论通知单》发送申请人,并抄送中心。本生产周期不再受理其申请。

8.颁证

8.1中心在5个工作日内将办证的有关文件寄送“认证合格”申请人,并抄送中心。申请人在30个工作日内与中心签订《有机食品标志商标使用许可合同》。

食品安全验证程序 篇10

一次性密码(One Time Password,简称OTP):又称动态密码,是只能使用一次的密码。一般的静态密码在安全性上容易被木马盗取,或者只要花上一定的时间,也可也被暴力破解。为了解决一般密码容易被破解的情况,因此开发出一次性密码的解决方案。

2 原理

传统的密码通常只能在用户需求时才进行修改,这类密码大多缓存在计算机硬盘上,因此很容易被破解。

与静态密码不同,一次性密码只会在用户每次登陆时才发生更改。动态密码有2种产生访方式:1)与时间同步;2)与计数器同步。

这2种方式都要求用户携带一个与服务器同步的小型硬件设备,并且使用一些算法来生产密码。而手机无疑是目前大多数人携带的移动设备,大多智能手机都支持Java环境,这就便于用户安装java密码产生器程序。手机上的时间一般与标准时间非常接近,所以我们采用与时间同步的OTP。对于可能出现时间偏差的问题,需要在提示用户同步标准时间,这点用户也很容易接收。OTP是建立在某种加密算法处理之上,以根据时间参数,密钥以及用户必须提供一个以知值(比如个人个人标识符(PIN))产生当前的密码。例如,基于哈希的OTP试用加密哈希算法来计算密码。加密哈希算法是一种单向函数,即:将任意长度的消息映射为固定长度的字符串。因此基于哈希的OTP首先进行输入(同步时间,密钥,PIN),然后通过单向函数运行它们,并且产生固定长度的密码。

下面来讲讲如何利用手机来建立OTP解决方案。在这个方案中,我们使用J2me和密钥哈希消息身份认证来创建与时间同步的OTP。手机作为客户端程序来创建OTP,而密码验证服务器,采用jsp和Mysql技术。

3 手机OTP解决方案

OPT解决方案中,主要有2部分,一个是OTP身份验证web服务器,该服务器由MySQL提供支持并且集成到JSP中。另一部分是手机客户端OTP产生器,用户通过安装手机客户端,就可以运行它来生产新的OTP。

每个用户在获取手机客户端OTP产生器的时候,由web服务器为每个用户安装的客户端程序产生不同的PIN和哈希密钥,这样制约OTP的3大要素在用户使用手机来产生密码时都确定了。

已了解OTP在用户级别的工作原理,但此解决方案是如何在功能级别上工作的呢?这个基于哈希的OTP解决方案有两个输入值:密钥和时间。但是,OTP解决方案还具有与实现程序相关的元数据,包括执行身份验证时用户必须键入的密钥的长度和预期OTP值的长度。

示例程序将生成长度为六个字符的OTP,并且可支持最多八个字符。为安全起见,该实现使用将密钥长度设置为512个字节的一些固定长度缓冲区。但是,假设密钥是密码学角度上的高质量随机数字,则会需要巨大的密钥空间。此类密钥将不会成为生产部署中的脆弱环节。

特定用户(或从技术角度讲,具有特定密钥)每次进行身份验证尝试时,当前时间都会变化。OTP解决方案的安全性依赖于永不重复使用的当前时间;这一点由OTP服务器保证。密钥哈希消息身份验证代码(HMAC)是基于密钥的一种加密哈希。或换句话说,HMAC接受任意消息和密钥,并将消息映射成固定长度的摘要值(如20字节),从而确保只有具有相同密钥的人才能从相同的消息生成相同的摘要值。

HMAC-OTP的首个计算步骤是接受计数值,并将其编码为HMAC计算的输入消息。实际使用时,消息是设为计数器值的8字节缓冲区。

图1为方案整体流程图。

当收到Web浏览器提示时,用户需要启动手机客户端程序,将客户端显示的口令键入OTP值并单击“Submit”(提交)按钮进行身份验证。OTP插件模块从JSP得到通知,并且随后调用Web服务来检验身份验证请求。Web服务在My Sql表中查找用户的密钥和计数器值、检验OTP计算,并响应身份验证为成功还是失败。

4 手机客户端

此解决方案是基于哈希的OTP解决方案有两个输入值:密钥和PIN,此外,OTP解决方案还具有与现实程序相关的元数据,包括执行身份验证时用户必须键入预期OTP值的长度。

用户从web服务器或者wap服务器获取手机客户端,服务器端对每个产生的客户端都包含不同的密钥和PIN。PIN区分不同的用户,保存在MySql中。过程如图2所示:

手机客户端采用标准J2ME开发语言,适用java描述哈希算法,根据获取手机的当前时间(年-月-日-小时-分),用户PIN,用户512位密钥生成6位或者8为字符,即一次性口令。由于时间精确到分钟,所以口令每分钟变化一次。如下图所示,描述客户端工作流程。

5 身份验证Web服务器

身份验证Web服务负责执行实际的OTP身份验证,方法是确定提供的OTP值是否表明用户已拥有密钥。在MYSQL数据库中保存了每个用户的PIN,密钥。当用户提交验证时,需要用户输入PIN,Web服务器根据PIN查找用户的密钥,根据用户PIN,密钥和当前时间,采用客户端相同的哈希算法,计算出口令,验证用户就是验证用户输入的口令和Web服务器产生的口令是否一致。

6 结束语

采用时间同步的方法,需要用户手机的时间与标准时间一致,时间不一致,就会导致身份验证失败。为了便于用户在手机上更新到标准时间,可以在手机客户端上添加《同步标准时间》的功能。

在手机上实现一次性口令方案,将手机的特点融入其中,为用户非常方便的提供安全高效的验证方式。

参考文献

[1]Bruce Schneier.应用密码学[M].吴世忠,译.北京:机械工业出版社,2007.

上一篇:以等待为题的话题作文下一篇:三年级状物作文:香蕉的自述350字