攻略:七侠镇密码学的一段孽缘(浅析现代密码学理论框架)

前言:未经作者允许,严禁转载抄袭

生活中,必不可少的需要懂一点密码学的常识。从古至今,信息传递关于保密方式的故事有很多。在此不一一列举。今天,笔者想用一段孽缘爱情故事,通俗易懂的讲一讲现代密码学的基础理论。

话说,在七侠镇学校里,张三和隔壁班的依依处对象;

依依天资艳丽,活生生的是个美人胚子;

张三呢,也有两把刷子,对计算机编程比较熟悉,给依依修了多次电脑后,终得美人芳心。为此,张三无比珍惜与依依的感情关系;

七侠镇学校里还有个号称华北地区服务器最多的男人,江湖人称“老王”。老王喜欢依依很久,一直想给依依能修修电脑(顺便给电脑里装个木马,方便每天都能看看依依)。但始终被张三抢先得逞。郁郁不得志..

早点混迹江湖还有七侠镇的老镇长,是一个传说中的人物。江湖传闻,老镇长徒手能拆电脑,坐能逆向木马,是国际勒索病毒联盟早年克星之一。正因为行侠仗义,老镇长在七侠镇颇具威望。

(依依)
(张三)
(老王)

(老镇长)

一、怎样才能不被偷听——加密

在恋爱期间,张三和依依两人都没有安全意识。晚上谈一些不可描述性的话题时,总是被人偷听,两人为此苦恼很久。而偷听者就是老王。具体偷听过程如下:

(无加密情况)

张三非常苦恼,想了很久。终于在《王宁密码学》这本书中了解到加密的说法。“对呀!,只要能够将我和依依的对话进行加密,这样,就不害怕被别人偷听” 张三自言自语道。说干就干,他先和依依上商定一个密钥key(key 是一个随机数,别人猜不到)。从此张三和依依每天晚上就用这个key来对他们不可描述性的一些话题进行加密保护,如下图:

(对称加密)

备注:从图可知,依依在说话前对消息内容加密。发送消息时,不再直接发送传递“我爱你,三儿,今天你有空吗?”这么直白的明文,而是“&&%&@@22*&*”这种谁都看不懂的密文。即使被老王窃听到了,老王也看不懂,到底依依说了什么,是否老王还有机会?

张三在收到密文后,先用key对其进行解密,得到原始消息内容(我爱你,张三,今天你有空吗)。此时,张三开心的笑了...有空呀,嘿嘿

原理:

1. 这种加密方案在密码学里称为对称密码,加密方和解密方使用的是相同的密钥。

2. 知名的密码算法有 AES(2001)、Blowfish(1993)、DES(1977),再远一点,有二战时期的恩尼格码(转轮机原理,德国)、紫色密码(转轮机原理,日本),以及著名的凯撒密码、栅栏密码等。

3. 密码学里的“密码”和现实生活中的“密码”不是一回事儿!后者一般指的是口令(password),比如登录淘宝、QQ、ATA输入的那个。

一切就和读者想象的一样,张三和依依开启了一段幸福又疯狂的日子,日子就这样过着,原本以为两个人能一直幸福下去,谁知,道高一尺,魔高一丈,老王又来了…

二、如何交换密钥 ——非对称加密

老王自从发现依依的消息自己听不懂后,寝食难安。“到底依依怎么样了,依依还好吗?我该怎么办呢?” 果然号称华北地区服务器最多的男人老王,牛皮不是吹的。思考几天后,“这对狗男女一定是用了加密手段!这什么难的,能加密的住我老王?可笑!”

说干就干,老王随即找到破解方法:

(窃取密钥)

破解过程和思路就是,老王发现依依和张三经常会更换key。只要能来窃取key,有了key以后,老王就又能知道依依说的消息。自此,老王心里默想:“好白菜哪能让猪给滚了,我坚决不同意!”

(用窃取的密钥来解密)

有了key在手,老王每次都能像张三一样,听到依依都说了什么,进而采取必要措施,防止小白菜被猪滚。

张三也不是吃素长大的,每次都让老王得逞,打脸!回家重新研究《王宁密码学》,又有了新得绝招,非对称加密。具体过程如下:

(非对称加密)

张三搂着依依,大清早就把依依从睡梦中叫醒。

他和依依商量后,写下一对公钥、私钥。私钥(pri)由张三自己保管,而公钥(pub)则给依依。“亲爱的,以后你有什么想说的话,再给我发送之前,就先用公钥对信息内容加密。然后,我再用私钥进行解密。这样就不怕我们的消息被人偷听,破坏我们约会了?” 张三搂着依依,含情脉脉的对她说。“嗯嗯”,依依应允点头,靠在张三的肩上,仟细的胳膊搭在张三的胸前,“三儿,有你真好,能让我安心”

张三看了看依依的俏皮的小脸,忍不住狠狠亲了一口。随即,掏出一根烟,“啪”的点着。深邃的眼神凝视着房间的天花板,猛扎了一口,若有所思的自言自语,“依依,你要万分注意,只有私钥才能解密,即使偷听的人能够在你发送消息的时候窃取了公钥(pub),偷听者也是无法解密的!” “三儿,我知道了,我会每次记住用公钥加密内容的,你也保护好自己哦”。

备注:张三心理还是给自己留了空间的,假如以后还能有女朋友,也是可以把同一个公钥都发送给她们,每个女友都用这个公钥和自己通信。构成“多对一”的通信关系,就不用担心女友A能够偷听女友B和自己的聊天内容,因为毕竟公钥(pub)是无法解密的。对比之前的对称加密,张三则必须为每个女友都分发一个不同的key,这样非常容易搞乱关系,说错话。这就是非对称加密的魅力所在。

原理:

1. 上文提到的加密方式在密码学里称为非对称密码,所谓“非对称”指的是加密方和解密方用的密钥不一样。

2. 知名的非对称算法有:DSA(数字签名算法,只能用于签名,1991)、ECC(椭圆曲线加密,1985)、RSA(公钥加密算法,1977)等。

3. 这些算法除了用于加密外,还可以用于数字签名,本文后面会讲到。

4. 非对称算法有个致命弱点: 性能很低。实际应用中一般采用混合加密体制、哈希签名体制。

老王发现又听不到依依的消息,非常焦虑。苦心研究功法半年后,正式出山!再一次来到了这两人身边,老王是否能够解救在“水生火热”中久久不能自拔的依依?而张三又是否继续能和依依一直幸福下去,下一节更加精彩!

三、如何防止数据篡改——MAC

话说,老王在苦心研究功法半年后,功力绝非半年前可比。

(数据篡改)

这一次,老王决定不去做偷听这种没有技术含量的工作。而是转为修改依依和张三的对话, 来让依依知道张三也不是个好东西。此时,原本他把依依的原话“我爱你,三儿,今天你有空吗?” 直接改为“张三,我决定和你分手,我已经厌倦了你和你的身体,够了”。但是此时张三却不知道已经被篡改,还以为是依依的原话。张三听到依依的消息后,苦恼很久,,,,“难道她是知道了我做出格的事了?还是真的已经腻了?也怪自己一直迷恋计算机基础知识,没给她带来一些新的花样,新鲜确实是爱情的保鲜剂,,哎,,,怪我”

张三在接到消息后,立刻当面找到依依对质,发现:“纳尼??什么情况?依依还是爱我的呀,X了狗,一定有人在篡改依依的消息。” 是可忍孰不可忍,张三其实这半年,早就把《王宁密码学》熟读多遍,对这种套路的应对,早就烂熟于心。很快他就想出对策:

(消息认证码(MAC)防篡改)  

备注:为了简单起见,本例仅展示防篡改的情况,没有对 message 做加密。

张三的绝学就是:

上图中的MAC指的是 消息认证码(Message Authentication Code),具体解释:

1. 传入两个参数 message 和 key,进行一系列计算后得到一个值叫 MAC

2.  只有 message 和 key 相同的情况下,才能得到相同的 MAC

原理:

1. 跟对称加密一样,张三和依依会事先协商一个 key。

2. 依依使用 key 对 message 计算出一个 MAC1,并把 message + MAC1 发给张三。

3. 张三收到消息后,用自己的 key 对 message 计算出一个 MAC2,再比较 MAC1 和 MAC2 是否一致。

4. 根据 MAC 的性质,如果 message 被篡改,那么计算得到的 MAC2 一定不等于 MAC1,验证失败,张三得出结论:有人篡改了依依的消息。

5. 由于仅依依和张三拥有 key,所以别人无法篡改 message 后伪造出一个有效的 MAC。

6. 在检测篡改方面,还可以用HASH(散列)算法,包括MD5、SHA1/224/256/384/512等。比如版本控制系统GIT就使用SHA1来检查文件是否有修改。

7. 消息认证码有多种实现方式,其中最常见的是 HMAC(Hash MAC),即使用哈希算法来实现 MAC,还有一种是基于分组密码算法的 MAC,不常见。

四、如何校验身份—— MAC

同时,老王还可以冒充身份,恰恰MAC也可以识别:

(冒充身份)

老王发消息给张三,说“三儿,我是依依”。如果没有校验措施,张三可能就中招。同样,张三可以用以下方式进行防范:

(消息认证码(MAC)身份校验)  

因为只有依依和张三拥有相同的 key,所以张三只有在校验 MAC 成功时才会相信对方是 依依。而老王没有这个 key,伪造的 MAC 必然会校验失败,进而计谋不能得逞。

原理:

1. MAC包含几种实现方式:基于 HASH 的 MAC 称为 HMAC,应用比较广泛。

2. 还有阿里云的 Access Key,其实就是 HMAC 的原理。

3. 有时候在两个系统之间API调用时,会使用同一个 key 做 md5 计算来实现 API 鉴权,这称为“加盐HASH”,可以简单理解为 HMAC 的简化版。

4. 如果 key 被窃取该怎么办?这可以用 数字签名来解决。

五、数字签名的威力

数字签名,这个“签名”基本可以想象成现实生活中手写的签名,具有类似的作用。原理上和非对称加密有点像。但,有个很大的区别,发送方是用 私钥 进行签名,而接收方用 公钥进行验签,这跟加密情况正好相反

张三一朝被蛇咬,十年怕井绳。对用MAC地址验证消息还是心存疑虑。他决定用更为强大的数字签名来校验消息是否被篡改,请看下图:

上图的亮点在于:由依依事先生成一对 公钥(pub)和 私钥(pri),并把 公钥 发送给张三,依依用 私钥 加密,张三用 公钥 验证。验证失败说明消息被篡改。

同时,张三的用的数字签名也可以应用到身份校验(也就是,就算老王会易容术,化作依依当面来拆散他两,张三也是能够识别出是真依依还是假依依)。

(数字签名身份校验)

因为老王没有依依的私钥,所以无论如何他怎么伪装,也没法冒充依依的身份。

六、公钥的身份证——数字证书

如果你认为老王就因为非对称加密和数字签名的作用就此罢休,那么真的太低估老王的功力。毕竟老王被街坊领居成为华北地区服务器最多的男人啊!

伪造公钥!对没错,就是伪造公钥。

原理:

之前讲到的,张三需要事先,生成 公钥(pub)和 私钥 (pri),然后把 公钥 分发给依依。那么攻击过程就从这入手:

1. 老王生成自己的一对公钥1(pub) 和 私钥1(pri),截获张三的 公钥,并用自己的 公钥1 冒充张三的公钥发给依依。如下图:

2. 依依用 公钥1 加密消息,发送出去。

3. 老王截获依依的消息,并用私钥1解密得到消息明文。

4. 老王伪造一个假数据“三儿、我还是想和你分手,隔壁的王大哥人很好,我觉得依依更适合他”,并用 公钥 加密后发给张三。

5. 张三用 私钥 解密,拿到被修改后的消息,以为真的是依依发给他的。

(伪造公钥之后)

这是个“偷天换日”的过程,老王通过伪造公钥(中间人攻击),不光窃听到依依的消息,还能保证整个过程中依依和张三都没有察觉!

再来看一下老王怎样用伪造公钥的方式来冒充身份。之前讲到,依依需要事先把自己公钥发给张三,所以攻击过程就从这入手:

1. 老王生成自己的 公钥1 和 私钥1,截获依依的 公钥,并用自己的 公钥1 冒充依依的公钥 发给张三,如下图:

(伪造公钥)

2. 依依用正常 私钥 进行签名,并发给张三。

3. 张三手里拿的是被伪造的 公钥1,所以对依依的 sign 会验签失败,认为对方不是依依。

4. 老王用自己 私钥1 进行签名,并发给张三。

5. 张三用被伪造的 公钥1 进行验签,可以验签成功,认为对方是依依。

(伪造公钥后)

这个过程中,老王通过伪造依依的 公钥,成功冒充了依依的身份。

这种伪造 公钥 的攻击方式让张三很头疼,思考许久,终于想到办法。这次他找来了七侠镇最具有权威的人(老镇长)。文章开头有介绍过,老镇长非常具有权威性,而且能保证自身不受攻击(或者别人不敢攻击)。

老王不是喜欢伪造公钥嘛,张三这次就要请老镇长为自己的公钥注册一张 “身份证” (数字证书)。见证如见人!以下是注册数字证书的过程:

(数字证书)原理:

1. 张三请求老镇长为自己的 公钥 注册一个证书。

2. 老镇长收到请求后,用自己的 私钥2 对 张三的 公钥(以及身份信息) 进行签名,得到一个 sign。

3. 老镇长把证书 certificate = pub + sign 颁发给张三。

4. 张三把自己的证书 pub + sign 发给依依。

5. 依依使用老镇长的 公钥2 对 sign 进行验签,如果校验成功则说明 公钥 的确是张三的公钥,因为他相信老镇长的权威性。

备注:老王不可能找老镇长为他也办张三的数字证书,因为老镇长不会同意,就像警察不会给笔者办一张别人的身份证一样。所以,老王无法伪造张三的 公钥。同理,为了防止 老王伪造 公钥 来冒充身份,依依也需要向老镇长注册自己的 公钥,得到一个数字证书,用于防止别人伪造 公钥。

补充:

1. 考虑到非对称算法的效率问题,实际应用中一般是先对数据进行哈希,然后才用私钥对哈希值(摘要)进行签名。

2. 老镇长在密码技术领域中一般称为 认证机构(Certification Authority,即 CA)。

3. 以数字证书为基础,业界制定了一系列的规范和规格,比如由谁颁发证书、如何进行颁发、如何作废证书等,称为 公钥基础设施(Public-Key Infrastructure,即 PKI)

七、总 结

自从有了老镇长的帮助,依依和张三从此过上了没羞没臊的幸福生活。

老王呢、还是老王。这个被号称为华北地区服务器最多的男人收拾好行李,准备去京城深造,爱情的力量往往有时候是伟大的!这个男人依旧在想尽办法,想要重新夺回属于自己的依依。

到底隔壁老王能否成功从张三手里抢回依依?同时,张三多重撩妹的内幕到底会不会被依依察觉发现,请听下回分解!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,204评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,091评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,548评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,657评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,689评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,554评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,302评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,216评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,661评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,851评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,977评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,697评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,306评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,898评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,019评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,138评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,927评论 2 355

推荐阅读更多精彩内容

  • 在深入学习区块链时,不可避免的需要了解密码学。区块链算是对密码学的一次整合运用,虽然并无太多创新的密码算法,但也值...
    Kerwong阅读 44,313评论 4 25
  • 对称加密与非对称加密 按照密钥的使用形式,加密算法可以分为对称加密和非对称加密(又叫公钥加密)。对称加密在加密和解...
    邱振源的博客阅读 1,205评论 0 2
  • 前言 文中首先解释加密解密的一些基础知识和概念,然后通过一个加密通信过程的例子说明了加密算法的作用,以及数字证书的...
    sunny冲哥阅读 2,990评论 0 2
  • 数字证书原理 - 无恙 - 博客园 文中首先解释了加密解密的一些基础知识和概念,然后通过一个加密通信过程的例子说明...
    拉肚阅读 1,663评论 0 3
  • 文中首先解释了加密解密的一些基础知识和概念,然后通过一个加密通信过程的例子说明了加密算法的作用,以及数字证书的出现...
    已认证用户阅读 3,841评论 1 4