`
8821249
  • 浏览: 68744 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

加密解密算法与通讯安全(四)

 
阅读更多

非对称加密算法

对称加密算法指加密解密用同一密钥,那么非对称加密就是加密解密用不同的密钥。加密算法一次生成两个密钥,一个叫做公钥,一个较为密钥。公钥加密的数据,用密钥解密;密钥加密的数据,用公钥来解密(有些非对称加密算法,只能用密钥加密,公钥解密,或只能用密钥加密,公钥解密)。

非对称加密算法的确神奇,其理论的基础来自于数论。例如RSA算法建立在数论中的“大数分解和素数检测”的理论基础上。而ElGamalECC算法基于的则是数论中的“离散对数问题”。数学中的最后一个未找到应用场景的分支学科——数论,终于在加密学领域,找到了应用场景,这不得不说是个奇迹。

非对称加密算法的加入,使得加密算法得以真正的完整,他有这举足轻重的作用。他很好的解决了对称加密算法的缺陷。

 

通讯模型

客户端要将数据data发送给服务器端,客户端向服务器端发起对话请求,服务器端生成一对密钥——公钥Gkey和私钥Skey。将Gkey发送给客户端,客户端使用Gkey对数据data进行加密,获得密文C,将C发给服务器端,服务器端使用自己的Skey解密,获得数据data,完成后续业务逻辑。



 

从上面的通讯模型中可以看到,在网络中传输的只有密文C、和公钥Gkey。而私钥Skey不会在网络中传输,攻击者只能获取到公钥,无法对解密密文C,也就保证了数据的安全性。详细的分析下通讯中面临的四种威胁:

  • 截获:同样网络中传输的是密文,即时被截获,攻击者没有私钥,也无法解析密文。所以可以很好的防范截获威胁。
  • 中断:对于针对可用性的攻击,由于一般都是基于底层协议的攻击,所以一般很难防范。
  • 篡改:由于数据是密文传输的,攻击者没有私钥,无法解析,更无法伪造了。
  • 伪造:对于数据的伪造,和摘要算法一样,可以防范,但对于伪造的发送方,对称加密算法和摘要算法一样,比较的无力。

截获

中断

篡改

伪造

O

X

O

X

 

和对称加密算法一样,只能对通信中的截获、篡改有防范作用,对其他两个中断、伪造威胁都无法防范。

而由于非对称加密算法,很好的解决了对称加密算法中密钥交换的问题,所以其有着很不错的应用场景,可以说是一种通用的加密模型。

 

算法优缺点

那么非对称加密算法就没有缺点吗?也不是,首先,我们看上面的通讯模型,他比对称加密算法的通讯模型来的复杂,存在着两次请求/响应。此外,非对称加密算法的计算可能会很慢,比对称加密算法来慢得多。

所以,非对称加密算法在解决了对称加密算法的缺陷后,存在着一些性能问题,比较通用的解决办法是将两种加密算法进行结合——先使用非对称加密算法传递临时的对称加密算法的密钥,密钥传递完成后,再使用更快的对称加密算法来进行真正的数据通信。

 

 

典型的非对称加密算法有RSA/ElGamal/ECC算法,除了这两个算法外,还有一个DH算法,其比较的另类,其设计的初衷就是解决对称加密算法中密钥安全交换的问题。其通讯模型如下:

所有客户端生成一堆公钥CGkey和私钥CSkey,将AGkey发给服务器端。服务器端通过AGkey生成服务器端的公钥SGkey和私钥SSkey,并将SGkey发还给客户端。客户端通过CSkeySGkey生成对称加密算法的密钥key,服务器端通过CGkeySSkey生成相同的密钥key。后续客户端和服务器端都是用各自的密钥key来通信。


不得不说,这又是一个多么神奇的算法。但是他的确存在。并且早于其他的非对称加密算法。

 

  • 大小: 33.3 KB
  • 大小: 53.6 KB
分享到:
评论

相关推荐

    C语言实现DES加密解密算法

    DES加密解密算法的C语言实现 DES(Data Encryption Standard)是一种对称密钥 BLOCK 加密算法,使用 56 ...DES 加密解密算法的 C 语言实现需要理解字节与二进制转换、密钥处理、加密和解密操作以及基本操作等知识点。

    Java实现的RSA加密解密算法示例

    Java实现的RSA加密解密算法示例 本文主要介绍了Java实现的RSA加密解密算法,结合实例形式分析了Java RSA加密解密算法的相关实现技巧。 知识点1:RSA加密解密算法简介 RSA加密解密算法是一种非对称加密算法,由Ron...

    300多种加密解密算法(C++)源代码

    300多种加密解密算法(C++)源代码 300多种加密解密算法(C++)源代码

    C语言实现加密解密算法

    本文将深入探讨如何使用C语言实现加密解密算法,并基于提供的文件信息进行讲解。 首先,C语言是一种底层编程语言,它允许直接操作内存,因此非常适合实现复杂的数学运算,如加密算法。常见的加密算法有对称加密(如...

    用C语言实现的AES加密解密算法

    AES,全称Advanced ...总之,C语言实现的AES加密解密算法是一个实用的工具,对于理解加密原理、开发安全软件或进行系统级编程都有很大的价值。然而,使用时应确保正确性,并结合适当的模式和协议来增强整体安全性。

    六个经典的PHP加密解密算法

    经典代码(带详解) 函数authcode($string, $operation, $key, ...第六种 函数encrypt($string,$operation,$key)中$string:需要加密解密的字符串;$operation:判断是加密还是解密,E表示加密,D表示解密;$key:密匙。

    java实现的RC4加密解密算法示例

    "java实现的RC4加密解密算法示例" RC4加密解密算法是Symmetric-key block cipher的一种,使用同一个密钥进行加密和解密。java实现的RC4加密解密算法可以通过以下步骤实现: 1. 初始化数组:创建一个大小为256的...

    java实现MD5加密解密算法

    java实现MD5加密解密算法,java源代码~

    RSA 加密解密算法C语言 (含linux)

    总的来说,RSA加密解密算法在C语言中实现涉及到大整数运算、公钥私钥生成、加密解密过程等多个环节,结合适当的库可以构建出强大的安全工具。在Linux环境下,可以利用丰富的开源库来简化开发工作。通过深入理解这些...

    基于Logistic系统的图像模块混沌加密解密算法

    四、基于Logistic系统的图像模块混沌加密解密算法 该算法的加密过程可以分为两个步骤:首先,对图像进行分块,然后对每个块的灰度值和像素位置进行置乱。置乱的方法是使用Logistic映射生成的混沌序列。然后,对置乱...

    .net加密解密算法demo

    这个" .net加密解密算法demo "提供了易于理解和使用的加密解密示例,特别适合初学者和开发者快速上手。源代码中包含了详尽的注释,使得自定义关键字成为可能,以满足不同场景下的安全需求。 首先,加密是将明文数据...

    文件加密解密算法研究与实现

    ### 文件加密解密算法研究与实现 #### 一、引言 随着信息技术的快速发展和互联网的普及,信息安全问题变得越来越重要。特别是在企业环境中,保护重要信息免受非法访问和泄露至关重要。《文件加密解密算法研究与...

    RSA 加密 解密 算法

    RSA加密解密算法,相当不错的例子,适合初学者参考

    AES加密解密算法

    实现的AES加密解密算法,高级加密标准(AES,Advanced Encryption Standard)为最常见的对称加密算法(微信小程序加密传输就是用这个加密算法的)。对称加密算法也就是加密和解密用相同的密钥

    VB6加密解密算法,支持文件加密解密

    综上所述,VB6的这个加密解密程序是一个实用的工具,结合了DES和AES这两种强大的加密算法,支持用户自定义密钥,且具备文件级别的加密解密功能。它不仅提供了基本的数据安全措施,而且在VB6环境中易于理解和使用,...

    C++实现密码学 RSA加密解密算法

    RSA加密解密算法是密码学中一种常用的加密算法,以 Ron Rivest、Adi Shamir 和 Leonard Adleman 三人命名。该算法基于大数分解问题的困难性,使用公钥加密和私钥解密的方式来保护数据的安全。 该算法的基本原理是:...

    VB加密解密算法

    总之,VB加密解密算法在保护软件、数据安全方面起着重要作用。开发者应熟悉不同类型的加密算法,了解其优缺点,并能在VB环境中熟练应用,以确保信息的安全。在实际开发过程中,结合安全策略,合理使用加密技术,可以...

    c(c++)300多种加密解密算法

    此资源加密方式包括 MD2, MD5, SHA-1, HAVAL, Tiger, RIPE-MD160, MD5-MAC, HMAC, XOR-MAC, DES,IDEA, WAKE, 3-WAY, TEA, SAFER, Blowfish,SHARK, GOST, CAST-128, Square,Diamond2, Sapphire, RC2, RC5, RC6, MARS,...

    很强的Java加密解密算法源码.zip

    在这个"很强的Java加密解密算法源码.zip"中,我们可以深入学习如何在Java中实现3DES算法来加密和解密文件。 3DES算法是一种块加密算法,它通过三次应用DES密钥来增强安全性。基本流程如下: 1. **加密过程**:输入...

    matlab实现DES加密解密算法

    加密为直接输入十六进制的(消息,密钥,1);解密为(密文,密钥,2);Index=1为加密,不为1为解密

Global site tag (gtag.js) - Google Analytics