0%

paper-WCH20

前言

开题报告令人头大。

乱七八糟事情鸽了好几周的论文。

这篇是今年 CCS 最新的语音重放论文,简单复现了一部分发现效果有点好……之后还要看 ASVSpoof 2017 和 2019 的使用。然后自己手动 MATLAB 复现一下 Void。

1 基本信息

1.1 论文来源

S. Wang, J. Cao, X. He, K. Sun, and Q. Li, “When the Differences in Frequency Domain are Compensated: Understanding and Defeating Modulated Replay Attacks on Automatic Speech Recognition,” in CCS ’20: 2020 ACM SIGSAC Conference on Computer and Communications Security, Virtual Event, USA, November 9-13, 2020, 2020, pp. 1103–1119, doi: 10.1145/3372297.3417254.

1.2 概述

以往的语音重放检测方案通常基于扬声器在频谱上的一些特征来区分重放语音,而本篇提出了一种可以绕过任意以往基于频域的检测方案的攻击方法:调制重放攻击(Modulated Replay Attack)。方案的基本思路是 使用一个针对扬声器特性定制的Inverse 滤波器来补偿电子扬声器带来的频率扰动。作者在现实场景下的智能设备上所做的实验证明,该方案可以绕过现有的基于频域上可疑特征进行分类的重放方案方案。为了应对这种攻击,作者又设计实现了一种防御方案:DualGuard。作者发现并正式证明了无论重放语音怎么调制,重放语音都会留下时域上的振铃效应或者频域上的频谱扰动。所以,通过结合对频域和时域的检测,DualGuard可以检测包括调制重放攻击在内的各类重放攻击。作者在ReSpeaker Core v2上实现了DualGuard的原型,实验结果显示在检测调制重放攻击上可以达到 98%的准确度。

PS:基本思路就是扬声器在播放语音时,不同频率的响应是不一样的,即某一频率的信号幅值与原始信号幅值的比值在不同频率是不一样的,那我们通过对不同频率的信号进行放大或压制,保证不同频率的频率响应一致,最后播放出来的语音信号与原始语音信号的频谱形状就不会改变,因为只是幅值的线性变化。这样就可以绕过很多检测方案。

2 论文要点

2.1 背景

  1. 为了防御语音重放攻击,研究者们已经提出了许多方案。比如 Linear Prediction Cepstral Coefficient (LPCC) , Mel Frequency Cepstral Coefficient (MFCC) , Constant Q Cepstral Coefficients (CQCC) , 和 Mel Wavelet Packet Coefficients (MWPC) ,这些方案检测语音信号频率特性的异常来对语音进行区分。此外还有针对高频子带幅频特性的方案以及低频能量的方案。整体来讲,现有方案均是基于频域特征进行检测,并且对于已知的重放攻击效果不错。(注:不知道为什么本文所引用的文献中没有提到近些年在安全顶会上的方案,比如之前几篇笔记中所提到的。而其中大部分文献来自 INTERSPEECH,其余则出自一些语音领域的会议。)
  2. 频率响应:频率响应代表了一个系统或设备对于一个冲激信号所输出的频率和相位。即,信号通过系统后的输出幅频谱是原始幅频谱与系统幅频响应之间的乘积。

2.2 价值

  1. 本文提出了一种针对ASR系统的新颖 调制重放攻击(Modulated Replay Attack)。攻击利用一种基于软件的 Inverse 滤波器来抵消扬声器在频域上带来的可疑特征。通过对扬声器通带上不平坦的频率响应进行补偿均衡,可以使得扬声器播出的声音与原始声音非常接近,从而绕过现有的重放检测方案。
  2. 作者设计了一种新颖的重放防御系统:DualGuard。DualGuard可以检测任何重放攻击,包括上面提到的调制重放攻击。该系统同时在频域和时域进行检查重放语音的特征。作者形式化地证明了重放攻击不可能同时逃过频域和时域的检测。
  3. 作者通过使用多个重放设备实验调制重放攻击,证实了方案的有效性和效率:可以绕过现有的重放检测机制。同时,作者还实现了DualGuard的原型,并且展示了DualGuard在检测各类重放攻击上的效率及有效性。

2.3 问题陈述

  1. 现在已经有许多优秀的重放检测方案,大多基于频域上的特征进行检测,有没有什么方法绕过现有基于频域特征的重放检测方案?
  2. 如果有方法能够绕过现有的重放检测方案,如何设计防御手段来防御这种攻击?

2.4 方法

首先是调制重放攻击。调制重放攻击与传统重放攻击的区别在于录制语音要经过调制后再去重放。而这个调制过程要根据使用的重放设备进行定制。每个重放设备都有着不同的幅度频率响应,即对于相同幅值,不同频率的信号在重放出来后,会得到不同的增益,幅值变得不同了。所以我们设计一个 Inverse 滤波器,基本思路就是对幅度频率响应求倒数,然后对于不同频率的信号,与倒数相乘,然后保存起来,再做重放。这样重放出来后,扬声器带来的幅频扰动就被抵消了,因为每个频率的响应都被乘了一个倒数,使得最后的幅频响应变得平坦,即所有频率的幅频响应都是一个常数。这样,重放出来的语音频谱就会和真实人声非常接近了。

接下来是 DualGuard 的设计。DualGuard 顾名思义就是在时域和频域同时进行防御。时域上,作者设计了一个叫做局部极值比,Local extrema ratio (LER) 的特征,具体算法就是在时域上遍历每一个采样点,如果一个采样值是附近一定大小的窗口内的极值,就称这个采样点是局部极值。那么在整个输入信号段内,局部极值采样点的比例就是 LER。可以理解,如果窗口设的比较小,那么锯齿形的波形就会出现很多局部极值,进而导致 LER 变大。DualGuard 在时域上的防御就利用了 LER 进行分类,由于重放语音会有振铃效应,使得时域上的重放信号会有较高的 LER,我们就可以对其进行分类。作者采用了 SVM 进行分类。在频域上的防御主要应对传统的重放攻击,思路在于区分人声与电子扬声器之间的音色(timbre)。由于发声机理的不同,人声的能量主要集中在低频带,而重放语音的能量则会被分散到整个语音频率范围。

2.5 结果

作者自主采集数据集,使用 TASCAM DR-40 进行采集,默认采样率 96kHz。使用重放设备:iPhone X, iPad Pro, Mi Phone 4, Google Nexus 5, Bose Soundlink Micro, and Samsung UN65H6203 Smart TV。为了开展调制重放攻击,作者采集了 6 个重放设备的室内数据集,每个重放设备录制 222 条调制重放音频与 222 条传统重放音频。所以音频在安静实验室环境下录制,评价标准采用 10-fold 交叉验证。

下图是原始音频、普通重放音频与调制重放音频的归一化幅频谱,可以看出调制后的音频与原始音频相似很多。

image-20201224155703326

下表是不同重放检测方案对于传统重放攻击以及调制重放攻击检测的准确度。

image-20201224160013478

3 评论

3.1 局限性

本篇对使用场景没有做约束,尽管如此,没有对不同距离下的录制重放进行评估。噪声环境下的测试也有些理想:直接使用高斯白噪声模拟现实世界的噪声,尽管这样保证了稳定的实验效果,但是可能与现实世界的噪声还是有差距。此外,稳定性的评估等都是在安静室内完成,室外开阔场景或者走廊等狭窄场景如果能做更多评估比较会更有说服力。此外,所有的评估一反往常选用了Accuracy,而不是以往的 EER,使得很难与以往的方案进行对比。在 ASV Spoof 2017 与 2019 的标准数据集下的准确率为 87.13% 与 83.80%,也许不够高?但是因为没有采用 EER,这里不太便于比较。

3.2 启示

  1. 本篇创新的提出了调制重放攻击,使得传统重放攻击的威力变得更强。USENIX 2020 中的 Void 方案提到自己的局限性时,说如果攻击者能够对重放进行均衡,也可能能够绕过 Void,但是这些对信号处理技术要求过高。可能他们也没有想到一年后就会有人实现了这种攻击吧。下面是原文:

    Our audio EQ manipulation attack results (see Section 8.4) showed that carefully crafted adversarial attacks that involve altering frequency responses, or exploiting SVM gradients may be performed to compromise Void. However, such attacks would require strong signal processing expertise.

    但是现在回头看 Void 中对于均衡的模拟有些过于简单(仅对某个频段做固定比例的放大),所以导致攻击效果不好。

  2. 在防御上,能够新颖的想到从时域上做防御,并且根据振铃效应的特点设计了一个并不复杂的特征,达到了很好的效果。此外,也许之后其他的研究也可以参考使用两个域上的特征,包括本文未使用的相位特征。

4 个人笔记

sinc 函数的定义:
$$
sinc(t)=\left{
\begin{aligned}
\frac{\sin\pi t}{\pi t} & , & t\neq0, \
1 & , & t=0.
\end{aligned}
\right.
$$