一、前言

用手机拍摄照片已经成为了手机的一个最常用功能,同时也催生了许多对照片进行美化、分享等功能的需求。App在帮助用户处理照片的时候,确需使用“存储/相册权限”读取照片,但照片文件中的EXIF数据经常包含用户照片的地理位置信息,App读取照片的JPGE格式文件(或RAW、HEIF等格式)的同时,也相当于同时拿到张照片拍摄的地理位置信息,这样就可能用户地理位置信息被超范围收集。本文就从App开发者视角,通过技术层面来分析该问题并给出防范风险的具体方法,并提供开源代码,以供参考。

二、相机权限与地理位置信息的关系

用户在使用手机拍照功能的时候,除了画面信息得到保存以外,同时还保存了拍摄时间、拍摄设备信息、分辨率、光圈、感光值、白平衡、闪光灯、快门速度等30多种信息,这些信息统称为EXIF信息,拍摄时候的地理位置(GPS定位的经纬度信息,简称GPS信息)也被同时保存在里面,所有拍照生成的JPGE文件,同时包含画面和EXIF信息。因此,App在获得相册权限以后,读取照片时,也同时获取了EXIF信息中的GPS信息。

目前,部分手机厂商在拍照App的设置中,已经给出了“保存地理位置信息”的开关选项,用户可以根据自己的情况来进行控制。如果关闭“保存地理位置信息”开关后,拍照App将不会把GPS信息写入EXIF信息中,起到了保护隐私的作用,但是也无法使用基于照片地理位置实现的“地图相册”等功能了。此外,是不是广大用户普遍已经意识到该机制可能会导致隐私被泄露,恐怕还是个未知数。

三、风险处置与合规建议

由于App在获取用户照片之前,无法得知照片GPS信息是否存在于EXIF中,因此,较为妥当的方式是,在获取相册权限前,不但告知用户申请相册权限的目的、方式和范围,也需要同步告知用户是否使用照片中GPS信息,如果使用则告知使用GPS信息的目的、方式和范围,用户同意以后,再获取照片中的GPS信息。假如用户选择拒绝GPS信息相关的目的,那就需要采用技术手段,在读取照片的时候,删除EXIF中的GPS信息后,再进行照片处理。也就是将照片GPS信息使用的选择权直接交还给用户。

如果App所有的业务功能均不需要照片中的GPS信息,建议在读取照片的时候,直接使用技术方式删除EXIF中的GPS信息后,再对照片进行处理。

四、技术实现方式

删除EXIF中信息的方式有很多,可以在手机端实现也可以在后台实现,这里举一个最简单的方式进行说明,以Android手机端为例,可通过以下核心代码实现:

ExifInterface exif = new ExifInterface(filePath);

exif.setAttribute(ExifInterface.TAG_GPS_LONGITUDE,"0/0,0/0000,00000000/00000");

exif.setAttribute(ExifInterface.TAG_GPS_LATITUDE,"0/0,0/0000,00000000/00000");

exif.saveAttributes();

上述代码的逻辑还能应用到删除EXIF的其他信息(如需),这样就能在手机端完成处理而避免多余个人信息的上传而造成过度收集。

基于上述代码,我们完成了一个删除照片EXIF中GPS信息的SDK插件,已发布到了gitee开源平台上,具体见链接(https://gitee.com/beijing-hanhua-feitian-xinan/eli-photo-gps),以供大家研究和交流。

End

本文所探讨的技术实现机制,可以看做是Privacy by design/by default 思路的实践,是充分站在个人权益保护的视角来进行产品研发。建议开发者在进行需求分析、代码实现等环节就充分考虑个人信息保护的要求,以最为简洁、直接的方式切断个人信息过度收集、滥用等的风险,将取得事半功倍的效果。

【免责声明】在适用法规定的最大范围内:

1、源代码发布者不对所发布的源代码向任何组织或个人提供任何形式的担保,包括但不限于:不对源代码是否能用于商业或任何其他特殊用途提供任何担保;不对源代码的质量与安全性(如有无漏洞、瑕疵,使用是否导致任何故障等)提供任何担保。任何组织和个人均应对其使用该等源代码的行为负责,包括但不限于自行承担对使用中出现的任何漏洞、瑕疵进行维护、修复的费用成本,自行承担因使用该等源代码所遭受的任何损失。源代码发布者不向使用者或任何其他第三方承担任何直接或间接责任。

2、发布和授权使用源代码不含任何与该等源代码有关的商标、专利使用许可。如需使用有关商标或专利的,应另行获取相关权利人的授权。

(本文作者:北京汉华飞天信安科技有限公司 彭根)

声明:本文来自CCIA数据安全工作委员会,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。