西门子博途PLC程序加密的一种方法(密钥授权管理程序)

原创 流浪枭雄 壶琰棠引文:博途工控人平时在哪里技术交流博途工控人社群

      前段时间有客户跟我说,他们客户到期没有打款,所以想在PLC中开发一套授权管理程序,这样可以根据实际情况,给予客户不同的授权;

探讨:

PLC怎么实现程序授权管理!

       对于国内工程师而言,类似问题曾经或者未来可能碰到,也许公司在开发程序阶段没有考虑该问题,所以很多时候都是在现场做一个类似的定时程序,比如时间到某年某月,输出一个信号停止设备的运行,或者等等类似的方法;

       也有工程师曾经见过国外公司一言不合就拔钥匙走人,然后设备根本开不起来,更别说运行。

      

       其实,收到这种命题作文一样的任务,首先想到的肯定是一个最简单的方法:类似定时处理,在程序中编写定时程序,到某个日期然后断开设备的运行;

       但这可能存在几个问题(一)程序不是太复杂,客户稍微倒腾一下可能就破解了(二)程序倒腾的太复杂了的话,基于保密原则(总不能告诉客户怎么解锁),解锁的时候还得跑到客户现场(三)国内公司文档工作一般都太差,太复杂了自己公司员工因为流动性会造成自己员工的困惑,说不定后续工程师会自己重新编写一套程序;

      

       所以基于以上考虑,我在设计该部分程序的时候基于(一)程序标准化原则,不管那个公司都可以应用(二)规则不能太简单,不能让客户一猜就能猜到(三)解锁过程做成类似软件一样,给一个授权密钥,该密钥里面包含了一些详细具体的信息;这样,公司在管理该部分程序的时候更简便,同时由于授权密钥的多样性,对于公司的管理来说更具有灵活性;

正文

一、       概览

       当程序密钥过期(默认密钥无效)以后,程序中随机生成了4组4位整数,该组整数为最新License的种子数,将其称之为请求码(Require Code);

       收到请求码(Require Code)后,根据不同情况选择不同有效期的密钥类型(LicenseType)后,根据一定规律生成的5组不同的4位整数;

       新生成的5组不同的4位整数就是最新密钥,将该密钥输入到程序中,程序就会根据密钥中的有效期长度时间运行;

二、       随机数

根据上述描述,密钥首先得生成一组随机数。随机数的产生,现在用得较多的是“线性同余法"就是下面这个式子:

                     R(n+1)= [R(n) * a + b]  MOD c
   为使随机数分布尽量均匀,a、b 均为质数, c 一般取值域内的最大值(mod 是求余数)。   从这个式了可以看出,每次产生的随机数都跟上一次产生的数有关系,那么,第一个数是怎么来的呢?这就是线性同余法中必须用的”种子",也就是说,给定某个种子后,所产生的随机数序列是固定的,在编程中,一般使用系统时间来初始化种子,因为每次运行程序的时间肯定不一样,所以产生散列肯定也不一样,从而达到“随机”的目的。PLC程序中就是密钥过期瞬间的时间作为初始化种子的数据。

为了避免PLC中的数据溢出,所以将c的值取为10000,这样每一次产生的随机数为一个4位(小于4位的话前面需要补0)数。

同时,为了让R(n+1)的值也是一直变化的,在程序中a的值也取为一个变化的整数,比如当前年份。

最终程序中确定的a,b,c 的值分别为 a=当前年份, b=1, c=10000。

程序中的密钥包括4组,得到第一个密钥以后,按照一定的规则得到第2-第4个密钥的种子数,如此4个种子数即可得到。

   

图片

                       Figure1:随机数生成请求码程序图示

上图可以看到程序中的4组不同的种子数,通过如此多的变换和组数,这样不断组合之后被破解的难度会得到指数级的增长。

三、   新密钥

得到请求码(RequireCode)后,基于请求码为种子数,再将请求码套入上述公式中,同时a,b,c 的值可以取跟随机数一样的,也可以为了提高破解难度将a,b,c 的值取为不同的值,这样就得到正确密钥的数据。

程序中将收到的数据跟上述规则计算出的新密钥相比较,若相同则意味着密钥是有效的,就可以将程序解锁。

图片

Figure2:新密钥程序图示

四、   密钥有效期

给定的新密钥中需要包含密钥的有效期,否则新密钥输入后不知道可以运行多长时间。目前程序中设置的密钥类型包括6种(一)无限制期限(二)5年期限(三)3年期限(四)1年期限(五)一个季度期限(六)一个月期限;在程序中用一个Int数据来表示当前密钥的类型,与上述6种类型分别一一对应的数值为1-6;

同样,为了将密钥有效期的破解难度增加,也将密钥有效期做一定的规则运算。目前程序中密钥有效期的运算规则为

密钥有效期 = [a* b*密钥类型数值] MOD 10000

程序中的a,b取值为当前年份和当前月份,如此6个不同密钥有效期的最新数据也会一月更新一次,增加破解难度。当然,也可以定义其他更复杂的规则,这样破解难度会成倍增加。

图片

Figure3:密钥有效期程序图示

五、       程序逻辑

当程序的密钥过期以后,程序中将会生成一组4个整数的请求码,这四个请求码可以显示在上位机(HMI)上,如下图所示。

图片

Figure4:上位机请求码

同时画面中有5个文本框用于输入新的密钥,如下图所示。其中第一个框用于输入密钥类型,其他4个框为与Figure4中对应的4组新的解码新密钥。

图片

Figure5:上位机新密钥输入

同时在程序中还需要涉及到以下方面的内容管理:

Ø 日期数据:每一种的密钥有效期不同,在程序中先读取当前时间并根据算法解析出当前年份、当前月份、每一个日脉冲等信号,用于后续程序处理。

图片

Figure6:日期结构体数据

Ø 密钥有效期管理:不同密钥有不同时间长度,在程序中将不同密钥的时间长度保存在一个Int数据中,每当一个自然日的脉冲信号后就将该日期减去1,直到该数值为0的时候即意味着需要新的请求码。

图片

Figure7:密钥剩余时间计算

六、       新密钥生成工具

根据上述描述,新密钥和请求码之间有复杂的运算关系,若在收到远程请求码后,新的密钥计算也是一个不小的过程。

所以,为了将过程简化,目前在Excel中利用VBA编写了一个窗体程序,用于生成新的密钥。

图片

Figure8:新密钥生成工具

       将上位机系统显示的请求码输入到红色框内,然后在蓝色框中选择一种密钥类型,再点击密钥运行(License Run)即可按照文档中描述的规则在绿色框内生成新的密钥(NewLicense)。然后将绿色框内的数据填入上位机系统的新密钥输入区域即可。

后记

        以上就是一个标准的密钥管理程序,在PLC中为一个单独的FB块:FB_License_Manager。

       当密钥过期后,上位机系统就会弹出一个请求新密钥画面(包含请求码),同时其他画面被锁定无法进入。这样,只有得到新的有效的密钥后,其他画面才能得到解锁;

       PLC层面,将相关的数据设置为掉电保持,当密钥过期后生成一个变量,该变量用于系统直接停止,即意味着当密钥过期后,现场设备就会有当前状态进入直接停止。当收到新的有效密钥后,所有的变量即可恢复正常。博途工控人平时在哪里技术交流博途工控人社群

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 西门子博途PLC培训PDF是一套培训材料,旨在帮助使用西门子PLC设备的人员提高其相关技能。这些培训PDF提供了关于PLC编程和操作的详细说明和示范,涵盖了从PLC基础知识到高级编程概念的全方位内容。 在西门子博途PLC培训PDF中,你可以学习如何在PLC上创建和编写程序,了解如何配置和调试硬件设备,以及掌握如何进行数据通信和网络连接。此外,这些培训材料还提供了解决常见错误和故障的方法,以及如何进行系统维护和故障排除的技巧。 通过学习西门子博途PLC培训PDF,你可以提高PLC编程和操作的技能,从而在工业自动化领域中有更多的就业机会。无论是对于初学者还是有一定经验的PLC用户,这些培训材料都能够提供实用且有价值的知识。 总之,西门子博途PLC培训PDF是一种学习和提升PLC技能的有用资源,它能够帮助用户更好地理解和应用西门子PLC设备,从而在工作中取得更好的表现。 ### 回答2: 西门子博途PLC培训PDF是一种培训资料,主要用于教授西门子公司PLC(可编程逻辑控制器)的相关知识和技能。PLC一种电子设备,常用于自动化控制系统中,以实现工业生产过程的自动化。 西门子博途是一家全球知名的工业自动化解决方案提供商,其培训资料是基于公司多年积累的经验和专业知识,帮助学习者全面了解西门子PLC产品线的特点、功能和应用。这些资料通常包括理论知识、实际案例和操作指南等,以帮助学习者掌握PLC编程的基本原理和技巧。 西门子博途PLC培训PDF的优势在于其丰富的内容和易于理解的讲解方式。学习者可以根据自己的需求和兴趣选择不同的培训资料,从入门级到高级的内容均有涉及。这些培训资料通常以电子书的形式呈现,具有便携性和可随时查阅的特点。 通过学习西门子博途PLC培训PDF,学生或从业人员可以学会如何使用西门子PLC软件进行编程和调试,掌握PLC系统的配置和调整,以及应用PLC解决工业控制问题。这不仅有助于学习者在工作中更好地应用PLC技术,提高工作效率,还可以为他们今后的职业发展提供有力支持。 总之,西门子博途PLC培训PDF是一种有效的学习和培训工具,通过系统的学习和实践,可以帮助学习者掌握PLC编程和应用的核心技能,提高他们在自动化控制领域的竞争力。 ### 回答3: 西门子博途PLC培训PDF是一种为学习和培训PLC(可编程逻辑控制器)技术的人们提供的电子文档。西门子是世界著名的工业自动化解决方案供应商之一,其PLC产品被广泛应用于各个行业。PLC一种用于自动化控制和监测的计算机硬件,它能够处理各种输入信号,并基于预设的逻辑和算法进行相应的输出控制。 博途西门子提供的一种用于PLC编程和调试的软件平台。PLC培训PDF旨在通过提供详细的培训材料和资料,帮助初学者快速掌握PLC编程的基本知识和技巧。该培训文档通常包括PLC的介绍、基本原理、硬件配置、编程指导和实例等内容。 通过学习博途PLC培训PDF,学员将能够了解PLC的基本原理和工作方式,熟悉PLC编程环境和工具,掌握常用的PLC编程语言和逻辑控制指令,能够根据实际需求进行PLC程序设计和调试。 博途PLC培训PDF的优势在于其全面而系统的资料,帮助学员快速入门和理解PLC技术。此外,学员可以根据自己的学习进度自由选择学习的内容和顺序,灵活安排学习时间和地点。另外,培训材料通常包含了大量的实例和案例,帮助学员将理论应用于实际问题的解决。 总而言之,西门子博途PLC培训PDF提供了一种方便和高效的学习方式,使学员能够系统地学习和掌握PLC技术。对于工业自动化领域从业人员和对PLC技术感兴趣的学生来说,博途PLC培训PDF是一种非常有价值的学习资源。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值