EBU6610 Block2 北邮国院英方课“information system”信息系统期末笔记分享-part2

前言

这里是喜欢打字的变形者集群,我们是顾清弦老师的追随者,我们继续复习信息系统的block2。这个block比起block1内容更加集中,更加复杂,也在考试中占据更重要的位置——也不尽然。本章的上半部分和“安全与认证”的密码学中存在大量重复,考察时也相对较少(因为要留给安全与认证)。下一部分“区块链“则是相当重要的一节,几乎必出大题,于是,这一章上半简单而下半复杂的格局可以预见。由于这门课几乎就是我未来(硕博)要学习的领域的入门知识,所以我依然会坚持努力传达出ppt想要表达的每一个例子和细节,各位也不必担心我们偷懒,我会用我的思考和总结来让他们听起来不再那么望而生畏,用例子把它们包装起来,保证没有听过课的未来的我们自己也可以快速上手,不会丢下细节。

再说一说图片的使用。我们喜欢打字,不喜欢复制粘贴,但有的时候,ppt的结构、标注、小图片和分段等性质可以让理解变得更加直观和快捷,或者由于现实原因,比如某些公式符号的出现会产生乱码影响观感。这时候我们只能接受粘贴ppt或者手写拍照再上传图片的事实——再者说,看到英文的准确描述也更有利于我们理解题目的意思和使用最精炼的语言表达出我们的意思。

这是在说,图片包含的信息都非常重要,一定要每个字看懂。

安全攻击概述


上回书说到,一个嘈杂的信道对于任何信息系统都是很大的麻烦,而我们只有知道这种信道究竟是怎么威胁到我们的信息,才能从对应的角度进行保护。攻击有四种类型,我们用个贯穿两门课的例子来讲解一下。我们模拟两个人Alice and Bob 出来,他们无论是在信息系统还是在安全与认证的课本中都极为活跃。一般来说Alice 是发送者,Bob是接收者,他们想要说悄悄话,不被打扰,想要约着今晚见面。而还有第三者Eve,从名字就能看出来,她很evil,想要破坏Alice and Bob的二人世界,想要冒充Alice,发送假的信息,也想随意修改信息,和Bob在后一天见面,以及冒充bob收到信息等等。

那么Eve的攻击可以来自什么方面呢?

从图中可以看到这四类攻击的方式和效果:

Interruption:阻止消息传递到接收者; interception:和接收者同步收到消息;modification:修改信息的权力; fabrication:冒充消息的发出者

那么Eve能成功吗?Alice and Bob该怎么保护自己的信息呢?这些攻击威胁到信息的哪些方面了呢?这部分在网安法有过更详细的学习

我们在网安中只学过前三个,也就是CIA,现在又多了两条,可以用NA.CIA来记忆,似乎从口诀的角度来说更加合理了。

加密方法

加密方法的历史

       既然信息的传播如此危险,我们该做些什么才能保护它们的安全呢?加密。这门课也在这里简要的介绍了密码学发展的历史(大概是《安全与认证》介绍篇幅的十分之一),我们也会用更简单的语言讲出这个故事。最初的加密是凯撒大帝的凯撒加密(Caesar cipher),这种加密的原理很简单:选择一个数n,把一串字母按照字母表的顺序往后偏移n个,得到加密后的信息。这样一来,接收方必须知道这个n,才能破解密码(在发明者看来)。第二个结点是The Enigma Machine,他们可以把输入的字母变成另一个,而这依赖于这种机械的物理结构——只有掌握这个机械,才能得到密码。但用同一个n久了,或者同一个机器,还是会被破译,所以另一个名词被发明了:one time pad。也就是一个密码只用一次,不断地更换来增加破译的难度。

现代加密方法

加密的模式分为两种:对称加密(symmetric)和非对称加密(asymmetric)。什么是对称?就是轴两边完全一样。这个“两边”,在加密的语境中指的就是收件人和发件人,而“一样”的是key,也就是密钥。比如凯撒,收件人的n和发件人的n是同一个,他们都既用来解密也用来加密。它们key的“内容”和“功能”都是对称的——完全一样。那么非对称加密呢?他们key的内容和功能都不一样。一个用来加密,一个用来解密,而且它们看起来也完全不相同,各自是私人进行的。

这个过程就是一般加密的过程,注意每个阶段的名词。

而对称加密有常见的三种:

Advanced Encryption Standard (AES)

Data Encryption Standard (DES, 3DES)

Blowfish

它们都不能重复使用密钥,因为这可能导致整个系统被破解,因为XOR计算重复进行之后会有一些规律涌现,如果它们的key都相同的话。但这样又有了新的问题:你要怎么把一段和原文一样长的密钥发送给接收者呢(假设加密方法是把密钥和原文进行XOR计算,也就是异或,且密钥和原文都已经转化成二进制码模式)?安全性非常堪忧。

公钥加密(非对称加密)

我们知道分享你的密钥也是非常困难的,因为它同样可能被截获。我们不禁想,有没有一种方法,可以让key即使被破解出来了,也能保证整个加密和解密过程的正常进行呢?有的,那就是:使用两个key。即private key和public key。

我们想象这样一个情景:在一个群聊中,每个人都有他的的公钥和私钥,每个人都知道所有人的公钥,只知道自己的私钥。我们可以通过用别人的公钥加密这条信息来发送给某人,而他只有用自己的私钥才能解开。

工作原理图可以看这一张:

这样精密的系统则是建立在数学规律上的,那就是“问题的复杂性”,复杂性足够高的问题就无法解出来,或者说在以年为单位的时间中都很难有解。具体来说,想要实现这样一套系统,需要这样的函数:

换言之,这个算法需要正着算非常简单,而逆推出原本密码难如登天。这样的函数就称为一个trapdoor function——就像一个陷阱房间,你掉下去很容易,但很难爬上来了。这不仅仅是一个y=f(x),还涉及到k,也就是有许多种f(x),无数种,但破解者并不知道是哪个,就更不容易被逆推了。这是什么意思呢?比如我们知道x除以3余2(再来点别的条件,比如还是某一个数z的30次幂),我们知道x之后很好验证,但几乎不可能求出x——除以3余2的数可以写成3k+2,那k有无穷种取值。在数学上,我们有办法量化找到一个问题的解法“有多难”,而我们只需要把它调整到非常大就可以了。可以用以下的例子理解一下这么一个函数该长什么样。

【这个例子并非RSA,而是ppt中描述的一种RSA的简化算法,方便理解RSA的“感觉”】找到两个非常大的质数p,q(大概都有十几位),可以根据他们生成一个公钥(一个数)和私钥(另一个数),公钥是他们的乘积pq。攻击者必须同时获得p,q的信息,才能破解出整个信息。而想要把一个二十位的数拆解成两个质数相乘,非常困难,但如果我知道了其中一个,就很简单,于是两个密钥p,q就可以相互验证。这就是它的原理。

RSA加密算法

接下来我们会用简短的方式介绍RSA的具体算法,来保证在安全与认证这门课还没开始复习的同学也能看明白。PPT上的讲法严谨而完善,但在交待“这个系统长什么样”之前一股脑把所有数学原理都丢了出来,让我们在学原理的时候忘了自己要做什么,再后面讲要做什么的时候又忘了原理,称不上优秀的教学。我就用自己的方法来讲讲吧,如果你觉得费解,其实关于RSA的教学很多,你甚至可以问问gpt,或者看看课件,内容大同小异。我们先说说RSA算法想要达成一个什么目的:用公钥加密(这个过程不能出现私钥),用私钥解密,而公钥和私钥是在同一时间生成的。只有收件人知道私钥,而通过加密的密文c用公开的公钥反推出原文m(message,一般用m表示)是不可能的。我们需要的加密流程如下:

我们假设e,n两个数是公钥,而d是私钥,设想中的加密和解密应该长上面那个样子。那么要在数学上如何实现呢。

具体的加密和解密过程如下:

其中的mod就是取余数的意思,比如11mod9=2, 8mod2=0, 13mod4=1

再回顾一下我们要做什么:m用公钥加密,得到密文c,然后c可以用私钥加密,得到原文。那么e,n,d应该满足什么条件才能保证加密的过程不会被逆推,d也不会被攻击者求得呢?

强度来自于什么呢?首先d直接依赖于k的取值,无法被破解,而加密的部分用余数这个条件也无法反推出c。然后关于右上角那里的算法,直接就(p-1)(q-1)就可以了。而对于m加密成c再用d解密为什么可以得到m,在安全与认证课程中有详细的证明,在此就不赘述了。可以去看看ppt上的例题,如果你和它思路统一,就算过关了。在lecture7的52-55页。

那么这个算法强大吗?有多强大?如果一个攻击者真的想要破解,他就需要从n反推出pq,再用很好的运气和巨量的算力搞定k。很喜欢ppt上的一句话

在故事的结尾,用上了RSA的Alice and Bob终于得到了二人世界,eve只能在遥远的地方看着自己截获的信息日期——和他们一样渐行渐远——已经没什么能阻止他们相见了。

(本章完)

考虑对称加密和非对称加密我们可以发现,非对称加密的key更难被破解,能被攻击的角度也更少。那么一个想法看起来很棒:我们在对话开始的时候生成临时密钥,随用随弃。但这样也有问题。比如获取bob的公钥本身,以及生成大量密钥的时候会不会被破解,一旦某一次被破解,eve就可以以alice的口吻给bob发信息。Eve黑化了,想要继续破坏,我们也只能继续想办法加固这条信道。

哪怕信息本身是安全的,这样的情况也可能发生:我们知道信息本身是被加密的,是安全的,但我们无法确定它是谁发送的。因为只需要公钥,我们就可以发送,这就是authentication的问题。

那么什么才能证明人的身份?私钥。发送者可以用自己的私钥和对方的公钥进行双重加密,而对方则用自己的私钥和发送者的公钥进行解密。这就是双重加密。

有的时候,信息本身并不需要加密,只需要确认身份。这个时候就需要digital signature。它是什么?它是用自己的私钥加密的一段简短文字,还要附加上一个证明,也就是下面这条长消息是我发送的。比如我把自己的私钥加密结果和某段信息长度数值的哈希值放在一起,它很短,但能证明我的身份,能和我的消息一一对应。这就是digital signature。以下是它的流程,看看是否能和它逻辑统一:

这样,由一段“简化后的信息,比如hash checksum“,”把checksum hash私钥加密“得到的信息和原文一起发送出去,就能证明身份了。

这样一切都解决了吗?还可能有man-in-the-middle attack。对于这个名词应该比较熟悉了,因为这是安全与认证课程的重点之一。而本门课程只用了一页ppt,很喜欢它重复很多遍的一句话:

简单来说,想要证明自己的公钥是真的,就需要一份证书,一份X.509 certificate。

HTTPS/TLS

最后一部分是关于安全的访问网页的,分为两步:确认网页是正确的,也就是确认证书;接着和它建立安全的连接。

SSL/TLS是传输层安全的保障,它几乎使用了我们之前说过的全部方法,包括digital signature, 对称和非对称加密。要确保它的版本是更新过的(老版本叫SSL)它的流程如下:

至此,上半部分“加密“已经进入尾声,不妨看看下面的这几个总结,这些概念是否还有印象。

连续放ppt实在并非我们的本意,奈何这几张ppt的概括幅度实在称得上慷慨——教授亲自为我们作好了复习和思维的重点,那我们自然就要利用起来。这几张的总结模式称得上典范,我们也驻足许久。

最后,让我们暂时告别Alice,Bob 和Eve,休息一下,准备区块链的重头戏吧。

区块链

概念介绍

想象一个场景:你想吃最正宗的三文鱼刺身,但是想避免它有任何沾染核污水的可能。所以你需要知道它是哪天从哪里打捞上来的,这艘船怎么样,这个冰柜、工厂、冷链运输、商场……这一切实体的属性你都想了解,还要确保他们的信息是真的。想象一根绳子,三文鱼每经过一个环节,就把这个参与处理的实体信息写在一个便签上挂上去。最初,挂上去的第一张纸写了打捞船的信息,比如在秘鲁渔场,2024年1月打捞,这艘船隶属于某国某公司;第二张纸条写着冷链公司;第三张纸条写着运输的轮船信息……如果这个过程足够详细,你最后可以得到一根很长的绳子,挂着一张张便签,可以去查看他们的信息——这就是区块链。

换成课件上的例子,就是你要去买一辆车需要注意的那些信息——来自租赁公司、修理技工、中介平台、生产厂商……他们都是不同的单位,但由这条供应链串联在一起。把它们的信息依次连接,这也是区块链。

所以关于区块链的概念,已经呼之欲出了:Blockchain is: a method of storing data amongst multiple parties that ensures data integrity. 是储存来自不同组织信息的,保证信息不被篡改的方法。

区块链还有一个名称,叫做“分布式账本distributed ledger”,这个名称哪怕是中文,也无比让人头大,我们也曾经在试图理解这个概念的时候遭受很多挫折。所以我们还是选择用自己的方式来聊聊。

所谓记账,就是记录下来每一笔交易的内容信息,包括时间地点,双方信息等等;结合我们之前说的买三文鱼和买车,每当这个货物转手一次,要进行一次处理,就需要进行一次记账,一次关于这个货物的“版本更新”。接着,我们还需要给每一个参与记账的人发放一个副本——他们随时可以查阅,这样一来,他们就可看到自己写上去的东西是不是被修改了(当然,这一点可以由哈希值保证)。每一笔记账都完全透明。这样的系统就已经非常接近区块链的原理了。

它的特点:1,Ensures data integrity 2. Every participants hold a copy  3. Ensures transparency

它最重要的特点: immutability is a key property 也就是就数据不可篡改。

还记得我们block1中提到的“分布式系统distributed system”吗(如果还没看,欢迎关注我们的其它资料),区块链就是如此:它是由每个节点自主操作的,也只关注他们之间的信息,而不需要一个中介或管理者。它符合我们对distributed system的所有思考。

在生活中,我们信任平台,所以我们把自己的信息填写给他们,让他们把我们的地址发给快递员。但这信任并不透明:我们并不知道他们用我们的信息去做什么了。但如果是依赖于算法的信任——你只要信任区块链的防篡改算法,加入进来就不需要想其他的了。这就是降低到信任成本,增加交易效率。在这之中,交易是由算法直接控制的,这被成为智能合约,但其实只是比如“价格低于某个数,释放某种消息”的自动程序,一切都是为了减少人的操作空间。

工作原理

先说说什么是transaction(交易),在链上的大部分操作都可以称为交易,比如一次数字货币的转账,或者一次智能合约的履行。一次交易一般会有input 和output,比如我把处理好的三文鱼交给冷链,支付了多少货物,对方收到了多少货物都需要保障,对于交易本身,会有一个机制Unspent Transaction Outputs (UTXOs) 来防止重复计算支付double-spending:

接下来就是验证verification,也就是让查看的人知道这次交易是合理合法、流程正确的。比如Alice给Bob发起一笔转账,Alice的这条记录需要由三个部分:她上一次的区块链交易(比如从银行存入了足够的现金)、她的私钥、Bob的地址。然后Alice需要把这三段拼在一起,算出他们的哈希值,也就得到了一个256 bit cypher。接着,这次交易需要发送给其它的所有节点,得到认可之后,被允许上链,即将生成一个新区块。

最后是生成和完善新区块。我们刚刚得到了一条信息,包含着Alice本次交易的全部信息的哈希值(如果交易内容被修改了,修改后的交易的哈希值将与本次记录的不再相等,也就可以发现篡改行为)。这是一条消息,或者比喻为“一纸合同”,当这条链收集了足够多需要被打包记录的合同的时候,就会用一个文件袋把它们包起来储存起来。在这个文件袋的上面,除了袋中交易的哈希值,还会计算它和上一个被打包的文件袋封面上的哈希值合并在一起的哈希值。也就是说,如果上一个文件被篡改了,后面的哈希值都会对不上。这样一个一个的文件袋子串在一起,还相互用哈希值彼此联系,就是“区块链”,而每一个文件袋就是“区块”。

虽然把这些文件打包在一起并不简单,但是它丰厚的奖励始终让这个工作不会落空。这就是Miners(矿工)的工作。他们的工作是让这份包裹满足某些要求,可以比喻为把这些打乱的文件“按学号顺序排列”;他们的工作就是找到一些数字来让袋子上的哈希值满足某些特征。比如袋子内部的信息是hello world:

所有的miners会一起计算来寻找这个结果,如果有人找到了,也就意味着它打包成功了,他会把这个包发给每个其他节点,其他节点就会知道这份工作有人抢先了,从而停止。如此一来,一个新的区块就生成了。而费了半天劲打包成功的结点就会获得虚拟货币奖励(也就是一个比特币)。

这套机制就叫做Prove of work,其中的关键就是这个计算足够复杂。这样可以保证作恶的成本极高,且就算你想要作恶,也需要在算力和运气上每次都跑赢一起算的无数同行。

既然提到了挖矿,也得知道挖矿有多难。课件中提出了几种算力算出一个区块的时间对比:

FPGA算力一般,但可以用做别的,ASIC算力超强,但具有极高的部署成本且只能做这一件事。这一切都在说明一件事:prove of work的核心就是难算,真的很难算。

运用一个难算的算法,又只让最先算出的一个享受成果,其他的白费,这就产生了很大的损耗——“energy consumption”就是这个算法的最大弊病之一。再回顾一下为什么要设计成这样:那是因为它假定的成员都是坏人,哪怕在一个完全不诚实的环境中,这样的算法也能保证安全。在这个环境中,诚实的计算者不会有任何优势。所以,相信参与者的诚信和依赖巨大的运算量和损耗就是区块链设计要平衡的问题。

那么,prove of work这给算法是完全倒向这个天平的左侧,也有其他算法选择了其它的平衡点位:prove of stake。也就是股权证明。不同参与者根据他已经在这个系统挖矿了多久或挖出了多少区块二被赋予了不同的权重,然后用他们之间的50%股权来代替50%的算力。这样就稍微多了些信任,少了些暴力计算。

还有另一种算法prove of authority,也就是某些权威节点被任命为用来包装和验证的审查者结点,他们是被信任的。这就让整个系统完全依赖于他们的信任,属于站在天平的另一端顶点了。这样基本只能被用于私有链或测试链。

区块链的应用

我们之前说过了,区块链的特点就一个:prove integrity。所以需要“在连续的多方操作中保证信息完整”就是它活跃的地方。比如供应链,比如身份认证等等。其实我们自己就是要做这个的毕设,也是我们绝对会认真研究课件每一个字的理由之一。区块链虽然强大,但也并不万能,给区块链找应用空间大概是在“拿着锤子找钉子”。

还有另一种思考方式,也就是“唯一的拥有数字产品”。比如很多著作权等问题已经开始考虑从区块链解法。再或者是对某些电子资产(比如游戏账号、艺术作品)的购买,需要一系列的证明(你不是创造他的人,但只能由你使用),区块链的思路就是你证明自己的方法。这些商品统称为Non-Fungible Tokens, NFT。

但这种方法可以洗钱,比如你随便拍照然后把他变成NFT,再高价出售。这样就可以把灰色资产变成合法资产了。

区块链的问题

那么区块链既然如此强大,是不是要把所有信息都上链呢?当然不。POW(prove of work)算法能源消耗大,损耗多,效率低。基本只有非常重要,也就是说能源密度非常大的信息才愿意跨过这层阻碍。原话为energy intensity intended as a barrier to entry。

另外,区块链的效率实在不敢恭维,创建一个区块需要大量的计算,远远不及什么信用卡之类的速度,这也是他的一大限制。

总体来说,区块链创新了什么?也没什么。它只是一套新的记账方法,以巨量的计算为代价保证了信息安全。课件的形容词是BORING。虽然在生活中的信息看不到他的身影,但如果这个信息的价值和保密性远超算法消耗本身,设计出一套“永不被篡改”的体系还是很有性价比的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值