Немає центральної бази даних


31

У мене є клієнт, який хоче створити веб-сайт / мобільні додатки / додатки для настільних ПК, які стосуються дуже чутливих даних (більш чутливих, ніж реквізити банку / картки). Через чутливий характер даних вони не хочуть зберігати їх у центральній базі даних, але вони все ще хочуть, щоб їх програми синхронізувались (скажімо, я додаю деякі дані у свій мобільний додаток, то я хочу мати можливість перейти до своєї настільний додаток і перегляньте ті самі дані).

Я не можу придумати приємний, надійний спосіб цього зробити, і я не впевнений, що існує. Через що я тут. Хтось знає, як я міг поводитися з цими даними?

Одне з варіантів, про яке я думав, - це мати базу даних клієнта на кожному додатку, яка б якось синхронізувалась між додатками, я можу бачити, що це дуже ненадійно і все стає брудно.


2
Якщо ви хочете, щоб дані були синхронізовані, вони все ще повинні бути десь доступними, щоб дані можна було перетягнути у вашу програму. Ви можете розділити дані на декілька баз даних, таким чином, якщо одна з них буде якось порушена, ви б не просочилися всі ваші дані. Якщо це задовольняє замовника, просто додайте до програми більше підключень до бази даних та витягніть з них свої дані.
Енді

2
Це проблема однолітків? або просто 1 робочий стіл, що розмовляє з 1 смартфоном (для кожного простору даних)?
ebyrob

7
Ви можете забезпечити конфіденційність бази даних, зашифрувавши дані на сервері ключем, відомим лише користувачеві.
Філіпп

26
Це звучить як схема, яку придумав хтось, хто не розуміє безпеки. Той, хто придумав цю вимогу, повинен сформулювати питання щодо захисту даних на Security.SE .
jpmc26

4
@ user2424495: Якщо дані мають бути доступні через веб-сайт, вони повинні бути доступними там, де подається ваш веб-сайт - як правило, це центральний сервер. Або вам потрібно буде написати плагін веб-переглядача, який постачає дані на клієнтській основі.
Бергі

Відповіді:


60

Багато банальної інформації зберігається в базах даних. Насправді центральна база даних є, мабуть, найбільш безпечним способом зберігання цих даних. У великих базах даних підприємства є багато функцій, щоб робити такі речі, як шифрування конфіденційної інформації, перевіряти, хто до неї звертається, обмежувати або не дозволяти людям, включаючи DBA, переглядати дані тощо. що ви не втрачаєте дані. Майже напевно було б набагато простіше компрометувати дані, що зберігаються на мобільному пристрої чи ноутбуці якогось випадкового користувача, ніж проникнути у добре розроблену інфраструктуру безпеки та поставити під загрозу належну центральну базу даних.

Ви можете розробити систему з центральною базою даних, яка зберігає лише зашифровані дані та зберігає приватний ключ користувача на пристрої користувача. Таким чином, навіть якщо центральна база даних повністю порушена, ці дані можуть бути використані лише користувачем. Звичайно, це означає, що ви не можете відновити дані користувача, якщо вони втрачають ключ (скажімо, єдиний примірник був на їх телефоні, а їхній телефон пошкоджений). І якщо хтось скомпрометує ключ та, імовірно, свої облікові дані для входу, він зможе побачити дані.


24
@ user2424495 - Якщо метою є фактична безпека, то зберігання даних централізовано майже напевно виграє. З точки зору маркетингу, ви можете не бути вашою виною, якщо чийсь телефон зламаний. Але це, безумовно, буде погано відображатися на додатку, якщо з'явиться слово, що його зламати відносно легко (оскільки системи більшості людей дуже погано захищені). Я б швидше пояснив людям, що їхні дані зберігаються в зашифрованому вигляді, використовуючи безпеку військового рівня, ніж сподіватися, що вони не звинувачують мене, коли їх погано захищений телефон отримує злом.
Джастін Печера

27
Це єдина відповідь на даний момент, яка справді вирішує це питання і забезпечує найкращий можливий результат безпеки. Вимоги, що були задані ОП, є смішними. Якщо дані настільки чутливі, що ідея даних, навіть доступних у загальнодоступній мережі, є образливою для користувачів, то ідея програми не є реалістичною. Повна зупинка. Клієнтські пристрої не захищені і їм не можна довіряти.
maple_shaft

2
@mharr, якщо база даних зберігає лише зашифровані дані (зашифровані перед виходом із пристрою), неважливо, що говорить ухвала суду, вона фізично не може бути розшифрована без ключів шифрування, які має лише користувач.
Річард Тінгл

9
@RichardTingle <tinfoil> Якщо тільки зазначене урядове агентство вже не порушило шифрування. </tinfoil>
Боб

3
Я ніколи не говорив, що проблема не була "цікавою", я вважаю, що питання та відповіді поки що дуже інтригуючі та думки, що провокують. Це саме те питання, яке робить цей сайт чудовим. Я дійсно ставлю під сумнів вимоги та деякі припущення, які можливо робляться щодо даних. Моє павуче почуття просто кричить на мене, що ці вимоги та припущення щодо важливості даних - це роздуми розквітлої та самоповажаючої себе компанії, яка фантазує себе поінформованою та проникливою, але насправді
продовжує

38

Вам потрібно створити резервну копію декількох кроків і, консультуючись із клієнтом, розробити модель загрози . (Так, це посилання на 600-сторінкову книгу; так, я серйозно рекомендую прочитати всю справу.)

Модель загрози починається із задавання таких питань

  • Чому додатку потрібно зберігати ці конфіденційні дані?
    • Чи можете ви взагалі уникнути його зберігання?
    • Чи можна його викинути через короткий час?
    • Чи дійсно потрібно бути доступним для більш ніж одного пристрою?
    • Якщо він повинен бути доступним на декількох пристроях, чи потрібно його зберігати на більш ніж одному пристрої?
  • Хто такі люди, яким дозволено переглядати конфіденційні дані кожного користувача?
    • Чи можна цей список скоротити?
  • Хто такі люди, які можуть контактувати з конфіденційними даними кожного користувача, намагаючись виконувати свою роботу, але не потрібно їх знати?
    • Чи можна цей список скоротити?
    • Чи можна зробити їх недоступними без шкоди для їхньої здатності виконувати свою роботу?
    • Якщо він не може бути недоступним, чи можна принаймні зробити його незрозумілим? (Це те, що робить шифрування в рефераті: воно робить дані незрозумілими.)
  • Хто такі люди, які хочуть бачити конфіденційні дані, але їх заборонено?
    • Які можливості вони мають отримати за даними?
    • Що вони хочуть зробити з даними, як тільки вони їх мають?
    • Наскільки вони будуть розлючені, якщо не отримають того, що хочуть?
    • Скільки грошей, часу, циклів процесора та людських зусиль вони готові витратити?
    • Чи їм байдуже, якщо хтось знає, що бачив дані?
    • Вони хочуть отримати доступ до конфіденційних даних конкретних користувачів , чи це зробить хтось?
    • Що вони вже знають?
    • До чого вони вже мають доступ?

Як тільки ви дізнаєтесь відповіді на ці запитання, ви опинитеся, що робити.

Майте на увазі, що на кожен набір питань може бути більше однієї відповіді, особливо тих, що стосуються зловмисників (людей, які хочуть конфіденційні дані, але вони не мають їх мати). Якщо ви не можете придумати принаймні півдюжини різних архетипних нападників, що мають різні мотивації, цілі та ресурси, ви, мабуть, щось пропустили.

Також майте на увазі, що зловмисники, які завдають вам (та / або клієнту) найбільше клопоту, найімовірніше, можуть здійснити гігантський сплеск у засобах масової інформації, якщо їхня атака буде успішною, або які , напевно, наносять найбільшу кількість сукупного збитку, ймовірно, не зловмисники, які можуть заподіяти найбільшу шкоду окремим користувачам, якщо їхня атака буде успішною. Компанія вашого клієнта раціональніше піклується про сукупний збиток, але користувачі раціональніше дбають про шкоду собі.


4
Це насправді не намагається відповісти на питання або спростувати його, але це справді дивовижна відповідь на питання, яке не було задано.
maple_shaft

11
@maple_shaft: Ну, це відповідає на питання, яке мав намір поставити ОП. Оскільки можна було б бачити, що питання страждає від проблеми XY , це здається гарною відповіддю.
sleske

8

Одним із варіантів зробити синхронізацію буде зробити це одноранговий. Це все ще потребує центрального сервера, але цей сервер не обробляє жодну з даних.

Коли пристрій переходить в Інтернет, центральний сервер отримує сповіщення з ідентифікатором користувача. Коли другий пристрій того ж користувача виходить в Інтернет, сервер надсилає обом пристроям IP-адреси іншого. Потім пристрої можуть безпосередньо обмінюватися даними. Caveat: одному пристрою потрібно діяти як сервер, тому принаймні один не може бути позаду маршрутизатора NAT.

Не забувайте, що вам знадобиться сильна автентифікація та шифрування як для механізму оповіщення, так і для обміну одноранговими.


1
Звучить, як схема версій, також буде потрібно, щоб не надсилати всі дані туди-сюди між двома пристроями ...
ebyrob

Обмін p2p був би чудовим рішенням, якби не потреба в зайвих налаштуваннях примушувати до кінцевого користувача, що, на мою думку, зробить використання програми менш зручним для користувачів. Тоді виникає питання, чи бажає замовник вибирати між вразливістю даних та суттєвою суттєвістю під час налаштування програми, що багато в чому залежить від того, наскільки точно чутливі дані та скільки користувачі дбають.
Енді

1
@DavidPacker припускаючи, що ви налаштували та підтримуєте перший сервер, які додаткові кроки налаштування?
ebyrob

@ebyrob Мені можуть бути неправильно зрозумілі, але я розумію, що сервер, який надає автор програми, не стосується нічого, крім процедури синхронізації p2p. Але дані потрібно перенести через цей сервер з одного з пристроїв клієнта - і клієнт повинен зробити себе або його дані доступними - це налаштування, про яке я говорив.
Енді

1
@David, Філіп пропонує запропонувати одноранговий обмін чутливими даними, таким чином, не надсилаючи їх на центральний сервер або навіть через нього. Центральний сервер є лише для того, щоб полегшити одному одноліткові пошук іншого одноранця; то воно вибивається з шляху.
Ерік Ейдт

5

Зробіть це чиєюсь проблемою.

Зберігайте дані локально у кожному додатку, а потім надайте користувачам можливість ввімкнути синхронізацію за допомогою власного облікового запису із стороннім сервісом (Dropbox, Google Drive тощо). Крім того, подумайте про шифрування будь-яких даних, завантажених на сторонній сервіс (для цього є плюси і мінуси).

Це створює вигляд, що користувачі володіють власними даними, оскільки їм доводиться ввімкнути синхронізацію даних. Це робить додатки корисними для людей, які не хочуть, щоб жодного спільного доступу не було. І це робить когось іншого відповідальним (технічно та, можливо, юридично) за постійні головні болі щодо збереження будь-яких спільних даних.


1

Напевно, стурбованість вашого клієнта пов'язана з видимістю цих даних. Перше питання, яке потрібно задати своєму клієнту, - якщо дані були зашифровані, де їх можна зберігати? Потім запитайте свого клієнта, які види контролю доступу вони хочуть застосувати, перш ніж дані можуть бути розшифровані та оброблені - де можна зберігати ключ розшифровки? це окремий ключ на кожного користувача? тощо ...

Якщо ваш клієнт не хоче, щоб дані, що зберігаються де-небудь, хочуть, щоб користувач щоразу вводив його в мою руку?

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.