1 算法
2 服务,服务目录,SLA
服务是在客户不承担特别的成本和风险的情况下,便捷的提供给客户想达到的效果,从而给客户带来价值的方法
要注意的是:
- 服务是客户想要的,而不是我们想要提供的.因此服务的质量和成本也需要从服务的客户(购买服务的)和用户(使用服务的)方来加以判断
- 服务是端到端形式的,知识沿途的所有环节都做好了,服务才是好的.
服务目录是IT部门提供的,对客户可见的所有服务的集合.包括服务的名称,定义,状态等信息.
服务级别管理时管理企业业务和企业IT基础设施的.其任务是在IT服务质量,客户关系,以及IT服务成本三者之间平衡.通过服务级别协议来管理客户,IT服务提供商,内部IT团队和外部供应商的关系.
服务级别协议SLA是提供服务的企业与用户之间的,对服务的品质,水准,性能等方面达成双方共同认可的协议和契约.服务级别协议应当使用业务部门和IT服务提供双方都便于理解的语言,而不宜采用技术化语言.
SLA是一个协议就是说SLA要建立在双方相互理解.相互统一的基础上,而不能互相敌视.级别的意思是,表示IT部门提供的服务到什么程度.这是可以通过量化指标来表示的.
3 重放攻击
重放攻击又称为,重播攻击,回访攻击.指的是发送者发送一个服务器主机已经接受过的包来达到欺骗的目的,主要用于身份认证过程,破坏认证的正确性.
重放攻击是一种攻击类型,这种攻击会不断恶意或是欺诈性的重复一个有效的数据传输.重放攻击可以由发起者,也可以由第三方拦截后重发该数据给服务器.
原理是,把以前窃听的数据原封不动的重新发送给对方,当这些信息被加密的时候,在数据包被加密的情况下(指的是非对称加密,对称加密的话指的是秘钥不变的情况下),窃听者无法得到数据的准确意义,但是攻击者知道发送这份数据的作用,就可以在不知道数据内容的情况下,通过再次发送这些数据到达愚弄接收端的目的.
防止重放攻击的方法有:
- 加密,每次建立连接的时候秘钥不同.这样上一次抓到的包,就不能用在本次连接中,因为解密后的数据不对.
- 客户端生成随机数,发给服务器,服务器保存每次发来的随机数,判断是否有重复.
- 加时间戳,主要思想是,只有距离接受到包的试件之前一段时间内的时间戳,包才是有效的.(此时的包一定是被加密,否则也是随便改,应该是用于非对称加密的情况下,直接发包)
- 每个包包含一个序号.
当客户端已经发布的情况下,不能改变发送包的字段.这时候再去防止重放攻击,只能通过修改之前的某个字段的方式,可以在登录协议中改变session,里面的字段加上时间戳.每次登录都改变session.
HTTPS通过序列号来解决重放攻击
4 密码学(课外知识)
太多了,文献全是外文.
TLS历史:
- 1995: SSL 2.0 设计缺陷被弃用
- 1996: SSL 3.0 在2015年后已经不安全,被弃用
- 1999: TLS 1.0
- 2006: TLS 1.1
- 2008: TLS 1.2
- 2015: TLS 1.3
一般所说的SSL就是TLS.
密码学通信协议是分层构造的大致可以分为:
- 最底层是基础算法原语实现,是对称加密.非对称加密,散列算法:AES,RAS,sha256等
- 然后是选定参数后,符合密码学里标准分类的算法,摆阔加密算法,qianmingsuanfa,非对称加密算法,MAC算法等
- 然后大多重标准算法组合成一个半成品组件.
- 然后是各种组件拼装而成的各种成品密码学协议,软件.TLS等
TLS大致由三个组件拼装而成:
- 对称加密传输组件
- 认证秘钥协商组件
- 秘钥扩展左键
这三个组件还可以拆分为5类算法:认证算法,加密算法,消息认证码算法,秘钥贾环算法,秘钥衍生算法
TLS设计的时候,考虑了每一类算法的演变,并没有规定一个死的算法,而是设计了一个算法协商的过程,允许加入新的算法.协商算法就是一个CipherSuite.
TLS的CipherSuite在iana中集中注册,每个CipherSuite分配一个两字节数字用来表示.openssl ciphers -V
命令查看
例如ECDHE-RSA-AES256-GCM-SHA384
的CipherSuite,用于TLS 1.2版本,使用ECDHE做秘钥交换,使用RSA
做认证,使用AES256-GCM做加密算法,使用SHA384做PRF算法(扩展秘钥).
TLS用来做加密数据传输的,因此它的主体是一个对称加密传输组件,为了给这个组件生成双方共享秘钥,因此需要一个认证秘钥协商组件.因此TLS分为:
- 对称加密传输协议record协议,
- 认证秘钥协商的handshake协议
还有三个简单的辅助协议
- changecipher spec协议,用来通知对端从handshake切换到record协议,是多余的,在TLS 1.3中已经被删除
- alert协议,用于通知各种返回码
- application data协议,把http等的数据传入recird层做处理并传输.
这种认证秘钥协商+对称加密传输的结构,是绝大多数加密协议的通用结构.
record协议,在tcp流上做分包,其他的TLS协议也都被封装在record的包里,主要过程是:
- 数据分片
- 生成序列号,为每个数据块生成唯一编号,防止重放和重排序
- 压缩,可选
- 加密,使用握手协议协商出来的key做加密和解密
- 计算HMAC,对数据计算HMAC
- 加密
- 添加SSL头
- 传输
handshake协议主要交换有:
- client和server的MAC key 用户签名
- client和server的encryption key 是加密算法
- client和server的的 IV 是加密算法的参数
这里,C/S使用不同的秘钥的原因,在于,如果使用相同的秘钥,那么RC4加密算法将不安全.
其中压缩算法,由于压缩导致2012年爆出的CRIME攻击,因此压缩的特性都是被禁用的.
加密和认证的组合主要有:
- Encrypt-and-MAC
- MAC-then-Enctypt
- Encrypt-then-MAC
但是,MAC-then-Encrypt这种结构导致很容易构造padding oracle相关公积,因此.目前学术界认为Encrypt-then-MAC
才是最安全的.然后如果将加密和认证直接集成为一种算法,直接在算法内部解决加密和认证,因此出现了AEAD(Authenticated-Encryption with Addtional data)类算法.GCM模式就是AEAD中最重要的一种.