중앙 데이터베이스가 없습니다


31

매우 민감한 데이터를 처리하는 웹 사이트 / 모바일 앱 / 데스크톱 앱을 만들려고하는 클라이언트가 있습니다 (은행 / 카드 세부 사항보다 더 민감합니다). 데이터의 민감한 특성으로 인해 데이터를 중앙 데이터베이스에 저장하고 싶지 않지만 여전히 앱이 동기화되기를 원합니다 (일부 데이터를 모바일 앱에 추가 한 다음 데스크톱 앱과 동일한 데이터 참조).

나는 이것을하는 훌륭하고 신뢰할 수있는 방법을 생각할 수 없으며 그 방법이 확실하지 않습니다. 내가 여기있는 이유입니다. 누구든지이 데이터를 어떻게 처리 할 수 ​​있는지 알고 있습니까?

내가 생각한 한 가지 해결책은 각 앱마다 클라이언트 측 데이터베이스를 사용하여 앱간에 어떻게 든 동기화하는 것이 었습니다.


2
데이터를 동기화하려면 여전히 액세스 할 수있는 위치에 있어야하므로 데이터를 응용 프로그램으로 가져올 수 있습니다. 더 많은 데이터베이스로 데이터를 나눌 수 있으므로 데이터베이스 중 하나가 어길 경우 모든 데이터가 유출되지는 않습니다. 이것이 고객을 만족시키는 경우 응용 프로그램에 더 많은 데이터베이스 연결을 추가하고 데이터를 가져옵니다.
Andy

2
이것이 피어 투 피어 문제입니까? 또는 하나의 데스크톱이 하나의 스마트 폰과 통신 (각 데이터 공간 당)합니까?
ebyrob

7
사용자에게만 알려진 키로 서버의 데이터를 암호화하여 데이터베이스의 기밀성을 유지할 수 있습니다.
Philipp

26
이것은 보안을 이해하지 못하는 사람이 생각한 계획처럼 들립니다. 이 요구 사항을 만든 사람은 Security.SE의 데이터 보안 에 대한 질문을 작성해야합니다 .
jpmc26

4
@ user2424495 : 웹 사이트를 통해 데이터를 사용할 수 있어야하는 경우 웹 사이트가 제공되는 위치 (일반적으로 중앙 서버)에서 데이터를 사용할 수 있어야합니다. 또는 데이터를 클라이언트 측에 제공하는 브라우저 플러그인을 작성해야합니다.
Bergi

답변:


60

많은 민감한 정보가 데이터베이스에 저장됩니다. 실제로 중앙 데이터베이스는 아마도이 데이터를 저장하는 가장 안전한 방법 일 것입니다. 대기업 데이터베이스에는 민감한 정보를 암호화하고 정보에 액세스하는 사람을 감사하고 DBA를 포함한 사람들이 데이터를 보는 것을 제한하거나 막는 등 수많은 기능이 있습니다. 환경을 모니터링하는 전문 보안 전문가와 백업을 감독하는 전문 DBA가있을 수 있습니다. 데이터 손실이 없습니다. 잘 설계된 보안 인프라를 침투하고 적절한 중앙 데이터베이스를 손상시키는 것보다 임의 사용자의 모바일 장치 또는 랩톱에 저장된 데이터를 손상시키는 것이 훨씬 더 쉽습니다.

암호화 된 데이터 만 저장하고 사용자의 개인 키를 사용자의 장치에 저장하는 중앙 데이터베이스로 시스템을 설계 할 수 있습니다. 이렇게하면 중앙 데이터베이스가 완전히 손상 되더라도 사용자 만 데이터를 사용할 수 있습니다. 물론 이는 사용자가 키를 잃어버린 경우 (복사본 만 휴대 전화에 있었고 휴대 전화가 손상된 경우) 데이터를 복원 할 수 없음을 의미합니다. 누군가 누군가 키를 훼손하고 아마도 로그인 자격 증명을 손상 시키면 데이터를 볼 수있을 것입니다.


24
@ user2424495-목표가 실제 보안이라면 데이터를 중앙에 저장하는 것이 거의 확실합니다. 마케팅의 관점에서 볼 때 누군가의 전화가 해킹되면 그것은 당신의 잘못이 아닐 수 있습니다. 그러나 대부분의 사람들의 시스템이 보안이 취약하기 때문에 해킹이 상대적으로 쉽다는 단어가 나오면 앱에 제대로 반영되지 않을 것입니다. 차라리 보안이 취약한 전화가 해킹 당했을 때 나를 비난하지 않기를 바랍니다.
저스틴 동굴

27
이것은 지금까지 문제를 해결하고 최상의 보안 결과를 제공하는 유일한 답변입니다. OP에 제공된 요구 사항은 성가신 일입니다. 데이터가 너무 민감하여 퍼블릭 네트워크를 통해 데이터를 사용할 수 있다는 생각이 사용자에게 불쾌한 경우 앱 아이디어는 현실적이지 않습니다. 마침표. 클라이언트 장치는 안전하지 않으며 신뢰할 수 없습니다.
maple_shaft

2
@mharr 데이터베이스에 암호화 된 데이터 만 저장하면 (장치를 떠나기 전에 암호화 됨) 법원 명령의 내용에 관계없이 사용자 만 가지고있는 암호화 키 없이는 물리적으로 해독 할 수 없습니다.
Richard Tingle

9
@RichardTingle <tinfoil> 정부 기관에서 이미 암호화를 해제하지 않았다면 </ tinfoil>
Bob

3
나는 그 문제가 "흥미롭지 않다"고 말한 적이 없으며, 지금까지 그 질문과 답변이 매우 흥미롭고 자극적이라고 생각합니다. 이것이 바로이 사이트를 훌륭하게 만드는 질문입니다. 데이터에 대한 요구 사항과 일부 가정에 대해 실제로 의문을 제기하고 있습니다. 데이터의 중요성에 대한 이러한 요구 사항과 가정은 정보에 입각하고 통찰력을 갖지만 현실적으로 계속 공신력이있는 멍청하고 자기 숭배하는 회사의 생각에 불과하다고 생각합니다.
maple_shaft

38

몇 단계를 백업하고 고객과상의하여 위협 모델을 해결해야 합니다. (예, 600 페이지의 책에 대한 링크입니다. 예, 전체 내용을 읽어 보는 것이 좋습니다.)

위협 모델은 다음과 같은 질문을 통해 시작됩니다.

  • 앱이이 민감한 데이터를 먼저 저장해야하는 이유는 무엇입니까?
    • 당신은 전혀 저장을 피할 수 있습니까?
    • 짧은 시간 후에 버릴 수 있습니까?
    • 둘 이상의 장치에서 실제로 액세스 할 수 있어야합니까?
    • 둘 이상의 장치에서 액세스 할 수 있어야하는 경우 둘 이상의 장치에 저장 해야 합니까?
  • 각 사용자의 민감한 데이터를 볼 수있는 사람은 누구입니까?
    • 이 목록을 더 짧게 만들 수 있습니까?
  • 업무를 수행하는 동안 각 사용자의 민감한 데이터를 접할 수있는 사람은 누구입니까?
    • 목록을 더 짧게 만들 수 있습니까 ?
    • 업무 수행 능력을 손상시키지 않으면 서 데이터에 액세스 할 수 없습니까?
    • 액세스 할 수없는 경우 최소한 이해할 수 없게 만들 수 있습니까? (이것은 요약에서 암호화가하는 일입니다. 데이터를 이해할 수 없게 만듭니다.)
  • 민감한 데이터를보고 싶은 사람은 누구 입니까?
    • 데이터를 얻을 수있는 기회는 무엇입니까?
    • 데이터가 있으면 데이터로 무엇을하고 싶습니까?
    • 그들이 원하는 것을 얻지 못하면 얼마나 화를 내겠습니까?
    • 그들은 얼마나 많은 돈, 시간, CPU주기 및 인간의 노력을 기꺼이 소비합니까?
    • 데이터를 본 사람 누구 인지 알고 있습니까?
    • 특정 사용자의 민감한 데이터 에 액세스하려고 합니까, 아니면 다른 사람이합니까?
    • 그들은 이미 무엇을 알고 있습니까?
    • 그들은 이미 무엇에 액세스 할 수 있습니까?

이러한 질문에 대한 답을 알고 나면 무엇을해야할지 파악하기에 훨씬 좋은 장소에있게됩니다.

각 질문 세트, 특히 공격자 (민감한 데이터를 원하지만 정보를 가질 수없는 사람)를 다루는 질문에 대해 둘 이상의 답변이있을 수 있습니다. 다른 동기, 목표 및 리소스를 가진 적어도 6 가지의 다른 전형적인 공격자를 생각할 수 없다면 아마도 무언가를 놓쳤을 것입니다.

또한 귀하 (및 / 또는 클라이언트)에게 가장 큰 문제 를 야기 하거나 공격이 성공할 경우 미디어에 큰 피해를 입힐 가능성이 가장 높거나 집계 피해 가 가장 큰 공격자 는 공격이 성공하면 개별 사용자에게 큰 피해를 줄 수있는 공격자가 아닙니다 . 고객의 회사는 합리적 피해에 대해 합리적으로 더 관심을 가지지 만, 사용자는 자신에 대한 피해에 대해 합리적으로 더 관심을 갖습니다.


4
이것은 실제로 질문에 대답하거나 반증하지는 않지만 질문되지 않은 질문에 대한 훌륭한 답변입니다.
maple_shaft

11
@maple_shaft : 글쎄, 그것은 OP가 요구하는 질문에 대답합니다. 질문이 XY 문제 로 고통받는 것으로 보일 수 있기 때문에 이것은 좋은 대답 인 것 같습니다.
sleske

8

동기화를 수행하는 한 가지 옵션은 피어 투 피어를 수행하는 것입니다. 여기에는 여전히 중앙 서버가 필요하지만 해당 서버는 데이터를 처리하지 않습니다.

장치가 온라인 상태가되면 중앙 서버는 사용자 ID로 알림을받습니다. 동일한 사용자의 두 번째 장치가 온라인 상태가되면 서버는 두 장치 모두 다른 장치의 IP 주소를 보냅니다. 그런 다음 장치는 데이터를 직접 교환 할 수 있습니다. 경고 : 하나의 장치가 서버로 작동해야하므로 하나 이상의 장치가 NAT 라우터 뒤에있을 수 없습니다.

알림 메커니즘과 P2P 교환을 위해 강력한 인증 및 암호화가 필요하다는 것을 잊지 마십시오.


1
두 장치 사이에 항상 모든 데이터를주고받는 것을 피하기 위해 버전 관리 체계와 같은 소리가 필요합니다.
ebyrob

p2p 교환은 최종 사용자에게 불필요한 설정 강제가 필요하지 않은 경우 훌륭한 솔루션이 될 것입니다. 제 의견으로는 응용 프로그램의 사용이 사용자 친화적이지 않을 것입니다. 그런 다음 고객이 앱을 설정할 때 데이터 취약성과 약간의 번거 로움 중 하나를 선택해야하는지에 대한 질문이 있습니다. 이는 데이터의 정확한 민감도와 사용자의 관심 정도에 따라 다릅니다.
Andy

1
@DavidPacker 첫 번째 서버를 설정하고 유지 관리한다고 가정하면 추가 설정 단계는 무엇입니까?
ebyrob

@ ebyrob 나는 오해 할 수도 있지만 앱 제작자가 제공 한 서버에는 p2p 동기화 절차 외에 아무것도 포함되어 있지 않다는 것을 이해합니다. 그러나 데이터는 클라이언트의 장치 중 하나에서이 서버를 통해 가져와야하며 클라이언트는 자신이나 데이터에 액세스 할 수 있어야합니다. 이것이 제가 이야기했던 설정입니다.
Andy

1
@David, Philipp는 민감한 데이터의 피어 투 피어 교환을 제안하므로 중앙 서버로 또는 서버를 통해 전송하지 않습니다. 중앙 서버는 한 피어가 다른 피어를 쉽게 찾을 수 있도록하기 위해 존재합니다. 그런 다음 방해가됩니다.
Erik Eidt

5

다른 사람의 문제로 만드십시오.

각 앱에 데이터를 로컬로 저장 한 다음 타사 서비스 (Dropbox, Google Drive 등)와 자체 계정을 사용하여 동기화 할 수있는 옵션을 사용자에게 제공합니다. 또한 타사 서비스에 업로드 된 모든 데이터를 암호화하는 방법에 대해 생각해보십시오 (그러면 장단점이 있습니다).

이것은주는 모습 들이 데이터 동기화에 옵트 인으로 갖고 있기 때문에, 사용자가 자신의 데이터를 소유합니다. 공유를 원하지 않는 사람들에게 앱을 유용하게 만듭니다. 또한 공유 데이터를 안전하게 유지해야하는 지속적인 두통에 대해 다른 사람 (기술적으로 그리고 잠재적으로 법적으로)을 책임지게합니다.


1

고객의 관심사는이 데이터의 가시성에 관한 것 같습니다. 고객에게 물어보아야 할 첫 번째 질문은 데이터가 암호화되었는지, 어디에 저장할 수 있습니까? 그런 다음 고객에게 데이터를 해독하고 처리하기 전에 어떤 종류의 액세스 제어를 원하는지 묻습니다. 해독 키를 어디에 저장할 수 있습니까? 사용자마다 별도의 키입니까? 기타...

고객이 데이터를 어디에도 저장하지 않으려면 매번 사용자가 내 손에 데이터를 입력하기를 원합니까?

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