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 SuperLink
¶
To enable node authentication, first you need to configure SSL/TLS connections to secure
the SuperLink<>SuperNode communication. You can find the complete guide here. After
configuring secure connections, you can enable client authentication in a long-running
Flower SuperLink
. Use the following terminal command to start a Flower SuperNode
that has both secure connections and node authentication enabled:
flower-superlink
--ssl-ca-certfile certificates/ca.crt
--ssl-certfile certificates/server.pem
--ssl-keyfile certificates/server.key
--auth-list-public-keys keys/client_public_keys.csv
--auth-superlink-private-key keys/server_credentials
--auth-superlink-public-key keys/server_credentials.pub
인증 플래그를 세분화해 보겠습니다:
The first flag
--auth-list-public-keys
expects a path to a CSV file storing all known node public keys. You need to store all known node public keys that are allowed to participate in a federation in one CSV file (.csv
).알려진 노드 공개키를 저장하는 유효한 CSV 파일은 쉼표로 구분하고 주석 없이 OpenSSH 형식으로 키를 나열해야 합니다. 예를 들어, 두 개의 알려진 노드 공개키가 포함된 CSV 파일이 포함된 코드 샘플을 참조하세요.
The second and third flags
--auth-superlink-private-key
and--auth-superlink-public-key
expect paths to the server’s private and public keys. For development purposes, you can generate a private and public key pair usingssh-keygen -t ecdsa -b 384
.
참고
Flower 1.9에서는 알려진 노드 공개키를 SuperLink에 동적으로 제거, 편집 또는 추가하는 기능이 지원되지 않습니다. 알려진 노드 집합을 변경하려면 서버를 종료하고 CSV 파일을 편집한 다음 서버를 다시 시작해야 합니다. 알려진 노드 집합을 동적으로 변경하는 기능은 Flower 1.10(출시 예정일: 6월)에서 로드맵에 포함되어 있습니다.
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.