CN107251015A - 高效地检测用户证书 - Google Patents

高效地检测用户证书 Download PDF

Info

Publication number
CN107251015A
CN107251015A CN201580067200.1A CN201580067200A CN107251015A CN 107251015 A CN107251015 A CN 107251015A CN 201580067200 A CN201580067200 A CN 201580067200A CN 107251015 A CN107251015 A CN 107251015A
Authority
CN
China
Prior art keywords
certificate
byte
data block
data
blocks
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
Application number
CN201580067200.1A
Other languages
English (en)
Other versions
CN107251015B (zh
Inventor
V.马蒂
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Git Software Center Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Git Software Center Inc filed Critical Git Software Center Inc
Publication of CN107251015A publication Critical patent/CN107251015A/zh
Application granted granted Critical
Publication of CN107251015B publication Critical patent/CN107251015B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/45Structures or tools for the administration of authentication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/45Structures or tools for the administration of authentication
    • G06F21/46Structures or tools for the administration of authentication by designing passwords or checking the strength of passwords
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)

Abstract

用于检测用户证书的系统包括数据分块器、数据块存储、逐字节检查器、位计数器和证书检查器。数据分块器用于确定数据块。数据块存储用于存储数据块。逐字节检查器用于检查数据块中的每个字节包括适当值。位计数器用于:确定大于或等于阈值字节值的连续字节数;以及在连续字节数大于或等于阈值字节数的情况下,确定与连续字节数相对应的证书地址范围。证书检查器用于确定数据块存储中存储的与证书地址范围相对应的数据是否包括证书。

Description

高效地检测用户证书
背景技术
在线软件存储库托管软件开发者的代码。在线软件存储库协助项目共享、协作、版本控制等。软件开发者可以将其代码上传到软件存储库进行共享。代码可以存储在公共存储库、半公共存储库、私有存储库等中。一些软件包括用户证书(例如,用于针对服务对用户进行认证的证书)。用户证书通常采用十六进制数串的形式。不同服务的证书具有不同的区别特性(例如,长度、数字模式、已知数字等)。包括用户证书的代码应当仅被存储而不被公开共享。
附图说明
在下面的详细描述和附图中公开了本发明的各种实施例。
图1是示出网络系统的实施例的框图。
图2是示出服务器系统的实施例的框图。
图3是示出证书确定器的实施例的框图。
图4A是示出数据流的实施例的图示。
图4B是示出美国信息交换标准码(例如,ASCII)表的实施例的图示。
图5是示出用于检测证书的过程的实施例的流程图。
图6是示出用于数据分块器的过程的实施例的流程图。
图7是示出逐字节阈值化器的实施例的流程图。
图8是示出用于确定潜在证书符号的序列是否包括证书的过程的实施例的流程图。
图9A是示出数据流的实施例的图示。
图9B包括示出用于确定在最近N个数据块中是否存在大于或等于最小证书长度的潜在证书符号的序列的过程的实施例的流程图。
具体实施方式
本发明可以以多种方式实现,包括被实现为过程;装置;系统;组合物;体现在计算机可读存储介质上的计算机程序产品;和/或处理器(诸如被配置成执行在耦合到处理器的存储器上存储的和/或由耦合到处理器的存储器提供的指令的处理器)。在本说明书中,这些实现方式或本发明可采取的任何其它形式可以被称为技术。一般而言,所公开的过程的步骤的顺序可以在本发明的范围内更改。除非另有说明,否则诸如处理器或存储器之类被描述为被配置成执行任务的组件可以被实现为在给定时间处被临时地配置成执行所述任务的通用组件或者被制造为执行所述任务的特定组件。如本文所使用的,术语“处理器”指代被配置成处理诸如计算机程序指令之类的数据的一个或多个设备、电路和/或处理核心。
下面提供了本发明的一个或多个实施例的详细描述以及示出本发明的原理的附图。本发明是结合这些实施例来描述的,但是本发明不限于任何实施例。本发明的范围仅由权利要求限制,并且本发明涵盖许多替代、修改和等同物。为了提供对本发明的透彻理解,在下面的描述中阐述了许多具体细节。这些细节被提供用于示例的目的,并且可以根据权利要求在没有这些具体细节中的一些或全部的情况下实现本发明。出于清楚的目的,没有详细描述与本发明相关的技术领域中已知的技术材料,以使得本发明不会被不必要地模糊。
用于检测用户证书的系统包括用于接收数据的输入接口;用于确定数据块的数据分块器;用于存储数据块并响应于数据地址范围提供数据的数据块存储;用于检查数据块的每个字节包括适当值的逐字节检查器;位计数器,用于确定高于阈值的连续位数,并且在连续位数高于阈值位数的情况下确定与连续位数相对应的证书地址范围并将证书地址范围提供给数据块存储;以及证书检查器,用于从数据块存储接收与证书地址范围相对应的数据,并确定所述数据是否包括证书。
公开了一种用于高效地检测用户证书的系统。用于高效地检测用户证书的系统以嵌入方式在到在线软件存储库的数据输入处操作。随着代码被上传到在线软件存储库,在所述代码是去往存储库的公共部分的情况下,通过用于高效地检测用户证书的系统来扫描所述代码。在用于高效地检测用户证书的系统确定用户证书存在的情况下,系统防止证书被公开显示(例如,系统删除证书,指示用户用其它内容替换证书,将所述代码指定用于存储库的私有部分等)。用户证书通常符合易于识别的模式,并且因此可以使用简单的模式匹配算法(例如,正则表达式)来识别。然而,使用模式匹配算法处理输入到在线软件存储库的所有代码在计算上消耗过高。用于高效地检测用户证书的系统将针对用户证书分析所有传入代码的处理负荷至少降低到十分之一。上传到公共存储库的用户证书表示重大的安全威胁。在一些实施例中,证书的公开使得可能发生具有经济后果的证书滥用(例如,帐户的误计费)。
在一些实施例中,用于高效地检测用户证书的系统通过简化需要对输入流执行的处理来加快对用户证书的检测。不是在每个字节通过时对输入数据流执行模式匹配算法,而是系统利用用户证书通常采用长字母数字字符串(例如,20个或更多)(一不常出现的模式)的形式的事实。通过检查输入字节的值来区分字母数字和非字母数字字符,系统将每个字节减少到一个位。比用于识别证书的阈值更长的正位(positive bit)串(例如,指示字母数字字符)被隔离,并且然后使用检测证书的技术来分析对应的字符。在一些实施例中,通过使用并行处理器来执行阈值化任务来进一步改进性能。
在一些实施例中,用于高效地检测用户证书的系统使用输入接口接收传入代码以供处理。然后,系统使用数据分块器将传入代码分解成块。在一些实施例中,数据分块器将传入代码分解成固定大小(例如,16字节)的块。在一些实施例中,数据块的处理并行发生在块中的每个字节上(例如,使用单指令多数据——例如,SIMD——并行处理器),并且数据分块器将传入数据分解成适当大小的块以用于并行处理器。由数据块存储来存储数据块并由逐字节检查器处理数据块。在一些实施例中,逐字节检查器确定数据块的每个字节的值是否是适当值(例如,在ASCII值的范围内、合法证书值等),并且在它是适当值的情况下用位1来替换该字节,并在它不是适当值的情况下用位0来替换该字节。在一些实施例中,逐字节检查器包括并行处理器(例如,SIMD处理器)。由位计数器来处理由逐字节检查器输出的位。在一些实施例中,位计数器确定所检查的数据块中的连续的位1串的长度。在位计数器确定在检查的数据块中存在比阈值(例如,证书的最小长度)更长的连续的位1串的情况下,要分析对应的数据。位计数器确定相关联的数据(例如,在数据块存储中)的存储地址,并请求将原始数据提供给证书检查器。在一些实施例中,证书检查器从数据块存储接收数据并对它进行处理以确定它是否包括证书(例如,使用模式匹配算法、正则表达式、启发方法等)。
图1是示出网络系统的实施例的框图。在一些实施例中,图1的网络系统包括用于高效地检测用户证书的系统。在一些实施例中,图1的网络系统提供任何适当数量的软件开发者和版本控制服务器系统之间的通信。在所示的示例中,图1包括网络100。在各种实施例中,网络100包括以下中的一个或多个:局域网、广域网、有线网络、无线网络、互联网、内联网、存储区域网络或任何其它适当的通信网络。在所示示例中,开发者系统102和开发者系统104包括由软件开发者在开发软件时使用的系统。在各种实施例中,存在1个、6个、22个、122个、1059个或任何其它适当数量的开发者系统与网络100通信。服务器系统106包括用于存储数据的服务器系统。在一些实施例中,服务器系统106包括在线软件存储库。在各种实施例中,服务器系统106包括用于存储软件、用于使得能够实现协作、用于提供版本控制、用于公开软件、或用于任何其它适当的目的的系统。在各种实施例中,存储在服务器系统106上的代码被私有地、半私有地、公开地、或以任何其它适当的方式存储。在一些实施例中,包括用户证书的代码不应当被公开地存储在服务器系统106上。
图2是示出服务器系统的实施例的框图。在一些实施例中,服务器系统200包括图1的服务器系统106。在所示的示例中,服务器系统200包括输入接口202。在各种实施例中,输入接口202接收用户接口命令、数据上传、要存储的代码、或任何其它适当的信息。输入接口202与用于控制用户接口的用户接口确定器208通信。用户接口确定器208确定用户接口(例如,响应于从输入接口202接收的用户接口命令)。在一些实施例中,用户接口包括从数据库210检索的数据。用户接口确定器将用户接口提供至输出接口204以用于与用户通信。在一些实施例中,用户提供要存储在数据库210中的代码。在一些实施例中,当输入接口202从用户接收代码时,代码被提供给证书确定器206。证书确定器206处理传入代码以确定它是否包含证书。在一些实施例中,在确定代码不包含证书的情况下,将代码提供给数据库210。在各种实施例中,在确定代码包含证书的情况下,删除证书、提示用户进行动作、将代码存储指示为私有的、或执行任何其它适当的动作。
图3是示出证书确定器的实施例的框图。在一些实施例中,证书确定器300包括图2的证书确定器206。在所示的示例中,证书确定器300包括用于接收输入数据并将输入数据提供给数据分块器304的输入接口302。在一些实施例中,使用处理器来实现输入接口302。数据分块器304包括用于将输入数据分解成数据块的数据分块器。在一些实施例中,数据块具有固定的大小。在一些实施例中,数据块具有适用于并行处理器(例如,实现逐字节检查器306的并行处理器)的固定大小。数据分块器304向证书检查器308和逐字节检查器306提供数据块。在一些实施例中,数据分块器304是使用处理器实现的。逐字节检查器306包括用于检查接收到的数据块中的每个字节是否具有适当值(例如,在ASCII值的范围内、高于阈值ASCII值、低于阈值ASCII值、是适当的证书值等)的逐字节检查器。在一些实施例中,逐字节检查器306产生具有等于接收到的数据块中的字节数的位数的数据字。在一些实施例中,由逐字节检查器306产生的数据字中的每个位在接收到的数据块中的对应字节是适当的情况下包括1,并且在接收到的数据块中的对应字节不适当的情况下包括0。在一些实施例中,使用阈值来确定适当值,该阈值被选取为使得与字母数字字符相对应的字节高于阈值,而不与字母数字字符相对应的字节不高于阈值。在一些实施例中,逐字节检查器306确定字节是否在值的范围内(例如,可打印字符、字母数字字符、字母字符、证书合法字符等)。在一些实施例中,阈值包括上阈值(例如,字节小于负数)。在一些实施例中,逐字节检查器306包括用于同时检查所接收到的数据块中的所有字节的并行处理器(例如,SIMD处理器)。在一些实施例中,逐字节检查器将所确定的数据字提供给位计数器310。在一些实施例中,逐字节检查器306是使用处理器实现的。位计数器310包括用于对位进行计数的位计数器。在一些实施例中,位计数器310对在从逐字节检查器306接收的数据字中找到的为1的连续串进行计数。在一些实施例中,位计数器310计及从一个数据块延伸到下一个数据块的为1的连续串(例如,在为1的串继续直到数据块的结尾的情况下,将其长度增加在下一数据块的开头找到的为1的串的长度)。在一些实施例中,在由位计数器310确定的为1的串比阈值长度更长(例如,该1串指示可能包含证书的数据区段)的情况下,位计数器310确定与该1串相对应的地址范围,并将该地址范围提供给证书检查器308。在一些实施例中,位计数器310是使用处理器实现的。证书检查器308存储从数据分块器304接收的数据块。在一些实施例中,在证书检查器308从位计数器310接收到数据块不包括证书的指示的情况下,证书检查器308释放一个或多个数据块(例如,用于存储在数据库中)。在一些实施例中,在证书检查器308从位计数器310接收到指示可能证书的地址范围的情况下,数据块存储308(例如,从一个或多个数据块)检索与该地址范围相对应的数据区段,并针对证书对该区段进行检查。在各种实施例中,使用包括正则表达式模式匹配器、启发式模式匹配器、数据过滤器或任何其它适当的证书检查器来执行证书检查。在一些实施例中,在证书检查器308确定数据块不包括证书的情况下,证书检查器308释放数据块(例如,用于存储在数据库中)。在一些实施例中,使用处理器来实现证书检查器308。在各种实施例中,在证书检查器308确定数据区段包括证书的情况下,删除证书、提示用户进行动作、将代码存储指示为私有的、或执行任何其它适当的动作。在各种实施例中,证书确定器300的模块全部实现在单个处理器上、各自实现在分离的处理器上、以任何适当的方式被组合到多个处理器上实现、或以任何其它适当的方式实现。
图4A是示出数据流的实施例的图示。在一些实施例中,图4的数据流包括通过证书确定器(例如,图3的证书确定器300)的数据流。在所示的示例中,(例如,通过输入接口)接收数据400。数据400包括在代码段内发现的数据区段。数据400包括证书(例如,94B21A65FC318A93E73)。(例如,通过数据分块器)将数据400分块以产生数据块402、数据块404和数据块406。(例如,由逐字节检查器)检查每个数据块以产生位区段408、410和412。(例如,由位计数器)对位区段计数来识别比阈值(例如,19个1)更长的为1的串。与证书相对应的为1的串被识别为可能的证书,并且(例如,从数据块存储)检索与该1串相关联的原始数据(例如,数据414)。(例如,由证书检查器)针对证书对数据进行检查。证书检查器识别证书并产生肯定输出(例如,数据是证书输出416)。
图4B是示出美国信息交换标准码(例如,ASCII)表的实施例的图示。在一些实施例中,ASCII包括用于文本字符和控制字符的编码方案。在所示的示例中,控制字符(例如,非文本字符)由ASCII值001到032以及127表示。文本字符由ASCII值33到126表示。可以通过以下方式将文本字符与非文本字符高效地区分开来:阈值化32处的ASCII字符表示,用位1替换值33及以上的值(例如,指示文本字符),并且用位0替换值32及以下的值(例如,指示非文本字符)。在一些实施例中,使用第二操作(例如,将该值重置为位0,以指示非文本字符)来检测ASCII值127(例如,删除操作的指示)的存在。在一些实施例中,ASCII值127用于(例如,从键盘向计算机)传输删除操作的指示,但不作为文本数据的一部分存储,并且因此将永远不会在ASCII阈值化操作中被检测到。在一些实施例中,逐字节阈值化器确定字节是否在ASCII值的范围内(例如,可打印字符、字母数字字符、字母字符、证书合法字符等)。在一些实施例中,逐字节阈值化器确定上阈值(例如,字节小于负数)。
图5是示出用于检测证书的过程的实施例的流程图。在一些实施例中,图5的过程由证书确定器(例如,图3的证书确定器300)来实现。在所示的示例中,在500中,接收数据。在502中,确定数据块。在504中,检查数据块的每个字节以确定潜在证书符号。在一些实施例中,在数据块中的字节不包括潜在证书符号的情况下,用位0来替换所述字节,并且在所述字节包括潜在证书符号的情况下,用位1来替换所述字节。在一些实施例中,确定每个字节是否在值的范围内(例如,可打印字符、字母数字字符、字母字符、证书合法字符等)。在一些实施例中,确定每个字节是否高于下阈值(例如,字节大于正数)。在一些实施例中,确定每个字节是否低于上阈值(例如,字节小于负数)。在506中,确定在最近N个数据块中是否存在大于或等于最小证书长度的潜在证书符号的序列。在各种实施例中,N包括以下数量的块中的一个:1个块、2个块、3个块、4个块、5个块、6个块、7个块、8个块、9个块、10个块、11个块、12个块、13个块、14个块、15个块、16个块、或任何其它适当数量的块。在一些实施例中,最近N个数据块(例如,在502中确定的数据块)被连结并针对大于或等于最小证书长度的潜在证书符号的序列进行扫描。在一些实施例中,被连结和扫描的数据块的数量N包括证书可以跨越的数据块的最大数量(例如,20位证书可以跨越3个16位块)。在一些实施例中,最近N个数据块的阈值化表示被存储在先进先出缓冲器中以用于扫描。在确定在最近N个数据块中不存在大于或等于最小证书长度的潜在证书符号的序列的情况下,控制传到514。在确定在最近N个数据块中存在大于或等于最小证书长度的潜在证书符号的序列的情况下,控制传到508。在508中,确定与该潜在证书符号的序列相对应的地址范围。在510中,确定该潜在证书符号的序列是否包括证书。在确定该潜在证书符号的序列不包括证书的情况下,控制传到514。在确定该潜在证书符号的序列包括证书的情况下,控制传到512。在512中,处理证书。在各种实施例中,处理证书包括删除证书、指示将要在其中存储证书的存储库标记为私有的、向用户提示要如何处理证书的指示、或以任何其它适当的方式处理证书。控制然后传到516。在514中,输出数据块。在一些实施例中,数据块输出包括在506中检查的N个数据块中的第N个。在一些实施例中,数据块被输出以存储在数据库中。控制然后传到516。在516中,确定是否存在更多的数据(例如,要针对证书进行检查的更多输入数据)。如果确定有更多的输入数据,则控制传到500。如果确定没有更多的输入数据,则过程结束。
图6是示出用于数据分块器的过程的实施例的流程图。在一些实施例中,图6的过程由图3的数据分块器304执行。在所示的示例中,在600中,(例如,由数据分块器)接收数据。在602中,将数据分组成M字节的数据块。在一些实施例中,将数据分组成M字节的数据块包括确定最近的一组字节,其中该组字节具有预定数量的字节(例如,M包括4字节、8字节、16字节、32字节、64字节、128字节等)。在604中,提供数据块。在一些实施例中,将数据块提供给证书检查器和逐字节阈值化器。
图7是示出了逐字节阈值化器的实施例的流程图。在一些实施例中,图7的过程由图3的逐字节阈值化器306执行。在所示的示例中,在700中,(例如,从数据分块器)接收到数据块。在702中,选择数据块中的下一字节。在一些实施例中,数据块中的下一字节包括数据块中的第一字节。在704中,确定字节值是否是潜在的证书符号。在一些实施例中,字节值包括ASCII值。在一些实施例中,确定字节值是否在值的范围内(例如,可打印字符、字母数字字符、字母字符、证书合法字符等)。在一些实施例中,确定字节值是否小于阈值(例如,字节小于负数)。在一些实施例中,阈值被选取为使得对应于字母数字字符的字节值高于阈值,而不对应于字母数字字符的字节值小于或等于阈值。在确定字节值不是潜在证书符号的情况下,控制传到706。在706中,用位0来替换该字节。控制然后传到710。在704中,如果确定字节值是潜在证书符号,则控制传到708。在708中,用位1来替换该字节。控制然后传到710。在710中,确定是否存在更多字节(例如,该数据块中的更多字节)。在确定存在更多字节的情况下,控制传到702。在确定没有更多字节的情况下,控制传到712。在712中,提供位序列(例如,通过用0或1替换接收到的数据块中的每个字节而产生的位序列)。在所示的示例中,由逐字节检查器来串行地(例如,一次一个)检查字节。在一些实施例中,由逐字节检查器并行地(例如,一次全部)检查字节。每个字节被检查并同时被0或1替换。在一些实施例中,可以使用SIMD并行处理器来实现以这种方式的并行处理。在一些实施例中,SIMD并行处理器同时对固定长度的数据块中的每个字节执行相同的指令。在一些实施例中,使用SIMD并行处理器的处理使得数据分块成为必要。
图8是示出用于确定潜在证书符号的序列是否包括证书的过程的实施例的流程图。在一些实施例中,图8的过程实现图5的510。在所示的示例中,在800中,确定潜在证书符号的序列是否与证书模式匹配。在各种实施例中,使用正则表达式、模式匹配启发方法、数据过滤器、或任何其它适当的模式匹配算法来确定潜在证书符号的序列是否与证书模式匹配。在确定潜在证书符号的序列与证书模式匹配的情况下,控制传到808。在确定潜在证书符号的序列与证书模式不匹配的情况下,控制传到802。在802中,确定潜在证书符号的序列是否包括证书前缀。在一些实施例中,证书前缀包括用以引入证书的已知字符序列。在确定潜在证书符号的序列包括证书前缀的情况下,控制传到808。在确定潜在证书符号的序列不包括证书前缀的情况下,控制传到804。在804中,确定潜在证书符号的序列是否满足证书熵测试。在一些实施例中,证书包括比常规文本(例如,书写单词、软件代码等)更高的熵,并且可以将针对一组字符的所确定的熵值阈值化,以确定该组字符是否包括阈值。在804中确定了潜在证书符号的序列满足证书熵测试(例如,指示该序列包括证书)的情况下,控制传到808。在804中确定了潜在证书符号的序列不满足证书熵测试的情况下,控制传到806。在806中,指示潜在证书符号的序列不包括证书。过程然后结束。在808中,指示可能的证书符号的序列包括证书。
在各种实施例中,在数据包括证书的情况下,执行以下中的一个或多个:删除证书、替换证书、将作为与证书相关联代码的代码存储在存储库的私有部分中、向用户或管理员提供证书已被上传的指示、或任何其它适当的动作。
图9A是示出数据流的实施例的图。在一些实施例中,图9的数据流包括通过位计数器(例如,图3的位计数器310)的数据流。在所示的示例中,接收数据块900。数据块900被添加到数据块缓冲器902的尾部位置。在所示的示例中,数据块缓冲器902包括用于保存5个数据块的缓冲器。在一些实施例中,由数据块缓冲器存储的数据块的数量包括证书可以跨越的数据块的最大数量。数据块缓冲器904包括在其尾部位置包括数据块900的数据块缓冲器902。针对潜在证书序列对数据块缓冲器904进行扫描。在一些实施例中,针对潜在证书序列扫描数据块缓冲器904包括识别潜在证书符号的序列(例如,位1)。在一些实施例中,潜在证书序列包括比最小证书长度更长的潜在证书符号的序列。然后将数据块缓冲器中的第一个接收到的数据块(例如,数据块缓冲器头部处的数据块)从数据块缓冲器中移出。数据块缓冲器906包括其中数据块缓冲器头部处的数据块被移出的数据块缓冲器904。然后使数据块缓冲器中剩余的数据块在数据块缓冲器内前进,以在数据块缓冲器尾部开放空间以用于新的数据块。数据块缓冲器908包括其中使数据块在缓冲器内前进的数据块缓冲器906。
图9B包括示出用于确定在最近N个数据块中是否存在大于或等于最小证书长度的潜在证书符号的序列的过程的实施例的流程图。在一些实施例中,图9B的过程实现图5的506。在一些实施例中,图9B的过程包括用于图3的位计数器310的过程。在所示的示例中,在950中,将数据块添加到数据块缓冲器尾部。在一些实施例中,数据块缓冲器包括先进先出缓冲器。在952中,确定数据块缓冲器内的潜在证书序列长度。在954中,确定数据块缓冲器内是否存在比最小证书长度更长的潜在证书序列。如果确定没有比最小证书长度更长的潜在证书序列,则控制传到956。在956中,指示没有比最小证书长度更长的潜在证书序列。控制然后传到960。如果在854中确定了数据块缓冲器内存在比最小证书长度更长的潜在证书序列,则控制传到958。在958中,指示存在比最小证书长度更长的潜在证书序列。控制然后传到960。在960中,确定数据块缓冲器是否已满。在一些实施例中,数据块缓冲器在它已接收到等于其长度的多个数据块之前不是满的。在确定数据块缓冲器未满的情况下,控制传到964。在确定数据块缓冲器已满的情况下,控制传到962。在962中,从数据块缓冲器头部移出数据块。在964中,使数据块在数据块缓冲器中前进。
尽管为了理解清楚的目的以一定程度的细节描述了前述实施例,但是本发明不限于所提供的细节。存在许多实现本发明的替代方法。所公开的实施例是例证性的而不是限制性的。

Claims (19)

1.一种用于检测用户证书的系统,包括:
用于确定数据块的数据分块器;
用于存储所述数据块的数据块存储;
用于检查所述数据块中的每个字节包括适当值的逐字节检查器;
位计数器,用于:
确定大于或等于阈值字节值的连续字节数;以及
在所述连续字节数大于或等于阈值字节数的情况下,
确定与所述连续字节数相对应的证书地址范围;以及
证书检查器,用于:
确定所述数据块存储中存储的与所述证书地址范围相对应的数据是否包括证书。
2.如权利要求1所述的系统,还包括用于接收数据的输入接口。
3.如权利要求2所述的系统,其中使用所接收的数据确定所述数据块。
4.如权利要求1所述的系统,其中所述数据分块器还用于响应于数据地址范围提供数据。
5.如权利要求1所述的系统,其中所述阈值字节数包括最小证书长度。
6.如权利要求1所述的系统,其中确定数据是否包括证书包括匹配证书模式。
7.如权利要求1所述的系统,其中确定数据是否包括证书包括匹配证书前缀。
8.如权利要求1所述的系统,其中确定数据是否包括证书包括满足证书熵测试。
9.如权利要求1所述的系统,其中所述适当值包括在ASCII值的范围中的值。
10.如权利要求9所述的系统,其中所述ASCII值的范围包括合法证书值。
11.如权利要求1所述的系统,其中所述数据块包括M字节的数据块。
12.如权利要求11所述的系统,其中所述M字节的数据块包括以下中的一个:4字节块、8字节块、16字节块、32字节块、64字节块、或128字节块。
13.如权利要求1所述的系统,其中所述位计数器使用位来指示字节大于或等于所述阈值字节值。
14.如权利要求13所述的系统,其中使用连续位数来表示所述连续字节数。
15.如权利要求14所述的系统,其中确定大于或等于所述阈值字节数的所述连续字节数包括确定跨N个块的连续位数。
16.如权利要求1所述的系统,其中n包括以下中的一个:1个块、2个块、3个块、4个块、5个块、6个块、7个块、8个块、9个块、10个块、11个块、12个块、13个块、14个块、15个块、或16个块。
17.如权利要求1所述的系统,其中在所述数据包括证书的情况下,执行以下中的一个或多个:删除所述证书、替换所述证书、将作为与所述证书相关联代码的代码存储在存储库的私有部分中、以及向用户或管理员提供所述证书已被上传的指示。
18.一种用于检测用户证书的系统,包括:
使用处理器确定数据块;
存储所述数据块;
检查所述数据块中的每个字节包括适当值;
确定大于或等于阈值字节值的连续字节数;以及
在所述连续字节数大于或等于阈值字节数的情况下,确定与所述连续字节数相对应的证书地址范围;以及
确定数据块存储中存储的与所述证书地址范围相对应的数据是否包括证书。
19.一种用于检测用户证书的计算机程序产品,所述计算机程序产品被体现在非暂时性计算机可读存储介质中并且包括用于以下各项的计算机指令:
使用处理器确定数据块;
存储所述数据块;
检查所述数据块中的每个字节包括适当值;
确定大于或等于阈值字节值的连续字节数;以及
在所述连续字节数大于或等于阈值字节数的情况下,确定与所述连续字节数相对应的证书地址范围;以及
确定数据块存储中存储的与所述证书地址范围相对应的数据是否包括证书。
CN201580067200.1A 2015-01-09 2015-12-17 高效地检测用户证书 Active CN107251015B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/594016 2015-01-09
US14/594,016 US9619670B1 (en) 2015-01-09 2015-01-09 Detecting user credentials from inputted data
PCT/US2015/066502 WO2016111826A1 (en) 2015-01-09 2015-12-17 Efficiently detecting user credentials

Publications (2)

Publication Number Publication Date
CN107251015A true CN107251015A (zh) 2017-10-13
CN107251015B CN107251015B (zh) 2020-10-27

Family

ID=56356305

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201580067200.1A Active CN107251015B (zh) 2015-01-09 2015-12-17 高效地检测用户证书

Country Status (4)

Country Link
US (3) US9619670B1 (zh)
EP (1) EP3243145B1 (zh)
CN (1) CN107251015B (zh)
WO (1) WO2016111826A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9619670B1 (en) * 2015-01-09 2017-04-11 Github, Inc. Detecting user credentials from inputted data
US10015163B2 (en) * 2015-08-28 2018-07-03 UniVaultage LLC Apparatus and method for cryptographic operations using enhanced knowledge factor credentials
US11983103B2 (en) * 2022-02-16 2024-05-14 Jpmorgan Chase Bank, N.A. System and method for reducing noise and false positives for ensuring test coverage prior to submission

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030035585A1 (en) * 2001-03-19 2003-02-20 Soundpix, Inc. System and method of storing data in JPEG files
US6681034B1 (en) * 1999-07-15 2004-01-20 Precise Biometrics Method and system for fingerprint template matching
US20070152854A1 (en) * 2005-12-29 2007-07-05 Drew Copley Forgery detection using entropy modeling
CN101038612A (zh) * 2006-03-15 2007-09-19 三星电子株式会社 产生证书的方法以及使用证书提供内容的方法和设备
CN101490689A (zh) * 2006-07-07 2009-07-22 桑迪士克股份有限公司 使用证书链的内容控制系统和方法
US20120131653A1 (en) * 2010-11-19 2012-05-24 Research In Motion Limited System, devices and method for secure authentication
CN103150330A (zh) * 2013-01-16 2013-06-12 中南大学 一种基于局部对象和块匹配的扫描证书图像检索方法
US20130283363A1 (en) * 2012-04-19 2013-10-24 Nxgen Software, Llc Secure data transfer over an arbitrary public or private transport
US20140115670A1 (en) * 2012-10-23 2014-04-24 Edward M. Barton Authentication method of field contents based challenge and enumerated pattern of field positions based response in random partial digitized path recognition system
US20140173705A1 (en) * 2012-12-19 2014-06-19 Jive Software, Inc. Distributed authentication using persistent stateless credentials
US20140244604A1 (en) * 2013-02-28 2014-08-28 Microsoft Corporation Predicting data compressibility using data entropy estimation

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050120213A1 (en) * 2003-12-01 2005-06-02 Cisco Technology, Inc. System and method for provisioning and authenticating via a network
US8270250B2 (en) * 2006-01-03 2012-09-18 Halliburton Energy Services, Inc. Programmable data acquisition for tubular objects
US8006300B2 (en) * 2006-10-24 2011-08-23 Authernative, Inc. Two-channel challenge-response authentication method in random partial shared secret recognition system
US8412931B2 (en) * 2007-12-27 2013-04-02 Apple Inc. Techniques for credential strength analysis via failed intruder access attempts
US8387135B2 (en) * 2009-01-05 2013-02-26 Honeywell International Inc. Method and apparatus for maximizing capacity of access controllers
US8452963B2 (en) * 2009-01-27 2013-05-28 Cisco Technology, Inc. Generating protected access credentials
US8627088B2 (en) * 2010-02-10 2014-01-07 Authernative, Inc. System and method for in- and out-of-band multi-factor server-to-user authentication
US8607358B1 (en) * 2010-05-18 2013-12-10 Google Inc. Storing encrypted objects
US8630412B2 (en) * 2010-08-25 2014-01-14 Motorola Mobility Llc Transport of partially encrypted media
US9047069B2 (en) * 2011-04-12 2015-06-02 Texas Instruments Incorporated Computer implemented method of electing K extreme entries from a list using separate section comparisons
US8824676B2 (en) 2011-06-30 2014-09-02 International Business Machines Corporation Streaming video to cellular phones
US8955074B2 (en) * 2012-10-23 2015-02-10 Authernative, Inc. Authentication method of enumerated pattern of field positions based challenge and enumerated pattern of field positions based response through interaction between two credentials in random partial digitized path recognition system
US9215072B1 (en) * 2012-10-23 2015-12-15 Authernative, Inc. Back-end matching method supporting front-end knowledge-based probabilistic authentication systems for enhanced credential security
EP2968853B1 (en) * 2013-03-15 2020-02-12 QXMedical, LLC Boosting catheter
EP2946295A4 (en) * 2013-04-30 2016-09-07 Hewlett Packard Entpr Dev Lp GROUPING DATA BLOCKS IN A COMPRESSION REGION
US8973142B2 (en) 2013-07-02 2015-03-03 Imperva, Inc. Compromised insider honey pots using reverse honey tokens
US9514146B1 (en) * 2013-09-26 2016-12-06 Emc Corporation System and method for improving data compression of a storage system in an online manner
JPWO2015052867A1 (ja) * 2013-10-11 2017-03-09 日本電気株式会社 端末装置、端末装置制御方法および端末装置制御プログラム
US9258196B2 (en) * 2014-02-05 2016-02-09 International Business Machines Corporation Composite service pre-provisioning
US10824952B2 (en) * 2014-09-22 2020-11-03 International Business Machines Corporation Reconfigurable array processor for pattern matching
US9619670B1 (en) * 2015-01-09 2017-04-11 Github, Inc. Detecting user credentials from inputted data
US10171487B2 (en) * 2017-02-15 2019-01-01 International Business Machines Corporation Generating a virtual database to test data security of a real database

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6681034B1 (en) * 1999-07-15 2004-01-20 Precise Biometrics Method and system for fingerprint template matching
US20030035585A1 (en) * 2001-03-19 2003-02-20 Soundpix, Inc. System and method of storing data in JPEG files
US20070152854A1 (en) * 2005-12-29 2007-07-05 Drew Copley Forgery detection using entropy modeling
CN101038612A (zh) * 2006-03-15 2007-09-19 三星电子株式会社 产生证书的方法以及使用证书提供内容的方法和设备
CN101490689A (zh) * 2006-07-07 2009-07-22 桑迪士克股份有限公司 使用证书链的内容控制系统和方法
US20120131653A1 (en) * 2010-11-19 2012-05-24 Research In Motion Limited System, devices and method for secure authentication
US20130283363A1 (en) * 2012-04-19 2013-10-24 Nxgen Software, Llc Secure data transfer over an arbitrary public or private transport
US20140115670A1 (en) * 2012-10-23 2014-04-24 Edward M. Barton Authentication method of field contents based challenge and enumerated pattern of field positions based response in random partial digitized path recognition system
US20140173705A1 (en) * 2012-12-19 2014-06-19 Jive Software, Inc. Distributed authentication using persistent stateless credentials
CN103150330A (zh) * 2013-01-16 2013-06-12 中南大学 一种基于局部对象和块匹配的扫描证书图像检索方法
US20140244604A1 (en) * 2013-02-28 2014-08-28 Microsoft Corporation Predicting data compressibility using data entropy estimation

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
CHRISTOPHER KUNZ ET AL.: ""Detecting Credential Abuse in the Grid Using Bayesian Networks"", 《2011 IEEE/ACM 12TH INTERNATIONAL CONFERENCE ON GRID COMPUTING》 *
刘天远: ""分布式计量器具及检测证书流转管理系统的设计与实现"", 《万方学术期刊数据库》 *

Also Published As

Publication number Publication date
EP3243145A1 (en) 2017-11-15
US9619670B1 (en) 2017-04-11
EP3243145B1 (en) 2020-12-09
US9916438B2 (en) 2018-03-13
EP3243145A4 (en) 2018-11-21
US20180247047A1 (en) 2018-08-30
CN107251015B (zh) 2020-10-27
WO2016111826A1 (en) 2016-07-14
US10339297B2 (en) 2019-07-02
US20170169210A1 (en) 2017-06-15

Similar Documents

Publication Publication Date Title
CN110147433B (zh) 一种基于字典树的文本模板提取方法
US10878087B2 (en) System and method for detecting malicious files using two-stage file classification
GB2518666A (en) Volume reducing classifier
CN107608750A (zh) 状态机晶格中的计数器操作
CN106485146B (zh) 一种信息处理方法及服务器
CN101398820A (zh) 一种大规模关键词匹配方法
US11080398B2 (en) Identifying signatures for data sets
CN104361045A (zh) 一种冠字号信息处理方法及设备
CN113486350B (zh) 恶意软件的识别方法、装置、设备及存储介质
CN110413569A (zh) 纸质档案电子化归档方法、装置及终端设备
CN107251015A (zh) 高效地检测用户证书
KR20140131333A (ko) 스트림 인식 및 필터링
Yan et al. Automatic malware classification via PRICoLBP
CN112926647B (zh) 模型训练方法、域名检测方法及装置
US20180096142A1 (en) System and method for determining a security classification of an unknown application
KR102110523B1 (ko) 문서 분석 기반 주요 요소 추출 시스템 및 방법
CN113779051A (zh) 词库更新方法和装置、风险控制方法、装置和系统
CN111783088A (zh) 一种恶意代码家族聚类方法、装置和计算机设备
CN115795466A (zh) 一种恶意软件组织识别方法及设备
CN105760769B (zh) 一种计算机口令统计分析方法及装置
CN113987500A (zh) 一种恶意pdf文档检测方法、装置及电子设备
JP6096084B2 (ja) トラヒック走査装置及び方法
CN113688240A (zh) 威胁要素提取方法、装置、设备及存储介质
CN107294956A (zh) 数据标记化的冲突处理方法及装置
EP3588349B1 (en) System and method for detecting malicious files using two-stage file classification

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
TA01 Transfer of patent application right

Effective date of registration: 20200817

Address after: Washington State

Applicant after: MICROSOFT TECHNOLOGY LICENSING, LLC

Address before: California, USA

Applicant before: GITHUB, Inc.

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant