写点什么

源代码审查能否成为国际惯例?

  • 2020-10-10
  • 本文字数:2401 字

    阅读完需:约 8 分钟

源代码审查能否成为国际惯例?

最近听说,TikTok 向澳大利亚政府表示,将允许澳政府官员审查其算法并测试源代码,这也在网上引起了热议。以此为契机,我想站在中国的立场上,谈谈开放源代码审查这件事的来龙去脉,从现状、风险和收益几个方面分析一下,看看它对我们到底是福还是祸。


我们先来看看现状。开放源代码给所在国政府审查这事儿,究竟有行业先例呢,还是无理要求呢?


事实上,早在 2003 年,全球软件业的巨无霸微软,就与中国信息安全测评中心签署了“政府安全计划”,中国也成为全球首批参与此计划的国家之一。2014 年 7 月,微软主动增强了“政府安全计划”,允许签约方访问在北京的“微软技术透明中心”并查看及测试微软产品和服务的源代码。而随着 Windows 10 政府版的落地,更是可以看出这种代码审查的正朝着良性互动的方向发展。在微软的示范作用下,IBM 也通过与世纪互联合作,在中国提供其 Bluemix 云计算平台,并开放其源代码审查。


在中国企业走出去的过程中,这样的代码审查也早有先例。在英国、澳大利亚等国,华为都已经建立了安全评估中心,提供 100%的源代码接受政府的审查,以应对部分持敌意者抛出的“军方背景论”。客观地说,这也是华为在欧洲等地区能够顺利发展壮大的重要原因之一。


在与中国无关的市场上,这样的事而也屡见不鲜。比如,思科、IBM 和 SAP 等欧美科技公司,正接受俄罗斯政府的要求,使其可以获得严格保密的产品源代码,以应对俄罗斯对其从事黑客活动的指控。而俄罗斯的卡巴斯基杀毒软件,也推出了一项全球透明度计划,从 2018 年第一季度开始,将软件源代码提交给更广泛的信息安全社区和其他利益相关者进行独立审查,以表明企业和任何间谍行为无关。


因此,从大背景来看,随着各国政府对信息安全和数据国境越来越重视,向政府开放代码审查,提供数据保护,已经成为不可避免的大趋势。


那么我们再来看看,TikTok 向澳洲政府开放源代码审查,有没有什么严重的风险呢?


首先,TikTok 虽然被称为“海外版抖音”,可是实际上,它们根本就是不同的两款应用。二者的用户和数据,体系也完全不相通,只是产品形态和界面有些相似罢了。根据 TikTok 全球首席安全官罗兰·克劳蒂尔(Roland Cloutier)的说法,TikTok 使用的源代码与中国国内的抖音源代码并不相同。因此,担心开放 TikTok 源码会对国内的抖音产品安全性带来威胁,有点杞人忧天了。


另外,值得特别提醒,这里所说的“开放源代码审查”,只是针对各国的相关政府部门,而非对商业公司或其他机构。在审查的方式上,是有资质的政府人员访问 TikTok 公司在美国洛杉矶的透明与问责中心,或通过虚拟参观的方式来审查算法并测试源代码,而并不能将源代码带走或修改。当然,如果澳洲政府能找个过目不忘的天才,把源代码一行不落地都背下来,回家再原样默写一遍,那算我没说。


其实,就算是真有人能默写出来,也只不过是一项行为艺术罢了。做过互联网的朋友,可能都或多或少有点概念:对这样的内容性产品来说,算法固然重要,但远远不如庞大的用户生态和丰富的数据更有价值。没有了数据,推荐算法毫无用户之地。以为学会源代码就想复制一个 TikTok,也就好比你带上了手套和护牙胶,就跳上拳击台准备和泰森一决雌雄一样可笑。


反而是微软向各国政府开放审查的 Windows 源代码,倒真是他的命根子。多少操作系统秘而不宣的武林秘籍,都可以在代码里一览无余。理论上讲,你只要把代码编译出来,手上就是活色生香刚出炉的 Windows,跟从微软哪里买到的正版,除了少个包装盒以外,没有任何差别。就算不是整体编译,找个高手瞧一瞧内核里的关键代码段,可能也能瞬间解决许多操作系统研发中过不去的坎儿。


于是,微软都还没担心,TikTok 用得着担心么?说句文言,这不是皇上不急太监急么?


所以依我的看法,及时向外国政府开放源代码审查,风险也相当有限,大可不必过于担心。不过,也许或有网友质问我,没有多大风险就要开放么?这不就认怂了么?这倒是问出了我想说的关键:从目前的博弈局面来看,TikTok 开放源代码审查,未必不是一件好事。


这话怎么说的呢?大家要认清这样的现实:在目前全世界的软件和互联网产业中,美国还是一骑绝尘的老大,大多数具有全球影响的软件和网络产品,都还是美国人的天下。虽然微软的 Windows、IBM 等少数企业向中国开放了源代码审查,可是还有很多大家耳熟能详的产品,比如 Office、iOS、Oracle 等等,并没有开放。也就是说,在这些软件和系统中,理论上说,还存在着恶意代码或者留有后门的可能性。


大家想想,中国有多少人在用 iPhone 手机?有多少台电脑上装有 Office?有多少银行的核心系统完全依赖 Oracle?而这些软件在背后做了些什么,我们都是一无所知的。所谓防人之心不可无,这样的现状,细想起来还是让人背后有一丝凉意的。


中国虽然有少数几个产品引起了美国人的注意,可是在这样的博弈局面下,其实还是光脚不怕穿鞋的。换句话说,如果中美之间能够达成这样的一种妥协:互相向对方政府开放源代码审查的权利,那么从信息安全的角度来看,受益者当然是中方无疑。


也就是说,开放源代码审查,从大方向上看,是符合中国利益的。虽然上面说的妥协显然不可能顺利达成,但是我们没有理由拒绝局面朝着这个方向发展。所以,反而应该利用好这次契机,在严格的安全保护机制下,向有关政府开放源代码审查的同时,坚决主张对那些在中国拥有大量个人或企业用户的外国软件和网络服务,也用对等的方式向中国政府开放源代码审查权力。


这么看下来,TikTok 开放源代码审查,虽然在网络上一石激起了千层浪,可是冷静下来分析一下,我认为一则不必过于担心,二则很可能反而是个有利的机会。希望国家有关部门利用此次契机行动起来,在此案例的基础上,探索全球通用的软件安全审查模式,用制度化的方式打破跨国巨头们在中国的代码和信息垄断,一劳永逸地解决数字国境上的安全问题。


作者介绍


北冥乘海生,清华大学信息与通信工程博士、《计算广告》作者。


本文转载自知乎


原文链接


源代码审查能否成为国际惯例?


2020-10-10 10:051688

评论

发布
暂无评论
发现更多内容

「绝密档案」“爆料”完整秒杀架构的设计到技术关键点的“八卦资料”

洛神灬殇

秒杀系统 秒杀架构 秒杀架构设计 web技术分析 10月月更

SpringMVC源码分析-HandlerAdapter(7)-ServletInvocableHandlerMethod组件分析

Brave

源码 springmvc 10月月更

Redis 面试那些事(30问与答)

Seven七哥

redis 面试 后端

🍃【SpringBoot技术专题】「开发实战系列」动态化Quartz任务调度机制+实时推送任务数据到前端

洛神灬殇

springboot quartz DeferredResult 任务调度 10月月更

项目开发过程中,成员提离职,怎么办?

石云升

项目管理 管理 引航计划 内容合集 10月月更

【LeetCode】窥探迭代器Java题解

Albert

算法 LeetCode 10月月更

MySQL性能分析和索引优化

程序员阿杜

MySQL

如何画好架构图

十二万伏特皮卡丘

4. Python 函数式编程之 functools 模块初体验

梦想橡皮擦

10月月更

Ember Data 之记录查询

devpoint

store ember.js 10月月更

回忆录:「技术主管」练成记

蔡建斌

管理 引航计划 内容合集

怎么给程序员做职业规划?

石云升

团队管理 管理 引航计划 内容合集 10月月更

在线摇骰子/色子工具

入门小站

工具

5分钟搞懂URI、URL和URN

俞凡

网络 10月月更

Kotlin中逻辑运算符操作分析

maijun

and kotlin逻辑运算符 &&

看山聊Java:开始使用 Java8 中的时间类

看山

Java java8 DATE类型 10月月更

容器 & 服务:Helm Charts(三)K8s集群信息

程序员架构进阶

架构 Kubernetes 容器 Helm Charts 10月月更

团队管理之如何成为合格的TeamLeader

小诚信驿站

团队管理 管理 引航计划 内容合集

一种基于Kotlin DSL的静态代码分析AST规则扩展实现

maijun

Java dsl 静态代码分析 结构化规则 规则扩展

007云原生之Service Mesh(中心化Broker)

穿过生命散发芬芳

云原生 10月月更

【初恋系列】那年的试卷我们再肝一遍(试卷存储详细设计)

人工智能~~~

存储 详细设计 那年的试卷我们再肝一遍 试题

【LeetCode】密钥格式化Java题解

Albert

算法 LeetCode 10月月更

Ember Data 之模型定义

devpoint

model ember.js 10月月更

【Flutter 专题】38 图解 Android 打包 APK 文件

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 10月月更

读书笔记:彼得原理

程序员架构进阶

自我提升 管理者 彼得原理 10月月更

linux时间格式化命令

入门小站

Linux

15个开发者最常犯的错误,你中招了吗?

俞凡

认知 10月月更

golang--进程,线程,协程调度

en

Go 语言

【Flutter 专题】39 图解 iOS 打包 IPA 文件

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 10月月更

架构实战营 - 模块 9 - 设计电商秒杀系统

雪中亮

架构实战营 #架构实战营

架构实战营模块九作业

老猎人

架构实战营

源代码审查能否成为国际惯例?_软件工程_北冥乘海生_InfoQ精选文章