nearlink_sdr.mac.security_manager¶
安全流程集成管理 -- TXS-10002-2025 标准 9.2-9.4。
将配对信令 (security.py)、密码学原语 (crypto.py) 和链路管理器 整合为端到端的安全流程:
配对状态机 (PairingManager): 驱动配对信令交互和密钥协商
帧加密上下文 (FrameCryptoContext): 管理 payload_count 和 AES-CCM 加解密
ECDH 密钥交换 (P-256): 生成密钥对和共享密钥
Module Contents¶
Classes¶
P-256 椭圆曲线密钥对。 |
|
帧级 AES-CCM 加解密上下文。 |
|
配对失败原因 (标准 9.2)。 |
|
配对流程状态机 (标准 9.2)。 |
|
配对流程状态。 |
Functions¶
执行完整的端到端配对流程。 |
API¶
- class nearlink_sdr.mac.security_manager.ECDHKeyPair[源代码]¶
P-256 椭圆曲线密钥对。
- classmethod generate() nearlink_sdr.mac.security_manager.ECDHKeyPair[源代码]¶
生成 P-256 密钥对。
计算 ECDH 共享密钥。
- 返回:
共享密钥 (32 字节)。
- class nearlink_sdr.mac.security_manager.FrameCryptoContext[源代码]¶
帧级 AES-CCM 加解密上下文。
管理 payload_count 单调递增和 nonce 构建, 为 MAC 帧提供加解密服务。
- 变量:
session_key -- 会话密钥 (16 字节)。
iv_base -- 初始化向量基底 (8 字节)。
direction -- 传输方向 (0=G→T, 1=T→G)。
mic_len -- MIC 长度 (字节, 4/8/12/16)。
frame_type -- 帧类型 (用于 IV 计算)。
link_id -- 链路标识 (用于 IV 计算)。
- encrypt(plaintext: bytes, aad: bytes = b'') tuple[bytes, bytes][源代码]¶
加密一帧数据, 自动递增 payload_count。
- 参数:
plaintext -- 明文数据。
aad -- 关联数据 (不加密但参与完整性校验)。
- 返回:
(密文, MIC)。
- class nearlink_sdr.mac.security_manager.PairingFailureReason[源代码]¶
Bases:
enum.IntEnum配对失败原因 (标准 9.2)。
Initialization
Initialize self. See help(type(self)) for accurate signature.
- PASSKEY_ENTRY_FAILED¶
1
- OOB_NOT_AVAILABLE¶
2
- AUTHENTICATION_REQUIREMENTS¶
3
- CONFIRM_VALUE_FAILED¶
4
- PAIRING_NOT_SUPPORTED¶
5
- ENCRYPTION_KEY_SIZE¶
6
- COMMAND_NOT_SUPPORTED¶
7
- UNSPECIFIED_REASON¶
8
- REPEATED_ATTEMPTS¶
9
- INVALID_PARAMETERS¶
10
- DHKEY_CHECK_FAILED¶
11
- NUMERIC_COMPARISON_FAILED¶
12
- class nearlink_sdr.mac.security_manager.PairingManager[源代码]¶
配对流程状态机 (标准 9.2)。
驱动 G 节点与 T 节点之间的配对信令交互, 完成:
配对发起/请求/响应
ECDH 公钥交换
确认码互验
链路密钥派生
会话密钥派生
- 变量:
is_g_node -- 本端是否为 G 节点。
kdf_type -- 密钥派生函数类型。
auth_method -- 鉴权方式。
max_key_length -- 最大密钥长度 (字节)。
- kdf_type: nearlink_sdr.mac.crypto.KdfType¶
None
- auth_method: nearlink_sdr.mac.crypto.AuthMethod¶
None
- state: nearlink_sdr.mac.security_manager.PairingState¶
None
- failure_reason: nearlink_sdr.mac.security_manager.PairingFailureReason | None¶
None
- local_keypair: nearlink_sdr.mac.security_manager.ECDHKeyPair¶
'field(...)'
- class nearlink_sdr.mac.security_manager.PairingState[源代码]¶
Bases:
enum.IntEnum配对流程状态。
Initialization
Initialize self. See help(type(self)) for accurate signature.
- IDLE¶
0
- INITIATED¶
'auto(...)'
- REQUEST_SENT¶
'auto(...)'
- RESPONSE_SENT¶
'auto(...)'
- CONFIRM_SENT¶
'auto(...)'
- PUBLIC_KEY_EXCHANGED¶
'auto(...)'
- CONFIRM_CODE_SENT¶
'auto(...)'
- COMPLETED¶
'auto(...)'
- FAILED¶
'auto(...)'
- nearlink_sdr.mac.security_manager.run_pairing_procedure(g_address: bytes = b'\x01\x02\x03\x04\x05\x06', t_address: bytes = b'\n\x0b\x0c\r\x0e\x0f', kdf_type: nearlink_sdr.mac.crypto.KdfType = KdfType.AES_CMAC, auth_method: nearlink_sdr.mac.crypto.AuthMethod = AuthMethod.NUMERIC_COMPARISON) tuple[nearlink_sdr.mac.security_manager.PairingManager, nearlink_sdr.mac.security_manager.PairingManager][源代码]¶
执行完整的端到端配对流程。
模拟 G 节点和 T 节点之间的配对信令交互, 完成密钥交换和会话密钥派生。
- 返回:
(G 节点管理器, T 节点管理器)。