CN112632550A - 口令和密钥的应用安全的检测方法及其电子设备 - Google Patents
口令和密钥的应用安全的检测方法及其电子设备 Download PDFInfo
- Publication number
- CN112632550A CN112632550A CN202110242574.XA CN202110242574A CN112632550A CN 112632550 A CN112632550 A CN 112632550A CN 202110242574 A CN202110242574 A CN 202110242574A CN 112632550 A CN112632550 A CN 112632550A
- Authority
- CN
- China
- Prior art keywords
- misuse
- password
- detection method
- feature
- source code
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
- G06F21/563—Static detection by source code analysis
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
本公开提供一种口令和密钥的应用安全的检测方法及其电子设备。具体地,所述检测方法包括:获取目标源代码,并对所述目标源代码进行预处理,得到第一抽象语法树;根据所述第一抽象语法树,确定口令和密钥的应用特征集;获取误用特征库,将所述应用特征集和所述误用特征库进行匹配,确定所述目标源代码的口令和密钥的误用数据;获取预设应用安全分级模型,根据所述误用数据和所述应用安全分级模型,确定所述目标源代码中的口令和密钥的应用安全等级。本公开的技术方案,能够快速对目标源代码中存在的口令和密钥的安全问题进行评估,有助于帮助开发者进一步完善源代码的安全防护工作,从而提高网络空间中信息的安全性。
Description
技术领域
本公开涉及信息安全技术领域,尤其涉及一种口令和密钥的应用安全的检测方法及其电子设备。
背景技术
口令和密钥作为密码学的重要参数,对其进行安全防护是非常重要的。从用户的角度对口令和密钥进行安全管理的工具很多,例如,1 password是一款用于储存和管理个人密码的应用工具,帮助用户较为合理的管理自己在网络上和生活中的所有密码;又如,Linux中的crack lib可以检测用户的密码是否可靠,或者pw score工具可以对口令的强度进行打分,从而帮助用户判定自己设置的口令自身是否安全。目前,安全市场中从源代码的角度对口令和密钥在系统内部的安全运行和应用进行检测的工具较为少见,无法保障口令和密钥的安全性。
发明内容
有鉴于此,本公开的目的在于提出一种口令和密钥的应用安全的检测方法及其电子设备。
基于上述目的,第一方面,本公开提供了一种口令和密钥的应用安全的检测方法,所述检测方法包括:
获取目标源代码,并对所述目标源代码进行预处理,得到第一抽象语法树;
根据所述第一抽象语法树,确定口令和密钥的应用特征集;
获取误用特征库,将所述应用特征集和所述误用特征库进行匹配,确定所述目标源代码的口令和密钥的误用数据;其中,所述误用特征库基于多个口令和密钥误用的源代码,通过预设检测方法确定每一误用类型的误用特征构建得到;
获取预设应用安全分级模型,根据所述误用数据和所述应用安全分级模型,确定所述目标源代码中的口令和密钥的应用安全等级。
进一步地,将所述应用特征集和所述误用特征库进行匹配,确定所述目标源代码的口令和密钥的误用数据的步骤,具体包括:
将所述应用特征集中每一应用特征分别与所述误用特征库中的各误用特征进行匹配;
响应于所述应用特征和任一误用特征匹配成功,基于所述任一误用特征对应的误用类型,确定所述应用特征对应的误用类型;
根据所述应用特征集中每一应用特征的匹配结果,统计得到所述目标源代码的口令和密钥的误用数据。
进一步地,还包括构建所述误用特征库的步骤,具体包括:
获取多个包括口令和密钥误用的源代码,对每一包括口令和密钥误用的源代码分别执行以下步骤:
对所述包括口令和密钥误用的源代码进行预处理,得到第二抽象语法树;以及
基于预设检测方法,对所述第二抽象语法树进行检测,确定口令和密钥的误用类型和对应的误用特征。
进一步地,所述预设检测方法包括与不同误用类型分别匹配的多个子检测方法;
所述基于预设检测方法,对所述第二抽象语法树进行检测,确定口令和密钥的误用类型和对应的误用特征的步骤,具体包括:
利用所述多个子检测方法分别对所述第二抽象语法树进行检测;
响应于所述子检测方法确定所述第二抽象语法树存在口令和密钥的误用,则所述子检测方法对应的误用类型为所述口令和密钥的误用类型,所述第二抽象语法树中的相应特征为误用特征。
进一步地,所述误用类型包括口令和密钥的非安全保存、口令和密钥的内存泄露、非安全密码算法和密码协议、口令和密钥的强度违规、随机数可预测和测试用户。
进一步地,响应于所述误用类型为口令和密钥的非安全保存,确定相应子检测方法包括通过规则匹配检测硬编码;
响应于所述误用类型为口令和密钥的内存泄露,确定相应子检测方法包括检测内存泄露的漏洞信息;
响应于所述误用类型为非安全密码算法和密码协议,确定相应子检测方法包括通过关键字匹配查找不安全密码算法和不安全的密码协议;
响应于所述误用类型为口令和密钥的强度违规,确定相应子检测方法包括检测加盐操作和通过密码学知识分析密文数据中的至少一者;
响应于所述误用类型为随机数可预测,确定相应子检测方法包括检测不安全的随机数生成器;或
响应于所述误用类型为测试用户,确定相应子检测方法包括检测成对出现的用户名和口令、用户登录模块中鉴权数据流的长度和获取高级权限行为的用户中的至少一者。
进一步地,还包括构建预设应用安全分级模型的步骤,具体包括:
获取误用特征库和测试源代码;
对所述测试源代码进行预处理,得到第三抽象语法树;
利用所述误用特征库,通过误用特征匹配所述第三抽象语法树并得到相应的匹配数据;
对多个所述测试源代码的匹配数据进行统计分析,得到测试分析数据;
根据误用类型的危害程度和所述测试分析数据,确定应用安全分级模型。
进一步地,所述匹配数据包括潜在误用特征,还包括:
响应于所述误用特征的部分字段匹配成功,确定所述第三抽象语法树对应的特征为潜在误用特征;
响应于所述潜在误用特征为新误用特征或响应于所述潜在误用特征对应新误用类型,则根据所述新误用特征或所述新误用类型,分别更新所述误用特征库。
进一步地,响应于外部提供新误用类型或者所述匹配数据对应新误用类型,更新所述误用特征库的步骤,具体包括:
获取所述新误用类型对应的新子检测方法;
根据所述新子检测方法对第四抽象语法树进行检测;其中,所述第四抽象语法树根据源代码预处理得到;
响应于所述新子检测方法确定所述第四抽象语法树存在误用,则将所述新误用类型和所述第四抽象语法树中的相应特征更新至所述误用特征库。
第二方面,本公开还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如上述任意一所述的检测方法。
从上面所述可以看出,本公开提供的口令和密钥的应用安全的检测方法,利用误用特征库和预设应用安全分级模型对目标源代码的应用安全进行评价,能够快速对目标源代码中存在的口令和密钥的安全问题进行评估,有助于帮助开发者进一步完善源代码的安全防护工作,从而提高网络空间中信息的安全性。
附图说明
为了更清楚地说明本公开或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本公开实施例提供的一种口令和密钥的应用安全的检测方法的流程示意图;
图2为本公开实施例提供的确定目标源代码的口令和密钥的误用数据的流程示意图;
图3为本公开实施例提供的构建误用特征库的流程示意图;
图4为本公开实施例提供的构建预设应用安全分析模型的流程示意图;
图5为本公开实施例提供的电子设备的结构示意图。
具体实施方式
为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开进一步详细说明。
需要说明的是,除非另外定义,本公开实施例使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开实施例中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。
基于密码学原理的安全解决方案是网络空间安全研究的重要内容,能够为信息系统提供各种必要安全保障。近年来,对密码安全的研究很多,但大都是针对密码学算法和协议本身的安全性,强调密码学相关技术或是算法理论的安全,例如对SM4、高级加密标准(Advanced Encryption Standard,简称AES)等算法进行改进,对密码协议、密钥协商方案等协议的改进和优化等。
相关技术中较少地关注密码算法在实际应用中的安全问题,然而密码学发挥作用的前提便是需要满足它的安全假设,能否实现这些安全假设对于密码学技术的实现起到了关键性作用。特别是,作为密码学重要参数的口令和密钥,对密码学模块的实际安全防护效果起到了非常重要的作用,正确的保护和使用口令和密钥,确保能够正确、有效地实现密码算法功能,也是保证信息系统安全、网络安全非常重要的一步。然而,许多现实事例表明,在信息系统中完善地实施密码技术是很困难的。在现实系统中,实现密码理论上的安全假设,例如选用攻击者不能访问的密钥等要求在现实的场景是非常难以满足的,或者极容易被开发者忽略。
随着密码技术在网络空间安全的应用日渐深入和扩大,密码应用安全性也开始被重视起来。基于智能终端的不断发展和普及,Android平台占据了越来越多的研究资源,目前有一些基于Android APK的密码学安全应用的研究,缺少以源代码为基础对口令和密钥的应用安全进行的研究。
鉴于此,本公开提供一种针对源代码中的口令和密钥的应用安全的检测方法。请参阅图1,所述检测方法包括:
步骤101:获取目标源代码,并对所述目标源代码进行预处理,得到第一抽象语法树。
需要说明的是,本申请中的检测方法适用于多种源代码,例如手机端的源代码、PC端的源代码,这里不做具体限定。
通常,所述目标源代码是开源代码,也可以是非开源代码。应当理解的是,所述非开源代码可以由用户自行提供。
这里,抽象语法树(Abstract Syntax Tree,AST),或简称语法树(Syntax tree),是源代码语法结构的一种抽象表示。它以树状的形式表现编程语言的语法结构,树上的每个节点都表示源代码中的一种结构。
进一步地,所述预处理包括利用词法分析、语法分析等方法对目标源代码进行标准化和抽象表示。
其中,词法分析(Lexical analysis)是计算机科学中将字符序列转换为单词(Token)序列的过程。通常,进行词法分析的程序或者函数叫作词法分析器(Lexicalanalyzer,简称Lexer),也叫扫描器(Scanner)。词法分析器一般以函数的形式存在,供语法分析器调用。
其中,语法分析(Syntactic analysis,也叫parsing)是根据某种给定的形式文法对由单词序列构成的输入文本进行分析并确定其语法结构的一种过程。通常,所述语法分析可以通过语法分析器(parser)来实现。
需要说明的是,本公开中下述的第二抽象语法树、第三抽象语法树等通过类似的方式获得,后续不再赘述。
步骤102:根据所述第一抽象语法树,确定口令和密钥的应用特征集。
应当理解的是,所述应用特征集包括多个口令和密钥的应用特征,具体数量不做限定。
需要说明的是,基于密码学代码对应的语法特征,能够由所述第一抽象语法树中提取与口令和密钥相关的语法特征,形成口令和密钥的应用特征集。
这里,将第一抽象语法树简化为口令和密钥的应用特征集,能够有效减少后续特征比对的运算量,提高对目标源代码的检测效率。
示例性的,所述语法特征可以是密码算法特征、内存特征等,这里不做具体限定。
步骤103:获取误用特征库,将所述应用特征集和所述误用特征库进行匹配,确定所述目标源代码的口令和密钥的误用数据;其中,所述误用特征库基于多个口令和密钥误用的源代码,通过预设检测方法确定每一误用类型的误用特征构建得到。
这里,直接获取预先构建的误用特征特征库,使得所述应用特征集能够和误用特征库进行快速匹配,能够极大的提高检测效率。又由于误用特征库中的误用类型及其对应的误用特征丰富,能够确保检测结果的准确性,避免口令和密钥的非安全应用特征的漏检。
在一些可选的实施例中,所述误用特征库包括多个误用类型以及每一误用类型对应的至少一误用特征。应当理解的是,一误用类型可能具有多种表现形式,因此一误用类型可能对应多个误用特征。
示例性的,所述误用类型包括口令和密钥的非安全保存、口令和密钥的内存泄露、非安全密码算法和密码协议、口令和密钥的强度违规、随机数可预测和测试用户。
为便于理解,下面对上述的误用类型进行解释说明。
口令和密钥的非安全保存,通常,一旦密钥数据被攻击者掌握, 则密码理论方案的安全保障就形同虚设,因此需要保护密码应用系统的密钥数据、防止攻击者非授权访问,防止密钥泄露。硬编码的方式保存口令和密钥,将导致口令和密钥的非安全保存。由此,对于口令和密钥的非安全保存,对应的误用特征可以是硬编码数据。
口令和密钥的内存泄露,为了防止攻击者通过内存泄露获取口令、密钥或者相关信息,需要保证设计口令和密钥的内存操作安全合法,若口令和密钥存在内存泄露,则难以保证信息安全。对于口令和密钥的内存泄露,对应的误用特征可以是与内存泄露相关的漏洞特征。
非安全密码算法和密码协议,目前在 Internet 上运行的大量密码应用系统仍然在使用不安全的密码算法,如SHA-1、MD5和RC4等;以及不安全的密码协议,如SSL 3.0和TLS1.0等。由此,对于非安全密码算法和密码协议,对应的误用特征可以是以上列举的密码算法和密码协议对应的语法特征。
口令和密钥的强度违规,密钥长度需要达到相关安全标准,比如512 位DH 密钥交换、512 位 RSA 等均不符合安全标准。针对口令的彩虹表攻击,通常采用加盐的方式对口令进行增强。基于此,对应的误用特征可以是加盐操作对应的语法特征。
随机数可预测,多数密码理论方案均需要随机数,但是实际运行系统的随机数发生器被发现存在各种问题,导致攻击者可以预测或者部分预测随机数,进而导致攻击者可以通过预测随机数来攻击密码系统。通常,该问题是由一部分开发者使用不安全的随机数生成器或者不安全的库来完成密码学操作而引起。由此,对应的误用特征可以是不安全的随机数生成器或不安全的库对应的特征,具体特征这里不做限定。
测试用户,软件在测试时,开发人员可能会在源代码中保存一个特殊用户帮助测试软件功能。若在软件上市后该特殊用户未被删除,就会成为一个安全隐患。由此,对应的误用特征可以是存在测试用户的相关特征。
本领域技术人员能够理解的,以上误用类型仅是列举,而非对本公开实施例的限定。
步骤104:获取预设应用安全分级模型,根据所述误用数据和所述应用安全分级模型,确定所述目标源代码中的口令和密钥的应用安全等级。
这里,预设应用安全分级模型在考虑误用类型的危害程度以及在大量的源代码中误用的数量、成因、分布情况等最终构建得到,能够对口令和密钥的应用安全进行全面、系统的评估。
由上所述可见,本公开的技术方案,利用误用特征库和预设应用安全分级模型对目标源代码的应用安全进行评价,能够快速对目标源代码中存在的口令和密钥的安全问题进行全面整体的评估,有助于帮助开发者进一步完善源代码的安全防护工作,从而促进密码技术更有效地在网络空间中发挥安全作用。
编译前的源代码和编译后的APK包含的信息并不相同,因此相比于相关技术中针对Android平台的APK中存在的密码学误用问题进行检测,本公开针对源代码进行检测,可以帮助开发者从另一个角度对口令和密钥的安全应用进行分析,提早发现问题,也具有更广泛的应用的范围。
此外,相关技术中针对Android平台的APK进行检测主要是通过分析代码的数据流和控制流,然而在一些情况下误报率较高,例如良性的常量会影响到敏感常量数据的检测。本公开的技术方案利用抽象语法树直接获取口令和密钥的应用特征集,能够有效降低误报率。
在一些实施例中,请参阅图2,所述将所述应用特征集和所述误用特征库进行匹配,确定所述目标源代码的口令和密钥的误用数据的步骤,具体包括:
步骤201:将所述应用特征集中每一应用特征分别与所述误用特征库中的各误用特征进行匹配。
这里,如前所述,所述应用特征集包括多个应用特征。所述误用特征库中包括多个误用特征。
对每一应用特征分别进行匹配,能够保障对口令和密钥的应用特征进行全面的检测,提高检测的准确性和可靠性。
步骤202:响应于所述应用特征和任一误用特征匹配成功,基于所述任一误用特征对应的误用类型,确定所述应用特征对应的误用类型。
需要说明的是,若所述应用特征无法匹配任一误用特征,则可以认为所述应用特征属于安全的口令和密钥特征。
步骤203:根据所述应用特征集中每一应用特征的匹配结果,统计得到所述目标源代码的口令和密钥的误用数据。
可选地,所述误用数据包括误用数量,每一误用的类型及其对应的特征。
通过这样的技术方案,能够高效、简便的得到所述目标源代码的误用数据,便于后续对所述目标源代码的口令和密钥安全性能做出整体评价。
请参阅图3,在本公开的一些实施例中,还提供构建所述误用特征库的步骤,具体包括:获取多个包括口令和密钥误用的源代码,对每一包括口令和密钥误用的源代码分别执行以下步骤:
步骤301:对所述包括口令和密钥误用的源代码进行预处理,得到第二抽象语法树。
可选地,所述包括口令和密钥误用的源代码除来自已有的开源项目外,还可以通过人工的方式编写源代码的方式丰富源代码样本。这样的方式,有利于保障源代码的多样性和代表性。
步骤302:基于预设检测方法,对所述第二抽象语法树进行检测,确定口令和密钥的误用类型和对应的误用特征。
通过对多个包括口令和密钥误用的源代码分别执行步骤301和步骤302,能够得到包括但不限于前述列举的误用类型及其对应的误用特征,确保所述误用特征库的完整性、科学性。
需要说明的是,利用预设检测方法,直接对所述第二抽象语法树进行检测,能够对包括口令和密钥误用的源代码进行全面的检测,挖掘第二抽象语法树中存在的口令和密钥误用问题。
应当理解的是,这里对第二抽象语法树中的口令和密钥误用问题检测,可以指导前述根据第一抽象语法树确定口令和密钥的应用特征集的步骤,以使所述应用特征集包括全部口令和密钥的应用特征。
在一些实施例中,所述预设检测方法包括与不同误用类型分别匹配的多个子检测方法。
这里,所述预设检测方法基于密码理论的安全假设及误用类型而确定。
可选地,响应于所述误用类型为口令和密钥的非安全保存,确定相应子检测方法包括通过规则匹配检测硬编码。这里,源代码中的硬编码数据一般格式统一,因此通过规则匹配能够对其进行检测。
可选地,响应于所述误用类型为口令和密钥的内存泄露,确定相应子检测方法包括检测内存泄露的漏洞信息。进一步地,通过搜集内存泄露相关的漏洞信息,如通用缺陷枚举(Common Weakness Enumeration,简称CWE)等漏洞信息库,若在源代码中的加密操作中检测到相关漏洞,则可以判断其为口令密钥内存泄露。
可选地,响应于所述误用类型为非安全密码算法和密码协议,确定相应子检测方法包括通过关键字匹配查找不安全密码算法和不安全的密码协议。通常,对于某一密码算法和密码协议,具有特定的关键字,因此通过关键字匹配能够对该问题进行有效检测分析。
可选地,响应于所述误用类型为口令和密钥的强度违规,确定相应子检测方法包括检测加盐操作和通过密码学知识分析密文数据中的至少一者。
可选地,响应于所述误用类型为随机数可预测,确定相应子检测方法包括检测不安全的随机数生成器。本领域技术人员能够理解的,不安全的随机数生成器的特征即为误用特征。
可选地,响应于所述误用类型为测试用户,确定相应子检测方法包括检测成对出现的用户名和口令、用户登录模块中鉴权数据流的长度和获取高级权限行为的用户中的至少一者。其中,用户登录模块中鉴权数据流的长度过短,则表明存在测试用户,相应的特征可以作为误用特征。
本公开的实施例较为全面总结了口令和密钥在安全应用方面的问题,并提出了诸如测试用户等新安全问题并提出了相应的检测方法,能够构建全面、科学的误差特征库,为后续对目标源代码进行快速检测提供依据。
进一步地,所述基于预设检测方法,对所述第二抽象语法树进行检测,确定口令和密钥的误用类型和对应的误用特征的步骤,具体包括:
利用所述多个子检测方法分别对所述第二抽象语法树进行检测;
响应于所述子检测方法确定所述第二抽象语法树存在口令和密钥的误用,则所述子检测方法对应的误用类型为所述口令和密钥的误用类型,所述第二抽象语法树中的相应特征为误用特征。
这里,响应于所述子检测方法在所述第二抽象语法树检测到对应的特征,则确认所述第二抽象语法树存在口令和密钥的误用。
请参阅图4,在本公开的一些实施例中,还提供构建预设应用安全分级模型的方法,具体包括:
步骤401:获取误用特征库和测试源代码;
这里,所述测试源代码的来源包括但不限于已有的代码库、从互联网爬取的代码或者在用户使用检测方法时上传的代码等。
步骤402:对所述测试源代码进行预处理,得到第三抽象语法树。
步骤403:利用所述误用特征库,通过误用特征匹配所述第三抽象语法树得到匹配数据。
这里,结合前述,误用特征库包括不同误用类型,每一误用类型包括至少一误用特征。进一步地,每一误用特征包括至少一字段。相应的,所述匹配数据包括每一误用特征的匹配结果。
应当理解的是,若所述误用特征的每一字段均匹配成功,则表明存在误用。若所述误用特征的部分字段匹配成功,则所述第三抽象语法树对应的特征为潜在误用特征。
作为一个可替代的实施方案,步骤403还可以包括:根据第三抽象语法树,确定相应的口令和密钥的应用特征集,此时匹配对象为与第三抽象语法树对应的口令和密钥的应用特征集。
应当理解的是,第三抽象语法树和其对应的应用特征集均包括口令和密钥的应用特征,检测任一者均能够获得匹配数据。
步骤404:对多个所述测试源代码的匹配数据进行统计分析,得到测试分析数据。
需要说明的是,这里统计分析的重点是匹配数据中涉及误用的数据和潜在误用的数据。
可选地,通过数量、成因、分布情况等方面对所述匹配数据进行分析。
步骤405:根据误用类型的危害程度和所述测试分析数据,确定应用安全分级模型。
示例性的,若误用类型危害严重,例如口令和密钥的内存泄露,则其在应用安全分级模型中的比重高;反之,其在应用安全分级模型中的比重低。
示例性的,测试分析数据表明某一误用类型数量大且在各种测试源代码中广泛分布,攻击者容易将其作为攻击重点。此时,即便该误用类型的自身危害程度较弱,但由于被重点攻击,也可以在应用安全分级模型中赋予较大的比重。
需要说明的是,本领域技术人员可以灵活设置误用类型的危害程度和测试分析数据与应用安全等级的划分的对应关系,这里不做具体限定。
由此可见,本公开的实施例基于对大量测试源代码检测口令和密钥误用的各种情形,对这些检测结果进行数据分析,能够发现口令和密钥在应用过程中的各种问题,例如误用的成因、误用问题的数量、开发者在使用密码学相关知识的时候有哪些常见的错误。通过分析结果,能够发现目前开发者在密码学应用方面的整体情况,有助于把握当前的安全防护态势,为后续的目标源代码检测提供依据,便于开发者有针对性的改进目标源代码。
在所述匹配数据进行分析的过程,可能会发现潜在误用特征。为完善丰富误用特征库,在一些实施例中,还包括以下步骤:
响应于所述误用特征的部分字段匹配成功,确定所述第三抽象语法树对应的特征为潜在误用特征;以及
响应于所述潜在误用特征为新误用特征或响应于所述潜在误用特征对应新误用类型,则根据所述新误用特征或所述新误用类型,分别更新所述误用特征库。
需要说明的是,若所述潜在误用特征对应的误用类型属于误用特征库中已有误用类型,则所述潜在误用特征为新误用特征,例如新的不安全密码算法;若所述潜在误用特征对应的误用类型不属于误用特征库中已有误用类型,则该对应的误用类型属于新误用类型,。
这样的技术方案,能够实现误用特征库的持续更新、完善。
在一些实施例中,在匹配数据包括新误用类型时或者外部提供新误用类型时,更新所述误用特征库的步骤,具体包括:
获取所述新误用类型对应的新子检测方法。
需要说明的是,这里新误用类型可以来源于匹配数据,也可以通过对网络动态等进行调研、提取获得。通常,在误用特征库稳定之前,新误用类型和/或新误用特征主要来自匹配数据;在误用特征库稳定之后,新误用类型和/或新误用特征主要是基于新技术的发展而产生。
可选地,新子检测方法可以基于新误用类型由现有检测技术中匹配确定,例如,新误用类型是内存泄露,则匹配现有检测内存泄露的方法。当然,也可以基于新误用类型编写匹配的检测方法,这里不做限定。
根据所述新子检测方法对第四抽象语法树进行检测;其中,所述第四抽象语法树根据源代码预处理得到。
这里,源代码可以是测试源代码,可以是明确包括口令和密钥误用的源代码,也可以是根据新误用类型编写的具有该误用的源代码。
响应于所述新子检测方法确定所述第四抽象语法树存在误用,则将所述新误用类型和所述第四抽象语法树中的相应特征更新至所述误用特征库。
由上所述可见,通过这样的技术方案,能够确保将新误用类型以及对应的完整的误用特征更新至所述误用特征库,以确保误用特征库的完整、全面。
可选地,在匹配数据包括新误用特征时,根据所述新误用特征确定对应的误用类型,将新误用特征添加至所述误用特征库对应的误用类型中即可,不再赘述。
需要说明的是,本公开实施例的方法可以由单个设备执行,例如一台计算机或服务器等。本实施例的方法也可以应用于分布式场景下,由多台设备相互配合来完成。在这种分布式场景的情况下,这多台设备中的一台设备可以只执行本公开实施例的方法中的某一个或多个步骤,这多台设备相互之间会进行交互以完成所述的方法。
需要说明的是,上述对本公开的一些实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于上述实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
基于同一发明构思,与上述任意实施例方法相对应的,本公开还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上任意一实施例所述的口令和密钥的应用安全的检测方法。
图5示出了本实施例所提供的一种更为具体的电子设备硬件结构示意图, 该设备可以包括:处理器1010、存储器1020、输入/输出接口1030、通信接口1040和总线 1050。其中处理器1010、存储器1020、输入/输出接口1030和通信接口1040通过总线1050实现彼此之间在设备内部的通信连接。
处理器1010可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。
存储器1020可以采用ROM(Read Only Memory,只读存储器)、RAM(Random AccessMemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器1020可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1020中,并由处理器1010来调用执行。
输入/输出接口1030用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
通信接口1040用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。
总线1050包括一通路,在设备的各个组件(例如处理器1010、存储器1020、输入/输出接口1030和通信接口1040)之间传输信息。
需要说明的是,尽管上述设备仅示出了处理器1010、存储器1020、输入/输出接口1030、通信接口1040以及总线1050,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
上述实施例的电子设备用于实现前述任一实施例中相应的口令和密钥的应用安全的检测方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
基于同一发明构思,与上述任意实施例方法相对应的,本公开还提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行如上任一实施例所述的口令和密钥的应用安全的检测方法。
本实施例的计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
上述实施例的存储介质存储的计算机指令用于使所述计算机执行如上任一实施例所述的口令和密钥的应用安全的检测方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本公开的范围(包括权利要求)被限于这些例子;在本公开的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本公开实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。
另外,为简化说明和讨论,并且为了不会使本公开实施例难以理解,在所提供的附图中可以示出或可以不示出与集成电路(IC)芯片和其它部件的公知的电源/接地连接。此外,可以以框图的形式示出装置,以便避免使本公开实施例难以理解,并且这也考虑了以下事实,即关于这些框图装置的实施方式的细节是高度取决于将要实施本公开实施例的平台的(即,这些细节应当完全处于本领域技术人员的理解范围内)。在阐述了具体细节(例如,电路)以描述本公开的示例性实施例的情况下,对本领域技术人员来说显而易见的是,可以在没有这些具体细节的情况下或者这些具体细节有变化的情况下实施本公开实施例。因此,这些描述应被认为是说明性的而不是限制性的。
尽管已经结合了本公开的具体实施例对本公开进行了描述,但是根据前面的描述,这些实施例的很多替换、修改和变型对本领域普通技术人员来说将是显而易见的。例如,其它存储器架构(例如,动态RAM(DRAM))可以使用所讨论的实施例。
本公开实施例旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本公开实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本公开的保护范围之内。
Claims (10)
1.一种口令和密钥的应用安全的检测方法,所述检测方法包括:
获取目标源代码,并对所述目标源代码进行预处理,得到第一抽象语法树;
根据所述第一抽象语法树,确定口令和密钥的应用特征集;
获取误用特征库,将所述应用特征集和所述误用特征库进行匹配,确定所述目标源代码的口令和密钥的误用数据;其中,所述误用特征库基于多个口令和密钥误用的源代码,通过预设检测方法确定每一误用类型的误用特征构建得到;
获取预设应用安全分级模型,根据所述误用数据和所述应用安全分级模型,确定所述目标源代码中的口令和密钥的应用安全等级。
2.根据权利要求1所述的检测方法,其中,将所述应用特征集和所述误用特征库进行匹配,确定所述目标源代码的口令和密钥的误用数据的步骤,具体包括:
将所述应用特征集中每一应用特征分别与所述误用特征库中的各误用特征进行匹配;
响应于所述应用特征和任一误用特征匹配成功,基于所述任一误用特征对应的误用类型,确定所述应用特征对应的误用类型;
根据所述应用特征集中每一应用特征的匹配结果,统计得到所述目标源代码的口令和密钥的误用数据。
3.根据权利要求1所述的检测方法,其中,还包括构建所述误用特征库的步骤,具体包括:
获取多个包括口令和密钥误用的源代码,对每一包括口令和密钥误用的源代码分别执行以下步骤:
对所述包括口令和密钥误用的源代码进行预处理,得到第二抽象语法树;以及
基于预设检测方法,对所述第二抽象语法树进行检测,确定口令和密钥的误用类型和对应的误用特征。
4.根据权利要求3所述的检测方法,其中,所述预设检测方法包括与不同误用类型分别匹配的多个子检测方法;
所述基于预设检测方法,对所述第二抽象语法树进行检测,确定口令和密钥的误用类型和对应的误用特征的步骤,具体包括:
利用所述多个子检测方法分别对所述第二抽象语法树进行检测;
响应于所述子检测方法确定所述第二抽象语法树存在口令和密钥的误用,则所述子检测方法对应的误用类型为所述口令和密钥的误用类型,所述第二抽象语法树中的相应特征为误用特征。
5.根据权利要求1所述的检测方法,其中,所述误用类型包括口令和密钥的非安全保存、口令和密钥的内存泄露、非安全密码算法和密码协议、口令和密钥的强度违规、随机数可预测和测试用户。
6.根据权利要求5所述的检测方法,其中,响应于所述误用类型为口令和密钥的非安全保存,确定相应子检测方法包括通过规则匹配检测硬编码;
响应于所述误用类型为口令和密钥的内存泄露,确定相应子检测方法包括检测内存泄露的漏洞信息;
响应于所述误用类型为非安全密码算法和密码协议,确定相应子检测方法包括通过关键字匹配查找不安全密码算法和不安全的密码协议;
响应于所述误用类型为口令和密钥的强度违规,确定相应子检测方法包括检测加盐操作和通过密码学知识分析密文数据中的至少一者;
响应于所述误用类型为随机数可预测,确定相应子检测方法包括检测不安全的随机数生成器;或
响应于所述误用类型为测试用户,确定相应子检测方法包括检测成对出现的用户名和口令、用户登录模块中鉴权数据流的长度和获取高级权限行为的用户中的至少一者。
7.根据权利要求1所述的检测方法,其中,还包括构建预设应用安全分级模型的步骤,具体包括:
获取误用特征库和测试源代码;
对所述测试源代码进行预处理,得到第三抽象语法树;
利用所述误用特征库,通过误用特征匹配所述第三抽象语法树得到匹配数据;
对多个所述测试源代码的匹配数据进行统计分析,得到测试分析数据;
根据误用类型的危害程度和所述测试分析数据,确定应用安全分级模型。
8.根据权利要求7所述的检测方法,其中,还包括:
响应于所述误用特征的部分字段匹配成功,确定所述第三抽象语法树对应的特征为潜在误用特征;
响应于所述潜在误用特征为新误用特征或响应于所述潜在误用特征对应新误用类型,则根据所述新误用特征或所述新误用类型,分别更新所述误用特征库。
9.根据权利要求1或7所述的检测方法,其中,响应于外部提供新误用类型或者所述匹配数据对应新误用类型,更新所述误用特征库的步骤,具体包括:
获取所述新误用类型对应的新子检测方法;
根据所述新子检测方法对第四抽象语法树进行检测;其中,所述第四抽象语法树根据源代码预处理得到;
响应于所述新子检测方法确定所述第四抽象语法树存在误用,则将所述新误用类型和所述第四抽象语法树中的相应特征更新至所述误用特征库。
10.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至9任意一项所述的检测方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110242574.XA CN112632550B (zh) | 2021-03-05 | 2021-03-05 | 口令和密钥的应用安全的检测方法及其电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110242574.XA CN112632550B (zh) | 2021-03-05 | 2021-03-05 | 口令和密钥的应用安全的检测方法及其电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112632550A true CN112632550A (zh) | 2021-04-09 |
CN112632550B CN112632550B (zh) | 2021-06-29 |
Family
ID=75297711
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110242574.XA Active CN112632550B (zh) | 2021-03-05 | 2021-03-05 | 口令和密钥的应用安全的检测方法及其电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112632550B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115396885A (zh) * | 2022-08-26 | 2022-11-25 | 中国联合网络通信集团有限公司 | 一种密钥安全管理方法、装置、电子设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060265508A1 (en) * | 2005-05-02 | 2006-11-23 | Angel Franklin J | System for administering a multiplicity of namespaces containing state information and services |
CN109214179A (zh) * | 2017-06-30 | 2019-01-15 | 武汉斗鱼网络科技有限公司 | 一种程序模块安全检测方法及装置 |
CN109426722A (zh) * | 2017-09-01 | 2019-03-05 | 深圳市源伞新科技有限公司 | Sql注入缺陷检测方法、系统、设备及存储介质 |
CN112416787A (zh) * | 2020-11-27 | 2021-02-26 | 平安普惠企业管理有限公司 | 基于java的项目源码扫描分析方法、系统及存储介质 |
-
2021
- 2021-03-05 CN CN202110242574.XA patent/CN112632550B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060265508A1 (en) * | 2005-05-02 | 2006-11-23 | Angel Franklin J | System for administering a multiplicity of namespaces containing state information and services |
CN109214179A (zh) * | 2017-06-30 | 2019-01-15 | 武汉斗鱼网络科技有限公司 | 一种程序模块安全检测方法及装置 |
CN109426722A (zh) * | 2017-09-01 | 2019-03-05 | 深圳市源伞新科技有限公司 | Sql注入缺陷检测方法、系统、设备及存储介质 |
CN112416787A (zh) * | 2020-11-27 | 2021-02-26 | 平安普惠企业管理有限公司 | 基于java的项目源码扫描分析方法、系统及存储介质 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115396885A (zh) * | 2022-08-26 | 2022-11-25 | 中国联合网络通信集团有限公司 | 一种密钥安全管理方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112632550B (zh) | 2021-06-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Geneiatakis et al. | A Permission verification approach for android mobile applications | |
CN108628743B (zh) | 应用程序测试方法、装置、设备及存储介质 | |
JP5852676B2 (ja) | 権限昇格攻撃へのコンピュータ・ソフトウェア・アプリケーションの脆弱性を判定するための方法、コンピュータ・プログラム、およびシステム | |
Tang et al. | A novel hybrid method to analyze security vulnerabilities in android applications | |
Ma et al. | An empirical study of sms one-time password authentication in android apps | |
CN107077540B (zh) | 用于提供基于云的应用安全服务的方法和系统 | |
Cimitile et al. | Formal methods meet mobile code obfuscation identification of code reordering technique | |
Afrose et al. | CryptoAPI-Bench: A comprehensive benchmark on Java cryptographic API misuses | |
Afrose et al. | Evaluation of static vulnerability detection tools with Java cryptographic API benchmarks | |
Kanwal et al. | An app based on static analysis for android ransomware | |
Iadarola et al. | Formal methods for android banking malware analysis and detection | |
US8904543B2 (en) | Discovery of application vulnerabilities involving multiple execution flows | |
CN114065222A (zh) | 源代码风险分析方法、装置、电子设备及存储介质 | |
Yankson et al. | Security assessment for Zenbo robot using Drozer and mobSF frameworks | |
Bagheri et al. | Efficient, evolutionary security analysis of interacting android apps | |
CN112632550B (zh) | 口令和密钥的应用安全的检测方法及其电子设备 | |
Wu et al. | Detection of fake IoT app based on multidimensional similarity | |
KR101557455B1 (ko) | 응용 프로그램 코드 분석 장치 및 그것을 이용한 코드 분석 방법 | |
Liu et al. | Log-based control flow attestation for embedded devices | |
Maynard et al. | Modelling Duqu 2.0 Malware using Attack Trees with Sequential Conjunction. | |
Heid et al. | Android Data Storage Locations and What App Developers Do with It from a Security and Privacy Perspective. | |
CN115168861A (zh) | 数据安全验证方法、装置、设备及存储介质 | |
CN109165512A (zh) | 一种应用程序的意图协议url漏洞检测方法及装置 | |
Kalogranis | Antivirus software evasion: an evaluation of the av evasion tools | |
Ren et al. | DEMISTIFY: Identifying On-device Machine Learning Models Stealing and Reuse Vulnerabilities in Mobile Apps |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |