2011-03-22 4 views
3

저장된 데이터가 암호화되어있어 응용 프로그램 만 읽을 수 있도록 응용 프로그램을 만들고 싶다고 가정 해 보겠습니다.네트워크를 고유하게 식별하는 방법은 무엇입니까?

하지만 사용자가 특정 네트워크에있는 경우에만 응용 프로그램에 액세스하려고합니다. 예를 들어,이 애플리케이션은 병원의 의료 기록을 처리하는 Android 앱입니다. 장치가 병원의 네트워크에 연결되어 있는지 확인하는 방법? 아이디어는이 네트워크 외부에서는 앱이 작동하지 않는다는 것입니다.

질문은 특히 무선 네트워크, 무선 장치 또는 Android와 관련이 없으며 프로그래밍 및 네트워크 식별에 일반적입니다.

인증서가 그렇게 할 수 있습니까? 나는 이것에 처음이에요. 네트워크 "식별자"가 위조 될 수 있습니까? 예를 들어 나는 WiFi SSID가 위조하기 쉽다는 것을 확신한다.

건배.

세부 정보 : 로컬 데이터의 지점이 "오프라인 모드"가 아니라 네트워크 대기 시간을 피한다고 가정 해 보겠습니다. 이 경우 장치를 도난당한 경우 특정 네트워크에 연결되어있는 경우에만 데이터에 액세스 할 수 있어야합니다.

그러나 네트워크의 신원을 확인할 방법이없는 경우 "안녕하세요 나는 올바른 네트워크에 있습니까?"라는 질문에 대답하는 서버는 무엇입니까? 아무런 반응이 나오지 않으면 나는 옳은 사람이 아니라는 것을 안다. (또는 서버가 응답하지 않는 경우 ...)하지만 앱이 해킹 당하면 다시 위조 될 수 있습니다.

+0

감사합니다. @blowdart, 죄송합니다. – Arnaud

답변

4

흥미로운 문제.

일반적으로 데이터를 로컬에 저장하는 목적은 "오프라인"동안 액세스 할 수 있도록하기 위해서입니다.

그러나 여기에는 몇 가지 기본적인 오해가있을 수 있습니다. 아마도 당신이 이것을 원할 유일한 이유는 도난당한 장치가 비밀을 포기하지 않도록 시도하는 것입니다. 사실은 당신이 할 수 없다는 사실입니다. 기기가 더 이상 물리적 통제하에 있지 않으면 해킹 당하기 전에 시간 문제 일뿐입니다.

중요한 데이터를 말하면 장치에 저장하면 안됩니다. 대신 장치는 필요할 때 서버에서 필요한 데이터를 검색하고 더 이상 필요하지 않을 때 로컬에서 삭제해야합니다.

로컬 네트워크에 연결되었을 때만 장치를 작동하게하려면이 목표를 달성 할 수 있어야합니다.

부수적으로 "원격 제거"와 같은 것들이 있습니다. 또한 장치가 네트워크에 연결할 때마다 인증 및 권한 부여를 테스트해야합니다. 요점은 누군가가 장치를 분실했거나 도난 당했다고보고하면 네트워크에서 해당 장치를 차단할 수 있어야하며 장치가이를 지원하면 원격으로 해제 할 수 있습니다.

네트워크에서 장치를 가져 와서 원격 지우기가 실행되지 않도록 할 수 있다는 것을 명심하십시오.


이 방법을 사용하면 장치가 지정된 네트워크에 있는지 확인할 수 있습니다. 그것들 모두 가짜 일 수 있습니다. 주어진 이름의 라우터를 설치하고 MAC이 무엇이든 가장하는 것으로 변경하고 특정 IP 주소를 할당하는 것은 사소한 일입니다. 모든 의도와 목적을 위해 액세스 포인트와 똑같이 보이도록 만들 수 있습니다 ... 그리고 그것은 당신이 당신의 로컬 컴퓨터 상점에서 구입할 수있는 공장 무선 라우터의 정상적인 작동과 같습니다.

+0

오해 사실에 동의하십시오. 로컬 데이터의 포인트가 오프라인 일 때 액세스 할 수 있다면, 네트워크를 식별하려고하는 것은 의미가 없습니다. – Arnaud

+0

"원격 지우기"에 감사드립니다. – Arnaud

1

모든 네트워크는 다른 SSID를 복제 할 수 있으므로 신뢰할 수 없습니다. 알려진 라우터의 SSID와 MAC 주소의 조합을 사용하여 시작할 수 있지만 MAC 주소는 복제 할 수 있지만 (동일한 네트워크에는 없지만) 작동하지 않습니다.

의심 할만한 무선 네트워크가 인증서를 사용하여 신뢰할 수있는 장치를 지정하지 않는 한 솔직히 말해서이 경우에도 응용 프로그램에서 Wi-Fi 사용 인증서를 얻는 방법이 있다고 가정합니다. 네트워크 인증 중에 네트워크가 반환됩니다.

1

아마도 IPSec 터널을 사용할 수 있습니다. 많은 라우터와 방화벽이 IPSec을 지원합니다. 신뢰할 수있는 네트워크에 대한 접근 자체와 응용 프로그램 사이에 구성된 IPSec 터널을 가지고를 제공

       ----------------------------------- 
          /   IPSec tunnel   \ 
         +---------+        \ 
        A | IPSec | B  Untrusted    \ 
trusted network -------| capable |------- Networks ----------- Your application 
         | router |  Internet, etc. 
         +---------+ 

게이트웨이 라우터/방화벽 : 내가 생각하고있어이 같은 것입니다. 라우터와 응용 프로그램 서버 모두에서 터널은 다른 네트워크 인터페이스처럼 보입니다. 라우터의 경로는 응용 프로그램의 트래픽을 터널 인터페이스로 보냅니다. 라우터에서 필터를 사용하여 트래픽이 인 경우에만 인 인터페이스가 A (신뢰할 수있는 네트워크)에 도착하는 경우에만 트래픽을 전달할 수 있습니다. 응용 프로그램을 대상으로하는 인터페이스 B에 도착한 트래픽은 분명히 잘못된 방식이므로 라우터의 필터로 삭제할 수 있습니다.

응용 프로그램이 청취 소켓을 터널 인터페이스에만 바인딩하면 터널을 통해받은 연결 만 수락한다는 것을 알게됩니다.

원하는 보안 및 암호화 메커니즘을 사용하여 트래픽을 보호 할 수 있습니다. 대부분의 IPSec 구현은 원하는 모든 것을 지원합니다.

+0

+1 그림 : – Andy

3

데이터를 해독하는 키가 병원 네트워크의 서버에 저장되도록 프로그램을 작성할 수 있습니다. 프로그램이 키를 저장하지 않으면 누군가가 네트워크 외부에서 장치의 데이터에 액세스하는 것이 더 어렵지는 않지만 (불가능하지는 않지만).

Chris는 원격 지우기가 확실히 바람직하다고 지적했습니다. 장치가 네트워크에 연결되어 있지 않은 상태에서 데이터를 읽으려고하면 데이터를 지워 버릴 수 있습니다 (의도하지 않은 와이프가 발생할 수 있음). 블랙리스트 작성도 좋습니다. 따라서 장치가 네트워크에 다시 연결하려고하면 본질적으로 해당 장치를 브릭 킹 할 수 있습니다. 정말 좋지 않은 한 가지는 네트워크 중단이 발생하고 모든 장치가 실수로 삭제되는 경우입니다.

+0

첫 번째 단락은 올바른 생각을 가지고 있습니다.이를 안전하게 수행하는 유일한 방법은 기술적으로 데이터를 읽는 데 필요한 것이 올바른 네트워크에서만 사용 가능하도록하는 것입니다. 레코드 당 하나씩 많은 키를 사용해야하지만, 애플리케이션은 키를 사용하는 즉시 키를 잊어 버리게해야합니다. – caf

+0

+1. 주의를 기울여야한다는 생각으로 나는 네트워크 중단이 발생했을 때 장치를 실수로 지우도록하고 싶습니다. – NotMe

+0

그러나 키가 서버에서 검색되면 Man-in-the-middle 공격이 발생합니다. 권리 ? – Arnaud

관련 문제