物联网信息安全 课件 第2章 对称加密与非对称加密_第1页
物联网信息安全 课件 第2章 对称加密与非对称加密_第2页
物联网信息安全 课件 第2章 对称加密与非对称加密_第3页
物联网信息安全 课件 第2章 对称加密与非对称加密_第4页
物联网信息安全 课件 第2章 对称加密与非对称加密_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

对称加密方法与非对称密码算法汇报人:徐赛凤导师:李永忠数据加密技术之目录CONTENTS对称加密基本概念01对称加密基本算法02两者区别05总结06非对称加密基本概念03非对称加密基本算法04PARTONE对称加密基本概念基本概念4对称加密算法是应用较早的加密算法,技术成熟。在对称加密算法中,数据发信方将明文(原始数据)和加密密钥一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去。收信方收到密文后,若想解读原文,则需要使用加密用过的密钥及相同算法的逆算法对密文进行解密,才能使其恢复成可读明文。PARTONEPARTTWOPARTTHREE在对称加密算法中,使用的密钥只有一个,发收信双方都使用这个密钥对数据进行加密和解密,这就要求解密方事先必须知道加密密钥。特点5算法公开、计算量小、加密速度快、加密效率高。优缺点:此外,每对用户每次使用对称加密算法时,都需要使用其他人不知道的惟一钥匙,这会使得发收信双方所拥有的钥匙数量成几何级数增长,密钥管理成为用户的负担。总之,对称加密算法在分布式网络系统上使用较为困难,主要是因为密钥管理困难,使用成本较高。PARTTHREE对称加密基本算法DESTripleDES算法基本概念8DESTripleDES算法

DES算法把64位的明文输入块变为数据长度为64位的密文输出块,其中8位为奇偶校验位,另外56位作为密码的长度。

首先,DES把输入的64位数据块按位重新组合,并把输出分为L0、R0两部分,每部分各长32位,并进行前后置换,

最终由L0输出左32位,R0输出右32位,根据这个法则经过16次迭代运算后,得到L16、R16,将此作为输入,进行与初始置换相反的逆置换,即得到密文输出。特点9DESTripleDES算法

DES算法具有极高的安全性,到目前为止,除了用穷举搜索法对DES算法进行攻击外,还没有发现更有效的办法。

56位长密钥的穷举空间为2^56,这意味着如果一台计算机的速度是每秒种检测100万个密钥,

那么它搜索完全部密钥就需要将近2285年的时间。因此DES算法是一种很可靠的加密方法。RC算法

RC算法基本概念RC4算法的原理是“搅乱”,它包括初始化算法和伪随机子密码生成算法两大部分。1在初始化的过程中,密钥的主要功能是将一个256字节的初始数簇进行随机搅乱,2

不同的数簇在经过伪随机子密码生成算法的处理后可以得到不同的子密钥序列,将得到的子密钥序列和明文进行异或运算(XOR)后,得到密文。3

RC算法特点RC4算法加密采用的是异或方式。1

一旦子密钥序列出现了重复,密文就有可能被破解,但是目前还没有发现密钥长度达到128位的RC4有重复的可能性。2所以,RC4也是目前最安全的加密算法之一。3BlowFish算法基本概念14BlowFish算法是一个64位分组及可变密钥长度的分组密码算法,该算法是非专利的。什么是BlowFish算法?加密过程是怎样的?BlowFish算法使用两个“盒”:pbox[18]和sbox[4256],BlowFish算法有一个核心加密函数。该函数输入64位信息,运算后以64位密文的形式输出。用BlowFish算法加密信息,需要密钥预处理和信息加密两个过程。BlowFish算法的原密钥pbox和sbox是固定的,要加密一个信息,需要选择一个key,用这个key对pbox和sbox进行变换,得到下一步信息加密所用到的key_pbox和key_sbox。解密过程是怎样的?BlowFish算法解密,同样也需要密钥预处理和信息解密两个过程。密钥预处理的过程和加密时完全相同。信息解密的过程就是把信息加密过程的key_pbox逆序使用即可。原理应用

对称加密算法的优点在于加解密的高速度和使用长密钥时的难破解性。假设两个用户需要使用对称加密方法加密然后交换数据,则用户最少需要2个密钥并交换使用,如果企业内用户有n个,则整个企业共需要n×(n-1)个密钥,密钥的生成和分发将成为企业信息部门的恶梦。对称加密算法的安全性取决于加密密钥的保存情况,但要求企业中每一个持有密钥的人都保守秘密是不可能的,他们通常会有意无意的把密钥泄漏出去——如果一个用户使用的密钥被入侵者所获得,入侵者便可以读取该用户密钥加密的所有文档,如果整个企业共用一个加密密钥,那整个企业文档的保密性便无从谈起。

对称加密算法的优点在于加解密的高速度和使用长密钥时的难破解性。假设两个用户需要使用对称加密方法加密然后交换数据,则用户最少需要2个密钥并交换使用,如果企业内用户有n个,则整个企业共需要n×(n-1)个密钥,密钥的生成和分发将成为企业信息部门的恶梦。对称加密算法的安全性取决于加密密钥的保存情况,但要求企业中每一个持有密钥的人都保守秘密是不可能的,他们通常会有意无意的把密钥泄漏出去——如果一个用户使用的密钥被入侵者所获得,入侵者便可以读取该用户密钥加密的所有文档,如果整个企业共用一个加密密钥,那整个企业文档的保密性便无从谈起。DESCryptoServiceProviderRC2CryptoServiceProviderRijndaelManagedTripleDESCryptoServiceProvider//例加密文本文件(RijndaelManaged)byte[]key={24,55,102,24,98,26,67,29,84,19,37,118,104,85,121,27,93,86,24,55,102,24,98,26,67,29,9,2,49,69,73,92};byte[]IV={22,56,82,77,84,31,74,24,55,102,24,98,26,67,29,99};RijndaelManagedmyRijndael=newRijndaelManaged();FileStreamfsOut=File.Open(strOutName,FileMode.Create,FileAccess.Write);//strOutName文件名及路径FileStreamfsIn=File.Open(strPath,FileMode.Open,FileAccess.Read);CryptoStreamcsDecrypt=newCryptoStream(fsOut,myRijndael.CreateEncryptor(key,IV),CryptoStreamMode.Write);//读加密文本BinaryReaderbr=newBinaryReader(fsIn);csDecrypt.Write(br.ReadBytes((int)fsIn.Length),0,(int)fsIn.Length);csDecrypt.FlushFinalBlock();csDecrypt.Close();fsIn.Close();fsOut.Close();

对称加密算法的优点在于加解密的高速度和使用长密钥时的难破解性。假设两个用户需要使用对称加密方法加密然后交换数据,则用户最少需要2个密钥并交换使用,如果企业内用户有n个,则整个企业共需要n×(n-1)个密钥,密钥的生成和分发将成为企业信息部门的恶梦。对称加密算法的安全性取决于加密密钥的保存情况,但要求企业中每一个持有密钥的人都保守秘密是不可能的,他们通常会有意无意的把密钥泄漏出去——如果一个用户使用的密钥被入侵者所获得,入侵者便可以读取该用户密钥加密的所有文档,如果整个企业共用一个加密密钥,那整个企业文档的保密性便无从谈起。//解密文件byte[]key={24,55,102,24,98,26,67,29,84,19,37,118,104,85,121,27,93,86,24,55,102,24,98,26,67,29,9,2,49,69,73,92};byte[]IV={22,56,82,77,84,31,74,24,55,102,24,98,26,67,29,99};RijndaelManagedmyRijndael=newRijndaelManaged();FileStreamfsOut=File.Open(strPath,FileMode.Open,FileAccess.Read);CryptoStreamcsDecrypt=newCryptoStream(fsOut,myRijndael.CreateDecryptor(key,IV),CryptoStreamMode.Read);StreamReadersr=newStreamReader(csDecrypt);//把文件读出来StreamWritersw=newStreamWriter(strInName);//解密后文件写入一个新的文件sw.Write(sr.ReadToEnd());sw.Flush();sw.Close();sr.Close();fsOut.Close();用图片加密(RC2CryptoServiceProvider)FileStreamfsPic=newFileStream(pictureBox1.ImageLocation,FileMode.Open,FileAccess.Read);

对称加密算法的优点在于加解密的高速度和使用长密钥时的难破解性。假设两个用户需要使用对称加密方法加密然后交换数据,则用户最少需要2个密钥并交换使用,如果企业内用户有n个,则整个企业共需要n×(n-1)个密钥,密钥的生成和分发将成为企业信息部门的恶梦。对称加密算法的安全性取决于加密密钥的保存情况,但要求企业中每一个持有密钥的人都保守秘密是不可能的,他们通常会有意无意的把密钥泄漏出去——如果一个用户使用的密钥被入侵者所获得,入侵者便可以读取该用户密钥加密的所有文档,如果整个企业共用一个加密密钥,那整个企业文档的保密性便无从谈起。//加密文件流(textBox1.Text是文件名及路径)FileStreamfsText=newFileStream(textBox1.Text,FileMode.Open,FileAccess.Read);byte[]bykey=newbyte[16];//初始化KeyIVbyte[]byIv=newbyte[8];fsPic.Read(bykey,0,16);fsPic.Read(byIv,0,8);RC2CryptoServiceProviderdesc=newRC2CryptoServiceProvider();//desc进行加密BinaryReaderbr=newBinaryReader(fsText);//从要加密的文件中读出文件内容FileStreamfsOut=File.Open(strLinPath,FileMode.Create,FileAccess.Write);//strLinPath临时加密文件路径CryptoStreamcs=newCryptoStream(fsOut,desc.CreateEncryptor(bykey,byIv),CryptoStreamMode.Write);//写入临时加密文件cs.Write(br.ReadBytes((int)fsText.Length),0,(int)fsText.Length);//写入加密流cs.FlushFinalBlock();cs.Flush();cs.Close();fsPic.Close();fsText.Close();fsOut.Close();

对称加密算法的优点在于加解密的高速度和使用长密钥时的难破解性。假设两个用户需要使用对称加密方法加密然后交换数据,则用户最少需要2个密钥并交换使用,如果企业内用户有n个,则整个企业共需要n×(n-1)个密钥,密钥的生成和分发将成为企业信息部门的恶梦。对称加密算法的安全性取决于加密密钥的保存情况,但要求企业中每一个持有密钥的人都保守秘密是不可能的,他们通常会有意无意的把密钥泄漏出去——如果一个用户使用的密钥被入侵者所获得,入侵者便可以读取该用户密钥加密的所有文档,如果整个企业共用一个加密密钥,那整个企业文档的保密性便无从谈起。用图片解密FileStreamfsPic=newFileStream(pictureBox1.ImageLocation,FileMode.Open,FileAccess.Read);//图片流FileStreamfsOut=File.Open(textBox1.Text,FileMode.Open,FileAccess.Read);//解密文件流byte[]bykey=newbyte[16];//初始化KeyIVbyte[]byIv=newbyte[8];fsPic.Read(bykey,0,16);fsPic.Read(byIv,0,8);stringstrPath=textBox1.Text;//加密文件的路径intintLent=strPath.LastIndexOf("\\")+1;intintLong=strPath.Length;stringstrName=strPath.Substring(intLent,intLong-intLent);//要加密的文件名称stringstrLinPath="C:\\"+strName;//临时解密文件路径FileStreamfs=newFileStream(strLinPath,FileMode.Create,FileAccess.Write);RC2CryptoServiceProviderdesc=newRC2CryptoServiceProvider();//desc进行解密CryptoStreamcsDecrypt=newCryptoStream(fsOut,desc.CreateDecryptor(bykey,byIv),CryptoStreamMode.Read);

对称加密算法的优点在于加解密的高速度和使用长密钥时的难破解性。假设两个用户需要使用对称加密方法加密然后交换数据,则用户最少需要2个密钥并交换使用,如果企业内用户有n个,则整个企业共需要n×(n-1)个密钥,密钥的生成和分发将成为企业信息部门的恶梦。对称加密算法的安全性取决于加密密钥的保存情况,但要求企业中每一个持有密钥的人都保守秘密是不可能的,他们通常会有意无意的把密钥泄漏出去——如果一个用户使用的密钥被入侵者所获得,入侵者便可以读取该用户密钥加密的所有文档,如果整个企业共用一个加密密钥,那整个企业文档的保密性便无从谈起。//读出加密文件BinaryReadersr=newBinaryReader(csDecrypt);//从要加密流中读出文件内容BinaryWritersw=newBinaryWriter(fs);//写入解密流sw.Write(sr.ReadBytes(Convert.ToInt32(fsOut.Length)));//sw.Flush();sw.Close();sr.Close();fs.Close();fsOut.Close();fsPic.Close();csDecrypt.Flush();File.Delete(textBox1.Text.TrimEnd());//删除原文件File.Copy(strLinPath,textBox1.Text);//复制加密文件File.Delete(strLinPath);//删除临时文件PARTTWO非对称加密基本概念基本概念22非对称加密算法是一种密钥的保密方法。非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。一、二、三、四、25%50%75%90%23一方面,甲方生成一对密钥并将其中的一把作为公用密钥向其它方公开;得到该公用密钥的乙方使用该密钥对机密信息进行加密后再发送给甲方;甲方再用自己保存的另一把专用密钥对加密后的信息进行解密。另一方面,另一方面,甲方可以使用乙方的公钥对机密信息进行签名后再发送给乙方;乙方再用自己的私匙对数据进行验签。甲方只能用其专用密钥解密由其公用密钥加密后的任何信息。非对称加密算法实现机密信息交换的基本过程是:非对称加密算法的保密性比较好,它消除了最终用户交换密钥的需要。基本概念特点24010203

算法强度复杂、安全性依赖于算法与密钥但是由于其算法复杂,而使得加密解密速度没有对称加密解密的速度快。

但由于其算法复杂,使得加密解密速度没有对称加密解密的速度快。

非对称密钥体制有两种密钥,其中一个是公开的,这样就可以不需要像对称密码那样传输对方的密钥了。这样安全性就大了很多。PARTTHREE非对称加密基本算法主要算法RSA、Elgamal、背包算法、Rabin、D-H、ECC(椭圆曲线加密算法)。使用最广泛的是RSA算法,Elgamal是另一种常用的非对称加密算法。主要算法

Elgamal由TaherElgamal于1985年发明,其基础是DiffieˉHellman密钥交换算法,后者使通信双方能通过公开通信来推导出只有他们知道的秘密密钥值[DiffieˉHellman]。DiffieˉHellman是WhitfieldDiffie和MartinHellman于1976年发明的,被视为第一种非对称加密算法,DiffieˉHellman与RSA的不同之处在于,DiffieˉHellman不是加密算法,它只是生成可用作对称密钥的秘密数值。主要算法

在DiffieˉHellman密钥交换过程中,发送方和接收方分别生成一个秘密的随机数,并根据随机数推导出公开值,然后,双方再交换公开值。DiffieˉHellman算法的基础是具备生成共享密钥的能力。只要交换了公开值,双方就能使用自己的私有数和对方的公开值来生成对称密钥,称为共享密钥,对双方来说,该对称密钥是相同的,可以用于使用对称加密算法加密数据。主要算法

与RSA相比,DiffieˉHellman的优势之一是每次交换密钥时都使用一组新值,而使用RSA算法时,如果攻击者获得了私钥,那么他不仅能解密之前截获的消息,还能解密之后的所有消息。然而,RSA可以通过认证(如使用X.509数字证书)来防止中间人攻击,但DiffieˉHellman在应对中间人攻击时非常脆弱。工作原理30工作原理31A要向B发送信息,A和B都要产生一对用于加密和解密的公钥和私钥。第一步第二步第三步第四步A的私钥保密,A的公钥告诉B;B的私钥保密,B的公钥告诉A。A要给B发送信息时,A用B的公钥加密信息,因为A知道B的公钥。A将这个消息发给B(已经用B的公钥加密消息)。B收到这个消息后,B用自己的私钥解密A的消息。其他所有收到这个报文的人都无法解密。第五步主要应用

非对称加密(公钥加密):指加密和解密使用不同密钥的加密算法,也称为公私钥加密。假设两个用户要加密交换数据,双方交换公钥,使用时一方用对方的公钥加密,另一方即可用自己的私钥解密。如果企业中有n个用户,企业需要生成n对密钥,并分发n个公钥。假设A用B的公钥加密消息,用A的私钥签名,B接到消息后,首先用A的公钥验证签名,确认后用自己的私钥解密消息。由于公钥是可以公开的,用户只要保管好自己的私钥即可,因此加密密钥的分发将变得十分简单。同时,由于每个用户的私钥是唯一的,其他用户除了可以通过信息发送者的公钥来验证信息的来源是否真实,还可以通过数字签名确保发送者无法否认曾发送过该信息。非对称加密的缺点是加解密速度要远远慢于对称加密,在某些极端情况下,甚至能比对称加密慢上1000倍。

对称加密算法的优点在于加解密的高速度和使用长密钥时的难破解性。假设两个用户需要使用对称加密方法加密然后交换数据,则用户最少需要2个密钥并交换使用,如果企业内用户有n个,则整个企业共需要n×(n-1)个密钥,密钥的生成和分发将成为企业信息部门的恶梦。对称加密算法的安全性取决于加密密钥的保存情况,但要求企业中每一个持有密钥的人都保守秘密是不可能的,他们通常会有意无意的把密钥泄漏出去——如果一个用户使用的密钥被入侵者所获得,入侵者便可以读取该用户密钥加密的所有文档,如果整个企业共用一个加密密钥,那整个企业文档的保密性便无从谈起。

对称加密算法的优点在于加解密的高速度和使用长密钥时的难破解性。假设两个用户需要使用对称加密方法加密然后交换数据,则用户最少需要2个密钥并交换使用,如果企业内用户有n个,则整个企业共需要n×(n-1)个密钥,密钥的生成和分发将成为企业信息部门的恶梦。对称加密算法的安全性取决于加密密钥的保存情况,但要求企业中每一个持有密钥的人都保守秘密是不可能的,他们通常会有意无意的把密钥泄漏出去——如果一个用户使用的密钥被入侵者所获得,入侵者便可以读取该用户密钥加密的所有文档,如果整个企业共用一个加密密钥,那整个企业文档的保密性便无从谈起。DSACryptoServiceProviderRSACryptoServiceProvider//加密UnicodeEncodingencoding=newUnicodeEncoding();byte[]PasswordBytes=encoding.GetBytes(password);//将密码转换为字节数组RSACryptoServiceProvidercrypt=newRSACryptoServiceProvider();//RSA加密算法,非对称PasswordBytes=crypt.Encrypt(password,false);//加密字节数组,这是加密后的密码值,放入数据库中的表字段中。stringkey=crypt.ToXmlString(true);//输出密钥为XML格式的字符串,且包含私钥,这个字符串要作为数据库表中的一个字段同用户的密码放在一起。

对称加密算法的优点在于加解密的高速度和使用长密钥时的难破解性。假设两个用户需要使用对称加密方法加密然后交换数据,则用户最少需要2个密钥并交换使用,如果企业内用户有n个,则整个企业共需要n×(n-1)个密钥,密钥的生成和分发将成为企业信息部门的恶梦。对称加密算法的安全性取决于加密密钥的保存情况,但要求企业中每一个持有密钥的人都保守秘密是不可能的,他们通常会有意无意的把密钥泄漏出去——如果一个用户使用的密钥被入侵者所获得,入侵者便可以读取该用户密钥加密的所有文档,如果整个企业共用一个加密密钥,那整个企业文档的保密性便无从谈起。//解密RSACryptoServiceProvidercrypt=newRSACryptoServiceProvider();//已随机生成了一个密钥对crypt.Clear();//毁掉当前密钥对crypt.FromXmlString(key)//输入密钥对,key是从数据库表字段中读取的那个XML格式的字符串,即密钥字段PasswordBytes=crypt.Decrypt(password,false);//解密字节数组,返回原始密码给用户

对称加密算法的优点在于加解密的高速度和使用长密钥时的难破解性。假设两个用户需要使用对称加密方法加密然后交换数据,则用户最少需要2个密钥并交换使用,如果企业内用户有n个,则整个企业共需要n×(n-1)个密钥,密钥的生成和分发将成为企业信息部门的恶梦。对称加密算法的安全性取决于加密密钥的保存情况,但要求企业中每一个持有密钥的人都保守秘密是不可能的,他们通常会有意无意的把密钥泄漏出去——如果一个用户使用的密钥被入侵者所获得,入侵者便可以读取该用户密钥加密的所有文档,如果整个企业共用一个加密密钥,那整个企业文档的保密性便无从谈起。上面方法的一个特点是每个用户对应一个密钥(包含公钥和私钥),它们都是随机生成的,所以各不相同。不过缺点也是很明显的,就是密钥存储在数据库中,如果数据库被攻破密钥就泄漏了。还有另外一个方法就是依照上面方法随机生成一个密钥对(包含公钥和私钥),通过ToXmlString(true)方法导出,然后把这个XML字符串格式的密钥放到你的Web程序的Web.config文件的AppSetting节点里面,然后通过FromXmlString(key)方法读入密钥,这样就意味着所有的用户密码都用同一个密钥对加密和解密。PARTSIX两者区别对照图区别首先用于消息解密的密钥值与用于消息加密的密钥值不同;其次非对称加密算法比对称

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论