<!-- title: 5G SUCI身份隐私保护机制拆解 -->
<!-- domain: security -->

# 5G SUCI 身份隐私保护机制深度拆解：从 ECIES 加密到 SIDF 解密全链解析

> 本轮聚焦子域：**security（网络安全）**。前几轮已覆盖主鉴权密钥层级推演、初始注册信令等主题，本文避开重复，深入剖析 5G 中独立于鉴权流程之外、专门用于**永久标识符（SUPI）隐私保护**的 SUCI 加密与 SIDF 解密机制。该机制由 **3GPP TS 33.501 §6.12 与 Annex C**、**TS 23.003**、**TS 29.503** 共同定义，是 5G 相对 4G 在用户隐私层面最关键的架构性升级。

---

## 一、为什么需要 SUCI：4G IMSI 明文之痛

在 2G/3G/4G 中，用户永久标识符 **IMSI** 在初始附着、被网络要求"Identity Response"等场景下，会以**明文形式**在空口（Uu）上传输。这带来两个根本性安全缺陷：

1. **被动嗅探即可获取 IMSI**：攻击者用廉价的 SDR（软件无线电）接收机即可抓取 IMSI，构建所谓的 **IMSI Catcher**（伪基站），用于用户位置追踪、行为画像甚至定向攻击。
2. **主动攻击可强制明文重发**：即便网络平时用 TMSI/GUTI 寻呼，伪基站只需发出"未知 TMSI"的 Identity Request，UE 就会回退到明文 IMSI，几乎无法防御。

5G 在 **TS 33.501 §6.12** 中引入 **SUPI（Subscription Permanent Identifier）** 取代 IMSI，并规定：**SUPI 在空口上严禁明文传输**，必须以 **SUCI（Subscription Concealed Identifier）** 的形式发送。SUCI 的核心设计哲学是：

- **非对称加密（ECIES）**：只有归属网络（Home Network）持有私钥，**任何中间节点（RAN、访问域 AMF/SEAF）都无法解密**，从架构上杜绝了伪基站获取永久标识的可能。
- **临时密钥（Ephemeral Key）**：UE 每次生成 SUCI 都使用一次性的椭圆曲线临时密钥对，即使同一 SUPI 每次产生的 SUCI 也完全不同，**防止基于密文的关联追踪**。
- **空方案（Null-scheme）兜底**：为兼容未部署公钥的网络、紧急呼叫、未写入 USIM 公钥的卡，保留一个"明文"保护方案作为最低保障。

这是 5G 隐私模型相对 4G 的**质变**：从"尽量用临时标识减少明文曝光"升级为"永久标识在密码学层面被永久封印"。

---

## 二、SUCI 的结构：TS 23.003 与 TS 24.501 视角

SUCI 是 **5GS Mobile Identity** IE 的一种取值（详见 **TS 24.501 §9.11.3.4**）。对于最常见的 **IMSI-based SUPI**，SUCI 由以下字段拼接而成（定义见 **TS 23.003**）：

```mermaid
flowchart TD
    A["SUPI Format<br/>(1 nibble)<br/>0=IMSI / 1=Network-specific"] --> B["MCC<br/>(3位BCD)"]
    B --> C["MNC<br/>(2-3位BCD)"]
    C --> D["Routing Indicator<br/>(1-4位)"]
    D --> E["Protection Scheme ID<br/>(1 octet)"]
    E --> F["Home Network<br/>Public Key ID<br/>(1 octet)"]
    F --> G["Scheme Output<br/>(变长)"]
    style A fill:#fff3cd
    style G fill:#d1ecf1
    style E fill:#f8d7da
    style F fill:#f8d7da
```

### 字段说明表

| 字段 | 长度 | 说明 | 是否加密 |
|------|------|------|----------|
| SUPI Format | 1 nibble | 0=IMSI 类型，1=网络特定类型 | 否（明文） |
| MCC | 3 位 BCD | 移动国家码，用于路由到归属国 | 否 |
| MNC | 2-3 位 BCD | 移动网络码，用于路由到归属运营商 | 否 |
| Routing Indicator | 1-4 位 | 路由指示符，**明文保留**，引导 SUCI 路由到正确的 UDM/SIDF 实例 | 否 |
| Protection Scheme ID | 1 octet | 保护方案标识：`0x00`=空方案，`0x01`=Profile A，`0x02`=Profile B | 否 |
| Home Network Public Key ID | 1 octet | 归属网络公钥 ID（0–255），标识使用哪把已下发的公钥，支持密钥轮换 | 否 |
| Scheme Output | 变长 | 空方案下为明文 MSIN；ECIES 下为临时公钥‖密文‖MAC | **是**（仅此部分加密） |

**设计意图非常精妙**：MCC/MNC/Routing Indicator 必须明文，否则网络无法把 SUCI 路由到归属网 UDM；而真正能唯一识别用户身份的 **MSIN（Mobile Subscriber Identification Number，IMSI 中去掉 MCC/MNC 后的部分）** 才是被 ECIES 加密保护的对象。也就是说，"路由所需的最小信息"与"身份敏感信息"被干净地切分开来——这正是隐私与可用性之间的最优折中。

---

## 三、三种保护方案：Null / Profile A / Profile B

**TS 33.501 Annex C** 定义了三种保护方案，由 USIM 中下发的"保护方案优先级列表"决定 UE 实际使用哪一个。

| 维度 | Null-scheme (0) | Profile A (1) | Profile B (2) |
|------|----------------|---------------|---------------|
| 椭圆曲线 | — | **Curve25519**（RFC 7748） | **secp256r1 / NIST P-256** |
| 密钥协商 | 无 | X25519 ECDH | ECDH on P-256 |
| KDF | — | **HKDF-SHA-256** | **ANSI X9.63-KDF**（SHA-256） |
| 加密算法 | 无 | **AES-128-CTR** | **AES-128-CTR** |
| MAC 算法 | 无 | **HMAC-SHA-256**（截断 64 bit） | **AES-CMAC**（128 bit） |
| 是否需下发公钥 | 否 | 是 | 是 |
| Scheme Output 内容 | 明文 MSIN | 临时公钥(32B)‖密文‖MAC(8B) | 临时公钥(33B压缩)‖密文‖MAC(16B) |
| 隐私强度 | **等同于 4G 明文** | 强（国密友好、抗量子略优的 Curve25519） | 强（NIST 标准曲线，北美主流） |
| 典型部署 | 应急/未部署/老旧卡 | 欧洲、注重 Curve25517 的运营商 | 北美、3GPP 测试默认 |

> **注**：Profile A 与 Profile B 在加密部分均采用 AES-128-CTR 分组流密码，差异主要体现在**椭圆曲线、KDF 与 MAC 三处**。两套方案并存体现了 3GPP 在密码学选型上的"双轨制"——既照顾偏好 Curve25519 的一方，也满足依赖 NIST 曲线合规审计的一方（如 FIPS 140-2 认证设备）。

### 空方案（Null-scheme）的工程意义

空方案并不是"漏洞"，而是**刻意保留的最低保障**：

- USIM 未写入任何 HN 公钥时（如旧卡、IoT 卡、漫游伙伴未部署），UE 只能用空方案，否则无法注册。
- 紧急呼叫场景下，即便无 USIM 也要能发起，此时用 IMEI 而非 SUCI。
- 但需注意：**空方案下 5G 的隐私保护等同于 4G**，伪基站仍可抓到明文 MSIN。这也是为何运营商被强烈建议为所有新发卡下发 Profile A/B 公钥。

---

## 四、ECIES 加密全流程：UE 侧计算拆解

下图展示 UE（实际由 USIM 完成）基于 **Profile A** 计算 SUCI 的完整流程（对应 **TS 33.501 Annex C.3**）：

```mermaid
flowchart TD
    S1["1. 读取 USIM:<br/>SUPI(MSIN)、HN公钥、Protection Scheme、Key ID"] --> S2
    S2["2. 生成一次性临时密钥对<br/>(d, P_eph = d·G)"] --> S3
    S3["3. ECDH 共享密钥<br/>X = ECDH(d, HN_Public_Key)"] --> S4
    S4["4. KDF 派生<br/>HKDF-SHA256(X) → K_enc(128bit) + K_mac(256bit)"] --> S5
    S5["5. 计算 MAC<br/>T = HMAC-SHA256(K_mac, MSIN) → 截断 64bit"] --> S6
    S6["6. 加密 MSIN<br/>C = AES-128-CTR(K_enc, MSIN)"] --> S7
    S7["7. 拼装 Scheme Output<br/>P_eph ‖ C ‖ T"] --> S8
    S8["8. 组装完整 SUCI<br/>MCC‖MNC‖RI‖SchemeID‖KeyID‖SchemeOutput"]
    style S3 fill:#e2d5f1
    style S5 fill:#fce4ec
    style S6 fill:#e8f5e9
```

**关键设计点解读**：

1. **临时密钥 d 每次新生成**：这是抗关联追踪的核心。即使同一 SUPI，每次注册/身份请求产生的 SUCI 都不同，攻击者无法通过比对密文判断"这是同一个用户"。
2. **Encrypt-then-MAC（先加密后认证）**：先算密文 C 再对 MSIN 计算 MAC。UDM 侧解密时**先验 MAC，通过后才解密**，可抵御选择密文攻击（CCA）。
3. **MAC 仅 64 bit（Profile A）**：在空口带宽受限场景下做截断，平衡安全性与开销。64-bit tag 在实际协议交互中已足够抵抗在线伪造。
4. **MAC 覆盖明文 MSIN 而非密文**：TS 33.501 定义 MAC 输入为 scheme-input（即 MSIN），这意味着 SIDF 需先校验 MAC——但 MAC 是对明文的，所以解密前如何校验？答案：方案规定 SIDF 先用 K_enc 解密得到候选 MSIN'，再用 K_mac 校验 MAC(MSIN')，二者一致才接受。这要求 SIDF 必须完整执行解密+验证，**任何篡改都会导致 MAC 不匹配而被拒绝**。

---

## 五、SIDF 解密：只在归属网络发生的秘密还原

**SIDF（Subscription Identifier De-concealing Function）** 是 5G 安全架构中最关键的隐私锚点。它**作为 UDM 的一个内部功能**部署（TS 23.501 §6.2.6），**是全网唯一持有 HN 私钥、能从 SUCI 还原 SUPI 的实体**。

下图展示初始注册中 SUCI 从 UE 发出、经 RAN/AMF、最终在 UDM/SIDF 完成解密并触发鉴权的完整信令时序（对应 **TS 23.502 §4.2.2.2** 与 **TS 29.503 §5.3**）：

```mermaid
sequenceDiagram
    participant UE
    participant RAN as (R)AN / gNB
    participant AMF as AMF (SEAF)
    participant UDM as UDM/SIDF
    participant UDR as UDR

    UE->>UE: 无有效5G-GUTI<br/>生成临时密钥, 用HN公钥<br/>ECIES计算SUCI
    UE->>RAN: 1. RRC SetupRequest
    RAN->>UE: RRC Setup
    UE->>RAN: 2. RRC SetupComplete<br/>(携带NAS: Registration Request)
    Note over UE,RAN: NAS 5GS Mobile Identity = SUCI<br/>(RAN/AMF 无法解密!)
    RAN->>AMF: 3. NGAP InitialUEMessage<br/>(含SUCI)
    Note over AMF: AMF 仅有SUCI<br/>无法获知SUPI
    AMF->>UDM: 4. Nudm_UEAuthentication_Get<br/>(ueId=SUCI, servingNetworkName)
    Note over UDM: 5. SIDF用HN私钥执行ECIES逆向:<br/>ECDH→KDF→验MAC→解密MSIN→还原SUPI
    UDM->>UDR: 6. Nudr_Query<br/>(ueId=SUPI) 取鉴权签约(K, OPC)
    UDR-->>UDM: 鉴权签约数据
    Note over UDM: 7. 生成鉴权向量<br/>(RAND,AUTN,XRES*,K_AUSF)
    UDM-->>AMF: 8. 响应: 鉴权向量(+SUPI)
    Note over AMF: AMF 此时才获知SUPI<br/>(但仍未发送给RAN明文)
    AMF->>UE: 9. Authentication Request(RAND,AUTN)
    UE-->>AMF: 10. Authentication Response(RES*)
    Note over AMF: SEAF计算HXRES*比对<br/>成功则派生K_SEAF
    AMF->>UE: 11. Security Mode Command<br/>(开启NAS加密+完整性保护)
    Note over UE,AMF: 后续信令全部加密<br/>AMF下发5G-GUTI替代SUCI
```

### 时序中的关键 IE 解析

| 步骤 | 消息 | 关键 IE | 作用 |
|------|------|---------|------|
| 2 | Registration Request | **5GS Mobile Identity (SUCI)** | 携带加密的永久标识，类型标识为 SUCI |
| 3 | NGAP InitialUEMessage | **NAS-PDU**（含 SUCI） | RAN 透明转发 NAS 给 AMF |
| 4 | Nudm_UEAuthentication_Get | **suci**（ueId）、**servingNetworkName** | ueId 用 SUCI，servingNetworkName 用于 5G AKA 的 KDF 输入 |
| 8 | AuthenticationInfoResult | **authType、authenticationVector(RAND,AUTN,XRES\*,K_AUSF)** | 鉴权向量；SUPI 随响应回到 AMF |
| 9 | Authentication Request | **RAND、AUTN** | 发给 UE 触发 RES* 计算 |
| 11 | Security Mode Command | **selected NAS security algo、replayed UE security cap.** | 协商 NAS 加密/完整性算法，开启受保护通道 |

**为什么这样设计（设计意图三连击）**：

1. **隐私边界 = 信任边界**：在漫游场景下，访问域 AMF/SEAF（VPLMN）**永远无法解密 SUCI**，私钥仅存在于归属域 UDM。这意味着即便 VPLMN 被攻陷或与攻击者勾结，也无法批量获取漫游用户的永久标识——这是 4G 完全做不到的（4G 中 MME 直接拿明文 IMSI）。
2. **解密与鉴权绑定**：SIDF 解出 SUPI 后，UDM 立即用该 SUPI 从 UDR 取鉴权签约并生成向量，**解密成功 ≠ 鉴权成功**。攻击者即便伪造 SUCI，也会因 MAC 校验失败或鉴权向量对不上而被拒。
3. **解密即一次性**：由于 UE 用临时密钥，SIDF 每次解密都需完整执行 ECDH，这天然限制了 SIDF 的吞吐——这也是为何 SIDF 通常独立高并发部署、并支持按 Routing Indicator 水平扩展。

---

## 六、SIDF 的部署形态与 SUCI 路由

SIDF 的部署直接关系到核心网的可扩展性。在分布式 UDM 架构中：

```mermaid
flowchart TB
    subgraph AMF层
        AMF1[AMF 实例1]
        AMF2[AMF 实例2]
    end
    subgraph UDM/SIDF集群["UDM/SIDF 集群(按Routing Indicator分片)"]
        SIDF1[SIDF-RI=001<br/>私钥池A]
        SIDF2[SIDF-RI=002<br/>私钥池B]
    end
    UDR[(UDR 统一数据仓库)]
    AMF1 -->|"Nudm_UEAuthentication_Get<br/>按MCC+MNC+RoutingIndicator路由"| UDMR[SUCI路由器/前置]
    AMF2 --> UDMR
    UDMR --> SIDF1
    UDMR --> SIDF2
    SIDF1 -->|解出SUPI后查UDR| UDR
    SIDF2 --> UDR
```

**路由逻辑（TS 23.003 Routing Indicator）**：

- Routing Indicator 由 USIM 在 `EF_RoutingIndicator` 中下发（1-4 位，默认值由运营商定）。
- AMF/UDM 前置根据 **MCC+MNC+Routing Indicator** 将 SUCI 路由到持有对应私钥分片的 SIDF 实例。
- 这种设计使运营商可以**按地域/用户群分片部署 SIDF**，避免单点瓶颈——因为 ECIES 解密是 CPU 密集型操作（椭圆曲线标量乘法），SIDF 是核心网中少有的"密码学算力热点"。

---

## 七、抓包实战：如何在 Wireshark 中识别 SUCI 流程

### 1. 抓包识别要点

在 NGAP + NAS 层抓包（端口 SCTP 36412、NAS-MM）：

- **InitialUEMessage（NGAP）** → 携带 `NAS-PDU` → 解码为 **5GS Registration Request**。
- 查看 **`5GS Mobile Identity`** IE：
  - 若 `Type of identity` 字段标记为 SUCI，且 `SUPI format` = 0（IMSI），则可见明文的 MCC/MNC/Routing Indicator/Protection Scheme ID/Key ID。
  - `Scheme Output` 若 Protection Scheme ID = 0 → 直接看到明文 MSIN（**这就是空方案，应引起隐私审计警觉**）。
  - 若 Scheme ID = 1 或 2 → Scheme Output 显示为不可读的 16 进制串（临时公钥+密文+MAC），**说明 ECIES 生效**。

```
NAS-5GS: Registration request
    5GS registration type: initial registration
    nas-MobileIdentity: SUCI
        Type of identity: SUCI (1)
        SUPI format: IMSI (0)
        MCC: 460, MNC: 00
        Routing Indicator: 0001
        Protection scheme id: Profile A (1)
        Home network public key id: 1
        Scheme output: 9f3a...（不可读）
```

### 2. 关联后续鉴权

- 解码 **`Authentication Request`**（NAS）确认 `RAND`、`AUTN` 与 SUCI 解出的 SUPI 对应。
- 若怀疑 SUCI 解密失败，可在 UDM 侧抓 **HTTP/2 (SBI)** 的 `POST /ue-authentications/{suci}/security-information`，看响应是 `200 OK + 鉴权向量` 还是 `4xx 错误`。

---

## 八、常见故障点与排错思路

| 故障现象 | 根因 | 排错思路 |
|---------|------|---------|
| 初始注册卡在 Authentication，UDM 返回 404/4xx | USIM 未下发 HN 公钥，UE 用空方案；或 Key ID 与 UDM 私钥池不匹配 | 抓 SUCI 看 Protection Scheme ID 与 Key ID；核对 USIM `EF_SUCI_Calc_Info` 与 UDM 私钥表 |
| 大量 UE 注册失败，UDM CPU 飙高 | SIDF 解密成为瓶颈（未按 Routing Indicator 分片） | 检查 SIDF 实例数与分片策略；监控 ECDH OPS |
| SUCI MAC 校验失败 | 公私钥不配对（公钥下发版本 ≠ 私钥版本） | 核对 Key ID 对应的公私钥指纹；密钥轮换期常见 |
| 漫游用户无法注册 | VPLMN AMF 未正确路由 SUCI 到 HPLMN UDM（Routing Indicator 配置错误） | 检查 NHRF/UDM 路由表与 SBI DNS 解析 |
| 隐私审计发现明文 MSIN | 部署了空方案（未下发公钥） | 推动发 Profile A/B 公钥，关闭空方案下发 |
## 九、SUCI 机制的局限性与 R18/R19 演进

尽管 SUCI 是巨大进步，但**并非完美无缺**，研究界（见参考来源 arxiv 论文）已指出若干残余弱点：

1. **空方案残留**：未部署公钥的卡仍泄露明文 MSIN。
2. **明文字段可关联**：MCC/MNC/Routing Indicator 明文，攻击者可做粗粒度运营商+地域画像。
3. **5G-GUTI 仍是追踪入口**：注册成功后网络用 5G-GUTI 寻呼，GUTI 复用周期内的关联追踪仍可能。
4. **主动去激活攻击**：伪基站可通过反复触发"身份请求"迫使 UE 重发 SUCI——虽然每次 SUCI 不同（临时密钥），但攻击者可统计 SUCI 生成频率做侧信道关联。

**Rel-18/19 的相关演进方向**包括：更频繁的 GUTI 重分配、PRINS（Primary Authentication and Key Establishment）对隐私的进一步加固、以及对 SUCI 重放攻击的检测机制研究（部分尚处学术阶段）。

---

## 常见问题

**Q1: SUCI 和 GUTI 有什么区别？分别保护什么？**
A: SUCI 是**永久标识 SUPI 的加密形态**，仅在初始注册/无有效临时标识时使用，保护的是用户永久身份；GUTI 是网络**分配的临时标识**，用于后续信令寻呼，保护的是会话级位置隐私。SUCI 解决"我是谁不能被知道"，GUTI 解决"现在用谁来找你"。两者互补：注册后网络立即下发 GUTI 替代 SUCI，避免重复使用同一 SUCI。

**Q2: 访问域 AMF/SEAF 能不能解密 SUCI？**
A: **不能**。这是 5G 隐私架构的核心保证。私钥仅存于归属域 UDM/SIDF，SUCI 在到达 SIDF 前始终保持密文形态。即便漫游到不可信的 VPLMN，访问域 AMF 也只能透传 SUCI 给 HPLMN。这与 4G 中 MME 直接持有明文 IMSI 形成本质差异。

**Q3: 空方案（Null-scheme）是否意味着 5G 隐私保护失效？**
A: **部分失效**。空方案下 Scheme Output 就是明文 MSIN，等同于 4G 明文 IMSI，伪基站可抓取。它存在的意义是兼容未部署公钥的场景。运维上应推动为所有新发卡下发 Profile A/B 公钥，并在 USIM 的方案优先级列表中将空方案置为最低优先级。

**Q4: UE 每次生成 SUCI 为什么都不一样？这如何防止追踪？**
A: 因为 UE 每次都用**新生成的临时椭圆曲线私钥 d** 做一次 ECDH，导致共享密钥 X、派生的 K_enc/K_mac、密文 C、MAC T 全部不同，连临时公钥 P_eph 也不同。攻击者即使连续抓到同一用户的多个 SUCI，也无法判断它们属于同一人（除非能解密，而那需要 HN 私钥）。这把"基于密文的相关性追踪"在密码学层面堵死。

**Q5: SIDF 为什么是核心网性能瓶颈？如何优化？**
A: 因为每次解密都要执行一次完整的 ECDH 标量乘法（椭圆曲线运算，远比对称加密昂贵），且 SUCI 临时密钥无法缓存复用。优化手段：①按 Routing Indicator 水平分片 SIDF；②使用硬件加速（如支持 P-256/Curve25519 的密码卡或 Intel AES-NI + EC 指令集）；③将 SIDF 部署为无状态微服务，前置 SBI 负载均衡按 SUCI 路由。

---

## 参考来源

1. [3GPP TS 33.501 — Security architecture and procedures for the 5G system](https://www.3gpp.org/dynareport/33501.htm) — §6.12 SUPI 隐私保护、Annex C（C.3 Profile A / C.4 Profile B 保护方案）
2. [3GPP TS 23.003 — Numbering, addressing and identification](https://www.3gpp.org/dynareport/23003.htm) — SUCI 结构与 Routing Indicator 定义
3. [3GPP TS 29.503 — Nudm Service](https://www.3gpp.org/dynareport/29503.htm) — §5.3 Nudm_UEAuthentication_Get（SIDF 解密与鉴权向量生成 SBI 接口）
4. [5G 隐私守护者：SUCI 加密机制全解析 — CSDN](https://blog.csdn.net/Qinti_mm/article/details/154487804) — SUCI 组成与 ECIES 流程中文解读
5. [SUCI — Subscription Concealed Identifier | 3GPP Glossary](https://3gpp-explorer.com/glossary/suci/) — SIDF 作为唯一解密实体的架构说明
6. [NIST CSWP 36 — Protecting Subscriber Identifiers with SUCI](https://nvlpubs.nist.gov/nistpubs/CSWP/NIST.CSWP.36A.ipd.pdf) — SUCI 部署与隐私评估白皮书

---
> 本文由「51学通信」技术团队出品。51学通信由通信行业18年老兵**爱卫生**（微信ID: gprshome201101）维护，聚焦5G/6G核心网、3GPP标准解读、通信前沿技术深度分析。
> 出版作品有《5G核心网原理与实践》《IMS原理与实践》等4本通信专业书籍。知识星球「51学通信」提供深度技术答疑和行业洞察。

> [!tip] 51学通信知识星球
> **星主：爱卫生**（微信：gprshome201101）——公众号「51学通信」创办者，19 年通信行业运维与讲师经验，著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书（各大电商平台有售）。
> **星球定位**：深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域，主打运维岗位与信令分析。
> **当前规模**：5200 篇主题 / 990 个回答，198 元/年。
> **加入福利**：加入星球后请加爱卫生微信，拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题，另有群内分享。
> **AI 加持**：51学通信知识星球已作为 skill 接入 WorkBuddy，使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例，做总结、找文档和 PPT 等场景全覆盖。

![51学通信知识星球海报-扫码加入](https://wiki.500nian.com/images/zhixingqiu_qrcode.png)
