0

关于投票
为了革命群众的通讯安危,再举CRC密码大旗保护自己的良田

讨论在: http://bbs.21ic.com/club/bbs/list.asp?boardid=11&page=1&t=3016838

hotpower 发表于 2008-6-29 22:59 侃单片机 ←返回版面 按此察看该网友的资料 按此把文章加入收藏夹 按此编辑本帖


楼主: 为了革命群众的通讯安危,再举CRC密码大旗保护自己的良田

今天农忙有朋友说有一通讯协议很难整,让俺看看~~~
首先是桌面数据库access被加密...网上有很好的解密的软件~~~所以无密~~~
再PC到主机有一串口,主机到从机再有N个串口...
协议应该采用的是应答机制,因为无PC软件不能工作...

现在网上的串口拦截/监视软件很多,所以PC到主机的数据流被看的很清晰,很规范~~~
不得不赞叹~~~太规范了~~~一点"袈裟"也不穿~~~真是"范文"也~~~
但是主机到从机用串口拦截/监视软件无果...但用串口RXD搭上漏出了原形~~~
不黄不暴力~~~作者真是个规矩人,熟通电传协议...

半小时的归类分析,完整甚至没拦截到的协议,通过串口调试软件都调试通过...

可能有人说菜农"卑鄙无耻下下流"~~~整天揣者"技巧"游天下...

我晕~~~俺不想PK谁~~~也不想总让人说俺玩得是什么"技巧"~~~

俺这是28年的积累~~~

为向此作者表示"哀悼"和"同情",俺忏悔之中再献CRC密码赎罪~~~

当然在这里俺首先声明CRC密码也不是万能的~~~因为俺此生就破译过2个高难度
的CRC密码...

不过很难~~~俺不过是通过一些"卑鄙"手段侧翼获取~~~

言归正传,俺先浅谈CRC及CRC密码之用途,虽然俺03年开始在网上推销HotCRC,
但估计俺没讲其应用,故很难推广...

这次小朋友给菜农搞了个"老顽童的乐园",见:http://www.hotpage.net.cn/hotpower/HotPower三角及冗余校验密码技术.htm

再通过今天"扒光别人裤头"的产生"喜悦的快感",故感觉CRC密码在MCU的应用应该
得到推广~~~因为它比其他密码更容易嵌入到通讯协议之中~~~

先给几个成功的"案例"吧~~~(和其他软件结果比较)

1.SMBus中的PEC校验

先给个老外网站上的PEC计数器的帖图,可惜后来不知为什么不能网上直接运算了.

注意老外的CRC8实际为PEC
点击看大图

现在用HotCRC(PEC)通用网上验算器计算:
1.设置左移8位CRC.
2.权取0x03---PEC=X8+X2+X1+1

点击看大图

可以从下图中看出两个结果完全一样.




再举个PEC的示例:

点击看大图

点击看大图

再加个例子~~~



下面用菜农的算法得到同样的答案~~~
点击看大图

几个DS1990A的图示样例(单总线上的CRC8)

点击看大图

CRC8"国际算法"
点击看大图



晕到~~~,厂家图中的序列码竟然是错的~~~
哈哈,要打假呀...晕~~~堂堂DALLAS的文档也有假货,还"全球唯一码"???怪不得被人收购.

正确的序列码校验操作过程图示:

1. 序列码 01 2BC5FB000000 66
点击看大图

2. 序列码 01 B3D8FB000000 E6
点击看大图

以上主要是讲CRC正常校验部分.

实际CRC是可逆的~~~到现在俺还没从数学教授那里得到证实~~~不过长期的应用

菜农是不会毒害劳苦大众的~~~

点击看大图



http://www.hotpage.net.cn/hotpower/HotPower三角及冗余校验密码技术.htm

hotpower 发表于 2008-6-29 23:00 侃单片机 ←返回版面 按此察看该网友的资料 按此把文章加入收藏夹 按此编辑本帖

2楼: 占座谈CRC密码对通讯协议的保护作用

MCU/ARM/DSP工程师很多在设计初期就想到自己即将完成的作品

是否被克隆,总想着用加密几率小的芯片,...在其程序中布满了

陷阱...但往往忽略了串行接口的通讯协议的明文传送的危险,

总认为和PC通讯可能被破解的概率很小,甚至不相信会被破解~~~

实际上裸露通讯线比芯片更危险...

因为大多数人会在你的PC软件下认输,也会在你的MCU/ARM/DSP/CPLD/FPGA下止步,但他们可以通过原硬件进行

技术解密~~~可能比你做的更好~~~因为他的技术水平和经验可能更高.

但是如果再将通讯协议明码交给了对方,恐怕"输得裤子都提不起来"~~~

所以在通讯协议中加密,芯片即使被技术解密也要再解密通讯协议才可~~~

在一般使用中,异或/求和/取反等很常见...这主要是算法简练不太浪费

空间和时间.但这很容易破解~~~

若用复杂的加密解密算法,空间和时间都是问题~~~

所以通过长期的应用,俺觉得CRC密码很实用~~~(算自己是HotCRC的托吧~~~)

CRC密码很简单,变种很多,五花八门~~~这正和MCU工程师的胃口~~~

所以俺别称它为"群魔乱舞的CRC密码"~~~

最基本的是CRC运算的结果的输出流即为CRC密码流.

在CRC计数器上点击"计算"(加密)后再点击"还原"(解密)即可.

CRC密码是可逆运算,它的密钥保护是个实际问题,这个我承认是它最大的弱点~~~

但结合"三角密码"的不可逆,难度为提高,不过乘方/开方对一般MCU不利~~~

若采用交换CRC的几个"关键部件"---移动方向,初值,权后,那么只有

知道原密钥才能攻破CRC密码,即只有用穷举法才能攻破,那么这种密码机制不可靠吗???


hotpower 发表于 2008-6-29 23:02 侃单片机 ←返回版面 按此察看该网友的资料 按此把文章加入收藏夹 按此编辑本帖

3楼: 再预定个座位好好赎罪~~~

谈到"赎罪",因为俺此生最得意的是攻克了2个中外著名厂家的CRC密码.

所以俺甚至其厉害和它在MCU中能得到简洁的代码序列,而且有的MCU

还支持SMBus的PEC,用硬件实现.这也为CRC提供了施展的舞台~~~

关于XWJ有关CRC密级及强度的问题,这应该是数学教授研究的话题,

我想XWJ还没资格下此定论~~~至少给个攻击序列和思路也好~~~

我无意强求任何人按俺的方法和思路行事,说不好听的,很少人能跟

上俺的节拍~~~

可以告诉大家,菜农工作在高度机密的"农科所"并承担国家机密的研究~~~

虽然俺没参与其中~~~

最近风声很紧~~~PK声不断~~~本想休眠...但感觉应该让大家了解一下CRC密码在MCU的应用.

虽然加密强度的密码很多,但能在MCU中实用的又有几种???

可怕的代码长度和运行时间,难道能实现"零耗时加密和解密"吗???

网上有个菜农和刀客斑竹搞笑的CRC汇编传送程序,可以看出CRC的加密和解密过程是可以嵌入到传送间隙之中的~~~~

下面的连接可以看到其代码之简洁...

单总线数据发送“零耗时CRC检测”算法的软件实现(灌水作)

xwj 发表于 2008-6-29 23:23 侃单片机 ←返回版面 按此察看该网友的资料 按此把文章加入收藏夹 按此编辑本帖

4楼: 说实话,老Hot这个所谓的“加密”根本就没啥强度

真对这个感兴趣的话建议研究研究“PGP”、“RSA”、“DES”什么的...

当年读书时有个同学就对PGP非常感兴趣:-)

john_light 发表于 2008-6-29 23:26 侃单片机 ←返回版面 按此察看该网友的资料 按此把文章加入收藏夹 按此编辑本帖

5楼: CRC简单而有效

占座看热闹
hotpower 发表于 2008-6-29 23:34 侃单片机 ←返回版面 按此察看该网友的资料 按此把文章加入收藏夹 按此编辑本帖

6楼: 哈哈~~~请XWJ破解HotCRC~~~(放心俺不会和你PK~~~)

hotpower 发表于 2008-6-30 00:11 侃单片机 ←返回版面 按此察看该网友的资料 按此把文章加入收藏夹 按此编辑本帖

9楼: 哈哈~~~最近PK风声很紧,看球前冒个泡~~~开始休眠~~~

哈哈~~~"千万不要忘记阶级斗争"~~~

点击看大图

系统分类: 单片机
用户分类: CRC专栏
标签: 无标签
来源: 原创
发表评论 阅读全文(200) | 回复(0)

0

关于投票
sharks的'69'式密码

http://bbs.21ic.com/club/bbs/ShowAnnounce.asp?v=&ID=2777596

再来陪你玩个好玩的冬冬
sharks 发表于 2007-12-1 15:55 侃单片机 ←返回版面 按此察看该网友的资料 按此把文章加入收藏夹 按此编辑本帖举报该贴

   偶来陪Hot大叔玩69。

   各位!不要误会!我说的确是数字69 (六十九, 陆拾玖!)。

   把2个69中间加个0,就变成69069。(不要砸我)
   找一个整数,8位的不要,32位的也不要,只要16位的
   把这个数乘以69069,取16位余数,再加1,看看得到什么?
   没看出来?  把结果再乘以69069,取16位余数,再加1,看看?
   还没看出来?把结果再乘以69069,取16位余数,再加1,看看?
   真没看出来?上一步for()一个10000遍,printf看看...
   
   ....
   
   没看出来我就放心了。这是一个高性能的伪随机数序列。(Quake3源代码里找来的算法)

   知道我要干啥了吧?
  
   这个序列既然是随机数,说明序列前后任意N个数无关联。从后面的数无法预测前面的数。依次类推,第一个数无法推知。
   第一个数有自己定,记好了当密码,产生一串串随机数。把信息安字节和随机数序列异或。出来还是一个随机数串,原始信息被淹没了。必须按照原始的序列顺序重新产生随机数,再把随机字串异或回去,才能得到原始信息

   和本贴无太大联系,看看有什么其他启发而已。
 

这个"算法"名字不雅~~~
hotpower 发表于 2007-12-1 16:50 侃单片机 ←返回版面 按此察看该网友的资料 按此把文章加入收藏夹 按此编辑本帖举报该贴

这个"算法"名字不雅~~~而且65536次攻击即可破解

俺对此算法的理解:

1.找1个16位的数进行你的'69'式运算,10000遍实际和1次一样,无非是加大破解时间.因为取余后已不能可逆.
只要加密算法不可逆,就只能逼迫解密者穷举.

2.这实际是个16位的"长密钥",只要知道此算法,那么就应该有65536个这样的运算结果---65536组"长密钥"随机"密钥串".

3.用其中1组"长密钥"随机"密钥串"对明文加密(异或),得到对应的"密文".

所以此算法和菜农的CRC密码中的CRC8属于同级(17位比‘69’密码多1位)~~~

不同之处在于10000遍的折腾~~~

实际上采用CRC多次加密技术,折腾绝不低于这'69'式~~~

俺研究CRC密码就是要增大实际真的密钥长度
hotpower 发表于 2007-12-1 17:41 侃单片机 ←返回版面 按此察看该网友的资料 按此把文章加入收藏夹 按此编辑本帖举报该贴

不要被'69'密码吓到,它说穿了实际真的密钥长度就是16位.

在最简单的CRC8密码中,因为有初值(8位),权(8位)和移动方向(1位)

对第1个明文字节加密时,需要初值,权和方向这3个密钥来对明文字节进行非典的CRC8运算,

而非固定权(如经典的CRC8为X8+X5+X4+1的权为0x18,PEC为X8+X2+X1+1的权为0x03)及固定方向(右移CRC8,左移PEC).

而且基本的CRC密码和CRC运算是一样的,本次的初值就是上次CRC结果.

这样就时密钥减少了1位.

即CRC8权右移用0x18和0x19是一样的,PEC权左移用0x03和0x83是一样的.

故实际密钥位初值(8位)权(7位)方向(1位)

所以,要想让CRC密码再增大1位,就不能采用"本次的初值就是上次CRC结果"

而且它的权始终没变,这样即可通过任意2个连续的密文字节攻击256次即可破解.

故必须利用明文流数据使算法可逆但不可倒推出初值和权及方向.

所以应该采用:
  本次的初值就是上次CRC的权,本次的权就是上次的明文.
或本次的初值就是上次CRC的明文,本次的权就是上次的初值.

如果再精细点,可以:
  本次的初值就是上次CRC的权,本次的权就是上次的明文异或上次的初值.
或....

这样就得到了真正的17位密钥.

太多了...这就是我称之为"群魔乱舞的CRC密码"加密解密体系.

由于它太复杂了,俺多年来一直无法对其"定位"~~~

这就是俺酷爱和一直研究的HotCRC~~~

如果再加上菜农的三角密码体系和CRC密码体系融合一体,估计一般的小偷是很难攻破的~~~

我喜爱CRC密码因为它的运算量和占用资源很小,而且特别适用于MCU等.

三角密码虽然也行,但是开方乘方再小MCU上是个问题.所以我喜欢CRC密码~~~

 

系统分类: 软件开发
用户分类: CRC专栏
标签: 无标签
来源: 整理
发表评论 阅读全文(423) | 回复(0)

0

关于投票
源码下载: HotPower三角及冗余校验滚动密码技术
下载: HotPower三角及冗余校验滚动密码技术.rar
点击看大图
系统分类: 软件开发
用户分类: CRC专栏
标签: 无标签
来源: 原创
发表评论 阅读全文(801) | 回复(0)

2

关于投票