0 / 0
Go back to the English version of the documentation
应用同构加密以实现安全和隐私
Last updated: 2024年6月21日
应用同构加密以实现安全和隐私

联合学习支持同态加密,作为联合训练数据的额外安全性度量。 同构加密是一种公用密钥密码术,它允许对已加密的数据进行计算而不首先对其进行解密,这意味着数据可以在建模时使用,而不会使其面临发现的风险。

通过同构加密,计算结果保持为加密形式,当解密时,会产生与对未加密数据执行的计算所产生的输出相同的输出。 它使用公用密钥进行加密,并使用专用密钥进行解密。

如何使用 Federated Learning

同构加密是一种可选加密方法,用于向 Federated Learning 试验添加其他安全性和隐私。 在 Federated Learning 试验中应用同构加密时,各方会将其同构加密模型更新发送到聚集器。 聚集器没有专用密钥,只能查看同构加密的模型更新。 例如,聚集器无法对模型更新进行反向工程,以发现有关参与方训练数据的信息。 聚集器会以其加密形式对模型进行更新,从而生成加密的聚集模型。 然后,聚集器将加密的聚集模型发送给参与方,这些参与方可以使用其专用密钥进行解密,并继续进行下一轮训练。 只有参与方才能解密模型数据。

支持的框架和融合方法

完全同构加密 (FHE) 支持这些模型框架的简单平均融合方法:

  • Tensorflow
  • Pytorch
  • Scikit-learn 分类
  • Scikit-learn 回归

准备工作

要开始使用同构加密,请确保实验满足以下要求:

  • 硬件规范必须至少为 small。 根据应用的加密级别,您可能需要更大的硬件规范以适应由更强大的数据加密所导致的资源消耗。 请参阅 配置聚集器中的加密级别表。-软件规范为 fl-rt23.1-py3.10

  • FHE 在 Python 客户机版本 1.0.263 或更高版本中受支持。 所有参与方都必须使用相同的 Python 客户机版本。

对各方的要求

各方必须:

  • 在 Linux x86 系统上运行。
  • 使用根证书进行配置,该证书标识对所有参与方都统一的认证中心。
  • 使用下表中描述的属性配置 RSA 公用和专用密钥对。
  • 使用认证中心颁发的参与方证书进行配置。 RSA 公用密钥必须包含在参与方的证书中。
注: 您还可以选择使用自签名证书。

对于每个试验,将自动生成同构公用和专用加密密钥,并在各方之间安全地分发这些密钥。 只有参与试验的各方才能访问为试验生成的专用密钥。 要支持自动生成和分发机制,必须使用先前指定的证书和 RSA 密钥来配置参与方。

RSA 密钥要求

表 1. RSA 密钥要求
属性 需求
密钥大小 4096 位
公共指数 65537
密码
散列算法 SHA256
文件格式 密钥和证书文件必须为 "PEM" 格式

配置聚集器 (admin)

创建 Federated Learning 试验时,请执行以下步骤:

  1. 配置 选项卡中,切换 "启用同构加密"。
  2. 针对 硬件规范选择 小型 或更高版本。 根据您应用的加密级别,您可能需要更大的硬件规范来适应同构加密的资源消耗。
  3. 选择 模型规范的模型文件时,请确保上载未加密的初始模型。
  4. 对于 融合方法,选择 "简单平均值 (已加密)"。 单击下一步
  5. 选中 定义超参数 选项卡中的 显示高级
  6. 加密级别中选择加密级别。
    更高的加密级别可提高安全性和精度,并且需要更高的资源消耗 (例如,计算,内存和网络带宽)。 缺省值为加密级别 1。
    请参阅下表以获取加密级别的描述:
提高加密级别以及安全性和精度
级别 安全性 精度
1
2
3 非常高
4 非常高

安全性 是加密的强度,通常由攻击者为破坏加密而必须执行的操作数来度量。
精度 是加密系统结果的精度。 更高的精度级别可减少由于加密而导致的模型准确性损失。

连接到聚集器 (参与方)

以下步骤仅显示同构加密所需的配置。 有关在 Federated Learning 中使用同构加密的逐步教程,请参阅 FHE 样本

要了解如何创建常规端到端参与方连接器脚本,请参阅 连接到聚集器 (参与方)

  1. 使用以下命令安装带有 FHE 的 Python 客户机:
    pip install 'ibm_watsonx_ai[fl-rt23.1-py3.10,fl-crypto]'

  2. 按如下所示配置参与方:

    party_config = {
        "local_training": {
            "info": {
                "crypto": {
                    "key_manager": {
                        "key_mgr_info": {
                            "distribution": {
                                "ca_cert_file_path": "path of the root certificate file identifying the certificate authority",
                                "my_cert_file_path": "path of the certificate file of the party issued by the certificate authority",
                                "asym_key_file_path": "path of the RSA key file of the party"
                                } 
                            }  
                        }  
                    }  
                }  
            }  
        }
    }
    
  3. 配置后运行参与方连接器脚本。

其他资源

父主题: Federated Learning

Generative AI search and answer
These answers are generated by a large language model in watsonx.ai based on content from the product documentation. Learn more