精华内容
下载资源
问答
  • 对称加密算法(Symmetric-key algorithm)和非对称加密算法(asymmetric key encryption algorithm)只不过就是密码学(cryptography)中的两种加密算法罢了,什么是算法,你就可以理解成为是一种规则吧,这种规则可以将...

    对称加密算法(Symmetric-key algorithm)和非对称加密算法(asymmetric key encryption algorithm)只不过就是密码学(cryptography)中的两种加密算法罢了,什么是算法,你就可以理解成为是一种规则吧,这种规则可以将信息从一种形式转变成另一种形式,不懂没关系,继续往下看。

    对称加密

    首先,让我们先从一个情景开始讲起,想当初我们在初中,高中,甚至于大学,每次考试都有人在试图如何更加隐蔽的作弊!那大家都想了什么方法呢?比如张三学习比李四好,李四就想在考试的时候让张三“帮助”一下自己,当然,他们俩不可能像我们平常对话一样说,第一题选A,第二题选B等等,为什么?因为监考老师明白他俩在谈论什么,也就是说这种沟通交流方式属于“明文”,所以李四就想:“我需要发明一种,只有我和张三明白的交流方式”,那李四做了什么呢?恩,李四去找张三说:“当我连续咳嗽三声的时候你看我,然后如果我摸了下左耳朵,说明你可以开始给我传答案了,如果没反应,那说明我真的是在咳嗽。。。。”, 然后,怎么传答案呢?很简单,“你摸左耳朵代表A, 摸右耳朵代表B,左手放下代表C,右手放下代表D”,好了,这就是他们的“算法(规则)”,将信息的一种形式(A,B,C,D),这里我们称为“明文”,转换成了另一种形式(摸左耳朵,摸右耳朵,放左手,放右手),这里称为“密文”,经过这种转换,很显然监考老师不会明白这些“密文”,这样,张三和李四就通过“密文”的形式实现了信息的交换。

    其实,密码学不就是为了人们更好的加密传输么?有很多学者,科学家成年累月的工作,为的就是改进或者发明更好的加密算法,让这些加密算法加密的文本难以破解,达到数据安全传输的目的。

    OK,回归正题,上面这个“作弊”的例子,其实就是一种对称加密算法!好了,我们来看一下对称加密算法的定义(来源:wikipedia):

    对称密钥加密(英语:Symmetric-key algorithm)又称为对称加密、私钥加密、共享密钥加密,是密码学中的一类加密算法。这类算法在加密和解密时使用相同的密钥,或是使用两个可以简单地相互推算的密钥。实务上,这组密钥成为在两个或多个成员间的共同秘密,以便维持专属的通讯联系。与公开密钥加密相比,要求双方取得相同的密钥是对称密钥加密的主要缺点之一

    这里我想说一点的是,wikipedia的把Symmetric-key algorithm中文翻译是 对称密钥加密,我不想把这个key翻译成密钥,因为key仅仅是一个“钥”,这里翻译成密钥会让大家对后面所说的“公钥”,“密钥”,“私钥”等等的概念弄混,好了,所以我还是比较喜欢称之为“对称加密算法”,而后面说又称“私钥”加密,共享“密钥”,这里,“私钥”就等于“密钥”,没有任何区别,英文是“private key”。

    ok,我们将定义结合我们前面的例子对应一下,“这类算法在加密和解密时使用相同的密钥,或是使用两个可以简单地相互推算的密钥”,其实在我们例子中,密钥就是“将(A,B,C,D)转换成(摸左耳朵,摸右耳朵,放左手,放右手)”这么一个规则。“实务上,这组密钥成为在两个或多个成员间的共同秘密,以便维持专属的通讯联系。” 这句话很好理解了吧,密钥是张三和李四间共同的秘密!只有他俩事先知道。

    所以,为什么叫对称加密呢,你可以这么理解,一方通过密钥将信息加密后,把密文传给另一方,另一方通过这个相同的密钥将密文解密,转换成可以理解的明文。他们之间的关系如下:

    明文 <-> 密钥 <-> 密文

    这样看,是不是感觉对称比较好理解了。ok,那么我们现在有哪些现成的对称加密算法可以用么?当然有:

    常见的对称加密算法有DES、3DES、AES、Blowfish、IDEA、RC5、RC6。

    想深入了解的同学,可以自行查阅资料了。

    非对称加密

    我们再来说说非对称加密,非对称加密是一种比对称加密更加优秀的加密算法,当然算法有利有弊,对称加密速度快但是安全性相对于非对称加密来说低,为什么呢,你想啊,要想使用对称加密,那么分享信息的各个个体之间都需要分享这个密钥,比如你们1000个人之间都使用同一个密钥进行密文传输,只要其中一个人密钥被盗窃了,那么整体加密的信息将都被破解了。好了,那么我们开始说说非对称加密。

    就从上面提到的这个对称加密的缺点开始,怎么做到即时一个人的密钥被盗窃了,最起码保证你给其他人发送密文不被破解。于是,人们就想出了这么个办法,首先,我们停止分享共同的密钥,因为上面的bug就是来源于共享一个密钥,那么怎么办呢?每个人生成一个“私钥-公钥”对,这个私钥需要每个人自行进行保护!公钥可以随便分享,后面详细说,同时,生成的这个“私钥-公钥”对还有个强大的功能就是,使用私钥加密的信息,只能由该私钥对应的公钥才能解密,使用公钥加密的信息,只能由该公钥对应的私钥才能解密!

    好了,比如说张三生成了他自己的一个“私钥-公钥”对,叫做“张三私钥-张三公钥”,李四生成了他自己的一个“私钥-公钥”对,叫做“李四私钥-李四公钥”,之前我们说过私钥要每个个体自己进行保存,公钥可以随便分享,目的是为什么呢?是为了加密信息!

    比如,李四想给张三发送密文。
    于是李四开始给张三发QQ

    李四:
    “hi哥们,我想给你发个密文,把你的公钥给我发过来用用。”
    
    张三:
    “没问题的,这是我的公钥: d#8yHE8eU#hb*!neb,用这个公钥加密你的信息后给我发过来吧”
    
    李四:
    “这是我想对你说的话: *&#@uehuu(**#eehu&$##bfeu&&”

    恩?你是不是有点疑问呢?咳咳,李四这是作死的节奏?为什么公开问公钥?不怕被网警查水表?哈哈,非对称解密算法的威力就在这里!无所谓!随便谁截取!我们上面说了,公钥可以随意分发,所以即使别人截取了,也只是知道该公钥而已,但是要是想解密使用该公钥加密的密文!只有一个人可以办得到!就是张三! 为什么?李四使用张三的公钥加密的信息,只有张三的公钥所对应的私钥,这里就是“张三私钥”,该私钥才可以解密!所以,没有张三私钥的第三方即时截取了这些密文,也破解不了!或者更严格的说在有限时间内比如说几千年内是暴力破解不出的!

    懂了吧?所以网警们哭了,本以为想监视他们的对话,可惜一无所获!

    我们来看看非对称加密的官方定义:

    公开密钥加密(英语:public-key cryptography,又译为公开密钥加密),也称为非对称加密(asymmetric cryptography),一种密码学算法类型,在这种密码学方法中,需要一对密钥(其实这里密钥说法不好,就是“钥”),一个是私人密钥,另一个则是公开密钥。这两个密钥是数学相关,用某用户密钥加密后所得的信息,只能用该用户的解密密钥才能解密。如果知道了其中一个,并不能计算出另外一个。因此如果公开了一对密钥中的一个,并不会危害到另外一个的秘密性质。称公开的密钥为公钥;不公开的密钥为私钥。

    hmm。。这个定义有点绕,不过就是说,要想使用非对称加密算法,首先要有一对key,一个被称为private key私钥,一个成为public key公钥,然后可以把你的public key分发给想给你传密文的用户,然后用户使用该public key加密过得密文,只有使用你的private key才能解密,也就是说,只要你自己保存好你的private key,就能确保,别人想给你发的密文不被破解,所以你不用担心别人的密钥被盗,没关系。

    正因为,这种加密是单向的,所以被称为非对称加密算法。

    这种加密算法应用非常广泛,SSH, HTTPS, TLS,电子证书,电子签名,电子身份证等等。

    这篇文章先写到这里,接下来我将像大家挨个介绍这些加密算法的应用,不过我在这里先埋个伏笔,上面我提到的李四和张三发qq,即时使用非对称加密算法,大家有没有发现仍然有哪些隐患呢?

    给点提示,比如说,某个网警想知道到底李四要给张三发什么信息?网警想破解李四的密文,那么网警有什么办法可以获得李四要发的信息呢?很显然获得密文直接暴力破解是不可能的!

    小提示,网警可以冒充张三!!!!发送给李四“网警的公钥”,而不是“张三的公钥”,那么当李四收到该公钥的时候,就不假思索的使用该公钥加密了他的信息,然后毫不犹豫的将加密的密文发了过去,然后网警得意的笑了。

    所以,问题在哪呢?这就是数字签名和数字证书的来历!我们下回接着白话。

    白话解释 电子签名,电子证书,根证书,HTTPS,PKI 到底是什么

    更多内容欢迎访问:作者博客


    读完本文章,你可以继续看如下文章:

    1. 白话解释 OSI模型,TLS/SSL 及 HTTPS(属于非对称加密算法的实际应用)
    2. 转载https://segmentfault.com/a/1190000004461428
    3. https://segmentfault.com/a/1190000012466003
    展开全文
  • 对称加密算法(Symmetric-key algorithm)和非对称加密算法(asymmetric key encryption algorithm)只不过就是密码学(encryption)中的两种解密算法罢了,什么是算法,你就可以理解成为是一种规则吧,这种规则可以将信息...

    对称加密算法(Symmetric-key algorithm)和非对称加密算法(asymmetric key encryption algorithm)只不过就是密码学(encryption)中的两种解密算法罢了,什么是算法,你就可以理解成为是一种规则吧,这种规则可以将信息从一种形式转变成另一种形式,不懂没关系,继续往下看。

    对称加密

    首先,让我们先从一个情景开始讲起,想当初我们在初中,高中,甚至于大学,每次考试都有人在试图如何更加隐蔽的作弊!那大家都想了什么方法呢?比如张三学习比李四好,李四就想在考试的时候让张三“帮助”一下自己,当然,他们俩不可能像我们平常对话一样说,第一题选A,第二题选B等等,为什么?因为监考老师明白他俩在谈论什么,也就是说这种沟通交流方式属于“明文”,所以李四就想:“我需要发明一种,只有我和张三明白的交流方式”,那李四做了什么呢?恩,李四去找张三说:“当我连续咳嗽三声的时候你看我,然后如果我摸了下左耳朵,说明你可以开始给我传答案了,如果没反应,那说明我真的是在咳嗽。。。。”, 然后,怎么传答案呢?很简单,“你摸左耳朵代表A, 摸右耳朵代表B,左手放下代表C,右手放下代表D”,好了,这就是他们的“算法(规则)”,将信息的一种形式(A,B,C,D),这里我们称为“明文”,转换成了另一种形式(摸左耳朵,摸右耳朵,放左手,放右手),这里称为“密文”,经过这种转换,很显然监考老师不会明白这些“密文”,这样,张三和李四就通过“密文”的形式实现了信息的交换。

    其实,密码学不就是为了人们更好的加密传输么?有很多学者,科学家成年累月的工作,为的就是改进或者发明更好的加密算法,让这些加密算法加密的文本难以破解,达到数据安全传输的目的。

    OK,回归正题,上面这个“作弊”的例子,其实就是一种对称加密算法!好了,我们来看一下对称加密算法的定义(来源:wikipedia):

    对称密钥加密(英语:Symmetric-key algorithm)又称为对称加密、私钥加密、共享密钥加密,是密码学中的一类加密算法。这类算法在加密和解密时使用相同的密钥,或是使用两个可以简单地相互推算的密钥。实务上,这组密钥成为在两个或多个成员间的共同秘密,以便维持专属的通讯联系。与公开密钥加密相比,要求双方取得相同的密钥是对称密钥加密的主要缺点之一

    这里我想说一点的是,wikipedia的把Symmetric-key algorithm中文翻译是 对称密钥加密,我不想把这个key翻译成密钥,因为key仅仅是一个“钥”,这里翻译成密钥会让大家对后面所说的“公钥”,“密钥”,“私钥”等等的概念弄混,好了,所以我还是比较喜欢称之为“对称加密算法”,而后面说又称“私钥”加密,共享“密钥”,这里,“私钥”就等于“密钥”,没有任何区别,英文是“private key”。

    ok,我们将定义结合我们前面的例子对应一下,“这类算法在加密和解密时使用相同的密钥,或是使用两个可以简单地相互推算的密钥”,其实在我们例子中,密钥就是“将(A,B,C,D)转换成(摸左耳朵,摸右耳朵,放左手,放右手)”这么一个规则。“实务上,这组密钥成为在两个或多个成员间的共同秘密,以便维持专属的通讯联系。” 这句话很好理解了吧,密钥是张三和李四间共同的秘密!只有他俩事先知道。

    所以,为什么叫对称加密呢,你可以这么理解,一方通过密钥将信息加密后,把密文传给另一方,另一方通过这个相同的密钥将密文解密,转换成可以理解的明文。他们之间的关系如下:

    明文 <-> 密钥 <-> 密文

    这样看,是不是感觉对称比较好理解了。ok,那么我们现在有哪些现成的对称加密算法可以用么?当然有:

    常见的对称加密算法有DES、3DES、AES、Blowfish、IDEA、RC5、RC6。

    想深入了解的同学,可以自行查阅资料了。

    非对称加密

    我们再来说说非对称加密,非对称加密是一种比对称加密更加优秀的加密算法,当然算法有利有弊,对称加密速度快但是安全性相对于非对称加密来说低,为什么呢,你想啊,要想使用对称加密,那么分享信息的各个个体之间都需要分享这个密钥,比如你们1000个人之间都使用同一个密钥进行密文传输,只要其中一个人密钥被盗窃了,那么整体加密的信息将都被破解了。好了,那么我们开始说说非对称加密。

    就从上面提到的这个对称加密的缺点开始,怎么做到即时一个人的密钥被盗窃了,最起码保证你给其他人发送密文不被破解。于是,人们就想出了这么个办法,首先,我们停止分享共同的密钥,因为上面的bug就是来源于共享一个密钥,那么怎么办呢?每个人生成一个“私钥-公钥”对,这个私钥需要每个人自行进行保护!公钥可以随便分享,后面详细说,同时,生成的这个“私钥-公钥”对还有个强大的功能就是,使用私钥加密的信息,只能由该私钥对应的公钥才能解密,使用公钥加密的信息,只能由该公钥对应的私钥才能解密!

    好了,比如说张三生成了他自己的一个“私钥-公钥”对,叫做“张三私钥-张三公钥”,李四生成了他自己的一个“私钥-公钥”对,叫做“李四私钥-李四公钥”,之前我们说过私钥要每个个体自己进行保存,公钥可以随便分享,目的是为什么呢?是为了加密信息!

    比如,李四想给张三发送密文。
    于是李四开始给张三发QQ

    李四:
    “hi哥们,我想给你发个密文,把你的公钥给我发过来用用。”
    
    张三:
    “没问题的,这是我的公钥: d#8yHE8eU#hb*!neb,用这个公钥加密你的信息后给我发过来吧”
    
    李四:
    “这是我想对你说的话: *&#@uehuu(**#eehu&$##bfeu&&”

    恩?你是不是有点疑问呢?咳咳,李四这是作死的节奏?为什么公开问公钥?不怕被网警查水表?哈哈,非对称解密算法的威力就在这里!无所谓!随便谁截取!我们上面说了,公钥可以随意分发,所以即使别人截取了,也只是知道该公钥而已,但是要是想解密使用该公钥加密的密文!只有一个人可以办得到!就是张三! 为什么?李四使用张三的公钥加密的信息,只有张三的公钥所对应的私钥,这里就是“张三私钥”,该私钥才可以解密!所以,没有张三私钥的第三方即时截取了这些密文,也破解不了!或者更严格的说在有限时间内比如说几千年内是暴力破解不出的!

    懂了吧?所以网警们哭了,本以为想监视他们的对话,可惜一无所获!

    我们来看看非对称加密的官方定义:

    公开密钥加密(英语:public-key cryptography,又译为公开密钥加密),也称为非对称加密(asymmetric cryptography),一种密码学算法类型,在这种密码学方法中,需要一对密钥(其实这里密钥说法不好,就是“钥”),一个是私人密钥,另一个则是公开密钥。这两个密钥是数学相关,用某用户密钥加密后所得的信息,只能用该用户的解密密钥才能解密。如果知道了其中一个,并不能计算出另外一个。因此如果公开了一对密钥中的一个,并不会危害到另外一个的秘密性质。称公开的密钥为公钥;不公开的密钥为私钥。

    hmm。。这个定义有点绕,不过就是说,要想使用非对称加密算法,首先要有一对key,一个被称为private key私钥,一个成为public key公钥,然后可以把你的public key分发给想给你传密文的用户,然后用户使用该public key加密过得密文,只有使用你的private key才能解密,也就是说,只要你自己保存好你的private key,就能确保,别人想给你发的密文不被破解,所以你不用担心别人的密钥被盗,没关系。

    正因为,这种加密是单向的,所以被称为非对称加密算法。

    这种加密算法应用非常广泛,SSH, HTTPS, TLS,电子证书,电子签名,电子身份证等等。

    这篇文章先写到这里,接下来我将像大家挨个介绍这些加密算法的应用,不过我在这里先埋个伏笔,上面我提到的李四和张三发qq,即时使用非对称加密算法,大家有没有发现仍然有哪些隐患呢?

    给点提示,比如说,某个网警想知道到底李四要给张三发什么信息?网警想破解李四的密文,那么网警有什么办法可以获得李四要发的信息呢?很显然获得密文直接暴力破解是不可能的!

    小提示,网警可以冒充张三!!!!发送给李四“网警的公钥”,而不是“张三的公钥”,那么当李四收到该公钥的时候,就不假思索的使用该公钥加密了他的信息,然后毫不犹豫的将加密的密文发了过去,然后网警得意的笑了。

    所以,问题在哪呢?这就是数字签名和数字证书的来历!我们下回接着白话。


    读完本文章,你可以继续看如下文章:

    1. 白话解释 OSI模型,TLS/SSL 及 HTTPS(属于非对称加密算法的实际应用)

    上回我们白话了密码学中的两种算法,对称加密算法和非对称加密算法,我们有了这两种算法,我们就要将他们应用到实际生活中,就像我们学会了99乘法表,就可以让我们在实际生活中快速的计算啦!

    所以本节课程的先决条件就是,看并掌握我之前白话的这篇文章:对称加密算法vs非对称加密算法

    我们先从互联网开始说起,说到互联网我们就不得不提一下计算机,因为计算机是互联网组成的一个很重要的部分,我们要想使用互联网进行交流就必须使用计算机(注意!我这里的“计算机”是一个统称,爱钻牛角尖的童鞋,不要说,除了计算机还有手机啊,ipad啊,智能手表啊!!!!恩,好了,别闹了)。

    然后问题来了,要想形成互联网,计算机和计算机之间就必须相连起来(废话!),于是我们就有了“网线”,当然这里的“网线”也是泛指,因为现在大家家里都用的是无线网!不过无论有线网还是无线网,他们都是通过“物理”途径进行传播信号的!有了这些“联系”,我们计算机和计算机之间有了传递信息的“途径”了,但是!这里仅仅是提供了一个途径,但是如果想让计算机之间彼此了解传输的信息,那么我们必须定义一系列的协议,这些协议是计算机之间都能够明白的,同时发送和接受要严格按照协议去做!就像张三是中国人和王石头是印度人,他们俩要想交流,就要先建立一个途径,无论是加qq还是发邮件,同时他们俩还得说一样的话,不能张三说中国话,王石头说印度话。

    所以,这就是好多互联网协议的来历,比如IPv4, IPv6, TCP,UDP,HTTP,FTP,SMTP,TLS/SSL,HTTPS等等。

    那么我们再来想一下,比如,张三想通过QQ发送给李四一句“踢球去不?”,那么谁来将我们发出去的信息转换成协议规定的形式呢?QQ这个软件?操作系统?网卡?路由器?网线?还是我们的ISP(网络服务提供商,你可以理解成电信,移动,网通等等)。

    其实,这些都会涉及到,所以即使你简简单单的发送一句“踢球去不?”需要涉及到这么多内容,所以,这里要引入一个模型,叫做OSI模型,全称“开放式系统互联通信参考模型”(英语:Open System Interconnection Reference Model)。

    这个模型是干嘛的呢?就是将计算机和计算机之间信息交换“概念化”成不同的层次,每层分别有它自己的“实现”,每层有它自己的任务,同时“向上”提供“抽象”的“接口”供上层使用。一般分成7层或者5层。为了简便期间我这里按照5层架构说一下,这五层分别是:

    • 应用层(application layer)

    • 传输层(transport layer)

    • 网络层(network layer)

    • 数据链路层(data link layer)

    • 物理层(physical layer)

    回到我们的例子,当张三用QQ向李四发送一条信息时,首先QQ属于应用层,应用层需要将信息发送给传输层,传输层经过处理之后传给网络层,以此类推传给物理层,这样一层层向下“包装”,每层有对应的协议,这样最后通过物理层传出去,传到李四的物理层,然后李四那边通过一层层向上按照协议“解包”,最后到应用层,传到李四的qq里。

    所以每层都有相对应的协议比如我们的物理层和数据链路层通过无线网传输使用的802.2传输协议,有线网的Ethernet(以太网)传输协议,还有网络层的IPv4, IPv6协议,传输层的TCP, UDP协议,而我们熟悉的HTTP协议其实属于应用层,所以HTTP是建立在TCP/IPv4或v6/以太网基础上进一步细化用于传输“超文本”信息的协议,比如FTP也属于应用层,也是在下面各层协议基础上进行细化,专门用于“文件传输”的协议。

    大家可以看到,协议越往上越具体,越往下约抽象,其实计算机技术的发展就是一层层的向上抽象,这样上层的可以直接使用下层的“成果”(API)!

    我们再来说一下TLS/SSL,SSL(secure sockets layer)是TLS(transport layer security)的前身,为什么将他们合起来的,大家可以理解成都属于同一东西的不同阶段吧,比如该协议之前叫SSL后来改名成TLS了。

    为什么要有这种协议呢?因为HTTP是使用明文传输,随着网络的发展,安全性越来越重要,所以大家就要想办法让传输更加安全,同时使用密码学的成果,利用“非对称加密算法”的思想以及OSI模型,来对HTTP的信息进行加密。

    因为上面我们说了,根据OSI模型,如果向外传输信息就是要从上到下挨个层进行,TLS/SSL也是位于应用层,所以为了加密HTTP的内容,那么TLS/SSL必须位于HTTP下面,可以看成这样:

    HTTP
    TLS/SSL
    TCP
    Ip
    ..

    信息从HTTP经过TLS/SSL非对称加密后传出去,而在接收方,接收到信息是需要一层层向上进行,经过每层的“解包/解密”,最终通过HTTP转换成超文本信息。

    所以HTTPS 就是 “HTTP内容向下传输的时候加了一层TLS/SSL加密”,仅此而已,这样,我们就可以实现,使用HTTP协议进行互联网信息传播的时候,对信息进行加密处理了,相信大家已经对非对称加密算法有一定了解了。比如说我们通过HTTPS连接某银行网站,这样我们就可以将我们的密码通过银行给我们的公钥进行加密后发送给银行,而避免了在传输过程中被他人偷看的可能,因为即使他们讲我们的密文盗走,也无法解密,只有银行网站可以解密,为什么?因为只有银行拥有与我们使用“公钥”加密相对的那个“私钥”。

    但是同样的问题,就是我们怎么知道我们使用的公钥就是银行给我们的呢?即使我们所访问的域名和银行的域名一致,因为黑客完全可以通过修改我们本地的hosts文件,或者入侵dns,将域名映射到黑客的服务器。

    所以,这就是CA(certificate authority),数字证书,数字签名,公钥基础设施(PKI)等等名词的来历。



    展开全文
  • RSA算法是一个著名的非对称加密算法,作用是对信息进行加密。之所以称之为非对称的,这是相对于对称加密算法来说的。在对称加密算法中,加密与解密所需的密钥是一致的,比如著名的凯撒加密中,信息加密者对每个字母...

    0 介绍

    RSA算法是一个著名的非对称加密算法,作用是对信息进行加密。之所以称之为非对称的,这是相对于对称加密算法来说的。在对称加密算法中,加密与解密所需的密钥是一致的,比如著名的凯撒加密中,信息加密者对每个字母取此字母三位后的字母,如a->d,b->e,接收者收到密文后取每个字母前三位字母即可。而非对称加密中,通信双方各自拥有一个不同的密钥,发送者发送加密后的报文和自己的密钥,接受者收到后用自己的密钥(私钥)和来自发送者的密钥(公钥)将密文解密。也就是说,只要接收者不泄露自己的密钥,那么就没有人可以解密密文。这就是非对称加密的高明之处。RSA是非对称加密算法中最优秀的算法,下面具体讲解一下。

    1 简单数学基础

    首先介绍两个重要的等式,有兴趣的同学可以证明一下,不会证明也没关系,会用就行。mod表示取模运算。

    1. (a mod n)d mod n=ad mod n(a\ mod\ n)^d \ mod\ n = a^d\ mod \ n
    2. 对于任意的x,yx,y,有xy mod n=xymod  z mod nx^y\ mod\ n = x^{y\mod z} \ mod\ n,其中nn表示两个质数pqp、q的积,n=pqn = pq,而z=(p1)(q1)z = (p-1)(q-1).

    为什么要介绍这两个等式呢,因为我们通常发送的报文最终可以看作是一个01字符串,我们可以将这个字符串转换成为一个唯一的10进制整数,如1010->10,1111->16,那么这个10进制整数就可以拿来做模运算,实现加密。

    2 RSA算法计算

    根据前面的数学基础,我们看看计算过程。现在我们手里有一个报文生成的10进制数mm,然后:

    1. 选取两个大质数p,qp,q,它的二进制最高位一般要取1024位以上
    2. 计算n=pq,z=(p1)(q1)n = pq,z=(p-1)(q-1)
    3. 选择一个ee,满足e <ne\ < n,且e,ze,z互质(没有公约数)
    4. 选择dd使得ed1ed-1可以被z整除(ed1 mod z=1ed-1\ mod\ z = 1)
    5. 我们将(n,e)(n,e)称作公钥kB+k_B^+(n,d)(n,d)称为私钥kBk_B^-

    发送方加密时,使用公钥,加密结果为c=(me mod n)c = (m^e\ mod\ n),接受方解密时,收到密文与公钥,首先对ccdd次方,有cd mod n=(me mod n)d mod n=(mmed1) mod n=mc^d\ mod\ n = (m^e\ mod\ n)^d\ mod\ n = (m*m^{ed-1})\ mod\ n=m,这样我们就还原出了mm.

    3 安全性分析

    现在分析一下RSA算法的安全性,假如发送方的报文被截获,截获者想要解密,但是又没有密钥,所以打算使用暴力方法试出密钥(n,d)(n,d)。这个问题等价于:在知道nn的情况下,对nn进行分解质因数,得到p,qp,q。事实上对一个数千位长的大素数进行质数分解几乎是不可能的。知乎一篇文章写道,目前已知破解的最大整数分解为:

    1230186684530117755130494958384962720772853569595334792197322452151726400507263657518745202199786469389956474942774063845925192557326303453731548268507917026122142913461670429214311602221240479274737794080665351419597459856902143413
    =
    33478071698956898786044169848212690817704794983713768568912431388982883793878002287614711652531743087737814467999489
    x
    36746043666799590428244633799627952632279158164343087642676032283815739666511279233373417143396810270092798736308917

    这个数字有232个十进制位,768个二进制位,目前被破解的最长RSA密钥就是768位。实际应用中 RSA 的密钥长度为 1024 位,重要场合 2048 位,以目前计算机的计算水平来说,要计算个五十年以上,所以RSA的安全性极高。

    展开全文
  • 对称加密算法分析与设计

    千次阅读 2020-11-15 19:03:18
    本文对现代对称加密算法进行了分析和设计。首先对不同类型的加密算法进行了概述,指出了它们的安全性要求以及它们在方法上的根本区别。然后我们将重点放在分组密码,并解释在现代密码分析中使用的基本策略和技术。...

    对称加密是密码学领域中最古老的分支,至今仍是最重要的一个分支。本文对现代对称加密算法进行了分析和设计。首先对不同类型的加密算法进行了概述,指出了它们的安全性要求以及它们在方法上的根本区别。然后我们将重点放在分组密码,并解释在现代密码分析中使用的基本策略和技术。为了说明这一点,我们提出了一些具体的攻击,这些攻击基于一些新的思想,但仍然是基本方法的很好的例子。最通用和强大的分析技术之一是线性密码分析,这就是为什么我们专门用一个单独的章节来讨论它。我们推导了一个新的理论框架,允许严格和准确地分析这种攻击的性能,同时将攻击扩展到同时利用多个线性近似。在本文的第二部分,我们集中讨论对称加密算法的设计。我们首先介绍了分析和分类替换盒的工具,替换盒是设计抵抗第一部分所讨论攻击的分组密码的重要组成部分。在此基础上提出了一种新的基于分组分析的密码增强策略。这最终导致了一个紧凑而优雅的新型流密码TRIVIUM规范。

     

    Symmetric encryption is the oldest branch in the field of cryptology, and is still one of the most important ones today. This thesis covers several aspects of the analysis and design of modern symmetric encryption algorithms. The thesis starts with an overview of the different types of encryption algorithms, pointing out their security requirements and their fundamental differences in approach. We then focus on block ciphers and explain the basic strategies and techniques used in modern cryptanalysis. In order to illustrate this, we present some concrete attacks, which are based on a number of new ideas, but still serve as nice examples of the basic approach. One of the most generic and powerful analysis techniques is linear cryptanalysis, which is why we devote a separate chapter to it. We derive a new theoretical framework which allows to rigorously and accurately analyze the performance of this attack, and at the same time extend the attack to simultaneously exploit multiple linear approximations. In the second part of this thesis, we concentrate on design aspects of symmetric encryption algorithms. We first present tools to analyze and classify substitutions boxes, components which play an important role in the design of block ciphers which resist the attacks discussed in the first part. We then present a new design strategy for stream ciphers based on techniques similar to those used to strengthen block ciphers against linear cryptanalysis. This eventually leads to the specification of a compact and elegant new stream cipher called TRIVIUM.

     

    1.  引言

    2.  对称加密

    3.  分组密码分析

    4.  再论线性密码分析

    5.  S-Box分类

    6.  流密码设计

    7.  结论与开放问题

    附录A SHA-1中的微分特性

     

    完整资料领取

    展开全文
  • [b]一、什么是非对称加密算法[/b] 加密和解密所用的密钥是不一样的,所以叫“非对称”。 非对称加密算法的这两个密钥,一个称为公钥,一个称为私钥。 所谓公钥和私钥不是绝对的,公钥和私钥只是经过算法...
  • 本文本身并没有解释上述算法,而是使用各种Python库为这些算法提供了Python实现。该Github存储库中将提供本文中使用的所有代码。RSA(Rivest-Shamir-Adleman)RSA是包含两个密钥的公共密钥加密,一个是公开密钥,可...
  • 「非对称加密算法」需要两个密钥:公钥(publickey)和私钥(privatekey)。公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密;如果用私钥对数据进行加密,那么只有用对应的公钥才能解密。...
  • 简单理解非对称加密算法

    千次阅读 2014-09-29 17:29:08
    最初理解非对称加密算法是一件很难的事,可能需要看一些晦涩难懂的读物看很长时间才能理解得了,所以今天我打算用一个简单的例子来解释对称加密算法,希望可以帮助大家快速的理解这个概念。首先,我们设想这样一个...
  • 对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有...
  • 这是我前些年写在51的,现在转过来,其实是CISSP的学习笔记,用自己的语言组织起来的,用通俗的话说明对称加密、非对称加密、散列算法、PKI(CA)到底都是干啥的。OK,进入主题: 密码学要解决的问题:机密性、完整...
  • 解释对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么...
  • 关于对称加密算法,这个不多作解释,百度百科给出的说明如下:des对称加密,对称加密,是一种比较传统的加密方式,其加密运算、解密运算使用的是同样的密钥,信息的发送者和信息的接收者在进行信息的传输与处理时,...
  • RSA加密算法解释与C++实现

    千次阅读 2020-05-03 01:38:22
    最近因为一些原因对密码学产生了点兴趣,继之前...RSA算法是一种典型的不对称加密算法,说到不对称加密就会想到对称加密,在密码学加密算法大致可分为两种:对称加密与不对称加密。 对称加密 什么是对称加密,简单来...
  • 背景分析 简单来讲,对称加密就是加密解密都是同一个秘钥,而非对称加密就是加密用一个公钥,解密要用自己保存的秘钥。 reference 介绍 java实现rsa算法 如何用通俗易懂的话来解释对称加密?
  • 最近在学习指纹支付相关的知识,这篇博客是讲解有关加密解密相关知识的,原文地址如下: ...1.1、公钥密码体制(public-key cryptography)公钥密码体制分为三个部分,公钥、私钥、加密解密算法,它的加密
  • 参考文献 《PKI/CA 与数字证书技术大全》书籍 ...非对称加密算法有多种,比如 RSA, Elgamal, 背包算法, Rabin, D-H, ECC, SM2 等。如下仅仅对 RSA, ECC, SM2 算法进行解释。 RSA RSA 算法是由美...
  • 注:以下图片来自于《图解密码学》,这本书讲的更全面细致,建议阅读,在我资源库中有此书,还有使用go语言具体实现和解释此书中的各种加密算法的文档,有需要的可以自习前往免费下载 一图全览 五种模式详解 ...
  • 加密算法

    2020-06-07 14:47:56
    解释: 在对称加密算法中,数据发信方将明文和加密密钥一起经过特殊的加密算法处理后,使其变成复杂的加密密文发送出去,收信方收到密文后,若想解读出原文,则需要使用加密时用的密钥以及相同加密算法的逆算法对密文...
  • DES(Data Encryption Standard):对称算法,数据加密标准,速度较快,适用于加密大量数据的场合; 3DES(Triple DES):是基于DES的对称算法,对一块数据用三个不同的密钥进行三次加密,强度更高; RC2和RC4:...
  • RSA RC4算法,数据加密标准(DES),国际数据加密算法(IDEA)以及Skipjack加密技术都属于对称加密方式。非对称加密,当发送信息时,发送方使用接收方的公钥对数据加密,而接收方则使用自己的私...
  • 对称加密采用了对称密码编码技术,它的特点是文件加密和解密使用相同的密钥加密也就是密钥也可以用作解密密钥,这种方法在密码学中叫做对称加密算法对称加密算法使用起来简单快捷,密钥较短,且破译困难,除了数据...
  • 加密算法--简述

    2017-03-31 20:31:55
    对称加密算法解释:假设两个用户(服务端、用户)要加密交换数据,双方交换公钥,使用时用户用服务端的公钥加密,服务端即可用自己的私钥解密。如果企业中有n个服务端,企业需要生成n对密钥,并分发n个公钥。由于...
  • 在此前的工作中,使用了几次非对称加密算法,然而每次都只知道怎么使用,而不知其原理。或许因为涉及到的数学理论比较多,当我试图从网上的文章中去理解非对称加密的时候,总感觉友好程度不够,因此才萌生出用大白话...

空空如也

空空如也

1 2 3 4 5 ... 11
收藏数 217
精华内容 86
关键字:

对称加密算法解释