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)을 사용하도록 설정한 경우에만 사용할 수 있습니다.

Enable node authentication in SuperNode

Similar to the long-running Flower server (SuperLink), you can easily enable node authentication in the long-running Flower client (SuperNode). Use the following terminal command to start an authenticated SuperNode:

flower-supernode
     --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

The --auth-supernode-private-key flag expects a path to the node’s private key file and the --auth-supernode-public-key flag expects a path to the node’s public key file. For development purposes, you can generate a private and public key pair using ssh-keygen -t ecdsa -b 384.

보안 공지

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

결론

You should now have learned how to start a long-running Flower server (SuperLink) and client (SuperNode) with node authentication enabled. You should also know the significance of the private key and store it safely to minimize security risks.