SSH 암호화는 어떻게 작동합니까?


34

클라이언트 호스트에서 2 개의 키 (개인 및 공개)를 생성하고 공개 키를 서버 호스트에 복사하는 것에 대해 읽었습니다.

내가 이해하는 것처럼 (잘못되면 수정하십시오) : 서버는 공개 키로 데이터를 암호화하여 클라이언트로 보내면 클라이언트는 개인 키로 해독합니다.

그러나 서버로 보내기 위해 클라이언트의 데이터를 암호화해야하는 경우 어떻게됩니까?

공개 키는 클라이언트의 데이터를 암호화합니까? 그러나 공개 키만있는 경우 서버는 어떻게 서버를 해독 할 수 있습니까?

SSH 암호화는 어떻게 작동합니까?

답변:


35

TCP 연결을 설정 한 후 첫 번째로 두 시스템 은 DH 키 교환 , ECDH 또는 GSSAPI 와 같은 프로토콜을 사용하여 세션 키 에 동의합니다 . 이 키는 대칭적이고 임시적입니다. 양쪽 모두 같은 키를 사용하여 AES 또는 RC4 와 같은 알고리즘을 사용하여 데이터를 암호화하고 해독합니다 .

클라이언트 키 쌍은 인증을 위해서만 데이터를 암호화하는 데 사용되지 않습니다. "publickey"는 클라이언트가 개인 키 소유권 증명과 함께 자체 공개 키를 제공하는 몇 가지 방법 중 하나입니다. 마찬가지로 서버 키 쌍은 DH 또는 ECDH 키 교환 중에 서버를 인증하는 데만 사용됩니다. 이를 사용하여 데이터가 암호화되지 않습니다.

SSH2 프로토콜은 다음을 포함하여 여러 RFC에 문서화되어 있습니다 .

  • RFC 4253 – SSH (Secure Shell) 전송 계층 프로토콜
  • RFC 4419 – Diffie-Hellman 그룹 교환
  • RFC 4432 – RSA 키 교환
  • RFC 4462 – GSSAPI 인증 및 키 교환

13

가장 먼저 이해해야 할 것은 SSH 및 SSL과 같은 많은 암호화 프로토콜이 인증 목적으로 PKI를 사용하지만 실제로는 페이로드 전송에 PKI를 사용하지 않는 시스템은 거의 없다는 것입니다.

PKI는 실제 페이로드 데이터를 전송하는 데 사용하기에는 CPU를 너무 많이 사용합니다. PKI를 사용하여 임의로 생성 된 키를 협상하고 대칭 암호화 프로토콜과 함께 사용할 수 있습니다. 사용되는 프로토콜도 협상되며 두 시스템이 동의 할 수있는 가장 강력한 프로토콜이어야합니다. 따라서 초기 핸드 셰이크 및 협상이 완료되면 거의 모든 것이 표준 대칭 암호화입니다.


2
자세한 내용은 15 페이지 RFC4253에 기본적으로 설명되어 있습니다 .
slhck

12

다음은 실용적인 예입니다. 키 A가 비밀로 유지되어 개인 키이고 키 B가 공개적으로 액세스 할 수있는 장소에 게시되어 공개 키라고 가정합니다.

따라서 모든 사람에게 메시지를 보내려는 경우 메시지가 사용자에게서 왔으며 배달되는 동안 변경되지 않았 음을 확인하려면 메시지를 보내고 키 A로 암호화 된 메시지의 해시를 포함시킵니다. 키 B는 해시를 해독하고 수신 한 메시지와 비교하고 메시지가 사용자에게서 온 것인지 확인합니다 (키 A를 가진 사람 만 해시를 성공적으로 해독 한 암호화 된 페이로드를 생성 할 수 있었기 때문에 키 A를 가진 유일한 사람은 당신 에게서만 나올 수 있습니다). 이것을 서명이라고 합니다.

이제 누군가가 당신에게 비밀 메시지를 보내려고하지만 자신이 누구인지 밝히고 싶지 않다고 말합시다. 그들은 Zoredache가 대칭을 언급하는 것이 훨씬 저렴하기 때문에 대칭 키로 메시지를 암호화 한 다음 해당 키를 가져 와서 키 B로 암호화하여 보낼 수 있습니다. 키 A만이 키 B로 암호화 된 것을 해독 할 수 있기 때문에 다른 사람이 귀하에게 전송 된 메시지의 내용을 볼 수 없습니다. 이것이 일반적인 암호화 작동 방식과 SSH가 데이터를 교환하는 방식입니다.


3

다음 은 개인-공개 키 암호화 작동 방식에 대한 수학에 대한 비교적 접근 가능한 설명입니다.

BBC의 더 기본적인 설명이 여기에 있습니다 .


나는이 과정과 역사를 설명하는 BBC에 새로운 링크를 추가했다.
Chogg

1

당신은 쓰기

"공개 키는 클라이언트의 데이터를 암호화합니까? 그러나 공개 키만있는 경우 서버는 어떻게 데이터를 해독 할 수 있습니까?"

나는 그것에 대해 많이 알지 못하지만 그에 대해 명확하게 대답 할 수 있다고 생각합니다.

A가 B에게 메시지를 보내려면 A는 B의 공개 키를 사용합니다. 이것이 B가 암호를 해독 할 수있는 방법입니다.

A가 자신의 공개 키를 사용하여 메시지를 암호화 한 경우 실제로 B는 메시지를 해독 할 수 없습니다.

여기에 설명되어 있습니다

http://www.comodo.com/resources/small-business/digital-certificates2.php

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.