Highlight
Trust Insights 是 iOS 27 引入的新框架,通过隐私保护的机器学习检测用户是否被”指导”执行高风险操作,帮助应用识别社交工程攻击,同时所有设备端数据仅本地处理不上传。
核心内容
社交工程攻击(Social Engineering)是近年来网络安全面临的新挑战。这类攻击不利用系统漏洞,而是利用人的心理弱点。
常见模式包括:假冒技术支持诱骗用户授权远程访问、冒充银行或政府机构套取敏感信息、利用 AI 深度伪造伪造”家人紧急情况”骗钱。
攻击者通过电话、聊天软件实时”指导”受害者操作。用户是主动执行这些操作的,通过了身份验证,操作本身也是合法的——应用无法区分这是真实意愿还是被胁迫。
现有的安全机制如多因素认证、生物认证在这种情况下无效——因为操作者确实是用户本人。
需要一种新的信号:不仅要验证”是谁”,还要判断”是否出于自由意志”。这个信号必须同时保护用户隐私。
Trust Insights 框架就是为此而生。它分析用户的行为模式、时序、上下文和基础传感器数据,但不触碰 Photos、Messages、Mail 中的内容。所有设备端数据仅在本地处理,处理后立即丢弃,只有单个输出值离开设备。
详细内容
框架集成
(02:11) Trust Insights 是 iOS 27 引入的框架,完全通过 Swift API 集成,不需要服务器端代码。
权限配置
(02:52) 使用 Trust Insights 需要在 Xcode 中声明对应的 entitlement(权限)。
创建评估请求
(03:02) 第一步是创建参数包,指定要请求的洞察类型:
import TrustInsights
let request = IsLikelyBeingCoachedInsight.request(
schema: .version1,
modelVersion: .current
)
关键点:
schema指定洞察架构版本,必需参数modelVersion可选,用于模型治理和验证- 可以同时指定当前版本和先前版本,用于对比验证
配置评估上下文
(03:28) 创建 InsightContext,告诉系统用户在执行什么类型的操作:
let context = InsightEvaluator.InsightContext(
operationCategory: .resourceUse,
requestedEvaluations: request
)
关键点:
operationCategory决定应用哪种模型逻辑InsightEvaluator可以接受多个洞察请求
五种操作类别
(03:44) 框架提供五种预定义的操作类别:
| 类别 | 说明 |
|---|---|
.payment | 资产、内容或货币的交换,包括应用内购买 |
.account | 更新账户详情或安全信息 |
.resourceUse | 对昂贵或受限基础设施的请求,如 AI 推理 |
.communication | 发送消息、提交表单或签署文档 |
.other | 不符合上述类别的操作的备用选项 |
如果你的用例属于 .other,建议通过 Feedback Assistant 反馈给 Apple。
请求权限并执行评估
(03:36) 用户对 Trust Insights 的使用有完全控制权,集成前需要检查授权状态:
let evaluator = InsightEvaluator()
guard try await evaluator.requestAuthorization(for: context) == .authorized else { return }
let assessment = try await evaluator.requestEvaluation(context: context)
关键点:
- 必须检查用户是否授权了你的应用使用 Trust Insights
requestEvaluation是异步调用,可能需要几秒钟- 需要网络连接,因为评估涉及云端服务
- 开发环境使用沙箱,App Store 上线后使用生产模型
测试技巧
(05:18) 可以通过自定义 Xcode build scheme 来覆盖洞察值和错误,用于测试不同的决策逻辑和 UX 变体。具体可用的 launch arguments 参考开发者文档。
处理评估结果
(05:37) IsLikelyBeingCoachedInsight 有三种可能的结果值:
func handleAssessment(_ assessment: InsightEvaluation<IsLikelyBeingCoachedInsight>) throws {
switch try assessment.insight.outcome.get() {
case .unknown:
// 系统没有欺诈风险的证据
// 但不应理解为低风险
case .medium:
// 存在被指导风险的一些证据
// 考虑增加摩擦、额外验证或调整风险评分
case .high:
// 存在被指导风险的重大证据
// 应该在用户继续之前告知风险
@unknown default:
break
}
}
关键点:
.unknown不等于低风险,只是没有证据.medium建议引入额外验证步骤.high建议明确告知用户风险- 不要仅基于信任洞察直接阻止操作
- 需要独立处理评估级别和洞察级别的错误
提交反馈
(07:05) 有两种反馈类型:实时消费反馈和离线欺诈标签。
实时消费反馈
告诉系统你的应用如何响应了洞察结果,这是每个评估请求必须提交的:
assessment.reportConsumption(.usedIncreasedFriction)
六种消费值:
| 值 | 说明 |
|---|---|
.usedReducedFriction | 洞察让操作变得更容易 |
.usedUnchangedFriction | 评估了洞察但未改变体验 |
.usedIncreasedFriction | 洞察导致额外检查或摩擦 |
.notUsedNotNeeded | 用户取消,无需决策 |
.notUsedError | 技术失败阻止使用 |
.usedEvaluationOnly | 仅用于内部评估和基准测试 |
关键点:
- 每次评估请求必须调用
reportConsumption - 如果省略,你的应用可能会被限流
离线欺诈标签
(07:22) 当交易后来确认为欺诈时,这个信号对模型改进很重要:
// 通过 Apple Business Register 提交
// 使用服务器到服务器 API
// 包含原始评估的 insight identifier
关键点:
- 可能几天、几周甚至几个月后才提交
- 通过 Apple Business Register 的服务器到服务器 API
- 不要包含 PII 或任何可用于指纹识别的信息
- 不是强制的,但有助于生态系统改进
隐私架构
(09:27) 数据最小化是 Trust Insights 的核心原则:
- 仅处理需要的数据
- 输入在评估后立即丢弃
- 所有设备端数据保留在设备上
- 不会与 Apple 或第三方共享设备端信号
- 用户可以在设置中完全禁用 Trust Insights
禁用后可能会有冷却期,防止用户自己被”指导”关闭。
应用示例
(11:43) 一个用户正在向声称是治疗家人的医生进行大额转账的场景:
- 应用在后台请求信任洞察
- 收到
.medium结果 - 应用调整流程:显示警告并添加交易延迟
根据用例不同,你也可以选择:
- 在服务端处理结果
- 添加人工审核步骤
- 在不打扰用户的情况下调整风险
核心启发
-
大额转账预警:在 P2P 支付应用中,对超过阈值的交易请求信任洞察,高/中风险时显示额外的安全警告和收款人验证步骤。
-
敏感操作二次确认:当用户执行账户删除、数据导出、远程访问授权等不可逆操作时,请求信任洞察并动态调整确认流程的严格程度。
-
客服场景防护:如果你的应用涉及客服远程协助功能,在用户授权屏幕共享或远程控制前,请求信任洞察防止假冒技术支持诈骗。
-
高风险登录保护:当检测到新设备登录或敏感信息变更时,结合信任洞察判断是否需要额外的身份验证步骤。
-
AI 服务调用门槛:对资源密集型 AI 操作(如图片生成、长文本处理),在用户发起前请求信任洞察,中高风险时引入额外确认或降低服务等级。
关联 Session
- App Attest — 验证服务器请求来自合法应用实例,与 Trust Insights 配合构建多层安全
- Security for agentic apps — 代理应用的安全实践,信任机制在 AI 时代的延伸
- Privacy Preserving ML — Core AI 的隐私保护机器学习,了解 Apple 在本地 ML 方面的整体策略
- In-App Purchase — 应用内购买的最新实践,可与 Trust Insights 结合保护高价值交易
- Device Management — 企业设备管理,了解如何在企业环境中部署安全策略
评论
GitHub Issues · utterances