Chinaunix

标题: 也说Hash与加密 [打印本页]

作者: cheveu    时间: 2008-10-18 02:23
标题: 也说Hash与加密
原贴的起因及讨论详见下面链接及前后各页:
http://bbs.chinaunix.net/thread-1242846-5-1.html   该贴被锁。

我想我明白了bbjmmj的意思。

Hash生成伪随机序列码,记作PN。原始信息,记作A。
1、PN码加密原始信息A,就是原始信息A与PN码进行异或运算(相当于调制),得到加密信息B。
2、加密信息B与PN码再次进行异或运算(相当于解调),得到原始信息A。
这个就是直接序列伪随机码扩频的基本过程,也是码分多址的基础。这个是通信工程专业的内容,大四选修有一门《扩频通信》里面讲得很明白。
我估计ssffzz1没学过通信,所以看不明白bbjmmj的意思,也不明白这意味着什么——这个就是SSSD-CDMA(也就是联通卖给电信的那个CDMA)的本质。
ssffzz1和bbjmmj所说的“加密”不是一回事。bbjmmj说的更广义,是除了计算机圈子以外公认的“加密”定义。ssffzz1说的那个“加密”必须以可逆运算为前提,只有搞计算机的人才这么狭义地理解“加密”二字的含义。

至于我说的那个意思,我估计ssffzz1没明白。
我不用Hash产生的PN码调制信息,我就是用Hash运算本身处理信息。
1、将明文拆成一段段小的明文,每段明文ai都在集合空间A内。
2、输入信息ai的集合空间A是输出信息bi的集合空间B的子集时,我想问,Hash输出能否保留原来的全部信息量,并且能够实现一对一或一对多的对应关系?
3、如果是,那么这种处理虽然不是可逆的,但是它不丢失信息,它可以将信息以另一种形式表达。我觉得能实现这个功能就是加密。
4、不可逆无非是不好解密而已,不是不能解。我写一份穷举集合A~集合B对应关系的对应表,自己查表解密就好。
这里面涉及了对信息的计量,《信息论》里面有详述,是通信工程大三的专业必修课。

没错,我的那个意思是有点抬杠,没有太大的实际操作性。现代加密理论执著地找一个可逆的运算(当然在处理前后不能丢失信息),就是为了解密方便,而不是其他什么原因。
当量子计算机实用了以后,我想,现代加密理论就该执著地找一个不可逆的不丢失信息的运算了。
凡事没有绝对。

我的论述第2步是一个疑问句,所以我会再找找资料。
作者: kevin.tan    时间: 2008-10-18 11:00
学习一下。

在新闻区读过楼主的几个贴子,难得有学通信/计算机的有这样的表达能力,思路很清晰。


作者: cheveu    时间: 2008-10-18 11:23
谢谢。互相学习。新闻区那边的是忍不住手痒写的~
作者: bbjmmj    时间: 2008-10-18 14:45
顶楼主!还是楼主说得明白,专业的跟业余的,讲出来的话确实不一样啊

我说的方法主要用在实时性较高的系统里,程序上一般没有那么做的,那个SHA-1运算量实在太大了,不过程序也有程序的用法,PPTP里面SHA-1加RC4的算法用得就非常不错,既安全,又能保证速度。
作者: zxz1984    时间: 2008-10-19 14:17
现在的hash算法是多对一的,必然存在碰撞。对于lz说的输入是输出的一个子集的情况,则是输入是有限的,输出也显然是有限的,这样的加密是可行的,但就我的理解不见得是安全的。

至于量子计算机和现代密码学,则是物理加密和数学加密之争了
作者: cheveu    时间: 2008-10-19 19:27
偶然想到一件事:
    通信里讲信息编码的时候,有“码距”这个概念,就是说在输入集合中,不是每一个元素都要使用,只使用其中的一部分元素,且这些被使用的元素之间的差异(就是“码距”)比较大,可以提高容错性。
    这提醒我,在对原始信息编码的时候,不是每一个输入元素我都要用。这样,在输入是输出的子集的情况下,即使仍然有碰撞,也不足为惧。一方面碰撞很少,另一方面可以把碰撞列举出来,在编码和解码的时候不使用会发生碰撞的元素。

偶然想到,写下来。我的第二个步骤那个疑问句,现在还是疑问句,我仍然没有答案。
作者: win_hate    时间: 2008-10-19 20:07
原帖由 cheveu 于 2008-10-19 19:27 发表
偶然想到一件事:
    通信里讲信息编码的时候,有“码距”这个概念,就是说在输入集合中,不是每一个元素都要使用,只使用其中的一部分元素,且这些被使用的元素之间的差异(就是“码距”)比较大,可以提高容 ...


你说的这个信息量......

小于 md5 分组的块不可以直接 Hash 吧? 不是要填充么?填进去的算信息不?
作者: win_hate    时间: 2008-10-19 20:21
2、输入信息ai的集合空间A是输出信息bi的集合空间B的子集时,我想问,Hash输出能否保留原来的全部信息量,并且能够实现一对一或一对多的对应关系?


你这个想法跟用 md5 来作流密码又不一样。是想直接把 md5 当加密算法了。



[ 本帖最后由 win_hate 于 2008-10-19 20:52 编辑 ]
作者: ssffzz1    时间: 2008-10-19 20:43
我也纳闷这个问题。咋用MD5去做加密算法,有咋样才能够确定出那些是碰撞的。

可他们总说我不专业。
作者: 救救小稻草    时间: 2008-10-19 21:49
提示: 作者被禁止或删除 内容自动屏蔽
作者: bbjmmj    时间: 2008-10-19 21:56
原帖由 ssffzz1 于 2008-10-19 20:43 发表
我也纳闷这个问题。咋用MD5去做加密算法,有咋样才能够确定出那些是碰撞的。

可他们总说我不专业。


现在DES已经可以破译了,一个小时就够了,但是这是在已知明文和秘文的情况下反推密码,如果仅知密文,目前还无法同时反推密码和明文,也就是说,破译是有条件限制的:必须同时知道明文和密文。那么问题来了,你知道明文了,你还破译它干嘛呢???你想弄到密码,对吧?但是,如果我的密码只用一次,你的这种破译就毫无意义!如果你能做到每次加密数据都用不同的密码,你只需要简单地把明文异或密文就可以了,这就是“一次一密”,这个时候,密码的生成就成了加密过程中最主要的工作,你要保证别人知道了你的一个或多个密码无法推导其余的密码,这种方式就是安全的。

“一次一密”也是加密方法,它与分组算法的区别在于明文不参与加密运算,只在整个加密过程的结尾与密码做一次异或。如果你把加密看成是一个过程,就不难理解这种加密方法了。
作者: zxz1984    时间: 2008-10-19 22:25
原帖由 bbjmmj 于 2008-10-19 21:56 发表
现在DES已经可以破译了,一个小时就够了,但是这是在已知明文和秘文的情况下反推密码,如果仅知密文,目前还无法同时反推密码和明文,也就是说,破译是有条件限制的:必须同时知道明文和密文。那么问题来了,你知道明文了,你还破译它干嘛呢???你想弄到密码,对吧?但是,如果我的密码只用一次,你的这种破译就毫无意义!如果你能做到每次加密数据都用不同的密码,你只需要简单地把明文异或密文就可以了,这就是“一次一密”,这个时候,密码的生成就成了加密过程中最主要的工作,你要保证别人知道了你的一个或多个密码无法推导其余的密码,这种方式就是安全的。

“一次一密”也是加密方法,它与分组算法的区别在于明文不参与加密运算,只在整个加密过程的结尾与密码做一次异或。如果你把加密看成是一个过程,就不难理解这种加密方法了。

一次一密确实是理论上安全的加密手段
但从目前来看,数学上生成理论安全的密钥是困难的,貌似也没有啥成熟的物理手段吧?
作者: bbjmmj    时间: 2008-10-19 23:04
原帖由 zxz1984 于 2008-10-19 22:25 发表

一次一密确实是理论上安全的加密手段
但从目前来看,数学上生成理论安全的密钥是困难的,貌似也没有啥成熟的物理手段吧?


生成密码和密码同步都需要很大代价,软件上很少用这种方法,一般都用分组算法,分组算法的用途就是提高加密速度。
作者: win_hate    时间: 2008-10-19 23:07
原帖由 bbjmmj 于 2008-10-19 21:56 发表


现在DES已经可以破译了,一个小时就够了,但是这是在已知明文和秘文的情况下反推密码,如果仅知密文,目前还无法同时反推密码和明文,也就是说,破译是有条件限制的:必须同时知道明文和密文。那么问题来了 ...


一次一密在理论上是完美的,但非常不实用。尤其是在现代的商业环境中。

[ 本帖最后由 win_hate 于 2008-10-19 23:09 编辑 ]
作者: bbjmmj    时间: 2008-10-19 23:13
原帖由 win_hate 于 2008-10-19 23:07 发表


一次一密在理论上是完美的,但非常不实用。尤其是在现代的商业环境中。


主要是代价太高。
作者: ssffzz1    时间: 2008-10-20 09:03
标题: 回复 #14 bbjmmj 的帖子
我说的是

咋用MD5去做加密算法,有咋样才能够确定出那些是碰撞的。

你咋有扯到 一次一密 上去了呢?  跨度也太大了吧。
作者: lihaixyz    时间: 2008-10-20 09:28
不懂密码学
学习了
作者: bbjmmj    时间: 2008-10-20 11:00
原帖由 ssffzz1 于 2008-10-20 09:03 发表
我说的是

咋用MD5去做加密算法,有咋样才能够确定出那些是碰撞的。

你咋有扯到 一次一密 上去了呢?  跨度也太大了吧。


具体的你自己去看密码学书吧,我也只是粗浅了解,讲不明白的。

序列加密跟分组加密不一样,分组加密可以一个密码用到连接中断,序列加密就得加密一次换一个密码,主要是换密码的代价比加密数据本身代价要大得多,所以一般也没有这么用的,但是这么用安全上还是没问题的.

[ 本帖最后由 bbjmmj 于 2008-10-20 11:10 编辑 ]
作者: ssffzz1    时间: 2008-10-20 11:03
我要知道的是,这个和MD5的碰撞有关系没有。我不是来听课的。
作者: cheveu    时间: 2008-10-20 11:05
标题: 回复 #10 win_hate 的帖子
就事论事地说:
这个太简单了,码长不够填零不是?
我编码的时候不使用以零结尾的元素,解码的时候把零抹去。
作者: cheveu    时间: 2008-10-20 11:07
标题: 回复 #22 ssffzz1 的帖子
碰撞没有关系,8楼和23楼的回答足够。
作者: kentchoi    时间: 2008-10-20 11:07
network security essentials 当中对 hash 算法H有个描述,英文敲入;
望参考:

1.H can be applied to a block of data of any size
2.H produces a fixed-length output
3.H(x) is relatively easy to compute for any given x, making both hardware and software implementations practical
4 For any given value h ,it is computationally infeasible to find x such that H(x)=h ,This is sometimes referred to in the literature as the ONE-WAY property
5.For any given block x, it is computationally infeasible to fine y!=x with H(x)=H(y),This is sometimes referred to as WEAK COLLISION RESISTANCE
6.It is computationally infeasible to find any pair(x,y) such that H(x)=H(y),This is sometimes referred to as STRONG COLLISION RESISTANCE

从计算机角度来讲,hash 还是不可逆,通信方面我也看的不多,
作者: win_hate    时间: 2008-10-20 11:07
原帖由 cheveu 于 2008-10-20 11:05 发表
就事论事地说:
这个太简单了,码长不够填零不是?
我编码的时候不使用以零结尾的元素,解码的时候把零抹去。


看 11 楼
作者: ssffzz1    时间: 2008-10-20 11:10
标题: 回复 #24 cheveu 的帖子
我也认为没有关系。

哪么吧 一次一密 扯进来有何意义。

另外我认为的MD5的碰撞是不可预测的,你不可能预测到一段明文到底能和多少个其他的明文的HASH结果相碰撞。他到底会和多少个谁碰撞。
作者: bbjmmj    时间: 2008-10-20 11:12
原帖由 ssffzz1 于 2008-10-20 11:10 发表
我也认为没有关系。

哪么吧 一次一密 扯进来有何意义。

另外我认为的MD5的碰撞是不可预测的,你不可能预测到一段明文到底能和多少个其他的明文的HASH结果相碰撞。他到底会和多少个谁碰撞。


不一定要拿明文做摘要,可以参考LINUX中RANDOM服务的做法生成新的密码。
作者: cheveu    时间: 2008-10-20 11:31
原帖由 win_hate 于 2008-10-19 20:21 发表
你这个想法跟用 md5 来作流密码又不一样。是想直接把 md5 当加密算法了。
  •   无论 md5 和 sha-1 都没有保证是置换;
  • 只要是 Hash 算法都会在设计上使逆转非常困难,所以即使上面一条能保证,也没有意义。因为你不知道如何把信息提取出来。
  • 你打算把密钥放在哪里?接在明文后面?

  • 你问到点子上了。
    这个密钥就是PN码发生序列的生成多项式**,它是不可交换的。如果要交换这个多项式,又要返回到如何交换密文(密钥)的老路上来,问题就又回到了起点。

    先说点题外话:
    事实上,bbjmmj说的这个“PN码调制-CDMA通信”的确不是通过交换密钥通信的。
    在这个系统中,要有两个前提条件:
    1、通信双方互相信任,互相信赖。比如手机终端和小区基站。
    2、双方准备的多项式相同,且不是一个,是很多很多个,已经固化在硬件里。通信开始时商定用哪一个多项式,而第三方最多监听到多项式的代号,是不可能知道多项式的具体参数的。

    这样产生以下后果:
    1、监听的第三方不知道多项式,监听到的就是白噪声。
    2、监听方如果是内鬼,知道所有的多项式,那么他收到多项式代号之后,理论上可以马上(实际上一定会有延迟,这个延迟很关键)生成解码PN序列。
    3、然而,这个内鬼再也没有机会了,因为码分多址通信需要进行前导序列的训练,就是说手机和基站在之前已经把时钟完全对齐了,他俩的PN码是同步的,而内鬼已经赶不上参与前导序列训练了,第三方与通信双方的PN码是不同步的。内鬼收到的仍然是白噪声。
    4、由于上面第2步那个关键的延迟,内鬼已经不可能收集到所有信息了。

    **到目前为止,我仍然没有直接回答你的问题,而是在说bbjmmj那个方法。他/她的那个办法,每一个hash生成的PN与生成多项式生成的PN是等价的。他/她说的一次一密,正是每次CDMA通话时所做的,每次CDMA的通话,使用的生成多项式都不同。
    ----------------------------------------------------------
    现在我回答你的问题:
    与bbjmmj的那个方法相同,我的抬杠的想法也是要满足上述两个前提条件的。而这,正是现代加密原理中不认可的。现代加密原理并不要求加密方是经过认证的可信赖的,这是我们分歧的根源。我们说的“加密”大前提是不一样的,对“加密”的定义也不一样,结论自然不同。这个不必强求,你们的诘问可以促进我们共同思考,很有意义。

    我想,纵然量子计算没有实用,我的加密方式也有用途,比如数据银行,类似银行提供的保险柜服务。
    在这里,加密的是我,解密的也是我,我的信息存在公共空间,并不需要别人知道。这是一个有前途的应用,云存储必然以此为基础。
    我把这个点子免费告诉大家。
    不过貌似Unix系统的登陆口令就是这么保存的,班门弄斧,见笑了。

    还是那句话,我们双方所说的“加密”的大前提不同,定义也就不同,结论也就不同。但是仍然感谢诘问。

    [ 本帖最后由 cheveu 于 2008-10-20 11:56 编辑 ]
    作者: cheveu    时间: 2008-10-20 11:39
    原帖由 ssffzz1 于 2008-10-20 11:10 发表
    我也认为没有关系。

    哪么吧 一次一密 扯进来有何意义。

    另外我认为的MD5的碰撞是不可预测的,你不可能预测到一段明文到底能和多少个其他的明文的HASH结果相碰撞。他到底会和多少个谁碰撞。


    看来我还是有一点没有说清楚。
    明文,要进行编码,变成一个个输入序列的元素,这些元素们属于同一个有限集合。
    有限集合的Hash变换,是可以穷举的,从而可以挑出所有的碰撞,在编码时躲开不用。
    作者: ssffzz1    时间: 2008-10-20 11:43
    穷举的,从而可以挑出所有的碰撞,在编码时躲开不用


    我不是这么认为的,我认为的是无法穷举所有的碰撞。
    作者: MOTOBIKE    时间: 2008-10-20 12:36
    提示: 作者被禁止或删除 内容自动屏蔽
    作者: zxz1984    时间: 2008-10-20 14:02
    原帖由 ssffzz1 于 2008-10-20 11:43 发表
    穷举的,从而可以挑出所有的碰撞,在编码时躲开不用


    我不是这么认为的,我认为的是无法穷举所有的碰撞。

    他的意思是使用某种编码方式对明文编码,然后每次的输入就是该编码表中的一项

    例如,以ASCII编码,明文是ABCDE
    则输入有5个,分别是A-E的ASCII码,输出也是5个,是A-E的MD5散列值

    这样做确实可能避开碰撞
    但我认为这样做明、密文空间太小,无法确保安全性
    作者: ssffzz1    时间: 2008-10-20 14:15
    你的意思是说,我每次让输入的明文和摘要的长度都是相同的。
    哪么这个就更不可能了。因为明文的组合有无数种。你无法把无数种的组合都穷举出来。
    作者: cheveu    时间: 2008-10-20 15:17
    斑竹,还有zxz1984 ,你们的意思我明白,但也许我说的没有实例不好理解。
    可以穷举的。用有限的元素表达无限的信息,这个正是我们每天都在做的。举个例子,我们使用汉字,不就是有限元素集合么?表达的信息从来没受过制约啊。

    严谨点说:图形图像语音文字信息,所有的信息,都可以用一连串的0和1表示。
    当然,0和1组成的空间太小,可以把这一连串0和1搞成固定长度的,比如128位或者1280位都无所谓,然后编个字典,这个字典就是编码空间。
    当然,也不一定非得是2进制,16进制(0-f)32进制(0-y)都很好。进制搞大了,编码空间就更复杂更保险。
    总之,所有的信息,都可以表示成N进制的连续数据流。按照固定长度分段作为输入元素,输入元素就处于有限空间中了(比如24位16进制编码空间),用有限的元素就可以表达无限的信息了。

    如果信息本身就很短,那就不必分段了,直接算hash好了。然而,正如zxz1984说的,短信息的加密本身就很不保险。我有个想法,算两次Hash,第一次把信息搞长(代价是冗余度提高),第二次是真正加密。偶然想到的,不一定严谨,抬杠的成分偏多。
    --------------------------
    说到这里,前面的帖子提到,我要躲开0结尾的元素,有两个办法。
    一是码元就不含零。比如16进制搞成(1-g),32进制搞成(1-z)。
    二是码元含零,但是每一个元素都加一个后缀,比如“1011”,解码以后去掉这个后缀。

    [ 本帖最后由 cheveu 于 2008-10-20 16:06 编辑 ]
    作者: cheveu    时间: 2008-10-20 15:38
    标题: 回复 #32 win_hate 的帖子
    如果你看那些冗长的通信的东西越看越糊涂,那我简单地回复你如下:
    我的那个办法,密钥要么是一个生成多项式外加一个输入集合,要么是一个字典,这两者是等价的。
    密钥不用交换,就保存在硬件里。
    如果我是数据银行的客户,密钥就是加密解密的电子钥匙。
    如果是两方同时通信,那么这两方必须互相信任,并且密钥必须是预先放置于通信设备内的,而且是多组。
    我重复一遍,加密方不加认证时,我这个办法没用,那个时候必须传递密钥(或者更精确地说是公钥)。我这个处理方法,是不适用于你那个通常情况的,所以,通常情况下,也没有人这么做。
    然而悲哀的是(我牢骚一句),通常情况下,很少有人想想为什么非得这么做,却不能那么做。
    作者: bbjmmj    时间: 2008-10-21 09:41
    密钥交换开销太大,所以大多数应用都选择一个密码用到死,这也是大多数情况使用分组算法的原因所在.
    作者: 论坛名只能7个字    时间: 2008-10-21 09:54
    两个帖子都看完了到现在还没搞清楚你们讨论的问题答案是什么。每个帖到后面都不讨论原问题了,尽扯别地去了,MD5和HASH按你们说的能做加密的话,到底能解密出原文来吗
    作者: cheveu    时间: 2008-10-21 10:48
    标题: 回复 #40 论坛名只能7个字 的帖子
    我确信自己说得很清楚了。我是对称加密。
    解密的办法就是:“查字典”。
    给出生成多项式和输入集合,自己生成字典,这个和“查字典”是等效的。
    作者: bbjmmj    时间: 2008-10-21 10:57
    原帖由 论坛名只能7个字 于 2008-10-21 09:54 发表
    两个帖子都看完了到现在还没搞清楚你们讨论的问题答案是什么。每个帖到后面都不讨论原问题了,尽扯别地去了,MD5和HASH按你们说的能做加密的话,到底能解密出原文来吗


    如果你把加密看成一个过程,这个问题就很容易明白了。在数据加密的整个过程中,明文可以不参与运算,只在加密过程的最后,与密码异或一次而完成加密,别忘了,加码算法不但可以生成密文,同样也可以生成密码,SHA-1就是用来生成密码的东西。
    作者: rocenting    时间: 2008-10-21 12:16
    我来说两句,两年前曾经参与机顶盒研发,据我所知,bbjmmj同学说的方法早就在数字电视领域行业应用得很广,DVB标准的CA系统标准之一,所以算不上新东西,N年前就形成了完整的商业应用方案了,并大量应用。


    可以看看数字电视条件接收系统(CA系统)这方面的论文

    比如:
    CA条件接受系统的设计和应用
    清华大学宽带网信息研究中心  刘君宁(硕士研究生) 戴琼海(副教授) 陈峰(讲师)
    URL            http://tv.jlu.edu.cn/index/zhuyg2/webcatv/39.htm

    里面有一段话
    “CA系统安全保障的核心是相关控制信息的安全传输。在数字视频信号的环境中,加扰操作都是由一个加扰控制字所控制完成的,这个控制字可以说是一把钥匙,有了它就可以同步地恢复加扰使用的随机序列对加扰视频信号进行解扰。由控制字产生伪随机序列的方法很多,一般是使用单向Hash函数来产生伪随机序列,因为这种单向Hash函数在稍有不同初始值下可以迭代出完全不同的伪随机序列,而且具有不可逆推的性质,单向Hash函数有很多种,通常使用多个移位移位寄存器线结合性反馈来实现。

    作者: rocenting    时间: 2008-10-21 12:19
    虚心虚心再虚心
    作者: bbjmmj    时间: 2008-10-21 13:05
    原帖由 rocenting 于 2008-10-21 12:19 发表
    虚心虚心再虚心


    顶你!
    作者: voipexplore    时间: 2008-10-21 13:12
    原帖由 cheveu 于 2008-10-20 15:38 发表
    如果你看那些冗长的通信的东西越看越糊涂,那我简单地回复你如下:
    我的那个办法,密钥要么是一个生成多项式外加一个输入集合,要么是一个字典,这两者是等价的。
    密钥不用交换,就保存在硬件里。
    如果我是数 ...

    真的认为有价值的话,可以去<计算机学报>上发表试试,在公司的话去申请个专利好了。密码学是学术性很强的学科,研究密码学的人多了去了。
    "然而悲哀的是(我牢骚一句),通常情况下,很少有人想想为什么非得这么做,却不能那么做。",这个问题好回答,这是因为在学术界尚未有人认为应该那么做,而不是非得这样做。
    作者: rocenting    时间: 2008-10-21 13:33
    原帖由 bbjmmj 于 2008-10-21 13:05 发表


    顶你!



    顶什么啊,就是说你要虚心,呵呵
    作者: bbjmmj    时间: 2008-10-21 13:43
    原帖由 rocenting 于 2008-10-21 13:33 发表



    顶什么啊,就是说你要虚心,呵呵


    那是当然啦
    作者: netawater    时间: 2008-10-21 13:52
    原帖由 cheveu 于 2008-10-18 02:23 发表
    原贴的起因及讨论详见下面链接及前后各页:
    http://bbs.chinaunix.net/thread-1242846-5-1.html   该贴被锁。

    我想我明白了bbjmmj的意思。

    Hash生成伪随机序列码,记作PN。原始信息,记作A。
    1、PN码加 ...


    看了半天,还是觉得楼主的理论基础有问题。
    加密算法不可逆,如何解密?你用穷举法只能找到的只是一种可能性而已。
    打个很简单的比方,整除2就是个不可逆的算法,2,3都加密成1,你如何从1得出我加密的是
    2还是3?

    “CA系统安全保障的核心是相关控制信息的安全传输。在数字视频信号的环境中,加扰操作都是由一个加扰控制字所控制完成的,这个控制字可以说是一把钥匙,有了它就可以同步地恢复加扰使用的随机序列对加扰视频信号进行解扰。由控制字产生伪随机序列的方法很多,一般是使用单向Hash函数来产生伪随机序列,因为这种单向Hash函数在稍有不同初始值下可以迭代出完全不同的伪随机序列,而且具有不可逆推的性质,单向Hash函数有很多种,通常使用多个移位移位寄存器线结合性反馈来实现。“

    这段也只是说用hash去生成伪随机序列来做加扰控制字,加扰仍然需要加密算法啊。
    作者: netawater    时间: 2008-10-21 13:56
    原帖由 bbjmmj 于 2008-10-21 10:57 发表


    如果你把加密看成一个过程,这个问题就很容易明白了。在数据加密的整个过程中,明文可以不参与运算,只在加密过程的最后,与密码异或一次而完成加密,别忘了,加码算法不但可以生成密文,同样也可以生成密码 ...



    在数据加密的整个过程中,明文可以不参与运算,只在加密过程的最后,与密码异或一次而完成加密
    晕,这句话不是自相矛盾吗?
    明文到底参不参加运算?与密码异或一次不是运算吗?其实简单地与密码异或就是一次加密了。
    作者: bbjmmj    时间: 2008-10-21 15:07
    原帖由 netawater 于 2008-10-21 13:56 发表



    在数据加密的整个过程中,明文可以不参与运算,只在加密过程的最后,与密码异或一次而完成加密
    晕,这句话不是自相矛盾吗?
    明文到底参不参加运算?与密码异或一次不是运算吗?其实简单地与密码异或就是 ...


    加密过程不等于加密算法,明文不一定要参与加密算法所做的运算。
    作者: netawater    时间: 2008-10-21 15:24
    原帖由 bbjmmj 于 2008-10-21 15:07 发表


    加密过程不等于加密算法,明文不一定要参与加密算法所做的运算。

    。。。晕,那跟那?你想说明那句话是对的?他说的是加密过程明文不参加运算。
    作者: rocenting    时间: 2008-10-21 16:07
    这段也只是说用hash去生成伪随机序列来做加扰控制字,加扰仍然需要加密算法啊。


    简单写一个精简过程
    1.术语:
    控制字SW     -----》 一般2-10秒变化一次,满足一定随机性
    伪随机序列生成器    -----》 可以采用Hash算法
    伪随机序列      -----》 加扰 解扰的key
    加扰    -----》 异或  或者  其他(比如:美国的标准是3DES)
    解扰    -----》 异或  或者  其他(比如:美国的标准是3DES)
    加密1 解密1 业务密钥(SK)    -----》 对称加密算法
    加密2 解密2  用户个人分配密钥(PDK)  PDK公钥  PDK私钥    -----》 非对称加密算法
    IC卡    -----》 从运营商购买
    视频流    -----》 原始视频流   
    音频流    -----》 原始音频流                              
    授权管理信息(EMM)    -----》 存放加密后的控制字SW和用户ID
    授权控制信息(ECM)    -----》 存放加密后的业务密钥SK
    发送端    -----》 电视台或者运营商
    接收端    -----》 机顶盒终端用户

    2.详细:
    发送端   
    【控制字SW】 用【业务密钥SK】经过【加密1】算法加密得到【加密后控制字SW】放到【授权控制信息(ECM)】包里面
    【业务密钥SK】用【用户个人分配密钥PDK公钥】经过【加密2】算法加密得到【加密后业务密钥SK】放到【授权管理信息(EMM)】包里面
    用【控制字SW】 经过【伪随机生成算法】生成【伪随机序列】
    用【伪随机序列】【加扰】【视频流】和【音频流】

    接收端   
    根据自己的用户ID取得自己的【授权管理信息(EMM)】包
    从【IC卡】取得【用户个人分配密钥PDK私钥】
    拿【用户个人分配密钥PDK私钥】用【解密2】算法解密【授权管理信息(EMM)】中的【加密后业务密钥SK】得到【业务密钥SK】
    根据自己的用户ID取得自己的【授权控制信息(ECM)】包,取出【加密后控制字SW】
    拿解密后【业务密钥SK】用【解密1】算法解密【加密后控制字SW】得到【控制字SW】
    用【控制字SW】 经过【伪随机生成算法】生成【伪随机序列】
    用【伪随机序列】【解扰】加扰后的【视频流】和【音频流】得到原始的【视频流】【音频流】

    [ 本帖最后由 rocenting 于 2008-10-21 16:19 编辑 ]
    作者: bbjmmj    时间: 2008-10-21 21:05
    原帖由 netawater 于 2008-10-21 15:24 发表

    。。。晕,那跟那?你想说明那句话是对的?他说的是加密过程明文不参加运算。


    不是不做加密运算,是不参与加密算法中的运算。
    本来加密是个很简单的事,密码直接异或明文就可以了,但是这样的加密得加密一次换一次密码,而换密码又相当麻烦,比加密数据要麻烦得多,所以,干脆,一个密码用到老的办法就出来了———这就是分组加密的由来。当然,分组加密加密的也不是明文,而是经过格式化后的明文。
    作者: dts011    时间: 2008-10-22 00:42
    。。楼上的大哥。。本来写了很多。。想想算了。
    我要告诫自己:多看书。少说话
    作者: bbjmmj    时间: 2008-10-22 09:39
    原帖由 dts011 于 2008-10-22 00:42 发表
    。。楼上的大哥。。本来写了很多。。想想算了。
    我要告诫自己:多看书。少说话


    嘿嘿~你光看书,不下水,还是学不会游泳的,你信不?
    作者: netawater    时间: 2008-10-22 10:10
    原帖由 bbjmmj 于 2008-10-21 21:05 发表


    不是不做加密运算,是不参与加密算法中的运算。
    本来加密是个很简单的事,密码直接异或明文就可以了,但是这样的加密得加密一次换一次密码,而换密码又相当麻烦,比加密数据要麻烦得多,所以,干脆,一个密 ...


    原来你是赞同楼主的,是我弄混了。
    。。。话题又被扯远了。
    作者: netawater    时间: 2008-10-22 10:12
    原帖由 rocenting 于 2008-10-21 16:07 发表


    简单写一个精简过程
    1.术语:
    控制字SW     -----》 一般2-10秒变化一次,满足一定随机性
    伪随机序列生成器    -----》 可以采用Hash算法
    伪随机序列      -----》 加扰 解扰的key
    加扰    -----》 异 ...


    引用一大堆干什么?
    加扰    -----》 异或  或者  其他(比如:美国的标准是3DES)
    不正表明加扰是个加密算法吗?
    作者: shenbo7    时间: 2008-10-22 11:50
    看这帖,,,,,,貌似需要很高的数学基础.........

    我就觉得,,,,,数学才是王道.....
    作者: ssafa    时间: 2008-10-22 12:19
    可逆运算的一个最重要的作用就是保证密文可以准确的被转化为明文,或者说保证传递消息的准确,如果采用不可逆算法,那么,一个密文可能被翻译成不同的明文,那么会使信息产生混乱,从而是收到信息者无法得到真正的结果。
    一个好的密码算法不但要防止被破译,还要防止主动攻击,即在密文中加入其它的信息,从而使密文造成混淆。
    作者: dts011    时间: 2008-10-22 13:04
    原帖由 bbjmmj 于 2008-10-22 09:39 发表


    嘿嘿~你光看书,不下水,还是学不会游泳的,你信不?

    不错不错,看来你已经下过水了,感觉很不错吧,唉 像我这样的菜鸟还是先多看看书 不然会被淹死的,大哥你加油
    作者: ShareThought    时间: 2008-10-22 15:07
    角度不同 概念不一 思路不同
    作者: bbjmmj    时间: 2008-10-22 15:33
    原帖由 shenbo7 于 2008-10-22 11:50 发表
    看这帖,,,,,,貌似需要很高的数学基础.........

    我就觉得,,,,,数学才是王道.....


    对头!不过很可惜,搞数学的,很可能会穷到去讨饭~~~
    作者: 天外飞客    时间: 2008-10-22 18:55
    hash是对任意长的数据进行运算的,得到一个定长的~SHA-1是160bits。
    作者: yuanchengjun    时间: 2008-10-23 09:32
    楼主说的情形是加密,不是hash。
    可以认为是用密钥PN对A加密。可以理解为一种很弱的加密。因为PN用计算机猜出来很容易。

    hash是对很大的数据,比如一部200M的电影,
    计算成一个很小的数据,比如20字节。

    我们认为同一种hash算法,只要原文改了,结果必定改变了。
    所谓冲突是指原文变了,结果没变。

    hash不可逆,所以必定不可逆,不需要密钥。

    实际上绝对会冲突的。
    只要不是“很容易的按照意愿“冲突就行了;
    如果这样了,这种hash算法就可以宣布死亡了。
    作者: 绔子弟    时间: 2008-10-26 15:49
    提示: 作者被禁止或删除 内容自动屏蔽
    作者: 比如说吧    时间: 2008-10-26 16:48
    提示: 作者被禁止或删除 内容自动屏蔽
    作者: huangdonger    时间: 2008-10-26 21:22
    :em11: 云忽忽的啊
    作者: ge_yong_linux    时间: 2011-04-11 18:20





    欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2