网络安全 风险评估指南 网络安全风险测评

本文介绍常用的安全测评工具,分别以Web安全测评和移动支付及互联网金融安全测评为案例,详细阐述针对实际业务系统开展安全测评工作的步骤、内容和判定方法。

一、安全测评工具

介绍在测评工作中常用的几类安全测评工具,包括网络数据分析工具、端口探测和指纹识别工具、漏洞扫描工具、渗透测试工具和Web应用安全测评工具。有些工具既可以进行端口探测和指纹识别,也具备漏洞扫描和渗透测试的功能;某些工具既能对主机漏洞进行探测,也可以针对Web应用系统的安全进行渗透测试。

(一)网络数据分析工具

网络数据分析工具的主要功能是截取网络数据分组,通过协议解析显示出详细的网络数据分组信息。它可以实时检测网络通信数据,自动完成数据分组重组和会话恢复,并且提供图形化浏览界面,以便使用者详细查看数据分组中每一层的详细内容。

该类工具通常都支持对链路层(CSMA/CD、ATM)、网络层(IP、ICMP、ARP)和传输层(TCP、UDP)的协议解析,部分工具还支持对大量应用层协议的解析和重构,如HTTP、FTP、SMTP、NFS和流媒体协议。

主流的网络数据分析工具主要有:Wirkshark、Sniffer Pro、Cain、Ettercap和Fiddler等。利用这些工具,测评人员可以直接截获网络中传输的数据分组,查看网络协议是否符合安全要求,重要数据是否进行了加密传输,身份鉴别信息是否在网络中明文传输,系统是否遭到了外部的探测和攻击尝试,也可以用于分析网络攻击的详细过程和数据特征。

(二)端口探测和指纹识别工具

端口探测和指纹识别工具的主要功能是进行网络扫描和主机探测,从而收集网络和主机系统的特征信息。

此类工具的基本功能分为3个部分:一是探测主机是否在线,以明确下一步的探测目标;二是扫描主机端口,通过网络服务的常用端口是否处于监听状态来判断主机所提供的应用服务;三是根据探测主机的应答信息来推断主机安装的操作系统及其版本。

主流的端口扫描和指纹识别工具主要有Nmap、Superscan、流光和N-scan等。利用这些工具,测评人员可以检测主机是否开放了不必要的服务,是否对外部的网络探测行为进行了有效的屏蔽,是否设置了安全策略避免自身的敏感信息外泄,是否安装了存在严重安全隐患的操作系统版本等。

(三)漏洞扫描工具

漏洞扫描工具是基于漏洞数据库,通过扫描等手段对指定的远程或者本地计算机系统的安全脆弱性进行检测的工具包。

漏洞扫描技术是一类重要的网络安全技术。它和防火墙、入侵检测系统互相配合,能够有效提高网络信息系统的安全性。通过对网络及应用系统的扫描,能够帮助了解网络的安全设置和运行的应用服务,及时发现安全漏洞,客观评估风险等级,同时还能根据扫描的结果修正安全漏洞和系统中的不合理设置。

主流的漏洞扫描工具和商业化产品主要有:Nessus、Acunetix WVS、APPscan、极光、榕基等,下面简要介绍Nessus和榕基两款工具。

1、Nessus

Nessus是一款国外远程安全扫描器,采用客户端/服务器体系结构。客户端提供了运行在Xwindow下的图形界面,接受用户的命令与服务器通信,传送用户的扫描请求给服务器端,由服务器启动扫描并将扫描结果呈现给用户。扫描代码与漏洞数据相互独立,Nessus针对每一个漏洞有一个对应的插件,漏洞插件是用 Nessus 攻击描述语言(NASL,nessus attack scripting language)编写的一小段模拟攻击漏洞的代码,这种利用漏洞插件的扫描技术极大地方便了漏洞数据的维护、更新。Nessus具有扫描任意端口任意服务的能力,可以按照指定的格式(ASCII Html)产生详细的输出报告,包括目标系统的漏洞、怎样修补漏洞以防止黑客入侵及危险级别等。

Nessus除了漏洞扫描之外,也具备针对目标系统的端口探测和指纹识别功能,还可以对操作系统及数据库账户的口令进行破解。图1和图2分别是Nessus扫描完成后针对目标系统给出的漏洞列表和漏洞的详细信息示例。

图1 Nessus扫描漏洞报告列表

图2 Nessus扫描漏洞详细信息

2、安拓·榕基(RJ-i Top)

RJ-i Top网络隐患扫描系统采用机架式结构的产品,可以对不同操作系统下的计算机进行漏洞检测。主要用于分析和指出有关网络的安全漏洞及被测系统的薄弱环节,给出详细的检测报告,并针对检测到的网络安全隐患给出相应的修补措施和安全建议,在网络系统受到危害之前消除隐患。

RJ-i Top网络隐患扫描系统是国内生产的专业测评工具,适用于安全测评机构和网络信息系统的运营使用单位,可用于发现网络安全隐患,提高网络安全防护性能和抗破坏能力,检测评估已运行网络的安全性能,为管理员提供实时安全建议等。

(四)渗透测试工具

渗透测试工具提供了一系列用于对目标系统进行探测、渗透、攻击和入侵尝试的工具包。使用者可以利用此类工具,从攻击者角度判断系统特征和弱点,发起针对性的模拟攻击行为,测试目标系统的安全漏洞是否可被攻击者利用,为目标系统提供直观的安全测评结果。

目前,主流的渗透测试工具包括Metasploit、Immunity Canvas、Core Impact等。其中, Metasploit为免费工具,其余两款均属于商业软件。

Core Impact是一款国际著名的自动化程度较高的网络渗透工具,可以模拟各种复杂的、以不同环境中安全漏洞为目标进行遍历的网络攻击。Core Impact的网络设备渗透测试功能可帮助识别、访问和重新配置路由器,模仿攻击者探测其他未知网络。当发现新的漏洞、出现新的攻击技术或是网络信息系统自身发生变化时,都可以利用该工具进行快速的渗透测试和漏洞验证。

(五)Web应用安全测评工具

由于Web服务在当今互联网环境下的广泛应用,相关厂商和机构也推出了一系列专门针对Web应用安全的测评工具,这些工具都具备针对Web应用服务进行指纹识别、漏洞探测、渗透测试和攻击验证的功能。下面简单介绍其中几款具有代表性的工具产品。

1、WVS(Web Vulnerability Scanner)

WVS是一个自动化的Web应用程序安全测试工具,它可以扫描任何可通过Web浏览器访问和遵循HTTP/HTTPS规则的Web站点和Web应用程序。适用于企事业单位的内联网、外延网和其他Web网站。

2、Burp Suite

Burp Suite 是用于对Web 应用程序进行攻击测试的集成平台。它包含了一系列工具,并为这些工具设计了接口,以便可以相互通信从而提高攻击效率。该平台中所有的工具都共享同一个框架,以便统一处理HTTP 请求,允许攻击者结合手工和自动技术去枚举、分析、攻击 Web 应用程序。不同的工具通过协同工作,有效地分享信息,支持以某种工具中的信息为基础供另一种工具使用的方式发起攻击。

3、Netsparker

Netsparker是一款综合型的Web应用安全漏洞扫描工具,分为专业版和免费版。Netsparker与其他综合性的Web应用安全扫描工具相比,其特点是能够更好地检测Web应用中存在的SQL注入和跨站脚本类型的安全漏洞。

二、Web安全测评案例

(一)Web安全测评概述

随着Web应用技术的不断发展和技术进步,其所面临的安全问题也越来越突出。据相关部门统计,大部分的黑客攻击发生在应用层,而针对网络协议或硬件漏洞的攻击只占一小部分。作为当前应用最为广泛的网络服务,Web应用面临的安全形势十分严峻。在这种情况下, Web应用的安全测评显得尤为重要。

Web应用安全的核心问题在于用户可以提交任意输入。这体现在:用户可干预客户端与服务器间传送的所有数据,包括请求参数、Cookie和HTTP消息头,可轻易避开客户端执行的任何安全控件(如输入确认验证);用户可按任何顺序发送请求,用户的操作过程可能和开发人员的设想完全不同;用户可使用多种浏览器访问Web应用程序,大量攻击Web应用程序的工具可以整合到浏览器中。

影响Web应用安全的关键因素可以归纳为安全意识缺乏、开发过程对安全考虑不足、过度强调程序的简化、网络威胁日益严重、资源与时间限制等因素。例如,如果缺乏对网络威胁的及时跟踪,即使是Web应用项目开始时完全了解当前安全威胁的开发团队,也无法保证所开发和部署的应用程序能够完全应对新的威胁。

在Web应用程序出现之前,网络边界就是安全边界,通常采取的安全措施包括对服务进行加固、打补丁,在网络入口设置防火墙,但Web应用程序改变了这一切。对Web应用来说,要想用户正常访问,边界防火墙必须允许通过HTTP/HTTPS数据分组;Web应用程序要想实现它的一些功能,也必须允许它连接后端系统,如数据库、大型主机、后勤系统等。假如Web应用程序存在漏洞,攻击者就可以通过Web浏览器提交精心设计的数据内容,用于攻击后端的核心系统,由于这些攻击数据和Web应用正常的良性数据之间区别不大,很可能穿透所有网络防御。

(二)Web安全测评实施过程

针对典型的Web应用安全测评,可以将其划分为以下5个阶段:资产划分、信息收集、漏洞识别、安全评估以及解决方案的制定。

1、资产划分

在Web安全测评中,资产划分是所有工作的基础,正所谓“方向问题是根本问题”。不同的Web应用根据各自的功能、业务的不同,对于安全的需求有很大的差异。为了避免南辕北辙,往往需要在工作的准备阶段对全局有一个高屋建瓴的认识,明确工作目标以及被测对象在各个层面的安全需求。

如对于保险、医疗、通信等服务类行业,客户的数据无疑是十分敏感且重要的,这部分的数据库在资产划分中应获得较高的权重;而对于一些以高科技为导向的企业,则对自身的研究成果、员工资料等数据的安全性更加敏感。又如,同样一个企业,在员工内部使用的Web应用和面向互联网的Web应用之间明显有着优先级差异,因为部署在互联网上的Web应用可能面临着更多被攻击的风险,其对安全的要求也更高。

所以,在进行测评之前,要对所测试的Web系统进行资产划分,通过与Web系统的管理及开发人员进行沟通,对系统的业务需求、边界等基本情况进行了解与分析,基于被测试系统各部分的重要程度及所处的安全域,将系统的组成划分为以下几个部分:非常重要且不应被直接访问的(如数据库)、比较重要且可以被访问的(如Web应用)、重要程度较低的且可被随意访问的(如互联网)。资产划分的过程也是一个识别和明确被测对象的过程,基于以上思路可以使测试人员明确不同层面资产的安全需求,进而有针对性地开展安全测评。

2、信息收集

确定Web应用的资产划分、分级后,下一步要做的工作就是收集信息。对于Web应用而言,可以通过枚举应用程序的内容与功能,确定用户输入点、服务器端采用的技术架构、服务器端功能,并由此分析出可能实施攻击的位置。

枚举Web应用的内容和功能,其目的在于了解应用程序的实际功能和运行机制。通常情况下,手动浏览即可确定应用程序的绝大部分内容和功能,但为了更全面记录每一项确定的功能,可以使用工具帮助进行分析,如Web Scarab、Nikto等。枚举应用程序功能时,基本可以确定应用程序获取用户输入的位置,主要包括:

(1)URL字符串,包括查询字符串标记;

(2)GET方式提交的参数;

(3)POST请求主体中提交的参数;

(4)Cookie;

(5)HTTP消息头,如User-Agent、Accept-Language等。

确定服务器端技术架构的方法较多,如版本信息、HTTP指纹、页面文件扩展名、目录名称、会话令牌和第三方代码组件。如图3所示,可通过网络数据分析工具获取HTTP指纹,从而确定服务器端的技术架构。

图3 HTTP指纹

通过留意观察应用程序,一般可推断出与服务器端功能和结构有关的大量信息。例如,应用程序是否执行了全局性的输入确认检查、应用程序是否会查询已到期内容等。

3、漏洞识别

获取Web应用的相关信息后,就对目标应用的功能、技术架构和可能的攻击点有了基本的了解,下一步就要识别Web应用存在的各类安全漏洞。

目前,针对Web应用的安全测评方法主要分为模拟真实的动态攻击以发现漏洞的黑盒测试法和以扫描源代码发现漏洞的白盒测试法两类:黑盒测试在Web应用运行的时候对其进行分析,以发现攻击者可能发现的弱点,优点是可以验证漏洞及其可利用性,但也存在一些不足,如黑盒测试处于开发生命周期后端,可能导致不完整的测试覆盖,黑盒测试也不能指出漏洞产生于应用代码中的具体位置;白盒测试主要针对Web应用的源代码进行分析,定位源代码中可能出现的安全缺陷,优点是在开发生命周期的编码阶段就可以对其安全性进行检测,及早介入以降低损失和维护成本。同时,白盒测试可以指出漏洞在应用代码中的位置,但白盒测试并不真正运行应用代码,可能会出现漏报。

在实际测评工作中,可以采用黑盒测试与白盒测试相结合的方式,在开发生命周期的不同阶段对系统进行安全测试,降低漏洞产生的几率。具体的漏洞识别方法主要有以下4个方面。

(1)代码审查。代码审查是软件开发中常用的白盒测试手段,和品质保证(QA,Quality Assurance)测试相比,它更容易发现与架构及时序相关的问题。对 Web 应用程序代码进行审查时需要仔细检查的相关安全功能组件包括用户验证组件、会话管理组件、访问控制组件、输入输出确认组件、外部组件接口。Web应用程序可以在很多平台上进行开发,进行代码审查时需要审查的代码不尽相同,但在不同的平台上进行代码审查,通常都包括确定用户提交数据的方法、检查会话交互过程、检查潜在危险的API使用和检查平台安全配置这几个步骤。许多类型的Web应用漏洞在代码中都有相对一致的特征,这也意味着通过扫描和搜索代码就可以确定一个Web应用的大部分漏洞。如SQL注入漏洞通常存在于各种硬编码的字符串,与用户可终止的数据串联成最终执行语句;跨站脚本漏洞存在于用户收到的HTML代码中,部分是由用户可控制的数据构成的;路径遍历漏洞存在于用户可控制的输入,未经确认就被传送到文件系统API执行。

(2)数据流建模。数据流建模也是一种基于白盒测试的方法,需要Web应用的开发人员对Web系统可能产生的数据流从起点到终点进行全面、不遗漏的列举。通过梳理Web系统数据的来源盒走向,从Web系统的内部寻找可能造成危害的来源,也包括应用程序的运行是否简洁高效,是否可能存在导致系统意外崩溃的弱点等。

(3)边界分析。边界分析是针对各个安全域的边界进行的分析。由于不同安全域的重要程度不同,其所运用的安全策略也应该有所差异,此时边界安全就显得尤为重要。如位于Web应用的用户是否可以通过某些不应存在的通路访问本地局域网的数据,又如位于互联网层面的用户是否有跳过必要的认证(如登录)而对Web应用进行访问的可能。边界分析就是通过对Web应用中是否存在不合理的越界访问来定位一些典型的安全漏洞。

(4)渗透测试。相对于上述3种白盒测试方法,渗透测试完全从网络攻击者的角度,思考并尝试各种入侵Web应用系统的通道。渗透测试可以避免测试者陷入系统开发者固有的逻辑习惯和操作假设,其测试结果往往更为直观,因此对于Web应用的安全测评是非常重要的环节。常见的渗透测试方法包括针对 Web 应用认证机制的口令字典攻击和暴力破解、针对Web应用访问权限的权限提升、针对Web应用与后台数据库交互的SQL注入、针对文件上传、下载的路径遍历型漏洞等。

4、安全评估

漏洞的危害程度主要受 2 个方面因素影响,即漏洞利用可能性与漏洞造成的损失。如某个溢出漏洞,在当前环境下其利用过程极其困难或者说基本无法利用,那么这个漏洞就是危害程度较低,因为被利用的可能性很小。又如某公司把共享资料的用户名密码直接以明文形式显示于内网某Web站点上,这个漏洞被利用的可能性是很高的,任何位于局域网内的用户都可以获取该信息,而共享的资料为非机密性的学习类资料,则造成的损失较小,通过综合分析判定该漏洞的危害程度在可接受范围内。在真实的测评工作中,在识别漏洞以及安全评估时,需要紧密结合Web应用系统自身的安全需求和测评人员以往工作的经验。

5、解决方案制定

Web安全测评的最终产物是安全解决方案。安全解决方案是根据资产划分、信息收集、漏洞识别及安全评估等阶段的结果生成的一套有针对性的解决办法。Web安全解决方案的制定有两点原则:简洁性与可用性。对于某些大型的Web应用,可能稍有改动都会付出巨大的人力物力,这时需要测试者给出的解决方案是简单有效的,能在解决安全问题的基础上最大程度地压缩成本。如对于某个可导致命令执行的框架漏洞,整体的代码升级固然是根本的解决方案,但是如果漏洞只针对个别页面,则直接将其删除无疑是一种更加简洁易操作的解决方法。

另外,随着Web应用的快速发展,不能因安全解决方案的实施而牺牲了Web应用本身的可用性或性能。如某电子商务网站,出于安全考虑,在用户每次交易时都必须经过各种冗余复杂的验证流程,那么这种解决方案就是失败的。最终解决方案应在Web应用的易用性与安全之间找到一个平衡点,统筹兼顾,从设计上遵循高聚合,低耦合,易于扩展的原则。

(三)Web安全渗透测试

前面介绍了Web安全测评实施过程,其中,漏洞识别是最为关键的一个环节,下面重点介绍用于实现漏洞识别的主要技术手段——渗透测试,并按照典型的Web安全漏洞进行分类讲述。

1、SQL注入攻击测试

SQL注入是指在输入字符串中注入特殊构造的SQL指令,逃避应用程序检查,在数据库服务器上被当作正常SQL指令执行的攻击过程。这种攻击所造成的后果往往很大,一般整个数据库的信息都能被读取或篡改。通过SQL注入,攻击者甚至能够获得更多的包括管理员的权限。SQL注入也是目前Web应用中最为常见的安全漏洞。

SQL注入攻击一般分为4个过程:测试注入点、判断数据库、猜表及字段、猜字段值。如果对SQL注入类型进行划分,可将其分为数字型、字符型、搜索型,这3种类型的SQL注入原理相同,所不同的只是在进行SQL注入时,字符型、搜索型需要注意单引号的闭合问题。下面以数字型SQL注入为例来说明注入方法。

(1)测试注入点

假如现在要测试“http://www.xxx.com/showdetail.asp?id=49”这个 URL 地址是否存在SQL注入,本文在正常的URL后添加“and 1=1”和“and 1=2”。

如果存在注入,添加“and 1=1”不会影响正常的SQL语句执行,添加“and 1=2”则会影响正常的SQL语句执行。所以,如果添加“and 1=1”时,页面返回正常,而添加“and 1=2”时页面返回不正常,则说明该URL存在注入点。如果添加“and 1=1”“and 1=2”后页面返回都正常,说明网站对SQL注入进行了过滤,但依然显示了正常页面。如果添加“and 1=1”“and 1=2”后页面返回都不正常,说明网站也对SQL注入进行了过滤,这时网站通常会弹出一些提示。

(2)判断数据库

进行数据库判断不是必须的,但有时判断出数据库后,可以有针对性地进行攻击。通常利用数据库之间的SQL语法差异、系统表等来判断,如表1所示。

表1 常见数据库SQL语法与系统表

(3)猜表及字段

假如表存在,表的记录数应≥0,所以本文可以在正常的URL后添加“And(Select Count (*)from Admin)≥0”语句对数据库中是否存在Admin表进行猜测,如下所示。

 http://www.xxx.com/showdetail.asp?id=49 and (select count(*) from Admin)≥0

如返回页面与正常URL相同,表示附加条件成立,即表Admin存在;反之则不存在。

将上述 Count(*)替换成 Count(字段名),如下所示。

 http://www.xxx.com/showdetail.asp?id=49 and(select count(USERNAME)from Admin)≥0

如返回页面与正常URL相同,表示附加条件成立,即字段USERNAME存在;反之则不存在。

(4)猜字段值

进行字段值的猜测通常有3种方法:select、union select、ASCII码逐字猜解法。select方法通常在网站未对出错进行处理时使用,union select、ASCII码逐字猜解法具有一般性,此处不再赘述。

在确认Web应用存在SQL注入漏洞时,可以采用基于存储过程的注入过滤、基于参数化查询的注入过滤等方式,对Web应用代码进行修改,从而避免注入漏洞。另外,建议用以下2种附加的方法来加以防范。

一种是最小权限法。为了避免注入攻击对数据库造成的损害,可以把每个数据库用户的权限尽可能缩小,不要把DBA或管理员的权限赋予应用程序账户,仅赋予用户执行其操作必需的权限,不要赋予其任何不必要的权限,这对于降低SQL注入漏洞的危害性是非常重要的。

另一种是输入验证白名单法。输入验证能够在数据传递到SQL查询前就察觉到输入是否正确合法,采用白名单而不是黑名单则能在更大程度上保证数据的合法性。

2、跨站脚本(XSS)攻击测试

跨站脚本攻击是近年来使用较多的一种攻击方式。由于Web开发者对用户输入的数据过滤不充分,使攻击者可以向Web页面里嵌入恶意代码,当用户浏览Web页面时,用户浏览器展示整个HTML文档的过程中出现了不被预期的脚本指令并执行,用户浏览器被攻击者控制,这一控制用户浏览器的攻击称为XSS攻击。

XSS根据效果的不同可以分成三类:反射型XSS(也称非持久型XSS)、存储型XSS(也称持久型XSS)和文本对象模型(DOM,Document Object Model)XSS。

(1)反射型XSS

反射型XSS就是将用户提交的数据“反射”给浏览器。即攻击者往往需要诱使用户访问一个经过精心构造的恶意链接,才能攻击成功。

http://127.0.0.1/xss/xss1.php?param=26

上述示例即为反射型XSS,攻击者需要将以上URL发送给需要攻击的目标用户,当目标用户访问以上URL,浏览器才可解析执行。

(2)存储型XSS

存储型XSS是指用户提交给Web应用程序的数据被永久地保存在服务器的数据库、文件系统或其他地方,后续访问时就能显示到Web页面上。假设某一网站允许用户给其他用户留言,但事实上攻击者没有留言而是写入了一段代码,如图4所示,那么服务器将会存储这些信息,当其他用户单击攻击者伪造的留言所在的页面时,用户的浏览器就会执行攻击者刚才写入的代码,如图5所示。

图4 输入恶意代码

图5 XSS攻击成功

(3)DOM XSS

在下面的html页面中定义了一段Java Script,根据用户的输入,显示一段HTML代码,攻击者可以在输入时插入一段恶意脚本,最终展示时会执行恶意脚本。DOM XSS和上述2种跨站攻击的差别是,DOM XSS是纯页面脚本的输出,只有规范使用Java Script才可以防御。

DOM XSS演示

test dom xss

确认Web应用存在XSS漏洞时,可采取以下方法进行弥补。

1)验证输入

检查每个输入(包括用户输入、请求头、Cookie、数据库数据…)的有效性,至少应检查输入的类型和数据长度。如Web页面中有一个文本框用于接受用户输入的邮政编码,唯一有效的类型是数字(0~9),且长度应该是6,不能多也不能少。

2)HTML/XML页面输出规范

所有HTML和XML中输出的数据,应该作html escape转义;Java Script内容中输出的“用户可控数据”,应该作Java Script escape转义;对输出到富文本中的“用户可控数据”,应该作富文本安全过滤(允许用户输出HTML的情况);输出在URL中的数据,应该作URL安全输出;一些HTML标签的属性,如果接收“用户可控数据”,应该作安全检查;针对DOM跨站的解决方案,应参照Java Script安全编码规范进行编程;在给用户设置认证COOKIE时,应该加入HTTPONLY;在style内容中输出的“用户可控数据”,应该作CSS escape转义。

3)AJAX输出规范

XML输出“用户可控数据”时,应该对数据部分作HTML转义;json输出要先对变量内容中的“用户可控数据”单独作 html Escape,再对变量内容作一次 Java Script Escape;非XML输出(包括json、其他自定义数据格式),response包中的http头的content Type,必须为json,且用户可控数据作html Escape后才能输出。

3、业务逻辑漏洞测试

所有的Web业务应用都是通过一系列逻辑步骤实现各种复杂功能的。在代码编写阶段将业务应用分解成一些独立简单的逻辑步骤,按特定顺序执行这些步骤就可以完成相应的业务。在分解的过程中保证程序的安全性是很困难的,所以这些业务逻辑可能会存在各种各样的功能缺陷。

业务逻辑缺陷是由于程序设计者和开发者在程序设计和开发时做出的错误假设导致的。由于程序在设计时很难面面俱到,尤其当应用程序所要实现的功能较为复杂时,使应用程序逻辑缺陷是一种很常见的安全问题,如欺骗密码找回功能、顺序执行缺陷等。即使是最简单的Web应用程序,每个阶段都会执行大量的逻辑操作,这些逻辑操作代表着一个复杂的攻击面。业务逻辑漏洞是比较难以辨别的,因为这种漏洞没有容易辨别的特征签名,每一种逻辑漏洞似乎都是唯一的,无法使用通用的漏洞扫描器发现它们。

业务逻辑缺陷的本质就是设计者或开发者在思考问题过程中做出的特殊假设存在明显的或隐晦的错误,如开发者假设用户会按照一个特定的顺序执行每一个步骤,当攻击者不按这一特定顺序访问,而是跳过其中几个步骤或者调换逻辑步骤的执行顺序,就会进入一种完全出乎开发者意料的情况,导致严重的安全缺陷。

下面给出2个业务逻辑漏洞测试的典型案例。

(1)某网站后台无需登录就可以进入超级管理员用户界面

首先,使用搜索引擎搜索关键词“site: xxxx.com.cn intext:管理登录”找到网站后台登录界面,如图6所示。

图6 搜索登录界面

打开登录界面尝试登录,在没有用户名和口令的情况下无法进入后台管理界面。但是,如果直接使用关键词“site:xxxx.com.cn inurl:admin”搜索后台管理界面,很容易就找到了后台管理界面URL,如图7所示。

图7 搜索后台管理界面

单击搜索到的链接,就可以直接进入管理页面,得到了超级管理员权限。

(2)某网站逻辑漏洞导致可以无限刷红包

某网站的注册推广活动存在逻辑漏洞导致可以无限刷红包。该网站为了推广业务推出了邀请注册送红包活动,每一个注册用户都会有一个邀请链接,其他用户通过该链接注册成功之后,邀请人会收到一个红包。开发者为了杜绝虚假注册制定了特殊规则,在注册时需要绑定手机号,同一个手机号只能注册一次。测试流程如下。

首先,注册时填写真实的手机号提交,以便能收到短信验证码。在验证页面输入手机收到的短信验证码进行验证。验证的时候使用抓包工具截取提交的数据分组,将其中的手机号改为任意手机号,之后发送该数据分组完成注册,如图8所示。

图8 修改手机号后提交的数据分组

使用任意手机号绑定注册成功,并提示获取了新手红包。进入用户界面可以查看收到的所有红包,状态都是可以使用的,重复这一系列步骤可以无限领取红包。

4、拒绝服务攻击测试

拒绝服务(Do S,Denial of Service)攻击是让目标网络或目标主机停止提供正常服务的一种攻击形式。这种攻击形式通常是由网络协议、主机操作系统或某些应用程序自身的缺陷造成的,由于这种攻击形式实施简单且追踪困难,攻击者常常出于商业目的而实施此类攻击,如攻击竞争对手的网游主机、媒体服务器或电子交易平台。

常见的拒绝服务攻击方式有SYN Flood、UDP洪水攻击、Ping洪流攻击、Teardrop攻击、Land攻击、Smurf攻击、Fraggle攻击等。

(1)SYN Flood

SYN Flood是最常见的一种攻击方式,这种方式利用了TCP协议的三次握手机制。在TCP连接的三次握手中,假设客户端向服务器发送了SYN分组后突然死机或掉线,那么服务器在发出SYN+ACK应答分组后会无法收到客户端的ACK分组,第三次握手也将无法完成。这种情况下服务器一般会再次发送SYN+ACK给客户端,并等待一段时间后丢弃这个未完成的连接,这个等待的时间称为SYN Timeout,一般是0.5~2 min。一个客户端出现异常导致服务器的一个线程等待这段时间并不是很大的问题,但如果恶意的攻击者大量模拟这种情况,服务器端将为了维护一个非常大的半连接列表而消耗非常多的资源。实际上,如果服务器的TCP/IP协议栈设计得不够健壮,最后的结果往往是堆栈溢出崩溃。即使服务器端足够健壮,服务器端也将忙于处理攻击者伪造的TCP连接请求而无暇理睬客户的正常请求。这时从正常客户的角度看来,服务器失去正常的响应。

(2)UDP洪水攻击

攻击者利用简单的TCP/IP服务,如Chargen和Echo来传送毫无用处的占满带宽的数据。通过伪造与某一主机Chargen服务之间的一次UDP连接,回复地址指向开着Echo服务的一台主机,这样就造成在2台主机之间存在很多无用的数据流,这些无用数据流将会导致带宽被耗尽。

(3)Ping洪流攻击

许多操作系统的TCP/IP协议栈都规定ICMP数据分组的大小为64 KB,且在对数据分组的首部进行读取之后,会根据该首部包含的信息来为有效载荷生成缓冲区。当产生畸形、声称自己超过64 KB上限的数据分组时,就会出现内存分配错误,导致TCP/IP堆栈崩溃。

在实际的攻击过程中,攻击者常采用分布式拒绝服务(DDoS,distributed denial of service)攻击的形式,以更快地达到让目标主机停止服务的目的。分布式拒绝服务攻击借助于远程控制技术,发动大量计算设备对一个或多个目标主机同时开展拒绝服务攻击,从而成倍地提高拒绝服务攻击的并发请求数量和带宽,以达到快速有效地使目标主机无法提供服务的目的。DDoS攻击是目前网络层面常见的攻击形式,近年来更是出现了以域名系统作为重点攻击目标、反射放大攻击逐渐增多、利用境外流量攻击境内目标大幅增加等发展趋势。

5、跨站请求伪造攻击测试

跨站请求伪造也被称为“one click attack”或“session riding”,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本(XSS),但它与XSS完全不同。XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。与XSS攻击相比,CSRF攻击往往不太流行和难以防范,所以被认为比XSS更具危险性。

CSRF是一种依赖Web浏览器、被混淆过的代理人攻击。CSRF的常见特性是依靠用户标识危害网站,利用网站对用户标识的信任,欺骗用户的浏览器发送HTTP请求给目标站点。由于CSRF攻击可以非法获取网站对合法用户的信任,因此经常被攻击者用于对金融系统(如网银系统)的攻击。

6、路径遍历及信息泄露测试

路径遍历漏洞的存在使攻击者可以通过专门设计的路径访问到网站根目录以外的文件,如网站的配置文件、系统关键文件。路径遍历漏洞一般出现在文件读取或展示图片功能这种需要通过参数提交文件名的模块。防范路径遍历漏洞的方法是处理好向文件系统传递过来的参数;合理设置文件和目录的访问权限。

信息泄露指的是攻击者利用Web应用返回的错误信息和公开信息,结合个人经验,获取对攻击Web应用有价值的信息。对网站来说,如果没有做好出错处理,将可能导致直接将网站后台数据库的一些信息暴露给攻击者。此外,也有一些公开途径可以了解关于网站的信息,如Whois查询,如图9所示。有些中小型的网站,通过浏览新闻发布者便可获知对网站具有一定权限的用户。

图9 Whois查询

7、服务器配置漏洞测试

服务器配置漏洞可能存在于Web应用的各个层次,如服务器操作系统、数据库管理系统、系统框架、应用代码中。开发人员需要和网络管理人员共同确保所有层次都合理配置,如是否缺少补丁、缺省用户是否存在、缺省口令是否修改、是否启用了不必要的服务等。

服务器配置漏洞往往使攻击者能够访问未被授权的系统数据和功能,有时甚至会导致整个系统被破坏。针对此类漏洞的防范工作主要是充分验证系统的安全配置,确保覆盖整个平台和系统,对所有组件都安装了最新的补丁,完善分析变更带来的安全影响,对所有安全配置进行记录,并使用自动化工具对系统进行验证。

三、移动支付与互联网金融安全测评案例

(一)集成电路与芯片安全测试案例

由于移动支付的应用环境范围扩大和日益复杂,对芯片的安全性有了更高的要求。目前针对芯片的各种专用攻击(测试)技术也在迅猛发展,按照其对芯片的破坏程度分类,可以分为非侵入式攻击、半侵入式攻击和侵入式攻击。

对芯片的攻击可以通过采集芯片运行过程中泄漏的功耗、电磁、时间等信息,获取芯片程序流程和敏感数据;可以使用激光、电磁、射线等,对其进行错误注入,利用错误输出和正确输出的对比,分析芯片内部的敏感数据;或通过背面成像技术或激光束扫描技术,读取存储器数据;也可以通过修改内部电路、光学成像、探针测量和重新利用测试/开发模式等方式获取内部敏感数据。

集成电路与芯片的安全测试,即针对上述攻击方式的防护措施进行评估,以期提高芯片保护内部敏感数据的能力,为移动支付和互联网金融的数据安全提供有效保障。

1、测试内容

集成电路和芯片的安全测试内容包括密码算法的标准符合性、物理随机源产生随机数据的随机性、异常检测机制的有效性、存储器访问控制的有效性、剩余信息保护机制的有效性、存储PAMID区域的保护措施和权限控制、芯片正面和背面的防移除功能、芯片表面特征防护功能、传输系统对探测和修改的防护功能、逻辑模块防干扰和修改的功能、测试模式防重激活及测试功能防利用的功能、非易失性只读存储器/非易失性可编程存储器/易失性存储器防止物理读取功能、防止电源、电磁、激光、射线、外部时钟、I/O 接口操纵的功能、侧信道防护功能、过程中断防护功能、物理随机源自检功能等。

2、测试方法

(1)物理攻击

使用刻蚀或FIB技术通过移除或增加材料来存取或修改集成电路。可以通过增加或切断晶圆内部的连线获取内部信号或连接到集成电路内部。存储器也可以被物理读取,基于存储器技术读取或设置数据位数值,该攻击直接施加到集成电路并且理读取,基于存储器技术读取或设置数据位数值,该攻击直接施加到集成电路并且经常独立于嵌入式软件。最主要的影响有:获取安全数据,如密钥(通过提取内部信号);断开集成电路安全特性,使其他攻击更容易(如DPA、干扰);施加内部信号;使用未知信号执行一些攻击。

(2)传感器和过滤器攻击

该攻击包括避开不同类型的传感器或使其无效的各种方法。集成电路使用传感器检测环境条件,并且保护其远离那些可能威胁其正常操作的条件。传感器和过滤器可以通过以下方式被攻击:切断、改变行为方式、找到监控条件覆盖范围或监控时间上的缺口、滥用传感器等。

不同类型的传感器和过滤器包括电压(高电压或电压毛刺)、频率(高频或时钟毛刺)、温度、光(其他辐射)。主要影响是无法为芯片的正确操作提供外部条件的保证,这可能会导致存储器或寄存器目录被破坏、程序流程被改变、产生操作失败(如CPU、协处理器、随机数发生器)、改变操作模式或参数(如从用户模式到管理模式)、改变其他操作参数等。

(3)干扰攻击

干扰攻击通过操纵集成电路外部操作环境(通常是温度、电源和外部时钟)或在集成电路操作过程中在芯片的不同时间、不同位置施加外部信号源,从而改变集成电路的正常行为造成其执行错误。干扰攻击最典型的方式是制造出可以导致密钥导出或明文导出的错误,或避开状态校验,或改变程序流程使算法执行出错。具体的方法包括在读操作过程中改变读到的数据,虽然存储器中的数据没有改变,但数据到达目的地后被改变了,这样可以干扰数据或地址信息;改变随机数参数或数值,如使随机数发生器输出全“1”数据;改变程序流程,如跳过一条指令、使用一条指令替换另一条、反转测试、产生跳转、产生计算错误等。

(4)差分错误分析(DFA)

攻击者使用差分错误分析可以获取机密数据(如密钥),具体方法是将包含一个错误的运算和没有错误的运算进行比较。主要有非侵入和半侵入2种方法。该攻击首先寻找适当的单个或多个错误注入方法,然后执行算法操作,一次使用正确参数,一次使用错误参数,算法操作执行完后检索结果,找到一组合适的数据,并从中计算出密钥。在算法操作过程中通过施加特殊的物理条件,可以在计算结果中诱导出单个错误(如1 bit或1 byte),也可以使用其他技术定位攻击位置,如分析功耗等。

(5)简单功耗分析/差分功耗分析(SPA/DPA)

简单功耗分析/差分功耗分析主要用来攻击密码算法。SPA也可以作为其他攻击的基础,如可以探测对EEPROM的写操作。SPA可以作为时间攻击的一部分,或推断程序流中有条件跳转的分支。SPA可以为毛刺或激光攻击寻找合适的触发点,或为微探针攻击定位合适的时间窗口。DPA攻击不需要完全成功,只需要获取部分密钥,然后通过穷举方式获取剩余的密钥。

(6)高阶DPA

高阶DPA主要针对有布尔或算术掩盖防护的算法。高阶DPA需要攻击者可以在依赖于密钥部分的中间状态使用假定值,计算每一个评估对象的多次相关性。统计学分析可能会基于将不同时间测量的相同的侧信道信息对齐,或将同时存在于芯片运算过程中的不同信道(如功耗和电磁辐射)的侧信道信息对齐。

(7)电磁分析攻击

电磁分析攻击通过测量芯片操作时的电磁辐射,推断数据操作。和功耗分析类似,电磁分析攻击分为简单电磁分析攻击(SEMA)和差分电磁分析攻击(DEMA)。实验表明,通过电磁获取数据和通过功耗曲线获取数据不同,芯片即使具有能够抵御功耗分析的安全措施,也无法抵御电磁分析。电磁分析攻击的目标是恢复密钥或明文,或用于获取其他的机密数据,如PIN码、安全随机数等。

(8)利用测试特征的攻击

此类攻击的目标是进入芯片的测试模式,使用测试功能读出非易失存储器目录,提供其他攻击的基础,并通过其他攻击读取或破坏存储器目录。

(9)随机数发生器攻击

此类攻击的目标是实现对随机数发生器输出值的预测,包括过去输出的数据、将要输出的数据,或是强制其输出确定的随机数值,或使多个随机数发生器重复未知数据等。随机数发生器可以是真随机数发生器、伪随机数发生器或两者组合。

真随机数发生器的攻击方法包括:固定或短暂影响操作条件(电压、时钟、温度、光);非扩散性的利用信号泄露(外部电气接口的信号);电路的物理操纵(停止操作、外灌电压、修改或复制操作、切断信息源);录制内部信号(危害内部状态)。

伪随机数发生器的攻击方法包括:对输出状态转变和输出函数的直接攻击;通过测信道运算操作的状态转换进行间接攻击(外部接口泄露);操作执行路径攻击(修改结果);攻击种子;打破随机数发生器输出容量限制,使发生器重复输出或产生足以预测其数值的输出。

随机数发生器的测试程序也可能成为SPA/DFA的攻击目标,可以泄露随机数发生器的输出数据。对随机数发生器的成功攻击可以导致芯片依赖随机数的安全机制的破坏,软件应用也会被这种攻击间接影响。

(10)软件攻击

大部分情况下,软件攻击从源码分析开始。多数软件攻击针对评估对象出现的错误或漏洞。软件攻击技术主要包括编辑命令、直接协议攻击、中间操纵、重复操作、缓冲区溢出等。

3、测试案例

下面介绍一些针对典型芯片进行安全检测从而发现漏洞或缺陷的实际案例。

(1)英特尔x86系列CPU漏洞攻击案例

英特尔(Intel)公司生产的x86系列中央处理器(CPU)是目前世界上普遍采用的计算机主流芯片。2009年,一位波兰的计算机安全专家指出,在基于英特尔x86架构的CPU上存在一个硬件级别的安全漏洞,任何安全软件都对它无能为力。由于英特尔CPU的普及程度,使该漏洞成为当时最受关注的硬件安全隐患。该漏洞广泛存在于当前的英特尔CPU当中,攻击的目标是CPU的系统管理模式(SMM)的缓存区,通过此漏洞可以修改CPU寄存器内容。

早期x86 CPU一般具有3种主要的工作模式,即实地址模式、保护模式、虚拟8086模式。自从有了386 SL处理器开始,引入了SMM系统管理模式,该模式是区别于这3种模式之外、专门为系统设计人员提供高级管理能力的模式。SMM 系统管理模式拥有独立于操作系统的自由空间,通常主要用于固件更新或硬件调试,具有非常高的管理权限,正是由于这个原因,如果攻击代码在SMM空间中运行,几乎任何安全软件都对它无能为力,因为普通PC的操作系统甚至都无法读取SMM空间内的内容。

SMM系统管理模式作为可执行指令的单元,为实现执行所有I/O(输入输出接口)总线指令及可用系统指令的功能分配有缓存区。经分析检测,由于SMM系统管理模式与显卡可以共用同一段物理内存,这样就留下了一条可以利用的隐蔽通道,给予了外界利用缓存漏洞进行安全破坏的可乘之机。

针对该漏洞的攻击过程如图10所示,通过修改CPU缓存区数据,来改变CPU正常工作流程,从而跳转执行攻击代码。利用该漏洞可以对计算机系统植入恶意程序,实施远程入侵控制、侦查窃密、系统致瘫和恶意干扰等攻击。由于这是芯片级漏洞,利用该漏洞的恶意程序可以获得整个系统最高级别的控制权,能够摆脱安全软件甚至可信计算控制模块的监管保护,其危害程度要远远高于操作系统等软件漏洞的威胁。

图10 针对x86系列CPU的SMM模式攻击过程

(2)某金融IC卡芯片的简单能量分析(SPA)攻击检测案例

简单能量分析(SPA)是一种根据密码算法操作过程中数据与功耗之间的关系,从芯片运算过程中的功耗曲线获取密钥信息的攻击方法。此类攻击方法与攻击时刻、执行指令以及正在被处理的数据均密切相关,攻击者要想实现简单能量分析攻击,必须对密码算法原理、密码算法实现以及芯片的内部结构有比较深刻的理解。

2009年,在对某金融IC卡芯片的安全检测工作中,发现该款芯片没有进行冗余运算的安全设计以消除波形差异,通过简单能量分析攻击的检测方法获取了该芯片中的RSA私钥值。

首先,通过功耗分析平台的检测,发现该款IC卡芯片在实现CRT-RSA算法的过程中,功耗曲线图形具有显著的外部特征。从功耗曲线能量轨迹中可以清晰地分辨出CRT-RSA算法RSA私钥参与运算的过程分为4个阶段:参数预置、两轮模幂运算和最后的组合运算,尤其是两轮模幂运算最为明显,如图11所示。

图11 CRT-RSA功耗

然后,根据图形中的信息进行攻击定位。通过对获取波形的滤波等操作,消除了大部分的噪声干扰。可以从两轮模幂运算的轨迹中清晰地读取CRT-RSA的私钥因子dp和dq值,如图12所示。

图12 CRT-RSA功耗放大局部

逆序读取:1001 0010||1100 0010||0110 1000 …

转化为十六进制: 49 || 43 || 16 …

dp值:494316F439E52A8608105C6F39E838257C2064C70DC0…

从而可以推导出

dq值:C128380FA86C554EC0EFE76EDBC1DC2A0D2F86261F77…

进而破解得出私钥值(d)。通过这种简单能量分析,破解该金融IC卡中的私钥后,该卡即可被随意复制。

(3)某加密IC卡芯片的故障引入攻击检测案例

故障引入攻击是指攻击者在密码系统运行时导入故障,使其执行某些错误的操作导致产生错误的结果,利用错误结果进行数学分析,获取密码系统的关键信息、密钥的方法。故障引入攻击凭借其攻击范围广、能力强且计算量小等特点,已引起国内外信息安全领域的广泛关注。

2010年,在对某款IC卡加密芯片的检测过程中发现,由于此芯片未具备正确值验算或冗余计算等安全防护措施,通过激光引入故障进行攻击,诱使芯片输出错误的加密结果,可以进一步分析出私钥值。

首先,当芯片在进行CRT-RSA加密时,在芯片SRAM存储器模块单元位置注入激光,使芯片在计算Cp或Cq过程中发生了错误(Cp和Cq指CRT-RSA过程中加密结果的中间值),得到一个错误的中间值 C′p(Cp≠C′p),且Cq未出错。由于芯片安全保护机制未发现错误的Cp,并继续运算输出一个错误的加密结果C′=CRT(C′p,Cq),如图13所示。

图13 CRT-RSA故障攻击模型

然后,可通过如下公式,利用错误结果计算出RSA私钥关键因子q,其中,gcd为求最大公约数函数,n=pq为公钥的一部分。

q=gcd((C−C’ ), n)

通过RSA算法原理,由n=pq,可以导致系数n被分解,则得出私钥d。通过故障引入攻击破解该金融IC卡中的私钥后,该卡即可被随意复制。

(4)某非接触IC卡的接力攻击检测案例

攻击者利用非接触IC卡的接力攻击,可以在持卡人完全不知晓的情况下,瞬间“借用”持卡人的IC卡完成刷卡开门或消费等攻击。它利用了非接触卡的被动工作、与持有者没有个人识别密码(PIN码)认证以及由电磁激活并收发信息而不依赖物理接触的特性,攻击者通过在合法的卡和合法的读卡机之间构成一道双向的、隐蔽的“信息获取—传递(接力)—发射”的通道,而违背持卡人的意愿达成了卡的非法使用。

在对一款国内外广泛使用的非接触IC卡进行检测的案例中,如图14所示,授权用户甲配备乙地的非接触门禁IC卡。某一时间,甲携带该卡远离乙地门禁。攻击者A和B分别携带仿真卡和仿真读卡机具,一个在乙地门禁读卡器处,另一个靠近授权用户甲,利用仿真读卡机具趁机刷取甲身上的门禁卡信息,并通过无线信号及时传递给乙地的仿真卡,乙地门禁即可打开,门禁日志中是授权用户甲的开门记录,而此时甲根本一无所知。

图14 接力攻击场景

接力攻击的原理简单但效果显著,现有符合国际标准的非接触IC卡,无论是逻辑卡还是智能卡,都有被接力攻击的风险。在日益广泛的非接触IC卡支付、认证应用的环境下,接力攻击越来越受到重视。目前,已有很多屏蔽非接触信号的安全“卡套”诞生,从一定程度上降低了非接触IC卡被接力攻击的风险。

(5)MIFARE CLASSIC卡密钥泄露安全检测案例

MIFARE CLASSIC卡具有密码认证和保密传输功能,作为业界认可的安全产品,销售量占世界同类产品市场85%的份额。MIFARE CLASSIC卡的非接触式通信协议已被作为非接触式逻辑加密IC卡的通信标准(ISO 14443-A)。在我国,MIFARE CLASSIC卡及仿制卡广泛用于政府、交通、能源、电力等关键行业和领域,党政军机关等重点保护场所的门禁系统也大量采用了MIFARE CLASSIC卡,部分行业和城市将MIFARE CLASSIC卡列入技术标准推广使用。

由于MIFARE CLASSIC卡加密算法存在密钥空间小(248 bit)、随机数发生器随机性差和明文暴露等多种漏洞,造成248 bit密钥破解工程量可以被分解成为220 bit的可穷尽量,在获得中间结果后即可逆推初始密钥。

2010年,通过对一款用于某政府部门身份认证的MIFARE CLASSIC卡进行检测,根据国际上公开的攻击方法,截取MIFARE CLASSIC卡与读卡器三轮认证过程中获取的10个分组(336 bit),如图15所示,用其中截取的分组(160 bit)进行算法分析,如图16所示。

图15 MIFARE CLASSIC卡三轮认证示意

图16 截取的160bit数据

通过卡标识号、卡随机数、读卡器随机数、乱数等数据信息,采用密码分析软件进行反向穷举破译,最终获取该MIFARE CLASSIC卡的密钥值。此漏洞最直接的被利用结果就是可以复制伪卡。

(二)金融IC卡、金融EMV标准

介绍国内外金融IC卡的发展历程及相关安全标准。

1、国际金融IC卡及EMV标准

1985年,法国出现了最早的金融IC卡。IC卡脱机支付的功能适应了欧洲当时通信成本高和通信质量差的状况,使IC卡在欧洲迅速发展。法国的BO卡、比利时的Proton卡、丹麦的Danmon卡和德国的Geld Karte卡等,均在欧洲市场得到广泛使用。

20世纪末,VISA和万事达为了在小额支付领域推广银行卡,各自推出了电子钱包应用产品――VISA Cash和Mondex,开启了对金融IC卡应用的探索。随着对小额支付应用技术以及IC卡的市场适用性和通用性的进一步探索,从21世纪初开始,各国际银行卡公司纷纷调整IC卡的发展重点,开始大力推广借记/贷记卡的IC化,并积极推动实施EMV迁移。

EMV标准是由国际三大银行卡组织Europay、Mastercard和Visa联合制定的金融集成电路(IC)卡的金融支付标准。EMV标准的建立目的是为金融IC卡、金融终端、支付系统以及金融机构建立一个统一的标准,使在此体系下所有的卡片和终端能够互通互用,并且该技术的采用将大大提高银行卡支付的安全性,减少欺诈行为。正式发布的第一个版本简称EMV96(V3.1.1)之后,随着市场需求不断更新其相应内容,分别发布了EMV2000(V4.0)、EMV2004(V4.1)、EMV2008(V4.2)等。EMV迁移是指按照EMV标准,在产业链的各个环节,如发卡、业务流程、安全控管、受理市场、信息转接等领域实施银行磁条卡向芯片卡技术的升级,把磁条银行卡改换成IC卡银行卡。IC卡的安全性更高,用它来替代磁条卡,可以有效地防范各种使用高科技手段的金融犯罪,确保持卡人和发卡行的利益。

EMV标准内容主要包括应用无关的IC卡与终端接口规范,安全和密钥管理,应用规范,持卡人、服务员和收单行接口需求四部分。

(1)应用无关的 IC 卡与终端接口规范

本规范描述了确保IC 卡和终端正确操作和应用无关的互操作性的最低功能需求。本规范包括两部分:第一部分是机电特性、逻辑接口和传输协议,定义了用于IC 卡和终端之间的信息交换的机电特性、逻辑接口和传输协议;第二部分是文件、命令和应用选择,定义了用于IC 卡和终端之间信息交换的数据元、文件和命令,同时还从IC卡和终端的角度分别定义了应用选择的过程。此过程所需的卡片数据和文件的逻辑结构以及使用卡片结构的终端逻辑亦在此部分描述。

(2)安全和密钥管理

本规范描述了为确保正确操作及互操作性对IC卡和终端的最低安全功能方面的要求。主要包括脱机静态数据认证、脱机动态数据认证、脱机PIN 加密、应用密文的生成和发卡行认证、安全分组、公钥管理的原则和策略、对终端的安全性及密钥管理的要求。此外,本部分还包括了为实现这些安全功能所涉及的安全机制和获准使用的加密算法的规范。

(3)应用规范

本规范定义了在国际通用环境中影响支付系统交易的终端和IC 卡操作过程。具体包括数据元和文件的映射、交易流程、异常处理、特定数据对象的编码、用于IC 卡和终端信息交换的数据元和命令的定义、金融交换的数据元及它们和数据对象的映射、文件的结构和引用、完成应用级功能的IC 卡和终端分组的结构和编码、芯片电子商务规范。

(4)持卡人、服务员和收单行接口需求

本规范描述了应用于终端特定操作环境中的特征和功能需求,定义了应用于工作在有人值守或无人值守的操作环境、具有联机或脱机能力、支持交易类型如购物、服务、取现等的所有终端。这里指的终端包括(但不仅限于)ATM、网点终端、无人值守的终端、电子收银机、个人计算机以及POS终端。本规范包括功能方面的要求、一般的物理特性、软件结构、持卡人的接口、收单行的接口。

2、国内金融IC卡及相关标准

国内金融IC卡的发展基本与国际金融IC卡同步,银联IC卡标准体系的发展也基本与国际金融IC卡标准同步。银联IC卡标准化伴随人民银行PBOC标准的发展历程,经历了3个时期的发展。

(1)金融IC卡应用起步阶段

第一阶段是PBOC 1.0应用阶段(2002年底之前)。1999年人民银行颁布《中国金融集成电路(IC)卡规范》(简称PBOC 1.0),以电子钱包银行卡为主打产品,拉开了我国金融IC卡发展序幕。但由于受理环境不成熟、磁条卡风险发生率不高、发卡系统集中度不高且改造困难等原因而没有取得大的发展。

(2)金融IC卡迁移准备阶段

第二阶段是IC卡迁移准备阶段(2003年~2010年),人民银行组织实施中国金融IC卡迁移,以应对国际上的EMV迁移。按照“先标准、后试点,先收单、后发卡,先外卡、后内卡”策略,银联和各家商业银行在人民银行领导下共同制定并发布了《中国金融集成电路(IC)卡规范2.0》(简称PBOC 2.0标准)。

银联依据PBOC 2.0标准要求对跨行转接清算系统进行适应性改造,转接清算及IC卡迁移相关基础工作建设基本完成。同时,在PBOC标准发布后,银联先后发布了14项补充技术标准或技术指南,为成员机构受理或发卡环境的升级改造提供了技术支持,便于国内发卡机构对PBOC 2.0的理解和使用。

2009年起银联响应中国人民银行的号召,率先开展了POS受理环境的改造工作,用两年左右的时间,全面完成了占有国内POS受理市场多半份额的直联POS机具和受理系统、转接系统的改造,使IC卡受理环境得到了本质的改善,也使我国银行卡网络标准化实现水平上了一个新台阶。目前,全国200多万台POS能够受理接触式IC卡,40多万台POS能受理非接触式IC卡,为发卡机构发行金融IC卡做好了准备。截至2011年6月底,国内银联标准IC卡发卡达1300多万张。

(3)金融IC卡全面迁移阶段

第三阶段是全面迁移阶段(2011年以后),2011年人民银行发布《关于推进金融IC卡应用工作的意见》,决定“十二五”期间全面推进金融IC卡应用,要求各商业银行进行全面的系统改造工作,最终全面支持金融IC卡的发行和使用,在2015年前普及芯片卡。

在此期间,人民银行组织制定了PBOC 3.0标准,以适应金融IC卡发展的需要。银联则在PBOC标准基础之上,结合金融IC卡市场发展过程中的各类需求,建立起银联IC卡企业标准体系,以更好地适应国内金融IC卡市场发展需要以及中国金融IC卡走向世界的需要。

中国银联的IC卡标准是对人民银行PBOC2.0金融IC卡标准的扩展和补充,主要由3个方面的标准构成,即中国银联IC卡应用规范、中国银联IC卡辅助规范和中国银联IC卡企业标准。

1)中国银联IC卡应用规范

第一部分为金融IC卡借记/贷记应用根CA公钥认证规范,主要对金融IC卡借记/贷记应用根CA公钥认证管理规则及安全策略方面的要求、技术要求和系统接口做了规定。本标准适用于金融IC卡借记/贷记应用根CA公钥认证的服务提供机构和服务接受机构,包括认证管理机构、接受认证服务的中国银联成员机构以及中国银联成员机构授权的代理机构。

第二部分为非接触式读写器接口规范,规定了与传统金融终端连接的外接式非接触金融IC卡读写器(以下简称读写器)的标准,其中,规定了读写器的性能要求、通信协议、接口等内容。本标准适用于金融终端的外接式非接触IC卡读写器,主要针对智能读卡器,适用于需要使用串口通信协议进行器件通信的非接触IC卡读写器生产厂商和终端生产厂商。

第三部分为非接触式IC卡通信协议执行规范,主要规定了建立非接触式通信所使用的符号字母表的编码技术,根据符号和符号序列定义了不同的逻辑值、数据帧格式、有效命令格式、初始化流程、查询和冲突检测流程、用来传送应用层信息的传输协议。

第四部分为非接触式IC卡支付规范,主要对非接触式IC卡应用在磁条非接触式支付应用(MSD)和快速借记/贷记非接触式支付应用(q PBOC)方面作出了相关要求和规定。使用对象主要是与金融非接触式IC卡应用相关的卡片设计、制造、管理、发行、受理以及应用系统的研制、开发、集成和维护等相关单位。

第五部分为基于借记/贷记应用的小额支付规范,规定了关于如何在借记/贷记卡上实现小额支付功能(即电子现金)的相关信息,并提供了电子现金的功能概述,包括卡片应用程序、终端功能与发卡行系统的示例等。使用对象主要是与金融借记/贷记IC卡应用相关的卡片设计、制造、管理、发行、受理以及应用系统的研制、开发、集成和维护等相关单位。

第六部分为非接触IC卡小额支付扩展应用规范,对基于非接触式小额支付的扩展应用作出了相关要求和规定,扩展应用主要应用于小额支付的一些特定支付场景,目前包括分段扣费和脱机预授权消费2种应用模式,未来会根据实际业务发展的需要对新的应用模式或类型进行补充。适用于开展快速借记/贷记非接触式支付应用(q PBOC)的地区、成员机构以及商户。

第七部分为动态口令应用规范,对基于《中国金融集成电路(IC)卡规范》的金融 IC卡借贷记应用的动态口令应用做出了相关要求和规定,包括应用原理、有关数据、动态口令生成和显示、发卡行验证证方式等,适用于开展互联网、电话等非面对面支付的地区、成员机构以及商户。

第八部分为数字证书应用规范,规定了数字证书应用卡片方面的内容,包括卡片的机电特性、逻辑接口和传输协议,数据元和命令及数字证书应用卡的安全机制。使用对象主要是与支持数字证书应用的金融IC卡相关的卡片设计、制造、管理、发行、受理以及应用系统的研制、开发、集成和维护等单位,也可以作为其他行业IC卡应用的参考。

第九部分为多用途互联网终端规范,描述了PBOC金融IC卡多用途互联网终端,在终端硬件需求、接口协议、命令集、个人化以及安全体系方面作出了相关要求和规定。使用对象主要是与金融IC卡应用相关的卡片设计、制造、管理、发行、受理以及应用系统的研制、开发、集成和维护等相关单位。

第十部分为基于借记/贷记应用的双币小额支付规范,主要描述了关于如何在PBOC借记/贷记卡上实现双币小额支付功能(以下简称双币电子现金)的相关信息。此外还提供了双币电子现金支付功能中各个组成部分的不同于单币电子现金功能的概述,包括卡应用程序、终端功能与发卡行系统等。本部分适用于准备发行银联双币电子现金的机构。

2)中国银联IC卡辅助规范

第一部分为借贷记应用个人化模板,本部分根据《中国金融集成电路(IC)卡规范》借记/贷记应用,以EMV为基础,给出卡片个人化参数模板,以确保卡片个人化后能与终端之间协同工作。

第二部分为借贷记应用发卡行实施指南,为发卡行实施PBOC迁移计划提供一个整体引导。本部分帮助发卡行改造其主系统和后台架构,以支持PBOC迁移,也包含协助发卡行选择卡片参数、个人化PBOC卡等信息。

第三部分为借贷记应用收单行实施指南,为收单行实施PBOC迁移计划提供一个整体引导。本部分帮助收单行改造其主系统和后台架构,以支持PBOC迁移,也包含协助收单行选择终端、支持商户等信息。

第四部分为借贷记应用发卡行安全指南,为发卡行实施PBOC迁移计划提供一个安全指南。

3)中国银联IC卡企业标准

随着IC卡在境内、外推广过程中经验的不断积累,金融IC卡应用与行业应用的逐步结合,IC卡在移动支付、互联网支付等业务中的扩展应用以及银联加入EMVCo进程的推进,银联对IC卡规范进行了完善和扩充。同时,将银联原IC卡企业标准进行了重新分类和整理。最终基础规范、辅助规范、产品规范三大部分。

基础规范主要从基础应用的角度,描述IC卡与终端交互的技术规范,包括借记/贷记应用、非接支付、小额支付等内容。基础规范主要来源于行标PBOC规范,为保证基础规范与其他规范更好的兼容,特意在银联IC卡技术规范中设置基础规范部分,从而形成完整的IC卡企业标准体系。

辅助规范主要从应用实现的角度,对IC卡规范的应用实施加以辅助解释说明,包括个人化模板、个人化指南、发卡行/收单行实施指南、发卡行安全指南、根CA公钥认证规范等内容。辅助规范主要来源于PBOC行标和原银联IC卡技术规范,并对部分内容进行了修订。

产品规范主要从市场需求、个性化产品的角度,对IC卡市场的创新产品进行规范,包括非接触IC卡小额支付扩展应用、IC卡动态口令应用、IC卡数字证书应用、IC卡多用途互联网终端、IC卡通用存储、可视IC卡产品、IC卡双币小额支付等内容。产品规范一部分来源于原银联IC卡技术规范;另一部分为新增产品规范内容。

(三)二维码及动态二维码安全风险

1、二维码及动态二维码

二维码与一维码同属于条形码家族,是一种可印刷的计算机语言,它利用不同的标记存储信息。它从20世纪80年代末开始出现,经过20年的推广应用,在传统行业的信息管理和信息交换领域发挥了巨大作用。

传统的一维码是由一组粗细不同、黑白相间的线条、空白所组成的标记,用以表示一定的信息。二维码与其相似,它是利用某种特定的几何图形按一定的分布规则在二维方向上排列的黑白相间的图形进行记录数据信息。二维码同一维条码一样,具有不同的码制标准,每种码制都有不同的编码规则。二维条码符号中的每个字符信息占一定宽度,具有特定的字符集、较强的校验纠错功能、信息识别功能及图像处理功能等。二维条码具有信息容量大、密度高、纠错能力强、安全性好、编码范围广的优点,同时还可以引入校验纠错码,具有检测错误和恢复删除错误的能力。二维码除了表示基本的英文、汉字、数字信息外,还可以存储声音、指纹、照片及图像等各种信息。二维条码技术大大降低了对计算机网络和数据库的依赖,依靠条码标签本身就可以起到数据信息存储及通信的作用,已经成为现代条码技术应用中的一门新兴技术。

按照结构、编码和读取方式的不同来分类,二维码可分为堆叠式二维码(又称行排式二维条码、堆积式二维条码或层排式二维条码)和矩阵式二维码(又称棋盘式二维条码)两大类。二维码可以被广泛应用于各个行业,如物流、生产制造、交通、安防、电子凭证、移动支付、食品溯源等。

动态二维码是在传统二维码的基础之上,采取动态图像的方式制作二维码,即将多幅二维码图像经过无损压缩后形成二维码动态图像,利用摄像式识读方法采集和识读动态二维码。动态二维码最典型的应用是物流行业,可以用动态二维码代替传统监管中的单证:包括提单、仓单、运单等。进出仓时,监管中心与承运人、存货人以及保管人各自进行数据交换,交易三方持有包含货物数量、规格、供应商、时间、位置以及随机验证码的动态二维码,当三方的动态二维码匹配成功后交易得以继续,否则交易不可以继续。

2、二维码支付的典型交易流程

二维码用于支付领域,其承载的信息主要是订单信息和账户信息2种。这里所说的承载信息的概念并非指条码中所保存字符串的字面意思,而是指经过服务器端的解码和映射后获取到的实际信息的含义。

根据业务处理流程的不同,基于二维码的支付业务包括付款扫码支付和收款扫码支付。一般情况下,使用订单类信息时对应的是付款扫码支付,即商户端展示包含订单信息的条码,付款方使用移动终端扫描该条码用于付款;而账户类既可以用于收款扫码模式也可以用于付款扫码模式,但其账户分别对应消费者的账户或者商户的账户。典型交易处理流程如下所示。

(1)付款扫码。此模式下,由付款人通过移动终端识读代表收款人的条码(订单或账户信息),并由付款人发出支付指令,实现付款交易。此交易中,订单条码由条码支付系统生成,流程如图17所示。交易流程中,商户系统请求条码支付系统生成条码,条码支付系统返回条码,商户系统展示条码。

图17 个人对商户付款流程示意

(2)收款扫码。此模式下,由商户扫描代表付款人的条码,并由商户发出支付指令,以完成收款业务。由商户方提交支付指令,付款人可在商户系统进行交易确认(也可通过移动终端确认),流程如图18所示。

图18 收款扫码流程示意

不同的支付场景的交易流程会存在一些差异。但通过分析可知,二维码用于支付领域时,本质是以二维码为信息载体,通过移动终端或商户终端直接或间接获取支付要素,并利用已有支付渠道完成交易的一种支付方式。它是将原需自动机具读取或手工输入的信息(包括账户信息和订单信息等),通过映射和加密等安全技术处理后编码到二维码中、然后把信息自动传递给相关终端设备。二维码只是一种信息传递的手段,用于提高在支付环节中数据展示和传递的效率。信息交换之后的业务流程仍采用目前已有的支付方案。

3、二维码支付的安全风险及防范措施

与目前支付领域广泛采用的NFC、芯片等数据传输方式相比,二维码只能用于单向数据传递,也相应增加了新的安全风险。依据支付的完整性、唯一性和不可抵赖性“三性原则”,对二维码相关的生成、下发、展示、读取4个环节进行安全风险分析,评估其风险点总结如表2所示。

表2 二维码支付的安全风险

针对各类安全风险,可采用金融领域成熟的技术防范措施,包括强化身份识别和访问控制、采用数据加密、传输链路保护、电子签名以及设置交易限额、加强商户管理等多项建议和措施等,如表3所示。

表3 针对二维码支付安全风险的技术防范措施

在做好技术防范的基础上,在支付流程中采用二维码技术还应从业务管理上进行规范,把握好使用便捷和交易及资金安全之间的平衡,建立相应的风险防控系统、制度及流程,监控并及时发现交易风险。

(四)USB Key安全风险及测评案例

1、USB Key原理及特点

USB Key是一种USB接口的硬件设备。它内置可信计算模块(或芯片,简称TCM),具备密码运算功能,有一定存储空间,可以存储用户的私钥以及数字证书。利用 USB Key内置的公钥算法可实现对用户身份的认证。由于用户私钥保存在US利用 USB Key内置的公钥算法可实现对用户身份的认证。由于用户私钥保存在USB Key的私有空间,保证了用户认证的安全性。

USB Key实质上是硬件(安全芯片)和软件(芯片操作系统)组成的安全产品。USB Key的操作系统标准和智能卡兼容,它的优势是通过USB接口进行通信,传输速度可以高达480 Mbit/s。另外,USB Key体积小,便于携带,不易磨损,支持即插即用;安全性高,运算能力强,安全芯片带有密码协处理器,能够进行多种密码算法的运算。USB Key具有独立的数据处理能力和良好的安全性,是用户数字证书和用户私钥存储的理想载体。用户的公私钥对在USB Key内产生,私钥是不能读取和复制的,其他用户不能得到用户私钥。

USB Key的特点包括以下4个方面。

(1)硬件PIN码保护

黑客需要同时取得用户的USB Key硬件以及用户的PIN码,才可以登录系统。即使用户的PIN码被泄露,只要用户持有的 USB Key不被盗取,合法用户的身份就不会被仿冒;如果用户的USB Key遗失,拾到者由于不知道用户PIN码,也无法仿冒合法用户的身份。

(2)安全的存储介质

USB Key的密钥存储于安全的介质之中,外部用户无法直接读取,对密钥文件的读写和修改都必须由USB Key内的程序调用。从USB Key接口的外面,没有任何一条命令能够对密钥区的内容进行读出、修改、更新和删除。

(3)使用公钥密码体制

公钥密码体制和数字证书从密码学的角度上保证了USB Key的安全性,在USB Key初始化的时候,先将密码算法程序烧制在 ROM 中,然后通过产生公私密钥对的程序生成一对公私密钥,公私密钥产生后,公钥可以导出到外部,而私钥则存储于密钥区,不允许外部访问。进行数字签名以及非对称解密运算时,有私钥参与的密码运算只在芯片内部完成,全过程中私钥可以不可导出介质,以此来保证以USB Key为存储介质的数字证书认证机制的安全性。

(4)硬件实现加密算法

USB Key内置CPU或智能卡芯片,可以实现数据摘要、数据加解密和签名等各种算法,加解密运算在USB Key内进行,保证了用户密钥不会出现在计算机内存中。

基于以上四点原因,使USB Key相比静态密码技术及动态密码技术,安全性更高,多用于网银系统交易转账、登录账户身份识别等领域。

2、USB Key的安全风险

USB Key存在的主要安全风险包括以下3个方面。

(1)个人识别密码(PIN码)存在被获取的风险,可导致攻击者获取USB Key的使用权限。

(2)私钥存在被获取、篡改的风险,可导致USB Key被随意复制。

(3)USB Key存在被黑客远程劫持的风险,使用户在不知情的情况下使用USB Key内私钥进行加解密计算,达到伪造签名的攻击目的。

3、USB Key安全检测案例

国内某安全产品设计公司生产的一款二代USB Key广泛应用于我国某大型银行中,该银行的网银用户量达到千万级别。2010年,经检测发现,该款二代USB Key的片内操作系统(COS)存在重大安全漏洞,在用户进行网银交易过程中,USB Key的物理按键可被恶意失效,存在被远程劫持攻击的安全风险。

二代USB Key相比于一代USB Key增加了屏幕显示和物理按键等功能,其目的是在假设PC机操作系统可被攻击的前提下,增加二代USB Key在使用过程中与用户的物理交互,确保USB Key内私钥的每一次签名均为用户授权使用,使USB Key不被黑客恶意远程劫持。该款二代USB Key的设计及实现存在逻辑安全漏洞,通过在交易过程中的数据分析,构造不符合正常交易流程的指令命令,在用户不知情的情况下,控制二代USB Key对虚假数据进行了屏幕不显示的签名操作,达到了可以远程劫持USB Key的攻击目的。

如图19所示,在用户将该USB Key与PC连接的情况下,可利用预先植入PC机的木马程序控制该USB Key,将构造好的虚假数据(如图19中步骤①所示:“转入账号:黑客转入金额:100万元人民币”)通过指令命令输入USB Key内,并获取USB Key的签名数据(如图中步骤②所示:2d3f…109e)。

同时,在PC客户端网页中,提供虚假转账申请(如图19中步骤③所示:“转入账号:黑客转入金额:100 万元人民币”)至银行服务器端,并上传已取得的签名数据(如图19中步骤②所示:2d3f…109e),使银行服务器误认为该USB Key用户的真实转账意图,最终可导致恶意转账成功(如图19步骤④所示)。

图19 某二代USB Key被远程劫持攻击检测案例

(五)OTP安全风险及测评案例

1、OTP原理及特点

OTP(One Time Password)又称为动态密码或一次性密码。使用一次以后就自动作废,下次进行身份验证的时候需要新的密码。动态密码和传统的静态密码配合使用,可以大大提高系统身份认证系统的安全。

OTP的原理是将共同密钥信息(作为计算动态密码的常量)和加密算法同时保存在认证服务器和动态密码令牌硬件内,再选择一个认证服务器和动态令牌都可以使用的变量(如动态密码生成次数或者当前时间或挑战码),计算动态密码。需要认证的时候,由动态令牌首先计算出动态密码,然后传输给认证服务器,认证服务器采用对应的信息计算出动态密码,通过比较这2个密码是否相同来判断输入的动态密码是否正确。

采用时间作为变量来计算动态密码而进行认证的技术称为时间同步认证技术,采用动态密码生成次数作为变量来计算动态密码而进行认证的技术称为事件同步认证技术,使用由认证服务器返回的数值作为变量来计算动态密码而进行认证的技术称为挑战/应答认证技术。

时间同步认证技术是把时间作为变动因子,一般以60 s作为变化单位。所谓“同步”是指用户动态密码令牌和认证服务器所产生的口令在时间上必须同步,否则,令牌产生的动态口令和认证服务器产生的动态口令不相同,服务器无法完成认证。在实际使用中,保持动态令牌和认证服务器的时间完全相同有一定的困难,所以通常允许存在一定的时间差异,如5 min。

事件同步认证技术是把已经生成动态口令的次数(即事件序列)作为动态口令令牌和认证服务器计算动态口令的一个运算因子,与令牌和认证服务器上的共同密钥产生动态口令。这里的同步是指每次认证时,认证服务器与令牌保持相同的事件序列。如果用户使用时,因操作失误多产生了几组口令出现不同步,服务器会自动同步到目前使用的口令,一旦一个口令被使用过后,在口令序列中所有这个口令之前的口令都会失效。其认证过程与时间同步认证相同。

挑战—应答方式的变动因子是由认证服务器产生的随机数字序列,作为令牌和认证服务器生成动态口令的变动因子。

动态密码技术用于身份认证,主要具有以下特点。

(1)动态性:动态口令令牌产生的口令随时间变化(针对时间同步技术的动态口令卡而言),不同时刻使用不同口令登录,每个口令都只在其产生的时间范围内有效。

(2)随机性:动态口令每次都是随机产生的,不可预测。

(3)一次性:每个动态口令使用过一次后,不能再连续重复使用。

(4)抗窃听性:由于动态性和一次性的特点,即使某一个动态口令被人偷看或窃听了,也无法再次使用。

(5)不可复制性:动态口令与口令卡是紧密相关的,不同的口令卡产生不同的动态口令。而且口令卡是密封的,卡内密钥数据一旦断电就会丢失。因此也就保证只有拥有口令卡的用户才能使用动态口令,其他用户无法获得,也无法共享。

(6)方便性:口令卡随身携带,动态口令显示在卡上或手机等设备上,无需再为记忆复杂、定期更改口令而烦恼。

(7)抗穷举攻击性:由于动态性的特点,如果一分钟内穷举不到,那么下一分钟就需要重新穷举,因此,新的动态口令可能就在已经穷举过的口令中。另外,还可以通过系统设置,限制1 min内用户登录尝试的次数,从而进一步降低穷举攻击的风险。

2、 OTP的安全风险

尽管具有上述技术特点,动态密码仍然存在一定的安全风险。

(1)个人识别密码(PIN码)缺失或保护不当,存在被攻击者窃取后非法使用的风险。

(2)在动态令牌设计和生产的环节中安全防护不当,动态令牌的种子密钥存在被窃取的风险。

(3)由于动态令牌无物理接口与网络连接,虽然避免了在网络上被黑客攻击,但无法与支付环境进行双向验证,因此存在被“钓鱼”的风险。

3、OTP安全检测案例

种子密钥在动态令牌的应用中,被运用于令牌应答值的计算、时间动态口令的计算、解锁码和激活码计算。可以说,种子密钥对动态令牌的安全性具有决定性作用。

之前,在针对某银行的一款“挑战—应答型”动态令牌的安全检测中,发现其存在种子密钥明文泄露的安全问题。由于该款令牌在设计生产环节中保护措施不够完善,利用专业设备对种子密钥的灌装过程进行监听,通过对监听数据分析后,可直接获取一批种子密钥的明文数据。具有一定渠道和专业技术的工作人员,可利用该漏洞获取大批量动态令牌的种子密钥,然后对发行的动态令牌随意复制。

四、结语

本文系统地介绍了安全测评工具、Web安全测评实施、移动支付与互联网金融安全测评案例,从多个角度对测评工具的使用、Web应用安全渗透测试、集成电路和芯片安全测试、二维码安全测评、USB Key安全测评、OTP安全测评等实际测评工作进行了详细阐述。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/966199.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

分布式微服务系统架构第91集:系统性能指标总结

加群联系作者vx:xiaoda0423 仓库地址:https://webvueblog.github.io/JavaPlusDoc/ 系统性能指标总结 系统性能指标包括哪些? 业务指标、资源指标、中间件指标、数据库指标、前端指标、稳定性指标、批量处理指标、可扩展性指标、可靠性指标。 …

【C语言标准库函数】指数与对数函数:exp(), log(), log10()

目录 一、头文件 二、函数简介 2.1. exp(double x) 2.2. log(double x) 2.3. log10(double x) 三、函数实现(概念性) 3.1. exp(double x) 的模拟实现 3.2. log(double x) 和 log10(double x) 的模拟实现 四、注意事项 4.1. exp(double x) 的注…

CSS Overflow 属性详解:控制内容溢出的利器

在前端开发中,处理内容溢出是一个常见的需求。CSS 提供了 overflow 属性,帮助我们控制当内容超出元素框时的显示方式。本文将详细介绍 overflow 属性的各种取值及其应用场景。 1. 什么是 overflow 属性? overflow 属性用于控制当元素的内容…

go语言中的接口

接口简介 现实生活中的接口 现实生活中手机、相机、U 盘都可以和电脑的 USB 接口建立连接。我们不需要关注 usb 卡槽大小是否一样,因为所有的 USB 接口都是按照统一的标准来设计的。 Golang 中的接口(interface) Golang 中的接口是一种抽象…

网络安全威胁框架与入侵分析模型概述

引言 “网络安全攻防的本质是人与人之间的对抗,每一次入侵背后都有一个实体(个人或组织)”。这一经典观点概括了网络攻防的深层本质。无论是APT(高级持续性威胁)攻击、零日漏洞利用,还是简单的钓鱼攻击&am…

Redis企业开发实战(三)——点评项目之优惠券秒杀

目录 一、全局唯一ID (一)概述 (二)全局ID生成器 (三)全局唯一ID生成策略 1. UUID (Universally Unique Identifier) 2. 雪花算法(Snowflake) 3. 数据库自增 4. Redis INCR/INCRBY 5.总结 (四)Redis实现全局唯一ID 1.工具类 2.测试类 3…

Verilog代码实例

Verilog语言学习! 文章目录 目录 文章目录 前言 一、基本逻辑门代码设计和仿真 1.1 反相器 1.2 与非门 1.3 四位与非门 二、组合逻辑代码设计和仿真 2.1 二选一逻辑 2.2 case语句实现多路选择逻辑 2.3 补码转换 2.4 7段数码管译码器 三、时序逻辑代码设计和仿真 3.1…

排序算法--基数排序

核心思想是按位排序(低位到高位)。适用于定长的整数或字符串,如例如:手机号、身份证号排序。按数据的每一位从低位到高位(或相反)依次排序,每次排序使用稳定的算法(如计数排序&#…

图形化界面MySQL(MySQL)(超级详细)

目录 1.官网地址 1.1在Linux直接点击NO thanks…? 1.2任何远端登录,再把jj数据库给授权 1.3建立新用户 优点和好处 示例代码(MySQL Workbench) 示例代码(phpMyAdmin) 总结 图形化界面 MySQL 工具大全及其功能…

C++ 使用CURL开源库实现Http/Https的get/post请求进行字串和文件传输

CURL开源库介绍 CURL 是一个功能强大的开源库,用于在各种平台上进行网络数据传输。它支持众多的网络协议,像 HTTP、HTTPS、FTP、SMTP 等,能让开发者方便地在程序里实现与远程服务器的通信。 CURL 可以在 Windows、Linux、macOS 等多种操作系…

mapbox进阶,添加绘图扩展插件,绘制圆形

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:mapbox 从入门到精通 文章目录 一、🍀前言1.1 ☘️mapboxgl.Map 地图对象1.2 ☘️mapboxgl.Map style属性1.3 ☘️MapboxDraw 绘图控件二、🍀添加绘图扩…

网络工程师 (24)数据封装与解封装

一、数据封装 数据封装是指将协议数据单元(PDU)封装在一组协议头和尾中的过程。在OSI 7层参考模型中,数据从应用层开始,逐层向下封装,直到物理层。每一层都会为其PDU添加相应的协议头和尾,以包含必要的通信…

OSPF基础(3):区域划分

OSPF的区域划分 1、区域产生背景 路由器在同一个区域中泛洪LSA。为了确保每台路由器都拥有对网络拓扑的一致认知,LSDB需要在区域内进行同步。OSPF域如果仅有一个区域,随着网络规模越来越大,OSPF路由器的数量越来越多,这将导致诸…

C++----继承

一、继承的基本概念 本质:代码复用类关系建模(是多态的基础) class Person { /*...*/ }; class Student : public Person { /*...*/ }; // public继承 派生类继承基类成员(数据方法),可以通过监视窗口检…

【DeepSeek】DeepSeek小模型蒸馏与本地部署深度解析DeepSeek小模型蒸馏与本地部署深度解析

一、引言与背景 在人工智能领域,大型语言模型(LLM)如DeepSeek以其卓越的自然语言理解和生成能力,推动了众多应用场景的发展。然而,大型模型的高昂计算和存储成本,以及潜在的数据隐私风险,限制了…

ZZNUOJ(C/C++)基础练习1081——1090(详解版)

目录 1081 : n个数求和 (多实例测试) C C 1082 : 敲7(多实例测试) C C 1083 : 数值统计(多实例测试) C C 1084 : 计算两点间的距离(多实例测试) C C 1085 : 求奇数的乘积(多实例测试…

axios 发起 post请求 json 需要传入数据格式

• 1. axios 发起 post请求 json 传入数据格式 • 2. axios get请求 1. axios 发起 post请求 json 传入数据格式 使用 axios 发起 POST 请求并以 JSON 格式传递数据是前端开发中常见的操作。 下面是一个简单的示例,展示如何使用 axios 向服务器发送包含 JSON 数…

硬盘接入电脑提示格式化?是什么原因?怎么解决?

有时候,当你将硬盘接入电脑时,看到系统弹出“使用驱动器中的光盘之前需要将其格式化”的提示,肯定会感到十分困惑和焦虑。这种情况不仅让人担心数据丢失,也可能影响正常使用。为什么硬盘会突然要求格式化?是硬盘出了问…

使用Python实现PDF与SVG相互转换

目录 使用工具 使用Python将SVG转换为PDF 使用Python将SVG添加到现有PDF中 使用Python将PDF转换为SVG 使用Python将PDF的特定页面转换为SVG SVG(可缩放矢量图形)和PDF(便携式文档格式)是两种常见且广泛使用的文件格式。SVG是…

【大数据技术】搭建完全分布式高可用大数据集群(Kafka)

搭建完全分布式高可用大数据集群(Kafka) kafka_2.13-3.9.0.tgz注:请在阅读本篇文章前,将以上资源下载下来。 写在前面 本文主要介绍搭建完全分布式高可用集群 Kafka 的详细步骤。 注意: 统一约定将软件安装包存放于虚拟机的/software目录下,软件安装至/opt目录下。 安…