2012-06-09 2 views
16

대부분의 위키 문서는 클라이언트 브라우저가 공개 키 (인증서)를 사용하여 중요한 데이터 (예 : 사용자 이름/암호)를 암호화하고이 암호화 된 데이터를 서버로 보내는 방법을 설명합니다. 서버는 개인 키를 사용하여 암호를 해독합니다. 나는이 부분을 얻는다. 그러나 서버가 데이터를 암호화하고 브라우저로 다시 보내는 방법을 말하는 명확한 정보는 없습니다.SSL은 서버에서 클라이언트로 데이터를 어떻게 암호화합니까?

는 예를 들어 내 온라인 뱅킹을 사용

(0) 나는 이미 내 온라인 뱅킹에서 받아 신뢰할 수있는 인증서 (공개 키). SSL의 URL을 통해

(1), 내 브라우저 방문 https://myonlinebanking.com

(2) 내가 로그인하는 사용자 이름/암호를 입력했습니다. 이 데이터는 암호화되어 있기 때문에 중간자는 무의미한 데이터 만 볼 수 있습니다.

(3) 은행 웹 서버가 암호화 된 데이터를 수신하고 개인 키를 사용하여 개인 데이터를 해독하고 계정을 성공적으로 인증합니다.

내 질문은 다음과 같습니다.

은행에서 데이터를 어떻게 전송합니까? 은행은 응답 데이터를 어떤 키로 암호화합니까? "공개 키"로 암호화 된 뱅크의 경우 중간 사람이 볼 수있는 것처럼 볼 수 있습니다. 그래서 중간자는 내 사용자 이름/비밀번호를 모르지만 여전히 내 계정 잔액을 볼 수 있습니까?

도움 주셔서 감사합니다.

+1

이것은 주제와 관련이 없습니다. 프로그래밍 문제가 있다면 stackoverflow가 완벽합니다. 보안 또는 암호 관련 질문이있는 경우 필요에 따라 stackexchange 사이트가 있습니다. 어떤 위키 기사를 읽었는지는 언급하지 않지만 [TLS에 관한 위키 피 디아 기사] (http://en.wikipedia.org/wiki/Transport_Layer_Security)가 확실히 귀하의 질문에 대답합니다. –

+0

@ 시몬 이것은 내가 물어 보려고했던 완벽한 질문이다. (사실 나는 물었다.) 그러나 당신이 받아 들인 답변이 실제로 "공개 키"로 암호화되어 있다면, 중간자는 내가 볼 수있는 것처럼 그것을 볼 수 있다는 것을 이해합니다. 그래서 중간자는 ' 내 사용자 이름/비밀번호를 알지만 계정 잔액은 계속 볼 수 있습니까? " 네가 맞으면 대답에서 다음 진술을 설명 할 수 있니? "브라우저가 인증서가 정확한 호스트와 연결되어 있는지 확인합니다." – Darshan

답변

7

TLS handshake 프로세스는 잠재적 (상세는 클라이언트/서버 간의 협상 된 정확한 알고리즘에 의존하는) 공정에서 비대칭 암호화를 사용하는 쌍방 간의 대칭 키를 설정한다. 이렇게하면 단방향 일뿐만 아니라 양방향으로 통신이 암호화됩니다.

그러나 MITM에서 궁극적으로 당신을 보호하는 것은 브라우저가 어떤 형태의 호스트 이름 유효성 검사를한다는 사실입니다. 핸드 셰이크에서 서버가 제공 한 인증서의 유효성을 먼저 확인합니다. 성공하면 브라우저는 인증서가 발언중인 정확한 호스트에 바인딩되어 있는지 확인합니다. 이 검사가 생략되면, 나머지 암호화가 모든 암호화 요소를 포함하여 프로토콜을 엄격하게 따름에도 불구하고 MITM 공격은 계속 성공합니다. 공격자는 단순히 어떤 호스트로 가장하여 나머지 프로토콜을 충실하게 실행할 수 있습니다. 차이점을 알지 못할 것입니다.

+3

TLS 핸드 셰이크가 서버 응답을 어떻게 암호화하는지 자세히 설명해 주시겠습니까? 그리고 만약 그렇다면 클라이언트가 어떻게 해독합니까? – supertonsky

6

당신은 몇 가지 잘못된 가정이 있습니다

  • 는 HTTP 데이터는 항상 서버
  • 로 전송하기 위해, 서버의 공개 키로 암호화되지 않은 서버의 공개 키는 단지 사용 (대칭 암호화)
  • 모든 통신은 클라이언트 (브라우저)와 서버가 동일한 비밀 키를 사용하는 비밀 키 또는 대칭 키 암호화를 통해 수행됩니다. 데이터를 암호화하고 해독합니다.

TLS (전송 계층 보안) 프로토콜은 비대칭 암호화 (공개 키)와 대칭 암호화 (보안 키)의 조합을 사용합니다. 은행과의 주요 통신은 비대칭 암호화를 사용하여 세션 키 (보안 키)가 TLS 핸드 셰이 킹 중에 안전하게 설정되는 대칭 암호화를 사용하는 것입니다.

이 링크는 모두 TLS (전송 계층 보안) 핸드 셰이크에 있으며이 링크는 here에 설명되어 있습니다.

+0

세션 키는 절대로 암호화되지 않으며 전송되지 않습니다. 항상 협상됩니다. RFC 2246 # 8.1. – EJP

관련 문제