暗网潜航——开源软件安全性

  很多人对开源软件安全抱有疑问,大家争拗究竟程式原始码公开透明化后,是否会较易遭到攻击。然而这论点反而凸显他们混淆信息安全理论,今次笔者简单论述一下「程式原始码公开后是否安全」的迷思。
  在传统古典安全理论中伸延至今有一个根深柢固的概念,是「透过隐匿来实现安全」(Security through obscurity),意思是「一个安全的保护秘密机制是令到想破解秘密的人不知道保护秘密的机制」。这个概念听起来很合理,如同人类自古以来把设计图和配方秘密收藏。然而在19世纪,密码学上有一个叫做「柯克霍夫原则」(Kerckhoffs's principle)被提出,其理论是「即使一个密码系统的任何设计为人熟悉,只要密匙未被泄漏也是安全的」。因为我们现在所使用的所有密码演算法其实都是公开,只是使用保护机制来保护密匙。
  事实上这些所谓秘密的密匙皆难以保守,任何软件只要发布在公众环境下都可以被人使用逆向工程把原始程式码还原出来。
  开源软件安全性定义在于匿藏密码系统设计的完善度,而非只靠匿藏密码系统设计。一般人假定攻击者拿不到原始码这种想法并不现实,因为「永无可信封闭原始码」。而完善的安全设计是经过无数人验证及改进,称为「透明式安全」(security through transparency)。情况就如公开加密演算法,但透过不断改进保护密匙增强加密机制。故此现今互联网世界中,一般人以为把原始程式码匿藏便可达至安全并不可行。
TOZ联合创办人
庞博文



更多文章