Skip to content

计算机安全学

:material-circle-edit-outline: 约 1010 个字 :material-clock-time-two-outline: 预计阅读时间 3 分钟

计算机安全

计算机没有道德观念,计算机只负责接收问题,给出答案。

计算机安全可以看出保护系统和数据的 保密性(secrecy)真实性(integrity)可用性(availability)

保密性:有权限的人才能操作/对有权限的人,不保密

完整性:有权限的人才能做权限内的操作/对有权限的人给完整的使用权;

可用性:有权限的人随时可以进行操作/对有权限的人保持随时可用

跳过的概念:威胁模型分析,攻击矢量,暴力攻击,字典密码,不能像向上读,不能向下写,虚拟机

为了区分谁是谁,我们用 身份认证(authentication),有三种模式:

  1. 你知道什么(如用户名&密码)
  2. 你有什么(如钥匙)
  3. 你是什么(如指纹等生物识别)

黑客&网络攻击

黑客(hack)有好有坏(黑帽与白帽)。

黑客入侵最常见的方式是利用 社会工程学(social engineering),欺骗别人让别人泄密,比如网络钓鱼、假托、木马(trojan jorse)。

有种攻击叫NAND镜像——物理上往内存插几根线,然后复制整个内存。然后暴力破解失败后就覆盖内存,重新暴力破解。

远程攻击一般会利用系统 漏洞(bug) 来获取权限,这叫 漏洞利用(exploit)。一种常见的exploit叫 缓冲区溢出(buffer overflow)。缓冲区是一种概称,指的是预留出的一块内存空间。

边界检查,金丝雀(canaries),代码注入(比如,直接在用户名里写SQL指令然后提交),零日漏洞,蠕虫,僵尸网络,DoS,DDoS,网络战争

加密

加密属于 多层防御(defence in depth) 中的一层。

密码学(cryptography)。

为了加密信息,要用 加密算法(cipher)明文(plain text) 转为 密文(ciphertext) ,这叫 加密(encryption),反过来叫 解密(decryption)

一种加密方法为 替换加密(substitution cipher),如凯撒密码,缺点是字母出现的频率一样。

还有一种加密算法叫 移位加密(permutation cipher),如栅栏密码。

1977年出现了 数据加密标准(data encryption standard/NSA)算法,用的56bit密钥进行加密。但是NSA算法很快就可以被暴力破解了。

2001年出现了 高级加密标准(advanced encryption standard/AES)算法,用的128bit/192bit/256bit。128bit的密钥哪怕全地球的计算机一起暴力破解,都需要上万亿年。AES将数据分块,每块16byte,用密钥进行一系列替换加密和移位加密,以及一些操作,而且会循环加密10次。AES目前广泛使用。

我们想通过公开的互联网传递密钥给对方的话比较不安全,这时候就可以进行 密钥交换(key exchange)。这是一种不发送密钥就可以让两台计算机都知道密钥的算法,用单项函数实现。

简单来说就像画画,你随机选一个颜色,我随机选一个颜色,然后我俩约定一个公共的颜色,然后各自将自己选的颜色和公共的颜色混合。接下来,我俩交换各自目前的颜色,将手上的对方的颜色加入自己选的颜色。这时,双方目前手上的颜色变得一模一样。

我们可以将这个公共的颜色当成密钥,就算别人知道了密钥也无法知道我们得到的最终颜色长什么样,因为混合颜色容易,分离颜色困难。这叫 Diffie-Hellman 密钥交换的原理,其单项函数是模幂运算,具体见33. 加密-Cryptography_哔哩哔哩_bilibili 8:30。

DH密钥加密这种双方使用相同密钥的模式叫做 对称加密;AES是对称加密。

还有非对称加密,即用不同的密码,一个公钥,一个私钥。一个加密,一个解密。如RSA加密。