文章目录
- 一、前言
- 1.1身份认证authentication
- 1.2 权限
- 1.3 开发安全
- 二、黑客
- 2.1 NAND镜像
- 2.2 缓冲区溢出
- 2.3 注入
- 三、加密 cryptography
- 3.1 列位移加密
- 3.2 软件加密
- 3.3 密钥交换
一、前言
计算机网络中并不是没有人搞破坏的
但是网络无法区分中要执行的是好是坏
计算机安全:保护系统&数据:保密性、完整性、可用性
保密性
只有权限的人才能读取计算机系统&数据,
黑客泄漏别人的信息就是破坏了保密性
完整性
只有权限的人才能使用和修改系统&数据,
黑客知道你的邮件密码,假冒你发邮件,就是破坏完整性
可用性
有权限的人可以随时访问系统&数据 ,
拒绝服务攻击(DDOS)就是黑客发送大量的虚假请求到服务器,让网站很慢或者挂掉
为了实现保密性 完整性 可用性 ,安全专家从抽象层面想象敌人是谁,这叫做“威胁模型分析”
,攻击矢量:攻击的手段
安全两大问题:1.认证 2.权限
1.1身份认证authentication
身份认证有三种方式:
- 你知道什么
- 你有什么
- 你是什么
你知道什么
基于只有你和计算机知道的秘密,username & pwd
密码太简单可以用“brute force attack(暴力攻击)”
很多会有密码限制次数,但是当黑客用1万台电脑,对一万个账户用密码1111暴力破解,总能破解出几个账户
你有什么
基于特定物体,钥匙 锁
你是什么
把你的特征展示给计算机,虹膜 指纹
你知道什么 你是什么 这两种验证是确定性的,yes or no
但是生物识别是概率性的,系统可能会认不出来你
1.2 权限
知道你是谁,需要知道你能访问什么,
可以通过权限 \ 访问控制列表(ACL)来实现 rwe
Bell-LaPadula模型
- 不能读取上级文件
- 不能写入下级文件(绝密用户不能写普通文件)
biba model
1.3 开发安全
独立安全检查和质量验证:检查代码的完整性&安全,由专业安全人员来review
隔离
当计算机程序被破坏后,如何控制损坏程度,使其他程序能够正常运行,这种称为隔离"isolation"
可以用沙盒程序,虚拟机
二、黑客
黑客最常用的入侵方是不是通过技术,而是通过 欺骗别人
社会工程学:欺骗别人泄漏数据
钓鱼邮件,假网站
假托(Pretexting):攻击者给某个公司打电话,说是IT部门的人,第一通电话通常让人转接,另外一个人接到的电话就像是内部的,然后配置一些电脑
2.1 NAND镜像
物理接触到电脑,在内存条上接几条线,复制整个内存,然后暴力破解,遇到超过次数的锁,就把内存覆盖掉,再次暴力破解,iphone 5C 可以利用这个破解手机密码
2.2 缓冲区溢出
漏洞利用(Exploit):远程攻击需要利用系统漏洞,来获取某些能力 访问权限
常用的手段是:缓冲区溢出
缓冲区:预留的一块内存空间
一般会给userName pwd预留一定单位的内存地址,假设10个,单是当实际使用超过10位时间,会覆盖掉前后的内存
有时候 缓冲区溢出只会让程序或者系统崩快
但攻击者可以利用这个漏洞,注入更有价值的新值
到内存中,把is_admin的值改为true,绕过登陆,搞坏整个系统
预防缓冲区溢出,
1)复制之前先检查长度
2)随机放一些变量在内存中,这样就不知道is_admin在那个位置了
3)金丝雀:在缓冲区之后,预留一些不用的空间,追踪预留空间值的变化(发生变化就 立刻锁死)
2.3 注入
可以不用登陆就搞崩整个系统
不让输入特殊字符(😉 或者自动删除
零日漏洞:当软件制造者不知道软件有新的漏洞被发现了
蠕虫:如果足够多的电脑有漏洞,让恶意软件可以在电脑之间相互传播
僵尸网络:黑客拿下足够多的电脑,组网攻击
三、加密 cryptography
多层防御:用多层不同安全机制来阻碍攻击者
crypto + graphy
加密 解密
为了解密需要知道:
- 用了什么算法(替换算法,列位移加密)
- 偏移的字母位数
3.1 列位移加密
把铭文放入5 * 5 的方格内
换个顺序读,
解密的关键是:知道用的是 5 * 5 的方格
德国的英格玛机
三个连在一起
加入反转器
前方再加入插板,提升复杂度
这也是最大的弱点:加密后的字母肯定不是其本身
每次输入一个字母,转子会转动一次,有点像汽车里的里程表
3.2 软件加密
IBM & NSA 在1977年发布的 “数据加密标准”(DES)
DES:利用56bit长度的二进制密钥
意味着有2的56次方,72万亿的不同密钥
但是到了1999年,25万美金的计算机就能够在两天内玻璃破解
2001 AES,增加了位数,128位/192位/256位
AES性能/安全的平衡,被广泛使用:Iphone中的加密文件,WAP2协议在WiFi中访问HTTPS
3.3 密钥交换
之前解密都需要知道加密的密码本
密钥交换:不发送密钥,但仍然让两台计算机在密钥上达成共识的苏娜发
单项函数来做
假设密钥是一种独特的颜色,首先有一个公开的颜色,让大家都知道
然后将我的混合后的颜色明文发送给对方
对方也把 秘密颜色+ 公开颜色 混合后发过来
对方也这么做,然后就得到了一样的颜色
然后我们都用相同的key加密解密
计算机用的也是相同的原理,单向函数 (Diffie hellman key exehange)
在diffie函数中,单向函数是 模幂云运算
底数 指数 除以第三个数字后取余
3的x次方,模31 = 7 ,那么就需要一次次的计算
对称加密:加密方解密方用的key是一样的
非对称加密:公钥 私钥,用公钥加密,只能用私钥解密,用私钥加密,只能用公钥解密
这种做法用于签名:服务器用私钥加密,任何人都可以用公钥解密,就像是一个不可伪造的签名一样,因为只有私钥持有人能加密,这样证明数据来源于确定的个人
目前最流行的非对称加密的技术是RSA