本文章同时发布于:
MediumiT 邦帮忙大家好,这几天较有时间,终于可以好好的思考文章 XD。由于最近周遭的朋友对安全性演算法这个词时常感到高深莫测,这次就来介绍安全性演算法的应用吧!
安全性演算法是相当複杂的,但事实上他的应用概念
是很直觉的,我们不妨直接以应用来了解,演算法採用网路大家常用的 library 即可。
所以这几篇文章会以实际应用来讲解,不琢磨演算法细节。
P.S. 我是从演算法图鉴这本书来了解安全性演算法的,因为安全性演算法的目标都一样,所以文章内容虽然都是我内化的,但可能会许多雷同,请多多包涵 XD。
安全性演算法的目标
这些演算法到底要保护什么事情,就是保护传送
这个动作会产生的 4 个问题:
而这些问题可以透过以下 3 个方法来解决:
加密(encryption)讯息识别码(message authentication code)数位签章(digital signature)是怎么解决的呢?以下会以小明
、线上早餐店阿姨
与在他们对话间做坏事的坏蛋
来讲解。
窃听(eavesdrop)是什么?
答:
偷取传输过程中的资料
假设小明
要线上付款早餐店款项,理想如下图:
❗ 但如果有坏蛋
从中拦截封包,就可以取得小明
的付款密码:
怎么防範?
将传送的资料加密,这样就算坏蛋偷走了也不知道资料内容
只要小明
与早餐店阿姨
有协议好一个双方才知道的加解密方法,而坏蛋
不知道,就可以如以下模式运作:
电子欺骗(spoofing)是什么?
答:
无法确认传输对象的身份
假设小明
要购买一杯大冰奶,理想如下图:
❗ 但如果有坏蛋
也声称自己是小明
,就可以谎报资料:
怎么防範?
传输人员在资料上产生一笔独一无二的代码供另一端验证
此代码可以是讯息识别码
或数位签章
,因为这两种技术都可以让资料产生独一无二的代码,小明
会透过金钥与资料一起产生此代码,早餐店阿姨
只需再接收到资料时再用金钥与资料一起产生代码,比对代码是否相同即可判断是不是小明
传的:
窜改(falsification)是什么?
答:
修改传输的资料
假设小明
要购买一杯大冰奶,理想如下图:
❗ 但如果坏蛋
窜改了小明
的订单,小明
就会收到不预期的回应:
怎么防範?
与电子欺骗的解决方法相同,传输人员在资料上产生一笔独一无二的代码供另一端验证
此代码可以是讯息识别码
或数位签章
,因为这两种技术都可以让资料产生独一无二的代码,小明
会透过金钥与资料一起产生此代码,早餐店阿姨
只需再接收到资料时再用金钥与资料一起产生代码,比对代码是否相同即可判断是不是小明
传的:
抵赖(repudiation)是什么?
答:
无法证明传输方有做过这件事
❗ 假设小明
心怀不轨,买了一杯大冰奶却不想付钱,他可以这样做:
怎么防範?
要求传输人员在资料上产生一笔独一无二的代码供另一端验证
此代码为数位签章
,不可为讯息识别码
,虽然两者都可产生独一无二的代码,但讯息识别码
是双方
共同约定好的金钥来产生代码,而数位签章
是小明
用个人金钥
产生代码,只有数位签章
才可证明是小明
一位产生的,用讯息是别码
会有可能是双方任一端产生的。
小明
得透过个人金钥
与资料一起产生此代码,如果小明赖帐,早餐店阿姨
只需拿此代码去跟小明讨帐即可:
各个安全性演算法的特性
有了以上慨念后,在针对任何传输安全性的问题,你可以透过此表来思考到底要用何种技术解决:
你可能会需要注意的
到底从何处拦截?答: 比如说路由器,从个人电脑 > 路由器 > Server,不当程式就可以在路由器中拦截你会发现,这些安全性演算法都在保护资料的完整性与正确性,资料被拦截并且恶意丢弃
并不是这些演算法保护的目标