Amazon이 공개 키 대신 개인 키를 출시하는 이유는 무엇입니까?


20

내 뇌는 공개 키와 개인 키로 차축을 감싸고 있습니다. Amazon EC2 서비스에서 클라우드 서버 (인스턴스)를 생성 한 다음 SSH를 통해 연결하려는 경우 Amazon은 개인 키를 다운로드하여 연결해야합니다. 공개 / 개인 키 뒤에있는 아이디어는 아마존이 공개 키를 다운로드해야한다고 제안하지 않습니까?

또한 고객이 사용할 SFTP 서버를 설정 한 경우 서버에 키를 설치하거나 서버에서 키를 제공해야합니까? 두 경우 모두 공개 키 또는 개인 키 여야합니까?


1
EC2에 익숙하지 않은 사람들을 위해 Amazon에서 개인 키를 다운로드해야합니까?
Zoredache

2
Amazon EC2에 클라우드 서버를 설정 한 다음 SSH를 통해 연결하려는 경우 Amazon 콘솔을 사용하여 연결하는 데 사용하는 개인 키를 다운로드 할 수 있습니다. 물론 키를 보호해야합니다.
세스

@Zoredache 공정성에서 그것은 옵션입니다. Windows 상자에서 빠르게 도구를 사용하려는 사람은 이전에 OpenSSH를 사용한 적이 없었기 때문에 빠른 시작입니다.
ceejayoz

답변:


36

인증 프로세스에 대해 더 깊이 생각하면 비밀을 유지해야하는 것은 무엇입니까? 아마존은 공개 키의 절반을 알고 있으며 누구나 공개 절반을 알 수 있습니다. 키 쌍의 공개 절반은 개인 절반과 일치 할 때 개인 절반이 인증에 사용되었음을 나타냅니다.

Amazon이 사용자를 위해 키 페어를 생성 할 때 제공되는 개인 키는 자신이 보유한 유일한 키인 경우에만 유용합니다. 그것이 비밀이 아니라면, 그것을 아는 사람은 공개적으로 키 페어의 절반을 보유한 사람을 인증 할 수 있습니다.

인증을받는 사람은 개인 절반을 보유해야합니다 . 세계의 모든 사람이 공개 키의 절반을 잡고 당신을 인증 할 수 있다면 괜찮습니다. 그러나 오직 당신 만이 개인 절반을 통제해야합니다.


18

Amazon은 키 생성 서비스를 제공합니다. 일부 운영 체제 (기침, Windows, 기침)로 인해 SSH 키쌍을 쉽게 생성 할 수 없을 수도 있습니다.

SSH (및 SFTP)를 사용하면 EC2 인스턴스가 시작될 때 퍼블릭 키가 사용자의 authorized_keys 파일에 설치됩니다. 개인 키는 사용자 만 보유하며 서버에 대한 인증을 위해 제공됩니다.

다음 문서에서 :

http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-CreateKeyPair.html

Amazon은 서버에서 키 페어를 생성하고 HTTPS를 통해 개인 키를 전송하는 것으로 보입니다. 이것은 아마도 완벽하지는 않지만 (이상적으로, 당신과 다른 사람은 개인 키를 소유하지 않을 것입니다), 그러나 이것이 모두 인증 된 세션의 맥락에서 발생하고 오직 당신 (그리고 아마존)이 볼 수 있다는 것을 감안할 때 아마도 그렇게 믿지 않을 것입니다 개인 키 개인 키를 엄격하게 비공개로 유지하면서 EC2 사용을 위해 항상 자체 공개 키를 생성 및 업로드 할 수도 있습니다.

키 인증을 위해 SFTP 사용자를 설정하려면 시스템에서 SSH 키를 생성해야합니다. 키 쌍을 생성 한 후에는 관련 인증 된 _ 키 파일에 설치할 공개 키만 보내야합니다. 이름에서 알 수 있듯이 개인 키는 개인 키입니다.


5
Windows 컴퓨터에서 정기적으로 키 페어를 생성합니다. Windows 자체가 아니라 설치된 소프트웨어를 사용하여 완료되었지만 어렵지 않습니다.
Dominic Cronin

2
도미니크와 동의 함. CLI를 사용하여 평균 Windows 사용자가 두려워하고 잃어 버렸으며 Windows에는 여전히 "SSH 키로 로그인"옵션이 없습니다.
HopelessN00b

예, 동의했습니다. Cygwin 등을 openssh와 함께 사용하므로 모든 것이 깨끗하게 작동합니다. 이 작업을 수행하는 대부분의 Windows 사용자는 PuTTY를 사용하고 일부 키 변환을 수행해야한다고 생각합니다. 더 많은 단계입니다.
cjc

1
나는 실제로 아마존을 사용한 적이 없지만 창을 비난하는 대신 아마존이 열쇠를 보내는 이유는 그들이 당신에게 로그인 할 키를주지 않으면 어떻게 로그인하여 대중을 설치하기 때문이라고 가정합니다. 처음에 키?
DerfK

1
@DerfK 고유 한 공개 키를 제출하고 새 EC2 인스턴스에 설치하도록 선택할 수 있습니다. 특정 키를 선택하는 것은 인스턴스 생성 프로세스의 일부입니다.
cjc

2

공개 키 인증은 생각과 반대 방향으로 작동합니다. 공개 키는 메시지를 암호화하고 개인 키는 메시지를 해독합니다. 서버는 계정 소유자의 공개 키를 저장하고이를 사용하여 메시지를 암호화합니다. 개인 키 소유자 만 해당 메시지를 해독 할 수 있습니다.

공개 키로 암호화 된 비밀을 누군가에게 보내면 해당 비밀이 무엇인지 말해 줄 수 있으면 일치하는 개인 키를 보유하고 있다는 것을 알 수 있습니다. 그런 다음 사용자가 인증됩니다.

AWS는 보안상의 이유로 개인 키를 저장하지 않으므로 다운로드하여 저장해야합니다. 프라이빗 키는 AWS의 어느 곳에도 저장되지 않으므로 EC2 인스턴스가 안전하다고 확신 할 수 있습니다.


1

어떤 의미에서는 중요하지 않습니다. 개인 / 공개 키 쌍은 두 부분으로 구성되며 그 중 공개 키는 사용자에게 달려 있습니다. 하나의 키로 무언가를 암호화 한 경우 다른 하나의 키로 해독해야합니다. 하나의 키를 다른 키가 아닌 공개적으로 게시 한 경우 개인 키는 게시하지 않은 키입니다.

실제 질문에 도달하기 : 아마 아마존이 제공하는 핵심은 자신의 리소스를 제어 할 수있게하는 것이므로 다른 사람에게 제공해서는 안됩니다. 이러한 맥락에서 적어도 개인 키를 설정하려면 Amazon을 신뢰해야합니다.

고객이 이러한 방식으로 로그인하도록하려면 고객과 공유 할 수있는 키를 제공해야하므로 공개 키가 필요합니다. authorized_keys의 서버에이를 설치합니다. "공개 키와 일치하는 개인 키를 가진 사람은이 리소스에 액세스 할 수 있습니다"라고 효과적으로 말합니다.


1
음, 사실이 아닙니다. 최소한 RSA / DH에서는 공개 키로 암호화하고 개인 키로 해독하면 다른 방법으로 작동하지 않습니다. 서명은 암호화 / 암호 해독과 다릅니다.
Zoredache

1
@ErikA 아니요, 공개 키는 개인 키에서 파생 될 수 없습니다. 개인 키 파일 에는 종종 두 키가 모두 포함됩니다. 정말로 토론에 참여하고 싶다면 crypto.stackexchange.com을 제안 합니다 . 이러한 사람들은 RSA 키의 실제 차이점과 공개 키와 개인 키 중 어떤 키가 동전의 임의적 인 플립이 아닌지에 대한 자세한 내용을 제공 할 수 있습니다.
Jeff Ferland

@ Zoredache-몰랐습니다 : 감사합니다. 당신은 좋은 참조에 대한 링크가 있습니까?
Dominic Cronin

en.wikipedia.org/wiki/Asymmetric_key_algorithm- 하나의 키는 평문을 잠 그거나 암호화하고 다른 하나는 암호문을 잠금 해제하거나 해독합니다. 두 키 모두 두 기능을 모두 수행 할 수는 없습니다. - en.wikipedia.org/wiki/RSA_(algorithm은) - RSA는 공개 키와 개인 키를 포함한다. 공개 키는 모든 사람에게 알 수 및 메시지를 암호화하는 데 사용됩니다 . 공개 키로 암호화 된 메시지는 개인 키를 통해서만 해독 할 수 있습니다.
Zoredache

이 두 참조 중 어느 것도 @Zoredache의 말을 암시하지 않습니다. 물론 , 어떤 키가 개인 키이고 어떤 키가 공개인지 결정하면 키 사용 방식이 결정됩니다. 키 생성 시점에서이 결정은 아직 이루어지지 않았습니다. 가치가있는 경우 서명에 대한 논리는 서명 암호화 가 필요하므로 전적으로 암호화에 대한 논리에 달려 있습니다 .
Dominic Cronin
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.