技术领域
[0003] 本技术涉及对数据流的加密,更具体地,涉及脉冲编码调制(PCM)音频数据,例如与实时的流式音频相关的PCM音频。
相关背景技术
[0004] 数字和PCM音频经常用于流式音频情境中。流式音频数据经常以12,16,或24位变体进行流式传输。一些限制适用于流式音频,例如无法添加数据,和可以丢弃数据中的一些。在一些情况下,分组(package)帧大小也是固定的(例如,64,128,或256位)。
具体实施方式
[0018] 本公开的多个方面涉及对数据流的加密。一些实施例涉及数字或PCM实时流式音频数据。原始流式音频数据未被加密,会容易受到失陷(compromised)设备的攻击。常用的加密协议使用128位帧(但其他帧大小也是可行的)。该大小是基于常用密码,例如一次处理128位的高级加密标准(AES)。PCM音频通常未被加密,并且可以是无边界的(例如,不需要接收器在音频流中的哪里的表示)。但是,当PCM音频被加密时,音频必须被解密才能播放。PCM音频的解密必须明确样本边界,否则数据将无法正确解密。发送的音频数据流由接收器接收,尽管接收器无法自动确定128位边界的开始,因此必须使用某种标志。
[0019] 本文公开的是在现有数字音频链路(例如:Audinate AES‑3,AES‑67或QSC TMQ‑LAN )上对音频进行加密的协议。像AES‑3这样的音频接口不包含任何加密功能。人们不能增加流中的位数;但是,通过减少音频数据的位深度(例如,从24到22,或20),可以为新数据腾出空间。通过将每个音频样本减少2位,每12帧为一帧新加密数据省出了足够的位。加密数据帧包括计数器部分和基于散列的消息认证码(HMAC)签名。计数器部分用作公共的一次性随机数(nonce),而HMAC用于验证(verify)每个128位帧的边界并对帧中的数据进行认证。
[0020] 下面参照附图更详细地讨论本技术的几种实施方案。图1是示出了所公开技术可以操作的一些实施方案的设备的概况的框图。设备可以包括透明地对音频数据进行加密的设备100的硬件组件。设备100可以包括一个或多个输入设备120,包括麦克风,其向处理器110(例如CPU,GPU,HPU等)提供输入,通知其动作。动作可以由硬件控制器传达,该硬件控制器解释从输入设备接收到的信号并使用通信协议将信息传送给处理器110。输入设备120包括,例如,鼠标,键盘,触摸屏,传感器(例如,红外传感器),触摸板,可穿戴输入设备,基于相机或基于图像的输入设备,麦克风,或其它用户输入设备。
[0021] 处理器110可以是在设备中或分布在多个设备中的一个处理单元或多个处理单元。例如,处理器110可以使用总线(例如PCI总线或SCSI总线)耦接到其它硬件设备。处理器110可以与设备(例如,显示器130)的硬件控制器通信。显示器130可用于显示文本和图形。
在一些实施方案中,显示器130向用户提供图形和文本视觉反馈。在一些实施方案中,显示器130包括作为显示器的一部分的输入设备,例如当输入设备是触摸屏或配备有眼睛方向监视系统时。在一些实施方案中,显示器与输入设备是分开的。显示设备的示例包括:LCD显示屏,LED显示屏,投影,全息,或增强现实显示器(例如平视显示设备或头戴式设备)等。其它I/O设备140也可以耦接到处理器,例如网卡,视频卡,声卡,USB,火线(firewire)或其它外部设备,相机,打印机,扬声器,CD‑ROM驱动器,DVD驱动器,磁盘驱动器,或蓝光设备。
[0022] 在一些实施方案中,设备100还包括能够与网络节点进行无线或有线通信的通信设备。例如,通信设备可以使用TCP/IP协议通过网络与另一设备或服务器进行通信。设备100可以利用通信设备将操作分布到多个网络设备上。
[0023] 处理器110可以访问在设备中或分布在多个设备中的存储器150。存储器包括用于易失性和非易失性存储的多种硬件设备中的一种或多种,并且可以包括只读和可写存储器。例如,存储器可以包括随机存取存储器(RAM),多种高速缓存(caches),CPU寄存器,只读存储器(ROM),和可写非易失性存储器,例如闪存,硬盘驱动器,软盘,CD,DVD,磁性存储设备,磁带驱动器等。存储器不是与底层硬件分离的传播信号;因此,存储器是非暂时性的。存储器150可以包括程序存储器160,其存储程序和软件,例如操作系统162,加密模块164,和其它应用程序166。存储器150还可以包括数据存储器170,例如,PCM流式音频数据,配置数据,设置,用户选项或偏好等,其可以被提供给程序存储器160或设备100的任何元件。
[0024] 一些实施方案可以与许多其它计算系统环境或配置一起操作。可适合与本技术一起使用的计算系统,环境,和/或配置的示例包括但不限于个人计算机,服务器计算机,手持或笔记本电脑设备,蜂窝电话,可穿戴电子产品,游戏机,平板电脑设备,多处理器系统,基于微处理器的系统,机顶盒,可编程消费电子产品,网络PC,小型计算机,大型计算机,包括任何上述系统或设备的分布式计算环境,等等。
[0025] 图2是所公开技术的一些实施方案可以操作的环境200的概况的框图。环境200可以包括一个或多个客户端计算设备205A‑D,其示例可以包括设备100。客户端计算设备205可以在使用逻辑连接通过网络230连接到一个或多个远程计算机(例如服务器计算设备)的网络环境中操作。
[0026] 在一些实施方案中,服务器210可以是边缘服务器,其接收客户端请求并通过其它服务器(例如,服务器220A‑C)协调这些请求的实现。服务器计算设备210和220可以包括计算系统,例如设备100。尽管每个服务器计算设备210和220在逻辑上被显示为单个服务器,但服务器计算设备可以各为包括位于相同或地理上不同的物理位置的多个计算设备的分布式计算环境。在一些实施方案中,每个服务器220对应于一组服务器。
[0027] 客户端计算设备205和服务器计算设备210和220各自可以充当对于其它服务器/客户端设备的服务器或客户端。服务器210可以连接到数据库215。服务器220A‑C可以各自连接到相应的数据库225A‑C。如上所述,每个服务器220可以对应一组服务器,并且这些服务器中的每一个可以共享数据库或者可以拥有自己的数据库。数据库215和225可以存入(例如,存储)例如加密密钥,用户地址,或加密协议之类的信息。尽管数据库215和225在逻辑上被显示为单个单元,但数据库215和225可以各自是包含多个计算设备的分布式计算环境,可以位于其相应的服务器内,或者可以位于相同或地理上不同的物理位置。
[0028] 网络230可以是局域网(LAN)或广域网(WAN),但也可以是其它有线或无线网络。网络230可以是因特网或一些其它公共或专用网络。客户端计算设备205可以通过网络接口(例如通过有线或无线通信)连接到网络230。虽然服务器210和服务器220之间的连接被显示为单独的连接,但这些连接可以是任何类型的本地,广域,有线,或无线网络,包括网络230或单独的公共或专用网络。
[0029] 图3是示出在一些实施方案中,可以用在采用所公开技术的系统中的组件300的框图。组件300包括硬件302,通用软件320,和专用组件340。如上所述,实施所公开技术的系统可以使用多种硬件,包括处理单元304(例如,CPU,GPU,APU等),工作存储器306,存储型存储器308(本地存储器或作为远程存储的接口,例如存储215或225),以及包括麦克风和/或相机的输入和输出设备310。在多种实施方案中,存储型存储器308可以是以下中的一个或多个:本地设备,到远程存储设备的接口,或其组合。例如,存储型存储器308可以是经由系统总线可访问的一个或多个硬盘驱动器(例如,独立磁盘冗余阵列(RAID))的集合,或者可以是云存储提供者或通过一个或多个通信网络(例如,网络可访问存储(NAS)设备,例如存储215或通过另一服务器220提供的存储)访问的其它网络存储。组件300可以在例如客户端计算设备205之类的客户端计算设备或例如服务器计算设备210或220之类的服务器计算设备上实施。
[0030] 通用软件320可以包括多种应用,包括操作系统322,本地程序324,和基本输入输出系统(BIOS)326。专用组件340可以是通用软件应用320的子组件,例如本地程序324。专用组件340可以包括加密模块344,音频模块346,以及可用于提供用户界面,发送数据,和控制专用组件的组件,例如接口342。在一些实施方案中,组件300可以位于分布在多个计算设备上的计算系统中,或者可以是执行一个或多个专用组件340的基于服务器的应用的接口。尽管被描述为单独的组件,专用组件340可以是功能的逻辑或其它非物理区分和/或可以是一个或多个应用的子模块或代码块。
[0031] 加密模块344被配置为根据例如AES,数据加密标准(DES),三重DES,河豚(Blowfish),双鱼(Twofish),RSA(Rivest‑Shamir‑Adleman)等之类的标准对PCM音频数据进行加密。加密模块344利用用作随机化元素(例如,一次性随机数)的计数器和HMAC来验证每个帧的边界并对帧进行认证。在一些实施例中,帧是128位的。加密密钥通过此应用外部的过程进行共享。加密模块344可以被实现为软件,固件,或ASIC。
[0032] 音频修改器346被配置成修改PCM音频以从每个样本中每帧丢掉预定的位数(例如,每帧2,4,或其它所选择的位数)。在一个实施例中,被丢掉的位是来自音频流的最低有效位,且对于所有听众,除了最挑剔的听众之外,音频的整体质量几乎没有影响。人耳基本上无法注意到其中的区别。在其它实施例中,被丢掉的位可以来自样本的其它所选择的部分。音频修改器346可以被实现为软件,固件,或ASIC。
[0033] 本领域技术人员将理解,上述图1‑3中所示的组件,以及在下面讨论的流程图中的每一个,可以以多种方式进行改变。例如,可以重新排布逻辑的顺序,可以并行执行子步骤,可以省略图示逻辑,可以包括其他逻辑等。在一些实施方案中,上述一个或多个组件可以执行下面描述的一个或多个过程。
[0034] 图4是示出在一些实施方案中对实时数据流进行加密的过程400的流程图。在一些实施方案中,可以“适时(just in time)”地执行过程400,例如当响应接收到的音频数据时。当接收到音频数据并将其从模拟信号转换为数字信号时,系统在发送给连接的用户之前执行主题协议。在执行主题协议之前,(例如,通过HTTPS或SRTP密钥派生)与通信的相关方共享主加密密钥。在一些实施例中,非对称密钥对与每个HMAC结合使用以验证帧和发送方。在多种实施例中,主加密密钥与和HMAC相关联的非对称密钥相同或不同。
[0035] 在步骤402中,修改PCM音频。修改包括从数据样本(例如,音频)中删除/截断位。被丢掉的位是特定于应用的,并取决于给定应用的灵敏度所在。例如,在一些实施例中,被丢掉的位是始终落在人类的可听见范围之外的样本的最低有效位。截断将被丢掉的位中的音频数据从流中完全移除,得到的音频样本将具有较低的分辨率。但是,分辨率的下降通常是听众基本上无法察觉到的。在一些实施例中,先抖动信号以掩盖位的移除。
[0036] 虽然在一些实施例的描述中明确地提到音频数据,但在另一些实施例中,可以使用其它数据,其中当数据中的一些(例如,被截断的位)被丢弃时该数据是可理解的。例如,数据的被丢弃部分具有降低分辨率或精度影响的未压缩数据是可以接受的。相对地,被丢弃的数据扰乱了码字或关联编解码器(例如,数据压缩技术中使用的那些)的数据流将不再能辨认。
[0037] 在一些使用24位PCM音频数据的实施例中,从每个样本中截断2位(例如,所以每个样本现在是22位)。所公开协议的最终结果将给数据流带来附加的延迟(latency)。每个附加的截断位将以附加的分辨率为代价得到减少延迟惩罚的效果。也就是说,如果截断4位而不是2位,则会减少在音频加密的延迟上的影响,但数据样本会损失与被截断的位数对应的分辨率。
[0038] 在步骤404中,一组被截断的样本被分组到帧中并通过预定的加密协议(例如,AES‑128,AES‑256,DES,Triple DES,河豚,双鱼,RSA)进行加密。在一些实施例中,一组中有64个样本。组中的样本数可以不同,并且基于从截断的数据样本中“省下的位”。例如,帧大小除以每个样本的被截断位数表示一组中有多少样本。在音频帧为128位并且每个音频样本是24位且截断为2位的情况下,11帧(包括64个样本)在包括加密数据帧之前被加密。在解密前,接收器将等待接收64个样本,这种等待会导致延迟的增加。通过如上所述增加位截断,减少了发送数据所需的帧数。例如,使用128位帧和具有4位截断的24位样本,只需要5帧来包含32个样本(128/4=32)。导致的延迟减少了6帧。
[0039] 分组步骤基于响应截断而被应用的省下的位来修改每个样本到相应帧的排列。每个样本(第一个样本除外)在得到的帧中的排布方式不同于相应样本在没有截断的情况下被设置的位置。例如,在一组中使用64个样本的情况下,在2位截断前大约5.3个样本排列到给定帧。相比之下,在2位截断后,每帧中排列5.8个样本。
[0040] 加密步骤使用递增计数器,其充当流式数据的一次性随机数。计数器被包含在每组64个样本之后的加密数据帧中。计数器一次性随机数用于改变数据,使得匹配数据每次出现时都不相同。例如,对于音频数据,如果没有一次性随机数,无声(silence)将总是作为相同的样本出现。在一些实施例中,计数器在加密数据帧中未被加密。
[0041] 在步骤406中,系统生成加密数据帧。加密数据帧同样是128位,包含64位计数器和64位HMAC签名。要生成加密数据帧,计数器将从上一个加密数据帧递增,并基于发送方的私钥和关联的一组样本计算HMAC。
[0042] 在步骤408中,将该组样本和加密数据帧发送到接收器。在步骤410中,接收器通过计算流的HMAC并与建议的分组进行比较来同步数据流。在数据流不可靠或分组被无序接收的情况下,HMAC使接收方能够验证内容并验证发送方。在步骤412中,接收器使用计数器对数据进行解密。在上面使用包含2位截断的24位音频的示例中,64个样本从音频的1408个被加密的位转换为被解密的音频的相匹配的1408位。在步骤1414中,接收器将通用填充位(例如,全1的,全0的,随机位,或一些预定的位组合)追加到样本中,替换已被(例如,从同一位置)截断的那些,以使样本回到预期的大小。在步骤1416中,回到原始大小的该组样本被传TM到音频接口(例如:Audinate AES‑3,AES‑67或QSC Q‑LAN )进行播放。
[0043] 图5是数据流分组500的框图。一段数据流包括预定数量的数据样本。图中描绘了十二个128位帧,其中包括十一个数据帧502。该图包括一个加密数据帧504。加密数据帧504包括两部分,计数器506和HMAC签名508。
[0044] 每个数据帧502包括一组数据样本。在一些实施方案中,一组中有64个样本。组中的样本数可以不同,并且基于从截断的数据样本中“省下的位”。例如,帧大小除以每个样本的被截断位数表示一组中有多少样本。在数据帧502是128位并且每个数据样本是24位且截断为2位的情况下,对于每个加密数据帧504,包括了十一个数据帧502(如图所示)。在解密前,接收器将等待接收64个样本,这种等待会导致延迟的增加。通过如上所述增加位截断,减少了发送数据所需的帧数。例如,使用128位帧和具有4位截断的24位样本,只需要5帧来包含32个样本(128/4=32)。如果把这个示例描画出来,将仅描绘六帧。
[0045] 图6A‑F是所公开协议的一些实施方案的多个步骤的框图。图6A是一组样本600的框图。按照使用64个24位样本的示例,每个样本602被描画为需要代表性空间量。实际上,每个样本占用的空间是时间性的,而不是物理的。
[0046] 图6B是截断后的该组样本604的框图。每个样本在右侧减少了2位,在每个样本之间留出一些空白空间606。留下一组被截断的样本608。图6C是将被截断的该组样本608叠加在图6A的样本所需的空间610上的框图。虚线612表示先前由相应的未被修改的样本602所占用的空间。被截断的样本608如图所示进行排列以示出每个样本(除了第一个)现在在流中占用的空间与先前不同。
[0047] 图6D是将被截断的该组样本608与加密数据614组合来代表数据流单元616的框图。加密数据614包括被追加到数据流单元616末尾的64位计数器618和64位HMAC 620。图6E是示出被分组到128位数据帧的数据流单元622的框图。每个被截断的样本608现在被排布成11个帧624中的一个或多个进行发送。每个单独的被截断的样本608不一定完全装入帧624。许多被截断的样本608被拆分到相邻帧624上。在全部帧之后,计数器618和HMAC 620被排列到单独的第十二帧。
[0048] 图6F是示出HMAC认证协议结构的框图。图6F描绘了数据流单元616的接收器侧代表。为了生成HMAC 620,包括被截断的样本608的十一个帧624一起被加密626。HMAC 620用于对该组样本进行认证。该图显示了当使用安全散列算法(SHA‑1)散列技术生成HMAC 620时的该组被加密的样本626。可以使用其它散列算法来替代SHA‑1,例如,存在许多其它SHA算法(例如,SHA‑0,SHA‑2,SHA‑3),消息摘要(MD5),或其它本领域已知的适合的散列算法。
[0049] 基于数据流到达接收器的方式,需要一种方法来确定数据的边界以便正确解密。为了实施这个,接收器首先缓存(buffers)数据流单元616。在所描绘的示例中,数据流单元
616为1536位(12帧,每个128位)。HMAC 620是数据流单元616的最后64位,并且是在前1472位(十一个128位数据帧加上64位计数器)上计算的。为了进行认证,将计算出的HMAC的前64位与缓存的数据流单元616的最后64位进行比较。值得注意的是,多种散列算法会将HMAC计算成不同的大小。SHA‑1输出160位结果。在数据流单元6161中的被发送的HMAC 620仅仅是散列算法输出的前64位。
[0050] 如果HMAC 620是有效的,则意味着被加密的音频缓存可以被解密。如果HMAC 620不是有效的,接收器对缓存组帧(framing)以预定量进行移位并尝试再次验证HMAC 620。在一些实施例中,缓存组帧移位可以将缓存向前滑动24位,同时接收另外24位以追加到末尾,或者可发生更随机的移位。HMAC 620还可用于验证数据的发送器。在一些实施例中,HMAC 620与发送方的公钥具有算法上的关系。
[0051] 一旦HMAC被验证,解密仅仅是加密阶段的反转。计数器618用作计数器模式区块解密中的初始向量(IV)的高64位。IV的较低64位是到缓存的基于0的128位索引(它从0开始到10)。解密后,音频可以被解开分组,且每个22位样本被扩展回24位(例如,使用填充位)并播放出系统。
[0052] 参照附图描述了上述所公开技术的几种实施方案。可以实施所述技术的计算设备可以包括一个或多个中央处理单元,存储器,输入设备(例如,键盘和指点设备),输出设备(例如,显示设备),存储设备(例如,磁盘驱动器),和网络设备(例如,网络接口)。存储器和存储设备是计算机可读的存储介质,其可以存储实施所述技术的至少部分的指令。此外,数据结构和消息结构可以通过数据发送介质(例如通信链路上的信号)进行存储或发送。可以使用多种通信链路,例如互联网,局域网,广域网,或点对点拨号连接。因此,计算机可读介质可以包括计算机可读存储介质(例如,“非暂时性”介质)和计算机可读传输介质。
[0053] 在本说明书中提及的“实施方案”(例如,“一些实施方案”,“多种实施方案”,“一种实施方案”,“实施方案”等)是指结合实施方案描述的特定特征,结构,或特性被包括在本技术的至少一个实施方案中。这些短语在说明书中不同位置的出现不一定都指同一实施方案,也不一定是与其他实施方案相互排斥的单独或替代实施方案。此外,还描述了可以由一些实施方案展现而不由其他实施方案展现的多种特征。类似地,描述了可以是一些实施方案的需求但不是其他实施方案的需求的多种需求。
[0054] 如本文所用,高于阈值意味着比较项的值高于规定的其它值,比较项在某些规定数量的项中具有最大值,或者比较项的值在规定的顶部百分比值内。如本文所用,低于阈值意味着比较项的值低于规定的其他值,比较项在某些规定数量的项中具有最小值,或者比较项的值在规定的底部百分比值内。如本文所用,在阈值内意味着比较项的值介于两个特定的其他值之间,比较项在位于中间的规定数量的项中,或者比较项的值在位于中间的规定的百分比范围内。相对性术语,例如高或不重要,当未另行定义时,可以被理解为赋予一个值并确定该值与已建立的阈值的比较情况。例如,短语“选择快的连接”可以被理解为选择一个连接,该连接被赋予的对应于其连接速度的值高于阈值。
[0055] 如本文所用,词语“或”是指一组项目的任何可能的排列组合。例如,短语“A,B,或C”是指A,B,C,或其任意组合中的至少一种,例如以下中的任何项:A;B;C;A和B;A和C;B和C;A,B,和C;或任何项目的倍数,例如A和A;B,B,和C;A,A,B,C,和C;等等。
[0056] 尽管已经以特定于结构特征和/或方法行为的语言描述了本主题,但应当理解,在所附权利要求中定义的主题不一定限于上面描述的特定特征或行为。为了说明的目的,本文已经描述了特定实施例和实施方案,但是在不偏离实施例和实施方案范围的情况下可以进行多种修改。上面描述的特定特征和行为作为实施以下权利要求的示例形式被公开。因此,实施例和实施方案不受所附权利要求的限制。
[0057] 上面所述的任何专利,专利申请,和其它参考资料均通过引用并入本文。如有必要,可以修改方面,以采用上述多种参考资料的系统,功能,和构思来提供进一步的实施方案。如果通过引用并入的文档中的陈述或主题与本申请的陈述或主题冲突,则以本申请为准。