当前位置: 首页 > news >正文

物联网-物联前端安全加密技术简介

        物联网整体的数据安全机制设计一般是由云平台及数据处理时通盘考虑,而物联网前端的数据加密技术,主要由数据采集通信的信息加密、前端设备安全的硬件加密、软件加密三大类别。

        通常,真实数据信息为明文,对其施加变化的过程就是加密,加密后输出的数据就是密文数据。反之,将密文恢复到明文的过程就是解密。用于完成加密和解密的算法就是加密方法,加、解密过程涉及的参数就是密钥。非法使用者试图从密文中分析出明文的复杂度决定了数据安全度,因此信息解密的重点就在算法上,目前众多加密方法都是依据算法来区分的。

一、信息加密

【1】DES(Data Encryption Standard)算法-对称加密算法

        DES算法将要加密的明文分组,每组64bits,采用64bits的密钥,循环移位16次得到16个子密钥(实际用到了56位,第8、16、24、32、40、48、56、64位是校验位, 使得每个密钥都有奇数个1)。DES算法的入口参数有三个:Key、Data、Mode。其中Key为7个字节共56位,是DES算法的工作密钥;Data为8个字节64位,是要被加密或被解密的数据;Mode为DES的工作方式,有两种:加密或解密。DES解密的特点是明文和密文等长,每次对8bits加密,解密和加密互逆。        

        3DES(即Triple DES)是DES向AES过渡的加密算法,它使用3条56位的密钥对数据进行三次加密。是DES的一个更安全的变形。它以DES为基本模块,通过组合分组方法设计出分组加密算法。

        AES(Advanced Encryption Standard,高级加密标准)加密算法采用的是对称分组密码体制,AES的区块长度固定为128位,密钥长度的最少支持为128。AES加密算法是美国联邦政府采用的区块加密标准,这个标准用来替代原先的DES,其特点是加密速度快。

【2】RSA加密算法-非对称加密算法

         RSA是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。RSA就是他们三人姓氏开头字母拼在一起组成的。RSAd的算法安全基础就是大整数的因数分解极为困难,因此其密钥越大越安全,通常在1024b以上。RAS是一种非对称加密算法,即加密、解密使用不同的密钥。因此通常是先生成一对RSA密钥,其中之一是保密密钥,由用户保存;另一个为公开密钥,可对外公开。

        RAS的特点是其安全性依赖于大数分解,而目前,RSA的一些变种算法已被证明等价于大数分解,需要避开使用。RSA算法的保密强度随其密钥的长度增加而增强。但是,密钥越长,其加解密所耗用的时间也越长,需要综合计算成本考虑。由于大数计算,使得RSA最快的情况也比DES慢上好几倍,无论是软件还是硬件实现。速度一直是RSA的缺陷,但安全性更优。

        DSA(Digital Signature Algorithm),其安全性与RSA相比差不多,安全性依赖于计算模数的离散对数的难度。DSA的一个重要特点是两个素数公开,这样,当使用别人的p和q时,即使不知道私钥,你也能确认它们是否是随机产生的,还是作了手脚。

        ECC(Ellipse Curve Ctyptography,椭圆加密算法),其安全性设计是利用椭圆曲线上的有理点构成Abel加法群上椭圆离散对数的计算困难性。ECC在某些情况下它比其他的方法使用更小的密钥(比如RSA加密算法)提供相当的或更高等级的安全,大概上160位的椭圆密钥与1024位的RSA密钥安全性相同。在私钥的加密解密速度上,ecc算法比RSA、DSA速度更快,另外其存储空间及贷宽要求更少。

【3】MD5(Message Digest Algorithm 5)算法-散列算法

       MD5由美国密码学家罗纳德·李维斯特(Ronald Linn Rivest)设计。 MD5算法采用散列函数实现,以512bits分组来处理输入信息,512bits又划分16个子分组,每个字分组为32bits,经过变换处理,输出4个32bits的分组,串联成128bits的加密序列(散列值)输出。

        1996年后该算法被证实存在弱点,可以被加以破解,对于需要高度安全性的数据,专家一般建议改用其他算法,如SHA-2。2004年,证实MD5算法无法防止碰撞(collision),因此不适用于安全性认证,如SSL公开密钥认证或是数字签名等用途。MD5 算法还可以作为一种电子签名的方法来使用,使用 MD5算法就可以为任何文件(不管其大小、格式、数量)产生一个独一无二的“数字指纹”,借助这个“数字指纹”,通过检查文件前后 MD5 值是否发生了改变,就可以知道源文件是否被改动。因此文件加密才是MD5大量应用场景的地方。

        SHA-1算法,将任意长度的明文分组,每组为512位,最后一组若不足512位,就补位从第一组开始,通过给定的初识缓冲区链接变量,经过80轮的运算之后,得到长度为160bit的字符串,字符串将参与下一组的运算中,以此类推,最后一组得到的160bit的字符串就是sha1加密结果。SHA-1摘要比MD5摘要长32 位,所以SHA-1对强行攻击有更大的强度,比MD5更安全,相对的速度上要慢些。

        HMAC加密算法(Hash-based Message Authentication Code)是一种基于Hash函数和密钥进行消息认证的方法,主要是利用哈希算法,以一个密钥和一个消息为输入,生成一个消息摘要作为输出,能提供消息完整性认证和信源身份认证。HMAC中的H代指Hash散列算法,HMAC可以使用多种单项散列式,例如使用SHA-1,则构成HMAC-1,选用SHA-256散列算法,则构成HMAC-256。

【4】ssl协议

        SSL(Secure Socket Layer,安全套接层)协议是网景(Netscape)公司率先采用的网络安全协议。它是在传输通信协议(TCP/IP)上实现的一种安全协议,采用公开密钥技术。SSL广泛支持各种类型的网络,同时提供三种基本的安全服务,它们都使用公开密钥技术。SSL协议可分为:

        认证,通信双方进行身份确认;

        SSL记录协议,建立在可靠的传输协议之上,完成高层协议提供的数据封装、压缩、加密等基础功能;

        SSL握手协议,建立在SSL记录协议之上,在数据实际传输前,协商加密算法、交换加密密钥等。

        SSL协议位于会话层,处于TCP/IP协议和各种应用层协议之间。因此SSL协议的优势在于它是与应用层协议独立无关的。高层的应用层协议(例如:HTTP、FTP、Telnet等等)能透明的建立于SSL协议之上。IETF将SSL作了标准化,并将其称为TLS(Transport Layer Security),TLS利用密钥算法在互联网上提供端点身份认证与通讯保密,其基础是公钥基础设施(public key infrastructure,PKI)。

   二、硬件加密

        硬件加密是在待加密的电子产品之外,附加另外的硬件电路,与待加密的电子产品通信,使得待加密的电子产品内部程序,通过数据通信来判断自己是否继续完成后续操作(或执行下面程序)。

        目前通用的硬件加密就是通过专用加密芯片或独立的处理芯片等实现密码运算,将加密芯片、专用电子钥匙、硬盘等一一对应到一起时,加密芯片把加密信息、钥匙信息、硬盘信息等对应进行加密运算,并写入到硬盘主分区表中。这些硬件绑定在一起,缺失任何一个都无法运行。用户把核心算法防盗芯片内部,其集成了各类对称或非对称算法,保障内部的密钥及信息不会被非法读取或篡改。

        目前加密芯片的主要应用做加密认证为主,建立在普通芯片基础上,采用ID号认证、密钥认证、随机数加密认证等方式进行加密,这种做法安全性较低,容易被破解,好处就是加密芯片平台安全、算法统一、应用简单。

        但从行业发展来看,后续应用方向应该是将主控处理器的程序及数据移植一部分到加密芯片中运行,造就必须有加密芯片参与主处理器才算完整,保证程序及数据的绝对安全,进而提高整体产品的安全性。实现原理为:软件中部分代码及数据经过编译,“移植”到加密芯片上内部,软件中不再拥有该部分代码及数据的副本,程序需要通过功能调用指令来运行加密芯片内部的关键代码并获得返回验证的数据结果,才能确保软件全部功能完整。

       全新的加密芯片技术, PUF(物理不可克隆功能)技术,在采用相同的原料、设计、技术和制作工艺,也无法产生两个一样的芯片。这是基于随机物理因素(不可预测和不可控制),这些因素在制造过程中自然存在和/或偶然引入,导致制造出来的芯片存在微小差异,而这些差异在一个可控范围内并非常敏感,又不影响芯片正常运作。这些随机、不可预知、不可控制的差异提取与各种算法结合,造就了动态、唯一、不可预测、无限多个的“密钥”。

三、软件加密

        软件加密就是收发信息前,先调用信息安全模块对信息进行加解密的一种软件安全保护技术。通常会有以下几种实现方案:

        【1】序列号加密

        当前很多软件在使用时,都需要有注册序列号方能使用。注册序列号的生成一般就是把用户私人信息(主要是硬件信息)提供给软件单位,该单位就会根据用户提供的信息计算出一个序列号,用户需要将这个序列号输入到软件中通过验证才能合法使用该软件,甚至软件会依据不同序列号开放不同的功能。目前大部分软件都采用这种方式实现软件合法使用保护。

        【2】时间限制

        软件内部嵌入了时间保护机制,软件在运行一段时间后自动失效,需要重新激活才能继续使用。其实就是程序内部有一个定时器在工作来统计程序的运行时间,其判断依据有两种,一种是当前时间来判断(有些软件更改系统时间就能继续使用,呵呵),一种是程序使用了多长时间或次数来判断。这种技术目前主要应用在试用版程序上。

        【3】注册文件保护

        和序列号加密保护类似,只是一注册文件形式提供,文件格式由开发单位定义,通常是包含一些不可显示字符信息的二进制文件,里面有一些加密或未加密的用户信息、注册信息、硬件信息等软件启动或运行过程中,会去调用文件的信息进行验证。

        【4】光盘保护技术

        软件在启动时判断光驱中是否存在程序需要的特定文件或信息,如果没有,拒绝运行。早年见这种技术很常见(例如以前很多人在网上搜索免光驱的某某游戏,呵呵),目前比较少见。

        【5】软件狗技术

        软件狗通常是一个安装在并口、串口等接口上的硬件电路(U盘),内部嵌套了接口及工具软件。当被软件狗保护的软件运行是时,不定时地向插在计算机的软件狗发出查询命令,软件狗及时给出响应,其正确的响应能确保软件继续运行,俗称“喂狗”。这是有效防止软件盗版行为的一种技术。

        【6】硬件捆绑技术

        软件采用与用户使用的不可更改硬件信息进行捆绑,指定软件只能在某设备上运行,不能被拷贝到安装到其他硬件设备上一种技术保护手段。首先用户注册信息、硬件信息提供到软件方,进行特定生成不可逆的加密信息,软件启动时。读取硬件信息及相关信息,通过内部算法计算出加密信息和预设的加密信息是否一致来确认软件是否能启动。

相关文章:

  • 怎样在LaTeX中方便输入带圆圈的数字
  • 如何在 SAP ABAP ALV 报表里以交通灯的方式显示某一列的值
  • 【C++实现】浅聊定时器的实现,最小堆配合map实现定时器
  • Spring五大类注解读取存储Bean对象
  • 数据备份管理中的分类定级:方法、标准与策略
  • 一次日常需求处理带给我的思考
  • 2022年PMP考试换大纲了,但是PMBOK还没更新,该如何准备?
  • 专业五月考自测
  • js之求最值的三种方法——Math.min()和 Math.max()、最小值array.sort()[0]、Math.min(...[v1, v2...])
  • springboot毕设项目易捷接待系统761z7(java+VUE+Mybatis+Maven+Mysql)
  • jar包,引入依赖
  • 最大似然估计(MLE)入门教程
  • 【leetcode】【2022/9/3】646. 最长数对链
  • Matlab:Matlab编程语言应用之数学计算(向量数组矩阵索引、矩阵索引四则运算、行列式与线性系统求解)的简介、案例实现之详细攻略
  • c++11 多线程支持 (std::async)
  • Google 是如何开发 Web 框架的
  • co.js - 让异步代码同步化
  • docker容器内的网络抓包
  • electron原来这么简单----打包你的react、VUE桌面应用程序
  • GitUp, 你不可错过的秀外慧中的git工具
  • Java多线程(4):使用线程池执行定时任务
  • js正则,这点儿就够用了
  • Solarized Scheme
  • sublime配置文件
  • Vue--数据传输
  • XML已死 ?
  • 工作踩坑系列——https访问遇到“已阻止载入混合活动内容”
  • 看图轻松理解数据结构与算法系列(基于数组的栈)
  • 理解IaaS, PaaS, SaaS等云模型 (Cloud Models)
  • 爬虫进阶 -- 神级程序员:让你的爬虫就像人类的用户行为!
  • 前端代码风格自动化系列(二)之Commitlint
  • 前端每日实战:61# 视频演示如何用纯 CSS 创作一只咖啡壶
  • 前端面试题总结
  • 提升用户体验的利器——使用Vue-Occupy实现占位效果
  • 微信开源mars源码分析1—上层samples分析
  • 为物联网而生:高性能时间序列数据库HiTSDB商业化首发!
  • linux 淘宝开源监控工具tsar
  • 如何在 Intellij IDEA 更高效地将应用部署到容器服务 Kubernetes ...
  • ​​​​​​​​​​​​​​汽车网络信息安全分析方法论
  • ​3ds Max插件CG MAGIC图形板块为您提升线条效率!
  • ​Linux·i2c驱动架构​
  • # 数据结构
  • (09)Hive——CTE 公共表达式
  • (iPhone/iPad开发)在UIWebView中自定义菜单栏
  • (附源码)计算机毕业设计ssm基于Internet快递柜管理系统
  • (九)c52学习之旅-定时器
  • (免费领源码)python#django#mysql校园校园宿舍管理系统84831-计算机毕业设计项目选题推荐
  • (亲测有效)解决windows11无法使用1500000波特率的问题
  • (四)c52学习之旅-流水LED灯
  • (正则)提取页面里的img标签
  • (转)fock函数详解
  • **PHP分步表单提交思路(分页表单提交)
  • .halo勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET Compact Framework 多线程环境下的UI异步刷新
  • .NET CORE Aws S3 使用