关于密码学的一些理解

在印象中,密码学的应用场景就是各种解锁、账户登录等等,在现实中,好像都很容易被破解,再厉害些的,像战争时期的不断升级密码战等等,也几乎难逃破解命运。

直到最近看了区块链技术底层的密码学基础,才对密码学有了新的认识。原来,加密还分为对称加密非对称加密,两者的安全级别有质的差别。

一、对称加密

根据维基百科定义:

对称加密,是密码学中的一类加密演算法。这类演算法在加密和解密时使用相同的密钥,或是使用两个可以简单地相互推算的密钥。

原来,之前所了解的加密技术都是对称加密。而对称加密的应用中,甲方必须把密码告诉乙方,否则乙方无法解密。这中间传递信息的过程,安全性无法保证。

那怎么提高安全性呢?有没有可能在不传输密码的情况下,乙方来解密?

这就涉及到非对称加密。

二、非对称加密

根据维基百科定义:

非对称加密,是密码学的一种演算法,它需要2个密钥,一个是公开密钥,另一个是私有密钥;一个用作加密的时候,另一个则用作解密。由于加密和解密需要2个不同的密钥,故被称为非对称加密。

据了解,公钥和私钥是基于数学的椭圆曲线加密算法生成的,该算法的特性导致:私钥可以导出公钥,但公钥无法反推私钥。

而且,私钥不可公开,需要个人妥善保管,但公钥是可以公开的。那非对称加密如何更加安全可靠的实现加密、解密过程呢?为了便于理解,我们把加密类比成锁,解密类比成钥匙


1、公钥加密,私钥能解密。

目的:我们要在保密的前提下,传输一封邮件。

首先,生成一对匹配的锁(公钥)和钥匙(私钥)。

1)只有我自己有这把钥匙,然后把锁给你;

2)你用我的锁把邮件锁上,然后发给我;

3)我收到之后,用这把独有的锁可打开邮件。

完。

你看,整个过程没有出现任何密码的传输,即使锁(公钥)告诉所有人,那又怎样?只有我有唯一的一把钥匙,能解开这把锁。

2、私钥做数字签名(加密),公钥能验证(解密)。

先做一些概念解释:

哈希:

将任意长度的内容进行哈希运算,生成固定长度的字符串;

内容不变,生成的字符串不变,内容变化,则字符串必变化;

这个过程是不可逆的,即不能通过结果导出哈希之前的内容。

签名:

对内容进行哈希之后形成固定长度的字符串,用私钥对该字符串进行加密,生成的字符串。

关于公钥、私钥之间的加密、解密关系:

一对私钥,用其中的私钥加密,则只能用对应的公钥解密。

明确概念之后,我们来明确目的:

你要验证我所发布的文章内容是不是我写的,且未被篡改。

那么,首先生成一对匹配的锁(私钥)钥匙(公钥)

1)用我的私钥对文章的哈希值进行加密,形成字符串。

即,把我想发布的内容的哈希值用我的锁(私钥)锁起来,因此自动形成一个对应的签名(字符串);

2)把内容和签名放在一起发布出去,并且告诉大家我的钥匙(公钥)是什么。

把内容和签名一起发出去,收到内容的人将该内容进行哈希,若得到的哈希值和用钥匙(公钥)解密得到的值一致,则证明内容未被篡改;

3)人们可以拿到钥匙(公钥)来打开(解密)签名里的内容,以验证是不是跟发布的内容一致。

那怎么确定这个公钥就是发件人的呢?可以去第三方CA,来验证数字证书,确认身份。

完。

从中可知,即使所有人都有钥匙(公钥),但只有我有唯一的锁(私钥),所以,只要我签过名(用锁加密了原文的哈希值),你用钥匙(公钥)解密,得出原文哈希值,和通过哈希发布内容得出的哈希值一致,则可验证你看到的这篇文章一定跟我发布的内容一致。

关于这两种加密解密,有另一个角度的理解:

对于公钥加密,私钥解密:

既然是加密,那肯定是不希望别人知道我的消息,所以只有我才能解密,所以需要公钥负责加密,私钥负责解密

私钥做数字签名(加密),用公钥验证(解密):

同理,既然是签名,那肯定是不希望有人冒充我发消息,只有我才能发布这个签名,所以可得出私钥负责签名,公钥负责验证。

先到这,至于如何证明你是你,从而证明是谁发布的内容,后续还需继续探讨。

你可能感兴趣的:(关于密码学的一些理解)