中国自动化学会专家咨询工作委员会指定宣传媒体
免费注册 登录 广告服务 | 客服中心
您现在所在的是:

PLC论坛

抖音 西门子减速电机 德嘉 台达 英威腾 泓格论坛 西门子 我和LOGO!有个约会 FLIR红外热像论坛 【有奖活动】英威腾 “Ni美国国家仪器 “PLC发展趋势大讨论”活动圆满结束 施耐德 cc-link图文征集活动 西门子SMART LINE V3
工控论坛首页 PLC论坛 → 浏览主题: 保护核心机密,PLC程序加密解密五大方法详解
发表新帖 回复该主题
回帖:19个,阅读:420 [上一页] [1] [2] [下一页]
* 帖子主题:

保护核心机密,PLC程序加密解密五大方法详解

分享到
21
杭州良石技术
文章数:4
年度积分:21
历史总积分:21
注册时间:2019/2/15
发站内信
发表于:2019/3/15 8:57:02
#0楼
大家都知道,很多品牌PLC的程序都可以通过软件解密,那么一旦解密后程序就非常透明的显示在了别人的眼中,而将设备卖给别人将PLC程序整个锁死的话又不切实际,甲方会无法维护;而保密和维权更是中国市场经久不衰的话题,其实德国的工程师从来不会给自己的程序整体加密,而是使用其他方式,既不影响发生故障时的诊断,又可以保护自己的核心机密。今天给大家介绍一下这些方式,供大家参考。


1、使用西门子安全PLC或者博途的KNOWHOW功能


西门子安全PLC作为西门子主打安全功能的一款产品,它的性能毋庸置疑,而且安全PLC的程序块加密后无法破解;可以很好的保护核心。而博途PLC作为西门子的最新产品,其版权保护也是它的主要功能之一,KNOWHOW功能是软硬件双重加密,不加密的块可以正常监控,没有密码的话甚至无法下载到其他PLC;因此使用博途的KNOWHOW功能既可以将程序交给甲方方便维护,又可以保护自己的核心程序不被窃取。



2、采用高级语言编写部分重要的工艺程序


西门子除了最基础的LAD梯形图编程,FBD功能块编程和STL语句表编程还有很多其他的方式,比如说PCS7的CFC,SFC; 除此之外还有SCL,S7-GRAPH等等。对于这些语言,一般的工控人员很难全部精通,因此仿制难度大大提升,因此非常关键的工艺程序可以由这些语言编写,也可以很好的保护自己的核心。


(1)编程方式的采用


a)采用模块化的程序结构,采用符号名,参数化来编写子程序块;


b)尽量采用背景数据块和多重背景的数据传递方式;


c)多采用间接寻址的编程方式;


d)复杂系统的控制程序尤其是一些带有顺序控制或配方控制的程序,可以考虑采用数据编程的方式,即通过数据的变化来改变系统的控制逻辑或控制顺序。


用户应该尽量采用以上几种高级层次的编程方式,这样编出来的程序中嵌入系统的保护加密程序,才不容易被发现而仿制。



(2)主动保护方法



a)利用系统的时钟;


b)利用程序卡或者CPU的ID号和序列号;


c)利用EEPROM的反写入功能,及一些需要设置的内存保持功能;


d)利用系统提供的累时器功能;


e)在用户程序的数据块中设置密码;


f)软件上设置逻辑陷阱;


g)可以反向利用自己在编程时犯的错误。



(3)被动保护方法


a)在内存容量利用许可的条件下,不要删除被认为是无用的程序;


b)在数据块里留下开发者的标识,以便于将来遭到侵权时可以取证。



(4)应用反窃取技术的注意事项


a)在用户程序中嵌入保护程序要显得自然一些,不能很突兀的加出一段程序来,代码要尽量精简,变量符号名应与被嵌入程序段的变量保持一致;


b)往往一种保护加密手段是不够的,应该多种方法并用,并且这些保护程序一旦激活后对系统造成的后果也应该尽量不同,造成所谓的“地雷效应”,从而增加程序被窃取的难度,时间与成本,短时间内让抄袭者束手无策;


c)保护好程序的原代码,如果需要交付程序的,在不影响用户对设备维护的前提下,应对交付的程序做适当的技术处理,如删除部分符号名,采用上载的程序或数据块;


d)做好严格的测试,以避免保护程序的不完善引起的误动作而带来的不必要的麻烦,同时也能降低售后服务的的费用。



3、使用通讯功能


在实际应用中,往往会遇到一些系统间需要数据交换的问题(多个PLC之间,PLC与第三方仪表之间),无论是西门子产品之间还是西门子产品与第三方产品之间,建议使用通讯的方案来代替模拟量或开关量之间的信号互连的方案。对于前者,仿制者只能看见一条硬件的通讯线,至于有多少数据是如何通过通讯交换的,仿制者必须要花精力研究具体的用户程序才能搞清楚;而对于后者,开发者是省心省力了,仿制者也是一目了然,尽收眼底。


对于一些变频器或者伺服电机等的程序设计,一般有多种方式,可以线路直接控制还可以通讯控制,那么使用通讯的方式的话会使得程序增加了仿制的难度,比如说PLC对于伺服驱动器的控制有多种,简单一些的可以是脉冲直接控制或者模拟量控制,这种方式就容易仿制,如果换成通讯控制,则会使得程序复杂很多,加上仿制者如果对报文不熟悉,很难去仿制。


有时候控制系统会由多个子控制系统构成,由此形成多CPU加人机界面的网络,西门子S7-200产品常见的是PPI网络,S7-300400产品常见的是MPI网络,通常是人机界面与CPU之间的数据交换,而我们也可在CPU的用户程序中添加一些无须组态的S7基本通讯功能(S7-200可用NETRNETW指令,S7-300400可以用X_PUTX_GET指令),定时或不定时地在CPU之间进行少量数据交换,通过这些数据实现子系统控制逻辑的互锁。对于这样的系统,仿制者要分析某一子系统的程序也不是件十分容易事情。



4 、用面板类型的人机界面


尽量在自动化系统中使用面板类型的人机界面来代替单一的按钮指示灯,很多人机界面没有源程序的话只有备份和恢复功能,完全可以实现维护功能还保密了HMI这一层的程序,而对于一个PLC系统而言,即使拥有了源程序但是缺失了HMI部分的标记也是很难仿制的。


而且开发者可以在面板的画面上加上明显的厂家标识和联系方式等信息,仿制者就不能原样照抄。


如果就使得如果仿制者想要复制程序的话,就必须重新编写操作面板的程序甚至于PLC的程序,而开发者则可利用面板和PLC数据接口的一些特殊功能区(如西门子面板的区域指针,或VB脚本)来控制PLC的程序执行。这样的PLC程序在没有HMI源程序的情况下只能靠猜测和在线监视来获取PLC内部变量的变化逻辑,费时费力,极大的增加了仿制抄袭的难度。



5、采用非标准的人机界面


德国工程师都愿意使用这种方式。

在中国,大多数工程师都愿意使用WINCC,INTOUCH或者组态王等等,但其实除了这些软件,还有一种更加高大上的编写方式,那就是利用VB自己写程序,而对于软件与PLC的接口,大家可以选择LIBNODAVE或者其他库等,这种方式写出来的人机界面有着很多好处,首先没有版权问题,因为VB软件是免费的,而且对于WINDOW系统的升级来说只需要简单的添加几个文件即可实现,不像WINCC那样,如果window升级了,需要大量修改文件。一般人都无法修改,更别提仿制了;没有很好的计算机编程功底的话就不敢轻易修改,而仅仅有计算机功底又没有PLC或者工艺基础的话也是无法更改的。作者曾经利用S7-300做过这么一套系统,但我的目的不是保密,而是甲方要求,坐出来的系统完全按照自己的风格,很是舒服。


最后,告诫大家一下,不要过分消费中国工业市场的诚信,合理的利用PLC技术达到保护核心机密,而不是过分利用它达到其他目的。中国工业市场的诚信问题需要所有人的努力才有机会改善。
[此贴子已经被jint于2019/3/16 13:41:18编辑过]
2214
蜀中之首
文章数:1423
年度积分:697
历史总积分:2214
注册时间:2018/5/27
发站内信
发表于:2019/3/15 9:21:53
#1楼
有一个很现实的问题,笔者如何破解
CPU坏了,需要换新的,使用者没程序备份,设计者找不到,设备厂倒闭....
11524
jinqiaoma
文章数:3771
年度积分:669
历史总积分:11524
注册时间:2009/5/15
发站内信
2018论坛热心网友
发表于:2019/3/15 9:29:59
#2楼
既然挖空心思搞加密就要把程序做好,少出问题,外围问题用户不需要去读取程序,通过报警信息就很容易找到原因。
像我们现在的控制系统,动不动就出故障,厂家的编程人员自己都搞不清问题出在哪里,不是推给环境温度就是说震动,而我们是真正的空调机房,并且独立于低压、高压柜室,PLC问题最后都是靠重启解决,从来没找到过原因。
[此贴子已经被作者于2019/3/15 10:15:59编辑过]
21417
wenquan753
文章数:13671
年度积分:687
历史总积分:21417
注册时间:2006/10/18
发站内信
2018论坛解答高手
发表于:2019/3/15 10:03:41
#3楼
有些问题是无法避免的
这个还得从制度或者说人的素质做起
不管什么方式都欧式一把双刃剑!
9037
pqsh 版主
文章数:3652
年度积分:898
历史总积分:9037
注册时间:2006/8/22
发站内信
2018论坛解答高手
发表于:2019/3/15 15:26:08
#4楼
以下是引用wenquan7532019/3/15 10:03:41的发言:
有些问题是无法避免的
这个还得从制度或者说人的素质做起
不管什么方式都欧式一把双刃剑!
我也赞成一半,不赞成的是人的素质,这个肯定是不定因素,只有制度规则是有效的公正的.
PLC程序有没有必要加密,是不是核心机密?我觉得这只对自己生产设备的厂家来说是机密.
但反过来,别人仿制你的设备,基本工艺是明白的,程序是最简单的事情.
对于咱们工控人来说,plc加密根本没必要,最多是防止别人直接拿来用.至于机密,根本不是工控人的事.plc程序90%功劳属于工艺设计人员,工控人员作为码农,编个机器运行的代码,也没有计算机软件代码那么多.
如果plc程序需要加密,那plc程序就会发展到不提供源码不提供上装或只能上装编译后的乱码.
我一般觉得自己就是个打工的,保密真的到不了一个工控人的责任上.除非自己当老板自己开发设备,这在中国也是分分钟被抄袭的事,麻花疼就善于这样.哪天你做个plc程序,能告别人抄袭,或者能让别人收购你,那才是制度对咱们劳动(要区别劳动和创造)的保护.
如果我忘了我
请帮忙记得我
pqsh@163,326199298@
12277
liuhuoaaa
文章数:7647
年度积分:545
历史总积分:12277
注册时间:2007/6/11
发站内信
发表于:2019/3/15 16:08:50
#5楼
优先选择保护性好一些的PLC,有些功能块还是要加密的!
3590
1372216725
文章数:205
年度积分:293
历史总积分:3590
注册时间:2016/1/23
发站内信
发表于:2019/3/15 17:44:26
#6楼
感觉真的没太大的必要  去研究plc程序加密    除非你程序当中有特别优秀的算化     像一般生产类设备    竞争对手能抄袭成功你的机械部分   电控部分花点时间   我觉得不用抄袭自己还是能做出来的
此帖发自论坛APP
6400
蛇会大学
文章数:2786
年度积分:533
历史总积分:6400
注册时间:2015/12/14
发站内信
2018论坛分享达人
发表于:2019/3/15 20:19:07
#7楼
这么复杂还是不加密了,不好调试
敏问找算丁亏楼累
敏问找算哭哲累嘿
敏问够算恐哈做累揍忍没催妹
比漏累伤醒更八音舍黑
我晕能以身问晕陪笨累
10666
fsjnzhouyan
文章数:3403
年度积分:538
历史总积分:10666
注册时间:2008/7/22
发站内信
发表于:2019/3/15 20:33:59
#8楼
尽可能选择新型号的。
摸着石头过河,走自己的路吧!
11494
goldage
文章数:6611
年度积分:929
历史总积分:11494
注册时间:2006/1/10
发站内信
2018论坛热心网友
发表于:2019/3/15 21:22:49
#9楼
就事论事,我是反对程序加密的,现在对于系统不稳定的,工人反感意见大的,系统不是非常大的,我是直接重做,毕竟后期的维护是我自己来
工控学堂推荐视频:

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 中华工控网 Copyright©2019 Gkong.com, All Rights Reserved

109.2