【优秀APP隐私合规案例分享】讯飞语记隐私合规成长历程

发布时间:2023-03-21 17:42:00

前言

本文根据科大讯飞 Ai营销业务群商业产品部专家张礼耀在3月10日“会员创享日”活动分享的《讯飞语记隐私合规成长历程》主题演讲整理而成。

一、简介

讯飞语记是由科大讯飞出品,专注于语音输入的综合类云笔记,支持实时语音听写、会议录音转写,拍照识别、图文编排、发音人朗读等功能,运营时间长达8年之久。

2019年,讯飞安全部开始牵头治理隐私合规方面存在的问题,并于10月进行了第一次集中整改,主要聚焦自身以及引用方存在的违规收集个人信息的问题。2020年接到工信部的通报后,第一时间及时解决了存在的问题。2021年12月进行了第二次集中整改,主要针对个人信息使用规范问题。由于后期合规监管越来越细化和严格,各应用市场也反馈了一些问题,有些问题会影响到APP的上架更新,在绿盟的协助下,都一一得到了快速解决。在此特别感谢绿盟帮助讯飞语记APP检测出隐私合规问题并协助解决。本文将结合讯飞语记APP的整改经验,以及日常的开发经验介绍我们是如何实践隐私合规的。

二、隐私合规的界定及整改建议

在工业和信息化部《关于纵深推进APP侵害用户权益专项整治行动的通知》工信部信管函〔2020〕164 号)和四部委《App违法违规收集使用个人信息行为认定方法》国信办秘字〔2019〕191号的基础上,结合整改的主要问题,筛选了以下高频违规项。

2.1 未公开收集使用规则

场景说明:

1.在APP中没有隐私政策,或者隐私政策中没有收集使用个人信息规则;

2.在APP首次运行时未通过弹窗等明显方式提示用户阅读隐私政策等收集使用规则;

3.隐私政策等收集使用规则难以访问,如进入APP主界面后,需多于4次点击等操作才能访问到;

4.隐私政策等收集使用规则难以阅读,如文字过小过密、颜色过淡、模糊不清,或未提供简体中文版等。

整改建议:

1.提供隐私政策相应页面,并且在程序内提供相应查看入口,条例清晰。

2.程序启动时需提示用户同意相关用户协议和隐私政策的页面或弹窗,拒绝需要进入游客模式下使用,隐私政策有相关变更时需要再次取得用户同意。

3.程序内需提供同意隐私政策等入口,也需要有拒绝条款等入口,拒绝后则不能使用相关敏感权限和收集用户信息

注意:获取设备信息的范围和权限的范围是非常容易统计不全或遗漏统计的,这也是隐私合规检测重点会关注的地方。

2.2 违规收集个人信息

场景说明:

未经用户同意,存在收集IMEI、设备id,设备MAC地址和软件安装列表、通讯录和短信的行为。

整改建议:

1.隐私政策隐私弹窗必须使用明确的“同意\拒绝”按钮;只有当用户点击“同意”后,APP和SDK才能调用系统接口和读取收集用户的信息,未“同意”前,建议不进行任何SDK的初始化和调用。

2.各SDK厂商也在进行合规整改修复存在的合规问题,检查集成的第三方SDK,及时升级到最新版本。

3.技术同学可在“同意”按钮上加入判定函数,当用户点击“同意”后,APP和SDK再执行调用系统接口的相关函数行为。

2.3 超范围收集个人信息

场景说明:

1.APP未见向用户告知且未经用户同意,在某功能中,存在收集通讯录、短信、通话记录、相机等信息的行为,非服务所必需且无合理应用场景,超出与收集个人信息时所声称的目的具有直接或合理关联的范围。

2.未经用户同意,SDK存在按照一定频次读取位置信息等个人信息行为,非服务所必需且无合理应用场景,超出实现产品或服务的业务功能所必需的最低频率。

整改建议:

1.当用户点击“同意”后,APP和SDK再执行调用系统接口的相关函数行为,然后APP隐私政策内需要补充收集信息的规则说明。特别要注意收集的信息在隐私政策中罗列清楚。

2.不提前获取敏感权限。

3.APP或者SDK收集用户信息频率超过合规范围,尽可能保证全局只收集1次(最多不超过3次),收集频次不要超过1次/秒。

2.4 违规使用个人信息

场景说明:

1.APP未见向用户告知且未经用户同意,存在将IMEI/设备MAC地址/软件安装列表等个人信息发送给友盟/极光/个推等第三方SDK的行为。

2.APP未见向用户明示分享的第三方名称、目的及个人信息类型,用户同意隐私政策后,存在将IMEI/设备MAC地址/软件安装列表等个人信息发送给友盟/极光/个推等第三方SDK的行为。

整改建议:

1.APP和集成的SDK在用户“同意”隐私政策,然后在调用初始化SDK操作。

2.在隐私政策中补充第三方SDK收集(比如声网sdk收集IMSI)信息的规则说明。

2.5 过度索取权限

场景说明:

1.APP首次启动时,向用户索取电话、通讯录、定位、短信、录音、相机、存储、日历等权限,用户拒绝授权后,应用退出或关闭(应用陷入弹窗循环,无法正常使用)。

2.向用户索取危险权限(电话、通讯录、定位、短信、录音、相机、存储、日历等权限),没有添加申请权限目的告知用户。

3.APP运行时,向用户频繁弹窗申请开启与当前服务场景无关的权限,影响用户正常使用。

4.未见使用权限对应的相关产品或服务时,提前向用户弹窗申请开启通讯录/定位/短信/录音/相机/XXX等权限。

整改建议:

1.举例说明APP向用户索取(电话)权限,用户拒绝后,APP不能退出或关闭,必须保证APP可以继续正常运行。

2.APP需要先通过弹窗向用户说明申请(电话)权限的目的,用户同意后再申请权限。用户拒绝后,APP不能退出或关闭,必须保证APP可以继续正常运行。

3.APP向用户索取(电话)权限,用户拒绝后,APP不能重复向用户申请权限。(权限申请弹窗的“禁止后不再询问”是系统提供的功能,属于管理功能,不是APP自身机制,APP要能做到拒绝后不再触发申请权限弹窗)。

4.比如需要用到电话的时候,先通过弹窗向用户说明申请(电话)权限的目的,用户同意后再申请权限。不要在没有使用到电话功能页面,去申请电话权限。

2.6 自启动和关联启动

场景说明:

1.APP未向用户明示未经用户同意,且无合理的使用场景,存在频繁自启动或关联启动的行为。

2.APP虽然有向用户明示并经用户同意环节,但频繁自启动或关联启动发生在用户同意前。

3.APP非服务所必需或无合理应用场景,超范围频繁自启动或关联启动第三方APP。

整改建议:

1.建议删除相关自启动函数代码。如APP必须使用(自启动)能力,请在隐私政策协议中清楚说明自启动的规则说明,并且取得用户同意后执行。

2.APP没有自启动场景和服务,则删除相关自启动的函数调用代码。APP有自启动场景和服务,则在隐私政策中做好完整规则说明,在用户同意隐私政策前不要执行自启动代码,在同意隐私政策后才可以执行自启动代码。

三、第三方SDK合规如何检查和确认

第三方SDK涉及到合规问题具有一定隐蔽性和不确定性,所以这里拎出来讲一讲,这里主要说一下讯飞语记遇到SDK问题时的几类解决方式。

3.1推动第三方SDK解决合规问题

合规检查不仅是针对APP自身代码,也包含项目中引入的第三方SDK。盈利性质的第三方SDK往往会比较重视合规问题,当我们遇到SDK合规性问题时,去其官方网站,很多时候最新版本已经解决了相关问题,只需要更新到相应版本。

部分 SDK 为解决合规问题提供了额外的配置,比如友盟的推送SDK,为了提高到达率的问题,他们会自启动的问题,如果隐私政策里没有提及那么就会被判定不合规,需要添加相应的配置。

aa

一般情况下第三方问题我们只要反馈给供应商等待他们提供解决方案就行,但是也有特殊情况我们来不及等待第三方应用给出答复,由于整改时间比较紧迫,这个时候就需要我们自己找寻问题原因和解决方法。所以定位违规问题的方法就尤为重要。

3.2通过hook敏感API监测其调用情况

不是所有的三方SDK或开源项目都会有技术支持,特别是我们项目中引用的开源项目,比如Android开发者很熟悉的Glide或其他三方开源的项目,这时我们就可以使用hook一些敏感 API 的方式,它可以拦截本进程内部几乎任意的 Java 方法调用,也可用于实现 AOP 编程、运行时插桩、性能分析、安全审计等。这个方法可以彻底排查隐藏的未申明的敏感信息收集,对于解决问题非常有帮助。

比如下面getDeviceId的示例代码:

aa

3.3通过抓包获取SDK云端通讯信息

在同意隐私政策前,部分SDK会获取设备信息上传云端,这时可以通过抓包信息,能够发现未同意隐私政策之前,与云端通信的三方SDK行为,在数据包中可看到获取MAC地址、IMEI等信息的情况,如图所示:

aa

常见的抓包工具:

  • Wireshark

  • Charles

  • Fiddler

  • QPA

  • Microsoft Network Monitor

3.4依托安全检测平台

aa

随着国家对隐私合规监管力度越来越大,科大讯飞也对合规方面加大了投入,科大讯飞信息安全部提供了移动应用个人信息安全检测平台,功能十分详尽。平台的主要功能有:

1)静态扫描

静态扫描后会生成一份检测报告,可清晰罗列出应用所注册的权限状况、各类敏感信息的调用情况以及调用次数,并且都会给出相应的调用栈。通过这些信息可以看出在哪个阶段由哪些包名收集了用户的个人信息。这些信息方便我们去排查对应的SDK收集信息是否符合预期,以及是否有超范围或者频繁获取的问题。报告详细信息有:

  • 应用基本信息

  • 权限检测

  • SDK信息

  • 应用行为

  • 个人信息风险漏洞

  • 函数分析

  • 合规风险

  • 工信部164号文件自动化检测项

  • APP违法违规收集使用个人信息认定方法(191号文)

2)动态扫描

判断是否在同意隐私政策前获取设备信息的问题就用到了动态扫描。通过动态扫描,实时操作应用,平台的打印窗口会实时打印相关信息,如果还没有同意隐私政策都有敏感信息被调用的日志,那么就可以通过日志给出的调用包名找出违规的SDK。

3.5避免第三方SDK混淆,减少误判

混淆配置文件使用keep避免对第三方SDK进行再次混淆。通常检测方会对调用栈的包名进行比对,如果因为混淆问题,可能会把第三方SDK收集的的信息归为程序自身收集的,如果该信息未在隐私政策中申明,那么检测方会认为该处违规。最好打包时,就将混淆规则改为这些引用到的第三方SDK都不进行混淆处理,减少后期的沟通成本。

3.6个人信息清单和SDK清单、第三方共享个人信息清单与SDK清单

1、个人信息清单和SDK清单

2021年11月8日,工信部已印发《关于开展信息通信服务感知提升行动的通知》,其中明确要求为了让用户清晰掌握个人信息在APP、SDK及其他第三方间的共享情况,工信部在前期APP专项治理行动基础上,进一步要求企业在二级菜单中列出APP与第三方共享的用户个人信息基本情况,包括与第三方共享的个人信息种类、使用目的、使用场景和共享方式等。

之前合规整改中主要是处理收集信息,这份通知则是细化了信息收集后的信息使用。文章开头提到了2021年12月讯飞语记做的一次集中整改,主要工作是建立个人信息清单。客户端不仅增加了个人信息清单展示的入口,还有具体信息详情的跳转逻辑。所涉及到的信息清单如下:

aa

具体的数据需要服务端分类存档和统计具体收集到的数目,为了契合信息清单的展示,服务端的业务逻辑也做了较为细致的改造。

2、第三方共享个人信息清单与SDK清单

需要将SDK清单单独列出来,提供和隐私政策平级的查看入口,更详尽的在清单中列出了使用场景、处理方式以及第三方隐私政策或官网链接。

aa

目前很多第三方 SDK 的官网都会有单独的模块罗列隐私合规相关的内容,其中也会有需要添加到自己应用中的 SDK 清单中的内容,一般我们直接复制过来便可。对于部分 SDK 隐私内容没有的或不全的,需要联系对应的客服。

四、业务影响

讯飞语记是强依赖C端用户的笔记类软件,游客模式增加了产品的复杂度及维护成本。用户数据对产品的运营有着至关重要的作用,游客模式下无法将数据信息上传到云端,增加了丢失的风险。在游客模式合规前提下,尽量提供最基础的功能,引导用户同意隐私政策使用完整的功能。

4.1游客模式的主要影响:

  • 程序复杂度提高,增加维护成本。

  • 强依赖用户系统的APP,游客模式功能受限,产品体验不佳。

  • 笔记类软件游客模式的数据丢失的风险增加。

几点建议:

游客模式的判断封装在基类中,对于生命周期内的一些回调如果是游客模式下会调用的一个方法,这样继承类的逻辑中解耦了游客模式的逻辑。

aa

游客模式多设置一些提醒类多弹窗,提醒用户潜在的风险。

4.2频繁的合规整改增加了研发成本

讯飞语记从2019年开始,陆续在隐私合规上投入人力,解决项目自身和第三方SDK的问题,多次因为合规问题打乱了原来的版本周期和计划。老的项目尽量在一个节点集中处理好历史问题,新的项目在设计初期提前规划好合规相关的策略。

4.3规避法律方面的风险

《中华人民共和国个人信息保护法》自2021年11月1日起施行,从法律层面进行了约束。在隐私政策制定的时候,我们和公司的法务部门反复核对,保证内容合法。

五、写在最后

隐私合规是一个比较持久且牵涉面很广的工作,没有办法一次性彻底解决。根据以往的经验,检测机构也是在调整和细化检测的策略,不断检测出新的问题项。建议尽早修改潜在的问题项,避免被第三方检测出后,打乱版本计划。例如前面提到的个人信息清单的展示,目前的要求是需要我们展示收集到的信息以及说明信息的具体用途,未来不排除增加个人信息可以删除的功能。

近两年,开发者需要投入较多的精力去进行合规整改,这也让Android生态向良好的方向发展,给用户更安全的使用体验,这些付出是值得的!

分享:
请先后留下您的评论
热门评论
没有更多评论了
合作咨询
申请加入会员
请选择您企业的所属类别