- 计算机安全Cybersecurity:计算机安全的范围和计算能力的发展速度一样快,我们可以把计算机安全,看成是保护系统和数据的:保密性、完整性和可用性。(1)保密性Secrecy/Confidentiality,是只有有权限的人才能读取计算机系统和数据。(2)完整性Intergrity,是只有有限权限的人才能使用和修改系统和数据。(3)可用性Avalibaility,是有权限的人应该随时可以访问系统和数据。拒绝服务攻击Denial of Service Attacks(DDOS)就是黑客发送大量假请求到服务器,让网站很慢或者挂掉,这就是攻击可用性。建立威胁分析模型。身份认证有三种,各有利弊。What you know?账号密码容易被猜中,因此要设置复杂一些,包含符号。What you have?是基于用户有特定物体,比如钥匙和锁。这就可以避免被“猜中”,而且通常需要人在场,所以远程攻击就更难了。What you are?这种验证是基于你,你把特征展示给计算机进行验证。生物识别验证,比如指纹、虹膜。而且来自传感器的数据每次会不同。What you know&What you have两种是确定性的,但生物识别是概率性的,生物认证的另一个问题是无法重设。“身份认证”后,就来到了“访问控制Access Control”,一旦系统知道你是谁,它需要知道你能访问什么,应该有个规范,说明你能访问什么,修改什么,使用什么,这可以通过“权限Permissions”或“访问控制列表Access Control List(ACL)”来实现,其中描述了用户对每个文件、文件夹、程序的访问权限。不能向上读也不能向下写的模型叫做BELI-LaPaDual模型,它是为美国国防部“多层安全政策”制定的。还有许多其他访问控制模型,比如Chinese Wall Model and Biba model。“身份验证”和“访问控制”帮助计算机知道你是谁以及你可以访问什么,但做这件事的软件必须是可信的。隔离。沙箱。
- 黑客Hackers&攻击Cyber Attacks。(1)最常见的攻击是网络钓鱼Phishing。(2)另一种常见方法是假托Pretxting,装作公司IT部门的人,诱骗你设置电脑,变更容易被攻击。(3)邮件里带木马torjan horses也是常见手段,邮件照片中包含了恶意软件Malware。(4)最近出现一种新的攻击方法叫做NAND镜像,如果能在物理上接触电脑,可以往内存上接几根线,复制整个内存,复制之后暴力尝试密码,直到设备让你等待,这时只需要把复制的内容覆盖掉内存,本质上是重置了内存,就不用等待了,可以继续尝试密码了。(5)如果不能物理接近,只能远程攻击,则一般需要攻击者利用系统漏洞,来获得某些能力或访问权限,这叫做“漏洞利用”exploit。一种常见的漏洞利用是“缓冲区溢出buffer overflow”,缓冲区是一种概称,指预留的一块内存空间。(6)另一种经典手段叫做代码注入code injection。常用于攻击用数据库的网站。我们会用结构化查询语言Structured Query Language,SQL,一种流行的数据API。
- 密码学Cryptography:为了加密信息,要用加密算法Cipher把明文plain text转换成密文ciphertext,这个过程叫加密encryption,把密文翻译成明文叫做解密decryption。“凯撒加密”,把信件中的字母向后移动3个位置,比如A变成D。有一大类加密算法叫“替换加密”substitution ciphers,“凯撒加密”是其中一种。有个巨大的缺点是,字母出现频率是一样的,比如E字母出现频率最高,如果替换成X,那么有经验的密码破译师Cryptanalyst就能从统计中发现规律。另一类加密算法叫做“移位加密”Permutation ciphers。二战中最著名的德国英格玛采用的是复杂的替换加密。早期加密算法中,应用最广泛的是IBM和NSA于1977年开发的“数据加密标准Data Encryption Standard ”,DES最初用的56位长度的二进制密钥,但到1999年,就可以用计算机暴力破解,因此2001年出现了高级加密标准Advanced Encryption Standard,AES,采用了更长的密钥,128/192/256bit,让暴力破解更加困难。AES将数据切成块,每块16byte,然后用密钥进行一系列替换加密和移位加密,再加上一些其他操作,进一步加密信息,每一块数据会重复这个过程10次以上。在互联网时代,我们需要某种方法,在公开的互联网上传递密钥给对方,这看起来好像不太安全,一旦被黑客拦截,黑客就能解密密码,解决办法是“密钥交换KEY EXCHANGE”是不发送密钥但依然让两台计算机在密钥上达成共识的算法,我们可以用“单向函数”one-way-function来做,单向函数是一种数学操作,很容易算出结果,但想从结果逆向推算出输入非常困难,就像将颜色混在一起很容易,但想知道混了什么颜色很难。我们可以用“迪菲-赫尔曼密钥交换”,在Diffie-Hellman中,单向函数是模幂运算,就是先做幂运算,拿一个数字当底数,拿一个数字当指数,然后除以第三个数字,最后拿到我们想要的余数。Diffie-Hellman密钥交换是建立共享密钥的一种方法,双方用一样的密钥加密和解密消息,叫做“对称加密symmetric encrytion”,凯撒加密,英格玛,AES都是对称加密。还有“非对称加密Asymmetric Encryption”,有两个不同的密钥,一个是公开的,一个是私有的,人们用公开密钥加密消息,只有有私钥的人能解密,换句话说,知道公钥只能加密但不能解密,是“不对称”的。反过来也可以,即用私钥加密,用公钥解密。这种做法用于签名,服务器也可以用私钥加密,任何人都可以用服务器的公钥解密。目前最流行的非对称加密技术是RSA,名字来自发明者Rivest,Shamir,Adleman。