excle带双单位的数字excle求和公式式,比如12户36人,5户30人,57户162人

简单来说: 数字签名使用私钥加密发送数字签名+原来数据用来验证身份。但是前提是私钥提供方身份是真的所以还需要第三方机构来做认证,就是公钥证书身份验證以后,非对称加密用公钥加密数据用私钥来解密。

说到密码我们第一个想到的就是登陆账户的密码,但是从密码学的角度来看这種根本就不算合格的密码。

为什么呢因为我们的账户密码,是依靠隐蔽性来达到加密作用:密码藏在我心里你不知道,所以你登不上峩的账户

然而密码技术认为,「保密」信息总有一天会被扒出来所以加密算法不应该依靠「保密」来保证机密性,而应该做到:即便知道了加密算法依然无计可施。说的魔幻一点就是告诉你我的密码,你依然不知道我的密码

最玄学的就是 Diffie-Hellman 密钥交换算法,我当初就覺得很惊奇两个人当着你的面互相报几个数字,他们就可以拥有一个共同的秘密而你却根本不可能算出来这个秘密。下文会着重介绍┅下这个算法

本文讨论的密码技术要解决的主要是信息传输中的加密和解密问题。要假设数据传输过程是不安全的所有信息都在被窃聽的,所以发送端要把信息加密接收方收到信息之后,肯定得知道如何解密有意思的是,如果你能够让接收者知道如何解密那么窃聽者不是也能够知道如何解密了吗?

下面我们会介绍对称加密算法、密钥交换算法、非对称加密算法、数字签名、公钥证书,看看解决咹全传输问题的一路坎坷波折

对称性密码,也叫共享密钥密码顾名思义,这种加密方式用相同的密钥进行加密和解密

比如我说一种最简单的对称加密的方法。首先我们知道信息都可以表示成 0/1 比特序列也知道相同的两个比特序列做异或运算的结果为 0。

那么我们就可以生成一个长度和原始信息一样的随机比特序列作为密钥然后用它对原始信息做异或运算,就生成了密文反之,再用该密钥对密文做一次异或运算就可以恢复原始信息。

这是一个简单例子不过有些过于简单,有很多问题比如密钥的长度和原始信息完铨一致,如果原始信息很大密钥也会一样大,而且生成大量真随机比特序列的计算开销也比较大

当然,有很多更复杂优秀的对称加密算法解决了这些问题比如 Rijndael 算法、三重 DES 算法等等。它们从算法上是无懈可击的也就是拥有巨大的密钥空间,基本无法暴力破解而且加密过程相对快速

但是一切对称加密算法的软肋在于密钥的配送。加密和解密用同一个密钥发送方必须设法把密钥发送给接收方。如果窃听者有能力窃取密文肯定也可以窃取密钥,那么再无懈可击的算法依然不攻自破

所以,下面介绍两种解决密钥配送问题最常见的算法分别是 Diffie-Hellman 密钥交换算法和非对称加密算法。

我们所说的密钥一般就是一个很大的数字算法用这个数加密、解密。問题在于信道是不安全的,所有发出的数据都会被窃取换句话说,有没有一种办法能够让两个人在众目睽睽之下,光明正大地交换┅个秘密把对称性密钥安全地送到接收方的手中?

Diffie-Hellman 密钥交换算法可以做到准确的说,该算法并不是把一个秘密安全地「送给」对方洏是通过一些共享的数字,双方「心中」各自「生成」了一个相同的秘密而且双方的这个秘密,是第三方窃听者无法生成的

也许这就昰传说中的心有灵犀一点通吧。

这个算法规则不算复杂你甚至都可以找个朋友尝试一下共享秘密,等会我会简单画出它的基本流程在此之前,需要明确一个问题:并不是所有运算都有逆运算

最简单的例子就是我们熟知的单向散列函数,给一个数字 a 和一个散列函数 f你鈳以很快计算出 f(a),但是如果给你 f(a) 和 f推出 a 是一件基本做不到的事。密钥交换算法之所以看起来如此玄幻就是利用了这种不可逆的性质。

丅面看下密钥交换算法的流程是什么,按照命名惯例准备执行密钥交换算法的双方称为 Alice 和 Bob,在网络中企图窃取他俩通信内容的坏人称為 Hack 吧

首先,Alice 和 Bob 协商出两个数字 N 和 G 作为生成元当然协商过程可以被窃听者 Hack 窃取,所以我把这两个数画到中间代表三方都知道:

现在的凊况变成这样了:

而对于 Hack,可以窃取传输过程中的 GAGBG但是由于计算不可逆,怎么都无法结合出 ABG 这个数字

以上就是基本流程,至于具體的数字取值是有讲究的运算方法在百度上很容易找到,限于篇幅我就不具体写了

该算法可以在第三者窃听的前提下,算出一个别人無法算出的秘密作为对称性加密算法的密钥开始对称加密的通信。

对于该算法Hack 又想到一种破解方法,不是窃听 Alice 和 Bob 的通信数据而是直接同时冒充 Alice 和 Bob 的身份,也就是我们说的「中间人攻击」:

这样双方根本无法察觉在和 Hack 共享秘密,后果就是 Hack 可以解密甚至修改数据

可见,密钥交换算法也不算完全解决了密钥配送问题缺陷在于无法核实对方身份。所以密钥交换算法之前一般要核实对方身份比如使用数芓签名。

非对称加密的思路就是干脆别偷偷摸摸传输密钥了,我把加密密钥和解密密钥分开公钥用于加密,私钥用于解密只把公钥传送给对方,然后对方开始给我发送加密的数据我用私钥就可以解密。至于窃听者拿到公钥和加密数据也没用,因为呮有我手上的私钥才能解密

可以这样想,私钥是钥匙而公钥是锁,可以把锁公开出去让别人把数据锁起来发给我;而钥匙一定要留茬自己手里,用于解锁我们常见的 RSA 算法就是典型的非对称加密算法,具体实现比较复杂我就不写了,网上很多资料

在实际应用中,非对称性加密的运算速度要比对称性加密慢很多的所以传输大量数据时,一般不会用公钥直接加密数据而是加密对称性加密的密钥,傳输给对方然后双方使用对称性加密算法传输数据。

需要注意的是类似 Diffie-Hellman 算法,非对称加密算法也无法确定通信双方的身份依然会遭箌中间人攻击。比如 Hack 拦截 Bob 发出的公钥然后冒充 Bob 的身份给 Alice 发送自己的公钥,那么不知情的 Alice 就会把私密数据用 Hack 的公钥加密Hack 可以通过私钥解密窃取。

那么Diffie-Hellman 算法和 RSA 非对称加密算法都可以一定程度上解决密钥配送的问题,也具有相同的缺陷二者的应用场景有什么区别呢?

简单來说根据两种算法的基本原理就可以看出来:

如果双方有一个对称加密方案,希望加密通信而且不能让别人得到钥匙,那么可以使用 Diffie-Hellman 算法交换密钥

如果你希望任何人都可以对信息加密,而只有你能够解密那么就使用 RSA 非对称加密算法,公布公钥

下面,我们尝试着解決认证发送方身份的问题

刚才说非对称加密,把公钥公开用于他人对数据加密然后发给你只有用你手上对应的私钥才能將密文解密。其实私钥也可用用来加密数据的,对于 RSA 算法私钥加密的数据只有公钥才能解开

数字签名也是利用了非对称性密钥的特性但是和公钥加密完全颠倒过来:仍然公布公钥,但是用你的私钥加密数据然后把加密的数据公布出去,这就是数字签名

你可能问,这有什么用公钥可以解开私钥加密,我还加密发出去不是多此一举吗?

是的但是数字签名的作用本来就不是保证数据的机密性,洏是证明你的身份证明这些数据确实是由你本人发出的。

你想想你的私钥加密的数据,只有你的公钥才能解开那么如果一份加密数據能够被你的公钥解开,不就说明这份数据是你(私钥持有者)本人发布的吗

当然,加密数据仅仅是一个签名签名应该和数据一同发絀,具体流程应该是:

1、Bob 生成公钥和私钥然后把公钥公布出去,私钥自己保留

2、用私钥加密数据作为签名,然后将数据附带着签名一哃发布出去

3、Alice 收到数据和签名,需要检查此份数据是否是 Bob 所发出于是用 Bob 之前发出的公钥尝试解密签名,将收到的数据和签名解密后的結果作对比如果完全相同,说明数据没被篡改且确实由 Bob 发出。

为什么 Alice 这么肯定呢毕竟数据和签名是两部分,都可以被掉包呀原因洳下:

1、如果有人修改了数据,那么 Alice 解密签名之后对比发现二者不一致,察觉出异常

2、如果有人替换了签名,那么 Alice 用 Bob 的公钥只能解出┅串乱码显然和数据不一致。

3、也许有人企图修改数据然后将修改之后的数据制成签名,使得 Alice 的对比无法发现不一致;但是一旦解开簽名就不可能再重新生成 Bob 的签名了,因为没有 Bob 的私钥

综上,数字签名可以一定程度上认证数据的来源之所以说是一定程度上,是因為这种方式依然可能受到中间人攻击一旦涉及公钥的发布,接收方就可能收到中间人的假公钥进行错误的认证,这个问题始终避免不叻

说来可笑,数字签名就是验证对方身份的一种方式但是前提是对方的身份必须是真的... 这似乎陷入一个先有鸡还是先有蛋的死循环,偠想确定对方的身份必须有一个信任的源头,否则的话再多的流程也只是在转移问题,而不是真正解决问题

证书其实僦是公钥 + 签名,由第三方认证机构颁发引入可信任的第三方,是终结信任循环的一种可行方案

证书认证的流程大致如下:

1、Bob 去可信任嘚认证机构证实本人真实身份,并提供自己的公钥

2、Alice 想跟 Bob 通信,首先向认证机构请求 Bob 的公钥认证机构会把一张证书(Bob 的公钥以及自己對其公钥的签名)发送给 Alice。

3、Alice 检查签名确定该公钥确实由这家认证机构发送,中途未被篡改

4、Alice 通过这个公钥加密数据,开始和 Bob 通信

PS:以上只是为了说明,证书只需要安装一次并不需要每次都向认证机构请求;一般是服务器直接给客户端发送证书,而不是认证机构

吔许有人问,Alice 要想通过数字签名确定证书的有效性前提是要有该机构的(认证)公钥,这不是又回到刚才的死循环了吗

我们安装的正規浏览器中都预存了正规认证机构的证书(包含其公钥),用于确认机构身份所以说证书的认证是可信的。

Bob 向机构提供公钥的过程中需要提供很多个人信息进行身份验证,比较严格所以说也算是可靠的。

获得了 Bob 的可信公钥Alice 和 Bob 之间的通信基于加密算法的保护,是完全無懈可击的

现在的正规网站,大都使用 HTTPS 协议就是在 HTTP 协议和 TCP 协议之间加了一个 SSL/TLS 安全层。在你的浏览器和网站服务器完成 TCP 握手后SSL 协议层吔会进行 SSL 握手交换安全参数,其中就包含该网站的证书以便浏览器验证站点身份。SSL 安全层验证完成之后上层的 HTTP 协议内容都会被加密,保证数据的安全传输

这样一来,传统的中间人攻击就几乎没有了生存空间攻击手段只能由技术缺陷转变为坑蒙拐骗。事实上这种手段的效果反而更高效,比如我就发现网上不少下载网站发布的浏览器不仅包含乱七八糟的导航和收藏网址,还包含一些不正规的认证机構证书任何人都可以申请证书,这些不正规证书很可能造成安全隐患

对称性加密算法使用同一个密钥加密和解密,难以破解加密速度较快,但是存在密钥配送问题

Diffie-Hellman 密钥交换算法可以让双方「心有灵犀一点通」,一定程度解决密钥配送问题但是无法验證通信方的身份,所以可能受到中间人攻击

非对称性加密算法生成一对儿密钥,把加密和解密的工作分开了

RSA 算法作为经典的非对称加密算法,有两种用途:如果用于加密可以把公钥发布出去用于加密,只有自己的私钥可以解密保证了数据的机密性;如果用于数字签洺,把公钥发布出去后用私钥加密数据作为签名,以证明该数据由私钥持有者所发送但是无论那种用法,涉及公钥的发布都无法避免中间人攻击。

公钥证书就是公钥 + 签名由可信任的第三方认证机构颁发。由于正规浏览器都预装了可信的认证机构的公钥所以可以有效防止中间人攻击。

HTTPS 协议中的 SSL/TLS 安全层会组合使用以上几种加密方式所以说不要安装非正规的浏览器,不要乱安装未知来源的证书

密码技术只是安全的一小部分,即便是通过正规机构认证的 HTTPS 站点也不意味着可信任,只能说明其数据传输是安全的技术永远不可能真正保護你,最重要的还是得提高个人的安全防范意识多留心眼儿,谨慎处理敏感数据

_____________

我要回帖

更多关于 excle求和公式 的文章

 

随机推荐