用于加密和解密数据流的方法和系统的制作方法

xiaoxiao2020-08-01  5

专利名称:用于加密和解密数据流的方法和系统的制作方法
用于加密和解密数据流的方法和系统
背景技术
数据加密是电子通信中很重要的一个方面。在从一个位置向另一个位置传输数据时,可能期望加密数据以使得只有经过授权的接收者能够读取。数据加密已经被常规地应用于电子设备之间的书面通信例如电子邮件和文本消息。但是,计算机图形学的引入已经使得除了文本之外还能够对图像进行加密。图像加密会使得全部或部分图像不可读。也就是说,无论是观察员本人还是电子图像阅读器在没有首先解密图像的情况下都不能从加密图像中识别出任何有意义的信息。现有图像加密技术的一个问题在于,根据所用的编码图像的方法,可能会难于或者无法以令人满意的方式进行加密。较新的图像格式例如JPEG2000在技术上很多方面都要优于之前的格式。例如,与原始的JPEG标准相比,JPEG2000提供了更好的压缩性能例如伪影更少,导致对原始图像有更高的保真度,还提供了增强的比特率控制。但是,由于复杂度的增加,加密以JPEG2000编码的图像与加密以原始JPEG标准编码的图像相比在计算成本上通常会更加昂贵,例如抢占处理能力或者占用系统资源譬如总线带宽。加密图像的解密也会相应地昂贵。在某些情况下,增加开销可能是不允许的。例如,在需要基本上实时地进行图像解码时,譬如在互联网流、电视、视频监控以及其他的视听应用中,可能无法足够快地加密和/或解密以满足带宽的要求。另一种情况是当存在大量的将被加密的图像数据时,例如大图像文件、多图像媒体例如视频剪辑、幻灯片、电影、数字相册等。在后一种情况下,尽管可能没有对成品(例如完全加密图像或完全解密图像)的即时需要,但是总体的时间约束可能也会是一种限制因素。而且,代价高昂的加密和解密可能会从在相同系统上运行的其他应用程序抽调资源。

发明内容
本发明的第一示例性实施例涉及一种数据流的加密方法,包括以下步骤接收数据流,并且对数据流内的每一个数据包,通过加密数据包中的报头部分同时保留数据包的主体部分不加密而形成加密包。该方法还包括组合由所有加密包构成的加密数据流并输出加密数据流的步骤。本发明的第二示例性实施例涉及一种加密数据流的解密方法,包括以下步骤接收加密数据流作为输入,对加密数据流内的每一个数据包,通过解密包中的报头部分并将包中主体部分的位置作为报头部分的函数加以确定而形成解密包,然后通过解码解密包生成图像。本发明的第三示例性实施例涉及一种用于加密数据流的设备。该设备包括被设置用于从数据源接收图像作为输入的输入装置,被设置用于将图像编码为数据流的编码装置,以及加密装置,加密装置被设置用于对数据流内的每一个数据包,通过加密包中的报头部分同时保留包的主体部分不加密而形成加密包,然后组合由加密包构成的加密数据流。本发明的第四示例性实施例涉及一种用于将加密数据流解密的设备。该设备包括
4解密装置,解密装置被设置用于接收加密数据流作为输入,并且对加密数据流内的每一个数据包,通过解密包中的报头部分并将包中主体部分的位置作为报头部分的函数加以确定而形成解密包。该设备进一步包括被设置用于通过解码解密包而生成图像的解码装置。本发明的第五示例性实施例涉及一种计算机可读的存储介质,其上存储有可由处理器执行的一系列指令,这些指令被设置用于促使处理器执行以下步骤接收未加密的数据流,对数据流内的每一个数据包,通过加密包中的报头部分同时保留包的主体部分不加密而形成加密包,组合由所有加密包构成的加密数据流,以及输出加密数据流。


图1示出了根据本发明的一个示例性实施例的用于加密数据流的系统的框图。图2示出了根据本发明的一个示例性实施例的输入设备的框图。图3示出了根据本发明的一个示例性实施例的输出设备的框图。图4示出了根据本发明的一个示例性实施例的一组子带。图5示出了根据本发明的一个示例性实施例的被划分为多个子带的图像。图6示出了根据本发明的一个示例性实施例的码流。图7示出了根据本发明的一个示例性实施例的用于加密数据流的方法。图8示出了根据本发明的一个示例性实施例的用于解密数据流的方法。
具体实施例方式本发明涉及用于加密和解密数据流的方法和系统。将参照对JPEG2000码流的加密和解密来介绍本发明的示例性实施例。图像的数字表示可以根据JPEG2000标准进行编码、加密、解密和解码以生成实质上代表编码图像的图像。JPEG2000图像的加密已经被国际电信联盟电信标准局(ITU-T)所推荐。在其 T. 807建议书中,ITU-T建议JPEG2000编码的包应该通过对包的主体(也就是每一个数据包中的数据内容)进行加密来加以保护。在码流内的每一个包中的主体都被加密之后,向码流的主报头添加标记以使得能够在随后解密。因为JPEG2000的这种基于包的结构,所以报头信息是为了解析码流和从一个包移动到下一个包所必须的。为此,ITU-T建议书没有加密包的报头。推荐技术的一个缺点是必须加密每一个包主体所导致的计算开销。但是, 这已经被视为是必须的,原因在于加密码流中的任意其他部分(例如包的报头)将会使码流JPEG2000不适用。也就是说,基于JPEG2000的解码器将无法解析码流并且因此就不能解码图像。另一个缺点是变得必须要加密所有的包主体。如果有一个包主体未被加密,那么即使是相同码流内的其他包主体均被加密,也仍然可能会根据对应的包报头将未加密的包主体解码。不同于上述推荐技术的另一种已知的加密技术基于不同部分就其影响图像可理解性的能力而具有变化的灵敏度这一认知,采用选择性加密JPEG2000的编码部分(位平面、子带和编码次数)。但是,这种已知技术需要在编码阶段期间执行。如果期望在编码之后(例如信息分包之后)进行加密,那么必须首先要将包解码,然后再加密和重新压缩为新的包。因此,这种已知加密技术可能在计算成本上是很昂贵的。现在介绍在计算上高效而无需牺牲安全性的本发明的示例性实施例。尽管将参照JPEG2000码流来介绍示例性实施例,但是应该理解所介绍的示例性系统、设备和方法也可以用其他基于包的数据流实施,其中包的报头含有解码包(例如视频流和音频流)所需的信息。而且,尽管示例性实施例介绍了加密存储的图像(例如最初存储在图像源中的图像),但是可选的实施例也可以涉及在初次存储之前的图像加密。因此,本发明可以适用于在期望加密数据流(例如图像码流)的任何应用中使用。图1示出了根据本发明的一个示例性实施例的用于加密数据流的系统100的框图。系统100可以包括图像源10、一个或多个输入设备12、22和对、输出设备20和通信网络30。图像源10可以是包含数字图像的任意电子数据源。图像可以是扫描图像、数字照片、计算机生成的图像等。图像可以是图像的集合(例如幻灯片、视频剪辑或电影)的一部分。在一个实施例中,图像源10可以远离输入设备12、22和M。图像源10例如可以是娱乐服务提供商(譬如有线电视网或卫星电视网、数字媒体传送服务等)。可选地,图像源10 可以局部于输入设备12、22和M中的一个或多个。例如,图像源10可以是由输入设备12、 22和M中的一个或多个的使用者控制的媒体编码的计算机可读介质,例如软盘、CD-ROM、 HD DVD、蓝光光盘、闪存驱动器等。输入设备12可以是能够加密图像并传输图像的任意设备。在家庭娱乐系统的背景下,输入设备12可以是机顶盒、数字有线调谐器、HD-DVD播放器等。输入设备12可以被设置用于接收并编码图像,然后将编码的图像加密,再将加密图像传输至网络30用于传输至输出设备20。在可选的实施例中,输入设备12可以不进行编码,而是可以改为直接从图像源接收编码图像。输出设备20可以是电视,例如高分辨率LCD、等离子电视或投影电视。在可选的实施例中,输出设备20可以是能够接收和解码图像的任意其他设备,例如用于即时显示、用于转化为其他的数据格式、用于传输至另一设备等的设备。输入设备22和M可以是与输出设备20通信的其他输入设备。例如,输入设备22 可以是被设置用于将存储在DVD上的图像传输至输出设备20的DVD播放器,而输入设备M 可以是被设置用于将交互游戏在输出设备20或其他输出设备(例如另一台电视)处呈现给使用者的视频游戏机。网络30可以将输入设备12、22和M通信连接至输出设备20。网络30可以是任意类型的有线或无线网络,包括例如虚拟专用网络、局域网、广域网、因特网等。因此,如果网络30是无线的,那么就可以包括一种或多种无线的收发器、路由器或交换机。如果网络 30是有线的,那么就可以包括一种或多种有线的路由器、交换机或其他的有线硬件装置例如直接线路连接。图2示出了根据本发明的一个示例性实施例的输入设备12的框图。输入设备12 可以包括输入装置120、处理器122、存储器124、图像处理装置126、编码装置128、加密装置130和通信装置132。输入装置120可以被设置用于从图像源10接收图像。例如,如果图像源10是有线电视提供商,那么输入装置120就可以包括连接至有线电视线路的硬件端口。如果图像源10是计算机可读介质,那么输入装置120就可以包括用于读取图像所需的任何硬件或软件,例如磁盘驱动器和对应的软件驱动程序。处理器122可以是被设置用于执行位于存储器320内的指令的微处理器、ASIC或
6任意其他的电路或电路组合。例如,处理器122可以被设置用于执行计算以支持图像处理装置126、编码装置1 和加密装置130的操作。可选地,装置1沈、1观和130中的每一个都可以具有专用的处理器,在此情况下,处理器122的支持作用可以被例如限制为辅助输入设备12中各部分之间的数据通信。存储器IM可以包括指令和数据。指令可以包括通用操作和控制例行程序例如操作系统例行程序。数据可以包括用于由处理器122或其他设备组件(例如装置126、1观和 130)所用数据的临时存储空间。例如,数据可以包括原始图像数据、编码图像数据、部分加密的码流、中间值等。处理装置1 可以被设置用于从输入装置120接收图像并且在编码图像之前进行任何必要的处理。例如,处理装置1 可以被设置用于将图像划分为多个较小的部分,例如图片(tile),并进行数字信号处理,例如对多个较小部分中的每一个进行小波变换。处理装置126的输出例如一组小波变换系数可以被传输至编码装置1 用于后续编码。编码装置1 可以被设置用于执行小波变换系数的编码以形成编码图像。编码可以包括量化例如将小波变换系数转化为标量。编码还可以包括熵编码,例如基于任意数量的压缩算法的图像压缩。压缩图像可以是具有一种或多种码流形式的输出,例如具有包含压缩图像数据的包的数据流。加密装置130可以被设置用于根据一种或多种加密方法对一个或多个码流进行加密。在一个实施例中,加密方法是高级加密标准(AES)算法,例如128位的AES加密。在可选实施例中,可以使用其他的加密方法,例如数据加密标准(DEQ、其他的对称加密算法 (例如EWamal)或非对称加密算法(例如RSA)。加密装置130可以通过通信装置132与解密设备(例如输出设备20)通信。通信可以包括例如向解密设备传输或从解密设备传输共享密钥,以使得能够利用共享密钥来加密和解密一个或多个码流。可选地,如果使用了非对称算法,那么通信还可以包括将加密设备的公共密钥传输至输入设备12。通信装置132可以包括被设置用于通信地连接至网络30的任何硬件和/或软件装置。通信装置132可以例如通过有线或无线连接将加密的码流传输至网络30。因此,通信装置132可以包括例如收发器、数据总线、输入缓冲器和输出缓冲器等部件。图3示出了根据本发明的一个示例性实施例的输出设备20的框图。输入设备20 可以包括通信装置210、处理器212、存储器214、解密装置216、解码装置218和输出装置 220。通信装置210可以通过网络30与输入设备通信并且可以包括例如收发器、数据总线、 输入缓冲器和输出缓冲器等部件。通信装置210可以被设置用于从输入设备12接收加密的码流。处理器212可以是被设置用于执行位于存储器214内的指令的微处理器、ASIC或任意其他的电路或电路组合。例如,处理器212可以被设置用于执行计算以支持解密装置 216、解码装置218和输出装置220的操作。可选地,装置216、218和220中的每一个都可以具有专用的处理器,在此情况下,处理器122的支持作用可以例如被限制为辅助输出设备20中各部分之间的数据通信。存储器214可以包括指令和数据。指令可以包括通用操作和控制例行程序,例如操作系统例行程序。数据可以包括用于由处理器212或其他设备组件(例如装置216、218 和220)所用数据的临时存储空间。例如,数据可以包括原始图像数据、编码图像数据、部分加密的码流、中间值等。解密装置216可以被设置用于根据输入设备12所用的加密方法来对加密码流进行解密。例如,如果加密方法是AES加密,那么即可利用共享密钥来对加密的码流进行解密。随后即可通过解码装置218来对解密的码流进行解码。解码装置218可以被设置通过对解密码流的解码来生成重构图像。解码装置218 可以根据主码流报头、包报头或解密码流的结构或内容中的任意其他部分来确定图像信息。随后可以根据图像信息来解码解密码流中的包以形成重构图像,重构图像看上去可以充分地类似于由图像源10提供的原始图像。输出装置220可以被设置用于在例如显示屏上显示重构的图像。可选地,输出装置220可以将用于进一步处理的重构图像传输至例如存储器214以供随后访问或者传输至另一输出设备。图4示出了根据本发明的一个示例性实施例的由图像32的小波变换生成的一组子带。每一个后续的子带都表示前一子带或图像的缩小版本。例如,每一个子带的长度和宽度都可以是其前者的一半。如图所示,如果图像32是64X64像素,那么第一组子带LL1, HLULHl和HHi;34可以均为32 X 32,并且第二组子带LL2,HL2、LH2和HH2可以均为16 X 16。 子带LLl、HLl、LHl和HH134中的每一个都可以包括与图像32沿水平和垂直方向的具有变化的频率的小波变换相对应的小波变换系数。子带HHl可以对应于两个方向上的最高频率,而子带LHl可以对应于低水平频率和高垂直频率。子带LLl可以对应于两个方向上的低频。小波变换可以被模拟为高通和低通滤波器。子带HLl、LHl和HHl表示图像32的高通滤波版本。子带LLl表示图像32的低通滤波版本。子带HLl、LHl和HHl可以因此被认为是提供了差别信息,而子带LLl可以被认为是图像32缩小的近似。第二组子带LL2、HL2、LH2和HH2 36可以通过对第一组;34中的低频子带(例如 LLl)进行小波变换而生成。可以通过对最低频子带进行小波变换而重复生成常规子带任意多次。回到滤波模拟,子带HL2、LH2和HH2可以表示LLl的高通滤波版本,而子带LL2可以表示LLl的低通滤波版本。小波变换可以被概括为生成单个缩小的近似图像(例如LL2) 以及一系列缩小的差别图像,例如HL2、LH2、HH2、HLl、LHl和HHl。图5示出了根据本发明的一个示例性实施例的被划分为多个子带的图像40。第一小波变换可以将图像40划分为子带LLl (未示出)、HL142、LH144和HH146。第二小波变换可以将子带LLl划分为子带LL2 43、HL2 45、LH2 47和HH2 49。每一个子带都可以被分为多个分区。例如,HLl 42的分区52、LH1 44的分区M和HH146的分区56均可以对应于图像40内的相同位置。类似地,LL2 43的分区53、HL2 45的分区55、LH2 47的分区57和 HH2 49的分区59均可以对应于图像40内的第二位置。图6示出了根据本发明的一个示例性实施例的码流200。码流200可以包括位于其报头部分210处的主报头60以及构成包括其尾部215在内的其余部分的一个或多个包 202、204和206。每一个包都可以具有报头和主体。例如,包202、204和206可以具有各自的报头62、64和66以及各自的主体70、72和74。包202、204和206都可以包含对应于一个或多个分区的信息,这可以将它们划分为码块。返回图5,包202可以包括来自分区53的信息,包204可以包括来自分区55、57和59的信息,而包206可以包括来自分区5254和56的信息。因此,只有包202可以包含LL子带信息。图7示出了根据本发明的一个示例性实施例的方法300。方法300可以在根据本发明的任意加密设备例如输入设备12中实施,并且可以用任意的硬件和/或软件的组合实施。在302,可以例如在输入设备12处从图像源10接收输入码流。在304,输入码流的主报头可以被解码以生成与整幅图像(例如图像40)相对应的信息。主报头信息可以包括例如图像尺寸和图片尺寸。在306,方法200前进至下一个包,例如主报头之后的第一个包。可以读取包的报头以获取包的信息。在308,可以确定包是否含有LL子带信息。这种确定可以基于来自包报头的包信肩、ο如果包含有LL子带信息,那么可以在310利用1 位的AES加密来加密报头和主体以形成加密包。尽管可能不需要加密主体,仍然可能会希望将主体加密作为附加的安全措施。但是,因为加密每一个包的主体在计算成本上是很昂贵的,所以主体加密可能被限制为针对码流中含有最重要信息的那些部分,例如对于LL子带包譬如对应于子带LL243的部分进行,原因就在于这些包与近似的图像相对应。如果包不含有LL子带信息,那么在步骤312就可以仅加密报头以形成加密包。对于整个码流,可以使用单个密钥来进行加密。可选地,也可以使用不同的密钥来加密包的报头,例如每十个包就切换为一种新的密钥。在314,可以确定是否已到达包的终点。如果尚未到达终点,那么方法300就返回到306并且前进至下一个包。如果已到达终点,那么方法300就前进至316。在316,可以将加密包输出成为加密的码流。例如,加密包可以被附加至输入码流的主报头以形成加密的码流。尽管方法300可以被应用于完全编码的码流,但是应该理解方法300也可以适用于在打包之前就加密码流。例如,加密可以在编码期间进行而不是在已经对码流进行编码之后进行。图8示出了根据本发明的一个示例性实施例的方法400。方法400可以在根据本发明的任意解密设备例如输出设备20中实施,并且可以用任意的硬件和/或软件的组合实施。方法400可以与方法300结合使用以对输入码流进行加密和对应的解密。在402,可以例如在输出设备20处接收来自于输入设备12的加密码流。在404,可以读取加密码流中的主报头。根据主报头中的信息,方法400在406前进至下一个包,例如紧随报头之后的包。在408,可以定位包报头并且例如使用共享密钥来进行解密。在410,可以根据解密的包报头来解码包的主体。如果解密的包报头指示包中包括 LL子带信息,那么包主体可以在解码之前被解密。但是,如果解密的包报头中并不包括LL 子带信息,那么即可直接对包的主体进行解码。在412,可以确定是否已到达包的终点。如果尚未到达终点,那么方法400就返回到406并且前进至下一个包。如果已到达终点,那么方法400就前进至414。在414,可以将解码的码流输出例如与其他解码的码流相组合以形成用于显示的完整图像。可以例如通过将解码的包主体组合到新的码流中而形成解码的码流。
尽管上述示例性实施例涉及加密所有的包报头,但是应该理解并不是必须要进行所有报头的加密。加密任一包报头可能就足以使码流中在加密报头之后的任意部分变得不可解析。只要不将加密的报头解密,那么就不可能确定出下一个报头位于何处,并且因此下一个报头未加密可能就无关紧要了。所以,在可选的实施例中,部分包的报头不加密也是可行的。 在以上的说明内容中,已经参照本发明具体的示例性实施例对本发明进行了介绍。但是,显而易见的是可以对本发明进行各种变形和修改而并不背离由所附权利要求阐明的本发明更广泛的实质和保护范围。本文中介绍的实施例可以表现为彼此间以各种组合方式相结合。因此,说明书和附图应该被视为是示意性的而并非是限制意义。
权利要求
1.一种加密数据流的方法,包括 接收数据流;对数据流内的每一个数据包,通过加密所述数据包的报头部分同时保留所述数据包的主体部分不被加密而形成加密包;组合包括所有加密包的加密数据流;以及输出加密数据流。
2.如权利要求1所述的方法,其中所述数据流是JPEG2000码流。
3.如权利要求2所述的方法,进一步包括确定所述数据包含有与LL子带相对应的数据;以及响应于所述确定,加密所述数据包的主体部分。
4.如权利要求1所述的方法,其中所述数据流接收自图像编码器。
5.如权利要求1所述的方法,其中使用高级加密标准AES加密算法来进行所述加密。
6.如权利要求1所述的方法,其中为了读取所述数据包的主体部分,必须解码所述报头部分。
7.一种对加密数据流解密的方法,包括 接收加密数据流作为输入;对所述加密数据流内的每一个数据包,通过解密所述包中的报头部分并根据所述报头部分确定所述包的主体部分的位置,从而形成解密包;以及通过解码所述解密包而生成图像。
8.如权利要求7所述的方法,其中所述数据流是JPEG2000码流。
9.如权利要求8所述的方法,进一步包括确定所述数据包含有与LL子带相对应的数据;以及响应于所述确定,在形成解密包之前解密所述包的主体部分。
10.如权利要求7所述的方法,其中使用高级加密标准AES加密算法来进行所述加密。
11.如权利要求7所述的方法,其中为了读取所述数据包的主体部分,必须解码所述报头部分。
12.一种用于加密数据流的设备,包括输入装置,被设置用于从数据源接收图像作为输入; 编码装置,被设置用于将图像编码为数据流;以及加密装置,被设置用于对数据流内的每一个数据包,通过加密所述包的报头部分同时保留所述包的主体部分不被加密而形成加密包,以及组合包括所述加密包的加密数据流。
13.如权利要求12所述的设备,其中所述数据流是JPEG2000码流。
14.如权利要求13所述的设备,其中所述加密装置被设置用于 确定数据包含有与LL子带相对应的数据;以及响应于所述确定,加密所述包的主体部分。
15.如权利要求12所述的设备,其中所述数据流接收自图像编码器。
16.如权利要求12所述的设备,其中使用高级加密标准AES加密算法来进行所述加密。
17.如权利要求12所述的设备,其中为了读取所述数据包的主体部分,必须解码所述报头部分。
18.一种用于对加密数据流进行解密的设备,包括 解密装置,被设置用于接收加密数据流作为输入,并且对所述加密数据流内的每一个数据包,通过解密所述包的报头部分并根据所述报头部分确定所述包的主体部分的位置,从而形成解密包;以及解码装置,被设置用于通过解码所述解密包而生成图像。
19.如权利要求18所述的设备,其中所述数据流是JPEG2000码流。
20.如权利要求19所述的设备,其中所述解密装置被设置用于 确定所述数据包含有与LL子带相对应的数据;以及响应于所述确定,在形成所述解密包之前解密所述包的主体部分。
21.如权利要求18所述的设备,其中使用高级加密标准AES加密算法来进行所述加密。
22.如权利要求18所述的设备,其中为了读取所述数据包的主体部分,必须解码所述报头部分。
23.一种计算机可读的存储介质,其上存储有可由处理器执行的一系列指令,这些指令被设置用于使所述处理器执行以下步骤接收未加密的数据流;对所述数据流内的每一个数据包,通过加密所述包的报头部分同时保留所述包的主体部分不被加密而形成加密包;组合包括所有所述加密包的加密数据流;以及输出所述加密数据流。
全文摘要
一种加密数据流的方法,包括接收数据流,并且对数据流内的每一个数据包,通过加密数据包中的报头部分同时保留数据包的主体部分不被加密而形成加密包。该方法还包括组合由所有加密包构成的加密数据流并输出加密数据流。
文档编号G06F15/16GK102216921SQ200980145183
公开日2011年10月12日 申请日期2009年9月23日 优先权日2008年10月10日
发明者I·科米尔, R·叶, R·格林尼 申请人:美国亚德诺半导体公司

最新回复(0)