最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

基于内容关联密钥的数字音频加密算法研究

IT圈 admin 28浏览 0评论

2024年1月21日发(作者:池青曼)

华 中 科 技 大 学 硕 士 学 位 论 文

摘 要

随着移动技术的发展,VoIP技术逐渐成熟,防窃听意识、音频版权保护意识也逐渐增强,大量的音频数据在移动设备上传输,信息安全已成为人们日益关心的话题,而目前关于数字音频的加密算法研究却还远不够深入。传统的加密算法模式固定,一个密钥对应多个文件,在处理海量数据时存在安全隐患;内容关联密钥技术不完全依赖于计算复杂度,且适合对海量数据处理,但加密效果依赖于文件格式,例如处理PCM数据时表现不佳。

通过结合AES加密算法及内容关联密钥思想,针对两种典型的音频数据格式PCM和AAC,提出了一种Android平台上数字音频加密的新思路。PCM数据未经编码,不包含文件头,通过AudioRecord将信号实时录制到缓冲区,对每一个2048字节的缓冲区数据以128位密钥、ECB非填充模式进行AES加密,使数据混淆,并依据线性同余伪随机函数生成的随机数进行内容抽取加密,使数据缺损。缺损数据几乎无法通过AES解密恢复成明文,从而达到加密效果。AAC经过编码后,含有文件头,通过MediaRecorder将信号录制成AAC_ADTS文件格式,解析音频帧头部的标志位,获取数据部分的起止点,对其进行分组并按上述操作方式执行分组加密。

实验中,在不同的条件下对两种明文数据作加密处理,经过多次测试及对比分析,针对PCM数据,AES结合内容关联密钥思想的加密方式加密效果极佳,同时极大提升了数据的安全性;针对AAC数据,即使不使用AES加密,在保证一定抽取比例的情况下,也能达到很好地加密效果。

关键词:数字音频;AES加密;内容关联密钥

I

华 中 科 技 大 学 硕 士 学 位 论 文

ABSTRACT

With the development of mobile technology, VoIP technology has gradually matured,

anti-eavesdropping awareness, audio copyright protection awareness has also gradually

increased, a large amount of audio data is transmitted on mobile devices, information

security has become a topic of increasing concern, and currently on digital audio the

research on encryption algorithms is still far from deep. The traditional encryption algorithm

mode is fixed, and one key corresponds to multiple files. It has security risks when dealing

with massive data. The content-associated key technology does not depend entirely on

computational complexity, and is suitable for processing massive data, but the encryption

effect depends on the file formats, such as poor performance when processing PCM data.

By combining the AES encryption algorithm and the content-associated key idea, a

new idea of digital audio encryption on the Android platform is proposed for two typical

audio data formats, PCM and AAC. The PCM data is unencoded, does not contain the file

header, and the signal is recorded to the buffer in real time through AudioRecord. AES

encryption is performed on each 2048-byte buffer data in 128-bit key and ECB unfilled

mode, which confuses the data. The content-associated encryption algorithms are performed

according to the random number generated by the linear congruential pseudo-random

function, so that the data is defective. The defect data can hardly be restored to plaintext by

AES decryption, thus achieving encryption. After encoding, AAC contains the file header,

records the signal into AAC_ADTS file format through MediaRecorder, parses the flag bit

of the audio frame header, acquires the start and end points of the data part, groups it and

performs block encryption according to the above operation mode.

In the experiment, the two plaintext data are encrypted under different conditions.

After many tests and comparative analysis, the encryption method of AES combined with

the content-associated key idea is excellent for PCM data, and the security of the data is

greatly improved. For AAC data, even if AES encryption is not used, a good encryption

effect can be achieved while ensuring a certain extraction ratio.

Key words:Digital audio; AES encryption; Content-associated key

II

华 中 科 技 大 学 硕 士 学 位 论 文

目 录

摘 要 ............................................................................................................... I

ABSTRACT .................................................................................................... II

1 绪论

1.1 研究背景及意义 .................................................................................... (1)

1.2 国内外研究现状及发展方向 ................................................................ (2)

1.3 本文主要内容和结构安排 .................................................................... (4)

2 相关技术研究与分析

2.1 音频处理基础......................................................................................... (5)

2.2 Android音频录制及播放 ...................................................................... (7)

2.3 密码技术分析......................................................................................... (9)

2.4 本章小结 ............................................................................................... (13)

3 内容关联密钥数字音频加密算法

3.1 总体设计 ............................................................................................... (14)

3.2 数据格式分析....................................................................................... (16)

3.3 内容抽取算法设计 .............................................................................. (21)

3.4 加密算法性能分析 .............................................................................. (29)

3.5 本章小结 ............................................................................................... (32)

4 音频加解密实现与测试

4.1 实验环境及测试工具 .......................................................................... (33)

4.2 Android音频录制采集 ........................................................................ (33)

4.3 PCM数据加密仿真实验 ..................................................................... (36)

4.4 AAC数据加密仿真实验 ..................................................................... (40)

4.5 加密时间性能分析 .............................................................................. (44)

4.6 音频质量参数分析 .............................................................................. (45)

III

华 中 科 技 大 学 硕 士 学 位 论 文

4.7 本章小结 ............................................................................................... (48)

5 总结与展望

5.1 全文总结 ............................................................................................... (49)

5.2 课题展望 ............................................................................................... (49)

致谢 .............................................................................................................. (51)

参考文献...................................................................................................... (52)

IV

华 中 科 技 大 学 硕 士 学 位 论 文

1 绪论

1.1 研究背景及意义

随着4G甚至5G时代的到来,移动行业飞速发展,即时通讯及语音通话技术VOIP也逐渐成熟[1],给人们的生活带来了诸多方便。然而技术快速发展的背后,也包含着人们的担忧,大量的语音数据在互联网中明文传输,随时面临被窃听的风险,历史上窃听事件不计其数[2],移动通讯安全形势愈加严峻;另一方面,人们的版权保护意识也越来越强,当今世界是一个知识付费的年代,国家也出台了一系列保护知识产权的政策,监管手段也不断提升,版权环境越来越优化,然而这还远远不够,国家政策、企业制度、全网监测以及加密技术,都需要共同发挥作用。

人们对信息安全的意识越来越高,然而目前针对数字音频的加密技术的研究还远远不够。语音加密技术已被研究多年[3][4],传统的音频加密算法安全性逐渐降低[5][6],渐渐地无法满足人们的需求,还需要进行更多更深入地研究。同时由于移动设备的普及和科学技术的成熟,人们几乎已经抛弃了传统的固定电话模式,通过移动设备进行语音通话,并且越来越多的用户不再使用随身听,MP3等音乐播放工具,而是将选择将数据存储到移动设备上。也就是说,移动设备上的音频数据越来越多,或者是基于字节流的形式通过网络传输协议转发,或者是基于文件的形式存储在本机上,一旦用户将这些明文数据保存在手机上并被不法分子窃取,可能就会被公之于众并进行非法操作,造成的后果无法估量。

因此,如何有效地保证用户数据的安全性成为亟待解决的问题[7],有必要对传统算法进行优化,研究出一种新型的音频加密算法,并且需要考虑到以下因素:

(1)移动设备的处理性能。相比于PC的高性能处理器,移动设备性能受限,设计的算法计算复杂度不能太高,要保证其在移动设备上能畅通无阻良好运行。

(2)加密传输的时延。语音通话时,高时延对用户体验影响极大,超过300ms用户就能感觉到明显的卡顿[8]。

(3)密文数据的安全性。加密算法应具有一定的复杂性,保证较高的加密强度,使得密文与原始数据差别很大,无可寻规律。

1

华 中 科 技 大 学 硕 士 学 位 论 文

(4)数据的一致性。音频数据的编码涉及到有损压缩和无损压缩,在加密前和解密后数据内容应当完全一致,所以需要考虑数据加解密与编解码的时机。

综上,一个性能优良且安全稳定的加密算法能极大地提高音频数据的隐私性,在为用户提供一个安全的语音通话环境、出品方的音乐版权保护等方面都能发挥极大的作用。

1.2 国内外研究现状及发展方向

历史上,人们对音频数据的加密做了众多的研究。最常见的就是采用对称密钥技术以及非对称密钥技术[9],首先将原始音频数据进行编码压缩,然后采用AES和RSA等加密算法对明文数据进行加密,然后通过网络发送传输。对称加密算法的原理已经为人所熟知,每次只针对小部分数据进行处理,且目前计算机的处理速度极快,所以AES加密效率很高[10][11],但是进行数据交换时,双方一定要提前对密钥进行确认并做好保密措施,一旦密钥遭到泄露,数据安全性也就无法得到保证。并且,如果用户每次使用对称加密算法时密钥数量少,则很容易遭到破解;而每次都使用其他人不知道的密钥时,容易使得接收方、发送方所拥有的密钥数量极为庞大,密钥管理成难题。而非对称加密与对称加密相比[12],安全性更好,但是加解密效率不高,加密时间较长,对海量数据的处理力不从心。

随着多媒体技术的不断发展,音频编解码标准也进行了更新换代[13]。音视频加密技术也随之不断地发展。国内的数字音频加密研究已取得一定的成果。早在2001年,向辉、石教英等基于随机置乱提出了一种MPEG音频快速加密算法[14],由于将加密算法嵌入在MPEG音频编解码过程中,意味着对已经编码的数字音频是没有办法以这种方式处理的,具有一定的局限性。在2005年,聂海英等提出了一种基于数字混沌密码的音频信号加密理论[15],将混沌动力学的加密算法中基于PRNG-s和基于逆混沌系统这两种混沌密码引入到音频加密中,虽然算法取得了一定的效果,但是只能对未经编码压缩的原始数据进行处理。2006年,钟金钢、陈家楠等人提出了全数字全息术在音频信息加密中的应用[16],其原理是通过MATLAB内置函数wavread将音频数据转化为一维数据,再将所得的一维数据保存为二维图像数据,再利用全数字全息技术对该图像数据进行加密处理,该方式实现难度较大,目前来说不适用于移动端的数字音频加密。2015年,田举等提出了量子音频加密算法的研究[17],通过引入音2

华 中 科 技 大 学 硕 士 学 位 论 文

频的量子表示模型,利用双随机相位编码技术,分别在时域和傅里叶频域对音频数据加密,其在安全性、鲁棒性和计算复杂度上都有很大优势,但量子技术未进入实际应用中,该算法缺乏一定的实际应用价值。

在国外,2003年,Servetti.A等人在IEEE上发表了一篇压缩音频的频率选择性部分加密的文章[18],利用MPEG音频的低复杂度部分,通过限制信号的频率来获得样本质量,在不改变音频比特流的兼容性的情况下实现样本质量,但其加密方式过于简单,安全性较低,且不适用于原始数据。2013年,Shine P James等人提出了一种安全的压缩音频选择性加密方式[19],使用基于LFSR和分区模数电路的修改密钥流生成器,利用单个种子生产的多个密钥对MP3比特流的一部分进行加密,但是文章只对MP3作了分析,没有提出该加密方式在整个音频加密中的普适性。2014年,Shine P James等又提出了一种基于LFSR的交替步进发生器的音频加密技术[20],选择交替步进发生器ASG作为用于该应用的密钥流发生器,并与LFSR结合,对数字音频的不同帧使用不同的密钥流,所提出的加密方法可以应用于任何音频编码系统,并保持标准兼容性,其缺点是密钥序列复杂度太大,加密操作相对简单。

过去的加密算法还存在许多缺陷:许多音频加密算法需要针对特定的格式,有多数算法是将加密过程结合到编码的过程中的,不能对已经压缩编码的数据作加密处理,一般地都是使用同一个密钥对多个文件进行操作,安全性较低。未来加密算法的研究可能会更倾向于对不同音频格式的兼容性,以及增加密钥的复杂性,并且需要考虑将加密过程与编码过程分离,从而保证能适用多种情境。

1.3 本文主要内容和结构安排

第一章,绪论。主要叙述内容关联密钥音频加密算法的研究背景及意义,简要介第二章,相关技术研究与分析。主要阐述实验中涉及到的理论基础,实现方法等,绍其国内外研究现状及未来可能发展的方向,并对本文的内容及结构进行简要描述。

分析计算机对自然界中的声音的处理及播放的过程,以及PCM编码如何将模拟信号量化成数字信号;然后介绍Android中与声音多媒体开发相关的两组API,以作为算法研究的实现基础;并对实验中涉及的传统密码技术及内容关联密钥技术进行对比分析,结合二者优势提出新的加密思路。

第三章,内容关联密钥数字音频加密算法。首先对基于字节流形式的音频加密以3

华 中 科 技 大 学 硕 士 学 位 论 文

及针对文件形式的音频加密的实验流程进行总体设计,介绍PCM数据类型和AAC数据类型据的格式特点,然后依据文件结构做相应处理,对不同的数据类型采取合适的加密算法,生成不同情形下的密钥信息,并提出评估算法有效性的指标。

第四章,音频加解密实现与测试。这章主要是介绍Android上音频的录制播放、音频数据加密算法的实现以及实验测试的结果,分析原始信号和失真信号的波形规律及频谱特征,统计不同操作下加解密的时长,计算其信噪比及MOS-LQO分值,从而分析该算法的加密性能及效果。

第五章,总结与展望。对研究该课题期间的工作进行总结与反思,指出实验过程中做得不足的地方,并提出可以继续优化改进的方案。

4

华 中 科 技 大 学 硕 士 学 位 论 文

2 相关技术研究与分析

2.1 音频处理基础

2.1.1 声音的处理流程

自然界中的声音是以声波的形式传递的,早期的音频信息是以模拟信号的形式存储在介质中的[21][22]。在互联网时代,通常需要将这些模拟信号转化为数字信号才能够存储到设备中[23][24]。如图2.1所示,声音从发送方到接收方,经历了如下几个过程:

存储设备声波内部存储声波麦克风数字处理器扬声器传感器A/D模数转换D/A数模转换传感器

图2.1 声音信号的处理过程

(1)通过音频采集设备,如麦克风,再通过传感器感知电势变化获取声音信息,(2)通过A/D模数转换器以采样、量化及编码的方式将模拟信号转换成计算机(3)将数字音频信号进行过滤、降噪等一系列的渲染处理;一般来说用户不直也就是初始的模拟信号。

能存储的数字信号[25][26],为二进制数据;

接将这些数据存放在计算机中,因为此时得到的数据为最原生的数据,数据量较大,往往会对其压缩以后再进行存储[27][28]。压缩又分为有损压缩和无损压缩[29],无损压缩无失真,音频质量较好,但是其占据的空间依然很大,为了减小体积一般采取有损压缩方式,例如常见的MP3、AAC数据格式都是有损压缩的编码方式。

5

华 中 科 技 大 学 硕 士 学 位 论 文

(4)从存储设备中取出相关文件,根据录制过程采用的编码方式进行解码;

(5)音频系统为这一播放实例选定最终匹配的音频回放设备;

(6)解码后的数据经过音频系统设计的路径传输;

(7)音频信号经过数模转化器转化成模拟信号;

(8)模拟信号经过回放设备,还原出原始声音。

从以上过程可以得知,声音在被计算机处理时,经过了从模拟信号到数字信号再到模拟信号的过程,声音在数字信号阶段一般有两种去向:一种是以文件的形式存储在内部空间或者外部存储设备上,便于用户上传、下载及转发;一种是封装成IP数据包的形式在网络中传输,在即时通讯领域应用较多,更强调实时性。

2.1.2 PCM编码

PCM,即脉冲编码调制(Pulse Code Modulation,PCM),章节2.1.1中的第一、二个步骤将模拟信号转化为数字信号就是PCM编码的过程[30][31],其原理是在一个时间连续的模拟信号上进行若干次抽样采点,根据样点的幅度进行量化得到每一个样点的具体数值,从而得到一个离散的数字信号,最后对量化后的结果进行编码得到最终的数字信号也就是一段二进制序列[32]。模拟信号的抽样量化过程如图2.2所示,其中横轴表示时间,纵轴表示信号的幅度。

Y

X

图2.2 模拟信号的抽样量化

抽样。声波具有连续性特征,一段模拟信号可以看作是由无数个连续的点构成的,然而计算机容量有限,不可能处理无限个数据,抽样就是将无限变为有限的过程,通6

华 中 科 技 大 学 硕 士 学 位 论 文

过离散、有限的数据来表达连续、无限的信息。抽样需要遵循奈奎斯特抽样定理[33][34],也就是说,如果想对原始的模拟信号进行抽样后能取得无失真的信号,其抽样频率不得低于原始信号最高频率的两倍[35]。

量化。抽样后得到的信号为离散信号,此时信号的值可能并不离散,其采样点在一定小范围内可能存在多个值,例如在两个相邻的电平1和2之间可能存在多个不在一条水平线上的样点,而这些点无法精确表示出来,因此需要用与其最接近的值来表示该样点的抽样值,一般通过四舍五入的方式取整。量化结果与被量化的信号之间的差值称为量化误差[36]。量化过程中描述声音波形数据位大小的参数叫做量化级,也叫做量化精度,其值越高表示数据位越多,误差越小,其音频质量与原声效果更为接近,同时也导致数据量较大。

编码。一般量化后的抽样信号是以十进制的数字代码来表示的,并依据抽样的顺序排成一列。而计算机针对二进制数据的处理效率较高,我们需要依据这些十进制序列编码生成便于计算机处理的二进制序列,其编码的位数由十进制数字代码的总数决定。也就是说,编码过程实质上就是将量化后的信号转化成给定的二进制码流的过程。

通过PCM编码得到的数据,也就是最原始的未压缩的音频数据,其音质也是最接近真实声音的,所以往往体积相对较大,不利于直接保存,对数据存储时往往会按照一定格式对其进行编码压缩,得到一个体积较小但又不影响原音频数据内容播放的数据格式。

2.2

Android音频录制及播放

一般来说,Android系统都自带了一个小小的录音应用,但是使用起来不是特别的灵活,只能录制为特定的格式,不支持自行对数据进行处理。实际生活中,声音的存储传输通常存在两种形式,一种是将音频数据保存为文件的形式,通过媒体播放器进行播放,这种不要求实时性,便于存储及传递;另一种是将音频字节数据通过网络传输协议以数据包的形式分发,接收方实时接收并播放,主要用于语音通话的场景。针对以上两种情景,Android系统为开发者提供了以下两种API来实现音频录制及播放功能。

1)基于字节流形式的AudioRecord/AudioTrack类

7

华 中 科 技 大 学 硕 士 学 位 论 文

它可以获取到一帧一帧的PCM数据,之后可以对这些数据进行处理。AudioRecord这种采集方式最为灵活,使开发者最大限度地处理采集的音频,同时它捕获到的音频是最原始的音频PCM格式。采集之前,只需要构造一个AudioRecord对象,传入各种不同配置的参数即可,如下:

(1)音频源:通常采用麦克风作为音频源;

(2)采样率:一秒钟对模拟信号的采样次数,音质的真实度通常与采样率成正(3)音频通道:一般为单声道、双声道等;

(4)音频格式:一般选用PCM16BIT格式,即原始的音频样本;

(5)缓冲区大小:音频数据写入缓冲区的总数,其执行操作为将音频采集到缓指定参数后,考虑到Android系统的机制,UI线程中不能执行耗时操作,需要通比关系,常用的采样率有8kHz,44.1kHz等;

冲区中然后再从缓冲区中读取二进制数据。

过Android的异步线程执行声音的采集任务,录制过程中直接返回实时的字节数组并读到缓冲区中,发送方可以通过TCP/UDP等方式将这些数据传输,然后接收方解析数据包并通过AudioTrack类对这些最原始的字节数组进行播放。

2)基于文件形式的MediaRecorder/MediaPlayer类

它将声音数据通过采集、量化、编码压缩的方式录制成文件并保存起来,可以通过HTTP文件上传下载的方式进行传输,然后通过MediaPlayer或者其它媒体播放工具进行播放。

通过MediaRecorder的方式录制文件更加简单,只需要创建一个MediaRecorder对象,并配置音频源、保存格式、采样率、编码方式、编码比特流以及录音文件的输出路径等基本参数即可,不需要再对AudioRecord中返回的字节数组进行更多地操作,MediaRecorder实质上也是对AudioRecord的封装,省去了很多编码压缩的细节,可以直接将采集到的音频数据转化为执行的编码格式,使用更加方便、简单,但是也失去了一定的灵活性,没有办法得到原始的音频,通常将音频数据录制成文件形式时可以采用MediaRecorder这个API,同时它在视频的捕获方面也相当强大。

这两种API将作为Android系统上声音信号实现模数转换的基础,本文的实验中将通过AudioRecord录制未经编码的PCM数据,通过MediaRecorder录制编码后的AAC数据。

8

华 中 科 技 大 学 硕 士 学 位 论 文

2.3 密码技术分析

2.3.1 基本密码技术

这里所说的基本密码技术,是指当今比较主流、已被广泛研究的明文无关性密码技术,也就是说这些密码技术的密钥一般是依据伪随机数或者其它与明文无关的数据生成[37][38]。例如常见的DES、3DES和AES等对称加密算法[39],以及RSA、ECC及椭圆加密算法等非对称密钥加密算法[40][41],这些算法的研究历史较早,技术相对成熟。

(1)对称加密算法,也称单密钥加密,也就是说同一个密钥可以同时作为用来加密和解密信息,其中最常见的也是当今比较流行的就是AES,也是本文参考使用的加密算法之一。AES为分组密码[42][43],其加密过程中,把明文分成若干长度相等的组,每次加密一组数据,直到全部加密完成。加解密过程依赖于加解密函数以及密钥。AES加密算法一般依据如下函数:C=E(K,P),其中E为加密函数,P为明文,K为密钥,C为密文。若把明文P和密钥K作为加密函数的参数输入,则加密函数E会输出得到密文C。解密函数的公式如下:P=D(K,C),其中D表示解密函数,C为密文,K为密钥,P为明文。也就是说,把密文和密钥K作为解密函数的参数输入,则解密函数会输出明文P。基于以上分析得知,AES加密算法操作的主要流程如图2.3所示。

密钥K密钥K网络传输明文PAES加密函数密文CAES解密函数明文P发送方接收方

图2.3 AES加解密流程

在AES的标准规范中,以16个字节为进行分组,每个字节8位,也就是每组128位。密钥的长度可以使用128位、192位或256位。算法的加密轮数与密钥长度之间存在关联,一般密钥长度为128位的加密轮数为10轮,每一轮即执行一次加密公式C=E(K,P)的过程。加密过程中执行10次这个轮函数,这个轮函数的前9次操作是相同的,只有第10次有所不同。AES的核心就是实现一轮中的所有操作。前9轮9

华 中 科 技 大 学 硕 士 学 位 论 文

中每轮依次执行依次字节代换、行移位、列混淆、轮密钥加等基本操作,第十轮执行除了列混合以外的三种操作,其矩阵变换的简要过程如图2.4所示。

明文矩阵P0P4P8P12P1P5P9P13P2P6P10P14P3P7P11P15S0S4S8S12状态矩阵1S1S5S9S13S2S6S10S14S3S7S11S15AES的十轮加密E3E7E11E15密文矩阵C0C4C8C12C1C5C9C13C2C6C10C14C3C7C11C15E0E4E8E12状态矩阵NE1E5E9E13E2E6E10E14

图2.4 AES矩阵变换

对称加密算法速度非常快,通常用在消息发送方需要发送大量数据的场合,缺点(2)非对称加密算法中需要使用两个不同的密钥进行加解密,简称公钥和私钥,就是密钥的传输比较麻烦,安全性能较低。

一般发送方首先需要接收方将公钥通过网络发送给自己,然后使用公钥对要发送的数据内容进行加密,接收方再使用私钥对加密后的内容进行解密。非对称加密的流程大致如图2.5所示。

乙的公钥乙的私钥原始数据原始数据加密加密数据解密发送方甲接收方乙

图2.5 非对称加密流程

这种加密方式使用数学上难解的问题构造的,与对称加密相比,其安全性更好。10

华 中 科 技 大 学 硕 士 学 位 论 文

通常加密解密的速度比较慢,不适用与大量数据加密的场合。因此对本文中的数字音频加密无法起到较好的效果,不再对其深究。

2.3.2 内容关联密钥技术

传统的加密算法中,密钥与明文几乎无关联性,用户在已知密钥的情况下容易通过暴力破解形式获取明文数据,如果大量的数据都是通过这个密钥来加密生成的,则这些大量数据可能因为一个密钥的丢失而导致所有数据安全性都无法得到保证。

内容关联密钥技术中[44],密钥的生成依赖于原始的明文数据,其思想是从待加密的明文数据中提出一少部分重要性数据,破坏明文的敏感信息[45],并向抽取的位置中填充无关数据扰乱原文信息,从而达到加密的目的,抽取出来的这少部分敏感内容称为密钥,而填充无关信息以后的主体数据称为密文。内容关联密钥技术的加密过程如图2.6所示。

明文P0P1P2P3P4

PkPk+1

Ps-1PsPs+1

Pn内容抽取加密算法S0P1S2S3P4

SkPk+1

Ps-1SsPs+1

Pn密文P0P2P3

Pk

Ps

密钥

图2.6 内容关联密钥加密过程

解密时,只需将密钥中的信息按抽取时的位置进行填充,即可恢复成明文数据,因此内容抽取加密算法需要事先指定好抽取的位置或者在密钥中保存抽取函数的信息,从而保证解密时能够正确地将字节恢复到原始位置。内容关联密钥加密算法的加密效果同时也依赖于抽取的位置,也就是重要数据的获取。由于某些文件其数据格式有一定的特点,数据分布不均衡,部分信息缺失可能会导致其余信息无法正常预览。例如通过H.264编码的MP4视频文件中,一个静止的图像往往对应一个视频帧,视频帧分为三种类型:I帧、P帧和B帧,I帧为关键帧,仅通过I帧即可恢复画面信息,11

华 中 科 技 大 学 硕 士 学 位 论 文

它包含了大量敏感数据,而P帧和B帧为预测帧,为非关键帧,因此基于内容关联密钥的思想,更多地会考虑从关键帧所在的位置进行信息提取,对非关键信息只进行少量抽取即可。而有些文件格式,例如某些文本信息、位图文件、音频原始信息PCM数据或其封装后的WAV格式,其内容分布均匀,对其中部分字节数据进行加密处理,影响的只是这一块数据,未被加密的数据单元不依赖于这块抽取的数据,信息依然可以正常预览,所以无法达到较好的加密效果,因此针对这一类数据不能直接采用内容关联密钥加密算法,本文中所采取的一种操作是可以先通过AES算法将明文数据加密扰乱,再对这些扰乱数据进行随机抽取,经过抽取的密文几乎无法再通过AES解密操作恢复成原文数据,这样结合了传统加密方式与内容关联密钥技术的优势,从而更好地保障音频数据的安全性。

2.4 本章小结

本章主要对数字音频加密处理中涉及的音频理论基础、相关实现技术作了一些简单的介绍。首先介绍了声音在电子设备上的传输原理,分析了其从发送方到接收方如何将模拟信号转化为数字信号、如何处理这些数字信号以及接受者如何听到这些声音所经历的整个过程。另外,对论文中实验部分涉及到的实现技术,如何在Android系统上处理声音数据作了相关叙述,通过使用系统提供的API,配置合适的参数进行声音的录制及播放。最后,分析了传统加密技术与内容关联密钥技术的优缺点,提出了针对不同类型数字音频的加密思路。

12

华 中 科 技 大 学 硕 士 学 位 论 文

3 内容关联密钥数字音频加密算法

本章将从音频存储传输的形式、数字音频结构特性等主要因素考虑如何进行Android平台上基于内容关联密钥的数字音频加密算法的流程设计,并提出评价算法加密效果的评估指标。

3.1 总体设计

第二章中分析了音频数据在日常使用的移动设备中经常存在的两种形式。基于字节流传输时,声音信号首先通过AudioRecord录制到缓冲区中,然后从缓冲区读取并封装成IP数据包通过网络协议传输,每次只需要在发送前对一个数据包的内容进行加密处理,在接收方实时解密后即可通过AudioTrack进行播放。基于文件形式的音频数据,需要将整个文件作为加密算法的输入,分析格式信息,依次对音频每一帧进行加密。

其次,从编码格式的角度分析,音频数据分为最原始的未经任何编码包装的纯原始数据,即PCM数据,以及经过压缩的含有头部信息的编码数据,例如MP3、AAC等主流音频格式。由于PCM数据不含头文件信息,直接对其进行加密操作即可,而AAC这样的数据格式有其自身特性,为了不破坏文件结构,保证加密后的数据能够正常播放,需要从头文件中获取数据帧信息后方可对数据部分进行加密。这部分内容将在本章第二小节数据格式分析部分详细介绍。

在Android系统上,通过AudioRecord以基于字节流的形式录制音频时,最初得到的都是最原始的PCM数据,且支持自行对这些数据进行修改;而通过MediaRecorder以文件的形式录制音频时得到的是编码后的数据,不支持直接修改字节流数据。为了便于实验的进行,暂且作如下规定:以PCM数据代表基于字节流形式的音频数据,不考虑对其进行编码处理,也就是对编码前的数据进行加密;以AAC文件格式代表基于文件形式的音频数据,AAC是当前比较流行的一种编码方式,也就是对编码后的数据进行加密。基于此,本文针对这两种数据格式提出了以下两种加密实现思路。

针对字节流形式传输的PCM数据,在通信过程中,其处理的大致流程如下:

13

华 中 科 技 大 学 硕 士 学 位 论 文

(1)录制声音数据。接收方首先使用Android提供的AudioRecord类,配置相关(2)对PCM数据进行加密。因为PCM数据不包含文件头信息,可以基于AES参数,将原始的声音信号通过PCM编码转化为数字信号,得到最原始的PCM数据。

加密算法与内容关联密钥思想直接对该PCM数据进行加密处理,得到一个密文PCM数据以及密钥。由于AudioRecord录制的过程中是将数据存放在缓冲区的,并且网络传输过程中是以数据包的形式发送,因此一次加密过程只针对一个数据块,加密后产生一个密文和密钥。

(3)将密文、密钥封装成IP数据包通过网络传输到接收方。由于网络传输可能存在到达顺序不一致以及丢包现象,因此密文和密钥要进行匹配,具体匹配过程在后续的内容抽取算法的设计中介绍。

(4)接收方在接收到密文和密钥后通过解密算法对其进行解密,从而恢复得到(5)通过AudioTrack播放PCM数据,得到发送方传来的声音信息。

其实现过程如图3.1所示。

发送方模拟声音信号明文PCM数字信号。

AudioRecordPCM数据发送方(数字信号)加密密文PCM数据密钥网络传输接收方模拟声音信号AudioTrackPCM数据(数字信号)解密密文PCM数据密钥

图3.1 基于字节流形式的加密流程

针对以文件存储的AAC数据,其加解密时间相对较长,对实时性无要求,加解(1)用户通过MediaRecorder将外界的声波信号录制成数字信号并以AAC格式密过程一般直接在本地进行,大致处理流程如下:

存储。MediaRecorder已经封装好了PCM数据编码成AAC的过程。

14

华 中 科 技 大 学 硕 士 学 位 论 文

(2)对AAC数据进行加密。考虑到其文件结构特性,在加解密前需要将其以文件输入流的形式读取,解析文件头部信息,获取数据部分并进行加密处理,加密后会生成一个密文及密钥,密钥一般上传到云端,从而可以实现密文共享。

(3)从本地读取或从服务下载密钥,结合密文恢复得到原始数字音频。

(4)通过MediaPlayer或者其它音乐播放器播放AAC音频数据。

其实现流程图如图3.2所示。

客户端MediaRecorder模拟声音信号MediaPlayerAAC数据(数字音频)加密密文PCM数据解密密钥服务器

图3.2 基于文件形式的加密流程

以上为音频数据从采集到加密的整体过程,隐藏了加密算法的实现细节,其具体流程将在后文进一步分析。

3.2 数据格式分析

内容关联密钥加密算法的设计依托于文件格式。热力学中有一个表征物质状态的参量,叫做“熵”,其物理意义是体系混乱程度的度量,熵值越高,则表示系统混乱程度越高,反之则表示系统混乱程度越低。

同样的,文件中也存在类似现象,例如位图、PCM等文件类型,其数据格式相对简单,分布均匀,一块信息对应一个数据单元且不依赖于另一个数据单元,即使部分数据单元缺损,其余的信息依然可以完好地呈现,一般称之为低熵数据。对于这种类型的数据,直接抽取只会对部分信息造成微小的影响,尤其对于PCM这样的音频信息几乎无任何影响,其每一个数据单元都对应着一个采样点,内容抽取加密的效果相当于单纯地对个别采样点的值进行更改,而声音整体特征不变,因此需要采取额外的措施。像WAV格式的音频格式是基于PCM数据封装的,抛开其头文件信息,其主体内容也是低熵数据。

15

华 中 科 技 大 学 硕 士 学 位 论 文

而像AAC这样的文件格式,其数据主体经过编码压缩,数据直观上失去了原始声音信号的波形特征,从整体上看是由一帧一帧的数据组成,按一定的顺序排列,具有低熵的特性,而从每一帧看,一帧包含了许多个数据单元,数据缺失会导致解码器无法正确地对其进行解析,内容抽取算法会破坏每一帧的信息,从而可能导致音频整体播放异常,通常称这样的数据为高熵数据。一般来说,对于这种类型数据,在保证一定抽样率的情况下,通过直接内容抽取就可达到加密效果。

3.2.1 PCM数据

由第二章第一小节得知,PCM数据,是通过PCM编码将模拟信号以固定的采样频率转换成数字信号后的表现形式,是一段二进制序列,其模拟信号的每一个采样点都与数字信号的值一一对应。它可以通过Android中的AudioTrack进行播放,其播放效果与原始音质最为接近。但是一般无法直接通过音乐播放器对它进行播放,往往会先将其转化为WAV格式后进行播放。

PCM数据编码时常与以下几个参数相关联:采样频率、量化精度和声道数。

(1)采样频率是设备一秒钟对模拟信号的采样次数,一秒钟内采样的次数越多,获取的频率信息更丰富,声音质量越好,还原度越高,同样数据量往往也越大。通常采样率对不同的情况有不同的规定,会依据实际应用情况进行选择。

(2)确定采样率以后,需要对模拟信号的抽样点进行量化。采样相当于对波形的横轴进行分割,而量化相当对其纵轴的振幅进行等量分割,通常用量化精度表示这种分割的程度,其数值越大,分辨率越高,其声音效果也就越逼真,现在比较常用的是16位的量化精度。

(3)声道数一般分为单声道和双声道,单声道的音频数据是按采样时间的先后PCM数据格式相对简单,最终表现形式如图3.3所示。

顺序依次存入的,如果是双声道的话一般就按照“左右左右左右”的方式存储。

16

华 中 科 技 大 学 硕 士 学 位 论 文

8位单声道(PCM)0声道0声道

8位双声道(立体声PCM)0声道(左)1声道(右)0声道(左)1声道(右)

16位单声道(PCM)0声道(低字节)0声道(高字节)0声道(低字节)0声道(高字节)

16位双声道(立体声PCM)0声道(左,低字节)0声道(左,高字节)1声道(右,低字节)1声道(右、高字节)地址递增方向

图3.3 PCM数据格式

通过上图得知,PCM文件没有额外的头部开销,可以直接对其进行处理,对于双声道形式,通过交叉分离的方式获取每个声道的数据。由于PCM数据是低熵数据,传统的内容抽取算法对其加密无法获得有效的加密效果,故不能直接对PCM数据进行抽取。本文实验中,计划先使用AES加密算法将原始PCM数据加密处理后转化为高熵数据,然后再对数据进行内容抽取,填充无关信息后生成密文主体数据,由于加密后的数据缺失,AES几乎无法将抽取后的内容恢复成原来的效果,从而可以达到加密的效果。

3.2.2 AAC数据

AAC,即高级音频编码(Advanced Audio Coding),是一种专为数字音频设计的编码压缩格式。它最初是基于MPEG-2的音频编码技术,相对于MP3文件而言性能有了大幅度的提升,编码过程采用了全新的编码算法,效率更高,音频质量更好而文件更小,是新一代的音频有损压缩技术,也是当今比较主流的音频格式之一,具有较高的性价比。

AAC具有如下特点:

(1)提升的压缩率:可以以更小的文件获得更高的音质;

(2)支持多声道:最多支持多达48个音轨;

(3)更高的解析度:最高支持96KHz的采样频率;

(4)提升的解码效率:解码播放所占用的资源更少;

AAC在编码方式及未来的应用场景上有其显著的优势,并且现在的AAC音频在原MPEG-2的基础上又有了新的突破,形式了MPEG-4 AAC标准,一般都是通过m4a来封装。AAC提供了九种规格以适应不同的应用场景,实验中选取基于MPEG-17

华 中 科 技 大 学 硕 士 学 位 论 文

2的低复杂度规格的AAC格式即可。

AAC的音频文件格式有ADIF和ADTS。

(1)ADIF(Audio Data Interchange Format),即音频数据交换格式。其数据格式的特点是文件头信息只有一个,且位于文件的起始位置,因而不能从文件中间开始解码,头部后面部分是所有的数据流。解码时先读取头部信息中的关键参数,对后面的每一帧都套用这些参数进行处理。这种类型的文件适用场景有限,一般用于磁盘文件中。AAC的ADIF格式如图3.4所示。

Header()Raw_data_stream()

图3.4 ADIF音频格式

(2)ADTS(Audio Data Transport Stream),即音频数据传输流。这种类型的文件其每一帧数据前面都有一个头部信息,一般为7或9个字节,包括28个比特的固定头部和28个比特的可变头部,另外两个字节为循环冗余校验CRC,CRC不是必含项,需要根据固定头部中的标志位信息确认其是否存在,文件头后面是数据体部分,具体长度依据可变头部中的标志位信息确认。AAC的ADTS的一般格式如图3.5所示。

Fixed_headerVariable_headerCRCRaw_data_block

图3.5 ADTS音频格式

简单来说,对AAC文件进行解析时,需要先判断其文件格式。如果是ADIF类型的数据,需要首先对头部信息进行解析,然后才能解析后面的全部信息;而如果是ADTS类型的数据,其每一帧都有一个文件头,可以根据其同步字从任意位置开始解码。AAC中的音频数据首先是经过采样、编码及量化得到的,并且以样本值的形式存在,再对这些样本值进行AAC编码压缩,以音频帧的形式存在,对这些音频帧通过不同的方式进行封装得到的就是不同格式的AAC数据。由于ADTS的使用场景更为广泛,这里不对ADIF格式作详细介绍,只对ADTS的头文件信息进行进一步的分析,如表3.1所示,序号1-10表示28位固定头部,序号11-15表示28位可变头部,序号16表示可能存在的循环冗余校验CRC,依据这些信息即可对该音频数据进行解码或是进行加密操作。

18

华 中 科 技 大 学 硕 士 学 位 论 文

表3.1 ADTS 文件头信息

序号

1

参数

Syncword

长度(bits) 备注

12

全为1,即0xFFF,代表一个ADTS帧的开始

2

3

4

5

6

7

8

9

10

11

12

13

ID/MPEG Version

Layer

Protection Absent

Profile

Sampling Frequency Index

Private Stream(bit)

Channel Configuration

Originality

HOME

Copyrighted Stream

Copyrighted Start

AAC frame length

1

2

1

2

4

1

3

1

1

1

1

13

0表示MPEG-4,1表示MPEG-2

总是00

0 if CRC,1 if no CRC

MPEG-4 Audio Object Type minus 1

采样率索引,0~15

编码时为0,解码时忽略

声道数配置

编码时为0,解码时忽略

编码时为0,解码时忽略

编码时为0,解码时忽略

编码时为0,解码时忽略

一个ADTS帧的长度包括ADTS头和AAC原始流

14

15

Buffer Fullness

Number of AAC frames

11

2

0x7FF 说明是码率可变的码流

number of AAC frames (RDBs) in

ADTS frame minus 1

16 CRC 16 CRC if protection absent is 0

由表格可知,对ADTS格式的AAC文件进行内容抽取时,首先需要从头信息中解析出所需要的关键参数,例如根据序号为4的标志位“Protection Absent”解析出是否有两个字节的CRC头部,根据序号13的标志位“AAC frame length”得到一个ADTS19

华 中 科 技 大 学 硕 士 学 位 论 文

帧的字节长度、序号15的标志位“Number of AAC frames”得到数据部分AAC帧的数量等,从而正确地解析出数据部分并进行加密处理。

3.3 内容抽取算法设计

基于内容关联密钥的思想,传统的抽取算法是直接从文件输入流中读取全部字节数组,采用均匀抽取的方式取出部分字节流信息,其安全性较低,抽取过程可能会导致文件结构破坏,从而导致无法正常预览,一般来说某种格式的文件具有与其相关的特征,如果是低熵数据,一旦文件头或文件尾等信息被正确恢复,就可能导致数据体因为没有被充分加密而遭到信息泄露。对此,设计算法时应该摒弃均匀抽取的方式,提高抽取算法的安全等级,同时应更侧重于对文件数据核心内容作处理,达到在不破坏文件结构的前提下,实现一个比较好的加密效果。

3.3.1 原始数据预处理

通过本章第二小节的分析得知,尽管内容关联密钥加密算法相对于传统加密算法有其优越性。但其对低熵数据的处理表现不佳,因此,需要结合这两种思想,针对低熵数据需要采取一定措施将其变为高熵数据,之后再对其进行内容抽取。高熵数据是否有必要进行预处理,可依据对加密强度的要求以及实验中加密的性能及效率分析做决定。

由于PCM数据是低熵数据,且不包含文件头和文件尾等结构信息,可以直接对整体字节流进行预处理。首先需要将原始数据的均匀性打乱,使其变为高熵数据。这里采用AES算法进行第一遍加密处理,为了保证加密前后数据大小不变,可以2048个字节为一组,采用ECB非填充模式及128位密钥进行加密,加密后的数据则不再具备原来具有规律的波形特征,接下来再对AES加密后的数据进行内容抽取,设抽取比例为p%,剩下的(1-p%)的密文信息几乎是无法通过AES解密的可逆过程恢复成原始明文数据的。其大致处理过程如图3.6所示。

20

华 中 科 技 大 学 硕 士 学 位 论 文

密文AES加密预处理内容抽取加密低熵PCM数据高熵数据密钥

图3.6 低熵数据预处理

针对AAC文件,以ADTS类型的文件为测试数据,从中解析出文件头信息及数据部分,只对数据部分进行处理。AAC的数据部分是通过原始的PCM数据经过编码压缩得来的,是高熵数据,实验中将对其作两种类型测试,一种是不经过对称加密算法处理,直接对数据进行抽取;另一种类似于PCM数据的处理,先经过一次AES加密,再进行抽取。显然,第二种方式加密强度更高、更安全,时间相对较长,时间差取决于原数据的大小以及加密时内存读取数据的时间,通过实验结果可以比较不同操作下的加密时长之间的关系,从而调整算法的相关参数。其大致流程图如图3.7所示。

密文内容抽取加密高熵AAC数据密钥AES加密预处理AES加密数据

图3.7 高熵数据预处理

3.3.2 确定抽取位置

通过上一节的格式分析可以知道,PCM数据是没有头文件信息的,可以直接对其进行抽取;AAC格式需要避开其头部,对数据部分进行内容抽取。常见的内容抽取算法是均匀抽取,加密时只需要知道抽取数据的起始位置、数据长度以伪随机函数及抽取百分比即可,实现思路简单,抽取内容分布均匀,也导致其有规律可循,容易破解,安全性较低。而随机抽取的安全性相对较高,由于随机函数的不确定性,需要21

华 中 科 技 大 学 硕 士 学 位 论 文

在密钥中保存能获取到抽取位置的参数信息,以便解密时能找到密钥字节原始的位置。已知一个数据包或者一个音频帧的内容并可得到其数据长度L,然后依据这个长度L在[0, L-1]闭区间内按抽取比例执行随机抽取,其抽取的位置依赖于选取的伪随机函数。这里采用线性同余法产生伪随机数,也就是抽取位置的下标。线性同余法是目前应用最广泛的伪随机数生成算法,其基本思想是运用数论中同余运算产生随机数,递推公式为:

Xn+1=(aXn+c) mod

2024年1月21日发(作者:池青曼)

华 中 科 技 大 学 硕 士 学 位 论 文

摘 要

随着移动技术的发展,VoIP技术逐渐成熟,防窃听意识、音频版权保护意识也逐渐增强,大量的音频数据在移动设备上传输,信息安全已成为人们日益关心的话题,而目前关于数字音频的加密算法研究却还远不够深入。传统的加密算法模式固定,一个密钥对应多个文件,在处理海量数据时存在安全隐患;内容关联密钥技术不完全依赖于计算复杂度,且适合对海量数据处理,但加密效果依赖于文件格式,例如处理PCM数据时表现不佳。

通过结合AES加密算法及内容关联密钥思想,针对两种典型的音频数据格式PCM和AAC,提出了一种Android平台上数字音频加密的新思路。PCM数据未经编码,不包含文件头,通过AudioRecord将信号实时录制到缓冲区,对每一个2048字节的缓冲区数据以128位密钥、ECB非填充模式进行AES加密,使数据混淆,并依据线性同余伪随机函数生成的随机数进行内容抽取加密,使数据缺损。缺损数据几乎无法通过AES解密恢复成明文,从而达到加密效果。AAC经过编码后,含有文件头,通过MediaRecorder将信号录制成AAC_ADTS文件格式,解析音频帧头部的标志位,获取数据部分的起止点,对其进行分组并按上述操作方式执行分组加密。

实验中,在不同的条件下对两种明文数据作加密处理,经过多次测试及对比分析,针对PCM数据,AES结合内容关联密钥思想的加密方式加密效果极佳,同时极大提升了数据的安全性;针对AAC数据,即使不使用AES加密,在保证一定抽取比例的情况下,也能达到很好地加密效果。

关键词:数字音频;AES加密;内容关联密钥

I

华 中 科 技 大 学 硕 士 学 位 论 文

ABSTRACT

With the development of mobile technology, VoIP technology has gradually matured,

anti-eavesdropping awareness, audio copyright protection awareness has also gradually

increased, a large amount of audio data is transmitted on mobile devices, information

security has become a topic of increasing concern, and currently on digital audio the

research on encryption algorithms is still far from deep. The traditional encryption algorithm

mode is fixed, and one key corresponds to multiple files. It has security risks when dealing

with massive data. The content-associated key technology does not depend entirely on

computational complexity, and is suitable for processing massive data, but the encryption

effect depends on the file formats, such as poor performance when processing PCM data.

By combining the AES encryption algorithm and the content-associated key idea, a

new idea of digital audio encryption on the Android platform is proposed for two typical

audio data formats, PCM and AAC. The PCM data is unencoded, does not contain the file

header, and the signal is recorded to the buffer in real time through AudioRecord. AES

encryption is performed on each 2048-byte buffer data in 128-bit key and ECB unfilled

mode, which confuses the data. The content-associated encryption algorithms are performed

according to the random number generated by the linear congruential pseudo-random

function, so that the data is defective. The defect data can hardly be restored to plaintext by

AES decryption, thus achieving encryption. After encoding, AAC contains the file header,

records the signal into AAC_ADTS file format through MediaRecorder, parses the flag bit

of the audio frame header, acquires the start and end points of the data part, groups it and

performs block encryption according to the above operation mode.

In the experiment, the two plaintext data are encrypted under different conditions.

After many tests and comparative analysis, the encryption method of AES combined with

the content-associated key idea is excellent for PCM data, and the security of the data is

greatly improved. For AAC data, even if AES encryption is not used, a good encryption

effect can be achieved while ensuring a certain extraction ratio.

Key words:Digital audio; AES encryption; Content-associated key

II

华 中 科 技 大 学 硕 士 学 位 论 文

目 录

摘 要 ............................................................................................................... I

ABSTRACT .................................................................................................... II

1 绪论

1.1 研究背景及意义 .................................................................................... (1)

1.2 国内外研究现状及发展方向 ................................................................ (2)

1.3 本文主要内容和结构安排 .................................................................... (4)

2 相关技术研究与分析

2.1 音频处理基础......................................................................................... (5)

2.2 Android音频录制及播放 ...................................................................... (7)

2.3 密码技术分析......................................................................................... (9)

2.4 本章小结 ............................................................................................... (13)

3 内容关联密钥数字音频加密算法

3.1 总体设计 ............................................................................................... (14)

3.2 数据格式分析....................................................................................... (16)

3.3 内容抽取算法设计 .............................................................................. (21)

3.4 加密算法性能分析 .............................................................................. (29)

3.5 本章小结 ............................................................................................... (32)

4 音频加解密实现与测试

4.1 实验环境及测试工具 .......................................................................... (33)

4.2 Android音频录制采集 ........................................................................ (33)

4.3 PCM数据加密仿真实验 ..................................................................... (36)

4.4 AAC数据加密仿真实验 ..................................................................... (40)

4.5 加密时间性能分析 .............................................................................. (44)

4.6 音频质量参数分析 .............................................................................. (45)

III

华 中 科 技 大 学 硕 士 学 位 论 文

4.7 本章小结 ............................................................................................... (48)

5 总结与展望

5.1 全文总结 ............................................................................................... (49)

5.2 课题展望 ............................................................................................... (49)

致谢 .............................................................................................................. (51)

参考文献...................................................................................................... (52)

IV

华 中 科 技 大 学 硕 士 学 位 论 文

1 绪论

1.1 研究背景及意义

随着4G甚至5G时代的到来,移动行业飞速发展,即时通讯及语音通话技术VOIP也逐渐成熟[1],给人们的生活带来了诸多方便。然而技术快速发展的背后,也包含着人们的担忧,大量的语音数据在互联网中明文传输,随时面临被窃听的风险,历史上窃听事件不计其数[2],移动通讯安全形势愈加严峻;另一方面,人们的版权保护意识也越来越强,当今世界是一个知识付费的年代,国家也出台了一系列保护知识产权的政策,监管手段也不断提升,版权环境越来越优化,然而这还远远不够,国家政策、企业制度、全网监测以及加密技术,都需要共同发挥作用。

人们对信息安全的意识越来越高,然而目前针对数字音频的加密技术的研究还远远不够。语音加密技术已被研究多年[3][4],传统的音频加密算法安全性逐渐降低[5][6],渐渐地无法满足人们的需求,还需要进行更多更深入地研究。同时由于移动设备的普及和科学技术的成熟,人们几乎已经抛弃了传统的固定电话模式,通过移动设备进行语音通话,并且越来越多的用户不再使用随身听,MP3等音乐播放工具,而是将选择将数据存储到移动设备上。也就是说,移动设备上的音频数据越来越多,或者是基于字节流的形式通过网络传输协议转发,或者是基于文件的形式存储在本机上,一旦用户将这些明文数据保存在手机上并被不法分子窃取,可能就会被公之于众并进行非法操作,造成的后果无法估量。

因此,如何有效地保证用户数据的安全性成为亟待解决的问题[7],有必要对传统算法进行优化,研究出一种新型的音频加密算法,并且需要考虑到以下因素:

(1)移动设备的处理性能。相比于PC的高性能处理器,移动设备性能受限,设计的算法计算复杂度不能太高,要保证其在移动设备上能畅通无阻良好运行。

(2)加密传输的时延。语音通话时,高时延对用户体验影响极大,超过300ms用户就能感觉到明显的卡顿[8]。

(3)密文数据的安全性。加密算法应具有一定的复杂性,保证较高的加密强度,使得密文与原始数据差别很大,无可寻规律。

1

华 中 科 技 大 学 硕 士 学 位 论 文

(4)数据的一致性。音频数据的编码涉及到有损压缩和无损压缩,在加密前和解密后数据内容应当完全一致,所以需要考虑数据加解密与编解码的时机。

综上,一个性能优良且安全稳定的加密算法能极大地提高音频数据的隐私性,在为用户提供一个安全的语音通话环境、出品方的音乐版权保护等方面都能发挥极大的作用。

1.2 国内外研究现状及发展方向

历史上,人们对音频数据的加密做了众多的研究。最常见的就是采用对称密钥技术以及非对称密钥技术[9],首先将原始音频数据进行编码压缩,然后采用AES和RSA等加密算法对明文数据进行加密,然后通过网络发送传输。对称加密算法的原理已经为人所熟知,每次只针对小部分数据进行处理,且目前计算机的处理速度极快,所以AES加密效率很高[10][11],但是进行数据交换时,双方一定要提前对密钥进行确认并做好保密措施,一旦密钥遭到泄露,数据安全性也就无法得到保证。并且,如果用户每次使用对称加密算法时密钥数量少,则很容易遭到破解;而每次都使用其他人不知道的密钥时,容易使得接收方、发送方所拥有的密钥数量极为庞大,密钥管理成难题。而非对称加密与对称加密相比[12],安全性更好,但是加解密效率不高,加密时间较长,对海量数据的处理力不从心。

随着多媒体技术的不断发展,音频编解码标准也进行了更新换代[13]。音视频加密技术也随之不断地发展。国内的数字音频加密研究已取得一定的成果。早在2001年,向辉、石教英等基于随机置乱提出了一种MPEG音频快速加密算法[14],由于将加密算法嵌入在MPEG音频编解码过程中,意味着对已经编码的数字音频是没有办法以这种方式处理的,具有一定的局限性。在2005年,聂海英等提出了一种基于数字混沌密码的音频信号加密理论[15],将混沌动力学的加密算法中基于PRNG-s和基于逆混沌系统这两种混沌密码引入到音频加密中,虽然算法取得了一定的效果,但是只能对未经编码压缩的原始数据进行处理。2006年,钟金钢、陈家楠等人提出了全数字全息术在音频信息加密中的应用[16],其原理是通过MATLAB内置函数wavread将音频数据转化为一维数据,再将所得的一维数据保存为二维图像数据,再利用全数字全息技术对该图像数据进行加密处理,该方式实现难度较大,目前来说不适用于移动端的数字音频加密。2015年,田举等提出了量子音频加密算法的研究[17],通过引入音2

华 中 科 技 大 学 硕 士 学 位 论 文

频的量子表示模型,利用双随机相位编码技术,分别在时域和傅里叶频域对音频数据加密,其在安全性、鲁棒性和计算复杂度上都有很大优势,但量子技术未进入实际应用中,该算法缺乏一定的实际应用价值。

在国外,2003年,Servetti.A等人在IEEE上发表了一篇压缩音频的频率选择性部分加密的文章[18],利用MPEG音频的低复杂度部分,通过限制信号的频率来获得样本质量,在不改变音频比特流的兼容性的情况下实现样本质量,但其加密方式过于简单,安全性较低,且不适用于原始数据。2013年,Shine P James等人提出了一种安全的压缩音频选择性加密方式[19],使用基于LFSR和分区模数电路的修改密钥流生成器,利用单个种子生产的多个密钥对MP3比特流的一部分进行加密,但是文章只对MP3作了分析,没有提出该加密方式在整个音频加密中的普适性。2014年,Shine P James等又提出了一种基于LFSR的交替步进发生器的音频加密技术[20],选择交替步进发生器ASG作为用于该应用的密钥流发生器,并与LFSR结合,对数字音频的不同帧使用不同的密钥流,所提出的加密方法可以应用于任何音频编码系统,并保持标准兼容性,其缺点是密钥序列复杂度太大,加密操作相对简单。

过去的加密算法还存在许多缺陷:许多音频加密算法需要针对特定的格式,有多数算法是将加密过程结合到编码的过程中的,不能对已经压缩编码的数据作加密处理,一般地都是使用同一个密钥对多个文件进行操作,安全性较低。未来加密算法的研究可能会更倾向于对不同音频格式的兼容性,以及增加密钥的复杂性,并且需要考虑将加密过程与编码过程分离,从而保证能适用多种情境。

1.3 本文主要内容和结构安排

第一章,绪论。主要叙述内容关联密钥音频加密算法的研究背景及意义,简要介第二章,相关技术研究与分析。主要阐述实验中涉及到的理论基础,实现方法等,绍其国内外研究现状及未来可能发展的方向,并对本文的内容及结构进行简要描述。

分析计算机对自然界中的声音的处理及播放的过程,以及PCM编码如何将模拟信号量化成数字信号;然后介绍Android中与声音多媒体开发相关的两组API,以作为算法研究的实现基础;并对实验中涉及的传统密码技术及内容关联密钥技术进行对比分析,结合二者优势提出新的加密思路。

第三章,内容关联密钥数字音频加密算法。首先对基于字节流形式的音频加密以3

华 中 科 技 大 学 硕 士 学 位 论 文

及针对文件形式的音频加密的实验流程进行总体设计,介绍PCM数据类型和AAC数据类型据的格式特点,然后依据文件结构做相应处理,对不同的数据类型采取合适的加密算法,生成不同情形下的密钥信息,并提出评估算法有效性的指标。

第四章,音频加解密实现与测试。这章主要是介绍Android上音频的录制播放、音频数据加密算法的实现以及实验测试的结果,分析原始信号和失真信号的波形规律及频谱特征,统计不同操作下加解密的时长,计算其信噪比及MOS-LQO分值,从而分析该算法的加密性能及效果。

第五章,总结与展望。对研究该课题期间的工作进行总结与反思,指出实验过程中做得不足的地方,并提出可以继续优化改进的方案。

4

华 中 科 技 大 学 硕 士 学 位 论 文

2 相关技术研究与分析

2.1 音频处理基础

2.1.1 声音的处理流程

自然界中的声音是以声波的形式传递的,早期的音频信息是以模拟信号的形式存储在介质中的[21][22]。在互联网时代,通常需要将这些模拟信号转化为数字信号才能够存储到设备中[23][24]。如图2.1所示,声音从发送方到接收方,经历了如下几个过程:

存储设备声波内部存储声波麦克风数字处理器扬声器传感器A/D模数转换D/A数模转换传感器

图2.1 声音信号的处理过程

(1)通过音频采集设备,如麦克风,再通过传感器感知电势变化获取声音信息,(2)通过A/D模数转换器以采样、量化及编码的方式将模拟信号转换成计算机(3)将数字音频信号进行过滤、降噪等一系列的渲染处理;一般来说用户不直也就是初始的模拟信号。

能存储的数字信号[25][26],为二进制数据;

接将这些数据存放在计算机中,因为此时得到的数据为最原生的数据,数据量较大,往往会对其压缩以后再进行存储[27][28]。压缩又分为有损压缩和无损压缩[29],无损压缩无失真,音频质量较好,但是其占据的空间依然很大,为了减小体积一般采取有损压缩方式,例如常见的MP3、AAC数据格式都是有损压缩的编码方式。

5

华 中 科 技 大 学 硕 士 学 位 论 文

(4)从存储设备中取出相关文件,根据录制过程采用的编码方式进行解码;

(5)音频系统为这一播放实例选定最终匹配的音频回放设备;

(6)解码后的数据经过音频系统设计的路径传输;

(7)音频信号经过数模转化器转化成模拟信号;

(8)模拟信号经过回放设备,还原出原始声音。

从以上过程可以得知,声音在被计算机处理时,经过了从模拟信号到数字信号再到模拟信号的过程,声音在数字信号阶段一般有两种去向:一种是以文件的形式存储在内部空间或者外部存储设备上,便于用户上传、下载及转发;一种是封装成IP数据包的形式在网络中传输,在即时通讯领域应用较多,更强调实时性。

2.1.2 PCM编码

PCM,即脉冲编码调制(Pulse Code Modulation,PCM),章节2.1.1中的第一、二个步骤将模拟信号转化为数字信号就是PCM编码的过程[30][31],其原理是在一个时间连续的模拟信号上进行若干次抽样采点,根据样点的幅度进行量化得到每一个样点的具体数值,从而得到一个离散的数字信号,最后对量化后的结果进行编码得到最终的数字信号也就是一段二进制序列[32]。模拟信号的抽样量化过程如图2.2所示,其中横轴表示时间,纵轴表示信号的幅度。

Y

X

图2.2 模拟信号的抽样量化

抽样。声波具有连续性特征,一段模拟信号可以看作是由无数个连续的点构成的,然而计算机容量有限,不可能处理无限个数据,抽样就是将无限变为有限的过程,通6

华 中 科 技 大 学 硕 士 学 位 论 文

过离散、有限的数据来表达连续、无限的信息。抽样需要遵循奈奎斯特抽样定理[33][34],也就是说,如果想对原始的模拟信号进行抽样后能取得无失真的信号,其抽样频率不得低于原始信号最高频率的两倍[35]。

量化。抽样后得到的信号为离散信号,此时信号的值可能并不离散,其采样点在一定小范围内可能存在多个值,例如在两个相邻的电平1和2之间可能存在多个不在一条水平线上的样点,而这些点无法精确表示出来,因此需要用与其最接近的值来表示该样点的抽样值,一般通过四舍五入的方式取整。量化结果与被量化的信号之间的差值称为量化误差[36]。量化过程中描述声音波形数据位大小的参数叫做量化级,也叫做量化精度,其值越高表示数据位越多,误差越小,其音频质量与原声效果更为接近,同时也导致数据量较大。

编码。一般量化后的抽样信号是以十进制的数字代码来表示的,并依据抽样的顺序排成一列。而计算机针对二进制数据的处理效率较高,我们需要依据这些十进制序列编码生成便于计算机处理的二进制序列,其编码的位数由十进制数字代码的总数决定。也就是说,编码过程实质上就是将量化后的信号转化成给定的二进制码流的过程。

通过PCM编码得到的数据,也就是最原始的未压缩的音频数据,其音质也是最接近真实声音的,所以往往体积相对较大,不利于直接保存,对数据存储时往往会按照一定格式对其进行编码压缩,得到一个体积较小但又不影响原音频数据内容播放的数据格式。

2.2

Android音频录制及播放

一般来说,Android系统都自带了一个小小的录音应用,但是使用起来不是特别的灵活,只能录制为特定的格式,不支持自行对数据进行处理。实际生活中,声音的存储传输通常存在两种形式,一种是将音频数据保存为文件的形式,通过媒体播放器进行播放,这种不要求实时性,便于存储及传递;另一种是将音频字节数据通过网络传输协议以数据包的形式分发,接收方实时接收并播放,主要用于语音通话的场景。针对以上两种情景,Android系统为开发者提供了以下两种API来实现音频录制及播放功能。

1)基于字节流形式的AudioRecord/AudioTrack类

7

华 中 科 技 大 学 硕 士 学 位 论 文

它可以获取到一帧一帧的PCM数据,之后可以对这些数据进行处理。AudioRecord这种采集方式最为灵活,使开发者最大限度地处理采集的音频,同时它捕获到的音频是最原始的音频PCM格式。采集之前,只需要构造一个AudioRecord对象,传入各种不同配置的参数即可,如下:

(1)音频源:通常采用麦克风作为音频源;

(2)采样率:一秒钟对模拟信号的采样次数,音质的真实度通常与采样率成正(3)音频通道:一般为单声道、双声道等;

(4)音频格式:一般选用PCM16BIT格式,即原始的音频样本;

(5)缓冲区大小:音频数据写入缓冲区的总数,其执行操作为将音频采集到缓指定参数后,考虑到Android系统的机制,UI线程中不能执行耗时操作,需要通比关系,常用的采样率有8kHz,44.1kHz等;

冲区中然后再从缓冲区中读取二进制数据。

过Android的异步线程执行声音的采集任务,录制过程中直接返回实时的字节数组并读到缓冲区中,发送方可以通过TCP/UDP等方式将这些数据传输,然后接收方解析数据包并通过AudioTrack类对这些最原始的字节数组进行播放。

2)基于文件形式的MediaRecorder/MediaPlayer类

它将声音数据通过采集、量化、编码压缩的方式录制成文件并保存起来,可以通过HTTP文件上传下载的方式进行传输,然后通过MediaPlayer或者其它媒体播放工具进行播放。

通过MediaRecorder的方式录制文件更加简单,只需要创建一个MediaRecorder对象,并配置音频源、保存格式、采样率、编码方式、编码比特流以及录音文件的输出路径等基本参数即可,不需要再对AudioRecord中返回的字节数组进行更多地操作,MediaRecorder实质上也是对AudioRecord的封装,省去了很多编码压缩的细节,可以直接将采集到的音频数据转化为执行的编码格式,使用更加方便、简单,但是也失去了一定的灵活性,没有办法得到原始的音频,通常将音频数据录制成文件形式时可以采用MediaRecorder这个API,同时它在视频的捕获方面也相当强大。

这两种API将作为Android系统上声音信号实现模数转换的基础,本文的实验中将通过AudioRecord录制未经编码的PCM数据,通过MediaRecorder录制编码后的AAC数据。

8

华 中 科 技 大 学 硕 士 学 位 论 文

2.3 密码技术分析

2.3.1 基本密码技术

这里所说的基本密码技术,是指当今比较主流、已被广泛研究的明文无关性密码技术,也就是说这些密码技术的密钥一般是依据伪随机数或者其它与明文无关的数据生成[37][38]。例如常见的DES、3DES和AES等对称加密算法[39],以及RSA、ECC及椭圆加密算法等非对称密钥加密算法[40][41],这些算法的研究历史较早,技术相对成熟。

(1)对称加密算法,也称单密钥加密,也就是说同一个密钥可以同时作为用来加密和解密信息,其中最常见的也是当今比较流行的就是AES,也是本文参考使用的加密算法之一。AES为分组密码[42][43],其加密过程中,把明文分成若干长度相等的组,每次加密一组数据,直到全部加密完成。加解密过程依赖于加解密函数以及密钥。AES加密算法一般依据如下函数:C=E(K,P),其中E为加密函数,P为明文,K为密钥,C为密文。若把明文P和密钥K作为加密函数的参数输入,则加密函数E会输出得到密文C。解密函数的公式如下:P=D(K,C),其中D表示解密函数,C为密文,K为密钥,P为明文。也就是说,把密文和密钥K作为解密函数的参数输入,则解密函数会输出明文P。基于以上分析得知,AES加密算法操作的主要流程如图2.3所示。

密钥K密钥K网络传输明文PAES加密函数密文CAES解密函数明文P发送方接收方

图2.3 AES加解密流程

在AES的标准规范中,以16个字节为进行分组,每个字节8位,也就是每组128位。密钥的长度可以使用128位、192位或256位。算法的加密轮数与密钥长度之间存在关联,一般密钥长度为128位的加密轮数为10轮,每一轮即执行一次加密公式C=E(K,P)的过程。加密过程中执行10次这个轮函数,这个轮函数的前9次操作是相同的,只有第10次有所不同。AES的核心就是实现一轮中的所有操作。前9轮9

华 中 科 技 大 学 硕 士 学 位 论 文

中每轮依次执行依次字节代换、行移位、列混淆、轮密钥加等基本操作,第十轮执行除了列混合以外的三种操作,其矩阵变换的简要过程如图2.4所示。

明文矩阵P0P4P8P12P1P5P9P13P2P6P10P14P3P7P11P15S0S4S8S12状态矩阵1S1S5S9S13S2S6S10S14S3S7S11S15AES的十轮加密E3E7E11E15密文矩阵C0C4C8C12C1C5C9C13C2C6C10C14C3C7C11C15E0E4E8E12状态矩阵NE1E5E9E13E2E6E10E14

图2.4 AES矩阵变换

对称加密算法速度非常快,通常用在消息发送方需要发送大量数据的场合,缺点(2)非对称加密算法中需要使用两个不同的密钥进行加解密,简称公钥和私钥,就是密钥的传输比较麻烦,安全性能较低。

一般发送方首先需要接收方将公钥通过网络发送给自己,然后使用公钥对要发送的数据内容进行加密,接收方再使用私钥对加密后的内容进行解密。非对称加密的流程大致如图2.5所示。

乙的公钥乙的私钥原始数据原始数据加密加密数据解密发送方甲接收方乙

图2.5 非对称加密流程

这种加密方式使用数学上难解的问题构造的,与对称加密相比,其安全性更好。10

华 中 科 技 大 学 硕 士 学 位 论 文

通常加密解密的速度比较慢,不适用与大量数据加密的场合。因此对本文中的数字音频加密无法起到较好的效果,不再对其深究。

2.3.2 内容关联密钥技术

传统的加密算法中,密钥与明文几乎无关联性,用户在已知密钥的情况下容易通过暴力破解形式获取明文数据,如果大量的数据都是通过这个密钥来加密生成的,则这些大量数据可能因为一个密钥的丢失而导致所有数据安全性都无法得到保证。

内容关联密钥技术中[44],密钥的生成依赖于原始的明文数据,其思想是从待加密的明文数据中提出一少部分重要性数据,破坏明文的敏感信息[45],并向抽取的位置中填充无关数据扰乱原文信息,从而达到加密的目的,抽取出来的这少部分敏感内容称为密钥,而填充无关信息以后的主体数据称为密文。内容关联密钥技术的加密过程如图2.6所示。

明文P0P1P2P3P4

PkPk+1

Ps-1PsPs+1

Pn内容抽取加密算法S0P1S2S3P4

SkPk+1

Ps-1SsPs+1

Pn密文P0P2P3

Pk

Ps

密钥

图2.6 内容关联密钥加密过程

解密时,只需将密钥中的信息按抽取时的位置进行填充,即可恢复成明文数据,因此内容抽取加密算法需要事先指定好抽取的位置或者在密钥中保存抽取函数的信息,从而保证解密时能够正确地将字节恢复到原始位置。内容关联密钥加密算法的加密效果同时也依赖于抽取的位置,也就是重要数据的获取。由于某些文件其数据格式有一定的特点,数据分布不均衡,部分信息缺失可能会导致其余信息无法正常预览。例如通过H.264编码的MP4视频文件中,一个静止的图像往往对应一个视频帧,视频帧分为三种类型:I帧、P帧和B帧,I帧为关键帧,仅通过I帧即可恢复画面信息,11

华 中 科 技 大 学 硕 士 学 位 论 文

它包含了大量敏感数据,而P帧和B帧为预测帧,为非关键帧,因此基于内容关联密钥的思想,更多地会考虑从关键帧所在的位置进行信息提取,对非关键信息只进行少量抽取即可。而有些文件格式,例如某些文本信息、位图文件、音频原始信息PCM数据或其封装后的WAV格式,其内容分布均匀,对其中部分字节数据进行加密处理,影响的只是这一块数据,未被加密的数据单元不依赖于这块抽取的数据,信息依然可以正常预览,所以无法达到较好的加密效果,因此针对这一类数据不能直接采用内容关联密钥加密算法,本文中所采取的一种操作是可以先通过AES算法将明文数据加密扰乱,再对这些扰乱数据进行随机抽取,经过抽取的密文几乎无法再通过AES解密操作恢复成原文数据,这样结合了传统加密方式与内容关联密钥技术的优势,从而更好地保障音频数据的安全性。

2.4 本章小结

本章主要对数字音频加密处理中涉及的音频理论基础、相关实现技术作了一些简单的介绍。首先介绍了声音在电子设备上的传输原理,分析了其从发送方到接收方如何将模拟信号转化为数字信号、如何处理这些数字信号以及接受者如何听到这些声音所经历的整个过程。另外,对论文中实验部分涉及到的实现技术,如何在Android系统上处理声音数据作了相关叙述,通过使用系统提供的API,配置合适的参数进行声音的录制及播放。最后,分析了传统加密技术与内容关联密钥技术的优缺点,提出了针对不同类型数字音频的加密思路。

12

华 中 科 技 大 学 硕 士 学 位 论 文

3 内容关联密钥数字音频加密算法

本章将从音频存储传输的形式、数字音频结构特性等主要因素考虑如何进行Android平台上基于内容关联密钥的数字音频加密算法的流程设计,并提出评价算法加密效果的评估指标。

3.1 总体设计

第二章中分析了音频数据在日常使用的移动设备中经常存在的两种形式。基于字节流传输时,声音信号首先通过AudioRecord录制到缓冲区中,然后从缓冲区读取并封装成IP数据包通过网络协议传输,每次只需要在发送前对一个数据包的内容进行加密处理,在接收方实时解密后即可通过AudioTrack进行播放。基于文件形式的音频数据,需要将整个文件作为加密算法的输入,分析格式信息,依次对音频每一帧进行加密。

其次,从编码格式的角度分析,音频数据分为最原始的未经任何编码包装的纯原始数据,即PCM数据,以及经过压缩的含有头部信息的编码数据,例如MP3、AAC等主流音频格式。由于PCM数据不含头文件信息,直接对其进行加密操作即可,而AAC这样的数据格式有其自身特性,为了不破坏文件结构,保证加密后的数据能够正常播放,需要从头文件中获取数据帧信息后方可对数据部分进行加密。这部分内容将在本章第二小节数据格式分析部分详细介绍。

在Android系统上,通过AudioRecord以基于字节流的形式录制音频时,最初得到的都是最原始的PCM数据,且支持自行对这些数据进行修改;而通过MediaRecorder以文件的形式录制音频时得到的是编码后的数据,不支持直接修改字节流数据。为了便于实验的进行,暂且作如下规定:以PCM数据代表基于字节流形式的音频数据,不考虑对其进行编码处理,也就是对编码前的数据进行加密;以AAC文件格式代表基于文件形式的音频数据,AAC是当前比较流行的一种编码方式,也就是对编码后的数据进行加密。基于此,本文针对这两种数据格式提出了以下两种加密实现思路。

针对字节流形式传输的PCM数据,在通信过程中,其处理的大致流程如下:

13

华 中 科 技 大 学 硕 士 学 位 论 文

(1)录制声音数据。接收方首先使用Android提供的AudioRecord类,配置相关(2)对PCM数据进行加密。因为PCM数据不包含文件头信息,可以基于AES参数,将原始的声音信号通过PCM编码转化为数字信号,得到最原始的PCM数据。

加密算法与内容关联密钥思想直接对该PCM数据进行加密处理,得到一个密文PCM数据以及密钥。由于AudioRecord录制的过程中是将数据存放在缓冲区的,并且网络传输过程中是以数据包的形式发送,因此一次加密过程只针对一个数据块,加密后产生一个密文和密钥。

(3)将密文、密钥封装成IP数据包通过网络传输到接收方。由于网络传输可能存在到达顺序不一致以及丢包现象,因此密文和密钥要进行匹配,具体匹配过程在后续的内容抽取算法的设计中介绍。

(4)接收方在接收到密文和密钥后通过解密算法对其进行解密,从而恢复得到(5)通过AudioTrack播放PCM数据,得到发送方传来的声音信息。

其实现过程如图3.1所示。

发送方模拟声音信号明文PCM数字信号。

AudioRecordPCM数据发送方(数字信号)加密密文PCM数据密钥网络传输接收方模拟声音信号AudioTrackPCM数据(数字信号)解密密文PCM数据密钥

图3.1 基于字节流形式的加密流程

针对以文件存储的AAC数据,其加解密时间相对较长,对实时性无要求,加解(1)用户通过MediaRecorder将外界的声波信号录制成数字信号并以AAC格式密过程一般直接在本地进行,大致处理流程如下:

存储。MediaRecorder已经封装好了PCM数据编码成AAC的过程。

14

华 中 科 技 大 学 硕 士 学 位 论 文

(2)对AAC数据进行加密。考虑到其文件结构特性,在加解密前需要将其以文件输入流的形式读取,解析文件头部信息,获取数据部分并进行加密处理,加密后会生成一个密文及密钥,密钥一般上传到云端,从而可以实现密文共享。

(3)从本地读取或从服务下载密钥,结合密文恢复得到原始数字音频。

(4)通过MediaPlayer或者其它音乐播放器播放AAC音频数据。

其实现流程图如图3.2所示。

客户端MediaRecorder模拟声音信号MediaPlayerAAC数据(数字音频)加密密文PCM数据解密密钥服务器

图3.2 基于文件形式的加密流程

以上为音频数据从采集到加密的整体过程,隐藏了加密算法的实现细节,其具体流程将在后文进一步分析。

3.2 数据格式分析

内容关联密钥加密算法的设计依托于文件格式。热力学中有一个表征物质状态的参量,叫做“熵”,其物理意义是体系混乱程度的度量,熵值越高,则表示系统混乱程度越高,反之则表示系统混乱程度越低。

同样的,文件中也存在类似现象,例如位图、PCM等文件类型,其数据格式相对简单,分布均匀,一块信息对应一个数据单元且不依赖于另一个数据单元,即使部分数据单元缺损,其余的信息依然可以完好地呈现,一般称之为低熵数据。对于这种类型的数据,直接抽取只会对部分信息造成微小的影响,尤其对于PCM这样的音频信息几乎无任何影响,其每一个数据单元都对应着一个采样点,内容抽取加密的效果相当于单纯地对个别采样点的值进行更改,而声音整体特征不变,因此需要采取额外的措施。像WAV格式的音频格式是基于PCM数据封装的,抛开其头文件信息,其主体内容也是低熵数据。

15

华 中 科 技 大 学 硕 士 学 位 论 文

而像AAC这样的文件格式,其数据主体经过编码压缩,数据直观上失去了原始声音信号的波形特征,从整体上看是由一帧一帧的数据组成,按一定的顺序排列,具有低熵的特性,而从每一帧看,一帧包含了许多个数据单元,数据缺失会导致解码器无法正确地对其进行解析,内容抽取算法会破坏每一帧的信息,从而可能导致音频整体播放异常,通常称这样的数据为高熵数据。一般来说,对于这种类型数据,在保证一定抽样率的情况下,通过直接内容抽取就可达到加密效果。

3.2.1 PCM数据

由第二章第一小节得知,PCM数据,是通过PCM编码将模拟信号以固定的采样频率转换成数字信号后的表现形式,是一段二进制序列,其模拟信号的每一个采样点都与数字信号的值一一对应。它可以通过Android中的AudioTrack进行播放,其播放效果与原始音质最为接近。但是一般无法直接通过音乐播放器对它进行播放,往往会先将其转化为WAV格式后进行播放。

PCM数据编码时常与以下几个参数相关联:采样频率、量化精度和声道数。

(1)采样频率是设备一秒钟对模拟信号的采样次数,一秒钟内采样的次数越多,获取的频率信息更丰富,声音质量越好,还原度越高,同样数据量往往也越大。通常采样率对不同的情况有不同的规定,会依据实际应用情况进行选择。

(2)确定采样率以后,需要对模拟信号的抽样点进行量化。采样相当于对波形的横轴进行分割,而量化相当对其纵轴的振幅进行等量分割,通常用量化精度表示这种分割的程度,其数值越大,分辨率越高,其声音效果也就越逼真,现在比较常用的是16位的量化精度。

(3)声道数一般分为单声道和双声道,单声道的音频数据是按采样时间的先后PCM数据格式相对简单,最终表现形式如图3.3所示。

顺序依次存入的,如果是双声道的话一般就按照“左右左右左右”的方式存储。

16

华 中 科 技 大 学 硕 士 学 位 论 文

8位单声道(PCM)0声道0声道

8位双声道(立体声PCM)0声道(左)1声道(右)0声道(左)1声道(右)

16位单声道(PCM)0声道(低字节)0声道(高字节)0声道(低字节)0声道(高字节)

16位双声道(立体声PCM)0声道(左,低字节)0声道(左,高字节)1声道(右,低字节)1声道(右、高字节)地址递增方向

图3.3 PCM数据格式

通过上图得知,PCM文件没有额外的头部开销,可以直接对其进行处理,对于双声道形式,通过交叉分离的方式获取每个声道的数据。由于PCM数据是低熵数据,传统的内容抽取算法对其加密无法获得有效的加密效果,故不能直接对PCM数据进行抽取。本文实验中,计划先使用AES加密算法将原始PCM数据加密处理后转化为高熵数据,然后再对数据进行内容抽取,填充无关信息后生成密文主体数据,由于加密后的数据缺失,AES几乎无法将抽取后的内容恢复成原来的效果,从而可以达到加密的效果。

3.2.2 AAC数据

AAC,即高级音频编码(Advanced Audio Coding),是一种专为数字音频设计的编码压缩格式。它最初是基于MPEG-2的音频编码技术,相对于MP3文件而言性能有了大幅度的提升,编码过程采用了全新的编码算法,效率更高,音频质量更好而文件更小,是新一代的音频有损压缩技术,也是当今比较主流的音频格式之一,具有较高的性价比。

AAC具有如下特点:

(1)提升的压缩率:可以以更小的文件获得更高的音质;

(2)支持多声道:最多支持多达48个音轨;

(3)更高的解析度:最高支持96KHz的采样频率;

(4)提升的解码效率:解码播放所占用的资源更少;

AAC在编码方式及未来的应用场景上有其显著的优势,并且现在的AAC音频在原MPEG-2的基础上又有了新的突破,形式了MPEG-4 AAC标准,一般都是通过m4a来封装。AAC提供了九种规格以适应不同的应用场景,实验中选取基于MPEG-17

华 中 科 技 大 学 硕 士 学 位 论 文

2的低复杂度规格的AAC格式即可。

AAC的音频文件格式有ADIF和ADTS。

(1)ADIF(Audio Data Interchange Format),即音频数据交换格式。其数据格式的特点是文件头信息只有一个,且位于文件的起始位置,因而不能从文件中间开始解码,头部后面部分是所有的数据流。解码时先读取头部信息中的关键参数,对后面的每一帧都套用这些参数进行处理。这种类型的文件适用场景有限,一般用于磁盘文件中。AAC的ADIF格式如图3.4所示。

Header()Raw_data_stream()

图3.4 ADIF音频格式

(2)ADTS(Audio Data Transport Stream),即音频数据传输流。这种类型的文件其每一帧数据前面都有一个头部信息,一般为7或9个字节,包括28个比特的固定头部和28个比特的可变头部,另外两个字节为循环冗余校验CRC,CRC不是必含项,需要根据固定头部中的标志位信息确认其是否存在,文件头后面是数据体部分,具体长度依据可变头部中的标志位信息确认。AAC的ADTS的一般格式如图3.5所示。

Fixed_headerVariable_headerCRCRaw_data_block

图3.5 ADTS音频格式

简单来说,对AAC文件进行解析时,需要先判断其文件格式。如果是ADIF类型的数据,需要首先对头部信息进行解析,然后才能解析后面的全部信息;而如果是ADTS类型的数据,其每一帧都有一个文件头,可以根据其同步字从任意位置开始解码。AAC中的音频数据首先是经过采样、编码及量化得到的,并且以样本值的形式存在,再对这些样本值进行AAC编码压缩,以音频帧的形式存在,对这些音频帧通过不同的方式进行封装得到的就是不同格式的AAC数据。由于ADTS的使用场景更为广泛,这里不对ADIF格式作详细介绍,只对ADTS的头文件信息进行进一步的分析,如表3.1所示,序号1-10表示28位固定头部,序号11-15表示28位可变头部,序号16表示可能存在的循环冗余校验CRC,依据这些信息即可对该音频数据进行解码或是进行加密操作。

18

华 中 科 技 大 学 硕 士 学 位 论 文

表3.1 ADTS 文件头信息

序号

1

参数

Syncword

长度(bits) 备注

12

全为1,即0xFFF,代表一个ADTS帧的开始

2

3

4

5

6

7

8

9

10

11

12

13

ID/MPEG Version

Layer

Protection Absent

Profile

Sampling Frequency Index

Private Stream(bit)

Channel Configuration

Originality

HOME

Copyrighted Stream

Copyrighted Start

AAC frame length

1

2

1

2

4

1

3

1

1

1

1

13

0表示MPEG-4,1表示MPEG-2

总是00

0 if CRC,1 if no CRC

MPEG-4 Audio Object Type minus 1

采样率索引,0~15

编码时为0,解码时忽略

声道数配置

编码时为0,解码时忽略

编码时为0,解码时忽略

编码时为0,解码时忽略

编码时为0,解码时忽略

一个ADTS帧的长度包括ADTS头和AAC原始流

14

15

Buffer Fullness

Number of AAC frames

11

2

0x7FF 说明是码率可变的码流

number of AAC frames (RDBs) in

ADTS frame minus 1

16 CRC 16 CRC if protection absent is 0

由表格可知,对ADTS格式的AAC文件进行内容抽取时,首先需要从头信息中解析出所需要的关键参数,例如根据序号为4的标志位“Protection Absent”解析出是否有两个字节的CRC头部,根据序号13的标志位“AAC frame length”得到一个ADTS19

华 中 科 技 大 学 硕 士 学 位 论 文

帧的字节长度、序号15的标志位“Number of AAC frames”得到数据部分AAC帧的数量等,从而正确地解析出数据部分并进行加密处理。

3.3 内容抽取算法设计

基于内容关联密钥的思想,传统的抽取算法是直接从文件输入流中读取全部字节数组,采用均匀抽取的方式取出部分字节流信息,其安全性较低,抽取过程可能会导致文件结构破坏,从而导致无法正常预览,一般来说某种格式的文件具有与其相关的特征,如果是低熵数据,一旦文件头或文件尾等信息被正确恢复,就可能导致数据体因为没有被充分加密而遭到信息泄露。对此,设计算法时应该摒弃均匀抽取的方式,提高抽取算法的安全等级,同时应更侧重于对文件数据核心内容作处理,达到在不破坏文件结构的前提下,实现一个比较好的加密效果。

3.3.1 原始数据预处理

通过本章第二小节的分析得知,尽管内容关联密钥加密算法相对于传统加密算法有其优越性。但其对低熵数据的处理表现不佳,因此,需要结合这两种思想,针对低熵数据需要采取一定措施将其变为高熵数据,之后再对其进行内容抽取。高熵数据是否有必要进行预处理,可依据对加密强度的要求以及实验中加密的性能及效率分析做决定。

由于PCM数据是低熵数据,且不包含文件头和文件尾等结构信息,可以直接对整体字节流进行预处理。首先需要将原始数据的均匀性打乱,使其变为高熵数据。这里采用AES算法进行第一遍加密处理,为了保证加密前后数据大小不变,可以2048个字节为一组,采用ECB非填充模式及128位密钥进行加密,加密后的数据则不再具备原来具有规律的波形特征,接下来再对AES加密后的数据进行内容抽取,设抽取比例为p%,剩下的(1-p%)的密文信息几乎是无法通过AES解密的可逆过程恢复成原始明文数据的。其大致处理过程如图3.6所示。

20

华 中 科 技 大 学 硕 士 学 位 论 文

密文AES加密预处理内容抽取加密低熵PCM数据高熵数据密钥

图3.6 低熵数据预处理

针对AAC文件,以ADTS类型的文件为测试数据,从中解析出文件头信息及数据部分,只对数据部分进行处理。AAC的数据部分是通过原始的PCM数据经过编码压缩得来的,是高熵数据,实验中将对其作两种类型测试,一种是不经过对称加密算法处理,直接对数据进行抽取;另一种类似于PCM数据的处理,先经过一次AES加密,再进行抽取。显然,第二种方式加密强度更高、更安全,时间相对较长,时间差取决于原数据的大小以及加密时内存读取数据的时间,通过实验结果可以比较不同操作下的加密时长之间的关系,从而调整算法的相关参数。其大致流程图如图3.7所示。

密文内容抽取加密高熵AAC数据密钥AES加密预处理AES加密数据

图3.7 高熵数据预处理

3.3.2 确定抽取位置

通过上一节的格式分析可以知道,PCM数据是没有头文件信息的,可以直接对其进行抽取;AAC格式需要避开其头部,对数据部分进行内容抽取。常见的内容抽取算法是均匀抽取,加密时只需要知道抽取数据的起始位置、数据长度以伪随机函数及抽取百分比即可,实现思路简单,抽取内容分布均匀,也导致其有规律可循,容易破解,安全性较低。而随机抽取的安全性相对较高,由于随机函数的不确定性,需要21

华 中 科 技 大 学 硕 士 学 位 论 文

在密钥中保存能获取到抽取位置的参数信息,以便解密时能找到密钥字节原始的位置。已知一个数据包或者一个音频帧的内容并可得到其数据长度L,然后依据这个长度L在[0, L-1]闭区间内按抽取比例执行随机抽取,其抽取的位置依赖于选取的伪随机函数。这里采用线性同余法产生伪随机数,也就是抽取位置的下标。线性同余法是目前应用最广泛的伪随机数生成算法,其基本思想是运用数论中同余运算产生随机数,递推公式为:

Xn+1=(aXn+c) mod

发布评论

评论列表 (0)

  1. 暂无评论