网络安全学习1-安全基础与密码学[极客时间]

1.安全是什么——安全模型

OSI安全模型包括安全攻击,安全机制和安全服务。公司安全出了问题,你也许会意识到业务出现了漏洞,但其实,数据安全保护机制也同样产生了问题。

2.安全原则——CIA三要素

机密性confidentiality,完整性integrity,可用性available作为评价标准,最基础最重要的原则。

  • 机密性,不可见,在明确的授权规则下,确保数据只被授权主体访问。如微信朋友圈3天可见。如何实现:运用安全模型和访问控制机制将数据和访问主体打标签或分类,并根据访问控制规则自动授权。如何防范:签名校验,防范弱秘钥,权限滥用
  • 完整性,不可改,在明确的授权规则下,确保数据只被授权主体进行授权地修改。如个人档案只能追加不可更改。如何实现:授权也是运用访问控制机制,用加密签名对数据完整性验证,对于修改用日志记录并监督审计。如何防范:对操作做完整记录并保护日志等审计信息
  • 可用性,可读确保数据能够被授权的主体访问到。Dos,拒绝服务攻击会使可用性受到损坏。

3.安全保障——黄金法则IAAAA

识别Identification,认证Authentication,授权Authorization,审计Audit,问责Accounting。全方位的概括了你是谁?你能做什么?你做了什么?事前防御属于认证,事中防御属于授权,事后防御属于审计

识别认证,帐密登录或生物认证与证书;密码,手机验证,指纹验证结合了你知道什么,你拥有什么,你是什么的三因素认证。可信的身份认证是建立安全保障体系的第一步。

授权,访问控制或基于内容或者会话的检测。对你能做什么做多少作限制。最原始的授权机制很慢,我们会定义自动化的授权机制提高效率

审计问责,保证日志的完整性和日志的不可否认性。审计对于发现安全问题,回溯产生的攻击,完善安全保护体系来说,十分重要。问责,受到攻击时提供证据。不只是简单的翻日志,机器学习异常检测算法也运用其中。

我们必须注意到,安全没有银弹,很多时候一个小场景没做到位,造成的后果等于什么都没做。

4.密码学-对称加密算法

一句话就是,你懂加解密吗?(笑)密码学是”黄金法则“的基础技术支撑

经典对称加密算法,DES,IDEA,AES,国密SM1和SM4。

DES,最早的算法,**长度为56位速度快,现在24小时可以**。DES包含一个关键模块S盒,其设计一直没有公开,很多人相信,美国*可能掌握S盒的后门去随意**任何密文。

IDEA,128位**速度中,国际数据加密算法,被广泛的研究的原因在于没有专利的限制。现在由于速度的原因被弃用,有了更快更好的AES了。

AES,128位**速度快,是目前上国际最认可的算法

SM1和SM4都是国密算法。受到国家的支持和认可

一般来说选取AES128进行加解密运算,就能获得足够高的安全性和性能。另外,在选取加密算法的时候,存在不同的分组计算模式。需要知道的是,选取CBC和CTR这两种推荐的模式就可以满足大部分需求了。

5.密码学-非对称加密算法

非对称加密算法,加密和解密使用不同的**。公钥常常是公开透明的,非对称加密主要解决了**分发的难题。非对称加密在SSH,Git上传领域起到作用,可以将自己的公钥上传到服务端,客户端保存私钥。也出现在多对一认证的场景中(如多人登录服务器)。

除了加密,非对称加密还提供签名的功能。私钥加密,如果接收者可以用公钥解密,就证实了对方拥有私钥的身份,因为发送者发送的密文只有用私钥产生,是独一无二不可否认的。因此私钥加密就是签名。

经典的非对称加密算法包括RSA算法,ECC算法,国密SM2。

RSA的数学难题是:两个大质数p,q相乘的n很容易计算,但是根据n去做质因数分解,则需要很大的计算量。优点是加解密性能较快,缺点是如果要加密到很高的强度,需要很长的**,**生成慢。

ECC是基于椭圆曲线的数学难题设计的。学术界认为椭圆曲线的难度高于大质数难题。因此ECC是国际上加密强度最高的非对称加密算法。

国密SM2也是基于椭圆曲线问题设计的,加密强度和标准和ECC相当,属于国标。

一般来说选取ECC算法作为非对称加密算法。

6.密码学-散列算法

计算唯一的不可逆的定长id。Git的提交记录,文件的完整性校验,接口签名鉴权。数据库存储密码的散列值。要求算法具有不可逆性,鲁棒性(同样消息生成同样摘要),唯一性。

经典散列算法,MD5,SHA,SM3。

MD5,消息摘要算法,可以生成128位的消息摘要。广泛被用于文件下载的唯一性,但目前王小云教授**了其唯一性,如果不是长度受限(小于32个字符),不推荐使用MD5.

SHA,安全散列算法。和MD5相同,虽然SHA的唯一性也被**了,但问题不大。目前,SHA-256普遍被认为是相对安全的散列算法,是推荐的。

SM3,国密散列算法。

在使用散列算法时,一定要注意加盐。盐是随机的可以公开的一串字符,一般与用户名等唯一标识放一块,用户密码盐进行拼接后,再进行散列计算,这样即使有两个用户密码相同,也会拥有不同的散列值。盐值越长,彩虹表暴力**散列值的效率越低。

7.密码学-总结

对称加密具备较高的安全性和性能,要优先考虑。在一对多的场景,存在**分发难题,使用非对称加密。不需要可逆计算,如存储密码,使用散列算法。

在具体算法的选取上,高效安全的对称加密算法选取AES-CTR,解决**分发难题算法的非对称加密使用ECC,提供单向加密的散列算法用SHA256加盐。这些算法满足绝大部分安全场景,并可以在未来一段时间都保持较高的安全强度。

另外也有一些特殊场景,对称**也可以用在非可信的环境中安全传输,比如在https使用DH**交换算法实现,一边出一半的**,然后拼成一个完整的**。协商之前是非对称的,**协商之后是对称的。

8.安全落地细节——身份认证

身份认证可以分为:对外认证和对内认证。对外认证是应用的登录注册模块,是单一场景的认证,我们可以实现多种认证:你知道什么,你拥有什么,你是什么。对内认证是指,应用内部需要登录认证的功能,如服务器,数据库,git,内部管理后台的登录,是多场景下的认证

认证的威胁:无认证,弱密码,认证信息泄露,身份管理杂乱。解决无认证,需要培养员工安全意识。解决弱密码,尤其是用户弱密码,需要升级密码验证手段和密码强度。认证信息泄露,可以通过加密信道(HTTPS)防止窃听,也可以通过给认证的凭证设置过期时间,降低风险。而身份管理,业界的方案是单点登录SSO(Single Sign On)解决。

典型的单点登陆方式:CAS流程,JWT,OAuth,OpenID。核心思想,用统一的认证中心管理账号,并管理员工内部权限。用户登录会重定向到认证中心,在认证中心处认证(如QQ/微信),认证中心发放认证凭据,返回给应用,通常只能允许应用在一段时间内提供认证服务,时长是安全可控的。区别于传统的登录方式,将账号密码提供给应用,应用中账号密码泄露的风险要远比成熟的单点登录体系来的授时机制来的高。因此推荐接入这些成熟的单点登录体系。

在单点登录方式选取方面,如果只是将用户信息统一管理,那么将用户登录状态保存在客户端的JWT最为简单;如果认证中心只是用来维护账号密码,由业务区维护用户绑定的手机等其他信息,那么OAuth更合适。

网络安全学习1-安全基础与密码学[极客时间]

(该系列未完待续…)