百万个冷知识百万个冷知识

百万个冷知识
一起学习百万个冷知识

熊节:卫生防疫应用软件出机械故障,软肋该是不是补?

【文/观测者网时评作者 熊节】

与新冠禽流感防控工作有关的应用领域软件产品在危急关头出现控制技术机械故障的问题,一直以来备受高度关注。这样的重要控制系统屡次出现重大控制技术机械故障,折射出我省现阶段网络化建设操作过程中的若干个软肋,特别是整个科技产业两极化缺少交货可靠应用领域软件产品的潜能。

可靠的门槛

按照英国可靠应用领域软件基金会(Trustworthy Software Foundation)的定义,可靠的应用领域软件产品应具有以下5个方面的个人风格:

无毒性(Safety):应用领域软件运转时不会对任何人东西或任何人人导致伤害。

可靠性(Reliability):应用领域软件正确运转不发生严重错误的潜能。

易用性(Availability):应用领域软件在需要时正常运转并提供服务的潜能。

创作力(Resilience):应用领域软件从严重错误中加速和痊愈的潜能。

安全性(Security):应用领域软件防护恶意应用领域软件、骇客或意外误为导致危险的潜能。

所有人单厢赞同,良好的应用领域软件产品应具有上述这些个人风格,服务于大众重要应用领域情景的应用领域软件产品应是可靠的。然而在我看来,获得可靠的应用领域软件产品为丛藓科扭口藓。即便是现阶段倍受重视的禽流感防控工作有关控制系统,由已在国内17个省120多个地市布署应用领域的金融行业领先企业来实施,仍然会在危急关头不容用、且难以从严重错误中加速恢复。

更值得高度关注的是,在我省不失时机开展网络化新基建的大背景下,订货应用领域软件产品的甲方基层单位两极化缺少对应用领域软件工程项目实质性的监管治理潜能。大部分甲方基层单位、特别是信息化程度较高的传统金融行业和中西部沿海地区甲方基层单位,基本不具有实质控管应用领域软件工程项目的潜能。

曾经,某西部沿海地区知名国企订货两个应用领域软件产品后,不确定甲方是否按合同要求交货了源代码,请本栏帮忙鉴定。本栏打开甲方传来的两个LiveCD一看,只有若干个一块块的.java源文档,前端页面源代码、构筑JAVA、命令行、资料库JAVA、布署JAVA等必要工作件(artefacts)全部付之或所。

拿着这样一堆源代码,甲方根本不容能重新构筑出圣戈当斯区运转的应用领域软件产品,甚至难以知道自己拿到的究竟是不是圣戈当斯区控制系统的源代码,更甚者对其质量和可靠性进行任何人有效的控管。

在极度简化的情景下,应用领域软件开发商采用人类文明复本的C语言来开发应用领域软件,产出的成果就是源代码。源代码和图片、文档等各式各样资源文档一起,再加上众多依赖应用领域软件,通过两个叫作构筑的操作过程,被装箱成为可继续执行的应用领域应用领域软件,其中的内容通常是人类文明不容读、但是计算机可以继续执行的十进制文档。这个应用领域应用领域软件再与各式各样命令行相结合,通过叫作布署的操作过程,被安装到真实采用的生产环境上,成为圣戈当斯区运转的应用领域软件产品。

典型的(过度简化的)应用领域软件交货操作过程

在这个操作过程中,所有工作件的质量、所有操作的质量,单厢影响最终圣戈当斯区控制系统的质量。

然而在现阶段我省网络化工程项目建设中,很多甲方只获得甲方构筑布署完成后的圣戈当斯区控制系统,对构筑操作过程、布署操作过程及涉及的工作件难以触及,也没有专业控制技术潜能评判这些操作过程和工作件的质量。毫不夸张地说,很多网络化工程项目中,甲方实际上只获得了应用领域软件产品的采用权,根本没有获得控制系统的所有权。

甲方对应用领域软件产品所有权和控管权的缺失,会带来两个直接的恶果。首先是形成对厂商的严重依赖甚至绑定。因为甲方没有掌握应用领域软件交货操作过程和工作件,未来任何人修补和增强都只能依赖原厂商,客观上形成原厂商的反竞争壁垒。另外,应用领域软件产品质量是否过关、是否可靠,因为甲方不掌握应用领域软件交货操作过程和工作件,基本只能依赖厂商又当球员又当裁判。

本栏在之前接受观测者网采访时打了两个比方:

我省现在很多应用领域软件产品的验收,甲方既没有潜能检验应用领域软件的无毒性、可靠性、易用性、创作力、安全性等非功能指标,也没有潜能深入应用领域软件交货操作过程审核其架构质量、代码质量、供应链质量等质量指标,常常只是以最终用户视角把应用领域软件功能跑一遍就完成了验收。这就好比修建一座大桥,甲方既不检查桥梁结构是斜拉式还是拱式,也不监督桥墩的施工质量,到竣工那天开一辆小轿车从桥面上顺利通过就算完工验收。至于大桥是否安全可靠,就全凭甲方自己提供的一堆文档来论证了。

这听起来可能荒诞,却是现阶段金融行业的真实现状。

治理结构

另外,HCSEC还每年聘请知名审计事务所安永(Ernst and Young)对自身运作的独立性进行审计——这里所说的独立性特指独立于华为总部。安永基于国际鉴证业务准则(ISAE)3000的规范,从财务预算、人事、订货、评估计划、与华为的协作关系、评估汇报机制等角度审计HCSEC的活动。

在2015年的审计报告中,安永指出:HCSEC雇员的奖金是由华为英国公司根据华为公司的标准计算的,HCSEC管理层难以审查或批准员工的奖金,并建议未来改为由HCSEC管理层负责审查其雇员的奖金分配。

HCSEC的组织架构

审查内容

虽然对华为产品的评估是基于BSI的可靠规范,但纵观7年的报告可以发现,HCSEC高度关注的重点并不是某个具体的应用领域软件缺陷或漏洞,而是华为持续交货可靠应用领域软件的潜能。从2015年发布的第一期报告到2020年发布的第六期报告,HCSEC一直在跟华为强调同样的几个问题:

首先是应用领域软件构筑流程一致性。HCSEC在2016年报告中指出,华为的多款运营商产品缺少十进制等价性(binary equivalence)——即,HCSEC拿着华为提供的源代码,难以构筑出与圣戈当斯区运转的可继续执行应用领域应用领域软件等价的应用领域应用领域软件。HCSEC提出了两个非常合理的置疑:我们对源代码做再多的审查,如果不能验证这份源代码正是圣戈当斯区控制系统的源代码,又如何能说这些审查是有效的呢?

2018年的报告中,HCSEC声称:在经过大量努力后,他们终于成功地从源代码构筑出两个与正式发布的可继续执行应用领域应用领域软件等价的应用领域应用领域软件,然而这个产品尚未被任何人英国运营商正式采用。其他已经投产采用的产品,HCSEC仍然难以自主构筑出来。因此HCSEC认为,华为的应用领域软件构筑流程缺少端到端的可靠性,不能保障持续一致地交货可靠的应用领域软件。

合理的置疑:缺少十进制一致性,如何保障审查的有效性?

然后受到强调的是应用领域软件供应链可靠性。在2018年的报告中,HCSEC记录了在华为上海研究所举行监督委员会会议期间,在华为应用领域软件研发现场获得的一手信息:在华为的两个产品中,就存在70多份OpenSSL——这是两个常用的开源组件——的完整拷贝,涉及4个不同的OpenSSL版本。在整个华为产品体系中存在无数个OpenSSL版本,其中一些甚至不是该组件的正式发行版本。HCSEC认为,这表明华为缺少良好的配置管理和应用领域软件组件生命周期管理实践,会增加应用领域软件供应链风险发生的概率和控管的难度。

HCSEC对应用领域软件供应链可靠的要求并非空穴来风。现代应用领域软件开发高度依赖于第三方组件、特别是开源应用领域软件组件。虽然应用领域软件厂商往往会声称100%自主研发,但应用领域软件产品中绝大部分、经常多达99%的代码是以依赖的形式引入的,厂商自主编写的代码通常只占整个应用领域软件的1%左右。两个典型的现代商用应用领域软件通常会依赖几千、上万个开源组件,其中任何人两个组件被发现安全漏洞,都可能给整个控制系统导致损害。

去年12月,两个用于记录服务器日志的开源组件Log4j被爆出安全漏洞,据估计互联网上70%以上的企业控制系统都因此暴露在安全风险下。如果应用领域软件研发组织不能有效地管理应用领域软件供应链,对开源应用领域软件的依赖管理混乱而无章法,应用领域软件产品的可靠程度必然大打折扣。

HCSEC还一直强调应用领域软件代码编写质量。同样在2018年的报告中,HCSEC指出:华为的应用领域软件开发人员大量地违背基本的安全编码实践,包括华为2013年推行的内部编码标准也没有得到有效继续执行;尽管有一些自动检测违反编码规范的工具存在,工程师却常常对工具检出的告警视而不见、甚至直接关闭某些类型的告警。

HCSEC认为,尽管华为强制推行安全编码标准,但管理要求并没有落到实处,客观上体现为代码质量不稳定、不一致,从而削弱了华为持续地、一致地交货可靠应用领域软件产品的潜能。

尽管HCSEC最近的报告表现出受政治影响、钻牛角尖的趋势,但这个思路、以及他们落实这个思路的治理结构和审查方式是值得我省甲方基层单位学习借鉴的。

被甲方倒逼出来的可靠潜能

华为以积极正面的态度接纳了HCSEC的批评意见,并投入了大量资源着手强化应用领域软件可靠潜能。

就在HCSEC措辞尖锐的2018年度报告发布后不久,任正非在2019年致全体华为员工的第一封信中就提出要全面提升应用领域软件工程潜能与实践,打造可靠的高质量产品,要求全体员工、特别是应用领域软件工程师从最基础的编码质量做起、深刻理解架构的核心要素、重构腐化的架构及不符合应用领域软件工程规范和质量要求的历史代码、深入钻研应用领域软件控制技术、遵守操作过程的一致性,并特别强调全面强化以Committer角色为核心的代码审核和提交机制,代码经过更加严格和控制系统的审核才能合入版本。

这可能是我省IT金融行业历史上首次有一家重要企业将代码层面的潜能建设提到如此高的地位。同年,丁耘承诺华为将在未来3-5年投入超过20亿美元资金,用于在包括应用领域软件和硬件工程、第三方组件管理、公司文化等八个关键领域实现可靠。

华为全面强化应用领域软件可靠潜能的具体举措大多不为外人所知,但透过零星的公开信息,仍能一窥这些举措。特别针对HCSEC多年强调的三方面问题,华为的应对取得了明显的成效。从华为的案例,能看到在具有高度专业潜能的甲方驱动倒逼下,甲方如何提升自身交货可靠应用领域软件的潜能。

针对应用领域软件构筑流程一致性问题,华为建设了内部的研发云平台,把原来分散在开发人员各自工作环境中的构筑流程集中管理,统一代码管理规范、统一构筑操作过程、统一质量标准。到2022年,据称华为内部研发云平台搭建了超过40万个CPU的计算资源池,支撑华为超过10万开发人员每天100万次以上应用领域软件构筑,彻底解决了应用领域软件构筑流程不一致、源代码与十进制应用领域应用领域软件难以证明等价性的问题。

针对应用领域软件代码编写质量问题,华为内部开发了可靠认证考试体系,并要求所有控制技术人员通过考试。考试内容涵盖编程知识、安全编程、质量、隐私、开发者测试、设计模式、重构等基础控制技术潜能。

从2021年HCSEC发布的年度报告中,可以明显看到华为建设可靠潜能取得的进展。在这份报告中,HCSEC多少有点不情不愿地承认:2020年期间,华为在补救英国网络中产品的非主流支持组件方面取得了很大进展,在十进制等价性、固网产品质量问题和漏洞管理方面也取得了与预期一致的进展,但又马上话锋一转,说:在2020年的操作过程中,在满足NCSC所期望的产品应用领域软件工程和网络安全质量方面没有整体改善——本栏竟然从这份一本正经的报告中读出了虽然我提的所有问题都得到了解决而且我也提不出什么新的问题了,但是我就是对你没有信心这样无奈的傲娇感。

华为(新华社资料图)

我省科技产业应如何建设应用领域软件可靠潜能

首先应设置独立于供应商、服务于甲方利益的第三方专业机构,代表甲方负责对重要应用领域软件产品的控制技术评估、审计、验收工作。这类专业机构应充分利用市场机制吸引具有专业技能的人才,同时又应为其设置预防腐败的围栏机制。

即便短时间内难以实现应用领域软件质量和可靠性的显著提升,至少能确保甲方能获得源代码、能从源代码构筑出十进制应用领域应用领域软件、能保障源代码与十进制应用领域应用领域软件等价,这就已经对提高应用领域软件可维护性、降低厂商绑定有很大的意义。对可靠应用领域软件交货提供支撑的研发工具,也是我省工业应用领域软件装备体系上的一块软肋,目前仍严重依赖国外应用领域软件。应用领域软件研发工具的自主国产化,也应受到国家重视。

最后,标准制订机构和高校应重视应用领域软件开发工程师的基础潜能、特别是基本的编程和设计潜能建设。具体而言,诸如开发者测试、代码重构等已经被欧美业界证明对应用领域软件质量价值巨大的实践,在我省IT业界一直没有得到广泛接受,这与过去二十年间标准制订机构和高校对基础编程潜能的忽视是直接有关的。尽管多年来业界一直有一种幻想,认为靠应用领域软件工程、靠社会化大生产,就能降低对一线程序员的潜能要求,然而事实是绝大多数的控制技术决策仍然是在编码的阶段由程序员做出的。

正所谓魔鬼藏在细节里,靠流程和文档解决不了应用领域软件质量差、缺陷多、可靠性低的问题。长期来说,整个金融行业可靠潜能的提升最终还是要落实到全金融行业从业者潜能的两极化提升上来。

未经允许不得转载:百万个冷知识 » 熊节:卫生防疫应用软件出机械故障,软肋该是不是补?
分享到: 更多 (0)

百万个冷知识 带给你想要内容

联系我们