A. 加密芯片的应用
传统的加密芯片,都是采用算法认证的方案,他们所鼓吹的是加密算法如何复杂,如何难以破解,却没有考虑到算法认证方案本身存在极大的安全漏洞。我们清楚的知道,单片机是一个不安全的载体,可以说对盗版商来讲,是完全透明的也不 为过,做算法认证,势必要在单片机内部提前写入密钥或密码,每次认证后给单片机一个判断标志,作为单片机执行的一个判断依据,那么盗版商就可以轻松的抓住 这一点进行攻击,模拟给出单片机一个信号,轻松绕过加密芯片,从而达到破解的目的。如果说,要破解芯片内部数据,那么通过传统的剖片、紫外光、调试端口、 能量分析等多种手段,都可以破解。 [4]
采用智能卡芯片平台的加密芯片,本身就可以有效防护这些攻击手段,将MCU中的部分代码或算法植入到加密芯片内部,在加密芯片内部来执行这些程序,使得加密芯片内部的程序代码成为整个MCU程序的一部分,从而可以达到加密 的目的,因为MCU内部的程序不完整,即便被盗版了,由于缺少关键代码,也无法进行复制,那么选择什么样的代码或程序,放入到加密芯片内部,就是考验 MCU编程者的功力了,尽可能的多植入程序,尽可能的增加算法的强度,就可以有效防止被破译的可能。
加密芯片的安全性是取决于芯片自身的安全,同时还取决于加密方案的可靠性。部分公司会给广大客户以误导,过分强调什么算法,无论采用对称算法 3DES 、AES [5] 还是采用非对称算法RSA ECC等,甚至采用国密办算法SM2 SM4等等,都是对防抄板来说,是没有太多的用处的。
对于方案设计公司,是无法使用SM1等国密办算法的,销售国密办算法的厂家必须有销售许可证,这一点是很多方案公司不可能有的,同时认证的方案本身就存在安全隐患,盗版商是不会去破解什么算法,而是从加密方案的漏洞去入手,去攻破,所以说,我们一直强调,加密方案的设计是非常重要的环节,不能简单的只看到加密芯片的自身的安全性,最重要的是密钥管理环节。
目前已知各种公开的加密算法都是比较安全的(当然已被破解的几种算法除外,如:SHA1,DES等),整个加密体系中最薄弱的环节在于密钥的生成、使用和管理。无论使用对称、非对称、哈希散列各种算法,密钥的管理是最终的难题,目前通常的方式是将私钥或者秘密信息存储在非易失性存储器中,这种方式危害极大,不具备高安全性。(具体请参考上面“安全性”内容)
由于PUF的不可克隆性、防篡改和轻量级等属性,使用PUF用于认证是一种非常有用的安全技术,是一种对现有安全加密机制的创新性技术。PUF输出的不可直接读取的唯一值作为私钥,配合非对称加密硬件引擎、随机数发生器、芯片ROM中唯一的unique ID,可以组成一个严密的安全加密装置。
PUF通常用集成电路来实现,通常用于对安全性要求较高的应用中。目前已有众多知半导体名企业开始提供基于PUF的加密IP技术和安全芯片。
B. 请问8位单片机如何实现RSA算法
放弃吧 我的老师在手机上做过 RSA的密钥二进制都是上百位的啊 生成密钥 需要生成大素数 大数取模 这些都很耗时间 大概生成密钥 都要十几分钟(虽然是几年前)
单片机太慢了 推荐你用流密码 RC4 那个很快 安全性也不错
C. dss加密算法
对称性加密算法:对称式加密就是加密和解密使用同一个密钥。信息接收双方都需事先知道密匙和加解密算法且其密匙是相同的,之后便是对数据进行加解密了。对称加密算法用来对敏感数据等信息进行加密。
非对称算法:非对称式加密就是加密和解密所使用的不是同一个密钥,通常有两个密钥,称为"公钥"和"私钥",它们两个必需配对使用,否则不能打开加密文件。发送双方A,B事先均生成一堆密匙,然后A将自己的公有密匙发送给B,B将自己的公有密匙发送给A,如果A要给B发送消 息,则先需要用B的公有密匙进行消息加密,然后发送给B端,此时B端再用自己的私有密匙进行消息解密,B向A发送消息时为同样的道理。
散列算法:散列算法,又称哈希函数,是一种单向加密算法。在信息安全技术中,经常需要验证消息的完整性,散列(Hash)函数提供了这一服务,它对不同长度的输入消息,产生固定长度的输出。这个固定长度的输出称为原输入消息的"散列"或"消息摘要"(Message digest)。散列算法不算加密算法,因为其结果是不可逆的,既然是不可逆的,那么当然不是用来加密的,而是签名。
对称性加密算法有:AES、DES、3DES
用途:对称加密算法用来对敏感数据等信息进行加密
DES(Data Encryption Standard):数据加密标准,速度较快,适用于加密大量数据的场合。
3DES(Triple DES):是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高。
AES(Advanced Encryption Standard):高级加密标准,是下一代的加密算法标准,速度快,安全级别高;AES是一个使用128为分组块的分组加密算法,分组块和128、192或256位的密钥一起作为输入,对4×4的字节数组上进行操作。众所周之AES是种十分高效的算法,尤其在8位架构中,这源于它面向字节的设计。AES 适用于8位的小型单片机或者普通的32位微处理器,并且适合用专门的硬件实现,硬件实现能够使其吞吐量(每秒可以到达的加密/解密bit数)达到十亿量级。同样,其也适用于RFID系统。
非对称性算法有:RSA、DSA、ECC
RSA:由 RSA 公司发明,是一个支持变长密钥的公共密钥算法,需要加密的文件块的长度也是可变的。RSA在国外早已进入实用阶段,已研制出多种高速的RSA的专用芯片。
DSA(Digital Signature Algorithm):数字签名算法,是一种标准的 DSS(数字签名标准),严格来说不算加密算法。
ECC(Elliptic Curves Cryptography):椭圆曲线密码编码学。ECC和RSA相比,具有多方面的绝对优势,主要有:抗攻击性强。相同的密钥长度,其抗攻击性要强很多倍。计算量小,处理速度快。ECC总的速度比RSA、DSA要快得多。存储空间占用小。ECC的密钥尺寸和系统参数与RSA、DSA相比要小得多,意味着它所占的存贮空间要小得多。这对于加密算法在IC卡上的应用具有特别重要的意义。带宽要求低。当对长消息进行加解密时,三类密码系统有相同的带宽要求,但应用于短消息时ECC带宽要求却低得多。带宽要求低使ECC在无线网络领域具有广泛的应用前景。
散列算法(签名算法)有:MD5、SHA1、HMAC
用途:主要用于验证,防止信息被修。具体用途如:文件校验、数字签名、鉴权协议
MD5:MD5是一种不可逆的加密算法,目前是最牢靠的加密算法之一,尚没有能够逆运算的程序被开发出来,它对应任何字符串都可以加密成一段唯一的固定长度的代码。
SHA1:是由NISTNSA设计为同DSA一起使用的,它对长度小于264的输入,产生长度为160bit的散列值,因此抗穷举(brute-force)性更好。SHA-1设计时基于和MD4相同原理,并且模仿了该算法。SHA-1是由美国标准技术局(NIST)颁布的国家标准,是一种应用最为广泛的Hash函数算法,也是目前最先进的加密技术,被政府部门和私营业主用来处理敏感的信息。而SHA-1基于MD5,MD5又基于MD4。
HMAC:是密钥相关的哈希运算消息认证码(Hash-based Message Authentication Code),HMAC运算利用哈希算法,以一个密钥和一个消息为输入,生成一个消息摘要作为输出。也就是说HMAC是需要一个密钥的。所以,HMAC_SHA1也是需要一个密钥的,而SHA1不需要。
其他常用算法:
Base64:其实不是安全领域下的加密解密算法,只能算是一个编码算法,通常用于把二进制数据编码为可写的字符形式的数据,对数据内容进行编码来适合传输(可以对img图像编码用于传输)。这是一种可逆的编码方式。编码后的数据是一个字符串,其中包含的字符为:A-Z、a-z、0-9、+、/,共64个字符(26 + 26 + 10 + 1 + 1 = 64,其实是65个字符,“=”是填充字符。Base64要求把每三个8Bit的字节转换为四个6Bit的字节(3*8 = 4*6 = 24),然后把6Bit再添两位高位0,组成四个8Bit的字节,也就是说,转换后的字符串理论上将要比原来的长1/3。原文的字节最后不够3个的地方用0来补足,转换时Base64编码用=号来代替。这就是为什么有些Base64编码会以一个或两个等号结束的原因,中间是不可能出现等号的,但等号最多只有两个。其实不用"="也不耽误解码,之所以用"=",可能是考虑到多段编码后的Base64字符串拼起来也不会引起混淆。)
Base64编码是从二进制到字符的过程,像一些中文字符用不同的编码转为二进制时,产生的二进制是不一样的,所以最终产生的Base64字符也不一样。例如"上网"对应utf-8格式的Base64编码是"5LiK572R", 对应GB2312格式的Base64编码是"yc/N+A=="。
标准的Base64并不适合直接放在URL里传输,因为URL编码器会把标准Base64中的“/”和“+”字符变为形如“%XX”的形式,而这些“%”号在存入数据库时还需要再进行转换,因为ANSI SQL中已将“%”号用作通配符。
为解决此问题,可采用一种用于URL的改进Base64编码,它不在末尾填充'='号,并将标准Base64中的“+”和“/”分别改成了“-”和“_”,这样就免去了在URL编解码和数据库存储时所要作的转换,避免了编码信息长度在此过程中的增加,并统一了数据库、表单等处对象标识符的格式。
另有一种用于正则表达式的改进Base64变种,它将“+”和“/”改成了“!”和“-”,因为“+”,“*”以及前面在IRCu中用到的“”在正则表达式中都可能具有特殊含义。
此外还有一些变种,它们将“+/”改为“_-”或“._”(用作编程语言中的标识符名称)或“.-”(用于XML中的Nmtoken)甚至“_:”(用于XML中的Name)。
HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL(SSL使用40 位关键字作为RC4流加密算法,这对于商业信息的加密是合适的。),因此加密的详细内容就需要SSL。https:URL表明它使用了HTTP,但HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间),提供了身份验证与加密通讯方法,现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。它的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。
项目应用总结:
1. 加密算法是可逆的,用来对敏感数据进行保护。散列算法(签名算法、哈希算法)是不可逆的,主要用于身份验证。
2. 对称加密算法使用同一个密匙加密和解密,速度快,适合给大量数据加密。对称加密客户端和服务端使用同一个密匙,存在被抓包破解的风险。
3. 非对称加密算法使用公钥加密,私钥解密,私钥签名,公钥验签。安全性比对称加密高,但速度较慢。非对称加密使用两个密匙,服务端和客户端密匙不一样,私钥放在服务端,黑客一般是拿不到的,安全性高。
4. Base64不是安全领域下的加解密算法,只是一个编码算法,通常用于把二进制数据编码为可写的字符形式的数据,特别适合在http,mime协议下的网络快速传输数据。UTF-8和GBK中文的Base64编码结果是不同的。采用Base64编码不仅比较简短,同时也具有不可读性,即所编码的数据不会被人用肉眼所直接看到,但这种方式很初级,很简单。Base64可以对图片文件进行编码传输。
5. https协议广泛用于万维网上安全敏感的通讯,例如交易支付方面。它的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。
6. 大量数据加密建议采用对称加密算法,提高加解密速度;小量的机密数据,可以采用非对称加密算法。在实际的操作过程中,我们通常采用的方式是:采用非对称加密算法管理对称算法的密钥,然后用对称加密算法加密数据,这样我们就集成了两类加密算法的优点,既实现了加密速度快的优点,又实现了安全方便管理密钥的优点。
7. MD5标准密钥长度128位(128位是指二进制位。二进制太长,所以一般都改写成16进制,每一位16进制数可以代替4位二进制数,所以128位二进制数写成16进制就变成了128/4=32位。16位加密就是从32位MD5散列中把中间16位提取出来);sha1标准密钥长度160位(比MD5摘要长32位),Base64转换后的字符串里论上将要比原来的长1/3。
D. 软件加密的安全隐患
但是采用软加密方式,有一些安全隐患:
(1)、密钥的管理很复杂,这也是安全API的实现的一个难题,从目前的几个API产品来讲,密钥分配协议均有缺陷;
(2)、使用软件加密,因为是在用户的计算机内部进行,容易给攻击者采用分析程序进行跟踪、反编译等手段进行攻击;
硬加密:
加密卡:专门用作对数据加密加速用,一般应用在网络服务器对HTTPS进行加速,免却占用主机处理器的运算资源,一众企业计算机厂商都有提供。
加密锁:目前一般采用硬件加密锁加软件相结合的方式,单片机加密锁目前正在逐步淘汰,这里就不多说了,现在说一下智能卡加密锁,这是目前的主流技术产品:
智能卡加密锁是中国人独创的,也是在外壳加密后,中国人在世界的软保领域中做出的最大贡献,目前智能卡加密锁的相关专利都在中国人手上,在中国市场,智能卡加密锁占据了整个市场约70%的市场份额。
(1)智能卡芯片是为安全而设计的,一般应用于安全领域,比如政府、军队及金融领域,要想做硬复制及克隆基本不可能,而单片机加密锁却非常容易。衡量智能卡芯片的标准,首先要看是否拥有国际的标准认证,就是智能卡芯片唯一的安全认证-EAL系列认证,如果没有,软件开发商需要慎重考虑;
(2)重要软件代码完全移植到硬件中运行,在软件端不留副本,黑客无法通过跟踪分析及反编译的手段做破解;
(3)强大的运算处理能力,可以运算代码及复杂的公开算法(RSA、TDES等)。硬件支持浮点运算、数学函数、安全服务、文件标准输入和输出等。
(4)强大的代码及数据储存能力,不再是单片机时代几百字节了,而是几十K了;可容纳近万行的C语言代码。(5)智能卡提供硬件随机数发生器,在CPU的控制下,每次芯片与外界数据传输中,产生的随机数可以保证数据不会重复。
(6)智能卡技术的核心—操作系统COS。COS(卡片操作系统)存放在智能卡芯片上,是一个比较小但非常完整严密的系统,类似于一个DOS。
智能卡加密锁选择:国外的有Gemalto(Axalto, Schlumberger), Safenet(Rainbow, Aladdin),Giesecke & Devrient, Oberthur等,国内的有广州江南科友,济南得安,四川卫士通,无锡华正天网等。
选择智能卡加密狗的标准:
真正的智能卡芯片:目前市场上有一些号称是用智能卡芯片的加密狗,实质上是使用某些ASIC芯片或某些安全领域的芯片,并不是真正的智能卡芯片,并没有国际的安全认证;国际上的芯片在稳定性和安全性上比国产的芯片要好一些(不是不爱国,实际上我们的芯片工业确实要比国外落后一些);
大容量的存储空间:可以放更多的代码和算法,使破解者需要花更多的时间去分析,最后崩溃;
无驱功能:可以给软件开发商节省售后的服务成本,并且杜绝破解者用替换的方式做破解;
无后门:这是一个在加密狗行业都是公开的秘密,很多加密狗企业为了方便自己管理,都留了后门,这个后门却给破解者打开了方便之门。在选择之前一定要确认有无后门。
售后服务:这是一个非常重要的条件,大公司的售后服务都比较标准化,也比较令人满意,小公司却有很多问题,选举加密狗时,最好是选择在行业内比较大的企业合作,这样比较有保障一些。
网络加密:
网络加密被誉为最安全的加密方式,但是同时它的缺点也是最明显的。首先,你必须一直在线才能使用这一服务,一旦网络不稳定被加密的软件就无法使用。国外曾经有一些游戏软件使用过这样的加密手段,要求玩家必须连接网络,网络一旦不稳定或者掉线程序就会自动关闭,在用户的一片骂声中厂商无奈停用了这样的加密手段。
其次对于数据流量大的软件来说网络加密对带宽的要求也比较高。网络工程师需要一边不停地解决带宽问题另一边为其用户提供尽可能最好的体验。
E. 单片机做的密码锁,安全性高吗
安全性,是由设计者的思维来决定的,而不是单片机决定的。
新手做密码锁,那就是固定n位,输入错误提示,输入正确解锁。这种安全性基本上为1,(最高10000的话),就是说,当当门面,忽悠忽悠还行,经不起破解。
初级工做密码锁,搞个位数变化,搞个次数限制,搞个时间限制(像手机密码),这种安全性提高非常多,可以大大减低被暴力破解的风险。
高级工做密码锁,搞个动态验证表,(像银行密码表卡),即使被破解密码,或盗取密码,没有验证表,依然开不了,差不多就是双层密码。
F. AVR单片机程序能受序列号限制吗
当然可以,但怎么控制,怎么去管理这些序列号,就需要你自己去设计了。设计的方式方法非常多,挑几个典型的说一下:
一、权限设计
既然要通过序列号来管理单片机程序的权限,那么这个权限体系就需要设计清楚。一般来说有完整权限和部分权限控制2种。完整权限,即没有序列号,整个程序就不能正常运行;部分权限,即在没有序列号的时候能实现部分功能,有序列号才提供完整功能。
二、序列号算法设计及存储设计
这个部分比较杂,方法也是非常多,但总的核心只有一条,那就是序列号的算法设计。算法设计即生成、验证序列号的具体方法。一般来说,就是一些加密、签名的技术。但因为AVR单片机计算能力有限,因此时间复杂度较高的加密技术(如RSA)并不适用。一般,单片机程序通常采用对MCU的唯一芯片出厂ID号进行算法加密并生成序列号的方法,这样做的好处是,即使完整的复制芯片FLASH和ROM里的数据到另一个新的单片机,也无法正常运行。
有了以上两点基础知识,再加上你自己的探索,应该就可以了。
G. 软件加密的要求
软件加密就是用户在发送信息前,先调用信息安全模块对信息进行加密,然后发送,到达接收方后,由用户使用相应的解密软件进行解密并还原。采用软件加密方式有以下优点:已经存在标准的安全API(Application ProgrammingInterface,应用程序编程接口)产品、实现方便、兼容性好。(1)智能卡芯片是为安全而设计的,一般应用于安全领域,比如政府、军队及金融领域,要想做硬复制及克隆基本不可能,而单片机加密锁却非常容易。衡量智能卡芯片的标准,首先要看是否拥有国际的标准认证,就是智能卡芯片唯一的安全认证-EAL系列认证,如果没有,软件开发商需要慎重考虑;
(2)重要软件代码完全移植到硬件中运行,在软件端不留副本,黑客无法通过跟踪分析及反编译的手段做破解;
(3)强大的运算处理能力,可以运算代码及复杂的公开算法(RSA、TDES等)。硬件支持浮点运算、数学函数、安全服务、文件标准输入和输出等。
(4)强大的代码及数据储存能力,不再是单片机时代几百字节了,而是几十K了;可容纳近万行的C语言代码。(5)智能卡提供硬件随机数发生器,在CPU的控制下,每次芯片与外界数据传输中,产生的随机数可以保证数据不会重复。
(6)智能卡技术的核心—操作系统COS。COS(卡片操作系统)存放在智能卡芯片上,是一个比较小但非常完整严密的系统,类似于一个DOS。