PolarFire Soc System_Services 中 OTP 相关服务(One-Time Passcode Service)说明

OTP 相关服务(One-Time Passcode Service)说明

在《PolarFire_FPGA_and_PolarFire_SoC_FPGA_System_Services_User_Guide_VD.pdf》中,OTP(One-Time Passcode,一次性密码)服务属于密码服务(Passcode Services) 范畴,是用于临时解锁软件调试锁(SWL_DEBUG)的安全协议类服务,仅支持 PolarFire SoC 和 RT PolarFire SoC FPGA 设备,其他型号(如基础款 PolarFire FPGA、RT PolarFire FPGA)不支持该服务。
 
OTP 相关服务包含两个核心子服务,需配合使用以完成一次性密码的生成与验证,具体如下:
 

一、Generate OTP Service(生成 OTP 服务)

核心功能

作为 OTP 协议的第一步,用于初始化一次性密码流程:生成设备端唯一随机数(NFPGA),并接收用户端随机数(NUSER),仅解锁软件调试锁(SWL_DEBUG),不涉及其他安全锁操作。

关键参数与操作

  1. 服务命令码(SERVICECMD):十六进制 7AH 。
  2. 输入参数:
    • KEYMODE(1 字节):指定用于传输加密密码的密钥模式,该参数的有效性需在后续 “Match OTP Service” 中验证 。
    • NUSER(16 字节):用户提供的 128 位随机数,用于参与后续 OTP 生成 。
  3. 输出参数:
    • NFPGA(16 字节):设备生成的 128 位随机数,存储在易失性内存中,需用于后续 “Match OTP Service” 的验证 。

注意事项

  • 若生成非 ce 失败(如密钥模式无效、随机数生成错误),返回的 NFPGA 为 0,操作会中止并触发 PASSCODE_FAIL 篡改事件 。
  • 该服务仅解锁 SWL_DEBUG,不影响其他安全锁(如硬件调试锁、SPI 端口锁等) 。

 

二、Match OTP Service(匹配 OTP 服务)

核心功能

作为 OTP 协议的第二步,用于验证用户提供的一次性密码(OTP)有效性:需先通过 “Generate OTP Service” 获取 NFPGA,再提交用户 ID、验证器(V)和 OTP,完成身份核验。

关键参数与操作

  1. 服务命令码(SERVICECMD):十六进制 7BH 。
  2. 输入参数:
    • UID(16 字节):用户 ID,用于标识请求验证的用户身份 。
    • V(32 字节):验证器,由用户根据 NFPGANUSER 及预设算法生成 。
    • OTP(32 字节):用户生成的一次性密码,需与设备端计算结果匹配 。
  3. 操作逻辑:
    • 设备端根据此前生成的 NFPGA、用户输入的 UIDVOTP 进行一致性校验。
    • 校验成功:维持 SWL_DEBUG 解锁状态,允许调试操作;校验失败:自动重新锁定所有已解锁的密码,并触发 PASSCODE_FAIL 篡改事件 。

 

posted on 2025-09-26 16:02  所长  阅读(14)  评论(0)    收藏  举报

导航