搜索
bottom↓
回复: 22

开贴说一说DTU产品如何通过技术保证我们的合法利益,仅思路,没细节算法。

[复制链接]

出1070入962汤圆

发表于 2011-7-15 10:26:49 | 显示全部楼层 |阅读模式
之前一直没有公开过类似的思路,这个帖子是有感而发的,希望有的人看到了也能有感一下啊。

论坛上很多朋友都探讨过产品防止别人破_解仿制的问题,虽然我谈的这个思路目的不是为了防止被破_解,但是好像一样可以对抗破_解的。

所有这些思路的前提有两点:1.产品具备通信功能,2.产品具备自己的MCU,有一定的运算能力。

恰好DTU都具备了。

GSM设备里边有个码,叫国际移动设备识别码,缩写是IMEI,理论上是全球唯一的,当然山寨机厂商可能不会这样,全部手机都用一个码,导致在邻国的市场出

过一些问题。不过这并不是我们所关注的,至少现在华为的,或者说我看到过的工业GSM模块,都是具备唯一IMEI码的。

当我们的DTU里边软件运行时,首先就会读取这个码,然后放着备用。DTU刚刚出厂时,是灌入了统一的零售版本固件代码。那么有人会提问,如果生产线

上的人,有你的PCB图,有你的BOM清单,有你的固件以及下载工具,他不会自己出去卖吗?华为的模块遍地都是,价格透明,他自己去装个模块开卖了。

为防止类似情况,当然也可以防止拖欠货款啦。我们在工厂灌入的代码,一旦运行起来,是能够知道自己属于未正式交付状态的,如何实现,办法太多了,

DTU里边的MCU可以到处做手脚,EEPROM啦,具备ASP功能的MCU还能直接对自身代码进行手术。当然,不是说这样的代码就不会正常运转,DTU出厂后,我们

自己安装的每个GSM模块,都会将其IMEI码输入数据库,然后让DTU运行,DTU会在自己认为适当的时候,去访问我们位于网络上的数据库,查询这个他启动时

读到的IMEI码,如果数据库中有这个码,那么DTU就会将自己标识为已交付状态,然后就不再访问数据库了,DTU就可以给用户交货了。当然,这时如果更换GSM

模块,固件自然会发现,再次回到未交付状态。通信过程是加密的,什么算法?AES128位密钥,详细的就不说了,AES算法本论坛有大把的源代码。

思路说完了,这不就是那个啥,微软的操作系统认证的思路,教育部电子学历证书认证的思路啊,还搞这么长篇大论的。 但是精彩的在后边啊,如果工厂的

人拿了我们的DTU自己装模块出去卖,会有什么后果呢?

大家猜猜,我抽根烟先...

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

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2011-7-15 10:37:49 | 显示全部楼层
反正有通信,在程序中让GSM模块访问你的服务器进行定期报告,数据库记录之。
你那边可以看到哪些向你报告了,再与你的出库清单对比,直接手动远程KILL掉。

万一搞出人命不好,就搞初始化不通过。

-------
改错字:GPS模拟--》GSM模块

出1070入962汤圆

 楼主| 发表于 2011-7-15 12:04:18 | 显示全部楼层
回复【1楼】fsclub  绿林好汉
反正有通信,在程序中让gps模拟访问你的服务器进行定期报告,数据库记录之。
你那边可以看到哪些向你报告了,再与你的出库清单对比,直接手动远程kill掉。
万一搞出一命不好,就搞初始化不通过。
-----------------------------------------------------------------------
大胡子好人啊,还考虑不合法用户的利益,要求初始化时不通过,而不是干着干着直接over了。

我承认,我没大胡子这么厚道哦。

出1070入962汤圆

 楼主| 发表于 2011-7-15 16:07:19 | 显示全部楼层
顶上去!


现在我们的做法是,没有查询到数据库中有IMEI码的DTU不会罢工,一切正常。但是他内部知道是未正式交付版本。

在初期的N个月中,DTU一直会正常工作的,并且试图去数据库中找到匹配的IMEI码。但是N个月后,如果还没有能转为

正式交付版本,DTU就会有所动作了。目前可以明确说出来的是,不会罢工,不会over,不会输出提示信息,仅仅在

数据传输比较忙的时候,偷偷丢弃某个数据包,概率也不高,不超过20%。或者在传输的数据中间,随机修改某个字节,

这个概率更低,不会超过10%。并且这些概率,和DTU未正式交付持续使用时间t有个函数关系,呈缓慢上升。

出0入0汤圆

发表于 2011-7-15 16:14:17 | 显示全部楼层
回复【3楼】Appcat 苹果猫
顶上去!
现在我们的做法是,没有查询到数据库中有imei码的dtu不会罢工,一切正常。但是他内部知道是未正式交付版本。
在初期的n个月中,dtu一直会正常工作的,并且试图去数据库中找到匹配的imei码。但是n个月后,如果还没有能转为
正式交付版本,dtu就会有所动作了。目前可以明确说出来的是,不会罢工,不会over,不会输出提示信息,仅仅在
数据传输比较忙的时候,偷偷丢弃某个数据包,概率也不高,不超过20%。或者在传输的数据中间,随机修改某个字节,
这个概率更低,不会超过10%。并且这些概率,和dtu未正式交付持续使用时间t有个函数关系,呈缓慢上升。
-----------------------------------------------------------------------

这种故障不可复现,太黑了你。。。。
但维护一个数据库也不简单,工业要求啊,7X24啊。
GOOGLE服务器估计都难做到。。。

出1070入962汤圆

 楼主| 发表于 2011-7-15 16:15:25 | 显示全部楼层
这个思路应对破_解的原理也很简单,即使用户是合法获得的DTU,然后100%取得了BIN文件,他总不可能再去获得一个IMEI码完全相同的GSM模块。

出0入0汤圆

发表于 2011-7-15 16:16:44 | 显示全部楼层
回复【5楼】Appcat 苹果猫
这个思路应对破_解的原理也很简单,即使用户是合法获得的dtu,然后100%取得了bin文件,他总不可能再去获得一个imei码完全相同的gsm模块。
-----------------------------------------------------------------------

其实好多手机都可以改IMEI,我原来把我的西门子手机IMEI改成全是888888888888888888888888.......
不知道工业模块有没有这种做法?

出1070入962汤圆

 楼主| 发表于 2011-7-15 16:20:00 | 显示全部楼层
回复【4楼】fsclub  绿林好汉
回复【3楼】appcat 苹果猫
顶上去!
现在我们的做法是,没有查询到数据库中有imei码的dtu不会罢工,一切正常。但是他内部知道是未正式交付版本。
在初期的n个月中,dtu一直会正常工作的,并且试图去数据库中找到匹配的imei码。但是n个月后,如果还没有能转为
正式交付版本,dtu就会有所动作了。目前可以明确说出来的是,不会罢工,不会over,不会输出提示信息,仅仅在
数据传输比较忙的时候,偷偷丢弃某个数据包,概率也不高,不超过20%。或者在传输的数据中间,随机修改某个字节,
这个概率更低,不会超过10%。并且这些概率,和dtu未正式交付持续使用时间t有个函数关系,呈缓慢上升。
-----------------------------------------------------------------------
这种故障不可复现,太黑了你。。。。
但维护一个数据库也......
-----------------------------------------------------------------------

这里有个关键点,DTU正常出货前,我们都是在内部完成了交付版本生成的,所以用户拿到的DTU其实是没有上述问题的。当然还没有付清全款的除外。

数据库维护着比较方便的,因为访问量很小。现在的技术,还是很容易保证,google不正常那是因为有墙的因素。而且有N个月的时间
来访问数据库的.

出0入0汤圆

发表于 2011-7-15 16:24:30 | 显示全部楼层
请问如果是专网卡 怎么能够访问你的数据库进行注_册?

出1070入962汤圆

 楼主| 发表于 2011-7-15 16:26:24 | 显示全部楼层
回复【8楼】avr_c  
请问如果是专网卡 怎么能够访问你的数据库进行注_册?
-----------------------------------------------------------------------

我说了,只要是DTU的合法用户,他们拿到的产品就不需要再访问数据库了。所以不会存在专网卡的问题的。

出1070入962汤圆

 楼主| 发表于 2011-7-15 16:28:47 | 显示全部楼层
回复【6楼】fsclub  绿林好汉
回复【5楼】appcat 苹果猫
这个思路应对破_解的原理也很简单,即使用户是合法获得的dtu,然后100%取得了bin文件,他总不可能再去获得一个imei码完全相同的gsm模块。
-----------------------------------------------------------------------
其实好多手机都可以改imei,我原来把我的西门子手机imei改成全是888888888888888888888888.......
不知道工业模块有没有这种做法?
-----------------------------------------------------------------------

大胡子V5,啥都能玩出花样来啊。不过华为的产品,目前还真没发现可以修改IMEI的

出0入0汤圆

发表于 2011-7-15 17:31:56 | 显示全部楼层
回复【10楼】Appcat  苹果猫

不过华为的产品,目前还真没发现可以修改IMEI的
-----------------------------------------------------------------------

应该可以改,只不过不知道,否则厂家怎么写IMEI?

出0入0汤圆

发表于 2011-7-15 18:26:21 | 显示全部楼层
想问下,DTU的出货量很大么? 对市场不熟啊

出0入0汤圆

发表于 2011-7-15 20:03:05 | 显示全部楼层
DTU的技术很复杂么?

出0入0汤圆

发表于 2011-7-16 12:25:56 | 显示全部楼层
"如果数据库中有这个码,那么DTU就会将自己标识为已交付状态,然后就不再访问数据库了,DTU就可以给用户交货了。"如果购买一个已经交付状态的设备,用其上的GSM模块先激活后续烧写的程序,因为访问数据库不是很频繁,时间成本高,但是这个方法绕过了你的验证系统,你的系统应该还需要有验证次数的限制

出0入0汤圆

发表于 2011-7-16 20:04:14 | 显示全部楼层
偶采用了模块自带的特点:全集成单芯片方案(软件内嵌到模块中),防盗版这个要比普通的模块+外置MCU的好太多

首先,不对授权商和生产商提供目标执行文件,只向他们提供预安装Loader执行文件
然后通过这个Loader向激活服务器提交激活信息,CPUID,IMEI和客户识别码,服务器认证通过后,返回最终执行文件和激活信息
(与Windows的激活原理差不多)

整个过程都在模块内部完成,除非监视空中的GPRS数据报文,无法通过常规的手段获取通讯数据
而且模块内置的Bootloader对固件(目标程序)进行认证,类似手机采用的那种算法,就目前除了厂家,没人可以破_解Bootloader,无法读取获得执行文件(类似AVR的熔丝位保护)
执行程序则对CPUID和IMEI进行数字证书认证,就算打开芯片,破_解获得执行文件,还得破_解内部的算法

基本上目前没多少人在嵌入式系统使用数字证书的,为了安全,我用了,非对称加密,安全性是目前较为理想的

ps:8位机就没办法使用数字证书,因为RAM太小了,ARM就毫无压力了

出0入0汤圆

发表于 2011-7-17 20:58:28 | 显示全部楼层
如果能改IMEI,改成正常授权的是不是就没办法了?最近也在考虑STM32的加密,打算用其唯一的ID标识

出0入0汤圆

发表于 2011-7-18 10:28:01 | 显示全部楼层
回复【3楼】Appcat  苹果猫
顶上去!
现在我们的做法是,没有查询到数据库中有imei码的dtu不会罢工,一切正常。但是他内部知道是未正式交付版本。
在初期的n个月中,dtu一直会正常工作的,并且试图去数据库中找到匹配的imei码。但是n个月后,如果还没有能转为
正式交付版本,dtu就会有所动作了。目前可以明确说出来的是,不会罢工,不会over,不会输出提示信息,仅仅在
数据传输比较忙的时候,偷偷丢弃某个数据包,概率也不高,不超过20%。或者在传输的数据中间,随机修改某个字节,
这个概率更低,不会超过10%。并且这些概率,和dtu未正式交付持续使用时间t有个函数关系,呈缓慢上升。
-----------------------------------------------------------------------

这样有损信誉啊,可以在上传数据中直接插入提示信息,类似于windows的黑屏

出1070入962汤圆

 楼主| 发表于 2011-7-18 10:32:02 | 显示全部楼层
回复【14楼】little Monkey  
"如果数据库中有这个码,那么dtu就会将自己标识为已交付状态,然后就不再访问数据库了,dtu就可以给用户交货了。"如果购买一个已经交付状态的设备,用其上的gsm模块先激活后续烧写的程序,因为访问数据库不是很频繁,时间成本高,但是这个方法绕过了你的验证系统,你的系统应该还需要有验证次数的限制
-----------------------------------------------------------------------
谢谢提醒!

不过当激活后的DTU固件遇到新的GSM模块后,因为IMEI不一致,所以还是会退回未正式交付状态的。

出1070入962汤圆

 楼主| 发表于 2011-7-18 10:35:07 | 显示全部楼层
回复【15楼】lysoft  
偶采用了模块自带的特点:全集成单芯片方案(软件内嵌到模块中),防盗版这个要比普通的模块+外置mcu的好太多
首先,不对授权商和生产商提供目标执行文件,只向他们提供预安装loader执行文件
然后通过这个loader向激活服务器提交激活信息,cpuid,imei和客户识别码,服务器认证通过后,返回最终执行文件和激活信息
(与windows的激活原理差不多)
整个过程都在模块内部完成,除非监视空中的gprs数据报文,无法通过常规的手段获取通讯数据
而且模块内置的bootloader对固件(目标程序)进行认证,类似手机采用的那种算法,就目前除了厂家,没人可以破_解bootloader,无法读取获得执行文件(类似avr的熔丝位保护)
执行程序则对cpuid和imei进行数字证书认证,就算打开芯片,破_解获得执行文件,还得破_解内部的算法
基本上目前没多少人在嵌入式系统使用数字证书的,为了安全,我用......
-----------------------------------------------------------------------

好久没见你老兄露头了,哈哈,想你啦...

你的思路正在学习消化中,我觉得加密安全措施也要评估它的实现代价。不过我这个思路主要是防止工厂未授权的私自销售和拖欠货款的。

出0入0汤圆

发表于 2012-11-5 11:15:33 | 显示全部楼层

出0入0汤圆

发表于 2012-11-7 22:27:33 | 显示全部楼层
Appcat 发表于 2011-7-15 16:28
回复【6楼】fsclub  绿林好汉
回复【5楼】appcat 苹果猫
这个思路应对破_解的原理也很简单,即使用户是合法 ...

有工程指令可以修改IMEI号,GU900D的模块也可以修改,其实最保险的做法是硬件的识别ID,这个用户改不了,即使厂家也没法改。GU900D有个指令,你可以读取到和模块硬件芯片的唯一识别号,你用这个识别号来替换你的哪个IMEI机制,相信没有人能动你的DTU的主意。

出0入0汤圆

发表于 2012-11-7 22:29:00 | 显示全部楼层
linghu2 发表于 2011-7-15 17:31
回复【10楼】Appcat  苹果猫

不过华为的产品,目前还真没发现可以修改IMEI的

改IMEI号的办法很多的,AT指令、还有射频综测软件等,这个IMEI一般是在工厂就写入,不是什么秘密。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-7-23 15:22

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

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