题干与适用场景
多个电话服务提供商无法保证 SIP 信令携带 PASSporT。请基于 RFC 9888 设计带外 Call Placement Service(CPS),说明服务发现、提交与检索、mTLS 授权、过期控制、网关互通和隐私风险。
RFC 9888 针对大型服务提供商在 SIP 不能可靠端到端传递时,通过 HTTP 让 OOB Authentication Service(OOB-AS)向 CPS 提交 PASSporT,再由 OOB Verification Service(OOB-VS)拉取或接收推送。题目重点是信任边界和生命周期,不是实现一个普通 REST 存储桶。
面试官考察点
面试官会看你能否区分 STIR 凭证、PASSporT、CPS、OOB-AS 与 OOB-VS 的职责;能否设计可信的 CPS 广告和电话号范围授权;能否用 mTLS、租户限额与短过期时间防止伪造、重放和洪泛;以及能否解释多供应商检索、网关转换、隐私收集和故障降级。
回答前需要澄清的问题
参与者与网络边界
先确认谁签发 PASSporT、谁运营目标服务提供商的 CPS、OOB-VS 是拉取还是订阅推送,以及哪些链路经过 PSTN 网关或传统网络。
真实性与隐私目标
确认系统要证明主叫身份、减少号码冒用,还是还要隐藏呼叫双方元数据。RFC 9888 的服务提供商 CPS 本来就属于通话参与方,隐私模型与开放互联网 OOB 服务不同。
时延和保存期限
确认来电提示最多能等待多久、允许多少时钟偏差,以及 PASSporT 是否只需保存到验证完成。不能把 CPS 当成长期归档库。
30 秒回答框架
“我会按目标服务商的 SPC 或号码范围发布签名的 CPS 广告,OOB-AS 用受信任的 STIR 凭证和 mTLS 向 CPS 提交 PASSporT,CPS 按目标号码授权、限流并只保存到 PASSporT 新鲜度窗口内。OOB-VS 可以在收到呼叫后拉取,也可以按号码范围订阅推送;多供应商场景必须校验 dest 与 TNAuthList 的授权关系。网关只做协议转换,不扩大权限。全链路记录过期、重复、未授权和延迟指标,并把 CPS 的元数据收集写入治理边界。”
分步骤深入解答
第一步:划分信任与数据流
OOB-AS 生成或携带 PASSporT,向目标 CPS 提交;CPS 根据广告和本地策略接收;OOB-VS 只取得自己有权验证的目标号码范围。验证服务仍需检查 PASSporT 的签名、orig、dest 和新鲜度,不能因为来源是 CPS 就跳过验证。
第二步:安全发布 CPS 广告
广告把 SPC 或电话号范围映射到 HTTPS CPS URI。广告应由受信任的 STIR 证书签名,接收方比对签名者的 TNAuthList 与被宣传范围,防止任意持证方劫持一个号码范围。发现可通过配置、数据库或安全 DNS 流程完成,但缓存必须带版本和失效策略。
第三步:提交接口与授权
OOB-AS 与 CPS 建立 TLS,优先使用 mTLS,并检查证书是否属于允许提交的服务提供商。CPS 按服务商、号码范围和速率做配额,拒绝未知凭证、错误目标或过量请求。提交接口应返回可观测的接受、拒绝和重复状态,但不返回可帮助攻击者试错的内部策略。
第四步:保存与过期
PASSporT 只保存到检索所需时间,且不超过其 freshness interval;RFC 9888 描述的上限是 60 秒。以 orig、dest、呼叫标识和 PASSporT 唯一信息建立去重键,避免同一对象被无限重放。过期清理应是强制约束,而不是依赖低频后台任务。
第五步:拉取与推送检索
拉取模型在收到没有内嵌 PASSporT 的呼叫后查询 CPS;推送模型按号码范围或 SPC 订阅,将对象主动送给获授权的 OOB-VS。多供应商 CPS 必须检查 PASSporT 的 dest,确保只把对象交给对应服务商。推送失败不能改变签名有效期,验证方应明确“暂时无凭证”和“凭证无效”。
第六步:网关和降级
网关可以从 SIP INVITE 提取 PASSporT 并提交给面向传统 PSTN 的 CPS,也可以把 OOB 对象转换为下游可理解的形式。网关凭证应被授予明确的代理范围,不能把一个服务商的权限扩展到整个网络。CPS 不可用时继续接通并标记未验证,还是阻断高风险呼叫,应由产品和监管策略决定。
第七步:隐私、监控和演练
CPS 会接触电话元数据,需限制字段、保留时间和访问审计。指标至少包括提交成功率、未授权率、重复率、过期率、拉取延迟、推送积压和按服务商的配额拒绝。测试应覆盖证书吊销、号码范围重叠、重放、跨供应商读取、广告被改写、PSTN 网关断链和 CPS 局部故障。
高质量示范回答
我会先登记参与方和授权范围:每个目标服务商发布由其 STIR 凭证签名的 CPS 广告,广告把 SPC 或号码范围绑定到 HTTPS URI。OOB-AS 用 mTLS 向目标 CPS 提交 PASSporT,CPS 校验证书、dest、范围和限额,并只保存到新鲜度窗口结束;RFC 9888 描述的最长保存时间是 60 秒。OOB-VS 可以在无内嵌 PASSporT 的来电到达后拉取,也可以按号码范围订阅推送。多供应商 CPS 必须根据 dest 和 TNAuthList 做读取授权。PSTN 网关只能使用委派范围执行提取或转换。系统应区分凭证缺失、凭证过期和签名无效,按策略降级,同时审计元数据访问并监控洪泛、重放、延迟和配额拒绝。
常见错误
- 错误表现: 把 CPS 当成公开对象存储。→ 失败原因: 未授权的提交和读取会造成伪造、数据泄露与洪泛。→ 修正方法: 用受信任凭证、mTLS、号码范围授权和服务商配额限制访问。
- 错误表现: 把 PASSporT 长期保存以便追查。→ 失败原因: 超过新鲜度窗口会扩大重放和元数据暴露。→ 修正方法: 以验证完成为目标设置短 TTL,并强制过期删除。
- 错误表现: 只按 orig 决定谁能读取。→ 失败原因: 多供应商必须同时约束 dest 与服务商拥有的 TNAuthList。→ 修正方法: 在提交和检索两侧都做目标范围授权。
- 错误表现: 网关提取对象后直接信任。→ 失败原因: 网关改变了传输位置,没有替代签名验证。→ 修正方法: 保留 PASSporT 验证流程,并给网关最小委派权限。
追问及应对
如果 OOB-AS 的 mTLS 证书泄露怎么办?
立即吊销证书、停止其提交权限并按服务商范围隔离;对已提交对象仍按 PASSporT 新鲜度和签名验证处理,不能仅依赖连接身份。
为什么需要签名 CPS 广告?
广告决定 PASSporT 应提交到哪个 CPS。签名把 CPS URI 与 SPC 或号码范围绑定,避免攻击者把合法服务商的流量导向自己的收集点。
拉取和推送如何选择?
拉取实现简单并按实际来电触发;推送可降低验证等待,但需要订阅授权、积压处理和撤销订阅。大规模部署可按服务商和号码范围混合使用。
CPS 暂时不可用,呼叫要不要阻断?
先区分防骚扰提示与强监管阻断。对普通来电可以继续接通并标记未验证;对高风险场景可延迟或阻断,但必须把策略、超时和误伤指标纳入产品决策。