ET99 身份认证

      ET99是一款高速HID无驱并可以同时支持软件保护和身份认证应用的多功能USB设备。其采用国际流行的冲击响应认证方式,硬件内部完成HMAC-MD5运算,密钥不出锁,安全可靠。通过ET99,就可以安全快速的完成登录的过程,不必再为密码被盗而担心,真正实现上网无忧。

优惠的价格帮您最大限度节省购买成本 
稳定的质量解决后顾之忧,独家承诺三年免费保换
全系统兼容的HID无驱USB设备
高速USB通讯模式
单个硬件多种功能
替换传统密码登录的冲击响应方式
硬件内部支持HMAC-MD5运算
全球唯一64位硬件序列号
1000字节安全存储空间,用户级别读写控制
8个32字节算法密钥
Windows、Linux、Mac跨平台支持
用户必须先输入ET99的User PIN,验证通过后才能登录
User PIN有最大重试次数限制,连续输入错误会锁死。从而防止硬件丢失后,被不合法的持有者反复重试,暴力破解
硬件保证锁内密钥只能在锁内参与HMAC-MD5运算,无法被读取或导出
硬件和User PIN双重因子保护,必须同时具备ET99硬件和保护硬件的User PIN双重因子时才能登录
网络传输的数据一次一密,有效防止黑客截获,重放攻击等盗用手段

      1.在数据库中用户表里添加一个字符串类型的密钥Key字段,用于存储用户登录的密钥。
      2.通过ET99提供的工具或者API接口,将密钥Key经过处理,写入到硬件中。
      3.登录页面中保留用户名输入框,原密码输入框改为User PIN码输入框,并增加脚本语言完成验证User PIN和ET99中进行计算的代码。
      4.服务器端验证页面增加服务器端计算和比较计算结果的代码。
      通过上述四步简单的改动,就可以在本质上大大提高网站登录的安全性,彻底消除密码被盗取的风险,实现上网无忧。请您参考ET99提供的各种网站编程语言的示例,快速完成ET99集成开发。

全球唯一ID:64位(bit) 
硬件算法:硬件内完成HMAC-MD5运算
PID(Product IDentification):产品ID,用户自定义,出厂默认为8个F,即“FFFFFFFF”,不区分大小写。
SO PIN(Super Officer Personal Identification Number):管理员PIN码,用户自定义,出厂默认为16个F,即“FFFFFFFFFFFFFFFF”,不区分大小写。
User PIN(User Personal Identification Number):用户PIN码,用户自定义,出厂默认为16个F,即“FFFFFFFFFFFFFFFF”,不区分大小写。
PIN重试次数限制:SO PIN和User PIN都有重试次数限制。最大重试次数可以设置为1~15次,当设置为0时,则表明SO PIN和User PIN将永远不被锁死。
安全存储区:1000字节,只有通过User PIN验证后才可以读写。
安全密钥存储区:8个32字节的HMAC-MD5密钥存储区,硬件保证该存储区中的密钥只能在锁内参与HMAC-MD5运算,无法被读取或导出。
外壳加密:高强度外壳保护

PID(Product IDentification): 
      产品ID,用户自定义,出厂默认为8个F,即“FFFFFFFF”,不区分大小写。调用et_FindToken 和et_OpenToken时输入的参数,开发商需要通过种子产生自己的PID,以区分不同开发商之间的ET99。种子机制的优势,种子是由开发商自己设定的一串数据,其他人即使得到PID,但不知道产生该PID的种子,因此无法制作相同PID的ET99。注意:产生新的PID后,请保留好新产生的PID和种子。
SO PIN(Super Officer Personal Identification Number):
      管理员PIN码,用户自定义,出厂默认为16个F,即“FFFFFFFFFFFFFFFF”,不区分大小写。SO PIN在产生PID和解锁User PIN时用到。SO PIN同样使用种子机制产生。注意:请保留好新产生的SO PIN和种子。
User PIN(User Personal Identification Number):
      用户PIN码,用户自定义,出厂默认为16个F,即“FFFFFFFFFFFFFFFF”,不区分大小写。User PIN在读写数据,使用HMAC-MD5密钥进行计算等操作中用到。User PIN的修改需要先验证旧的PIN码,再设置新的PIN码。注意:User PIN码长度为16个十六进制字符,即16个0~9和A~F的字符组合。
PIN重试次数限制:
      SO PIN和User PIN都有重试次数限制。最大重试次数可以设置为1~15次,当设置为0时,则表明SO PIN和User PIN将永远不被锁死。如果开发商将SO PIN和User PIN的最大重试次数设为1~15时,那么当使用者连续输入错误的次数达到了最大限制次数,则多功能锁锁死,这时即使输入正确的SO PIN和User PIN,也不能进行相应的操作。如果在最大限制次数内只要有一次输入正确,最大重试次数又恢复为开发商所设置的最大值。出厂默认为SO PIN不会锁死,User PIN3次锁死。另外,可以通过et_Verify验证PIN码接口的错误返回值得到重试次数,调用该接口成功时返回0,错误时返回0xF*,*表明剩余的重试次数,如:0xF2表明还剩2次重试机会,0xF0表明PIN码已被锁死,如果每次都返回0xFF,表明没有重试次数限制。

SDK(Software Development Kit)是为开发人员提供的开发包,您购买ET系列产品后,需要到“资源下载”页面下载开发所需要的资源,SDK内容包括: 
身份认证:
      传统密码登录的冲击响应方式
工具:
      设置锁内HAMC-MD5密钥工具
      网页方式安装ActiveX控件
      EXE方式安装ActiveX控件
      网页监控硬件插拔
支持编程语言:
      ASP
      C#
      VB.Net
      PHP
      Java
      更多……(包括32位和64位版本)
支持操作系统平台:
      WINDOWS 98SE/Me/2000/XP/Server 2003/Vista/2008(包括32位和64位)及各补丁版本 Linux各版本(包括32位和64位)

核心芯片:8位CPU芯片 
硬件序列号:全球唯一64位(bit)硬件序列号
安全存储空间:1000字节
硬件内置算法:HMAC-MD5
读次数:没有限制
写次数:至少10万次
USB通讯: 全系统兼容的HID无驱USB设备,USB1.1标准设备,兼容USB2.0接口

默认外壳:ABS工程塑料,表面抛光处理 
默认颜色:瓷白色
外壳尺寸: 57×19×9 (毫米)
重量:10克
防水:防水浸泡10分钟
接口类型:USB A类接头
工作温度:0℃~50℃
存放温度:-10℃~60℃
工作湿度:20%~80%
工作功率:250mW(最大)
工作电压:5V
工作电流:50mA(最大)
数据保存年限:至少10年
USB接口号码:USB接头上所刻的11位号码的前5位为生产日期,后6位为随机数。如:90831E15576,表明2009年8月31日生产。该序列号只作为保修参考用,没有API接口可以得到,也不保证是唯一的。

保修时间:正常使用导致硬件损坏,一年内免费保修,终身维护。超过一年,收取成本费。 
保修运费:维修锁的往返运费由用户承担。为了节省运费,建议在再次购买前,将需要维修的锁先寄回,这样在发送新锁时将维修锁一起寄回,节省一次运费。

资源下载

ET99身份认证资源全部下载

用户手册

API接口手册

FULL组件接口手册

MOD组件接口手册

ET99批量设置工具

ET99编辑器工具

ET99设置PID工具

ET99设置SOPIN工具

ET99修改UserPIN工具

设置ET99的PIN码重试次数和只读属性工具

ET99身份认证设置工具

ET99/ET299管理工具。通过该工具可以批量设置PID、SOPIN、USERPIN、存储区数据、密钥区密钥等。

ET99批量设置工具源代码

ET99编辑器工具源代码

ET99设置PID工具源代码

ET99设置SOPIN工具源代码

ET99修改UserPIN工具源代码

ET99设置工具源代码

ET99身份认证设置工具源代码

ET99 API头文件

ET99 API DLL库

ET99 静态LIB库

ET99 BCB LIB库

ET99 Delphi OBJ库

ET99Java库

ET99 MOD组件库

ET99 FULL组件库

ET99 x64位库

ET99 ASP示例

ET99 C#示例

ET99 JSP示例

ET99 PHP示例

ET99 WEB页面检测插拔示例

ET99 页面安装示例

ET99 exe方式安装文件

ET99 网页中设置MD5HMAC密钥、登录时在硬件中进行MD5HMAC计算和读写数据的JavaScript示例

安装ET99加密锁插拔监控程序(ET99_monitor.exe)并注册为开机启动;插入ET99弹出指定网页(weburl.ini中指定),拔出ET99关闭指定网页。拷贝FT_ET99_API.dll、ET99_FULL.dll、ET99_MOD.dll到system32目录并注册两个控件ET99_FULL.dll、ET99_MOD.dll。

常见问题
  1. 在数据库中用户表里添加一个字符串类型的密钥Key字段,用于存储用户登录的密钥。
  2. 通过ET99提供的工具或者API接口,将密钥Key经过处理,写入到硬件中。
  3. 登录页面中保留用户名输入框,原密码输入框改为User PIN码输入框,并增加脚本语言完成验证User PIN和ET99中进行计算的代码。
  4. 服务器端验证页面增加服务器端计算和比较计算结果的代码。

      通过上述四步简单的改动,就可以在本质上大大提高网站登录的安全性,彻底消除密码被盗取的风险,实现上网无忧。请您参考ET99提供的各种网站编程语言的示例,快速完成ET99集成开发。

      或者保留系统中原有的用户名和密码,ET99的PID和UserPIN可以修改成设定的固定值,写死在程序中。这样登录时是使用锁内的MD5HMAC密钥进行计算,服务器端验证时,在原来系统验证用户名密码通过后,再验证冲击响应的计算结果是否正确。每把锁内的密钥都是不同的,代表登录人的身份。

      UserPIN的作用主要是防止ET99丢失,捡到的人也可以使用。使用原来的静态密码也能实现这样的目的,即捡到ET99的人不知道密钥,光有KEY也是登录不了的。必须知道原来的登录密码和ET99硬件双重因素才能登录。原来的静态密码修改时字符和长度都不受限制。

      x64系统上是可以运行32位的程序的,x64系统中的windows\syswow64目录下都是32位的程序,因此可以将API库,如ET99_Full.dll拷贝到这个目录,使用这个目录下的regsvr32进行注册。另外,这时上层应用也要是32位的应用,如c#在编译时要选择x86(只调用32位的库),而不是any cpu(any cpu会根据系统的不同而调用不同的库)。如果是IE,要运行program(x86)下面的IE目录下的IE(这个是32位的),而不是program下的IE(这个是64位的)。

      如果应用是64位的,那么就需要将64位的API库放到x64系统上的windows\system32目录(这个目录下都是64位的库)下。64位的应用只能调64位的库。

      PID(8个十六进制字符)的作用是区分不同开发商系统中的锁。PID出厂默认为8个F,即“FFFFFFFF”(不区分大小写),PID必须修改后,锁的功能才能使用。例如:客户A公司购买锁后PID设置为“11111111”,客户B公司购买锁后PID设置为“22222222”,客户A公司的系统中是查找PID为“11111111”的锁,那么B公司或者其他公司的锁在A公司的系统中是无法使用的。

      PID是在查找锁和打开锁时用到的,即必须输入正确的锁的PID,打开和查找才能成功。如锁的PID为:“A1B2C3D4”,这时调用et_FindToken和et_OpenToken函数时,pid参数就要给“A1B2C3D4”,函数执行才能成功。

      另外,PID非常安全,它是由一个长度不超过51个字节的字符串作为种子,多功能锁会根据这个种子生成PID(8个十六进制字符)。这个生成算法是在多功能锁内部完成的,而且是不可逆的,也就是说,只有生成者才知道什么样的种子能生成什么样的PID,别的人即使知道PID,也能够调用这个计算过程,但因为不知道种子是什么,是无法生成您的PID的,从而无法生产出一个与您手中一致的加密锁硬件。

      特别注意,请保留好PID和产生PID的种子,特别是种子。由于种子相同,产生的PID就相同,所以在忘记了PID的情况下,可以使用已知PID的锁和相同的种子产生忘记的PID。如果种子也忘记了,那么只能返厂重新生产

      SOPIN(16个十六进制字符)为管理员密码,这个密码只能由专门的人员掌握,而不应透露给其他人,也不要出现在应用系统中。掌握管理员密码的管理员可以设置锁的PID,和解锁UserPIN,即在做这两个操作前,需先验证SOPIN,验证通过后才能进行设置。

      SOPIN可以设置重试次数限制,但特别注意,当SOPIN锁死后,只能返厂重新生产。为了减少不必要的麻烦,SOPIN出厂默认为没有锁死限制。

      重试次数可以设置为0~15次,设为0时表示没有限制。当设置有重试次数限制时,如果连续输入错误的次数超过了最大重试次数,则多功能锁锁死,这时输入正确的密码也不能进行相应的操作;在最大重试次数内只要有一次输入正确,则重试次数又恢复为最大重试次数。这种机制类似于银行卡,防止破坏者反复重试破解密码。

      SOPIN的生成与PID的生成都是通过种子机制来完成的。即是由一个长度不超过51个字节的字符串作为种子,多功能锁会根据这个种子生成SOPIN(16个十六进制字符)。这个生成算法是在多功能锁内部完成的,而且是不可逆的,也就是说,只有生成者才知道什么样的种子能生成什么样的SOPIN。

      可以通过批量设置工具(ET99Setting.exe)或者et_SetupToken接口设置SOPIN重试次数。使用ET99Setting.exe设置时,在“请选择设置项”中选上“读写属性”前的复选框, 并在“重试次数”后填入相应的次数(0-15)。

      UserPIN(16个十六进制字符)为用户密码,在使用锁的读写功能,设置HMAC_MD5密钥和进行HMAC_MD5运算前,必须先验证这个密码,验证通过后才能正确执行。注意UserPIN必须是0-9 A-F(不区分大小写)的十六进制字符,长度必须是16个。

      UserPIN可以设置重试次数限制,重试次数可以设置为0~15次,设为0时表示没有限制。UserPIN出厂默认设置3次锁死。锁死后需先验证SOPIN,然后通过解锁函数进行解锁,也可以参看常见问题中“解锁User PIN”。解锁后UserPIN恢复为默认的16个F,即“FFFFFFFFFFFFFFFF”(不区分大小写)。

      可以通过批量设置工具(ET99Setting.exe)或者et_SetupToken接口设置UserPIN重试次数。使用ET99Setting.exe设置时,在“请选择设置项”中选上“读写属性”前的复选框,并在“重试次数”后填入相应的次数(0-15)。

      锁的存储区可以设置成只读。当设置成只读时,用户密码(UserPIN)验证后,只能读取数据而不能写入数据;开发商密码(SOPIN)验证后,可读可写。
      可以通过批量设置工具(ET99Setting.exe)或者et_SetupToken接口设置存储区只读属性。使用ET99Setting.exe设置时,在“请选择设置项”中选上“读写属性”前的复选框,并选上“只读标志”的复选框。

      ET99/ET299必须先要修改PID才能使用。如果使用默认的8个F,包括读写等很多功能都是不能成功的,会返回0x04(没有设置PID的错误)。

      最终用户在使用ET99进行网上身份认证或者使用加密后的应用软件时,特别是在进行身份认证时需要输入ET99的User PIN。由于ET99 的User PIN为16个字符,用户输入不方便,这时开发商应先对User PIN进行处理。可以将用户自己设定的USER PIN(如:superkey)通过调用我们接口库提供的MD5_HMAC接口或者自行设计相应的转换算法,将最终用户的输入转换成16个 (0~9,A~F)的字符。在使用MD5_HMAC接口时,其结果为16个字节,这时可以截取其中的8个字节,每个字节以2个字符(0~9,A~F)表示,这样再作为ET99的User PIN,以供验证调用的接口使用。

      可以参考这样的方案。保留系统中原有的用户名和密码,用户设置的这个任意字符的密码通过变换(可以自己写算法)为长度16个的十六进制字符,每次用户密码更改后,还要通过ET99的修改UserPIN的接口将硬件的密码同时修改。这样就解决了用户输入UserPIN码不方便的问题。

      只有将硬件退回给我们重新烧制固件程序,才可以恢复为全是F,我们也不知道全F的种子。但因为PID必须被修改后才能使用,恢复为全F是没有必要的。

      您可以使用当前的PID去产生一个新的PID。如PID已经设置为FFC5EB78,那么就可以使用FFC5EB78打开硬件,验证SOPIN,然后使用新的种子产生一个新的PID。SOPIN是一样的,先验证当前的SOPIN,在使用新的SOPIN种子产生新的SOPIN。

      另外,数据区中的数据出厂为0x00,如果要恢复,直接使用写接口写入0x00就可以。建议都写成0x00,因为0x00是字符串结尾的标志,这样在读取数据时比较方便。

      向ET99内设置密钥时,需要将给用户分配的密钥经过HMAC_MD5运算变为32字节再设置到锁内。这样的好处是,由于HMAC_MD5为单向算法,那么没有任何办法通过32字节反推回密钥。这样,除了硬件中保证密钥不能读出外,又多增加了一层安全性保护。下面说明下HMAC_MD5接口的功能。HMAC_MD5接口有2个功能:

  • 产生存入到锁内的32字节密钥。当用于产生密钥时,第1个参数pucText和第2个参数ulText_Len没有作用,可以填入任何值,第3个参数pucKey为给用户分配的密钥,第4个参数ulKey_Len是密钥的长度,第5个参数为计算后返回的用于设置到锁内的32字节数据,第6个参数没有作用。下面以给用户分配的密钥为“123456”为例:

     

    unsigned char key[32] = {0};
    unsigned char tDig[16] = {0};
    retval = MD5_HMAC(NULL,0,(unsigned char*)”123456″,lstrlen(“123456”),key,tDig);

     

  • 服务器端HMAC_MD5计算。当用于在服务器端进行HMAC_MD5计算时,第1个参数pucText是随机数,第2个参数ulText_Len是随机数的长度,第3个参数pucKey为给用户分配的密钥,第4个参数ulKey_Len是密钥的长度,第5个参数没有作用,第6个参数是HMAC_MD5计算的结果。

     

    //text为随机数
    unsigned char Dig2[16] = {0};
    unsigned char key[32] = {0};
    retval = MD5_HMAC((unsigned char*)text,lstrlen((char*)text),(unsigned char*)”123456″,lstrlen(“123456”),key,Dig2);

      当您使用外壳加密工具或者其他验证User PIN的操作失败,并返回错误0xF0时,表明UserPIN已经锁死了。这时需要使用SO PIN进行解锁操作,过程如下。(注意:解锁时需要输入您手中ET99/ET299当前的PID和SO PIN,截图中为示范的PID和SO PIN):

      (1)运行ET99Edit.exe/ET299Edit.exe。输入“F”,输入PID,查找ET99/ET299,如下图:

      (2)输入“T”,输入PID,打开ET99/ET299,如下图:

      (3)输入“U”,进入SetupMenu,然后输入“R”,输入SO PIN,完成User PIN的解锁。User PIN解锁后,恢复为出厂设置的16个“F”,如下图:

      按“X”退出工具。

      可以通过et_Verify接口返回值来得到User PIN和SO PIN的重试次数。当et_Verify接口返回不为0时表示验证失败,这时返回值为0xF*,*代表剩余的重试次数。如:返回0xF2,表明还有2次重试机会。

      PID(Product Identification)的初始值为8个字符“F”,即:“FFFFFFFF”。

      SO PIN (Super Officer Personal Identification Number)的初始值为16个字符“F”,即:“FFFFFFFFFFFFFFFF”,SO PIN没有锁死次数限制

      USER PIN (User Personal Identification Number)的初始值为16个字符“F”,即:“FFFFFFFFFFFFFFFF”,3次锁死。

      另外,普通用户状态可以对数据存储区进行读写,密钥存储区全为0xFF,数据存储区全为0xFF。

      1.可以先检查一下是不是硬件损坏(请参看“检查USB设备与计算机是否正常连接”问题说明)。步骤如下:

  • 在桌面“我的电脑”图标点击右键,选择“属性”。
  • 选择“硬件”标签,并按“设备管理器”按钮。
  • 在出现的设备窗口中找到“人体学输入设备”,点开前面的加号。双击HID-compliant device。
  • 点开详细信息,在下面的显示框中看是否有:VID_096E PID_0303。

      2.您使用编辑器工具ET99Edit.exe/ET299Edit.exe试一下,使用看ET99多功能锁用户手册.pdf第4.5节,按下面的过程:

  • 按F,输入PID,看能不能找到ET99/ET299。
  • 按T,输入PID,看能不能打开ET99/ET299。
  • 按S,输入SOPIN,看能不能通过。
  • 如果User PIN锁死了,可以通过解锁将User PIN恢复为出厂默认设置16个F。按4.5.8节操作,按U后再按R,输入正确的SO PIN。

      如果以上都可以的话,使用就没有问题了。有2种情况会造成使用不了:

  • 硬件损坏,这时即使输入正确的PID,也找不到ET99/ET299。这时可以在多台机器上测试一下,以便排除确认问题。
  • PID不正确,如果还记得产生PID的种子,那么可以使用另外的ET99/ET299用该种子获得PID。

      加密锁的SO PIN和User PIN非常安全,重试次数可以设置为0~15次,设为0时表示没有限制。SO PIN和USER PIN可以设置成没有锁死限制和锁死二种状态,开发商可以根据自己的情况灵活选择。出厂默认为SO PIN没有锁死限制,User PIN 3次锁死。

      当设置为锁死状态后,如果连续输入错误的次数超过了最大重试次数,则多功能锁锁死,这时输入正确的密码也不能进行相应的操作;在最大重试次数内只要有一次输入正确,则重试次数又恢复为最大重试次数。这种机制类似于银行卡,防止破坏者反复重试破解密码。

      当User PIN锁死时,可以使用SO PIN重新设置User PIN为16个字符“F”。但当SO PIN锁死时,只能退还给我们处理。

      在桌面“我的电脑”图标点击右键,选择“属性”

      选择“硬件”标签,并按“设备管理器”按钮

      在出现的设备窗口中找到“人体学输入设备”,点开前面的加号。双击HID-compliant device

      点开详细信息,在下面的显示框中看是否有:VID_096E PID_0303

      如果这个步骤正常,表明计算机与USB设备连接正常。

      PID,SOPIN和UserPIN一旦被更改后,出于安全因素考虑,是不能恢复为出厂设置的。您可以将锁退还给我们,我们重新烧制一下。

      目前无驱的技术主要分为:HID、SCSI和CCID。

      SCSI主要用于U盘等设备,主要应用于数据量大的传输中,但只有在Windows2000以上操作系统中不需要安装驱动,同时也受到是否是系统管理员访问的影响。

      CCID设备同样也只能应用于Windows2000+SP4以上的操作系统中。

      相比较而言,高速HID无驱设备兼容性强,工作稳定,能够适合从Windows98至Windows7的所有操作系统,即插即用。特别适合兼容性和稳定性要求高,且数据量不大的应用中。同时,ET系列采用高速HID通讯,满足各种高速需求。HID设备也能够在Linux、Unix、MAC等系统中稳定工作。

      USB设备为标准的HID无驱设备,即插即用。遇到机器不认时,一般有3种情况。

      (1)有干扰或是接触不良,请您重新插入或者更换计算机上的其它USB端口。

      (2)在Win2000以上的操作系统使用系统自带的驱动,不需要独立安装驱动。但在不完善的操作系统安装过程中会去掉系统驱动,用户需要在同版本的操作系统中将WINDOWS\Driver Cache\i386\driver.cab文件拷贝到不完善的操作系统的相应目录中。

      (3)请检查是否关闭了BIOS中的USB支持选项。

       另外,在Win98上安装时需要Windows98的系统安装盘上的base6.cab包。Win2000以上操作系统不需要系统安装盘,即插即用。如果在计算机上不能认到USB设备,请使用USB鼠标或者USB键盘来检测计算机的系统是否支持标准HID设备。