专利名称::基于流密码的安全编码方案的多媒体内容编码方法和系统的制作方法
技术领域:
:本发明总的来说涉及数据编码和加密,特别涉及基于利用流密码的安全编码系统来对多媒体内容进行解码。
背景技术:
:多媒体内容的广泛应用,多媒体安全和数字版权管理己经成为当前的重要问题。保护多媒体数据的一种直接的方法是采用传统的加密方法(例如高级加密标准(AES)和数据加密标准DES)来对全部多媒体数据加密。但是,多媒体文件的加密必须小心处理。一方面,已压縮的多媒体文件的加密和解密会给编码器和解码器以及服务器和转码器带来很大的计算负担和功耗。更重要的是,己压縮的多媒体文件通常具有很规范的分层结构,并且这种结构可以被例如可伸缩性,转码,和码率整型(rateshaping)的多种技术所应用。但是,当数据被加密后,这种结构将无法识别或应用。在密码学中,密码是加密过程产生的。加密用密码将原始的未加密的信息(通常被称为明文)转换为不可读的信息。这种信息只有在获知某些特殊的知识(通常被称为密钥)时才能被解读。密码学中的攻击是一种通过寻找密码、密文、加密协议或者密钥管理体系的弱点来破坏一个加密系统的安全性的方法。这个过程也被称为"密码分析"。在密码分析中,最常见的攻击方法包括选择明文攻击和选择密文攻击。选择明文攻击是密码分析中一种攻击模型,这种模型假定攻击者有能力加密任意明文并得到相应的密文。这种攻击的目标在于获得加密系统的更多信息从而降低它的安全性。在最坏的情况下,选择明文攻击可以破解加密系统的安全密钥。在选择密文攻击模型中,攻击者通过选择密文并在不知道密钥的情况下获得解密6后的信息,从而收集加密系统的至少部分信息。多媒体信息加密目前的发展趋势是更多地关注于通过在熵编码器(比如霍夫曼编码器和算术编码器)中引入随机性从而使加密和压縮一体化。这种加密体系采用联合加密-压縮的方法使加密和压縮能同时完成。C.Wu和C.C.J.Kuo在发表在IEEETransactionsonMultimedia,2005年10月第7巻828-839页的论文"Designofintegratedmultimediacompressionandencryptionsystems"中提出了一种被称为多哈夫曼树(MHT)的技术。这种技术通过在密令中交替使用不同的哈夫曼表来达到加密的目的,而且不会影响编码效率。但是,根据J.Zhou,Z.Liang,Y.Chen,和O.C.Au发表在IEEESignalProcessingLetters,2007年3月第14巻第3期201-204页上的论文"SecurityanalysisofmultimediaencryptionschemesbasedonmultipleHuffmantable"(以下称为"Zhou")中的分析,这个技术容易受到选择明文的攻击。这篇论文在此通过引用方式并入此文中。与霍夫曼编码相比,算术编码能够提供更高的编码效率,因此在新一代数据压縮标准(如JPEG2000和H.264)中得到广泛的应用。M.Grangetto,E.Magli,禾口G.Olmo在发表于IEEETransactionsonMultimedia,2006年10月第8巻905-917页的论文"Multimediaselectiveencryptionbymeansofrandomizedarithmeticcoding"中提出了一种基于AC的有效的加密方法。这种方法在编码间隔中随机地交换最大可能符号(LPS)和最小可能符号(MPS)。R.Bose禾口S.Pathak在发表于IEEETransactionsonCircuitsandSystemsI,2006年4月第53巻848-857页的论文"Anovelcompressionandencryptionschemeusingvariablemodelarithmeticcodingandcouplechaoticsystem"中提出了一种采用耦合混沌系统的具有可变模型的算术编码器的加密技术。最近,H.Kim,J.T.Wen,和J.D.Villasenor在发表于IEEETransactionsonSignalProcessing,2007年5月第55巻2263-2272页的论文"Securearithmeticcoding"中描述了一种据称既安全又有效的安全算术编码系统。然而,这种技术也容易受到选择密文的攻击。在数据压縮中,前缀码是一种具有前缀特性的编码系统,并且通常属于可变长码。前缀特性指的是系统中没有一个有效的码字是集合中的任何另一个有效码字的前缀(起始)。例如,码字集{9,59,55}具有前缀特性,而码字集{9,5,59,55}则没有,因为5是59和55的前缀。当使用前缀码时,即使没有特殊标记,解码器和接收端也能识别码字的终止位。通用码是一种将正整数映射为对应的二进制码字的前缀码。对通用码而言,无论正整数的真实概率分布如何,只要分布是单调的(例如,任何整数1都满足/7(0^;7(/+1)),那么期望码长将不大于期望的最优码长的常数倍。期望的最优码长对应的是给整数的源数据概率分布的最优码分配的码字。也就是说,给定任何一个非零熵的源数据,通用码可以实现最多为某常数乘上最优码长的平均码长。典型的通用码包括Eliasgamma编码,Eliasdelta编码,Eliasomega编码,Fibonacci编码,Levenstein编码禾卩Exp-Golomb编码。其中Eliasgamma编码是Exp-Golomb编码的一种特殊形式,并且Exp-Golomb编码当前被用于H.264/MPEG-4AVC视频编码标准中。为了提高通用码的安全性,很多人努力将编码与数据加密结合起来。例如,S.Lian等人在发表于IEEETran.ConsumerElectronics2006年5月第52巻第2期621-629页的论文"Secureadvancedvideocodingbasedonselectiveencryptionalgorithms"(以下禾尔为"Lian")中描述了一种如图1所示的Exp-Golomb加密算法(EGEA)。每一个Exp-Golomb码字具有00…01Y的形式,也就是先是R个连续的0,接着一位"1"作为间隔符,然后用R位表示信息Y。用S表示要编码的输入符号,根据Lian的描述,EGEA按照如下步骤编码步骤1:用常规的Exp-Golomb编码将符号S编码为码字Y;步骤2:对码字Y和密钥流K进行逻辑异或运算(XOR):因此,产生的码字具有oo…oiz的形式,也就是R个连续的o,接着一位"1"作为间隔符,然后用R位编码加密的信息Z。然而,应该注意的是,在Lian的编码技术中,码字"1"应该如何处理依然不清楚。换句话说,根据Lian,当遇到码字"l"时,我们不知道是否应该进行XOR运算。实际上,不管是否对码字"1"进行异或运算,Lian所描述的编码技术都有很严重的问题。如果不对按照Lian的方法产生的比特流中的码字"1"进行异或运算,那样就不难找到不同码字的分界处。因为"1"并没有用密钥流K进行加密,我们就可以很快恢复出对应的符号。由于对应于"l"的码长是1,所以能够大概估测出与"l"相关符号的概率是2—1。因此,在这种情况下,攻击者仅仅通过观察密文便可以恢复出一半的符号(仅用密文攻击)。另一方面,如果对码字"1"进行XOR运算。在这种情况下,码字"1"根据密钥流就可能会翻转成"0",这样就不能与起始的"0"区分出来。这可能导致解码端出现错误。例如对符号序列a^4a,用密钥流101010进行编码,编码结果为000100010。但是如果要编码的符号序列是a12aQa(),我们不难发现编码结果也一样是000100010。在这样情况下,解码端就不可能区分从其中获得了码字的正确的符号序列。鉴于此,希望设计一种无论是在密文或者是明文攻击下都安全的通用码的加密方法。同时,希望设计一种能最小化解码错误的通用码的加密方法。
发明内容这里所介绍的是一种利用通用编码技术和流密码来进行数据编码的方法和系统。传统的方法是对加密后的码流(通常称为明文)进行异或(XOR)运算,通过流密码来产生所需要的密钥流,与此不同的是,本发明的各个实施例通过密钥流来控制在两种编码约定之间进行切换,以对源数据进行编码。与传统的通用编码方法相比,本发明的方法提供了高级别的安全性,且计算复杂性极低。除此之外,在一些仅用密文攻击可行的实际应用中,可以利用预生成的循环密钥流来控制切换,而不会降低加密效果。根据一些实施例,通过密钥流来对数据进行加密的方法一般包9括获取一个符号以及其所对应的密钥;根据密钥来选择第一和第二通用编码约定这两种通用编码约定中的一种来对符号进行编码;以及根据所选的通用编码约定将该符号编码为码字。根据这些实施例,密钥流由流密码产生,而密钥则选自密钥流。根据另一个实施例,第一种通用编码约定规定了该符号和第一码字之间的第一映射,第二种通用编码约定则规定了该符号和第二码字之间的第二映射关系。由此,所选择的编码约定的映射用来对该符号进行编码。根据该实施例,第一映射由第一编码表定义,第二映射由第二编码表定义。通过在所选的编码约定对应的编码表中搜索被映射为符号的码字,从而来对该符号进行编码。具体来讲,如果密钥的值是0,那么第一种编码约定将被采用。因此,通过在第一编码表中搜索第一码字来将该符号编码为第一码字;而当密钥的值是1的时候,将选用第二编码约定。因此,通过在第二编码表中搜索第二码字来将该符号编码为第二码字。可选地,第一映射通过第一计算过程定义,第二映射通过第二计算过程定义。具体地,当密钥是0的时候,第一计算过程被选择用来产生与符号对应的第一码字;当密钥是1的时候,第二计算过程被选择来产生与符号相对应的第二个码字。根据上述实施例,用于产生密钥流的流密码选自以下的组A5/l、A5/2、FISH、Grain、HC陽256、ISAAC、MUGI、PANAMA、Phelix、Pike、Py、Rabbit、RC4、Salsa20、Scream、SEAL、SNOW、SOBER-128、SOSEMANUK、Trivium、Turing、VEST和WAKE。除此之外,第一和第二编码约定都遵循Eliasgamma编码、Eliasdelta编码、EUasomega编码、Exp-Golomb编码、Fibonacci编码和Levenstein编码组中的一种编码方案。可选地,第一和第二编码方案遵循上面各种编码方案中的不同的编码方案。根据上述实施例,一种对一符号序列进行编码的方法包括产生与该符号序列相对应的密钥流,以及根据密钥流在第一和第二编码表之间进行切换来对该符号序列进行编码。具体来讲,第一编码表规定了符号序列中的每个符号与第一组码字之间的第一映射关系,而第二编码表规定了符号序列中的每个符号与第二组码字之间的第二映射关系。除此之外,该方法还包括执行以下步骤,直到符号序列结尾-(a)从符号序列中获得一个符号,并从密钥流中得到一个密钥;(b)根据密钥决定是采用第一编码表还是第二编码表;(C)在所选择的编码表中选择要被映射为所述符号的码字;以及(d)将该码字输出到码流中。根据上述实施例,提供了一种计算机可读媒介,其具有程序代码,所述程序代码可被一个或者多个数字处理器执行,以对符号进行编码。这些程序代码包括用于产生一个包含对应于该符号的密钥的密钥流的指令;用于根据该密钥选取第一或者第二通用编码约定之一的指令;以及用于根据所选用的通用编码约定对符号进行相应编码的指令。而且,第一通用编码约定规定了该符号和第一码字之间的第一映射关系,而第二通用编码约定规定了该符号和第二码字之间的映射关系。更具体而言,密钥值从0和1中进行选择。相应的,程序代码还包括用于确定密钥值是0指令;用于根据密钥值等于0选择第一通用编码约定的指令;用于根据第一通用编码约定的第一映射来得到与该符号相关的第一码字的指令;以及将第一码字输出的指令。除此之夕卜,程序代码还包括确定密钥值是1的指令;用于根据密钥值等于l选择第二通用编码约定的指令;用于根据第二通用编码约定的第二映射来获得与该符号相关的第二码字并且将其输出的指令。图1描述了用于编码和发射源符号的系统的示意图2(a)描述了使用流密码从两个通用编码约定中选择其中之一对符号进行编码的系统的示意图2(b)描述了使用一个伪随机数产生器从两个通用编码约定中选择其中之一对符号进行编码的另一个系统的示意图;图2(c)描述了使用预生成的密码流从两个通用编码约定中选择其中之一对符号进行编码的另一个系统的示意图3描述了依据密钥在第一和第二编码约定之间进行切换来对符号进行编码的一种方法;以及图4描述了实现根据在此所述的多个实施例的系统和方法的计算环境。具体实施例方式现在来看附图,图1描述了一个使用数据编码和压缩技术来发射多媒体信息的系统100。具体来说,在发射机端101,编码器104使用一种编码技术对代表基础的多媒体数据信息(例如数码视频、声音和图像)的原始符号序列102(也被称作源)进行编码。包括二进制位序列的编码的比特流106然后被调制到适合在物理信道112传输的信号上并被发送到接收端109。在接收终端,所接收到的信号首先被解调器107解调然后被解码器108解码,以获得解码符号IIO,该解码符号因为在信道112传输过程中的降级可能和原始信号一样也可能不一样。代表多媒体信息的大多数源包括冗余,这些源如果未经压縮直接传输将会浪费通信带宽和其他资源。因此解码器104的一个目的就是通过数据压縮技术(例如上面描述的编码技术)去除源中的冗余。总的来说,输入的符号序列102(即,源)有一定的特征,例如源内的每个符号出现的概率、源的熵、源字母表。使用编码器104进行编码的编码技术部分依据源的这些特征。特别地,依据这些源特征来使编码技术达到最优化,那么就可以用尽可能少的数据位来表征原始符号序列102。为了提高传输的安全性并且阻止黑客攻击,编码器104的另一个目的是对原始符号序列102加密,这样仅仅拥有正确的密钥的解码器才能恢复源信息。通过编码器104执行的数据加密是基于使用将源信息(即,明文)扰乱(加密)为不被理解的乱语(密文)的算法。该算法的运算需要使用密钥。总的来说,密码术包括两个主要的类别,也就是对称加密和不对称加密。在对称加密算法中,加密明文的密钥和解密密文的密钥是一样的。另一方面,不对称或者公开密钥加密算法需要两个密钥,未受保护的公钥用来加密明文,受保护的私钥用来解密密文。这两个密钥是算术相关的但是不能从一个推出另外一个。根据本发明,编码器104使用的密码技术优选是一个流密码。特别地,流密码是一个把明文比特和伪随机密码比特流(一般称为密钥流)组合在一起的对称密钥密码。图1中所示的传输信道112有很多表现形式,例如电话线、有线网络、无线网络、光缆或者计算机可读存储媒介(包括CD/DVD)、软盘、闪存盘、硬盘等。调制器105和解调器107所使用的调制方案选自本领域公知的调制方案,并且优选地能够极好地适应传输信道的形式。图2(a)示出了根据本发明的编码器104的一个实施例。跟现有的在加密后再进行数据压縮的系统不同的是,编码器104将压縮和加密融合起来,实现了数据压縮和加密同时进行。特别的,令原始待编码的符号序列为S="&...w,流密码产生的密钥流的前N位为《=A:/^...&w。编码器104执行以下步骤,直到所有的符号都被编码步骤l:初始化/=1并且从S中取出第/个符号。如果&=0,那么用编码约定l编码^;如果A;,-l,那么用编码约定2编码w步骤2:更新/=/+1然后转到步骤1。根据本发明的可替换实施例220,密钥流可以通过伪随机数发生器用图2(b)中所示的输入种子来产生。特别地,这个伪随机数发生器可以使用一个本领域众所周知的线性反馈移位寄存器来实现。为了保持编码器的安全,同样一个用于伪随机数发生器的种子不能被再次使用。为了保证编码器的安全,密钥流204或伪随机数产生器24跟一般的随机数发生器不同,不同之处在于流密码204或伪随机数产生器224产生的密钥流的周期足够大,以便密钥流在一个使用周期内不重复。正如图2(a)和(b)中所示,安全的通用编码器200和220的额13外开销主要由流密码204和伪随机数产生器引起。在一些情况下,尤其是当攻击者仅仅能获得加密数据时,比较实用的方法是通过将流密码204和伪随机码产生器224替换为一个预生成的循环密钥流来简化该系统。具体来说,在编码开始之前,通过使用离线的流密码或伪随机数发生器来产生拥有足够长度M的密钥流尺/。然后密钥流&在编码器和解码器之间共享。然后,一个循环密钥流《'可以被构建为《'=《/《,/...。当符号序列被编码时,然后从这个循环密钥流《'中取出密钥用来在编码约定1和2之间进行切换。结果,没有任何必要使用流密码来产生密钥。这显著地降低了安全编码器240的复杂度。根据图2(a)-(c)所示的实施例,唯一的私密信息是流密码中使用的种子/密钥。这个种子/密钥假定为128位,但也可以包括多于或少于128位。根据图2(a)-(c)所示的另一实施例,编码约定1和编码约定2都遵循某个通用编码技术,比如本领域众所周知的Eliasgamma编石马、Eliasdelta编石马、Eliasomega编石马、Fibonacci编石马、Levenstein编码、和Exp-Golomb编码。例如,从"表1"中可以看到,编码约定1和2都利用了Exp-Golomb编码,其中编码约定1在它的码字中使用了"前导0",编码约定2使用了"前导1"。表1符号带前导0的Exp-Golomb码带前导1的Exp-Golomb码10010100011101Oj001001100000101l簡0011011010。60011111011700010001110000000100111100010001010mooio00010111110011"〃00011001110100&200011011110101<3〃00011101110110作为"表2"所示的另一个示例,编码约定1和2都利用了Eliasdelta编码,其中编码约定1和2分别在它们的码字中使用了"前导0"和"前导1"。表2<table>tableseeoriginaldocumentpage15</column></row><table>根据图2(a)-(c)所示的可替换实施例,编码约定1和2选自于不同的编码技术。比如,"表1"中示出的使用"前导0"的Exp-Golomb码被选作编码约定1;"表2"中示出的使用"前导1"的Eliasdelta码被选作编码约定2。本领域的技术人员应该意识到编码约定l和2也可以从其他通用编码技术中选择,比如Eliasgamma编码、Eliasomega编码、Fibonacci编码和Levenstein编码。此外,本领域的技术人员也将很容易意识到当编码约定l和2选自不同的编码技术的时候会带来一些编码效率的损失,这是因为对于某种给定的源并不是所有的编码技术都是最优的。根据上文在图2(a)-(b)中所描述的实施例,图3示出了编码器实现的用来编码源符号序列的方法300的流程图。具体地讲,在步骤302,从源符号序列取出符号S来进行编码。在步骤304,从通过流密码或者随机数产生器产生的密钥流中读取密钥流比特。在步骤306,方法300确定密钥流比特的值。如果密钥流比特值等于O,那么使用编码约定2编码符号S(模块310);如果密钥流比特值等于1,那么使用编码约定1编码符号S(模块308)。重复上述步骤,直到符号序列中的所有符号都已被编码(模块312)。在步骤314,输出结果比特流。再次声明,编码约定1和2都遵循上面讨论过的一个通用编码技术。或者,它们可选自于不同的编码技术。L.Li禾卩K.Chakrabarty在"OnUsingExponential-GolombCodesandSubexponentialCodesforSystem-on-a-ChipTestDataCompression,",JournalofElectronicTesting:TheoryandApplications,2004年第20巻第667-67-页中描述过各种通用编码方案中涉及到的编码步骤,在此该参考文献以引文方式并入。特别指出,表1中表述的Exp-Golomb码是1阶编码。读过这个申请后,熟悉此领域的人员很容易意识到,还可以利用更高编码阶数的Exp-Golomb码来编码输入的符号序列。图4显示了一个实现图2(a)和(b)中描述的编码器和图3中描述的编码方法的计算环境400。根据这个实施例,上述的编码器和编码方法可以被实现为一个在类似于设备410的通用数字处理器上运行的软件程序。具体地讲,实现编码方法的软件程序可能包括指示设备410的不同部件来执行方法步骤或者直接提供上述编码功能的程序代码。例如,程序代码可能包括用于提供流密码204和伪随机数字发生器224、具有两种不同编码约定的通用编码单元206、多路复用器208和开关202的功能的功能模块。或者,该软件程序可包括各个单独的程序,每个单独程序独立执行,以提供流密码204、通用编码单元206、开关202、和多路复用器208的功能。无论软件程序的结构如何,程序代码一般包括接收包括源符号序列和其他编码参数的输入数据的指令;使用流密码生成器202或者伪随机数生成器224生产密钥流的指令;根据密钥流在编码约定l和2之间进行切换,以编码符号序列的指令;将编码比特复用到一个比特流中的指令。该软件程序可以用标准的编程语言(如C/C++,C#,Java,Basic)来实现,也可以用如同Matlab—样的商业计算平台进行实现。此软件程序可以是一个设备410可执行的独立于设备410上运行的其他程序的独立程序,也可以是一个嵌入其他用于提供数据编码和加密的程序或操作系统中的程序。比如,它可能被嵌入到一个提供数据压縮和加密的视频或音频编码系统中。这个实现编码系统400的软件程序可能处于不可移除的存储器441中,或者可移除的存储器(诸如软盘452或CD/DVD456)中。在通过鼠标461或键盘462启动系统400或者通过鼠标461或键盘462接收一个用户输入来执行此软件程序时,这些程序代码可以被加载到和系统存储器430中应用程序相关的存储空间435中。另一方面,要被编码的数据(即,图1中的原始源符号序列102)可能通过不同的设备被设备410所接收。例如,数据可能存储于不可移除的存储器441中,然后被加载到与系统内存430中程序数据相关的存储空间437中。此外,要被编码的数据也可能存储于软盘452或是CD/DVD456之中,然后通过存储器接口450和磁盘读取器451或455最终被读入存储空间437。还可以通过使用键盘462或是通过远程计算机480的网络接口470输入被编码的数据。作为选择,用户可以通过键盘462或通过网络接口470从远程计算机480输入要被编码的数据。根据另一个实施例,源符号序列可以由不同格式的输入数据产生。例如,输入数据可能是ASCII文本格式、MicrosoftWord格式、HTML格式、XML格式、PDF格式、或其他合适的专有格式。作为选择,输入数据也可以包括多媒体内容(例如音频或视频数据),以及由这些内容可以提取出要被编码的源符号序列。例如,输入数据包括一个视频帧序列,每一帧含有一个像素阵列,通过重新排列这些像素阵列我们就可以得到源符号序列。当收到关于执行编码过程的进一步指示时,可以从存储空间435中读出包含有指令的程序代码,并交由处理单元420执行。程序代码可以指示处理单元420载入之前收到并存储于存储空间437中的数据,然后根据在此描述的方法来处理这些数据。在编码过程中,中间数据和包含密钥流的编码参数可以存储于与程序数据相关的存储空间437中,或是存储于处理单元420的内部寄存器中。当编码完成时,编码数据流可以存储于存储空间437中,用以后续处理或是被其他程序使用。作为选择,可以将编码数据流输出到不可移除的存储器441中或可移除的存储器(包括软盘452和CD/DVD456)中进行存储。17调制解调器472通过WAN473将它传送到远程计算机480上。作为选择,编码数据流B也能够在显示设备491上显示。可以将编码数据流嵌入其他未编码的数据中,这些编码数据流可以显示成无意义的信息,同时包含一个当前内容被编码以及需要授权才可以获得这些内容的指示。根据一些其他实施例,通过将电脑卡插入通用计算机系统,可以在专有软件或硬件系统中实现此处描述的编码方法和系统。另外,也可以在现场可编程门阵列(FPGA)或是专用集成电路(ASIC)上实现。当上面讨论的编码约定1和2都遵循于同一个通用编码技术时,由于两个约定中码长都相同,所以可以很容易发现,产生的比特流与原始的通用编码有着相同的长度。因此,上面介绍的安全编码不会导致编码效率的下降。通用编码的唯一一个特点是不需要在编码器和解码器中存储任何的编码表。通用编码的这个独特的结构减轻了编码和解码的工作量。在上面描述的安全通用编码中,依然保留了这个属性。也就是说,不需要查询任何表就能完成编码和解码操作。至于编码器的速度,由于唯一需要的额外操作就是根据密钥流来在两个编码约定之间进行切换,所以编码和解码速度几乎同相应的常规通用编码相等。附加的开销主要由流密码产生,可以通过有效地实现流密码来减少对编码效率的影响。安全丝虔分析对上面描述的安全编码技术的安全性进行了评估。特别在此处分析了密文攻击、选择性明文攻击以及选择性密文攻击。騰密文攻击在这种攻击情况中,攻击方只能获得加密的比特流。因为攻击方能够获得的信息非常有限,一个通用的方法是蛮力攻击,这种方法的复杂性与密钥空间相关。因为这个唯一的系统私密信息是在流密码204或是伪随机数生成器224中使用的种子,它有128位长,所以密钥空间为2128,这保证了数字版权管理应用的安全性满意程度。此外,攻击方可能希望恢复用于控制两个编码约定之间的切换的密钥流《=矢^2..."。因为每一个&是一个比特,可以得出找到这个密钥流的复杂度是2N。为了使这个复杂度足够大,给输入序列长度施加一个约束,即N>128,(1)这保证了2N〉2128。只要(l)式成立,攻击方将宁愿使用蛮力攻击来破解流密码中使用的种子。因此,优选的是,密钥足够大来防止蛮力攻击。另一大类仅使用密文的攻击是基于输出比特流106的统计属性的分析。理想情况下,编码比特流106中的比特应该同等独立并有着同等的分布。否则,不同比特之间的相关性可能会提供一些可以被攻击方用以推断出密钥的信息。所以,为了评估本发明所提出的系统的实际安全性,研究编码比特流106的统计性变得尤为重要。为此,提出了下面的解决方案。方案1:在编码比特流中<formula>formulaseeoriginaldocumentpage19</formula>其中&是编码比特流中的一个比特值。证明令C;和C2分别代表使用编码约定1和编码约定2的情况。令£尸{^,位于前导位},£产{仏位于分离位},以及^=^,位于消息中}。假定码字a,的发生概率是p(a,)=2々關,其中/(')代表相应码字",的长度。然后可以按照下式计算得出尸(&=0):p(玩=0)2=Ep(取=Ql"緣饥)223=V2E亲=O!C肌,踏(五n)=1/2P(£\)+p(£2)+=1/2(2)由此完成了证明。因此,编码比特流106中的0和1数目得到了均衡。本发明所提出的系统由此对唯密文攻击是安全的。透擇银文攻击以及透择麥文攻击由上所述,由于密要流的周期太大以至于在它被使用期间不会重复,以及由于安全编码端中密钥流的持续变化特性,这些攻击将变得无效。从另一个角度来说,即使攻击者通过某些方法找到了密钥流,这仍然没用,因为该密钥流将不会被再次使用。尽管这里公开了本发明的注入增强注入锁定分频器的一些示范性实施例,但是这并非意在不必要地去限制本发明的范围。因此,在不脱离权利要求的原理或范围的情况下的简单变型或变化依然在本发明的范围之内。此处引用的所有文献(包括出版物、专利申请以及专利)在此以相同程度作为引文并入,就如同每个参考文献都被专门单独地指出以引文方式并入并且整体提出一样。在描述本发明的上下文中(尤其是在所附权利要求中)使用的术语"一个"、"一种"等项应被理解为包含单数和复数,除非另有指明或明显与上下文不符。术语"包括"、"具有"、"包含"和"含有"等应被理解为开放式术语(即,表示"包含但是不限于"),除20非另有标注。此处列举的数值范围仅作为单独指出落在范围内的每个独立数值的简略方式,除非此处另有提及,并且每个独立数值都被包含在说明书中,就如同在此处被单独地列举一样。此处描述的所有方法都能以任何合适的顺序执行,除非此处另有指明或明显与上下文冲突。此处提供的任何及所有实例,或解释性语言(例如,"诸如")的使用,仅用于更好地阐释本发明而并不限制本发明的范围,除非另有声明。说明书中的任何语言均不应被理解为表示对于本发明的实现来说是必要的任何未要求保护的元素。此处描述本发明的优选实施例,包括发明人所知的实现本发明的最好方式。在阅读了上述描述之后,那些优选实实例的变化对于该领域内普通技能的人可变得显而易见。发明者期望有技能的技工去酌情采取这些变化,并且发明人意在本发明的实施与此处的专门描述不同。因此,本发明包括了所有适用法律允许的所附权利要求列举出的主题的变型和等价物。而且,本发明包含所有可能变型中的上述元素的任意组合,除非另外说明或者与上下文有冲突之外。本专利申请要求于2008年9月18日提交的美国临时专利申请No.61/136,600的优先权,该美国临时专利申请在此以引文方式整体并入此文。权利要求1.一种对数据进行加密的方法,包括获取一个符号以及从流密码产生的密钥流中获取一个密钥;根据该密钥,从第一通用编码约定和第二通用编码约定中选择一个;以及根据所选择的通用编码约定来将符号编码为码字。2.根据权利要求1所述的方法,其中所述密钥具有二进制值。3.根据权利要求2所述的方法,其中,流密码是从A5/1、A5/2、FISH、Grain、HC國256、ISAAC、MUGI、PANAMA、Phelix、Pike、Py、Rabbit、RC4、Salsa20、Scream、SEAL、SNOW、SOBER-128、SOSEMANUK、Trivium、Turing、VEST、以及WAKE组成的组中选出的。4.根据权利要求1所述的方法,其中,第一通用编码约定规定了符号和第一码字之间的第一映射,第二通用编码约定规定了符号与第二码字之间的第二映射。5.根据权利要求4所述的方法,进一步包括根据所选择的通用编码约定所规定的映射将符号编码为码字,其中码字是第一码字和第二码字中的一个。6.根据权利要求4所述的方法,其中,第一映射由与第一通用编码约定相关联的第一编码表规定,第二映射由与第二通用编码约定相关联的第二编码表规定,该方法进一步包括通过在与所选择的通用编码约定相关联的编码表中搜索码字来对符号进行编码。7.根据权利要求4所述的方法,其中,第一通用编码约定和第二通用编码约定遵循选自Eliasgamma编码、Eliasdelta编码、Eliasomega编码、Exp-Golomb编码、Fibonacci编码、以及Levenstein编码组成的组中的一个编码方案。8.根据权利要求4所述的方法,其中,第一通用编码约定和第二通用编码约定遵循选自Eliasgamma编码、Eliasdelta编码、Eliasomega编码、Exp-Golomb编码、Fibonacci编码、以及Levenstein编码组成的组中的不同编码方案。9.根据权利要求1所述的方法,其中,密钥值选自0和1,该方法进一步包括当密钥值为0时,选择第一通用编码约定来对符号进行编码;当密钥值为1时,选择第二通用编码约定来对符号进行编码。10.—种用于对符号序列进行编码的方法,包括用流密码产生对应于符号序列的密码流,根据密码流来在第一编码表和第二编码表之间进行切换以对符号序列编码,其中第一编码表规定了符号序列中的每个符号和第一组码字之间的第一映射,而第二编码表规定了符号序列中的每个符号和第二组码字之间的第二映射。11.根据权利要求io所述的方法,根据密钥流来在第一编码表和第二编码表之间进行切换以对符号序列编码进一步包括执行以下步骤,直到符号序列结束(a)从符号序列中取出一个符号,以及从密钥流中取出一个密钥;(b)根据密钥来选取第一编码表和第二编码表中的一个;(c)在所选取的编码表里,搜索被映射为符号的码字;以及(d)将码字输出到二进制流中。12.根据权利要求IO所述的方法,其中密钥流的二进制值选自0和1。13.根据权利要求12所述的方法,根据密钥来选取第一编码表和第二编码表中的一个还包括-确定密钥值为0;选择第一编码表。14.根据权利要求12所述的方法,根据密钥来选取第一编码表和第二编码表中的一个还包括确定密钥值为1;选择第二编码表。15.根据权利要求IO所述的方法,其中,流密码选自A5/l、A5/2、FISH、Grain、HC-256、ISAAC、MUGI、PANAMA、Phelix、Pike、Py、Rabbit、RC4、Salsa20、Scream、SEAL、SNOW、SOBER-128、SOSEMA而K、Trivium、Tudng、VEST、和WAKE组成的组中,以及第一编码表和第二编码表遵循选自Eliasgamma编码、Eliasdelta编码、Eliasomega编码、Exp-Golomb编码、Fibonacci编码、和Levenstein编码组成的组中的至少一种编码方案。16.—种具有程序代码的计算机可读媒介,所述程序代码被一个或多个数字处理器执行,用以对一个符号编码,所述程序代码包括用流密码产生密钥流的指令,该密钥流具有对应于符号的一个密钥;根据该密钥选取第一通用编码约定和第二通用编码约定中的一个的指令,其中第一通用编码约定规定了符号和第一码字之间的第一映射,而第二通用编码约定规定了符号和第二码字之间的第二映射;根据所选择的通用编码约定来对符号进行编码的指令。17.根据权利要求16所述的的计算机可读媒介,其中,密钥值选自0和1,程序代码进一步包括确定密钥值为0的指令;响应于密钥值来选择第一通用编码约定的指令;根据第一通用编码约定的第一映射来获得与符号相关联的第一码字的指令;输出第一码字的指令。18.根据权利要求16所述的计算机可读媒介,其中密钥值选自0和1,程序代码进一步包括确定密钥值为1的指令;响应于密钥值来选择第二编码表的指令;根据第二通用编码约定的第二映射来获得与符号相关联的第二码字的指令;输出第二码字的指令。19.根据权利要求17所述的计算机可读媒介,其中流密码选自A5/l、A5/2、FISH、Grain、HC-256、ISAAC、MUGI、PANAMA、Phelix、Pike、Py、Rabbit、RC4、Salsa20、Scream、SEAL、SNOW、SOBER-128、SOSEMANUK、Trivium、Turing、VEST、禾卩WAKE组成的组中。20.根据权利要求17所述的计算机可读媒介,其中第一通用编码约定和第二通用编码约定遵循选自Eliasgamma编码、Eliasdelta编码、Eliasomega编码、Exp-Golomb编码、Fibonacci编码、和Levenstein编码组成的组中的至少一种编码方案。全文摘要本发明描述了利用流密码产生的密钥流来在第一编码约定和第二编码约定之间进行切换以对符号序列进行编码的编码技术的多个实施例。第一编码约定规定了符号和第一码字之间的第一映射,而第二编码约定规定了符号和第二码字之间的第二映射。根据本发明,用流密码产生的密钥来选取第一和第二编码约定中的一个,然后利用所选的编码约定对应的映射来对符号进行编码。文档编号H04N7/167GK101677399SQ20091017600公开日2010年3月24日申请日期2009年9月18日优先权日2008年9月18日发明者区子廉,周建涛申请人:香港科技大学