提示
提示 1查看
只要从 A 求出秘密指数 a,就能用 `s = B^a mod p` 得到共享密钥,这是离散对数问题
提示 2查看
逐一尝试 a 最多需要 2^36 次,在 Python 中无法完成
提示 3查看
使用小步大步算法:令 `m = ceil(sqrt(p))`,把 `g^j` 存入字典,再检查 `A×(g^-m)^i` 是否在字典中
一台旧 IoT 设备使用只有 36 位的素数 p 进行 Diffie-Hellman 密钥交换。`handshake.txt` 中有 p、g、`A = g^a mod p`、`B = g^b mod p`,以及用共享密钥派生的密钥流加密的配置数据。请求解离散对数得到共享密钥,取出配置数据中的旗标。密钥流的生成方式见 `README.md`。
只要从 A 求出秘密指数 a,就能用 `s = B^a mod p` 得到共享密钥,这是离散对数问题
逐一尝试 a 最多需要 2^36 次,在 Python 中无法完成
使用小步大步算法:令 `m = ceil(sqrt(p))`,把 `g^j` 存入字典,再检查 `A×(g^-m)^i` 是否在字典中