你的心脏不是对称的,就跟你的脸一样。
首先要隆重介绍,密码学永远的男主角跟女主角,Alice 和 Bob。
他们两个是青梅竹马、是情侣、是老师跟学生、是小王子跟他的玫瑰、是我跟你。
他们代表着互相通讯的两人。
Alice 永远想要传讯息给 Bob,而 Bob 永远想要知道 Alice 传了什麽给他
(绝对没有不读不回这种事,那是讨厌的人才会做的事)
於是Alice 和 Bob 会用各式各样的加密方式,传送他们的讯息。
Eve 是个小变态,他会在中途偷听他们传了什麽,但是他不会窜改讯息。
但是 Oscar 就没那麽简单了,Oscar是坏人,他不仅会偷听他们的讯息,还会窜改讯息(坏吧)。
除此之外,还有Charlie、Issac、Ivan、Justin、Mallory、Matilda、Peggy、Steve、Walter 等等等等等。
每个人都有不同的能力(好像在玩游戏),代表着不同的角色。
所谓对称式加密(Symmetric Encryption),就是加密跟解密用的密钥是同一个。
对称式加密相对於非对称式加密( 又称公钥加密 )。
白话文来说,假设Alice 要寄信给 Bob,那麽Alice要将她的信投到Bob的信箱之前,会用一把钥匙把信箱打开,然後把信投进去(假设他的信箱没有投递的孔)。接着Bob要拿信的时候,就用一把一模一样的钥匙把信箱打开,得到他的信。
这样一个用同样密码加密跟解密的过程,就叫对称式加密。
对称式加密的底下,又分成串流密码(stream cipher)和区块密码(block cipher)。
差别在於,加密是以位元为单位、区块加密是以区块为单位。
而串流加密的速度通常比较快、区块密码速度较慢。
详细原理我们留待明後天介绍。
非对称式加密(Asymmetric Encryption),又称公钥加密。
相对於对称式加密,是一种加密和解密使用不同密钥的加密方式。
非对称式加密稍微复杂一些,我举个例子好帮助理解。
假设Alice要寄信给Bob。
於是Bob就拿出一个盒子和锁,这个锁就是公钥(public key)。
接着Alice把信放到盒子里锁起来,寄给Bob。
只有Bob才打得开这个盒子,因为只有他拥有锁的钥匙,也就是私钥(private key)
要注意:这个私钥需要保藏的非常好。
而私钥可以推导出公钥,但是私钥不能推导出公钥。
於是在真实情况底下,做为一个收件人,你得先产生一个私钥、并用这个私钥推导出公钥。
接着,公开你的公钥给所有人。
当有人想要传讯息给你的时候,他使用你的公钥加密他要传的讯息,这个讯息一经加密,就只有你解的开。
你收到讯息後,就可以使用私钥将密文转换回明文。
由於对称式加密在不同对象之间就需要不同的密钥(并且要储存),
而公钥加密只需要产生一对公私钥,只需记住自己的私钥即可,
所以公钥加密在密钥管理上较为方便。
对称式密较为简单,因此速度较快。
对称式加密的密钥长度较短、非对称式加密的密钥较长,
除此之外,运算的复杂度也让非对称式加密更为安全。
对称式加密的特性是,速度快,安全度较低。
非对称式加密的特性是,速度慢,安全度较高。
而运算的速度跟安全性同等重要,毕竟一个极度安全,但要算到天荒地老的演算法也没有人要使用吧。
因此在实务上,会将两者交替使用,之後会再做详细介绍。
图片来源:
https://www.reddit.com/r/ProgrammerHumor/comments/8v3mqy/is_this_cryptography_meme_relatable_to_programmers/
https://sectigostore.com/blog/5-differences-between-symmetric-vs-asymmetric-encryption/
https://sectigostore.com/blog/types-of-encryption-what-to-know-about-symmetric-vs-asymmetric-encryption/
参考资料:
https://sectigostore.com/blog/types-of-encryption-what-to-know-about-symmetric-vs-asymmetric-encryption/
https://www.digicert.com/faq/ssl-cryptography.htm
>>: EP 8: Build a MockData and Register Page Route to Shell
以下笔记摘录自『 The Go Workshop 』。 列举 列举是一种定义一系列常数的方式,常数是...
今天终於没有要讲数字的语法了,要讲的是阵列 那J个是什麽呢,他是方便存放资料的资料型态 今天若是有多...
今天我们一样要来练习,今天要来练习的也是在数学中常常用到的。那我们就开始吧。 题目1 让使用者输入数...
课程目标 了解系统分析实务、系统分析工具之应用、逻辑资料库设计技巧、系统分析产出文件、同仁审查等,以...
在介绍 gulp-gh-pages 之前 我们必须先在 GitHub 上新增一个远端数据库 点选 N...