现在参考附图来描述本发明,贯穿附图,相同的参考标号用来表示相同的元 素。在下面的描述中,为解释起见,阐述了众多具体细节,以提供对本发明的全面 理解。然而,显而易见的是,可以不用这些具体细节来实现本发明。在其它的情况 下,以框图的形式示出公知的结构和设备以便于描述本发明。
如在本
申请中所使用的,术语“组件”和“系统”是指计算机相关的实体, 或者是
硬件、硬件和
软件的组合、软件、或者执行中软件。例如,组件可以是,但 不局限于,在处理器上运行的
进程、处理器、对象、可执行码、执行线程、程序以 及计算机。作为说明,在服务器上运行的应用程序和服务器均可以是组件。一个或 多个组件可驻留在进程和/或执行线程中,而且组件可位于一台计算机上和/或分布 在两台或更多台计算机之间。
另外,在本申请中使用的术语“计算机用户”和“人类用户”是指在这样的 情况下的非人类用户:对计算机进行编程,以采取诸如启动自动脚本攻击、以攻击 接收者的网络或服务器并促使其商务或服务系统被破坏的意图将成百上千或成千 上万的垃圾邮件发送到各个接收者以及特定接收者这样的行动作。
本发明可包括关于生成用于
机器学习垃圾邮件过滤的
训练数据的各种推论方 案和/或技术。如用在这里的,术语“推论”一般指从一组通过事件和/或数据捕捉 的观察中对系统状态、环境和/或用户进行推理或推断的过程。比如,可使用推论 来标识特定的内容或行动,或者其可产生状态的概率分布。该推论可能是概率性 的—即基于数据和事件考虑的感兴趣的状态的概率分布的计算。推论也可指用来从 一组事件和/或数据中组成高级事件的技术。这样的推论会从一组观察事件和/或保 存事件数据中构造出新的事件或行动,而不管该事件是否在邻近的时间上相关,且 不管该事件或数据是否来自一个或几个事件和数据源。
本发明可基于这两个非常有挑战性的视觉问题:对象的分割和识别。对于分 割,人类通常可通过将任何给定的景物划分成
块以对其进行评估。例如,当示出一 幅装修房间的照片时,他们可确认或标识该房间的不同部分或内容:“有桌子”“有 椅子”“桌上有盏灯”等等。(分割的)对象的识别始终由人类作出,由此他们可 集成并重新评估任何引入的给定景物。另一方面,在一段时间内,计算机对各个块 进行分割和标识是相对困难的。
相反,诸如光学字符识别(OCR)以及手写识别技术等中的识别设计对识别器进 行训练,以获知例如什么定义了椅子或桌子。这样,可对计算机进行训练以根据其 定义的维数、
密度等来识别对象;然而,分割要主观得多。例如,各种形式的打印 文本可由具有相当高准确率(如超过90%)的计算机来识别。当失真被附加到打 印文本或字母时,准确率可能一点都不会受到影响。然而,连写体笔迹对计算机而 言更难识别,这是因为辨别每个字母在何处开始或结束是困难的。
本发明所述的高性能HIP至少部分地通过以使计算机很难“打破”HIP的方 式添加失真,以使字符以及在部分字符上的弧或其它随机混杂物(如解除至少一个 字母的某一部分)模糊,而利用了这一计算机缺点。因为计算机识别能力持续进步, 所以HIP的生成也在持续发展。在本发明中,引入了几个新方法来提升这些HIP 的安全性,以使它们速度更快,并改善其总体有效性(如对人类用户的视觉吸引力)。
有实际价值的HIP的构造是困难的,这是因为发展人类比机器更成功的质询 是不充分的。这是因为具有一个绝大多数时间都失败的自动攻击程序是几乎不耗成 本的。实际上,若希望阻断自动脚本,若失败和重复的成本对机器而言是低的话, 则人类99%成功而机器1%成功的质询可能仍旧是不充分的。这样,为了有用, HIP必须使自动攻击的成本足够高,以阻止重复猜测。在某种显著的意义上,若回 答机器质询的成本比恳求人类执行相同任务的成本高,则HIP是成功的。本发明 利用这样一个事实,即被适当变更的图像对计算机而言,可靠读取而不使用昂贵的 技术是困难的,但是人们会非常容易理解。通过包括这样的图像作为网页中(或计 算机登录/访问屏幕)的质询,并依赖于对质询的正确回答而提交该页面(或登录), 可合理的阻止脚本撞上网页(登录或访问计算机)。
此外,本发明描述了用于变更诸如图像(如HIP图像)等内容的新技术,和 用于其高性能实现的体系结构,目的是使计算机读取变得困难、代价昂贵而且不可 预知,而同时使几乎所有的人类都能容易的读取。
现在参考图1,依照本发明的一个方面示出了用于HIP生成系统100的示例性 体系结构的主要框图。系统100包含字符选择组件100,其可从字符高速缓存120 中随机选择多个预先呈现的字符,以形成新HIP的基础。为在制作阶段的HIP的 全部附加安全性,预先呈现的字符能以二进制形式保存在高速缓存120中。字符高 速缓存120可包括所有允许的字符(某些字符,像大写I、数字0和1、字母O和 Q可被省略)的旋转和缩放版本,作为黑白位图的集合。
此外,高速缓存120可在启动时生成,每个可能字符的唯一
位置具有特定x 和y缩放和旋转。高速缓存中的位图数量可能会变得非常大。例如,若对于x和y 缩放的缩放因子在95%~105%之间,且旋转在-5度到+5度之间,则对于英语字 母表(所有26个大写字符)可能有11×11×11×26=34,606个位图。在启动时填 充字符高速缓存120(填充所有的位图)是非常耗时的,所以就使用惰性高速缓存 填充(即,当生成HIP时,这些HIP中所使用的字符被保存在高速缓存中)。高 速缓存120随着时间的推移而逐渐被填满。
高速缓存120中的字符也可被进行行程长度编码,以减少x和y缩放及旋转 的所有可能组合的
存储器覆盖区(footprint)。行程长度编码(RLE)是
数据压缩的简单 形式,其中数据的行程被保存为单个数据数值和计数,而非保存为原始行程。例如, 考虑在实心白色背景上包含纯黑色文本的屏幕。在空白区内可能会有白色像素的许 多长行程,并在文本内有黑色像素的许多短行程。
变更方法使用高速缓存中的灰度级图像,其中每个字符反
混叠(anti-aliased) 地进入背景,以产生平滑边缘。然而,这样的方法较不安全,这是因为在过程或系 统的这个阶段的反混叠可能会使HIP容易受到计算机逆向操纵的攻击。
一旦从字符高速缓存120中选择出一组随机字符,就能以任意随机顺序来排 列它们,以形成初步的HIP图像。然后,可使用弧选择组件130,以从弧高速缓存 140(或分别从任何其它的混杂物高速缓存)中选择任何数量的弧(或其它类型的 混杂物)。已选择的弧能诸如通过使用低差异准随机数,以随机方式被置于文本(字 符)周围或与文本(字符)组合在一起,来最大化与主题文本的干扰。例如,第二 弧的放置可至少部分地基于第一弧的放置,等等。这种类型的受控随机性可改善 HIP的外观,并使区分人类用户和计算机用户更加有效。
弧高速缓存130包含具有不同弧宽度的多个三次样条。三次样条可被限制到3 个控制点。这些弧的控制点被随机均匀地选出。此外,弧高速缓存可包括前景弧和 背景弧。前景弧可从本质上将墨
水添加到HIP,而背景弧可有效的将墨水从HIP 中移除。另外,前景弧可以与前景色彩或纹理相同的色彩或纹理出现;类似地,背 景弧可以与背景色彩或纹理相同的色彩或纹理出现。
此外,可生成弧或者将弧添加到相对远离HIP上的文本字符的HIP序列或图 像的区域上。可令HIP图像的大小(宽度和高度)显著大于以给定字体显示给定 数量字符的所需的空间。这一点可能是有用的,这是因为许多弧可随后被附加到图 像上,以欺骗自动系统,使系统认为图像中有其它的字符。这个策略可在这些区域 中生成字符的几个假肯定(false positive)。一旦这些字符被放置好,可变厚度的 各种弧可远离该字符所在的位置被安全添加。厚的弧是指其厚度接近于或大于用于 产生字符的字符字体平均厚度的弧。从可读性的
角度来看,均匀地添加厚的弧是危 险的,这是因为当厚的弧覆盖字符时,更有可能使其不可读。可能的相关工作 (work-around)是均匀地添加较薄的弧,并在它们不与已经放置的字符重叠的限制之 外均匀地添加较厚的弧。这就帮助保持放置的字符是易读的。由于厚的弧接近字符 的平均厚度,所以它们很难从规则字符中区分开来,因此,它们是对分散攻击有好 处的假肯定的主要候选者。远离字符而附加的弧的数量和密度可被独立调节。
不像字符高速缓存120,弧高速缓存140不必非常大。几千个弧就足够生成大 量的HIP。这样,弧可在启动时生成。如字符高速缓存120一样,弧能被保存为二 进制形式的位图。类似于字符位图,弧高速缓存140中的弧位图在进行扭曲过程之 前可被非反混叠或反混叠。然而,在HIP被扭曲之前的反混叠可能使HIP容易受 到计算机逆行工程的攻击或影响。
然后,初步HIP序列或图像(非扭曲)可被传递到扭曲区域
应用组件150,其 与扭曲子区域选择组件160进行通信。选择组件160可随机或手动选择扭曲区域的 子区域,用于扭曲HIP。随后,扭曲区域应用组件150可将HIP映射到(扭曲区域 的)已选择的子区域。这样,HIP就可被拉伸、扭曲或者被模糊化,以使辨别HIP 图像中的特定字符变得更困难。
扭曲区域的子区域可从扭曲区域高速缓存170中随机或手动选择。扭曲区域 高速缓存170包含大的二维图像(被保存为整数矩阵一每个像素具有与其相关联的 两个整数,以定义x和y色差(dispersion)),其维数是单个HIP图像的几倍。 当给定的HIP图像要经受扭曲时,HIP大小的随机邻接子矩阵被从扭曲区域高速缓 存中提取出,并用于扭曲HIP。对HIP应用扭曲区域将HIP的像素移动了由已选 择扭曲区域子矩阵中的整数
指定的量。
扭曲区域高速缓存170是两个扭曲区域的和。第一个是全局扭曲区域,第二 个是局部扭曲区域。不幸的是,生成扭曲区域在计算上是昂贵的。一个示例性过程 涉及二维高斯区域的生成,然后使用二维指数
滤波器对它进行低通滤波并量化(舍 入到最近的整数值)。该区域的振幅由高斯区域幅度来确定,而且该区域的平滑度 (其是具有大的平滑波还是小的粗糙波)由指数衰减的速率来决定。
全局扭曲区域具有大的幅度和高的衰变因子,而局部扭曲区域具有小的幅度 和小的衰变因子。结果,全局扭曲区域产生大的平滑失真,而局部扭曲区域产生小 的粗糙失真。此外,将扭曲区域转换成整数就消除了内插的必要,并促使HIP的 形成速度加快。
在HIP图像被充分扭曲之后,其可被不同的组件进一步处理。例如,HIP图 像能以高分辨率被扭曲,并然后以大于1的因子
下采样。这就改善了HIP图像的 视觉外观。另外,纹理和/或色彩可被添加到HIP图像,以进一步改善其视觉吸引 力。例如,纹理和至少一种色彩可被添加到背景,而前景(如,至少是文本)可以 用一种或多种不同的色彩来显示。以上述方式生成的HIP 180可通过基于web的服 务而变成对希望控制对其
站点或服务的访问的网站所有者和操作者可用。然而,在 最终HIP图像180可通过web服务或网站用于用户的浏览器之前,图像180可被 编码为gif、jpeg、bmp和类似的格式。这就允许生成的HIP 180通过通用网络浏览 器或图像查看工具来呈现和查看。此外,纹理和/或色彩的添加作为诸如按每用户 或每网络服务定制HIP外观的一种手段是合乎需要的这。
系统100也可包含可任选的HIP验证系统190,其可用来监视(人类)已失败 HIP,以及对由系统100部分地生成的HIP进行随机采样,以便于确定各种文本+ 弧组合的可用性。特别地,验证系统190可收集提供给用户的HIP或HIP签名的 活样值(live sample),以及人类试图回答这些HIP时的成功或错误。这个信息可 被用来确定有关用于构建可用性映射字符的字符放置或弧放置的成功或错误率。可 使用对应于字符或字体的可用性映射。可基于字体的字形如何被呈现以及相关联的 字符/数字间混淆而手动生成初始映射(由程序员或设计者基于现有的人类知识生 成)。例如,时代罗
马(Times Roman)字体的大写E对将会擦除E的任何水平臂 的背景弧敏感。这就降低了读取E的能力。然而,独立的评估可使用户知道如果 擦除E较低的水平臂,会导致E无意看起来像F。然后,可使用可用性映射来变更 将来HIP的生成。
此外,一种方法涉及在HIP的在线操作期间对人类错误进行采样。当生成HIP 以标识人类时,成功和错误被连同每个HIP签名而记入日志,即,每个被采样的 HIP与试验相关联,其中,人类检查HIP并尝试解决它。HIP签名完全确定构成 HIP的字符和弧(除了扭曲区域之外)的位置和参数。成功和不成功的HIP解决方 案均被记入日志。由于每天服务几百万HIP,可采用随机采样来获取一段时间上所 需数量的样值,而不影响在线系统。这些样值中的HIP签名可用来在扭曲步骤之 前重新生成HIP。
接下来,提取包含每个字符的重新生成HIP的子图像。这些子图像放大HIP 内字符的边界框。然后,边界框子图像被旋转并缩放,以获取原始字符的尺寸和方 向。结果,任何落入这个边界框的弧/弧段也被提取了。检查每个字符,来看周围 的弧是怎样与字符相交的/怎样影响字符的。弧与字符相交效果的重要性是明显的。 即使弧实际上不与字符相交,其也可基于其与字符的接近程度而影响字符的解释 (由其在“放大”的边界框中的存在而建模)。用户错误和成功被用来分别分类何 种类型的相交/影响是差的,何种类型是好的。这可通过简单地保持对落入每个字 符周围的边界框内的前景和背景弧像素的计数而实现。这些计数形成了每字符的可 用性映射。可收集对成功和失败情况的计数。连同保持干扰和/或良性像素(benign pixel)的计数,其位置也可被
跟踪。例如,可相对于字符
定位在何处对每个位置跟 踪计数。结果,包含这些计数在边界框中每个可能位置的两维表示的映射可被获取。
一旦从用户数据构建了可用性映射,HIP生成过程就可考虑这些可用性映射, 并可拒绝可能不利地影响字符解释的弧位置。当弧被添加到HIP时,可使用试验 和错误方法来接受/拒绝这些弧。例如,试验和错误方法可发生在弧选择(130)期 间或与弧选择同时发生。累积得分可用来基于任何给定弧的位置和形状/方向确定 是否接受/拒绝任何给定的弧。
现在参考图2,依照本发明的一个方面示出用于HIP形成的示例性路径的示意 图。最初,字符预呈现组件210和/或弧预呈现组件220可分别预先呈现字符(如 字母、标点和数字)和/或弧,并将它们保存在适当的
数据库(如字符数据库230、 弧数据库240)中。具体地,缩放以及旋转的字符可被单独呈现为二进制形式的位 图,并然后被高速缓存,并当组成HIP图像或字符序列时,其可用于简单的检索。 已经被确定为太难由人类解决的字符可在需要时从数据库中移除。
弧和其它任意混杂物可被预先呈现为二进制形式的位图,然后其也被高速缓 存。弧高速缓存可包括简单弧(样条)以及其它类型的混杂物,其被设计成削弱分 割和OCR程序。这样的混杂物的例子包含来自与文本相同的字体的字符块、具有 衬线的弧等等。因为字符、弧和其它任意的混杂物被预先呈现,然后被高速缓存, 所以HIP组成和形成与传统的通用方案相比会更快地发生。
一旦被组成,初步HIP(预先扭曲HIP)250可然后被扭曲区域260(270)的 所选子部分扭曲。扭曲区域260可包含或被划分成多个子区域265。这样,每次当 新的HIP被组成时,可随机(从扭曲区域高速缓存中)选择扭曲区域的子区域, 并将其应用于初步HIP 250。结果,不再需要每次当生成新的HIP时重新生成新的 扭曲区域,这就充分加快了HIP的生成时间并可耗费更少贵重资源。
扭曲区域高速缓存以及弧高速缓存可被周期性地刷新,以促进或确保对HIP 生成
算法的熵添加。例如,高速缓存更新的
频率可被定制,并且其范围可从对于扭 曲区域每50毫秒一次到对于字体、色彩和纹理更新每几天一次。应当认识到的是, 字符高速缓存更新的频率可能会比弧高速缓存低,但是其应当至少与HIP改变的 字体一样频繁地更新。
如前所述,本发明的HIP能以二进制形式生成,以改善HIP的安全性,并加 快生成时间。然而,以二进制形式描述的HIP可能在视觉上没有吸引力,这是因 为边缘可能是不匀称的或粗糙的。为解决这个问题,本发明提供了下采样。下采样 组件280可按大于1的任何整数或非整数(如2的因子)或双立方(bi-cubically)(如 使新的像素为所有四个方向中老像素的平均状态;这样如果开启4个中的3个,则 该新像素处于开启状态)来对生成的HIP进行下采样。下采样的结果是完成的HIP 290能被更精细化地呈现,如具有更平滑的边缘,并在灰度级声调中(来自其先前 的黑白色彩图案)。应当理解的是,该下采样可在HIP被扭曲之前发生;然而, 这可危及HIP的安全性和整体性。
此外,在HIP已经完全形成(如组成并扭曲)之后的反混叠可这时执行。这 是因为所有的文本和弧已经被呈现且被相应地排列。这样,反混叠将发生在HIP 级上,而不是弧/混杂物级上和/或文本级上。为进一步证明这一点,想象预先呈现 的字符是由一个或多个反混叠滤波器反混叠的(其被平滑地混合到背景中),且对 HIP随机地选择其子集。接下来,被反混叠的弧的采样(存在锯齿状边缘的伪像— 阶梯效应)被添加到文本上。尽管以二进制形式对HIP进行扭曲和编码,然而HIP 可仍可被逆向操纵。这是因为可至少部分地通过使用反混叠计算将弧的锯齿状边缘 可与文本的平滑边缘区分开来。这样,弧可至少部分地从图像中分段,从而这就降 低了HIP的总安全性和有效性。
现在想象字符和弧均被反混叠,且然后被高速缓存。文本的反混叠通常与弧 的反混叠不同,即使对它们使用相同的反混叠算法。当高速缓存具有反混叠的字符 和弧时,这些反混叠的字符和弧的组合在其相交处生成伪像(由于组合过程)(当 弧被放置在字符上方的时候)。在这些相交处,反混叠具有与非相交处的反混叠不 同的属性。这个差异可用来标识弧—文本相交点。然后,有关这些相交的信息可用 于将HIP中的文本和弧分离开来。HIP上即使小部分弧的移除也会降低由HIP所 提供的安全性,而分割变得更容易了。
然而,若HIP在HIP级被反混叠且被逆向操纵,则在图像的任何部分上采取 的用于弧和文本之间译解(decipher)的动作能以相同方式来影响整个图像。换言 之,弧像素不能与文本像素区分开来。因此,基于反混叠的操作在对HIP逆向操 纵时会是无效的。
由于HIP及其生成方案的目的和特性,服务器可更好地适用于以非常块的步 调(pace)生成下采样的黑白HIP,而同时维持安全性。这是因为服务器本身是非 常块的,它可使用每像素8比特或每像素1比特表示法,或行程长度编码的表示法 和操作,而不是对于彩色图像的每像素32比特操作。由于如今的服务器具有32 位或64位处理器,所以通过使用由这些32位和64位处理器支持的SIMD(单指令 多数据)指令而可进一步增强服务器速度。例如,这里描述的系统和方法可在32位 Intel处理器上使用64位和128位SIMD操作,这由MMX(多媒体扩展)和/或 SSE(流SIMD扩展)和/或SSE2(允许MMX指令工作在128位数据块上工作) 的指令集来提供。
另外,可使用GPU(图形处理单元)来执行扭曲过程以及诸如将纹理添加到 HIP这样的定制。GPU是单芯片处理器,它主要用于计算3D函数。这包括诸如灯 光效果、对象变换以及3D运动这样的操作。因为这些类型的计算对CPU(中央处 理单元)而言是相当繁重的,所以GPU可帮助计算机更有效地运行。这样,如在 图中表明的,HIP形成一般可在服务器—客户
机体系结构的服务器端发生。
基于服务器的HIP生成的进一步加速可通过直接对黑白HIP中的1和0的行 程而非对单个像素进行操作而获得。用于在HIP服务器中位块传送(blit)、加关 键字(key)和扭曲的像素操作可用像素行程的相关联操作来表示。来自基于行程 的HIP服务器的输出允许快速编码成GIF以及其它基于行程的图像编码方案。这 可显著地减少编码开销,并进一步改善服务器性能。最后,某些服务器可被指定或 指派来执行关于特定客户机的某些定制(如色彩)。
客户机端HIP操作可包括任何定制过程,这诸如将纹理、混合(如前景混合 到背景中)、或者色彩添加到HIP中。例如,当查看来自客户计算机上浏览器网 页上的HIP时,可看见色彩,而在服务器上,HIP是灰度级的。这可以是在HIP 向客户机用户
可视化之前,在HIP上执行客户机修改的结果。另外,HIP也可在客 户机上的反混叠,这是由于HIP基于其在服务器上的形成,对逆向操纵是充分安 全的。
尽管没有在图中描述,然而服务器和/服务器+客户机组合可被实现为web服 务,以促进相对于HIP使用的位置独立性。更具体的说,想要保护其网络免受自 动脚本攻击或控制对其计算机的访问的商务和网站所有者可购买任何数量的HIP 以供个人使用或商用。因为可获取高性能HIP生成的好处而没有与运行或维护服 务器来生成它们相关联的花费或开销成本,所以这一点是尤其有利的。
现在将通过一系列动作来描述依照本发明的各种方法,应理解和认识到的是, 本发明并受动作次序而限制,因为依照本发明,某些动作可能会以不同的次序出现 和/或与来自这里所示和所述的其它动作同时出现。例如,本领域的技术人员会理 解并认识到,方法可选择性地被表示为诸如状态图中一系列相关的状态或事件。而 且,并非需要所有示出的动作来实现依照本发明的方法。
现在转到图3,依照本发明的一个方面示出了便于生成HIP的示例性方法300 的修改的流程图。方法300可在305处开始,创建空白HIP。在310处,可基于预 先设置的HIP长度M 315随机地选择M个HIP字符,其中M是大于或等于1的 整数。可从允许的字符320的列表中选择字符的选择。包含Y5BSADVR的合成 HIP序列或组成在325中示出。
在330处,可发生独立字符变换。例如,x和y变换、x和y缩放、和/或相对 于字符中心的旋转可发生并被保存在字符高速缓存335中,或从该字符高速缓存 335中检索。该高速缓存中的字符能以二进制形式来保持并使用。在340处,变换 的字符可被添加到HIP,如345处所示。
在350处,可生成前景弧,且该前景弧被保存在弧高速缓存355中,或从该 弧高速缓存355中检索,其也能以二进制形式被保持。然后,在360处,任何数量 的前景弧可被添加到HIP,如在合成HIP 365中所示的。同样的,在370处,可生 成背景弧,然后将该背景弧保存,用于从弧高速缓存375对其进行快速检索,这类 似于前景弧高速缓存355。在380处,合适数量的背景弧可被添加到HIP,如在合 成HIP 385中示范的。背景弧可显现出与HIP 385中所示的背景色彩相同的色彩。
接下来,在390处,可选择扭曲区域并将该扭曲区域应用到HIP 385。特别地, 扭曲区域的随机子区域可从扭曲高速缓存395中选出。合成HIP图像400就产生 了。能以相对较高的分辨率来执行该扭曲,然后在405处诸如按因子2,或者任何 大于1的整数或非整数来下采样,从而合成HIP 410大约是例如其原始大小的一半。 另外,合成HIP能以灰度级显现。最后,在415处,前景和/或背景色彩和/或纹理 可被添加到HIP 420上,如图所示。
图4中示出了至少部分地由本发明生成的示例性HIP。特别地,HIP 450、460 和470描述这样的高性能HIP,其包括与前景以及背景中的不同量的弧混杂物组合 的六个独立变换的字符。对比色彩已经被添加到前景和背景中,以使HIP从视觉 上更能引起注意。对于HIP 480和490,文本、色彩和色彩混合已经被添加,以进 一步增强其外观。
现在转到图5,依照本发明的一个方面,示出了示例性HIP生成方案500的流 程图。方法500包括在510处预先呈现一组字符和/或弧,作为二进制形式的位图。 在520处,预先呈现的字符和/或弧可被高速缓存在其各自的存储或数据库中。特 别地,被高速缓存在特定存储中的字符可以都是同一种字体。另外,位图高速缓存 可被行程长度编码或被编码为GIF或JPEG,这取决于HIP生成过程的期望速度。
特别地,对字符进行高速缓存可以是相当耗时的过程,其可能会阻碍启动过 程。结果,可从完整HIP中语义分析出字符的至少一个子集,且该字符的子集可 被移动到字符数据库以增加可用字符的数量—当生成新的HIP时。这样,字符数 据库可随时间构建。相反,弧数据库不需要这么多的弧,以至于不需要这么多的时 间,且其可在启动过程期间被构建。这两种数据库均能以特定频率或按所需来刷新, 以改善HIP的安全性。然而,字符数据库可以更低的频率来更新,诸如仅当字符 的字体变化时,或者仅当语言变化时。应当认识到的是,HIP生成方法500是语言 独立的,且其可被扩展以包括任意符号集,诸如方程符号、不同类型的Lego块、 诸如动物和家用物品这样的任意对象、诸如儿童玩具上的原始几何形状(如HIP 可被设计成用于需要识别形状的学龄儿童),等等。
接下来,在530处,具有多个子区域的扭曲区域能以二进制形式被预先计算, 然后被高速缓存在大扭曲区域高速缓存中。不像传统的HIP生成方案,本情况中 的扭曲区域可被转换成整数,这可显著加快HIP的生成速度。在540处,诸如通 过使用以下图6所示的示例性过程,至少可生成第一HIP序列。
然后,在550处,第一HIP可被映射到扭曲区域的至少第一子区域中,以进 行扭曲进程。所选子区域可被随机选择,并从扭曲区域中提取以对这个特定的HIP 序列进行扭曲。HIP序列能以二进制形式被扭曲,这意味着某些直线看似被弯曲。 这些表明HIP序列中锯齿状边缘的伪像,这是剩余在非反混叠状态中的序列的结 果。为克服二进制伪像的效应,在560处,能以高分辨率来执行扭曲,然后对其下 采样,以获取视觉上有吸引力的HIP。
在570处,至少可生成第二HIP序列,然后在580处,该第二HIP序列被映 射到先前用于生成第一HIP的同一扭曲区域的至少第二子区域中。这个第二子区 域也可被随机选择,然后从扭曲区域中提取。在590处,可获取已经完成的HIP。 从那以后,可从HIP中语法分析出一个或多个被扭曲的字符,然后将它们添加到 字符数据库中。否则,过程500可如所需地继续,以至少比传统HIP系统快两个 数量级的速度来生成HIP。
继续转移到图6,依照本发明示出了便于获取可经受扭曲过程的HIP序列的示 例性过程600的流程图。过程600是图5的延续,其可包括在610处从字符高速缓 存中随机选择任何数量的预先呈现的字符。例如,包括字母和/或数字的八个字符 可从该高速缓存中选出。在620处,部分地基于使用低差异准随机数,任何数量的 背景和/或前景弧可被随机地与字符组合在一起。即,弧的放置和定位依赖于先前 放置的弧的位置,以最小化HIP的任何一个区域或位置中的不合需要的弧聚集或 聚类。回想,HIP必须可由人类来解出,而不能由计算机解出。这样,这个较不随 机形式的弧放置可提高而不是降低HIP的总体有效性。
另外,可产生弧,或者将弧添加到HIP序列或相对远离HIP上的文本字符的 图像的区域。HIP图像大小(宽和高),可以比以给定字体显示给定数量的字符的 所必需空间要大得多。这一点可以是有用的,这是因为然后许多弧可被添加到图像 上,以愚弄自动系统认为图像中有其它的字符。这个策略将在这些区域中产生字符 的若干假肯定。一旦字符已经被放置好,不同厚度的不同弧可远离字符所在的位置 而被安全地添加。厚的弧是指其厚度接近或大于用来生成字符的字符字体平均厚度 的弧。从可读性的角度来看,均匀地添加厚的弧是危险的,这是因为当厚的弧与字 符重叠时,更可能使其不可读。可能的相关工作是均匀地添加较薄的弧,并在不与 已放置的字符重叠的情况下均匀地添加较厚的弧。这就帮助保持放置字符是易读 的。由于厚的弧接近字符的平均厚度,所以它们很难从常规字符中区分出来,因此, 它们是对扩散攻击有益的假肯定的主要候选者。远离字符所添加的弧的数量或密度 可被独立调节。
在630处,许多混杂物可被随机选择,并也可依照当前的弧位置而被定位在 HIP上。该混杂物可包括通过以随机或受控的方式来切碎字符而获取的字符位或 块。最后,在640处,HIP序列可被获取。有关示例性八字符HIP的变化可包括比 如通过减少弧和/或混杂物的量来减少字符的数量,而维持HIP图像的大小。这可 进一步改善HIP的性能,因为HIP可看似为相同的大小,但是包含较少的要解出 的字符。
此外,选择字符、弧、混杂物和扭曲区域子区域的随机性可部分地由使用多 个熵随机源的随机数发生器生成的随机数来确定。该随机数发生器可基于不能被推 断或预测或逆向操纵的多个信息而不断更新其自身。例如,信息类型包括当前正使 用多少存储器(如由服务器)、进入或离开网络或服务器的数据类型,等等。随机 数(如密码伪随机数)可成批生成,然后被缓冲,以便获得改善的性能。
为提供本发明各方面的附加环境,图7和下面的讨论旨在提供其中可实现本 发明各方面的合适操作环境710的简短、概括描述。虽然本发明是以诸如由一个或 多个计算机或其它设备执行的程序模块等计算机可执行指令的通用上下文来描述 的,然而本领域的技术人员会认识到,本发明也可组合其它程序模块和/或作为硬 件和软件的组合来实现。
然而,一般而言,程序模块包括例程、程序、对象、组件、数据结构,等等, 它们执行特定的任务或实现特定的抽象数据类型。操作环境710仅是合适的操作环 境的一个例子,并非暗示对本发明的使用范围或功能的任何限制。可适用于本发明 的其它众所周知的
计算机系统、环境和/或配置包括,但不局限于,个人计算机、 手持式或膝上设备、多处理器系统、基于
微处理器的系统、可编程消费者电子设备、 网络PC、小型机、大型机、包括上述系统或设备的分布式计算环境,等等。
参考图7,用于实现本发明各方面的示例性环境710包括计算机712。计算机 712包括处理单元714、系统存储器716以及
系统总线718。系统总线718将包括 但不局限于系统存储器716的系统组件耦合到处理单元714。处理单元714可以是 各种可用的处理器中的任一种。双微处理器和其它多处理器体系结构也可被用作处 理单元714。
系统总线718也可以是多种类型总线结构中的任一种,这包括存储器总线或 存储器
控制器、外围总线或外部总线、和/或使用多种可用总线体系结构的任一种 的局部总线,这包括,但不局限于,11位总线、工业标准体系结构(ISA)、微通道 体系结构(MSA)、扩展ISA(EISA)、智能驱动电子设备(IDE)、VESA局部总线(VLB)、 外围部件互联(PCI)、通用
串行总线(USB)、高级图形端口(AGP)、个人计算机存储 卡国际协会总线(PCMCIA),以及小型计算机系统
接口(SCSI)。
系统存储器716包括易失性存储器720和
非易失性存储器722。基本输入/输 出系统(BIOS)包含诸如在启动时在计算机712内的元件之间传递信息的基本例 程,被储存在非易失性存储器722中。作为说明,而并非限制,非易失性存储器 722可包括
只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、 电可擦除ROM(EEPROM),或者闪存。易失性存储器720包括
随机存取存储器 (RAM),其用作外部高速缓存存储器。作为说明,但并非限制,RAM以多种形式 可用,诸如同步RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数 据速率SDRAM(DDR SDRAM)、增强型SDRAM(ESDRAM)、同步链接 DRAM(SLDRAM)以及直接存储器总线RAM(DRRAM)。
计算机712也包括可移动/不可移动、易失性/非易失性计算机存储介质。例如, 图7示出盘存储724。盘存储724包括,但不局限于诸如磁盘
驱动器、
软盘驱动器、 磁带驱动器、Jaz驱动器、Zip驱动器、LS-100驱动器、闪存卡或存储条等设备。 另外,盘存储724可包括单独的存储器介质或与其它存储介质相结合,这包括,但 不局限于,诸如光盘ROM设备(CD-ROM)、CD可记录驱动器(CD-R驱动器)、CD 可重写驱动器(CD-RW驱动器)或者数字多功能盘ROM驱动器(DVD-ROM)等光盘 驱动器。为便于盘存储设备724连接到系统总线718,通常使用诸如接口726这样 的可移动或不可移动接口。
应当认识到的是,图7示出了用作用户和合适的操作环境710中描述的基本 计算机资源之间的中介的软件。这样的
软件包括
操作系统728。操作系统728可被 储存在盘存储724中,其用来控制和分配计算机系统712的资源。系统应用程序 730利用了操作系统728通过储存在系统存储器716或盘存储724中的程序模块732 和程序数据734对资源的管理。应当认识到,本发明可用各种操作系统或操作系统 的组合来实现。
用户通过一个或多个输入设备736将命令或信息输入到计算机712中。输入 设备736包括,但不局限于,诸如
鼠标、跟踪球、触针、触摸垫等定位设备、
键盘、 麦克风、操纵杆、游戏垫、圆盘式
卫星电视天线、
扫描仪、TV调谐卡、数码照相 机、数码录像机、web
照相机等等。这些和其它的输入设备通过系统总线718经由 接口端口738与处理单元714相连。接口端口738可包括如串行端口、并行端口、 游戏端口以及
通用串行总线(USB)。输出设备740使用某些与输入设备736相同类 型的端口。这样,例如,USB端口可被用来将输入提供给计算机712,并将来自计 算机712的输出信息提供给输出设备740。提供了输出适配器742,以说明有某些 输出设备740,,如监视器、扬声器、
打印机、以及需要特殊适配器的其它输出设 备740。输出适配器742包括,作为说明,但并非限制,提供输出设备740和系统 总线718之间的连接装置的视频
和声音卡。应当注意的是,诸如远程计算机744 等其它设备和/或设备的系统均提供输入和输出能力。
计算机712可在使用到诸如远程计算机744这样的一台或多台远程计算机的 逻辑连接的网络化环境中操作。远程计算机744可以是个人计算机、服务器、路由 器、网络PC、工作站、基于微处理器的设备、对等设备或其它公用网络
节点等等, 且其通常包括相对计算机712示出的多个或全部元件。为简单起见,仅对远程计算 机744示出了存储器存储设备746。远程计算机744通过网络接口748逻辑上与计 算机712连接,然后通过通信连接750进行物理连接。网络接口748包含诸如局域 网(LAN)和广域网(WAN)这样的通信网络。LAN技术包括光纤分布式数据接口 (FDDI)、
铜分布式数据接口(CDDI)、以太网/IEEE 1102.3、令牌环/IEEE 1102.5等 等。WAN技术包括,但不局限于,点对点链路、诸如综合业务数字网和其变体等
电路交换网络、分组交换网络,以及数字用户线(DSL)。
通信连接750是指用来将网络接口748连接到总线718的硬件/软件。虽然为 了说明的清楚,通信连接750被示出为在计算机712的内部,但是其还是可在计算 机712的外部。连接到网络接口748所必需的硬件/软件包括,仅作为例子,诸如 包括常规电话级
调制解调器、线缆调制解调器和DSL调制解调器等调制解调器、 ISDN适配器以及以太网卡等内部和外部技术。
上面已经描述的包括本发明的例子。当然,不可能为了描述本发明而描述组 件或方法的每个可想象的组合,但是本领域的普通技术人员会认识到,本发明许多 其它组合和变化也是可以的。因此,本发明旨在包含落入所附
权利要求书的精神和 范围内的所有这样的变化、修改和变更。此外,在详细描述或权利要求书中使用术 语“包括”的意义上,该术语要为包括性的,与术语“包含”在用作权利要求书中 的过渡词时被解释为“包含”的方式类似。