Update README.md
This commit is contained in:
@@ -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);
|
||||
}
|
||||
```
|
||||
|
||||
### 面试高频问题
|
||||
#### 安全启动与普通启动的区别:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user