现代反欺诈系统使用数十种信号遥测通道,包括画布渲染。 虽然之前的方法依赖于静态画布指纹识别,但如今主流平台正在转向下一代动态协议,例如 Picasso。 在本文中,我们将解释 Picasso 动态画布挑战的工作原理、反欺诈系统如何检测渲染欺骗和噪声,以及为什么这种机制已成为反欺诈标准。 #### 为什么静态画布方法已经过时 传统的画布指纹识别工作原理如下:页面渲染预先准备好的图像(文本、形状和其他元素),然后计算像素数组的哈希值。我们在之前的文章中对此进行了详细介绍。由于图形堆栈的特殊性,不同的设备会产生不同的结果。但如今,这种方法几乎无法用于反欺诈,因为:反检测工具可以动态替换画布,插件可以添加噪声使指纹独一无二,而且机器人可以模拟静态图像。因此,反欺诈系统越来越多地采用动态画布渲染。 #### Picasso:动态画布挑战 Picasso 不是指纹,而是一个挑战程序,类似于密码学问题,每次运行的结果都是独一无二的。 在静态画布方法中,绘制的图像始终相同。 在 Picasso 中,每次运行都会创建一个新的、独一无二的图像,该图像由多个步骤组成。 在静态画布中,没有种子(用于生成图像的初始数字)——图像始终相同。 在 Picasso 中,服务器每次都会生成一个新的种子,从而使每次挑战都不同。 在静态画布中,结果始终相同;您可以简单地记住它并伪造它。 在 Picasso 中,结果每次都不同,因为它取决于种子和一系列操作。静态画布试图识别特定设备(类似于设备指纹)。 Picasso 会验证设备是否真实地渲染图形——即它是否与声称的设备相符。 静态画布很容易被伪造或修改,例如使用扩展程序、反检测技术和模拟器。 Picasso 几乎不可能被欺骗;它是动态的,每次都会生成新的结果,并且服务器知道每个设备的预期结果。 #### Picasso 画布的工作原理: **服务器发送挑战参数** 服务器生成: • 画布大小, • 轮数 N, • 种子(伪随机数生成器的初始值), • 一组参数(字体、阴影、配色方案)。 这些参数取决于反欺诈策略,并且仅使用一次。 **客户端确定性地渲染“画作”** 在设备上运行的代码: • 基于种子初始化伪随机数生成器; • 随机选择要绘制的内容(弧线、文本、形状、渐变、表情符号); • 应用变换和阴影; • 重复此过程 N 次。 每个设备生成的形状序列相同,但绘制方式不同,原因如下: • GPU 不同, • 每个设备上绘制帧的图层拼接方式不同, • 抗锯齿算法不同, • 字体渲染不同, • 浮点数舍入方式不同。 **客户端发送结果的哈希值** 画布绘制完成后,会计算一个哈希值;这并非指纹,而是渲染测试的结果。 **服务器将结果与设备配置文件进行比较** 服务器不会比较哈希值的相等性。这是不可能的,因为每次生成的种子都是新的。服务器会根据哈希值的属性(iPhone Safari 集群、Android Chrome 集群、Chrome 桌面集群)比较其分布情况。 #### 反欺诈系统如何分析 Picasso 画布渲染结果 反欺诈系统基于大量预先收集的参考渲染结果,知道给定种子下每种设备类别的图像应该是什么样子。服务器采用间接而非直接的方式分析哈希值。 服务器通过了解种子和形状顺序,即可知道预期结果。服务器会将实际哈希值与特定堆栈(浏览器 + 操作系统 + GPU)的预期哈希值集群进行比较。如果哈希值与集群不匹配,反欺诈系统会得出相应的结论。 任何篡改画布的尝试都会导致异常输出。与物理 GPU 渲染不同,CanvasBlocker 等插件会添加均匀的、不相关的伪随机噪声,这会显著改变渲染结果的哈希值。在模拟器中,伽马校正器、亚像素抗锯齿和梯度伪影与真实 GPU 上的有所不同。 #### Picasso canvas 使用示例 在验证码页面上,Yandex 网站使用了 Picasso canvas,而且不止一个。用户的浏览器需要渲染四个 300x300 像素的 Picasso canvas 和一个 240x140 像素的静态 canvas。       在这个例子中,反欺诈系统结合了静态和动态画布。 在这种架构中,可以使用静态画布来构建更精确、更稳健的设备集群,同时在该集群内分析动态画布挑战的结果。 采用这种方法,试图在反检测浏览器中伪造静态画布的输出是徒劳的:设备仍然会被错误分类,动态检查会揭示声明的堆栈与实际渲染之间的差异。 DataDome 也使用了类似 Picasso 的动态画布。由于 PayPal 是 DataDome 的正式客户之一,因此该机制也包含在 PayPal 服务上运行的保护措施中。  请注意,在这种情况下,系统会在每次 Picasso 挑战后记录渲染结果,并通过比较这些结果来识别特征噪声以及试图伪造或扭曲输出数据的尝试。 #### 结论: Picasso 的动态画布已成为现代反欺诈控制的关键工具,因为它不仅检查可伪造的值,还检查图形堆栈本身的行为。与传统的静态指纹不同,Picasso 无法被简单地伪造、保存或复制——每次挑战都是独一无二的,最终结果取决于 GPU、浏览器和操作系统的实际特性。 这就是为什么大型公司和反机器人平台都在转向此类方法的原因。它们不仅能够更准确地识别真实设备,还能检测任何干扰渲染的企图。