零基础学Java项目开发
上QQ阅读APP看书,第一时间看更新

2.4 接口的安全控制策略

在设计开放平台接口过程中,往往会涉及与接口传输安全性相关的问题。本节对接口加密及签名等的相关知识做了总结,以期分享给读者作为参考。

2.4.1 安全评估

安全评估的基本概念有以下几点。

1.基本目标

安全评估与测试用以实现以下目标。

(1)衡量系统和能力开发进展。

(2)为协助在开发、生产、运营和维护系统性能过程中的风险管理提供相应的知识。

(3)专长就是对系统生命周期在开发过程中提供系统强度和弱点的初期认知。

(4)能够在部署系统前识别技术的操作和系统的缺陷,以便及时纠正行为。

(5)安全评估和测试包含广泛的现行和基于时间点的测试方法,用于确定脆弱性及其相关风险。

2.策略

评估和测试策略的内容包括获取/开发流程、提供的能力要求及技术驱动所需要的能力。

(1)审计需求:符合相关法律、法规的要求。

(2)合规:等级保护、分级保护。

(3)业务驱动:提升核心竞争力、减少开支和更快速地部署、应用新的应用功能。组织常更新外包服务商的监控流程及管理与外包的风险。

3.安全评估内容

(1)确定测试的范围:评估的网络范围是多少?

(2)是否需要查看用户的相关操作,如密码、文件和日志条目或用户行为。

(3)评估哪些信息的机密性、完整性和可用性。

(4)涉及哪些隐私问题。

(5)如何评估流程及评估到什么程度。

4.评估流程

评估流程如图2-1所示。

图2-1 评估流程

审计团队可以分为内部审计和外部审计。下面对内部审计和外部审计的优缺点进行依次介绍。

1)内部审计

优点:

(1)熟悉组织的内部运转。

(2)工作效率高。

(3)评估工作更加灵活,随时可开始工作。

(4)可实现持续改进的安全态势。

缺点:

(1)手段和技术受限。

(2)可能存在利益冲突,致使对有些问题不愿意进行披露。

2)外部审计

优点:

(1)经验丰富。

(2)不了解内部组织目标和政治,易于保持客观、中立的主场。

缺点:

(1)成本高。

(2)对系统不了解,需要花费时间去熟悉。

(3)仍然需要处理增加的资源来组织并监督其工作。

2.4.2 访问控制

访问控制就是将系统中的所有功能标识出来,并组织、托管起来,然后提供一个简单的、唯一的接口。这个接口的一端是应用系统,另一端是权限引擎。权限引擎主要是检测谁是否对某资源具有实施某个动作(计算)的权限,返回的结果有3种:有、没有、权限引擎异常。

访问控制是网络安全防范和保护的主要策略,主要任务是保证网络资源不被非法使用。也可以说,它是保证网络安全最重要的核心策略之一。其访问控制是指按用户身份及其所归属的某项定义组来限制用户对某些信息项的访问,或限制对某些控制功能使用的一种技术。

访问控制涉及以下3个基本概念。

(1)主体:主体是一个主动的实体,它包括用户、用户组、终端、主机或一个应用程序等。主体可以访问客体。

(2)客体:客体是一个被动的实体,对客体的访问要受控。它可以是一个字节、字段、记录、程序、文件,或者是一个处理器、存储器、网络节点等。

(3)访问授权:访问授权是指对主体访问客体的允许。访问授权对每一对主体和客体来说是给定的。例如,访问授权有读写、执行,读写客体是直接进行的,而执行是指搜索文件、执行文件等。用户的授权访问是由系统的安全策略决定的。

访问控制的常用技术控制手段及策略如下。

1)入网访问控制

(1)权限控制。

(2)属性安全控制。

(3)目录级安全控制。

(4)服务器安全控制。

2)访问控制策略

(1)自主访问控制。

(2)强制访问控制。

(3)基于角色的访问控制。

2.4.3 入侵检测

通过收集和分析网络行为、安全日志、审计数据,检查网络或系统中是否存在违反安全策略的行为和被攻击的迹象,这种操作称为入侵检测(Intrusion Detection)。入侵检测也是一种安全防护技术,它提供了对内部攻击、外部攻击和误操作的实时保护,提前拦截和响应入侵以保护网络系统不受伤害。入侵检测可以在不影响网络性能的情况下对网络进行监测,因此,入侵检测被认为是继防火墙之后的第二道安全之门。入侵检测通过执行以下任务来实现。

(1)监视、分析用户及系统活动。

(2)系统构造和弱点的审计。

(3)识别反映有攻击意向的活动模式并向相关人士报警。

(4)异常行为模式的统计分析。

(5)评估重要系统和数据文件的完整性。

(6)操作系统的审计跟踪管理,并识别用户违反安全策略的行为。

入侵检测联合防火墙一起帮助系统对付来自外部的网络攻击,扩展了系统管理员的安全管理能力(包括安全审计、监视、进攻识别和响应),提高了信息安全结构的完整性。入侵检测主要从计算机网络系统中的若干关键点收集并分析信息,查看网络中是否有违反安全策略的行为和遭到袭击的迹象。

入侵检测技术用于检测计算机网络中违反安全策略的行为,它是为保证计算机系统的安全而设计与配置的一种能够及时发现并报告系统中未授权或异常现象的技术。入侵检测技术依赖于入侵检测系统。入侵检测系统所采用的技术可分为特征检测和异常检测两种。

1.特征检测

特征检测(Signature-based Detection)可以将已有的入侵方法检查出来,但对新的入侵方法无能为力。特征检测系统的目标是检查主体活动是否符合某些模式,以及如何设计该模式既能够检测“入侵”现象又不会将正常的活动检测出来。

2.异常检测

异常检测(Anomaly Detection)是假设入侵者活动异常于正常主体的活动。根据这一假设建立主体应有的正常活动,将当前主体的活动状况与主体应有的正常活动相比较,当违反其统计规律时,认为该活动可能是“入侵”行为。

2.4.4 动态口令认证

动态口令认证系统是一种采用时间同步技术的系统,它采用了基于时间、事件和密钥3变量而产生的一次性密码来代替传统的静态密码。

每个动态密码卡都有唯一的密钥,该密钥同时存放在服务器端。每次认证时,动态密码卡与服务器分别根据同样的密钥、同样的随机参数(时间、事件)和同样的算法计算认证的动态密码,以确保密码的一致性,从而实现了用户的认证。因每次认证时的随机参数不同,所以每次产生的动态密码也不同。由于每次计算时参数的随机性保证了每次密码的不可预测性,从而在最基本的密码认证这一环节保证了系统的安全性。例如,解决因口令欺诈而导致的重大损失、防止恶意入侵者或人为破坏、解决由口令泄密导致的入侵问题等。

随着信息化进程的深入和计算机技术的发展,网络化已经成为企业信息化的发展大趋势。人们在享受信息化带来的众多好处的同时,网络安全问题已成为信息时代人类共同面临的挑战,应对网络信息安全问题已成为当务之急。为了解决这些安全问题,各种安全机制、策略和工具等纷纷被研究和应用。然而,即使在使用了现有的安全工具和机制的情况下,网络的安全仍然存在很大隐患。

这些安全隐患主要可以归结为以下几点。

(1)每一种安全机制都有一定的应用范围和应用环境。

(2)安全工具的使用受到人为因素的影响。

(3)系统的后门是传统安全工具难于考虑到的地方。

(4)黑客的攻击手段在不断地更新。

2.4.5 安全审计

信息安全审计主要是指对系统中与安全有关活动的相关信息进行识别、记录、存储和分析。信息安全审计的记录用于检查网络上发生了哪些与安全有关的活动,谁(用户)对这个活动负责。

安全审计(Security Audit)是一个新概念,它是指由专业审计人员根据有关的法律法规、财产所有者的委托和管理当局的授权,对计算机网络环境下的有关活动或行为进行系统的、独立的检查验证,并做出相应评价。安全审计是通过测试公司信息系统对一套确定标准的符合程度来评估其安全性的系统方法。

安全审计涉及4个基本要素:控制目标、安全漏洞、控制措施和控制测试。其中,控制目标是指企业根据具体的计算机应用,结合单位实际制定出的安全控制要求;安全漏洞是指系统的安全薄弱环节、容易被干扰或破坏的地方;控制措施是指企业为实现其安全控制目标所制定的安全控制技术、配置方法及各种规范制度;控制测试是指将企业的各种安全控制措施与预定的安全标准进行一致性比较,确定各项控制措施是否存在、是否得到执行、对漏洞的防范是否有效,以评价企业安全措施的可依赖程度。显然,安全审计作为一个专门的审计项目,要求审计人员必须具有较强的专业技术知识与技能。

2.4.6 防止恶意代码

恶意代码是一种程序,它通过把代码在不被察觉的情况下镶嵌到另一段程序中,从而达到破坏被感染计算机数据、运行具有入侵性或破坏性的程序、破坏被感染计算机数据的安全性和完整性的目的。

恶意代码的危害主要表现在以下几个方面。

(1)破坏数据:很多恶意代码发作时直接破坏计算机的重要数据,所利用的手段有格式化硬盘、改写文件分配表和目录区、删除重要文件或者用无意义的数据覆盖文件等。

(2)占用磁盘存储空间:引导型病毒的侵占方式通常是病毒程序本身占据磁盘引导扇区,被覆盖扇区的数据将永久性丢失、无法恢复。文件型的病毒利用一些DOS功能进行传染,检测出未用空间后把病毒的传染部分写进去,所以一般不会破坏原数据,但会非法侵占磁盘空间,文件会不同程度的加长。

(3)抢占系统资源:大部分恶意代码在动态下都是常驻内存的,必然抢占一部分系统资源,致使一部分软件不能运行。恶意代码总是修改一些有关的中断地址,在正常中断过程中加入病毒体,干扰系统运行。

(4)影响计算机运行速度:恶意代码不仅占用系统资源、覆盖存储空间,还会影响计算机运行速度。例如,恶意代码会监视计算机的工作状态,伺机传染激发;还有些恶意代码会为了保护自己,对磁盘上的恶意代码进行加密,致使CPU要多执行解密和加密进程,额外执行了上万条指令。

为了确保系统的安全与运行畅通,现已有多种恶意代码的防范技术,如恶意代码分析技术、误用检测技术、权限控制技术和完整性技术等。恶意代码分析是一个多步过程,它深入研究恶意软件结构和功能,有利于对抗措施的发展。按照分析过程中恶意代码的执行状态,可以把恶意代码分析技术分成静态分析技术和动态分析技术两大类。

1.静态分析技术

静态分析技术是指在不执行二进制程序的条件下,利用分析工具对恶意代码的静态特征和功能模块进行分析的技术。该技术不仅可以找到恶意代码的特征字符串、特征代码段等,而且可以得到恶意代码的功能模块和各个功能模块的流程图。由于恶意代码从本质上是由计算机指令构成的,因此根据分析过程是否考虑构成恶意代码的计算机指令语义,可以把静态分析技术分成以下两种。

(1)基于代码特征的分析技术。在基于代码特征的分析过程中,不考虑恶意代码的指令意义,而是分析指令的统计特性、代码的结构特性等。例如在某个特定的恶意代码中,这些静态数据会在程序的特定位置出现,并且不会随着程序复制副本而变化,所以完全可以使用这些静态数据和其出现的位置作为描述恶意代码的特征。当然有些恶意代码在设计过程中,考虑到信息暴露的问题而将静态数据进行拆分,甚至不使用静态数据,这种情况就只能通过语义分析或者动态跟踪分析得到具体信息了。

(2)基于代码语义的分析技术。基于代码语义的分析技术要求考虑构成恶意代码的指令含义,通过理解指令语义建立恶意代码的流程图和功能框图,进一步分析恶意代码的功能结构。因此,在该技术的分析过程中,首先使用反汇编工具对恶意代码执行体进行反汇编,然后通过理解恶意代码的反汇编程序了解恶意代码的功能。从理论上讲,通过这种技术可以得到恶意代码的所有功能特征。但是,基于语义的恶意代码分析技术主要还是依靠人工来完成。人工分析的过程中需要花费分析人员的大量时间,对分析人员本身的要求也很高。

采用静态分析技术来分析恶意代码最大的优势在于,可以避免恶意代码执行过程对分析系统的破坏。但是它本身存在以下两个缺陷。

(1)由于静态分析本身的局限性,导致出现问题的不可判定。

(2)绝大多数静态分析技术只能识别出已知的病毒或恶意代码,对多态变种和加壳病毒则无能为力。无法检测未知的恶意代码是静态分析技术的一大缺陷。

2.动态分析技术

动态分析技术是指在恶意代码执行的情况下,利用程序调试工具对恶意代码实施跟踪和观察,确定恶意代码的工作过程,对静态分析结果进行验证。根据分析过程中是否需要考虑恶意代码的语义特征,将动态分析技术分为以下两种。

(1)外部观察技术。外部观察技术是利用系统监视工具观察恶意代码运行过程中系统环境的变化,通过分析这些变化判断恶意代码功能的一种分析技术。

通过观察恶意代码运行过程中系统文件、系统配置和系统注册表的变化就可以分析恶意代码的自启动实现方法和进程隐藏方法:由于恶意代码作为一段程序在运行过程中通常会对系统造成一定的影响,所以有些恶意代码为了保证自己的自启动功能和进程隐藏的功能,通常会修改系统注册表和系统文件,或者会修改系统配置。

通过观察恶意代码运行过程中的网络活动情况可以了解恶意代码的网络功能。恶意代码通常会有一些比较特别的网络行为,例如:通过网络进行传播、繁殖和拒绝服务攻击等破坏活动;通过网络进行诈骗等犯罪活动;通过网络将搜集到的机密信息传递给恶意代码的控制者,或者在本地开启一些端口、服务等后门等待恶意代码控制者对受害主机的控制访问。

虽然通过观察恶意代码执行过程对系统的影响可以得到的信息有限,但是这种分析方法相对简单且效果明显,已经成为分析恶意代码的常用手段之一。

(2)跟踪调试技术。跟踪调试技术是通过跟踪恶意代码执行过程使用的系统函数和指令特征分析恶意代码功能的技术。在实际分析过程中,跟踪调试可以采用以下两种方法。

①单步跟踪恶意代码执行过程,即监视恶意代码的每一个执行步骤,在分析过程中也可以在适当的时候执行恶意代码的一个片段。这种分析方法可以全面监视恶意代码的执行过程,但是分析过程相当耗时。

②利用系统hook技术监视恶意代码执行过程中的系统调用和API使用状态来分析恶意代码的功能,这种方法经常用于恶意代码检测。

3.误用检测技术

误用检测也被称为基于特征字的检测。它是目前检测恶意代码最常用的技术,主要源于模式匹配的思想。其检测过程中根据恶意代码的执行状态又分为静态检测和动态检测。静态检测是指在脱机状态下对计算机上存储的所有代码进行扫描;动态检测则是指实时对到达计算机的所有数据进行检查扫描,并在程序运行过程中对内存中的代码进行扫描检测。

误用检测的实现过程为:①根据已知恶意代码的特征关键字建立一个恶意代码特征库;②对计算机程序代码进行扫描;③与特征库中的已知恶意代码关键字进行匹配比较,从而判断被扫描程序是否感染恶意代码。

4.权限控制技术

恶意代码要实现入侵、传播和破坏等,必须具备足够权限。首先,恶意代码只有被运行才能实现其恶意目的,所以恶意代码进入系统后必须具有运行权限。其次,被运行的恶意代码如果要修改、破坏其他文件,则它必须具有对该文件的写权限,否则会被系统禁止。另外,如果恶意代码要窃取其他文件信息,它也必须具有对该文件的读权限。

权限控制技术通过适当地控制计算机系统中程序的权限,使程序仅仅具有完成正常任务的最小权限。即使该程序中包含恶意代码,该恶意代码也不能或不能完全实现其恶意目的。

5.完整性技术

恶意代码感染、破坏其他目标系统的过程也是破坏这些目标完整性的过程。完整性技术就是通过保证系统资源(特别是系统中重要资源)的完整性不受破坏来阻止恶意代码对系统资源的感染和破坏。

校验和法是完整性控制技术对信息资源实现完整性保护的一种手段。它主要通过Hash值和循环冗余码来实现,即首先将为未被恶意代码感染的系统生成检测数据,然后周期性地使用校验方法检测文件的改变情况,只要文件内部有一个比特发生了变化,校验和值就会改变。运用校验和法检查恶意代码有3种方法。

(1)在恶意代码检测软件中设置校验和法。为检测的对象文件计算正常状态的校验和,并将其写入被查文件中或检测工具中,而后进行比较。

(2)在应用程序中嵌入校验和法。将文件正常状态的校验和写入文件本身中,每当应用程序启动时,比较现行校验和与原始校验和,实现应用程序的自我检测功能。

(3)将校验和程序常驻内存。每当应用程序开始运行时,自动比较检查应用程序内部或别的文件中预留保存的校验和。

校验和法能够检测未知恶意代码对目标文件的修改,但存在以下两个缺点。

(1)校验和法实际上不能检测目标文件是否被恶意代码感染,它只是查找文件的变化,而且即使发现文件发生了变化,既无法将恶意代码消除,又不能判断所感染的恶意代码类型。

(2)校验和法常被恶意代码通过多种手段欺骗,使检测失效,而误判断文件没有发生改变。

在恶意代码对抗与反对抗的发展过程中,还存在其他一些防御恶意代码的技术和方法。例如常用的有网络隔离技术和防火墙控制技术,以及基于生物免疫的病毒防范技术、基于移动代理的恶意代码检测技术等。

2.4.7 接口加密

加密主要分为对称加密和非对称加密,下面简单对它们进行介绍。

(1)对称加密:它的特点是文件加密和解密使用相同的密钥,即加密密钥也可以用作解密密钥。这种方法在密码学中称为对称加密算法,例如AES。

(2)非对称加密:它的特点是加密和解密使用的是不同的密钥,即公钥加密则私钥解密,私钥加密则公钥解密,例如RSA。

采取非对称加密的优缺点如下。

优点:相对于对称加密,非对称加密安全性远远高于对称加密,能够保证在数据传输中数据被劫持后不易被破解。

缺点:非对称加密的密钥为1024bit时最多只能加密117个字符,而且加解密相对于对称加密速度会慢。目前接口和App交互数据较多时,只能采取分段加密后再拼装的方式,解密时也需要分段解密,该加密方法不适合当前的使用场景。

签名、验签的加密方式:签名是指数据加密时加入数据的特性,根据算法进行计算;验签是指当数据解密时,根据相同的算法重新计算此数据的特性,计算后将其与加密时生成的唯一特性进行比较,如果相同,证明数据是正确的,没有损坏或篡改。

加密方式还可以采用非对称加密、对称加密和签名组合一起的方式,这是因为签名用于验证数据是否完整(不可少),而非对称加密对数据内容大小有限制且效率没有对称加密效率高,但是安全性高。应用该组合加密方式的具体流程是:对数据先进行对称加密,再进行签名,把数据加密的密钥进行非对称加密;在进行数据解密时,先进行非对称解密,还原出对数据加密的密钥,再用此密钥解密加密数据。