0 / 0
영어 버전 문서로 돌아가기
보안 및 개인정보 보호를 위해 동형 암호화 적용
마지막 업데이트 날짜: 2024년 6월 24일
보안 및 개인정보 보호를 위해 동형 암호화 적용

연합 학습은 연합 훈련 데이터에 대한 추가적인 보안 수단으로 동형 암호화를 지원합니다. 동형 암호화는 암호화된 데이터를 먼저 복호화하지 않고도 암호화된 데이터에 대한 계산을 가능하게 하는 공개 키 암호화의 한 형태입니다. 즉, 데이터를 발견 위험에 노출하지 않고 모델링에 사용할 수 있습니다.

동형 암호화를 사용하면 계산 결과가 암호화된 양식으로 유지되고 복호화될 때 암호화되지 않은 데이터에 대해 수행된 계산으로 생성된 출력과 동일한 출력이 생성됩니다. 암호화를 위해 공개 키를 사용하고 복호화를 위해 개인 키를 사용합니다.

연합 학습에 대한 작업 방법

동형 암호화는 연합 학습 실험에 추가 보안 및 개인정보 보호정책을 추가하기 위한 선택적 암호화 방법입니다. 연합 학습 실험에서 동형 암호화가 적용되면 당사자는 동형으로 암호화된 모델 업데이트를 집계자에게 전송합니다. 집계기에는 개인 키가 없으며 동형으로 암호화된 모델 업데이트만 볼 수 있습니다. 예를 들어, 집계기는 당사자의 훈련 데이터에 대한 정보를 발견하기 위해 모델 업데이트를 리버스 엔지니어링할 수 없습니다. 집계기는 모델 업데이트를 암호화된 양식으로 융합하여 집계된 모델을 암호화합니다. 그런 다음 집계자는 복호화를 위해 개인 키를 사용하고 다음 훈련 라운드를 계속할 수 있는 참여 당사자에게 암호화된 집계 모델을 전송합니다. 참여 당사자만 모델 데이터를 복호화할 수 있습니다.

지원되는 프레임워크 및 융합 메소드

완전 동형 암호화 (FHE) 는 다음 모델 프레임워크에 대해 단순 평균 융합 방법을 지원합니다.

  • Tensorflow
  • Pytorch
  • scikit-learn 분류
  • scikit-learn 회귀

시작하기 전에

동형 암호화 사용을 시작하려면 실험이 다음 요구사항을 충족하는지 확인하십시오.

  • 하드웨어 스펙은 최소 소형이어야 합니다. 적용하는 암호화 레벨에 따라 더 강력한 데이터 암호화로 인한 자원 이용을 수용하기 위해 더 큰 하드웨어 스펙이 필요할 수 있습니다. 집계자 구성의 암호화 레벨 테이블을 참조하십시오. - 소프트웨어 스펙은 fl-rt23.1-py3.10입니다.

  • FHE는 Python 클라이언트 버전 1.0.263 이상에서 지원됩니다. 모든 당사자는 동일한 Python 클라이언트 버전을 사용해야 합니다.

당사자의 요구사항

각 당사자는 다음을 수행해야 합

  • Linux x86 시스템에서 실행하십시오.
  • 모든 당사자에게 동일한 인증 기관을 식별하는 루트 인증서를 사용하여 구성하십시오.
  • 다음 표에 설명된 속성을 사용하여 RSA 공개 및 개인 키 쌍을 구성하십시오.
  • 인증 기관에서 발행한 당사자의 인증서를 사용하여 구성하십시오. RSA 공개 키는 당사자의 인증서에 포함되어야 합니다.
참고: 자체 서명 인증서를 사용하도록 선택할 수도 있습니다.

동형 공용 및 개인용 암호화 키는 각 실험의 당사자 간에 자동으로 안전하게 생성되고 분배됩니다. 실험에 참여하는 당사자만 실험에 대해 생성된 개인 키에 액세스할 수 있습니다. 자동 생성 및 분배 메커니즘을 지원하려면 당사자가 이전에 지정된 인증서 및 RSA키로 구성되어야 합니다.

RSA키 요구사항

테이블 1. RSA키 요구사항
속성 요구사항
키 크기 4096비트
공용 지수 65537
비밀번호 없음
해시 알고리즘 SHA256
파일 형식 키 및 인증서 파일은 "PEM" 형식이어야 합니다.

집계자 (admin) 구성

연합 학습 실험을 작성할 때 다음 단계를 수행하십시오.

  1. 구성 탭에서 "동형 암호화 사용" 을 토글하십시오.
  2. 하드웨어 스펙에 대해 소형 이상을 선택하십시오. 적용하는 암호화 레벨에 따라 동형 암호화를 위한 자원 이용을 수용하기 위해 더 큰 하드웨어 스펙이 필요할 수 있습니다.
  3. 모델 사양에 대한 모델 파일을 선택할 때 암호화되지 않은 초기 모델을 업로드해야 합니다.
  4. Fusion method에 대해 "Simple average (encrypted)" 를 선택하십시오. 다음을 클릭하십시오.
  5. 하이퍼 매개변수 정의 탭에서 고급 표시 를 선택하십시오.
  6. 암호화 레벨에서 암호화 레벨을 선택하십시오.
    암호화 레벨이 높을수록 보안 및 정밀도가 증가하고 더 높은 자원 소비 (예: 계산, 메모리, 네트워크 대역폭) 가 필요합니다. 기본값은 암호화 레벨 1입니다.
    암호화 레벨에 대한 설명은 다음 표를 참조하십시오.
암호화 레벨 및 보안과 정밀도 향상
레벨 보안 정밀도
1 높음 보통
2 높음 높음
3 매우 높음 보통
4 매우 높음 높음

보안 은 일반적으로 공격자가 암호화를 중단하기 위해 수행해야 하는 조작 수로 측정되는 암호화의 강도입니다.
정밀도 는 암호화 시스템 결과의 정밀도입니다. 정밀도 레벨이 높을수록 암호화로 인한 모델의 정확도 손실이 줄어듭니다.

집계자 (당사자) 에 연결

다음 단계에서는 동형 암호화에 필요한 구성만 표시합니다. 연합 학습에서 동형 암호화 사용에 대한 단계별 학습은 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. 구성 후에 당사자 커넥터 스크립트를 실행하십시오.

추가 자원

상위 주제: 연합 학습

일반적인 AI 검색 및 응답
이러한 응답은 제품 문서의 컨텐츠를 기반으로 하는 watsonx.ai 의 대형 언어 모델에 의해 생성됩니다. 자세히 알아보기