隐私第一设计:备忘录应用程序中的偏执的执着
本页面由日语原文机器翻译而成。 阅读日语原文
1。 为什么隐私对备忘录软件很重要
工作想法、个人草稿、日常记录。 在备忘录软件中,会收集给别人看之前的信息。 和快速书写一样,能够理解保存在哪里,被送到哪里也很重要。
在这篇文章中,将分别说明终端内的加密、通信缓存、画面显示、诊断日志和使用分析。 一种保护并不能保证其他途径的保护。
2。 在应用程序切换器中自动隐藏备忘录的功能无效
iOS将应用程序移动到后台后的画面作为快照使用。 Apple会引导画面中,如果画面有机密信息的话,在移动到背景时要清除。
在确认的5.8.17的源中,sceneWillResignActive和sceneDidEnterBackground进行草稿保存,不调用隐私叠加的显示处理。 虽然保留了以前的显示用函数,但不是作为有效保护运行的路径。
显示中的备忘录可能会留在应用程序切换器的图像中。 即使对Outbox进行加密,画面图像也不会被隐藏。 更正这篇报道旧版中的“经常隐藏备忘录内容”的说明。
3. ephemeral URLSession:抑制通信缓存的磁盘保存
标准的URLSession将缓存、Cookie、认证信息保存在磁盘上。 在一般的应用程序中,这是一个很方便的功能,但在备忘录应用程序中是不需要的,可能会成为风险。
通信缓存留在终端上,意味着磁盘上存在何时访问哪个URL的痕迹。 Cookie被保存意味着会话信息会留在终端上。
在这个软件中,使用URLSessionConfiguration.ephemeral。
private let session: URLSession = {
let config = URLSessionConfiguration.ephemeral
config.httpCookieAcceptPolicy = .never
config.httpShouldSetCookies = false
config.urlCache = nil
return URLSession(configuration: config)
}()
- 无磁盘缓存:不将此URLSession的缓存保存到磁盘
- Cookie的使用无效:这个URLSession不接受Cookie,也不设置要求
- URL缓存失效:将缓存存储本身设置为
nil - 不使用永久存储的构成:URLSession的会话信息不保存到磁盘
这是关于URLSession的缓存等的保护,不是应用程序单独保存、发送的使用事件或消除服务器端的发送记录的功能。 通过使用解析的标识符进行关联,也与这个设置分开进行。
4。 性能测量日志的输出范围
PerformanceLogger的日志输出被#if DEBUG包围。 在没有定义DEBUG的构建中,不包含这个记录器的日志输出处理。
这个记录器的logError,记录的不是错误的详细文,而是类型。 例如,使用URLError这种类型,不直接输出可能包含文件路径和用户输入的localizedDescription。
另一方面,不是自动将传递给logEvent的事件名和附加字符串全部无害化的机制。 呼叫方需要不传递邮箱地址、备忘录正文、认证信息。
这个说明不扩展到应用程序、外部SDK、OS整体的“零日志”的保证。 本公司的使用事件发送和AppsFlyer作为不同的机制生效。 获取范围在本报道的使用分析FAQ和隐私政策中说明。
5。 AES-GCM加密Outbox的保护范围
等待发送的备忘录,在终端内的Outbox队列中进行管理。 保存时使用Apple的CryptoKit用AES-GCM进行加密。 新的密码密钥用256比特生成。
钥匙存放在Keychain中,使用kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly。 在这个设置中,从重启后的首次解锁到下次重启都可以访问,备份恢复到其他终端时不会转移钥匙。 应用程序为了加密、解密读取密钥。
这是保存数据的保护,并不是隐藏显示中的画面,也不是保证免受任何终端侵犯的安全。 在更换机型之前,请确认必要的备忘录是否已送达保存地址。
使用邮件发送时,正文由本公司的Relay API和配送基础处理,作为邮件留在收件箱中。 终端内的加密并不意味着邮件配送的端到端加密(E2EE)。 详细内容在隐私政策和数据的通道中说明。
等待发送的队列,请参考Outbox架构的解说。
6。 备忘录正文的保护和外部SDK的作用
iOS在应用内,备忘录正文的加密使用CryptoKit,钥匙保管使用Keychain,正文的发送使用URLSession。 Network.framework负责监视连接状态,BackgroundTasks负责后台发送的调度。
另一方面,应用程序也使用外部SDK。 GoogleSignIn和Firebase Authentication用于Google账户的任意邮件自动输入,Firebase App Check在启动时初始化保护后端API。 AppsFlyer用于获取、使用分析,设置与本公司分析共同的安装标识符。
即使设计不将备忘录正文纳入事件项目,也会保留标识符和发送记录的关联。 包括SDK在内的使用分析范围,需要与本文的加密分开确认。 项目和用途在隐私政策中进行了说明。
7。 明确保护范围
终端内的加密、通信缓存的处理、利用分析,分别具有不同的作用。 即使有Outbox的加密和ephemeral URLSession,使用事件的收集也不会消失。
重视能够快速留下备忘录和能够理解获取的信息。 说明使用分析的发送目的地、标识符、关联的范围,根据应用程序的变化进行重新审查。
常见问题
参考文献
- Apple Developer — CryptoKit Documentation — 用于通过AES-GCM加密实现Outbox数据保护
- Apple Developer — URLSession Documentation — 通过临时(临时)会话的网络通信确保隐私
- Apple Developer — Preventing Insecure Network Connections (App Transport Security) — TLS通信的强制数据传输时的安全保证
- Apple 开发人员 — 从您的代码生成日志消息 — 日志的保存范围和机密信息的处理
- Apple 开发人员 — 准备您的UI在后台运行 — 应用程序切换器用快照和画面上的信息
- Apple Developer — 首次解锁后的钥匙串访问,仅此设备 — 密钥的访问条件和其他终端的过渡限制