鸿蒙应用安全编码专题系列之网络通信安全

0 评论 364 浏览 0 收藏 11 分钟

绝大多数鸿蒙应用均需与后端服务器开展数据交互,HTTPS作为当前主流的远程通信协议,其安全性核心依托于客户端对服务端证书链的校验机制、安全的TLS协议版本、密钥协商算法及加密套件选型,是保障数据传输机密性、完整性与真实性的核心基础。

本原创文章帖发布在华为开发者联盟社区,欢迎开发者前往访问评论交流,更多与该内容相关讨论,请点击原帖查看:鸿蒙应用安全编码专题文章汇总 | 华为开发者联盟

一、背景介绍

绝大多数鸿蒙应用均需与后端服务器开展数据交互,HTTPS作为当前主流的远程通信协议,其安全性核心依托于客户端对服务端证书链的校验机制、安全的TLS协议版本、密钥协商算法及加密套件选型,是保障数据传输机密性、完整性与真实性的核心基础。

当应用发起HTTPS请求时,在TLS握手协商阶段,客户端会调用系统预置的知名CA厂商根证书,对服务端返回的证书链进行完整性、合法性校验;校验通过后,双方完成密钥协商,后续所有通信内容均通过协商密钥进行加密传输。该校验与加密过程由鸿蒙系统提供的网络库(如 NetWork Kit 及 Remote Communication Kit )自动封装实现,应用层无需额外干预,属于透明化处理流程。

需重点注意,若应用访问的服务器部署的证书链非知名CA厂商签发,而是自签发证书(常见于开发、测试等非生产环境),由于自签发证书未被系统预置CA根证书信任,将导致证书校验失败,进而阻断通信链路。部分应用为规避该问题,会对通信过程进行不当配置以保障通信正常,此类配置若应用于商用生产版本,将直接引入中间人攻击风险。

中间人攻击(见下图)可使攻击者劫持并解密应用与服务器之间的全部通信数据,对请求和响应明文进行任意篡改,轻则造成开发者及用户核心数据泄露,重则引发财产损失等严重安全事故,安全影响范围广、危害程度高。

cke_495404.png

注:图片来源于网络连接安全配置-应用安全 – 华为HarmonyOS开发者

二、不安全配置及风险分析

不安全配置的风险与应用所使用的网络库直接相关,以下针对两种主流网络库的典型不安全配置及衍生风险展开详细说明,同时补充相关安全防护方案。

2.1 Remote Communication Kit 不安全配置

对于Remote Communication Kit,核心不安全配置为证书校验配置项设为“skip”(跳过证书校验),该配置会直接绕过服务端证书链的完整性与合法性校验,完全丧失HTTPS通信的身份认证基础,直接引入中间人攻击风险

cke_1542.png

参考:rcp-ArkTS API-Remote Communication Kit(远场通信服务)-网络-系统 – 华为HarmonyOS开发者

2.2 Network Kit 不安全配置

对于Network Kit,与Remote Communication Kit类似,若将证书校验相关配置设为“skip”,将直接跳过服务端证书校验流程,导致服务端身份无法确认,同样存在极高的中间人攻击风险

cke_21069.png

参考:@ohos.net.http (数据请求)-ArkTS API-Network Kit(网络服务)-网络-系统 – 华为HarmonyOS开发者

2.3 衍生安全风险:用户导入CA证书带来的隐患

需明确的是,即便未配置上述“skip”不安全项,通信过程也并非绝对安全。鸿蒙官方提供的Remote Communication Kit与Network Kit,默认会同时信任系统自带的CA根证书及用户手动导入的根证书。基于此,用户可自行导入自签发根证书至系统,导致应用访问服务器时,默认信任该自签发证书。

该场景的安全风险相较于直接配置“skip”略低,因攻击者无法直接对受害者实施攻击(需诱导受害者安装攻击者控制的CA证书),但攻击者可在自身设备上安装恶意CA证书,窥探应用与服务器之间的全部通信过程,同时可对请求和响应数据进行篡改,进而实现薅羊毛、权限提升等恶意目的。

针对该隐患,鸿蒙系统提供了明确的解决方案,可通过配置禁止信任用户安装的CA证书,从根源上规避此类风险。

Network Kit和Remote Communication Kit配置不信任用户安装的CA证书:在src/main/resources/base/profile/network_config.json配置文件中进行配置。

{
  "network-security-config": {
    ... ...
  },
  "trust-global-user-ca": false,  //Configure whether to trust the CA certificate manually installed by the enterprise MDM system or device administrator. The default value is true
  "trust-current-user-ca": false  // Configure whether to trust the CA certificate installed by the current user. The default value is true
}

参考:网络连接安全配置-应用安全 – 华为HarmonyOS开发者

三、不安全的协议及加密套件风险

除证书校验环节外,TLS协议版本及加密套件的选型同样直接影响HTTPS通信安全。鸿蒙官方提供的Remote Communication Kit与Network Kit均支持对TLS协议版本及加密套件进行自定义配置,建议仅配置符合安全标准的协议及套件,杜绝使用不安全配置。

NetWork Kit配置方式参考:

@ohos.net.http (数据请求)-ArkTS API-Network Kit(网络服务)-网络-系统 – 华为HarmonyOS开发者

Remote Communication Kit 配置方式参考:

rcp-ArkTS API-Remote Communication Kit(远场通信服务)-网络-系统 – 华为HarmonyOS开发者

3.1 安全的TLS协议版本

推荐仅使用以下安全TLS协议版本:TLS 1.2、TLS 1.3,禁止使用TLS 1.1、TLS 1.0等存在已知安全漏洞的旧版本。

3.2 安全的加密套件

推荐使用的安全加密套件如下:

  • TLS_AES_128_GCM_SHA256
  • TLS_AES_256_GCM_SHA384
  • TLS_CHACHA20_POLY1305_SHA256
  • TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
  • TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
  • TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
  • TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
  • TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256
  • TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256

注意:以TLS_RSA开头的加密套件采用静态RSA密钥交换,不支持前向保密(PFS),属于不安全套件;采用CBC模式的加密套件易遭受Lucky13、BEAST等攻击,同样禁止使用。

四、核心安全风险总结

1. 若配置“skip”证书校验:当用户连接至攻击者控制的WIFI或不安全网络时,攻击者可通过中间人攻击劫持HTTPS请求明文,对请求和响应内容进行任意篡改,导致数据泄露、财产损失等危害。

2. 若未配置“不信任用户安装的CA证书”:攻击者可通过在自身设备导入恶意CA证书,劫持应用与服务器的通信数据,篡改请求及响应内容,实现薅羊毛、权限提升、0元购等恶意目的。

五、安全建议

1. 严格禁止配置“skip”证书校验项,杜绝绕过服务端证书链校验的不安全配置,确保HTTPS通信的身份认证基础。

2. 生产环境版本必须配置“不信任用户安装的CA证书”,具体配置参考:网络连接安全配置-应用安全 – 华为HarmonyOS开发者

3. 规范配置TLS协议版本及加密套件,仅选用TLS 1.2、TLS 1.3及推荐的安全加密套件,禁止使用存在安全漏洞的协议及套件。

4. 对于安全性要求极高的场景(如金融、支付、核心数据传输等),需额外配置SSL Pinning(证书锁定),进一步强化通信安全,具体配置参考:网络连接安全配置-应用安全 – 华为HarmonyOS开发者

 

其他鸿蒙应用安全编码专题文章请参考:

https://developer.huawei.com/consumer/cn/blog//topic/03207416677214221

更多精彩内容,请关注人人都是产品经理微信公众号或下载App
评论
评论请登录
  1. 目前还没评论,等你发挥!