查看原文
其他

软件定义安全

SECISLAND SECISLAND安全官 2022-08-17

概述

大多数的安全产品都和软件有关系,现在很多公司卖的安全硬件盒子也是操作系统加安全软件的结合体,操作系统本身也是软件。所以软件是安全的一个重要组成部分,甚至在某种程度上说软件决定安全产品,软件定义安全。

1


软件无处不在

在这个瞬息万变的时代,软件扮演着越来越重要的角色,人们可以随时随地用手机或平板电脑办公,手机或平板上运行的都是软件。在很多业务领域中,都需要打通PC和移动平台。凭借互联网和云计算解决方案,企业可以实现软件产品的本地化和全球部署发布。

随着信息技术的发展,世界正在变得更加“智慧”,万事万物间感知化、互联化和智能化的程度不断加深。物联网,智能家居,车联网的发展也延展了软件的应用领域。我们现在正处在一个“软件无处不在”的时代,如今,全球经济体的创新越来越依赖于软件的创新:无论是在系统工程领域,还是在其他的科学研究领域,全球的创新在很大的程度上是以软件的开发、变更和监控为基础。

随着信息技术的发展,工业产品已经变得更加“智慧”,这使得系统软件的复杂性及开发难度与日俱增。以汽车为例,现在一辆普通汽车都要有数百万行代码,比过去一架航天飞机拥有的代码还多;而一辆功能先进的医疗急救车甚至需要超过5000万行软件代码。

2


软件发展历史

计算机软件技术发展大概有七十年了,早期计算机只能被计算机专家使用,今天,计算机的使用非常普遍,甚至没有上学的小孩都可以灵活操作;六十年前,文件不能方便地在两台计算机之间进行交换,甚至在同一台计算机的两个不同的应用程序之间进行交换也很困难,今天,数据在两个平台和应用程序之间提供了无缝连接;五十年前,多个应用程序不能方便地共享相同的数据,今天,数据库技术使得多个用户、多个应用程序可以同时使用和操作数据。

1、第一代软件(19461953

第一代软件是用机器语言编写的,机器语言是内置在计算机电路中的指令,由0和1组成。不同的计算机使用不同的机器语言,程序员必须记住每条机器语言指令的二进制数字组合,因此,只有少数专业人员能够为计算机编写程序,这就大大限制了计算机的推广和使用。用机器语言进行程序设计不仅枯燥费时,而且容易出错。想一想如何在一页全是0和1的纸上找一个打错的字符?

在这个时代的末期出现了汇编语言,它使用助记符(一种辅助记忆方法,采用字母的缩写来表示指令)表示每条机器语言指令。


2、第二代软件(1954-1964)

当硬件变得更强大时,就需要更强大的软件工具使计算机得到更有效地使用。汇编语言向正确的方向前进了一大步,但是程序员还是必须记住很多汇编指令。第二代软件开始使用高级程序设计语言(简称高级语言,相应地,机器语言和汇编语言称为低级语言)编写,高级语言的指令形式类似于自然语言和数学公式,不仅容易学习,方便编程,也提高了程序的可读性。每种高级语言都有配套的翻译程序(称为编译器),编译器可以把高级语言编写的语句翻译成等价的机器指令。系统程序员的角色变得更加明显,系统程序员编写诸如编译器这样的辅助工具,使用这些工具编写应用程序的人,称为应用程序员。随着包围硬件的软件变得越来越复 杂,应用程序员离计算机硬件越来越远了。那些仅仅使用高级语言编程的人不需要懂得机器语言和汇编语言,这就降低了对应用程序员在硬件及机器指令方面的要求。因此,这个时期有更多的计算机应用领域的人员参与程序设计。


3、第三代软件(1965-1970)

在这个时期,由于用集成电路取代了晶体管,处理器的运算速度得到了大幅度的提高,处理器在等待运算器准备下一个作业时,无所事事。因此需要编写一种程序,使所有计算机资源处于计算机的控制中,这种程序就是操作系统。

为解决多用户、多应用共享数据的需求,使数据为尽可能多的应用程序服务,出现了数据库技术,以及统一管理数据的软件系统——数据库管理系统DBMS。

由于软件规模的不断庞大,出现了软件工程的概念。


4、第四代软件(1971-1989)

20世纪70年代出现了结构化程序设计技术,出现了Pascal语言,Basic升级为具有结构化的版本,还出现了灵活且功能强大的C语言。

更好用、更强大的操作系统被开发了出来。为IBM PC开发的PC DOS和为兼容机开发的MS DOS都成了微型计算机的标准操作系统,Macintosh机的操作系统引入了鼠标的概念和点击式的图形界面,彻底改变了人机交互的方式。

20世纪80年代,随着微电子和数字化声像技术的发展,在计算机应用程序中开始使用图像、声音等多媒体信息,出现了多媒体计算机。多媒体技术的发展使计算机的应用进入了一个新阶段。

这个时期出现了多用途的应用程序,这些应用程序面向没有任何计算机经验的用户。典型的应用程序是电子制表软件、文字处理软件和数据库管理软件。

 

5、第五代软件(1990-)

第五代软件中有三个著名事件:在计算机软件业具有主导地位的Microsoft公司的崛起、面向对象的程序设计方法的出现以及万维网(World Wide Web)的普及。

在这个时期,Microsoft公司的Windows操作系统在PC机市场占有显著优势,Microsoft公司的Word成了最常用的文字处理软件,他们又将文字处理软件Word、电子制表软件Excel、数据库管理软件Access和其他应用程序绑定在一个程序包中,称为办公自动化软件。

面向对象的程序设计逐步代替了结构化程序设计,成为目前最流行的程序设计技术。面向对象程序设计尤其适用于规模较大、具有高度交互性、反映现实世界中动态内容的应用程序。

3


安全的发展历史

早期的电脑是很安全的,没有病毒,没有攻击,电脑的用途就是做计算,做业务等。下面通过防病毒和防火墙来简单说明下。

1、防病毒发展史

1982年世界上第一个电脑病毒被开发出来,elk cloner病毒出现在苹果电脑中,这个由rich skrenta编写的恶作剧程序,是世界上已知的第一个电脑病毒。

到了1986年,第一个电脑病毒C-BRAIN终于诞生了,它是业界公认的真正具备完整特征的电脑病毒始祖。这个病毒程序是由一对巴基斯坦兄弟所写的,他们在当地经营一家贩卖个人电脑的商店,由于当地盗拷软件的风气非常盛行,因此他们的目的主要是为了防止他们的软件被任意盗拷。只要有人盗拷他们的软件,C-BRAIN就会发作,将盗拷者的硬盘剩余空间给吃掉。

中国成立以来的第一例病毒——1988年发现的小球病毒,它的发作条件是当系统时钟处于半点或整点,且系统又在进行读盘操作。发作时屏幕出现一个活蹦乱跳的小圆点,作斜线运动,当碰到屏幕边沿或者文字就立刻反弹,削去碰到的部分文字。

自1986年的电脑病毒问世后,人们就开始思考如何对抗病毒程序,到1987年IBM发布了面向个人用户的第一款杀毒软件。后面杀毒软件就如雨后春笋一样繁荣起来,出现了国内的金山、瑞星、江民、360,国外的卡巴斯基、NOD32、麦咖啡、诺顿等杀毒软件等。不过随着操作系统安全的增强,传统杀毒软件的安装率在逐步降低,如果把操作系统当做业务软件来看,安全就是业务的付出产物。


2、防火墙发展史

1986年美国Digital公司在Internet上安装了全球第一个商用防火墙系统并提出防火墙概念。

1989年出现了包过滤防火墙,实现简单的访问控制,称之为第一代防火墙。

随后出现了代理防火墙,在应用层代理内部网络和外部网络之间的通信,属于第二代防火墙。安全性较高,但处理速度慢。

硬件防火墙是由Check Point创立者Gil Shwed于1993年发明并引入国际互联网。1994年Check Point公司发布了第一台基于状态检测技术的防火墙,通过动态分析报文的状态来决定对报文采取的动作,不需要为每个应用都进行代理,处理速度快且安全性高,被称为第三代防火墙。

2008年Palo Alto Networks发布了下一代防火墙,解决了性能问题,同时还可以基于用户,应用和内容来进行管理控制。

2009年Gartner 对下一代防火墙进行了定义,明确了防火墙应具备的功能特性。防火墙进入了一个新的时代。

现在也有种极端的观点是未来安全要回归的到业务附属的本质,可能会不存在独立的安全产品,都是业务系统带了很强的安全属性,可能有点极端,但减少产品的种类倒是可能性很大的。难怪近日,微软CEO萨提亚·纳德拉表示,微软在2020年的安全业务收入达到100亿美元,年增长率超过40%。这些安全业务包括了,安全、合规、身份与管理业务。

4


安全产品的开发本质

现在绝大多数的安全产品都是用软件开发的(有防火墙用的是独立的硬件处理芯片),所以安全产品的开发从一个程序员的角度看,就是软件开发,和其他的erp,oa的开发没有太大的区别。唯一的区别就是产品的目标、需求的来源和获取方式可能和业务系统不一样。大多数人认为安全更偏技术偏底层,仅此而已,比如很多和密码相关的产品就是把数学的“业务”用代码来实现;防火墙主要实现网络隔离“业务”的需求,IPS就是实现流量中发现恶意流量的“业务”。所以从本质上看,安全产品开发就是“安全”业务的开发。

安全产品开发也需要经历需求获取、设计、开发、测试、上线、运行、优化的阶段,这些和业务系统开发并无区别。

安全是一个特别喜欢造词的行业,每年都会产生很多新的单词,比如:IDS、IPS、WAF、UTM、NGFW、SIEM、SOC、EPP、EDR、NTA、APT、IAM、MFA、SSO、IDaaS、TEE、SE、TA、ZTNA、MSG、SDP、DevSecOps、DAST、IAST、SAST、RASP、DLP、UEBA、NFV、CASB、CWPP、CSPM、SDL、SOAR,SOAPA等等。

过多的单词让客户看的眼花缭乱,难道仅仅是因为以前的产品没有做好,换个词来接着做,我们抛开名称看本质。安全产品有两种风格,一种是的单点产品,这种产品越来越少了;一种就是方案产品,就是把单点的产品进行组合,比如下一代防火墙就是传统的防火墙加上IPS等一堆的功能。比如SOAPA就包括了端点检测/响应工具(EDR)、事件响应、网络分析、用户行为分析(UEBA)、机器学习、防恶意软件沙箱、威胁情报、漏洞扫描和安全资产管理等组件,其实本质上也是一个方案产品。从中可以发现产品的组合加上一些概念就演变成了现在的安全产品系列。甚至很多人把一些理念当成产品,比如自适应安全,零信任等,有这种产品吗?其实他们都是一些安全的理念,加上一个一个的产品去实现这些理念,本质上就是一个方案的落地。

没有BUG的代码和没有漏洞的软件,是不存在的。安全软件也是软件,所以也需要打补丁升级,代码检查等。随着2021hw结束,据说发现了不少安全产品的漏洞。截止到4.28日,共发现100个。部分漏洞如下:

5


如何选择产品

《安全建设的成本》中,从产品功能、价格、服、测试、市场等角度进行选择产品。本文从开发角度看如何选择产品。

1、产品本质

了解清楚自己需求后,就要了解一下产品的本质技术原理,现在很多厂家介绍产品的时候过多的介绍了产品的概念、理念的、实现的功能等内容,对原理的东西介绍的很少,可能这个东西不太好讲,可能牵扯到什么专利技术不愿意讲。不管怎么说碰到很多的新的不认识的产品,多了解下原理总是好事。


2、产品经理

从开发角度看,产品经理是一个很重要的角色,他决定了产品的方向和特性。所以了解下产品经理的背景、技能、专业等对产品选择有一个很大的帮助。


3、工程化能力

很多做安全的人员是攻防出身的,可能是个很厉害的渗透测试人员。写代码和渗透测试有很大的区别,写好一个小功能和写一个功能丰富的大产品还是有着本质的区别,后者更加考验开发的工程化能力。


4、团队稳定性

产品的演进具有连续性,不管写多少文档和注释都很难完全把一个人的思想完全保留下来。所以团队的稳定性对产品的演进和优化就有很大的帮助。比如HP并购Arcsight后,大量的人员离职包括前Arcsight的CEO,并购后掌管HP大安全业务的Tom Reilly都离开了HP,所以Arcsight退步比较明显。


5、公司性质

越来越多的互联网公司开始介入to B市场了,不可否认又给客户一个多的选择,互联网公司的产品研发能力往往比较厉害,而且快速迭代能力很强。但他们的问题是个性化能力支持不够,服务不一定跟得上,传统公司可能会反过来。


总结

总之,软件开发的能力决定了安全产品的能力,计算机原理和软件开发领域这么多年都没有太大的变化,所以安全产品的方向和思路对产品的效果起着至关重要的作用。安全产品后面拼的就是思路和工程化能力,最终就是工程化能力,因为思路很容易理解和模仿,后面有时间会分析下安全没有银弹。



相关分享:

安全建设的成本

安全的本质

资产管理的难点




赛克蓝德始终坚持数据改变生活的使命,秉承“互利共赢、服务客户”的经营理念,为客户提供优秀的产品体验。
安全运营管理离不开大家相互学习,羿伏安全运营实践群提供了一个技术人员互相交流的平台,欢迎对安全运营有兴趣的朋友入群交流!

点个“在看”,一年不宕机

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存