# Keystore 安全性说明
# Keystore 文件
keystore 文件是您独有的、用于签署交易的私钥加密文件,允许您以加密的方式存储密钥。
这种方式兼具 安全性(一个攻击者需要账户 keystore 文件和您的密码才能盗取您的资产)和 易用性(您只需要 keystore 文件和密码就能使用资产)。
WARNING
如果您丢失了私钥,意味着您失去了签署交易的能力,同时意味着您的资产被永久的锁定在了您的账户里。
所以,请务必保管好您的私钥以及 keystore 文件!不要向他人透露您的私钥和 keystore 文件密码!
keystore 文件格式:
{
"account_address" : "T800002276a7d58218ac4978733e5cca927a7d86cb7c87",
"address" : "2276a7d58218ac4978733e5cca927a7d86cb7c87",
"crypto" : {
"cipher" : "aes-128-ctr",
"cipherparams" : {
"iv" : "09dade6d3ce2741794e49d65f8dd65a4"
},
"ciphertext" : "a45fd491c32ad271039883ed4084e18c57e12cd2c21af1522fe94ba8313634a3",
"kdf" : "scrypt",
"kdfparams" : {
"dklen" : 32,
"n" : 262144,
"p" : 1,
"r" : 8,
"salt" : "9ed2bcb3349392765fec47bb20776cdb69e0e3a4d19d26da65f9371f83cfc2b5"
},
"mac" : "da83cf03746166c877bf319d6371c7f54d518c48c99b1782fdad56e343b812f6"
},
"hint" : "",
"id" : "568498c9-889b-a26d-fa01-bc9a67ffc472",
"key_type" : "owner",
"public_key" : "9b473e552fd05ed2e39d4d3af18367cc98859d50a3eb93805e4706b6b86310c83a2c4e847b662266330cef4cfb7c595ad655ab6a18d86708fe7bc00b589a3a68",
"version" : 3
}
# 生成 keystore 文件的方法
生成原始私钥,并对原始数据进行 16 进制编码。
生成 32 字节的
salt
。CryptoPP::AutoSeededRandomPool::GenerateBlock
生成 AES 的 32 字节加密 key。
其中:kdf 算法采用 scrypt,hash 算法采用 SHA3-256,再加上密码,生成加密 key。
生成 AES 的 16 字节的
iv
。CryptoPP::AutoSeededRandomPool::GenerateBlock
生成密文。加密算法采用 AES128,加密模式采用 CTR_Mode。
计算 32 字节 mac(message authentication code 消息认证码),将 aes_key 后 16 字节同加密后的密文(ciphertext)拼接,然后对拼接数据进行 hash(SHA3-256)计算。
将上述相关数据写入文件。