SuperNodes 인증하기#

Flower는 SuperLink에 연결하는 각 SuperNodes의 신원을 확인하는 데 사용할 수 있는 인증된 SuperNodes에 대한 기본 지원을 제공합니다. Flower 노드 인증은 GitHub SSH 인증 방식과 유사하게 작동합니다:

  • SuperLink(서버)는 알려진 (클라이언트) 노드 공개키 목록을 저장합니다

  • SuperNode와 SuperLink는 ECDH를 사용하여 독립적으로 공유된 비밀을 도출합니다

  • 비밀 공유는 SuperNode에서 SuperLink로 토큰으로 전송된 메시지의 HMAC 값을 계산하는 데 사용됩니다

  • SuperLink가 토큰을 확인합니다

인증된 환경에서 Flower로 연합 학습을 시연하는 전체 ‘코드 예제 <https://github.com/adap/flower/tree/main/examples/flower-authentication>`_를 확인하는 것이 좋습니다.

참고

이 가이드에서는 향후 버전의 Flower에서 변경될 수 있는 미리보기 기능에 대해 설명합니다.

참고

보안을 강화하기 위해 노드 인증은 암호화된 연결(SSL/TLS)을 사용하도록 설정한 경우에만 사용할 수 있습니다.

:code:`SuperNode`에서 노드 인증을 활성화합니다#

장기 실행 중인 Flower 서버(SuperLink)와 마찬가지로, 장기 실행 중인 Flower 클라이언트(SuperNode)에서도 노드 인증을 쉽게 활성화할 수 있습니다. 다음 터미널 명령을 사용하여 인증된 :code:`SuperNode`를 시작하세요:

flower-client-app client:app
    --root-certificates certificates/ca.crt
    --superlink 127.0.0.1:9092
    --auth-supernode-private-key keys/client_credentials
    --auth-supernode-public-key keys/client_credentials.pub

--auth-supernode-private-key 플래그는 노드의 개인 키 파일 경로를, --auth-supernode-public-key 플래그는 노드의 공개 키 파일 경로를 예상합니다. 개발 목적으로 :code:`ssh-keygen -t ecdsa -b 384`를 사용하여 개인 및 공개 키 쌍을 생성할 수 있습니다.

보안 공지#

시스템의 보안은 SuperLink와 각SuperNode의 자격 증명에 의존합니다. 따라서 공개키 기반구조(PKI) 사칭 공격과 같은 보안 위험을 피하기 위해 자격 증명을 보호하고 안전하게 보관하는 것이 필수적입니다. 노드 인증 메커니즘에는 사람의 상호 작용도 포함되므로 모든 통신이 신뢰할 수 있는 통신 방법을 사용하여 안전한 방식으로 이루어지도록 하세요.

결론#

이제 노드 인증이 활성화된 상태에서 장기간 실행되는 Flower 서버(SuperLink)와 클라이언트(SuperNode)를 시작하는 방법을 배웠을 것입니다. 또한 보안 위험을 최소화하기 위해 개인키의 중요성을 알고 안전하게 보관해야 합니다.