2011-01-13 3 views
0

포트 1234에서 수신 대기하는 서버가 있다고 가정 해 봅시다.이 포트에 연결할 수 있어야하는 클라이언트 소프트웨어가 있습니다. 하지만 악의적 인 사용자가 클라이언트 소프트웨어를 우회하여 콘솔이나 다른 소프트웨어와 같은 다른 방법으로 포트에 연결하는 것을 방지하고 싶습니다.안전한 방법으로 클라이언트 연결을 인증하려면 어떻게해야합니까?

신뢰할 수있는 클라이언트 소프트웨어와 서버는 필요한 경우 비밀 키를 공유 할 수 있습니다. 그런 키를 일반 텍스트로 보내지 않기를 원하지만 인증 후 데이터는 일반 텍스트 일 ​​수 있습니다. 특히 악의적 인 사용자가 신뢰할 수있는 클라이언트 소프트웨어를 사용하여 서버 문제에 대한 올바른 응답을 계산하는 중간자 (man-in-the-middle) 공격을 없애는 방법을 알아 내려고합니다.

여기에서 갈 수 있습니까?

서버의 수신 대기 포트를 localhost에만 바인드 할 수 있으므로 클라이언트가 먼저 ssh를 통해 시스템에 액세스해야합니다. 그런 다음 클라이언트 소프트웨어는 ssh 라이브러리를 사용하여 로컬 포트에 연결하는 서버에서 명령을 실행할 수 있습니다 (이 시나리오에서 악의적 인 사용자는 암호가 없으므로 ssh를 사용하여 시스템에 액세스 할 수 없습니다). 하지만 모든 트래픽이 암호화되므로 추가 오버 헤드가 발생합니다. 아마도 ssh와 비슷한 프로그램이 인증을 수행하지만 그 후에는 채널을 일반 텍스트로 남겨 둘 수 있습니까?

업데이트 :

나는 모든 트래픽을 암호화와 관련된 오버 헤드를 결정하기 위해 테스트를 실행했습니다.

spew.rb는 100 만 줄을 출력합니다.

CONTROL :

[email protected]> time ssh localhost /home/fantius/spew.rb > /dev/null 

real 0m40.704s 
user 0m19.981s 
sys  0m1.400s 

최고 도시 45 % CPU 사용률 (약 2 :

[email protected]> time /home/fantius/spew.rb > /dev/null 

real 0m35.015s 
user 0m34.934s 
sys  0m0.084s 

톱 (4 개 개의 코어 중 하나 개의 전체 코어) 25 %의 CPU 사용률

TEST를 도시 전체 코어)

그래서 나는 모든 것을 암호화하는 비용 최소한입니다. 이것은 매우 데이터가 많이 걸리는 테스트입니다.

답변

0

링크를 보호하기 위해 수행하는 작업은 모두 파괴 될 수 있습니다. SSL을 사용하여 링크가 스니핑되지 않도록 할 수 있으며 앱에 키를 내장 할 수 있습니다. 그러나 그 열쇠는 사용자의 손에 달려있어 추출 할 수 있습니다 (아무리 열심히 숨기더라도). 대부분의 경우 악의적 인 사용자가 원격 응용 프로그램을 에뮬레이트/대체/무시할 수 있도록 "어렵게"만들 수 있습니다. 불가능하게 만들 수는 없습니다.

SSL 오버 헤드는 일반적으로 나중에 실제로 데이터를 전송하는 것보다 초기 핸드 셰이크에 더 높은 오버 헤드가 있습니다. 링크를 열어두면 핸드 셰이크 오버 헤드가 1 회성 세션이되며 긴 세션에서는 관련성이 없습니다. 키가 재협상되는 경우 가끔씩 오버 헤드가 발생하지만 장기적인 관점에서 볼 때 키가 작습니다.

man-in-the-middle의 경우 사용자가 할 수있는 일이 거의 없습니다. 은행은 이미 사람들의 계정을 고갈시키는 트로이 목마가 마른 것처럼 충분한 문제를 가지고 있습니다. 누군가 중간에 있다면, 그들은 그들이 원하는대로 할 수 있습니다. 충분한 모니터링을 통해 통신 프로토콜 전체를 복제하고 앱을 복제 할 수 있습니다.

+0

바이너리에서 비밀 키를 추출 할 수 있다면 완전히 액세스 할 수 있습니다.ssh는 man-in-the-middle 공격에 다소 저항합니다. 적어도 클라이언트가 서버가 발행 한 문제를 해결할 것을 요구하는 단순한 시스템 이상입니다. 그러나 나는 그 추가적인 저항의 본질을 모른다. – Fantius

+0

침입자가 사용자 시스템에있는 경우 TCP 스택에 자신을 삽입하고 SSL 계층에 도달하기 전에 데이터 스트림을 캡처 할 수 있습니다. "중간"은 정확한 중간을 의미하지 않으며 두 종점 사이의 모든 위치를 의미합니다. 귀하의 서버에 침입자가 들어간다. SSL 레이어에서 나오는 데이터를 캡처 할 수 있습니다. –

+0

http://en.wikipedia.org/wiki/Secure_Shell#Security_issues에 따르면 이전 SSH는 새로운 SSH보다 MITM에 더 취약합니다. 이해하려는 MITM에 대한 새로운 저항입니다. – Fantius

관련 문제