远程证明演示Demo
如下步骤在一台服务器上演示远程证明,需开启四个窗口,以便演示。
窗口1
若使用AS模式,可在“窗口1”启动AS服务器。
- 启动AS服务器,需要提前准备数据库。
dnf install openldap-devel postgresql-server cd kunpengsecl/attestation/quick-scripts/ bash prepare-database-env.sh
- 配置证书。
cd kunpengsecl/attestation/tas/cmd/ openssl genrsa -out aspriv.key 4096 openssl req -new -x509 -days 365 -key aspriv.key -out ascert.crt
证书需要填写一些配置信息,可根据需要填写,演示未设置。
- 配置“config.yaml”文件。
- 打开文件。
vim config.yaml
- 按“i”键进入编辑模式,根据如下注释信息和需求进行修改。演示只需修改basevalue。
tasconfig: # 默认开放的服务端口 port: 127.0.0.1:40008 rest: 127.0.0.1:40009 # 为AS服务配置的私钥和证书 akskeycertfile: ./ascert.crt aksprivkeyfile: ./aspriv.key huaweiitcafile: ./Huawei IT Product CA.pem # 如下配置仅用于测试,实际使用时请更新内容以保证安全 DAA_GRP_KEY_SK_X: 65a9bf91ac8832379ff04dd2c6def16d48a56be244f6e19274e97881a776543c65a9bf91ac8832379ff04dd2c6def16d48a56be244f6e19274e97881a776543c DAA_GRP_KEY_SK_Y: 126f74258bb0ceca2ae7522c51825f980549ec1ef24f81d189d17e38f1773b56126f74258bb0ceca2ae7522c51825f980549ec1ef24f81d189d17e38f1773b56 # QTA的基准度量值,可从编译QTA时产生的hash_e08f7eca-e875-440e-9ab0-5f381136c600.txt文件中获取,basevalue的填写格式为【img_hash mem_hash】 basevalue: "8c6faf44d8d1fa9f83977e405caadd7d9b1194839d6034d5412fe00f5f294976 0f474ebc56dc5502f7fba2a26d983b3a6cf2da84ce44730f60d4c660d42634a6" authkeyfile: ./ecdsakey.pub
- 按“Esc”键退出编辑模式,输入:wq!并按“Enter”键保存退出文件。
- 打开文件。
- 启动AS服务。
go run main.go -T; go run main.go
窗口2
在“窗口2”启动RA Service,用于接收RA client发起的远程证明请求。
- 部署应用。在5QTA源码中指定了qcaserver的执行路径,因此需将qcaserver部署到对应目录下。
cp kunpengsecl/attestation/tee/demo/pkg/qcaserver /vendor/bin/
- 启动RA Service服务。
cd kunpengsecl/attestation/tee/demo/qca_demo/cmd/
该目录提供了qcaserver默认的config.yaml配置文件,可根据需求进行修改,演示可使用默认值。
qcaconfig: server: 127.0.0.1:40007 # 默认开放的服务端口 akserver: 127.0.0.1:40008 # AS服务的端口配置 scenario: 0 nodaaacfile: ./nodaa-ac.crt # as no daa模式的证书路径 daaacfile: ./daa-ac.crt # as with daa模式的证书路径
- 启动RA Service服务。可根据需求选择合适的场景,其中-C用于指定远程证明场景。0-3表示的场景分别为:0表示no as,1表示as no daa,2表示as with daa。
/vendor/bin/qcaserver -C 1
启动后在AS模式下,qcaserver会主动连接AS服务获取证书。
窗口3
在“窗口3”启动目标TA,作为被测试的TA。
可按照加载TA/CA应用 运行演示CA/TA应用或开发的其他应用。
/vendor/bin/rsa_demo
RA Client发起调用时,目标TA应处于运行状态,否则会报uuid invalid错误,为了保证演示成功,测试CA/TA应运行足够长的时间。可在CA拉取TA后,让CA睡眠一段时间,防止TA被卸载。
窗口4
在“窗口4”启动RA Client发起远程调用。
- 进入RA client应用的目录下,里面提供了RA Client启动需要的配置文件。
cd kunpengsecl/attestation/tee/demo/attester_demo/cmd
- 配置config.yaml文件。
- 打开文件。
vim config.yaml
- 按“i”键进入编辑模式,参照如下内容按需修改。演示修改测试TA的UUID。
attesterconfig: server: 127.0.0.1:40007 # RA Service服务的端口配置 basevalue: "./basevalue.txt" # 待测试TA的基准度量值存储的文件路径 mspolicy: 2 # 验证策略,1为仅对比img-hash值,2为仅对比mem-hash值,3为同时对比img-hash和mem-hash两个值 uuid: 435dcafa-0029-4d53-97e8-a7a13a80c82e # 测试TA的uuid
- 按“Esc”键退出编辑模式,输入:wq!并按“Enter”键保存退出文件。
- 打开文件。
- 配置目标TA的基准度量。config.yaml中指定了测试TA的基准度量配置文件。
- 打开文件。
vim basevalue.txt
- 按“i”键进入编辑模式,参照如下内容按需修改。
基准度量值可通过编译测试TA时生成的hash_{测试TA uuid}.txt获取,使用1.4.0版本之前的itrustee_sdk时,位于“itrustee_sdk/build/signtools”目录下,1.4.0版本时,位于TA的编译目录下。basevalue.txt的填写格式为:【uuid img_hash mem_hash】,示例为如下。
435dcafa-0029-4d53-97e8-a7a13a80c82e a1ef720498a93a36df8c3b1ea58058485de5b8146d399e837b0b709b53224542 ad36fdf631f1fdd6dc47c8d80bdf08fb752d1e93bd97ed534abbde797bf68b8b
- 按“Esc”键退出编辑模式,输入:wq!并按“Enter”键保存退出文件。
- 打开文件。
- 若使用AS模式,需将AS的证书拷贝到当前目录。
cp ../../../../tas/cmd/ascert.crt TAS\ Root\ Cert.pem
- 发起远程证明请求。
go run main.go
若验证失败,且tlogcat出现如下错误,可能原因为RA client发起请求时,测试TA已经退出了。
重新启动测试CA/TA,并重新发起请求即可。因此推荐延长测试CA/TA执行时间,为操作预留足够时间。
父主题: 使用实例