搜索
bottom↓
回复: 77

快速理解用1-wire的唯一ID号加密

[复制链接]

出0入0汤圆

发表于 2009-6-25 16:04:46 | 显示全部楼层 |阅读模式
加密成本 3~4 元, 破解成本大家来分析一下,我觉得要1万以上

这个方法的目的是要在大规模生产中使用,不是为了搞实验用的。

早就听说用1-wire的唯一ID号加密,原理很简单,就是 1-wire 有一个数, MCU的HEX中有一个数,2个一对比,一至则通过。

但是问题是,这样就要求每片MCU的HEX都不一样。
可是如何实现每片MCU的HEX都不一样呢。只能先用工具读ID,然后再根据这个ID对每片单独编译,然后再对MCU编成。不过这样的模式在量产中的成本相当高呀(搞搞实验还行)

新的方法是
1,第1次上电,MCU读1-wire的唯一ID,然后把ID写到EEPROM中。同时在EEPROM中置标志。
2,再次上电,MCU读1-wire的唯一ID 和 EEPROM的ID,如果一致则通过。

P.S. 在第1步中可以加点算法。

可能的解密方法
1,反汇编跟踪HEX,再把程序中判断ID的地方跳过去
2,跟踪1-wire上的时序,用MCU之类的东西模拟一个相同的时序。
3,其它的我还没想到

大家共同来分析一下解密的可能性。

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出1000入0汤圆

发表于 2009-6-25 16:12:22 | 显示全部楼层
"2,跟踪1-wire上的时序,用MCU之类的东西模拟一个相同的时序"

对头! 懂的人这样做是小菜。

出0入0汤圆

发表于 2009-6-25 16:19:08 | 显示全部楼层
不要在一上电的时候就去判断ID..在程序运行中的某个(或某些)时间才去校验ID.......

出1070入962汤圆

发表于 2009-6-25 16:38:33 | 显示全部楼层
由于ID是唯一的,所以,解密者即使获得了波形分析出ID号,用单片机模拟,也得一个设备模拟出一个不同的ID号,N个设备上单片机模拟出的都不同,工作量很大。

出0入0汤圆

发表于 2009-6-25 16:41:01 | 显示全部楼层
如果得出一个,解密者就可以每个都烧一样的程序....模拟同样的一个ID就行了...

出1070入962汤圆

发表于 2009-6-25 16:44:20 | 显示全部楼层
呵呵,如果在系统中涉及到通信,而这个ID恰恰是拿来作为设备号识别的,就不能都搞一样的了。

出0入0汤圆

发表于 2009-6-25 17:11:33 | 显示全部楼层
学习。。

出0入0汤圆

发表于 2009-6-25 17:31:04 | 显示全部楼层
有做过这方面的,1RMB就可以搞定了。如果只是要加密,根本不用在“ID唯一”这点来处理,所以产品都可以同一ID的,只要在通信协议和硬体上处理就可以了,要让破解者用逻辑分析仪也分析不出来^-^!

出0入0汤圆

 楼主| 发表于 2009-6-25 21:39:56 | 显示全部楼层
to:【7楼】 sz_ehome
你能否具体介绍一下你提到的方法?

出0入0汤圆

发表于 2009-6-25 22:47:59 | 显示全部楼层
nop();

出0入0汤圆

发表于 2009-6-25 23:19:01 | 显示全部楼层
你这个主意,没有实用意义的,用pic的10F系列芯片,6条腿,SOT-23大小的一个东西,做一个板子,和你的ID芯片(DS2401)接触一下,自动读出64位的ROM ID,然后,10F就自动仿真DS2401了,整个过程耗时不会大于3秒的.

其实, 1- wire 协议传输的是明码,就决定了不能用来做加密,要想加密其实PIC的HCS301是一个不错的选择

出0入0汤圆

 楼主| 发表于 2009-6-26 09:27:21 | 显示全部楼层
to:【10楼】 zhxzhx 一丁
"SOT-23大小的一个东西,做一个板子,和你的ID芯片(DS2401)接触一下,自动读出64位的ROM ID,然后,10F就自动仿真DS2401了,整个过程耗时不会大于3秒的. "

超级神奇呀,但是我想知道,为了这个3秒钟。假如有客户委托你做这么个板子,你要收人家多少钱?

出10入120汤圆

发表于 2009-6-26 09:32:30 | 显示全部楼层
【7楼】 sz_ehome
积分:44
派别:
等级:------
来自:
        有做过这方面的,1RMB就可以搞定了。如果只是要加密,根本不用在“ID唯一”这点来处理,所以产品都可以同一ID的,只要在通信协议和硬体上处理就可以了,要让破解者用逻辑分析仪也分析不出来^-^!

同8楼一样有好奇心,如何能保证批量生产和应用?

出0入0汤圆

发表于 2009-6-26 11:52:20 | 显示全部楼层
方法和1楼说的一样呀。主要是在硬体上处理(适合批量大了),要不也很容易解密的,只是增大他的的解密费而已。至于协议呢,看系统硬件了,比如系统 SPI总线的话,就挂在SPI上,有I2C总线就挂I2C总线上,或其他。协议处理具体用几根总线来通信就自己决定了,但每根总线都有信号输出,为的是干扰破解者了,再加上如果你会做复杂协议的话,相信没多少人可以捕获到这信号的!!除非他知道你用什么,直接解密了!!!

出0入0汤圆

发表于 2009-6-27 01:28:50 | 显示全部楼层
有客户委托我做这么个板子,单面板就行,器件成本不会过2元,基本3-4元就可以解决

出0入0汤圆

发表于 2009-6-27 01:40:57 | 显示全部楼层
因为我和你一样,用1-Wire的ID号做过加密,当时用的是DS2401 2.4元一个,结果就被别人家用10F200加一个大电容给复制了,连寄生电源的方式都模拟出来了,实践证明,1-Wire的ID号做加密没有意义.

出0入0汤圆

发表于 2009-6-27 01:45:50 | 显示全部楼层

这是10F200的封装管脚定义 (原文件名:未命名.JPG)


这是10F200的功耗 (原文件名:未命名2.JPG)

出0入0汤圆

发表于 2009-6-27 01:52:12 | 显示全部楼层
用PIC通过1-wire读个ID号,这个程序,网上一大把一大把的,10F200的内部4M晶振精度是1%,IO口还有高阻状态,模拟一个1-Wire 时序轻松的很!

出0入0汤圆

发表于 2009-6-27 02:00:17 | 显示全部楼层
10F200 的报价在 http://www.ouravr.com/bbs/bbs_content.jsp?bbs_sn=854696

出0入0汤圆

发表于 2009-6-27 10:37:12 | 显示全部楼层
是的,明码的ID芯片没有多大意义,关键是看成本的性价比,如果本身利润很低,随意加上个id芯片,那么就是破解他的成本就会较高。
如果产品的利润较高,就要考虑加密芯片,比如hcs300,hcs301,接触的一些国外的工控板子和其他的一些产品,都是采用的这种方式,破解费用还是较高的,更有甚者,采用hcs300加密的,居连程序都不加密,直接写到外围存储器里,可见这种加密方式还是在一定程度上提高难度的。(当然,他的应用可不是仅在简单、一般、安全这三种模式上,可以翻出花样来的很多种)

当然,在高深的加密,最终都会有人破解的,关键是看是成本换时间还是其他的考虑,但是建议大家都在自己的有应用前景的产品上做个小小的加密,起码不让那些随手拿来就可以复制的强。

hcs300和ds2401在单体成本上可能会贵个1~2元,但是破解成本可不是在一个数量级上的。

回楼主:
加密成本 3~4 元, 破解成本大家来分析一下,我觉得要1万以上
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
hcs300的破解也才这个水平,这类固定码的不可能这么高的破解费用。

其实根本不需要破解程序,只要时序模拟一个,其他的直接复制就可以了。



这类加密的生产较为麻烦和复杂,我做的一些东西采用了ds2401,为了便于生产,通过制作一个硬件读取ds2401,然后自动生成一个对应的烧写文件,再通过烧写器烧写。再自动化一点的就是制作一个针对特定芯片的烧写器,直接读取ds2401,然后烧写。这么做的目的就是为破解提供一点小小的麻烦,起码还要有这个过程,不然直接开片就复制了。

对于稍微要保护的东西我目前是采用的hcs301,生产过程和上面基本一样,但是破解就不是小麻烦了,起码是中小麻烦。呵呵,不是不能自制大麻烦,关键是不能让加密的成本超过本身东西的成本呀。

出0入0汤圆

发表于 2009-6-27 11:47:31 | 显示全部楼层
新的方法是
1,第1次上电,MCU读1-wire的唯一ID,然后把ID写到EEPROM中。同时在EEPROM中置标志。
2,再次上电,MCU读1-wire的唯一ID 和 EEPROM的ID,如果一致则通过。
------------------------------------------------------------------------------------

这方法首先EEPROM内得有数据,不能为空。要不然等于没加密了,别人只要拿到HEX,然后写进去重复你的过程
1,2晕晕,没加密。。。

------------------------------------

1-wire很好解吗?我看没那么容易吧?

出0入0汤圆

发表于 2009-6-27 11:49:56 | 显示全部楼层
【17楼】 zhxzhx 一丁
用PIC通过1-wire读个ID号,这个程序,网上一大把一大把的,10F200的内部4M晶振精度是1%,IO口还有高阻状态,模拟一个1-Wire 时序轻松的很!

----------------------------------------------------------
你知道内部的密码?说读就能读的出来?

出0入0汤圆

发表于 2009-6-27 14:10:22 | 显示全部楼层
1-wire 本身就是没有密码的,一切都是可读的,要不为什么建议用HCS301!

出0入0汤圆

发表于 2009-6-27 15:37:15 | 显示全部楼层
做个记号。期待下面的有更好的方法

出0入4汤圆

发表于 2009-6-27 16:23:01 | 显示全部楼层
关注中

出0入12汤圆

发表于 2009-6-27 16:45:38 | 显示全部楼层
用avr的osc不是挺好吗,一点多余的费用也不用加,除非不用avr。

出0入0汤圆

发表于 2009-6-27 16:47:51 | 显示全部楼层
【22楼】 zhxzhx 一丁
那你告诉我像DS2432这样的1-wire器件存在的意义是什么?

出0入0汤圆

 楼主| 发表于 2009-6-27 17:27:59 | 显示全部楼层
TO;【14楼】 zhxzhx 一丁
谢谢的提供的资料,不过你可能没有完全理解我的意思。
我的意思是:我给你一个AVR+DS2401的加密板子,你帮我搞一个AVR+PIC10的板子,你的这个套板子要能完全替代前者,这个过程你要收我多少钱?

出0入0汤圆

发表于 2009-6-27 20:49:12 | 显示全部楼层
明白你的意思了,这个代码量大概在300行左右半天的工作量,按我们沈阳的行情最多1000-3000元吧.

出0入0汤圆

发表于 2009-6-27 21:02:59 | 显示全部楼层
加密这个东西还挺让俺头疼的
很多所谓安全芯片,总线监视就可以轻易破解

谁知道比较可靠的保护方法?(破解成本最好是一百万级别的,起码都是数十万的)

出0入0汤圆

发表于 2009-6-27 21:15:55 | 显示全部楼层
to 【26楼】 hsztc

   DS2432,本身要先下载密钥,然后通过MAC认证,本身的ID号还是公开的,这里讨论的是使用ID号,并且成本3-4元的加密.

   另外:我认为DS2432最好的应用,不是用来加密,而是用来做设备运行次数或时间的计数器

出0入0汤圆

发表于 2009-6-27 21:21:03 | 显示全部楼层
补充一句,DS2432很好解密的,你看看打印机墨盒就知道了

出0入0汤圆

发表于 2009-6-27 23:19:37 | 显示全部楼层
...

出0入0汤圆

发表于 2009-6-27 23:21:42 | 显示全部楼层
zhang_mike2000 :

我在西安,我做过这个东西。用51模拟的。用个2051就搞定了。

出0入0汤圆

发表于 2009-6-27 23:24:07 | 显示全部楼层
ds2432的sha1加密认证还是可以的,我以前用mega48v模拟过ds2432;
目前ds2432 解密不难了,估计就是几k了。

出0入0汤圆

发表于 2009-6-27 23:25:58 | 显示全部楼层
用单片机模拟1-wire的设备和读1-wire设备的ID号是两个不同的概念的。

出0入0汤圆

发表于 2009-6-27 23:43:44 | 显示全部楼层
是两个不同的概念,实现起来都不难,能读ID,就能模拟,都是1-wire 而已

出0入0汤圆

 楼主| 发表于 2009-6-28 08:07:34 | 显示全部楼层
好了,那么现在我总结一下吧。1-wire DS2432的解密的成本大约需要1K~10K,价格不透明,所以浮动也很比较大。

总线上是明文的加密方法比较容易用看总线波形的方式破解,如果真正加密,就需要用总线密文的方式,比如ATSC88 3元一片,那就很难解了。


有谁知道 HCS301 的数据传输是密文的吗?能否简单介绍一下工作原理?

出0入0汤圆

发表于 2009-6-28 09:37:19 | 显示全部楼层
我来简单说一下hcs301吧。如有错误,还望各位网友指正。

hcs301采用的是微芯的keeloq技术,主要应用在单向安全控制方面,简单地说就是每次按遥控器的同一按键,发射出的编码值不同,在接收端需要对发射的编码进行解码,来判断信息是否的认证。

主要是用来解决在单向遥控器系统中的安全认证问题。
比如固定码:
每次按a键,遥控器发射出1234的编码,下次按遥控器a键发射的还是1234编码,那么总线监听或者无线捕捉都可以知道发射的内容。这个就类似ds2401的情况,每次读写ds2401的时候,他会返回ID号,那么通过模拟这个协议,这样就可以每次都返回这个ID号码。那么如果破解这个系统,只要开片一套系统,然后通过单片机模拟这个破解设备的ds2401,那么就可以复制出很多一样的这个设备。

hcs301(滚动码),第一次按a键,发射的是1234,第二次按a键,发射的就可能是4567,下一次还不同,而且之间没有显而易见的规律,那么,总线监听就不能复制同样的信号了,只有接收端根据协议获得正确的信息,间接就达到认证的目的了。而且根据滚动码的基本协议可以衍生出很多不同的协议应用,那么完全破解,就需要分析代码了,增加了破解的难度,具体加密协议的产生不仅和滚动码协议有关,而且还和常见的加密情况都相同,两者要互相结合,不然系统总的安全性只是最弱的部分的安全性。
滚动码的发射编码是基于厂家码,就是自己定义的密码,这样又可以有很多组合。
hcs301批量的话可能也就3块多钱,准确的价格我不清楚,根据情况不同,消耗的代码空间在700byte~几K之间。这个空间需求是多于ds2401的,所以选择一种合适的加密方式是需要综合考虑的。

出0入0汤圆

发表于 2009-6-28 10:08:56 | 显示全部楼层
HCS301 的数据传输是密文?

不是的,不过传输的数据你自己用不成,它是经过了自己的运算后给出来的,如果不知道运算方法就没有办法了。

出0入0汤圆

发表于 2009-6-28 10:09:32 | 显示全部楼层
建议自己做DES AES或者3DES加密算法,自己编制。

出0入12汤圆

发表于 2009-6-28 10:36:05 | 显示全部楼层
用hcs301的原理,但是不用hcs301的算法,比如以前有人提出的用经过修改的CRC的办法加密。
算法不要太复杂,算法太复杂了占空间太多,又让人容易让人找到,就是说不要用调用的办法。
要求是外部的单片机要便宜,要自带eeprom,自带的eeprom写入次数越大越好,脚要少。

出0入0汤圆

发表于 2009-6-28 10:57:32 | 显示全部楼层
不太建议外围的采用单片机,个人感觉应该采用专用芯片,因为如果外围采用单片机,就又回到被开片的老路上去了。如果采用也应该是有唯一ID号的单片机。只是同时需要开片两片单片机而已。

比如:一台正常的产品,有加密方法,采用的是外围的单片机。那么目前这台产品使用正常,那么开片得到的两个单片机的内容,直接写入到空片中,只要没有类似唯一ID的检测方法,那么这个复制的产品,应该也是可以正常运行的。

出0入0汤圆

发表于 2009-7-25 22:28:54 | 显示全部楼层
顶一顶,

出0入0汤圆

发表于 2009-12-25 20:37:19 | 显示全部楼层
顶一下,做个记号。。。。

出0入0汤圆

发表于 2009-12-27 19:59:18 | 显示全部楼层
顶一下,做个记号。。。。

出0入0汤圆

发表于 2009-12-27 20:21:35 | 显示全部楼层
回复【16楼】zhxzhx 一丁
-----------------------------------------------------------------------

mark

出0入85汤圆

发表于 2009-12-28 13:03:54 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-1-2 15:11:26 | 显示全部楼层
顶一下做个记号

出0入0汤圆

发表于 2010-1-15 09:43:48 | 显示全部楼层
采用一线制方法确实存在很多问题,不过也看你的需求了。

出0入0汤圆

发表于 2010-1-15 14:14:25 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-1-15 14:33:51 | 显示全部楼层
说一下我的做法吧,大家给提点意见!

用的M16

1)第一次开机,通过读取OSCCAL值,将机器序号、当前时间T、OSCCAL通过算法产生一个值ENC(我用的CRC),把这个值ENC、机器序号和当前时间T保存到片内EEPROM

2)读取OSCCAL值、机器序号和T,用相同的算法进行计算,判断是否正版

3)在程序的多出关键位置(比如开机、按键、存储数据、通信等)处,用多种算法判断,增加“1,反汇编跟踪HEX,再把程序中判断ID的地方跳过去”破解的成本!!

加密元件成本很低!

出0入0汤圆

发表于 2010-1-15 17:04:35 | 显示全部楼层
学习中。。。

出0入0汤圆

发表于 2010-7-14 14:27:10 | 显示全部楼层
这个帖子不错~~~

可是我想问各位一下,如果你的代码被复制了呢?然后攻击者用了一块新的cpu代替原来的cpu,加密芯片仍然加在原来的管脚
只是CPU变了,可能里面的部分程序也会被修改,但是加密这个过程没有变

怎么办?
是不是加密芯片也没办法?相当于整块板子都被复制了?

出0入0汤圆

发表于 2010-11-27 17:17:05 | 显示全部楼层
zhxzhx 一丁
老大,如何联系到你?想找你帮帮忙啊

出0入0汤圆

发表于 2010-11-28 19:00:53 | 显示全部楼层
讨论的太好了,学习。。

出0入0汤圆

发表于 2010-11-28 20:44:31 | 显示全部楼层
学习

出0入0汤圆

发表于 2010-12-1 14:37:26 | 显示全部楼层
学习了

出0入0汤圆

发表于 2010-12-1 16:25:17 | 显示全部楼层
回复【53楼】kevinuouo
这个帖子不错~~~
可是我想问各位一下,如果你的代码被复制了呢?然后攻击者用了一块新的cpu代替原来的cpu,加密芯片仍然加在原来的管脚
只是cpu变了,可能里面的部分程序也会被修改,但是加密这个过程没有变
怎么办?
是不是加密芯片也没办法?相当于整块板子都被复制了?
-----------------------------------------------------------------------

这个就是你怎么利用好这个加密芯片的问题了。最好是做到别人分析你的程序的时候,会头痛。

出0入0汤圆

发表于 2010-12-1 22:58:20 | 显示全部楼层
【56楼】 wyf198251

可以加我QQ:137696332 不过不一定在线,可以留言

出0入0汤圆

发表于 2010-12-2 00:14:45 | 显示全部楼层
还有一个 at88sc 需要什么NDA协议才可以搞,,,晕,。。

出0入0汤圆

发表于 2010-12-2 08:18:12 | 显示全部楼层
回复【51楼】jackielau 九天
说一下我的做法吧,大家给提点意见!
用的m16
1)第一次开机,通过读取osccal值,将机器序号、当前时间t、osccal通过算法产生一个值enc(我用的crc),把这个值enc、机器序号和当前时间t保存到片内eeprom
2)读取osccal值、机器序号和t,用相同的算法进行计算,判断是否正版
3)在程序的多出关键位置(比如开机、按键、存储数据、通信等)处,用多种算法判断,增加“1,反汇编跟踪hex,再把程序中判断id的地方跳过去”破_解的成本!!
加密元件成本很低!
-----------------------------------------------------------------------

你这个方法我没看到有加密的功能啊,对方破_解到你的hex后,在新的单片机里面同样运行你这个过程啊,只不过存的这个值不一样而已。不知道是不是你没说全


所谓加密,我理解是人家拿到你的hex也没法正常用。

反编译我觉得已经不在加密的范围内了,如果对方已经在考虑反编译,恐怕已经难以挽回了

出0入0汤圆

发表于 2010-12-2 08:20:10 | 显示全部楼层
还有就是,真心想抄板的人,恐怕绝大部分不会在乎这几万块钱的费用,没有利润和市场的东西是不会有人去破_解的。

出0入0汤圆

发表于 2010-12-2 08:24:13 | 显示全部楼层
我觉得想个办法麻痹对方式比较妥当的,在运行的初期不要让程序出问题,人家破_解后马上就能用,通过50次以内的开机测试没问题,对方估计就以为大功告成了。之后你想怎么处理就看你产品的情况了。

问题是怎么让程序知道已经被抄板了。

出0入0汤圆

发表于 2010-12-2 08:25:56 | 显示全部楼层
还有,对待仿冒和假冒这两种情况,处理方法也应该区分开。也就是打不打你的品品牌的问题

出0入0汤圆

发表于 2010-12-2 08:57:37 | 显示全部楼层
回复【66楼】ripplexu
-----------------------------------------------------------------------

同道中人啊.......呵呵

出0入0汤圆

发表于 2011-3-19 16:18:32 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-9-10 13:42:36 | 显示全部楼层
路过。。。

出0入0汤圆

发表于 2011-11-27 16:19:52 | 显示全部楼层
好帖留爪,学习一下。

出0入0汤圆

发表于 2011-11-27 21:06:59 | 显示全部楼层
mark!!

出0入0汤圆

发表于 2011-11-27 23:14:16 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-12-13 21:05:51 | 显示全部楼层
期待

出0入0汤圆

发表于 2011-12-15 17:49:30 | 显示全部楼层
学习;

出0入0汤圆

发表于 2016-4-27 10:43:43 | 显示全部楼层
方法2是最常用的,也是破解的人最熟悉的,如果你一上电就读就完了,他们用一天就可以破解出来。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-6-1 09:08

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表