Update README.md

This commit is contained in:
Natsume1710
2025-06-17 14:50:28 +08:00
committed by GitHub
parent 201dbb2164
commit 4897cb30e0
-70
View File
@@ -178,78 +178,8 @@ uint32_t SecureService_Call(uint32_t service_id, uint32_t param1, uint32_t param
---
### 🔹 安全通信实践
1. TLS 握手优化
- 预共享密钥(PSK)模式:
减少证书验证开销,适合资源受限设备。
```c
// mbed TLS配置PSK
mbedtls_ssl_config_set_psk(&ssl_conf,
psk, // 预共享密钥
psk_length,
identity, // 身份标识
strlen(identity));
```
2. 证书管理方案
- 证书存储:
- 根证书存储在安全 Flash 区域。
- 设备证书通过安全通道动态更新。
- 证书验证:
```c
// 验证服务器证书链
int verify_cert(void *data, mbedtls_x509_crt *crt, int depth, uint32_t *flags) {
// 检查证书有效期
if (mbedtls_x509_crt_check_validity(crt, time(NULL)) != 0) {
return MBEDTLS_ERR_X509_CERT_VERIFY_FAILED;
}
// 检查证书颁发者
if (!mbedtls_x509_crt_verify(crt, trusted_certs, NULL, NULL, flags, NULL, NULL)) {
return MBEDTLS_ERR_X509_CERT_VERIFY_FAILED;
}
return 0;
}
```
---
### 🔹 安全测试
1. 固件逆向分析
- 工具链:
- Ghidra:反编译二进制文件,生成 C 语言伪代码。
- IDA Pro:专业逆向工程工具,支持 ARM 架构。
- 防御措施:
- 固件加密:使用 AES-256 加密整个固件。
- 反调试机制:检测调试接口是否被连接。
```c
// 检测SWD/JTAG调试接口
bool IsDebuggerAttached(void) {
// 读取DBGMCU_IDCODE寄存器
uint32_t idcode = DBGMCU->IDCODE;
// 检查调试使能位
return ((DBGMCU->CR & (DBGMCU_CR_DBG_SLEEP | DBGMCU_CR_DBG_STOP | DBGMCU_CR_DBG_STANDBY)) != 0);
}
```
2. 侧信道攻击防护
- 电源分析攻击:
通过测量设备功耗分析加密密钥。
- 防护措施:
常量时间实现:避免条件分支依赖密钥值。
```c
// 常量时间比较(防止时序攻击)
bool ConstantTimeCompare(const uint8_t *a, const uint8_t *b, size_t len) {
uint8_t result = 0;
for (size_t i = 0; i < len; i++) {
result |= a[i] ^ b[i];
}
return (result == 0);
}
```
### 面试高频问题
#### 安全启动与普通启动的区别: