网络音频 API 是在浏览器中处理音频的强大工具,提供处理、合成和分析音频信号的能力。该技术最初用于创建交互式音效、游戏和音乐应用程序,现在已应用于反欺诈系统,其功能可识别设备的独特特征。 #### 网络音频 API 的历史和目的 网络音频 API 于 2010 年代初作为 HTML5 规范的一部分被引入。其开发目的是取代 Flash 等传统技术,为创建音频内容提供高性能和多功能性。 2011 年,谷歌在 Chrome 浏览器中首次引入了该技术。到 2014 年,Web Audio API 成为所有现代浏览器支持的标准。 Web Audio API 的主要目的是创建和处理实时音频,包括生成声音、添加效果和分析音频数据。 不过,与 Canvas 一样,Web Audio API 的一个意想不到的应用是在反欺诈系统中,其功能可用于唯一识别用户的设备。 #### Web Audio API 技术能力 Web Audio API 为开发人员提供了大量处理声音的工具: - **声音生成 ** 创建简单和复杂的声音,包括合成器效果。 - **音频处理:**应用混响、滤波器和均衡等效果的能力。 - **分析音频数据。**Web Audio API 允许你实时分析音频信号,获取频率响应和振幅数据。 这些功能使 Web Audio API 成为游戏、多媒体和互动应用程序的多功能网络开发工具。 #### Web Audio API 与反欺诈:防范欺诈者 反欺诈系统使用 Web Audio API 创建音频指纹,这是设备的数字指纹,有助于唯一识别用户。 #### 网络音频 API 如何帮助识别用户? 当浏览器生成音频或分析音频信号时,每台设备对音频的处理略有不同。这是硬件和软件特性造成的: - 数字信号处理器 (DSP) 的差异。 - 使用不同的音频卡驱动程序。 - 浏览器中网络音频 API 实现的特殊性。 这些因素导致不同设备处理的相同音频包含可被捕获的独特特征。反欺诈系统利用这些特征,通过分析音频信号的频率和时间特征来创建设备指纹。 #### 网络音频指纹欺骗技术 试图绕过反欺诈系统的攻击者会使用各种方法来欺骗音频指纹: - **信号失真。**在音频信号中嵌入微小变化,使设备指纹看起来独一无二。这可能是改变振幅、相位或添加噪音。 - **使用预先录制的数据。**预先录制的音频信号可以欺骗音频的实际呈现,产生虚假数据。这种方法很难检测到欺骗行为,因为信号看起来是正确的。 - **音频硬件仿真。**仿真程序可以创建与真实设备相同的音频指纹,从而绕过验证。 #### 反欺诈系统如何检测指纹欺骗? 反欺诈系统使用多种方法检测篡改行为: - **频率响应分析。**通过比较音频信号的频谱图,系统可以检测出人为篡改数据的异常特征。 - **动态信号生成。**实时生成音频信号,然后对其处理过程进行分析。此类测试较难伪造,因为需要设备快速响应。 - **与参考数据比较。**系统将信号处理结果与预期特性进行比较,评估偏差。 #### 动态音频信号 动态测试涉及音频特性(如频率或振幅)的变化,增加了欺诈者的难度。通过这些测试,您可以实时评估设备性能,并识别信号处理中的不一致之处。 #### WebAudio 指纹分析 让我们在 Chrome 浏览器中打开 browserleaks.com/javascript 页面,看看使用 Web Audio API 可以获取用户的哪些数据:  让我们在反检测浏览器中打开该页面:  本网站使用网络音频 API 技术接收少量信息。 让我们在英特尔电脑上用 Chrome 浏览器打开测试页面 test-webapi.tech/audiofull:  在该页面的 “媒体设备 ”下,我们可以获得有关设备的信息。在音频指纹 (HEX) 部分,我们可以获得用不同工作进行的两次计算结果的长度(指纹长度),以检查设备的能力(指纹长度),以及对计算结果和设备参数值进行编码后得到的 MD5 哈希值。在音频上下文数据部分,我们可以看到使用网络音频 API 获取的设备参数及其值。 让我们在不使用噪音的反检测浏览器中打开该页面:  我们可以注意到,音频指纹(HEX)结果是吻合的,我们的反检测浏览器没有欺骗计算结果。但奇怪的是,反侦测浏览器配置文件的 “媒体设备 ”部分没有音频输出设备。 让我们在反检测浏览器中使用音频噪声覆盖重复检查:  我们可以看到,包含计算结果的字符串长度明显增加,MD5 哈希值也发生了变化。我们可以得出结论,反检测浏览器成功修改了音频指纹。 为了了解反欺诈系统如何对这种变化做出反应,让我们检查一下其他桌面设备上的结果。 AMD 电脑:  AMD 笔记本电脑  英特尔笔记本电脑  请注意,我们在台式设备上获得了相同的音频足迹。 让我们继续检查移动设备:    对于移动设备,音频指纹的差异比台式机设备更常见,但值得注意的是,指纹长度值在不同设备类型中的差异很小,这与噪声叠加反检测浏览器中结果字符串的长度不同。 #### 网络音频 API 噪音检测 根据我们前面给出的测试结果,我们可以注意到,当施加噪音时,结果字符串的大小会显著增加,反欺诈系统可将此视为与预期结果不符。让我们试着了解一下反欺诈系统如何才能更准确地检测出音频打印中使用的噪声。 让我们在电脑上用Chrome浏览器打开我们的 test-webapi.tech/audiotamper 测试页面:  让我们在没有噪声叠加的反检测浏览器中打开相同的页面:  让我们使用音频足迹中的噪声重复测试:  在这项测试中,我们使用了以下方法来确定噪声:我们检查了在不同设备上不应该发生变化的打印部分,并将其与参考值进行比较。使用噪点时,打印件中这些部分的某些值会发生变化,这样就很容易检测到欺骗行为。 检测欺骗的另一种方法是获取音频特性的真实值,并将其与浏览器属性中的声明特性进行比较。让我们尝试执行这项测试,在 Chrome 浏览器中打开 test-webapi.tech/audiodetect 页面:  让我们运行测试  让我们在不使用噪声的反检测浏览器中打开相同的页面:  让我们在使用了噪点的反检测浏览器中重复测试:  类似这样的测试可以通过测量值的差异,并将其与特定测试的可接受值进行比较,从而检测出音频属性值的欺骗行为。 #### 结论 在本文中,我们探讨了反欺诈系统中如何使用音频指纹。网络音频 API 并非独一无二,反欺诈系统无法使用它准确识别用户。同时,在音频指纹中使用噪音的检测方法非常简单,反欺诈系统可以轻松识别使用欺骗手段的用户。 在下一篇文章中,我们将继续分析反欺诈系统中使用的浏览器技术。 *Bannykh M.V.*