安全是一个很大的话题,最近在研究安全相关的内容,做一些记录,也作为分享,尽量用大白话的方式来讲述一下安全相关的内容,权当科普了。如果有理解不到位,出现错漏或者不准确的地方,欢迎批评指正。当然关于安全的话题和文章也已经很多,但每人从不同的角度去看待这个问题,也有不同的看法,也希望能博采众长,扬长避短,从更多方面去分析安全的问题。
安全的范围也很广泛,常规生活中的认知,就是人和财产没有危险,互相不伤害,并且不存在危险隐患。不同行业对安全的定义也不尽相同,比如支付行业,就是要确保财产的可管可控,以及在商务活动中支付活动的经济安全;在交通行业,安全更是一种状态,甚至是一个危险识别和风险管理的过程。
这里讨论的安全范围也比较具体,主要是IT信息技术中的安全技术,这个文章主要是对一些范围和概念做一些澄清。
Security 和 Safety
在中文中,安全表示两个意思,一个是security(加密安全)另外一个是safety(功能安全),其实这是两个不同的维度和概念,在不同的语言也有不同的表述。
Security是防止外部的攻击,对于资产的窃取,复制或篡改;而Safety主要是由于系统内部本身造成的不可靠,比如电子干扰造成的数据错误,软件实现不完善造成的运行错误等。
这一系列主要是基于Security的范畴,后续关于Safety的话题,用【功能安全(Functional Safety)】来描述,比如汽车的功能安全(先挖个坑,以后慢慢填)。
什么是Security
安全本质上是系统的一项属性,可以确保有价值的【资产(Asset)】不会被窃取,复制,损坏,或者真正的用户不能使用。【资产】包括密码,数据,文档,,代码以及任何有价值的信息。由于防护的是外部攻击,就有【攻击者】采取攻击手段去试图获取,损坏,复制,伪造无权访问的资产。而【资产所有者】来设计系统的防护行为,使得该系统能够防护【攻击者】的软件或硬件攻击。
这一系列的安全主要是在信息系统中的安全方案,尽量涵云、边、管、端的各方面。从服务器上的安全防护技术,可信计算,到边缘计算的安全服务,安全接口,通信链路的安全访问,以及端侧设备,芯片,IP技术等;
安全涉及到的几个特性,分别简单陈述一下:
- 【保密性(Confidentiality)】:未被授权的用户不能访问资产信息,比如密码,私钥。
- 【完整性(Integrity)】确保信息不被篡改,保持信息的完整,比如公钥,加密数据。
- 【可靠性(Authenticity)】确保信息来自可信任的源头,防护被中间人非法篡改,比如固件升级,SSL/TLS鉴权。
- 【可用性(Availability)】合法的用户可以正常访问,获取或修改信息,简而言之,就是不能防护的导致合法用户不能使用资产。
还有一些其他特性,基本也是基于这些特性的延伸。
安全方案的限制
任何安全方案都是有限度的保护,只是在防御可能遇到的攻击的模型下进行防护,没有完美的方案能防护所有的攻击手段。安全方案所付出的代价和资产的价值是一个平衡关系,因此做安全设计必须决定要保护哪些资产,以及要保护资产受到哪些可能的攻击;保护错误的资产或者没有很好的设计要防护的风险的方案,都是被容易破坏的。这段有点绕,说白了就是花有限的钱办最大的事。
做安全方案设计首先是需要分析安全模型,潜在的攻击来自什么地方,要保护哪些有价值的资产,从而确定用什么样的安全防护方案,怎么实施安全方案,在有限的代价情况下做最大的资产防护。
攻击的种类很多,并且从不同维度有不同的分类,从攻击手段来分有3类:
- 黑客攻击 – 基于软件的攻击,包括各种不同的网络攻击,恶意软件,病毒攻击,木马攻击,以及基于操作系统的攻击。
- 低预算硬件攻击 – 比如JTAG调试,边界扫描IO,以及简单测试工具的设备攻击。
- 实验室攻击 – 最全面和侵入式的攻击方式,通过高精硬件设备进行信号分析,逆向工程做底层信号攻击,加密密钥算法强力破解,这个基本不在我们讨论的范畴。
从攻击者来看,主要有下面几种情况:
- 远程攻击者 – 通过网络或者散播恶意软件进行攻击,主要依靠软件漏洞或授权破解来获取设备访问权限。
- 安全专家 – 具备强技术能力的安全技术专家,分析硬件和软件的漏洞进行系统破解,属于安全技术演进的主要驱动力。
- 开发者 – 这个是被经常忽略的攻击,开发者留有系统的后门,进行系统的非法访问和授权攻击,获取用户的有价值的资产或者破坏设备的运行。从另外一方面,安全方案更需要标准化,私有的加密手段往往存在更大的风险漏洞,经过安全机构认证的标准化的安全方案才更可靠。
- 设备所有者 – 期望免费地获取服务和内容,通过对设备的修改来达到相应的目的。而很多设备所有者在技术上是不具备破解能力的,因此更容易被一些黑客的恶意软件或木马软件来入侵。
安全是一个系统
安全方案是一个系统级方案,需要防护不同等级,来自不同攻击者的攻击,资产所有者需要根据安全模型进行防护,降低资产被攻击的风险。目前安全涉及到各个环节,从端侧芯片IP,芯片,模块,产品板,到数据接口,有线和无线网络,以及云端服务器硬件安全。
硬件的安全
主要是解决两个问题:
- 可防护的执行环境:避免在运行过程中对于访问权限异常授权,对于侧信道攻击的保护,减少不完善软件的漏洞等。
- 隔离和保护:不仅仅是数据,还包括运行程序,针对不同安全边界的防护,提供可信的安全服务,隔离敏感数据区等。
在部署硬件安全特性的情况下,固件和相应支撑软件也至关重要,从系统的安全启动,固件的鉴权和保护,启动完全隔离的安全执行环境,以及与安全环境的可信访问接口软件实现等。
资产的价值决定了需要保护的等级:
初步的防护是基于应用层软件和操纵系统软件,而使用的手段主要是软件层面的权限管理,操作系统上应用程序的隔离,用户和用户群组的管理等;
在多系统中,需要有不同的保护工作域,通过虚拟化的方式隔离不同的软件操作环境;
更进一步的防护是提供可信域,把一些敏感数据比如密码,ID等信息放在可信安全域,应用软件和操作系统只能通过安全接口访问可信区域资源,可信区域的内容对操作系统的超级用户也是不可见的黑盒子。
对于更高安全要求的安全,需要完全运行在安全区域,采取一些硬件安全模组或安全核,来保护高价值的密钥,设备ID等。
前面提到安全是一种平衡,随着现在互联网,物联网的设备普及,对于网络访问的也变得至关重要,后续基于TLS/SSL看看怎么用最低的代价实现网络的攻击。