Week38 - 各种安全性演算法的应用 - 概念篇 [高智能方程序系列]

本文章同时发布於:


大家好,这几天较有时间,终於可以好好的思考文章 XD。由於最近周遭的朋友对安全性演算法这个词时常感到高深莫测,这次就来介绍安全性演算法的应用吧!

安全性演算法是相当复杂的,但事实上他的应用概念是很直觉的,我们不妨直接以应用来了解,演算法采用网路大家常用的 library 即可。

所以这几篇文章会以实际应用来讲解,不琢磨演算法细节。

P.S. 我是从演算法图监这本书来了解安全性演算法的,因为安全性演算法的目标都一样,所以文章内容虽然都是我内化的,但可能会许多雷同,请多多包涵 XD。

安全性演算法的目标

这些演算法到底要保护什麽事情,就是保护传送这个动作会产生的 4 个问题:

  1. 窃听(eavesdrop)
  2. 电子欺骗(spoofing)
  3. 窜改(falsification)
  4. 抵赖(repudiation)

而这些问题可以透过以下 3 个方法来解决:

  1. 加密(encryption)
  2. 讯息识别码(message authentication code)
  3. 数位签章(digital signature)

是怎麽解决的呢?以下会以小明线上早餐店阿姨与在他们对话间做坏事的坏蛋来讲解。

窃听(eavesdrop)是什麽?

答:

偷取传输过程中的资料

假设小明要线上付款早餐店款项,理想如下图:

❗ 但如果有坏蛋从中拦截封包,就可以取得小明的付款密码:

怎麽防范?

将传送的资料加密,这样就算坏蛋偷走了也不知道资料内容

只要小明早餐店阿姨有协议好一个双方才知道的加解密方法,而坏蛋不知道,就可以如以下模式运作:

电子欺骗(spoofing)是什麽?

答:

无法确认传输对象的身份

假设小明要购买一杯大冰奶,理想如下图:

❗ 但如果有坏蛋也声称自己是小明,就可以谎报资料:

怎麽防范?

传输人员在资料上产生一笔独一无二的代码供另一端验证

此代码可以是讯息识别码数位签章,因为这两种技术都可以让资料产生独一无二的代码,小明会透过金钥与资料一起产生此代码,早餐店阿姨只需再接收到资料时再用金钥与资料一起产生代码,比对代码是否相同即可判断是不是小明传的:

窜改(falsification)是什麽?

答:

修改传输的资料

假设小明要购买一杯大冰奶,理想如下图:

❗ 但如果坏蛋窜改了小明的订单,小明就会收到不预期的回应:

怎麽防范?

与电子欺骗的解决方法相同,传输人员在资料上产生一笔独一无二的代码供另一端验证

此代码可以是讯息识别码数位签章,因为这两种技术都可以让资料产生独一无二的代码,小明会透过金钥与资料一起产生此代码,早餐店阿姨只需再接收到资料时再用金钥与资料一起产生代码,比对代码是否相同即可判断是不是小明传的:

抵赖(repudiation)是什麽?

答:

无法证明传输方有做过这件事

❗ 假设小明心怀不轨,买了一杯大冰奶却不想付钱,他可以这样做:

怎麽防范?

要求传输人员在资料上产生一笔独一无二的代码供另一端验证

此代码为数位签章,不可为讯息识别码,虽然两者都可产生独一无二的代码,但讯息识别码双方共同约定好的金钥来产生代码,而数位签章小明个人金钥产生代码,只有数位签章才可证明是小明一位产生的,用讯息是别码会有可能是双方任一端产生的。

小明得透过个人金钥与资料一起产生此代码,如果小明赖帐,早餐店阿姨只需拿此代码去跟小明讨帐即可:

各个安全性演算法的特性

有了以上慨念後,在针对任何传输安全性的问题,你可以透过此表来思考到底要用何种技术解决:

窃听 电子欺骗 窜改 抵赖
加密 v
讯息识别码 v v
数位签章 v v v

你可能会需要注意的

  • 到底从何处拦截?答: 比如说路由器,从个人电脑 > 路由器 > Server,不当程序就可以在路由器中拦截
  • 你会发现,这些安全性演算法都在保护资料的完整性与正确性,资料被拦截并且恶意丢弃并不是这些演算法保护的目标

参考


<<:  [DAY15]跟 Vue.js 认识的30天 - Vue 动态模组(Dynamic Components)

>>:  【这些年我似是非懂的 Javascript】那些年我睡掉的物件导向 #浅谈 #Part 3

Day01 - 目前才看到第三章 Object

this&Object Prototype Ch3 Object 我的天,真的太久没翻你,试...

为了转生而点技能-JavaScript,day11(函式内的变数、Callback function

前言:本篇目的为简要纪录函式内的变数种类与功能、参数赋予及厘清Callback function的运...

【资料结构】DFS与BFS的追踪

DFS与BFS的追踪 图一 DFS(深度追踪) 说明: 以图一为例,当起点设为0时,会不断往下深入,...

Alpine Linux Porting (一点六?)

这是个工具半残时,debug会很惨烈的故事Orz 既上次想要搬迁到host来用qemu-user加快...

第12章:SSH远端连线设定与原理介绍(二)

前言 本章节,延续上一章节有关於SSH连线的介绍,继续介绍SSH之以金钥为基础的验证与设定介绍。 产...