端口敲门与单包授权技术的安全剖析及fwknop应用指南
1. 模糊安全之争
端口敲门(Port Knocking)和单包授权(SPA)是否属于模糊安全(Security Through Obscurity)范畴,一直是安全界热议的话题。当一项新安全技术提出,全球研究人员会审查其架构,其中一项常见测试就是看它是否存在模糊安全问题,若有则会尝试修复架构。所以判断SPA是否存在此问题很重要。
Bruce Schneier在《应用密码学》前言中给出一个形象比喻:把信锁进保险箱,藏在纽约某处让你去读信,这是模糊而非安全;若给你保险箱、设计规格及数百个相同保险箱和密码,你和顶级开锁匠研究后仍打不开读不到信,这才是安全。
开源的端口敲门或SPA实现类似提供保险箱内部工作细节,从加密算法到软件与包过滤器的接口都公开可见。加密的SPA数据包或端口敲门序列在网络传输时,唯一隐藏的是加密密钥,而强大的密码系统不会因密钥未公开就存在模糊安全问题。
假设有一个比端口敲门或SPA弱的安全系统,在OpenSSH服务器守护进程的特定功能中发现漏洞,创建一个补丁要求远程SSH客户端访问该功能时提供加密数据,用如Rijndael或GnuPG使用的Elgamal等成熟密码算法加密。在这个假设例子中,只要加密算法安全,利用该漏洞进行攻击的可能性就会降低,此修复并非依赖模糊安全。
端口敲门(至少加密形式)和SPA比这个例子有更好的安全特性,恶意客户端不提供加密数据,连与SSH服务器的TCP会话都无法建立,更别提与SSH守护进程通信。所以,端口敲门和SPA本质上是一种通用机制,让OpenSSH守护进程的所有功能在未提供加密数据时都无法访问,它们不应被视为单纯的模糊安全技术。