Immuni API 接口详解与技术实现分析
2025-07-08 05:58:54作者:昌雅子Ethen
概述
Immuni 是一款基于接触者追踪技术的公共卫生应用,其 API 设计遵循了隐私保护和数据安全的原则。本文将深入解析 Immuni API 的技术架构、核心功能模块及其实现细节。
API 架构设计
Immuni API 采用 RESTful 风格设计,基于 OpenAPI 3.0.1 规范,主要包含五个核心功能模块:
- 应用配置服务
- OTP 验证服务
- 暴露数据采集服务
- 暴露数据报告服务
- 分析服务
核心功能模块详解
1. 应用配置服务
功能描述:提供移动客户端启动时所需的配置参数,包括风险评估权重等关键参数。
技术实现:
- 支持平台差异化配置(iOS/Android)
- 支持按构建版本号区分配置
- 响应缓存60分钟
请求示例:
GET /v1/settings?platform=ios&build=123
关键参数:
platform: 客户端平台(ios/android)build: 应用构建版本号(≥1的整数)
2. OTP 验证服务
功能描述:为医疗机构提供一次性密码(OTP)授权机制,用于验证用户上传数据的合法性。
技术特点:
- OTP 格式为10位大写字母和数字组合(正则:
^[AEFHIJKLQRSUWXYZ1-9]{10}$) - 包含症状开始日期
- 204响应禁止缓存
数据模型:
OTPUpload:
properties:
otp: 9K2RAY8UUQ # 示例值
symptoms_started_on: 2020-10-01 # 日期格式
3. 暴露数据采集服务
3.1 OTP 预验证
功能:在正式上传前验证OTP有效性
安全机制:
- 使用OTP Bearer Token认证
- 支持模拟请求头(Immuni-Dummy-Data)
3.2 数据上传
技术细节:
- 上传过去14天的TEK(临时暴露密钥)
- 包含用户居住地区代码(2位大写字母)
- 客户端时钟同步机制(Immuni-Client-Clock头)
- 服务端会覆盖客户端计算的transmission_risk_level
TEK数据结构:
TEK:
properties:
key_data: utdH33iMRTapATp7iK3hdA== # Base64编码
rolling_start_number: 2648160 # ≥0的整数
rolling_period: 144 # ≥0的整数
4. 暴露数据报告服务
功能架构:
-
获取TEK区块索引(/keys/index)
- 返回最近14天的TEK区块范围
- 缓存30分钟
-
下载特定TEK区块(/keys/{TEKChunkIndex})
- 区块索引从1开始递增
- 区块缓存15天
数据流:
移动客户端 → 获取索引 → 下载新TEK → 本地匹配计算
5. 分析服务
数据采集类型:
-
iOS设备运行数据
- 使用设备认证SDK验证分析令牌
- 遵循月度数据收集策略
-
Android设备运行数据
- 使用SafetyNet硬件证明令牌认证
安全机制:
- 所有请求支持模拟模式(Dummy-Data)
- 区分平台的数据收集策略
关键技术实现
1. 隐私保护设计
- TEK有效期严格限制为14天
- 所有个人数据去标识化处理
- 客户端计算的传播风险分数会被服务端覆盖
2. 性能优化
- 分级缓存策略(配置60分钟,TEK索引30分钟,TEK数据15天)
- 区块化TEK分发机制减少重复下载
3. 安全机制
- 双重认证(OTP+Bearer Token)
- 设备级认证(iOS设备认证SDK/Android SafetyNet)
- 模拟请求标识(Immuni-Dummy-Data头)
4. 数据模型
暴露检测摘要:
ExposureDetectionSummary:
properties:
date: 2020-10-01
matched_key_count: 2 # ≥1
days_since_last_exposure: 1 # 0-14
attenuation_durations: [300, 0, 0] # 3个≥0的整数
maximum_risk_score: 4 # 0-4096
暴露信息详情:
ExposureInfo:
properties:
date: 2020-10-01
duration: 1800 # 秒
attenuation_value: 45 # dB
total_risk_score: 7
transmission_risk_level: 5
最佳实践建议
-
客户端实现:
- 实现严格的TEK本地管理(14天滚动窗口)
- 合理使用缓存策略减少网络请求
- 正确处理时钟偏差(Immuni-Client-Clock)
-
服务端集成:
- 医疗机构系统应实现OTP自动注册流程
- 分析数据收集应遵循最小必要原则
-
测试策略:
- 充分利用Dummy-Data头进行集成测试
- 模拟各种时钟偏差场景
总结
Immuni API 设计体现了隐私优先、安全可靠的技术理念,通过模块化的服务设计和严格的数据管控机制,在保障用户隐私的前提下实现了有效的接触者追踪功能。其技术实现中的区块化数据分发、分级缓存策略等设计值得类似系统参考借鉴。
登录后查看全文
热门项目推荐
相关项目推荐
AutoGLM-Phone-9BAutoGLM-Phone-9B是基于AutoGLM构建的移动智能助手框架,依托多模态感知理解手机屏幕并执行自动化操作。Jinja00
Kimi-K2-ThinkingKimi K2 Thinking 是最新、性能最强的开源思维模型。从 Kimi K2 开始,我们将其打造为能够逐步推理并动态调用工具的思维智能体。通过显著提升多步推理深度,并在 200–300 次连续调用中保持稳定的工具使用能力,它在 Humanity's Last Exam (HLE)、BrowseComp 等基准测试中树立了新的技术标杆。同时,K2 Thinking 是原生 INT4 量化模型,具备 256k 上下文窗口,实现了推理延迟和 GPU 内存占用的无损降低。Python00
GLM-4.6V-FP8GLM-4.6V-FP8是GLM-V系列开源模型,支持128K上下文窗口,融合原生多模态函数调用能力,实现从视觉感知到执行的闭环。具备文档理解、图文生成、前端重构等功能,适用于云集群与本地部署,在同类参数规模中视觉理解性能领先。Jinja00
HunyuanOCRHunyuanOCR 是基于混元原生多模态架构打造的领先端到端 OCR 专家级视觉语言模型。它采用仅 10 亿参数的轻量化设计,在业界多项基准测试中取得了当前最佳性能。该模型不仅精通复杂多语言文档解析,还在文本检测与识别、开放域信息抽取、视频字幕提取及图片翻译等实际应用场景中表现卓越。00
GLM-ASR-Nano-2512GLM-ASR-Nano-2512 是一款稳健的开源语音识别模型,参数规模为 15 亿。该模型专为应对真实场景的复杂性而设计,在保持紧凑体量的同时,多项基准测试表现优于 OpenAI Whisper V3。Python00
GLM-TTSGLM-TTS 是一款基于大语言模型的高质量文本转语音(TTS)合成系统,支持零样本语音克隆和流式推理。该系统采用两阶段架构,结合了用于语音 token 生成的大语言模型(LLM)和用于波形合成的流匹配(Flow Matching)模型。 通过引入多奖励强化学习框架,GLM-TTS 显著提升了合成语音的表现力,相比传统 TTS 系统实现了更自然的情感控制。Python00
Spark-Formalizer-X1-7BSpark-Formalizer 是由科大讯飞团队开发的专用大型语言模型,专注于数学自动形式化任务。该模型擅长将自然语言数学问题转化为精确的 Lean4 形式化语句,在形式化语句生成方面达到了业界领先水平。Python00
最新内容推荐
MQTT 3.1.1协议中文版文档:物联网开发者的必备技术指南 Solidcam后处理文件下载与使用完全指南:提升CNC编程效率的必备资源 Python案例资源下载 - 从入门到精通的完整项目代码合集 TortoiseSVN 1.14.5.29465 中文版:高效版本控制的终极解决方案 CrystalIndex资源文件管理系统:高效索引与文件管理的最佳实践指南 QT连接阿里云MySQL数据库完整指南:从环境配置到问题解决 Windows Server 2016 .NET Framework 3.5 SXS文件下载与安装完整指南 Python开发者的macOS终极指南:VSCode安装配置全攻略 瀚高迁移工具migration-4.1.4:企业级数据库迁移的智能解决方案 STM32到GD32项目移植完全指南:从兼容性到实战技巧
项目优选
收起
deepin linux kernel
C
24
9
OpenHarmony documentation | OpenHarmony开发者文档
Dockerfile
404
3.14 K
Ascend Extension for PyTorch
Python
224
250
暂无简介
Dart
672
159
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
663
319
React Native鸿蒙化仓库
JavaScript
262
325
Nop Platform 2.0是基于可逆计算理论实现的采用面向语言编程范式的新一代低代码开发平台,包含基于全新原理从零开始研发的GraphQL引擎、ORM引擎、工作流引擎、报表引擎、规则引擎、批处理引引擎等完整设计。nop-entropy是它的后端部分,采用java语言实现,可选择集成Spring框架或者Quarkus框架。中小企业可以免费商用
Java
9
1
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
1.21 K
657
🔥LeetCode solutions in any programming language | 多种编程语言实现 LeetCode、《剑指 Offer(第 2 版)》、《程序员面试金典(第 6 版)》题解
Java
64
19
openGauss kernel ~ openGauss is an open source relational database management system
C++
160
220