什么是BNB Keystore?
BNB Keystore是遵循以太坊V3标准的加密私钥文件,是冷钱包中替代明文私钥的安全存储形式,它通过用户设置的密码对原始私钥进行加密,既保留了私钥的签名功能,又避免了明文私钥泄露的风险,与助记词(私钥的BIP39编码)不同,Keystore是私钥的加密载体,需配合密码使用,是冷钱包交互中的常用凭证。
BNB Keystore的核心生成规则
BNB Keystore的生成严格遵循密码学安全标准,核心规则围绕私钥生成、加密流程、结构规范三部分展开:
原始私钥的生成规则
BNB基于BNB Chain公链,采用Secp256k1椭圆曲线算法进行签名,因此原始私钥必须满足:
- 长度要求:固定为32字节(256位),与Secp256k1曲线的密钥长度匹配;
- 随机性要求:必须使用本地安全的密码学随机数生成器(RNG),如硬件钱包的物理RNG、手机安全元件(SE),禁止使用在线伪随机数,防止私钥被预测;
- 唯一性要求:生成的私钥需保证全局唯一,避免重复导致的资产冲突。
加密流程的标准规则
BNB Keystore采用以太坊V3标准的加密流程,核心参数固定:
- 盐值(Salt):生成16字节的随机盐值,存储于Keystore中,用于对抗彩虹表攻击;
- 密钥派生函数(KDF):采用scrypt算法,默认参数为
N=16384(CPU/内存成本因子)、r=8(块大小)、p=1(并行因子),平衡安全性与效率,防止暴力破解; - 对称加密:使用AES-128-CBC算法加密原始私钥,生成16字节的随机初始化向量(IV),加密密钥为scrypt派生密钥的前16字节,加密后的密文存储于Keystore;
- MAC校验:派生密钥的后16字节与密文进行Keccak-256哈希运算,取前16字节作为消息认证码,用于验证密码正确性,避免输错密码导致的签名失败。
Keystore的结构字段规则
生成后的Keystore为JSON格式,核心字段需符合标准,否则无法被主流钱包识别:
version:固定为3,标识Keystore版本;id:UUID格式的唯一标识,用于区分不同的Keystore;address:BNB地址,由公钥经Keccak-256哈希后取后20字节生成,格式为0x开头的40位十六进制字符串;crypto字段:包含所有加密相关参数,如ciphertext(密文)、kdf(密钥派生算法为scrypt)、mac(消息认证码)等,缺一不可。
生成BNB Keystore的安全注意事项
- 离线生成:必须在未联网的冷设备(如离线电脑、硬件钱包)上生成Keystore,避免联网时私钥被网络攻击窃取;
- 密码强度:设置8位以上的复杂密码(包含大小写、数字、特殊字符),避免弱密码被暴力破解;
- 备份验证:生成后需备份Keystore文件及密码,可通过离线存储(如加密U盘、离线纸钱包)备份,同时验证Keystore是否可正常导入其他钱包,确保可用性。