最近和一些朋友讨论App的安全性,大家都认为App着重的多半是操作接口,用户体验.鲜少留意到安全问题.
小弟就来分享一下何谓证书绑定(Certificate Pinning),初次接触这个名词的人可能不太理解它想表达的意涵.简单来说,它就是App可以有效避免中间人攻击的风险的强验证方式.
试想,即便一个App已有采用加密传输,因此即便被抓包,也无法得知传输内容.但若是未确实达成证书绑定,传输过程之中便有可能会被有心人士以中间人攻击手法,拦截传输中的敏感性信息.
如下图所示,即是证书绑定的验证方式,右边为App操作接口,左边则是proxy工具,我们便可透过在手机上安装假证书的方式,来骗取传输中的加密信息,如左方红底线所示,即为用户的电话号码及帐户ID.
也许有人会说,那还不简单,我就直接对上述那些敏感信息再进行加密,这样一来,即便被拦到,也无从得知内容了.乍听之下似乎有理,但别忘了,万一开发程序时不小心漏掉了一些怎办,还不是一样有着风险存在?因此,要从根本上解决,那就是,确实达成证书绑定.就是根本无从以上述手法拦得敏感信息即可.而通常在这种情况之下,[Alert]窗口中还可看到App吐出的错误讯息,即知确有进行验证.