SDK即Software Development Kit,软件开发工具包,辅助开发应用软件的相关二进制文件、文档、范例和工具的集合。本文不展开介绍SDK基本概念、基本类型等内容,仅聚焦法律层面SDK开发及使用合规问题,做纯粹“技术流”分享探讨。本篇将从SDK实现原理、合规前重点问题、相关法律规范等角度切入,介绍SDK合规工作开展前应当关注的底层架构。话不多说,上干货!
关于SDK基本嵌入原理,可参考下图。我们可以看到App嵌入使用第三方SDK的场景当中,涉及App提供者、App用户以及SDK提供者三方主体。SDK提供者在SDK开发过程中,将能够实现广告、推送、统计、定位等特定功能的代码进行封装,并预留能够简单接入的调用接口,以便App开发者直接调用SDK的对应功能。App开发者则在开发过程中,将第三方提供的SDK嵌入App代码,并通过调用接口的接入,实现SDK的特定功能(包括页面交互)。简单来说,我们可以将App提供者比作“肯德基”品牌,其所提供的App就是品牌项下的某一款套餐产品,例如“香辣鸡腿堡套餐”,SDK就是包含在套餐内的“可口可乐”,SDK上的调用接口就是可口可乐公司提供的方便肯德基对可乐进行分装的工具。对肯德基来说,制作一份香辣鸡腿堡套餐,不需要自己从原料开始制作一份可口可乐,而只需将可口可乐公司已经制作完成的可口可乐,通过工具装到自己的饮料杯中,即可让香辣鸡腿堡套餐实现让顾客解渴并感受到“肥宅快乐”的功能。
图片来源:全国信息安全标准化技术委员会
SDK使得不希望自己编写算法或不想采用自己编写的算法的App开发者,得以在不关注具体代码及实现方式的前提下,方便快捷地使App实现某项特点功能,显著提高了App开发和运营的效率。上图“图1 SDK使用示意图”较为清晰地展现了App中使用SDK的过程,但不足之处在于,所展现的仅为具有独立交互界面的部分SDK交互过程。很大一部分SDK在使用过程中是不会呈现于App交互界面当中的,对这类SDK,用户不会有明显的感知,也不会与之发生交互行为,如框架类SDK(提供开发某一类App或跨平台App所需的整体框架)、定位类SDK(实现定位功能)、Crash监控类SDK(提供App崩溃、App无响应、卡顿的数据收集与分析)、基础功能类SDK(提供App的基础功能,如网络访问、图片缓存、多媒体操作)等;还有一部分SDK,用户在使用App过程中会有明显感知,但因其本身不具有通过页面跳转等方式访问的独立交互界面,而是通过呈现于App本身交互页面中与用户发生交互,如广告类SDK(提供广告展示功能,通过CPC、CPS等方式进行收费)、短信验证类SDK(提供短信验证功能)、语音识别类SDK(提供语音转文字功能)等。
站在App开发者的视角,SDK的出现降低了开发成本,减短了产品开发周期,提升了开发效率,使得开发者在应用程序开发过程中,通过嵌入第三方已经封装完成的SDK,即可快速实现由第三方提供的广告、支付、统计、推送、社交网络、地图、定位等功能。SDK的重要开发价值使得部分公司和个人开发者开始专门从事SDK开发工作(即SDK提供者),促使第三方SDK成为移动互联网应用程序开发生态的重要组成部分。
根据中国通信院联合环球律师事务所共同发布的《软件开发包(SDK)安全与合规白皮书(2019)》中相关数据显示,各类别App平均使用第三方SDK的数量在10个以上。
图片来源:中国通信院&环球律师事务所《软件开发包(SDK)安全与合规白皮书(2019)》
SDK为软件开发带来的便利毋庸置疑,但同样需要明确,“可乐制造厂商”之间水平的参差不齐、个别厂商居的心叵测等原因导致一部分由第三方提供的可乐变得不再可口,为用户带来了不良的体验,甚至影响到用户信息的安全。
囿于SDK使用过程的特殊性,在SDK开发代码不开源的情况下,App开发者往往很难得知所调用的SDK是如何实现某项功能的。正是基于SDK自身行为的较强隐蔽性,因SDK自身存在安全漏洞、恶意行为、违法违规收集用户个人信息等行为导致的App安全问题层出不穷。
例如:今年上半年,根据奇安信病毒响应中心移动安全团队发布的报告,其在日常的威胁分析运营过程中发现一款Android平台的恶意SDK插件,经分析拓展发现,该SDK具有收集用户隐私信息和下载执行更多恶意插件的能力;截至2020年7月,经在分析关联的App样本中,就有247款受到该SDK影响;经分析估算,安全团队认为至少有200万台以上的独立Android终端设备安装了带有该恶意SDK插件的应用。而该款SDK最为明显的两个恶意功能就是:(1)收集用户隐私;(2)下载执行恶意插件。
图片来源:奇安信病毒响应中心《“道贼”SDK:揭秘操控数百万Android手机的恶意营销插件》图片来源:奇安信病毒响应中心《“道贼”SDK:揭秘操控数百万Android手机的恶意营销插件》
不合规甚至恶意的SDK对任何一款App来说都是达摩克利斯之剑!因此App开发过程中如何合规地使用第三方SDK,如何审查第三方SDK有无明显违法违规情形是非常重要的。而不同App由于自身不同的功能需求,所使用的SDK类型、与第三方SDK提供者之间的合作方式以及具体的SDK使用场景都有所不同。因此,SDK合规工作应当根据App开发者使用第三方SDK的具体方式,结合SDK具体的使用场景及类型,有针对性地差异化开展。本系列后续文章将结合具体的SDK使用场景,从App开发者以及SDK提供者两个角度,梳理合SDK合规重点,提出具有可行性地合规建议,敬请关注!
以下为阿鹿整理的SDK合规工作中应当重点关注的规范文件概览,供参考。
独立思考,享受学习
by 林理子说
1.影像特征与病理的关系 GGN根据是否存在实性成分可分为:纯磨玻璃结节(pure GGN,pGGN)和混合磨玻璃结节(mixed GGN ...