网络安全预示着智能电网的光明未来. 2019-07-31
网络安全代表着一团乌云,遮蔽了现有电网系统的“智能电网”现代化,增强了客户和公用事业部门监控、控制和预测能源使用的能力。在防范潜在的破坏性停电方面,安全的企业级体系结构的需求得到了广泛的认可,但是安全编码设备所扮演的角色更容易被忽略,而且非常重要。
长时间的停机可能是毁灭性的。2011年9月8日,一次持续15小时的大停电影响了500万人,原因是一名技术人员错误地关闭了一条500千伏线路。从加利福尼亚州的圣地亚哥、北部到奥兰治县以及东部到亚利桑那州的地区都感受到了这种影响,经济损失估计在9700万美元到1.18亿美元之间。
通过在流程和基础设施改进中规划和做出明智的决策,可以在一定程度上缓解此类自然和操作故障。但是,智能电网的连通性将焦点从防御世界转移到防御电网的脆弱性,从防御世界的敌对状态转移到防御电网。这不太容易解决。
智能电网的晴天
我们都越来越熟悉智能设备——“物联网”中的“东西”。越来越有可能通过互联网远程控制加热系统、洗衣机甚至咖啡机。
长期以来,能源公司一直使用差别电价来鼓励消费者在低能耗时期使用其电器。但是,一台能够监测智能电网的洗衣机可以“决定”启动一个洗涤周期的最佳时间,而不是通过定时器粗略地控制。将这种“监测智能设备”的原理外推到工业装置上,并增加操作和能源措施,如智能电表、可再生能源、电能表和电网传感器,很容易直观地看到消费者的潜在节约。
从能源供应商的角度来看,这种机制提供了一种方法,可以平滑能源消耗的高峰和低谷,根据实时信息响应需求,并快速响应变化。
最终的结果是一个智能、绿色、高效和低成本的能源网,所有人都受益。(见图1)电力研究机构估计,智能电网每年可以平均节省消费者数百美元,为美国经济创造1.8万亿美元的额外收入。
图1:不断发展的智能电网能源基础设施
2015年12月23日,乌克兰电网遭到攻击,黑客成功破坏了三家配电公司的信息系统。攻击者通过破坏公司网络、抢占监控与数据采集系统的控制、远程关闭变电站、破坏IT基础设施组件和数据以及拒绝用户有关停电的最新信息,暂时中断了终端用户的电力供应。
尽管智能电网的好处是多方面的,但它们比这个乌克兰的例子暴露出更多的“攻击向量”(接入点),以及相应的导致中断的新方法。例如,对电力需求数据的误导性操作可能导致电力公司不必要地调整生产。
纵深防御
在理解如何最好地解决智能电网中各种各样的弱点时,借用一个类比是很有用的。在临床实践的世界中,James Reason教授观察到有如此多的检查级别,以至于对于灾难的发生,需要一系列的故障。这种“瑞士奶酪”纵深防御方法(图2)在网络安全方面也有类似的意义,确保如果侵略者越过了防御线,其他人还在等待。
图2:“瑞士奶酪”模型。一系列不完美的防御层只有在这些缺陷重合时才会失效。
有助于智能电网防御的方法和技术包括安全网络体系结构、数据加密、安全中间件和域分离。监控智能设备值得特别注意,因为它们访问对智能电网运行至关重要的数据。
物联网和网络安全
诸如NIST安全网络、美国国家脆弱性数据库和ICS-CERT(工业控制系统网络响应团队)等举措反映了问题的严重性。但是,许多可用的建议都是高级别的,引用了现有的漏洞,或者引用了原则,而不是细节。那么,一个软件工程师团队如何开发一个安全的应用程序呢?
在传统的以安全为中心的部门,安全软件开发的方法往往是被动的——开发软件,然后使用渗透、模糊和功能测试来暴露和修复任何弱点。
将网络安全设计成监控智能设备的更好方法可能是反映功能安全标准(如IEC 61508“电气/电子/可编程电子安全相关系统的功能安全”)所倡导的开发过程。开发软件的通用框架,在软件开发生命周期的各个方面解决质量、风险和软件安全问题,应用最佳实践,创建可追溯的人为行为集合,有助于在出现漏洞时提供快速响应。
安全代码开发
通过应用自动化工具,可以最有效地证明符合IEC 61508的实践。
在功能安全和网络安全软件开发方面的最佳实践要求从一开始就定义适当的需求,并从它们的双向可追溯性来确保它们完全实现。(图3)
图3:将LDRA工具套件的功能映射到IEC 61508的指南中
单元测试和动态分析同样适用于功能安全和网络安全。在后一种情况下,重要的是确保(例如)防御机制有效,并且在应用边界值的情况下不存在攻击的脆弱性。
IEC 61508还要求使用编码标准,将指定编程语言的使用限制在安全的子集内。在实践中,为了功能安全而编写的代码通常也是安全的,因为在编程语言应用程序中同样的错误经常引起安全和安全问题。
结论
没有一个智能电网是绝对无法穿透的。如果要根据所涉及的风险水平对其进行相应的保护,则需要多个安全级别,以便在一个级别出现故障时,其他级别的安全级别都处于警戒状态。
监控智能设备值得特别注意,因为它们为对智能电网运行至关重要的数据提供接入点。功能安全标准(如IEC 61508)的结构化开发方法可以提供理想的框架,以便在安全应用程序的开发中应用主动方法。
令人高兴的是,安全编码的许多最合适的质量保证技术在功能安全领域得到了很好的证明。这些技术包括静态分析以确保编码标准的适当应用,动态代码覆盖率分析以检查是否有多余的“流氓代码”,以及在整个开发过程中跟踪需求。
这种开发过程的遗留物包括一组结构化的人工行为,在现场发生安全漏洞时提供理想的参考。考虑到黑客和解决方案提供商之间无休止的争斗动态性,优化泄露响应时间不仅仅是一个好主意,它是一个潜在的救星。