Fisco Bcos区块链六(存储加密)

存储加密

1、部署Key Manager

安装依赖包

# In Centos
sudo yum install procps-ng-devel
sudo yum install curl-devel
# In ubuntu
sudo apt-get install libprocps-dev curl libcurl4-openssl-dev
# In ArchLinux
sudo pacman -S procps-ng

mkdir tools && cd tools
git clone https://github.com/FISCO-BCOS/key-manager.git
cd key-manager && mkdir build && cd build

# For Centos
cmake3 .. # Notice: There are ".." behind. 
# cmake3 .. -DBUILD_GM=On  #When building "guomi" key-manager

# For ubuntu
cmake .. # Notice: There are ".." behind. 
# cmake .. -DBUILD_GM=On  #When building "guomi" key-manager

make
#The execution: "key-manager" generated.

开始

./key-manager 8150 123xyz # key-manager <port> <superkeyString>
./key-manager 8150 123xyz -g # key-manager <port> <superkeyString> <guomi version>

检查

成功启动后打印信息。

[1545471609499] [TRACE][Load]key-manager started,port=8150

2、生成节点

用build_chain.sh脚本,用普通的操作方法,先生成节点。

# 部署四个节点
bash build_chain.sh -l 127.0.0.1:4 -p 30300,20200,8545

节点生成后,不能启动,待dataKey配置后,再启动。节点在第一次运行前,必须配置好是否采用落盘加密。一旦节点开始运行,无法切换状态。

3、启动Key Manager

直接启动key-manager

# 参数:端口,superkey
./key-manager 8150 123xyz

启动成功,打印日志

[1546501342949][TRACE][Load]key-manager started,port=8150

4、配置dataKey

配置dataKey的节点,必须是新生成,未启动过的节点。

执行脚本,定义dataKey,获取cipherDataKey

# 克隆一个窗口
cd /root/tools/key-manager/scripts

apt-get install jq

# 这个脚本gen_data_secure_key.sh 后面携带的参数分别是 key-manager 的地址,端口和datakey
bash gen_data_secure_key.sh 127.0.0.1 8150 123456
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   176  100   109  100    67   106k  67000 --:--:-- --:--:-- --:--:--  171k
CiherDataKey generated: ed157f4588b86d61a2e1745efe71e6ea
Append these into config.ini to enable disk encryption:
[storage_security]
enable=true
key_center_url=127.0.0.1:8150
cipher_data_key=ed157f4588b86d61a2e1745efe71e6ea

得到cipherDataKey,脚本自动打印出落盘加密需要的ini配置(如下)。此时得到节点的cipherDataKey:cipher_data_key=ed157f4588b86d61a2e1745efe71e6ea 将得到的落盘加密的ini配置,写入节点配置文件(config.ini)中。

# 注意,我只是修改了node0,若想要四个节点都存储加密,请将我一下的步骤,运用到其他三个节点
cd tools && vim nodes/127.0.0.1/node0/config.ini

修改[storage_security]中的字段如下。

[storage_security]
    enable=true
    key_manager_ip=127.0.0.1
    key_manager_port=8150
    cipher_data_key=ed157f4588b86d61a2e1745efe71e6ea

5、加密节点私钥

执行脚本,加密节点私钥

cd /root/tools/key-manager/scripts
# 参数:ip port 节点私钥文件 cipherDataKey
bash encrypt_node_key.sh 127.0.0.1 8150 ../../nodes/127.0.0.1/node0/conf/node.key ed157f4588b86d61a2e1745efe71e6ea

执行后,节点私钥自动被加密,加密前的文件备份到了文件node.key.bak.xxxxxx中,请将备份私钥妥善保管,并删除节点上生成的备份私钥

扫描二维码关注公众号,回复: 17147455 查看本文章
[INFO] File backup to "../../nodes/127.0.0.1/node0/conf/node.key.bak.1699962867"
[INFO] "../../nodes/127.0.0.1/node0/conf/node.key" encrypted!

若查看node.key,可看到,已经被加密为密文

cat /root/tools/nodes/127.0.0.1/node0/conf/node.key

8b2eba71821a5eb15b0cbe710e96f23191419784f644389c58e823477cf33bd73a51b6f14af368d4d3ed647d9de6818938ded7b821394446279490b537d04e7a7e87308b66fc82ab3987fb9f3c7079c2477ed4edaf7060ae151f237b466e4f3fdaff78b2740788bd261d8e2ed0af2300e657865d03fae33e0a0c9388fe856c31c7ed477fb134b3a75e7fa8d8d2cab47fb5d4b4656d0440d9043ef41c20adf1cbb18cf30b4db3efada5f7009405d5a54ed6daf3ba228fc3d5c0a98cd539f584220fce949c26bd2c48a53d677aeb320712b15c1268716b008b1c59ba7318b1b4509cfd17a0672c2124b3e40437f3a0fc353e852e8bebe06501d9eac693d4db61a7a507192594626541f8195aaf570bfc43cc1079c9d7837d1bb410f8fdcc5c74a1e06eb0e882a15f982061c0354ff2ad7882cbe4fc982ca206c6d02dda25e93e62

所有需要加密的文件列举如下,若未加密,节点无法启动。

  • 非国密版:conf/node.key
  • 国密版:conf/gmnode.key和conf/origin_cert/node.key

6、节点运行

直接启动节点即可

cd nodes/127.0.0.1/node0/
./start.sh

直接启动节点即可。如果这个节点所在的硬盘被带出机房(内网),将无法访问Key Manager。节点拿不到自己的dataKey,无法解密硬盘数据,也无法解密自己的私钥,因而无法启动。

7、正确性判断

(1)节点正常运行,正常共识,不断输出共识打包信息。

tail -f nodes/127.0.0.1/node0/log/* | grep +++

(2)key-manager在节点每次启动时,都会打印一条日志。例如,节点在一次启动时,Key Manager直接输出的日志如下,我们可以回到启动key-manager的终端接口,已经开始打印了加密日志。

[1699963406883][TRACE][Dec]Respond
{
    
    
   "dataKey" : "313233343536",
   "error" : 0,
   "info" : "success"
}

其他节点重复此操作就行,这样四个节点都能实现存储加密了

猜你喜欢

转载自blog.csdn.net/m0_46635662/article/details/134407002