复制保护,知识保护和部署问题


10

在使用Raspberry Pi 2 Model B v1.1。一段时间后,我有以下担忧?

  1. 我知道它的重点是增强脆弱的教育部门,但是有可能出售基于RPi?的产品。用它赚钱?成为亿万富翁吗?
  2. 我应该如何保护开发,比如说,我不希望有人拿走我的RPi SD卡,复制它并拥有自己的副本?我当前的替代方法是用强力胶:)填充SDCard端口。另一个选择可能是使RPi 在线ping许可证服务器,这当然需要WiFi连接。或硬件哈希ID(我猜这应该是一个更好的答案...)
  3. 我已经检查了是否存在通过安装SD卡来恢复安装的机制,即使您没有root用户也是如此。同样,我最好的解决方案是强力胶方法。

提前致谢。


2
这是一个一般的嵌入式Linux问题。从技术上和法律上来说这都是一个复杂的问题。
Craig

2
您好,欢迎来到RaspberryPi.SE!这是一个太多的问题。一些问题也很广泛,而不是特定于Pi的。您需要考虑到,只要付出时间和精力,就可以规避所有的版权保护系统。特别是这样,如果您的系统已部署并且您无法阻止“坏蛋”使用所有可用工具来破坏保护。
加纳马马

@craig:是否有嵌入式Linux社区?
Brethlosze 2015年

WRT#2:您不能在任何平台上从技术上防止盗版,您所能做的就是合法打击盗版。 我想你在这匹马之前有车。 当您有一个基于pi的软件项目时,您会意识到,没有与pi真正绑定的基于pi的项目。它只是一个通用设备,社区是面向开发的。
goldilocks

2
在应用程序开发方面,这不是“他们的平台”,他们知道并且不在乎。那不是“他们的目的”。它是实现ARM体系结构的Broadcom SoC。任何人都无法将pi轻松移植到各种各样的其他设备上。所以,再一次:你在马匹前面有马车。等到您对知识产权的关注具有任何意义或意义的时候,您就会明白我想对您说的话...
goldilocks

Answers:


6

如果您真的很想保护自己的知识产权,则可以将基于Rapberry Pi的应用程序与一些基于外部定制微控制器(如AVR,PIC,8051等MCU)的硬件密钥(通过USB,RXTX, I2C,SPI,1wire ...)。例如,Pi端应用程序生成一个随机数,将该随机数发送到MCU,进行解码并作为解锁密钥发送回去,以解密重要的内容。此外,您还可以直接在MCU中执行一些重要功能(您只需传递参数并从MCU中获取结果)。您可以想象,这将如何在一定程度上增加黑客的破解难度,因为他的知识必须比平常更广泛。没有完美的保护措施,但是如果您真的想挑战一下,那么这可能是一条路。


1
这是一个很好的解决方案确实是......我会尝试一下这个概念....
Brethlosze

1
不幸的是,硬件密钥的解决方案与软件密钥相同-只需删除代码中有问题的部分,构建正确的答案等即可。因此,同样的技能也可以对付硬件密钥。
tomnexus

2
如果您在硬件密钥中添加了一些重要功能,并且使其结果对于您的Pi应用程序功能至关重要,则不是这样。由于功能仅存在于微控制器中,因此在Pi侧无须删除。这不是不可能打破的,但是难度要大很多倍,因为它需要比通常的代码破解更高的技能。
2015年

1
尽管这些外部电路确实可以提供保护,但这些东西却要花很多钱:研究,原型制作,制造,测试,实施,维护。如果沿途发生什么怎么办?如果Raspberry在将来的模型中更改其界面怎么办?如果寿命短或爱好项目,那就去吧。如果是工业/商业产品,则OEM可能是一个更安全的选择。
EDP​​ 2015年

5
  1. 我认为这一直是计算模块的想法。盈利不是问题。

  2. / 4. superglue选项可能是一个不错的权衡。最终,您无法通过物理访问设备来击败攻击者。看一看游戏机,它可能已经在DRM基础架构上投入了数百万美元,但最终都掉了。换一种说法,您还可以拥抱开放性并出售产品的开发版本,并包括某种SDK。您从以技术为中心的用户组中获得的反馈可能很有价值,并且可以满足您的需求。


superglue选项可能完全是胡说八道,但是您在这里还有其他要点。; |
goldilocks

实际上,我在考虑Raspberri Pi的一些硬件ID,以便可以为每个RPi卡编程每个RPi软件,因此,如果我克隆该软件,则该系统将无法运行。旧的uProcessor只是在板上编程的,因此您不能拔出插头 :)。
Brethlosze 2015年

1
即使您具有硬件ID,其他具有物理访问权限的人也可以读取它。当然,在板上编程的处理器也提供调试接口,因此您实际上可以读取它们。在更复杂的系统中,SOC可能只会执行签名的代码。如果Broadcom芯片在该方向上具有某些功能,我不会感到惊讶,但是您没有相关文档。如果您想计划出售数百万个单位,他们可能会与您讨论;)
user1217949 2015年

大声笑..不,我想我会卖掉他们的一部分!因此,如果我有一个在Raspbian下运行的代码,其他任何人都可以拿SD卡读取它?调试吗?破解吗?我完全确定,答案当然是。最好的选择是avraHardware Key提出建议,并在其连接器内埋入SuperGlue的SD卡吗?
Brethlosze 2015年

4

虽然这种做法肯定会减少覆盖范围,但您会为企业办公室环境中台式机上粘着的USB连接器数量感到惊讶。我在这里谈论大型跨国公司。

但是现在是话题...

对于以IP保护为主要因素的商业项目,Pi最多可用于早期原型设计/概念验证。即使保护不会成为问题,但恕我直言,大规模部署Pi并不是最佳解决方案-出于多种原因,我在该论坛的上一篇文章中已经描述了许多原因。

没有安全的系统可以抵抗逆向工程/入侵/复制。任何系统都是可利用的。但是,每个系统都有一个渗透率分数。凭借其开放式方法和外部SD卡,Pi的价格非常低。定制设计经过军方批准的硬件板带有定制SoC,夹层组件和多层PCB以及定制引导程序,硬件加密将获得更高的分数。

最重要的是部署因素。您的市场越广泛,人们进入并窃取您的技术将变得越有意思。

如果硬件在整个设置中是您的阻力,而保护技术是主要因素,那么我认为Pi不是适合您的产品。如果您的硬件是销售服务的促进者,那么保护技术应该在服务器端而不是客户端上进行。

我们使用Pi出售此类服务。我们在Pi上的软件确实具有更高的保护级别,我们使用的是已编译的C应用程序,该应用程序锁定在MAC和/或CPU序列号上。但是最后,没有我们的服务器端,甚至源代码实际上也没有用。


3

您可以在树莓派内部使用带有加密密钥的背负式。市场上有几种商业设备。我为Raspberry Pi使用了此软件串行保护,效果很好。


2
这不会帮助您保护系统免受克隆的侵害-黑客会根据需要从您的二进制文件中删除对HW密钥的检查... HW密钥将仅提供一定程度的保护(也许可以停止第一级爱好)黑客)。
Kozuch 2015年

2

使其开源

认真不要尝试对其进行复制保护。使它开源。如果可能,让其他人加入您的项目。

然后收取服务费用。如果做对了,您可以赚大钱。

Red-had和其他一些公司都这样做。他们都做得很好并且正在成长。


1
不,这是一个产品,不是项目,也不是大项目,也不是非常有趣的编程项目。听起来很漂亮,但同样,没有。
Brethlosze

1
我不同意。根据我的经验,我编写的每个程序都已被客户端交付并被客户积极使用,它将获得支持电话,增强功能的请求以及错误修复。唯一没有这些软件的软件是在发货后从未使用过的软件。
MadMike'17


重点是,这是针对产品,设备的。软件中根本没有艺术,但是像任何智能控制器一样,必须保护处理变量的方式。您不打算以这种方式开源您的开发,这是不可能的,那是另一种工作。也许您在一家公司中,当客户打电话给您时,您会很生气,实际上这给您的老板更多了账单,并为您提供了售后服务,从长远来看,这是一件好事。无论如何,开源对人类有益,而不是为了牟利。
Brethlosze

1
同样,这是关于将所有工作奉献给人类的利益或将每个人的所作所为收取费用的主题讨论。
Brethlosze

1

我的几分钱:

  1. 切勿围绕可直接读取的脚本创建解决方案。
  2. 在多个软件/过程和硬件方面的细分功能。
  3. 添加一些读取硬件的“功能”依赖项。
  4. 添加智能卡读卡器,并随产品一起销售“启用”智能卡。
  5. 拥有许可证服务器
  6. 在EEPROM中有一个使用计数器!!!并且应该有一些在线“充电”的方法。;-)

...


1

作为入门级保护,可以找到一个唯一的SD卡ID /sys/block/mmcblk0/device/,典型的磁盘映像克隆软件不会在该ID下对其进行克隆。这样做的优点是不需要单独的设备来保存唯一ID,并且在超级胶水之后可以作为第二层保护很好地工作。这至少会阻止能够简单地克隆SD卡的人。

关于使用ID进行保护的另一个技巧是避免使用简单的检查,即

if(readID() != 0xDEADBEEF) exit();

这样的简单检查很容易发现(通过搜索已知ID或监视对的调用exit())并删除。更好的方法是将ID作为常量包含在计算中。也就是说,i++您将在代码中的某处而不是在代码中

i = i + readID() - 0xDEADBEEF + 1;

这将很难发现,因为确切的ID不会逐字显示在您的代码中0xDEADBEEF + 1 == 0xDEADBEF0,并且检查所有调用exit()也不会显示保护代码的位置。相反,您的代码将仅在具有错误ID的系统上崩溃,攻击者将不得不调试应用程序的逻辑以理解并解决问题。


0

使用外部组件,我的意思是安全组件可以解决该问题。如果您真的认为自己的想法很棒,并且值得为此付出额外的费用,那么我建议您使用一些专业的MCU / CPU。像Broadcom BCM58101系列一样,成本效益不高且对新用户不友好,但高安全级别也可以保护您的想法/设计。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.