Merge pull request #14 from shaojian-ant/main repo-sync-2024-08-08T19:24:12+0800
Merge pull request #14 from shaojian-ant/main
repo-sync-2024-08-08T19:24:12+0800
本仓库存放隐私计算平台互联互通协议参考实现的代码
interconnection-impl 引用了 spu 仓库代码,需要根据 spu 构建前提在编译环境上安装好依赖库
然后执行以下构建指令:
bazel build -c opt ic_impl/ic_main
本地同时执行以下两条指令:
bazel run -c opt ic_impl/ic_main -- -rank=0 -algo=ECDH_PSI -protocol_families=ECC \ -in_path ic_impl/data/psi_1.csv -field_names id -out_path /tmp/p1.out \ -parties=127.0.0.1:9530,127.0.0.1:9531
bazel run -c opt ic_impl/ic_main -- -rank=1 -algo=ECDH_PSI -protocol_families=ECC \ -in_path ic_impl/data/psi_2.csv -field_names id -out_path /tmp/p2.out \ -parties=127.0.0.1:9530,127.0.0.1:9531
为满足北京金融科技产业联盟的调度层互联互通标准对算法组件接口的要求,interconnection-impl 支持 ECDH-PSI 算法从环境变量读取配置参数
当某个参数在环境变量和命令行选项都被指定时,优先选择读取环境变量参数
程序运行需要关闭握手过程:
bazel run -c opt ic_impl/ic_main -- -disable_handshake=1
ECDH-PSI 算法配置的环境变量如下表所示。环境变量设置可参考 ecdh-psi-env-alice.sh 和 ecdh-psi-env-bob.sh
运行 SS-LR 之前,需要先启动 Beaver 服务。Beaver 服务的代码位于 SPU 仓库中,需要将 SPU 代码克隆到本地并编译:
git clone git@github.com:secretflow/spu.git cd spu && bazel build -c opt libspu/mpc/semi2k/beaver/beaver_impl/ttp_server:beaver_server_main
然后生成 Beaver 服务的公钥和私钥:
bazel-bin/libspu/mpc/semi2k/beaver/beaver_impl/ttp_server/beaver_server_main -gen_key=true
最后启动 Beaver 服务,将上一步生成的私钥通过命令行参数传递给 Beaver 服务:
bazel-bin/libspu/mpc/semi2k/beaver/beaver_impl/ttp_server/beaver_server_main -port=9449 -server_private_key=LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCk1JR0lBZ0VBTUJRR0NDcUJITTlWQVlJdEJnZ3FnUnpQVlFHQ0xRUnRNR3NDQVFFRUlJVnRVS1JEalVERFptZ3cKL0xUd0dYUmZXVFM5MStTSEhqODAwNnc2SUUxNW9VUURRZ0FFdER5RHNLM0RQN3YyWmdEdjZYNVQySnMzdGtmNQpPYXVBUEdXTHErTlhuMW1HYkd5N3pIZEVaa0FvNERDSGZyRmVuRWFCckxXMFZxUUtUY3QxUzJUYXpnPT0KLS0tLS1FTkQgUFJJVkFURSBLRVktLS0tLQo=
启动 Beaver 服务后,本地同时执行以下两条指令,命令行参数包括上述 Beaver 服务生成的公钥:
bazel run -c opt ic_impl/ic_main -- -rank=0 -algo=SS_LR -protocol_families=SS \ -dataset=ic_impl/data/perfect_logit_a.csv -has_label=true \ -use_ttp=true -ttp_server_host=127.0.0.1:9449 \ -parties=127.0.0.1:9530,127.0.0.1:9531 -ttp_asym_crypto_schema=sm2 \ -ttp_public_key=LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0KTUZvd0ZBWUlLb0VjejFVQmdpMEdDQ3FCSE05VkFZSXRBMElBQkxROGc3Q3R3eis3OW1ZQTcrbCtVOWliTjdaSAorVG1yZ0R4bGk2dmpWNTlaaG14c3U4eDNSR1pBS09Bd2gzNnhYcHhHZ2F5MXRGYWtDazNMZFV0azJzND0KLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tCg==
bazel run -c opt ic_impl/ic_main -- -rank=1 -algo=SS_LR -protocol_families=SS \ -dataset=ic_impl/data/perfect_logit_b.csv -has_label=false \ -use_ttp=true -ttp_server_host=127.0.0.1:9449 \ -parties=127.0.0.1:9530,127.0.0.1:9531 -ttp_asym_crypto_schema=sm2 \ -ttp_public_key=LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0KTUZvd0ZBWUlLb0VjejFVQmdpMEdDQ3FCSE05VkFZSXRBMElBQkxROGc3Q3R3eis3OW1ZQTcrbCtVOWliTjdaSAorVG1yZ0R4bGk2dmpWNTlaaG14c3U4eDNSR1pBS09Bd2gzNnhYcHhHZ2F5MXRGYWtDazNMZFV0azJzND0KLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tCg==
为满足北京金融科技产业联盟的调度层互联互通标准对算法组件接口的要求,interconnection-impl 支持 SS-LR 算法从环境变量读取配置参数
SS-LR 算法配置的环境变量如下表所示。环境变量设置可参考 ss-lr-env-alice.sh 和 ss-lr-env-bob.sh
若构建失败并提示 Host key verification failed,解决方式如下:
Host key verification failed
首先,向github账户添加SSH key
然后在本地执行以下指令(以选择 RSA 作为 SSH key 类型为例):
ssh-keyscan -t rsa github.com >> ~/.ssh/known_hosts
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802032778号
隐私计算平台互联互通协议参考实现
本仓库存放隐私计算平台互联互通协议参考实现的代码
构建
interconnection-impl 引用了 spu 仓库代码,需要根据 spu 构建前提在编译环境上安装好依赖库
然后执行以下构建指令:
运行 ECDH-PSI
命令行传参
本地同时执行以下两条指令:
环境变量传参
为满足北京金融科技产业联盟的调度层互联互通标准对算法组件接口的要求,interconnection-impl 支持 ECDH-PSI 算法从环境变量读取配置参数
当某个参数在环境变量和命令行选项都被指定时,优先选择读取环境变量参数
程序运行需要关闭握手过程:
ECDH-PSI 算法配置的环境变量如下表所示。环境变量设置可参考 ecdh-psi-env-alice.sh 和 ecdh-psi-env-bob.sh
运行 SS-LR
启动 Beaver 服务
运行 SS-LR 之前,需要先启动 Beaver 服务。Beaver 服务的代码位于 SPU 仓库中,需要将 SPU 代码克隆到本地并编译:
然后生成 Beaver 服务的公钥和私钥:
最后启动 Beaver 服务,将上一步生成的私钥通过命令行参数传递给 Beaver 服务:
命令行传参
启动 Beaver 服务后,本地同时执行以下两条指令,命令行参数包括上述 Beaver 服务生成的公钥:
环境变量传参
为满足北京金融科技产业联盟的调度层互联互通标准对算法组件接口的要求,interconnection-impl 支持 SS-LR 算法从环境变量读取配置参数
当某个参数在环境变量和命令行选项都被指定时,优先选择读取环境变量参数
程序运行需要关闭握手过程:
SS-LR 算法配置的环境变量如下表所示。环境变量设置可参考 ss-lr-env-alice.sh 和 ss-lr-env-bob.sh
FAQ
若构建失败并提示
Host key verification failed,解决方式如下:首先,向github账户添加SSH key
然后在本地执行以下指令(以选择 RSA 作为 SSH key 类型为例):