Không có cơ sở dữ liệu trung tâm


31

Tôi có một khách hàng đang tìm cách xây dựng một trang web / ứng dụng di động / ứng dụng máy tính để bàn xử lý dữ liệu rất nhạy cảm (nhạy cảm hơn chi tiết ngân hàng / thẻ). Do tính chất nhạy cảm của dữ liệu, họ không muốn lưu dữ liệu vào cơ sở dữ liệu trung tâm nhưng họ vẫn muốn ứng dụng của họ được đồng bộ hóa (giả sử tôi thêm một số dữ liệu vào ứng dụng di động của mình, sau đó tôi muốn có thể truy cập vào ứng dụng máy tính để bàn và xem dữ liệu tương tự).

Tôi không thể nghĩ ra một cách tốt đẹp, đáng tin cậy để làm điều này và tôi không chắc chắn có một cách. Đó là lý do tại sao tôi ở đây. Có ai biết làm thế nào tôi có thể đối phó với dữ liệu này?

Một giải pháp tôi đã nghĩ đến là có một cơ sở dữ liệu phía máy khách trên mỗi ứng dụng bằng cách nào đó sẽ đồng bộ hóa giữa các ứng dụng, tôi có thể thấy điều này rất không đáng tin cậy và mặc dù rất lộn xộn.


2
Nếu bạn muốn dữ liệu được đồng bộ hóa, nó vẫn phải ở đâu đó có thể truy cập được, vì vậy dữ liệu có thể được kéo vào ứng dụng của bạn. Bạn có thể phân chia dữ liệu cho nhiều cơ sở dữ liệu hơn, do đó, nếu một trong số chúng bị vi phạm bằng cách nào đó, bạn sẽ không rò rỉ tất cả dữ liệu của mình. Nếu điều này làm hài lòng khách hàng, chỉ cần thêm nhiều kết nối cơ sở dữ liệu vào ứng dụng của bạn và lấy dữ liệu của bạn từ họ.
Andy

2
Đây có phải là một vấn đề ngang hàng? hoặc chỉ 1 máy tính để bàn nói chuyện với 1 điện thoại thông minh (cho mỗi không gian dữ liệu)?
ebyrob

7
Bạn có thể đảm bảo tính bảo mật trong cơ sở dữ liệu bằng cách mã hóa dữ liệu trên máy chủ bằng một khóa mà người dùng chỉ biết.
Philipp

26
Điều này nghe có vẻ như một kế hoạch mà ai đó không hiểu về bảo mật nghĩ đến. Bất cứ ai đưa ra yêu cầu này nên đặt ra một câu hỏi về bảo mật dữ liệu trên Security.SE .
jpmc26

4
@ user2424495: Nếu dữ liệu cần có sẵn thông qua một trang web, dữ liệu phải có sẵn ở nơi trang web của bạn được phục vụ - thường là máy chủ trung tâm. Hoặc bạn cần viết một plugin trình duyệt cung cấp dữ liệu phía máy khách.
Bergi

Câu trả lời:


60

Rất nhiều thông tin nhạy cảm được lưu trữ trong cơ sở dữ liệu. Trong thực tế, một cơ sở dữ liệu trung tâm có lẽ là cách an toàn nhất để lưu trữ dữ liệu này. Cơ sở dữ liệu doanh nghiệp lớn có rất nhiều chức năng để thực hiện những việc như mã hóa thông tin nhạy cảm, để kiểm tra ai truy cập nó, để hạn chế hoặc ngăn mọi người bao gồm các DBA xem dữ liệu, v.v. rằng bạn không bị mất dữ liệu. Gần như chắc chắn việc thỏa hiệp dữ liệu được lưu trữ trên một số thiết bị di động hoặc máy tính xách tay ngẫu nhiên sẽ dễ dàng hơn nhiều so với việc xâm nhập một cơ sở hạ tầng bảo mật được thiết kế tốt và thỏa hiệp một cơ sở dữ liệu trung tâm thích hợp.

Bạn có thể thiết kế hệ thống với cơ sở dữ liệu trung tâm chỉ lưu trữ dữ liệu được mã hóa và lưu trữ khóa riêng của người dùng trên thiết bị của người dùng. Theo cách đó, ngay cả khi cơ sở dữ liệu trung tâm bị xâm phạm hoàn toàn, dữ liệu chỉ có thể được sử dụng bởi người dùng. Tất nhiên, điều đó có nghĩa là bạn không thể khôi phục dữ liệu của người dùng nếu họ bị mất chìa khóa (giả sử bản sao duy nhất có trên điện thoại của họ và điện thoại của họ bị hỏng). Và nếu ai đó xâm phạm khóa và, có lẽ, thông tin đăng nhập của họ, họ sẽ có thể xem dữ liệu.


24
@ user2424495 - Nếu mục tiêu là bảo mật thực tế, có dữ liệu được lưu trữ tập trung gần như chắc chắn sẽ thắng. Từ quan điểm tiếp thị, nó có thể không phải là lỗi của bạn nếu điện thoại của ai đó bị hack. Nhưng nó chắc chắn sẽ phản ánh kém trên ứng dụng nếu có thông tin rằng nó tương đối dễ bị hack (vì hầu hết các hệ thống của mọi người đều được bảo mật rất kém). Tôi muốn giải thích với mọi người rằng dữ liệu của họ được lưu trữ được mã hóa bằng bảo mật cấp quân sự hơn là hy vọng rằng họ không đổ lỗi cho tôi khi điện thoại được bảo mật kém của họ bị hack.
Hang Justin

27
Đây là câu trả lời duy nhất cho đến nay thực sự giải quyết câu hỏi và cung cấp kết quả bảo mật tốt nhất có thể. Các yêu cầu mà OP đưa ra là lố bịch. Nếu dữ liệu nhạy cảm đến mức ý tưởng về dữ liệu thậm chí có sẵn trên mạng công cộng gây khó chịu cho người dùng, thì ý tưởng ứng dụng là không thực tế. Ngừng hẳn. Thiết bị của khách hàng không an toàn và không thể tin cậy được.
maple_shaft

2
@mharr nếu cơ sở dữ liệu chỉ lưu trữ dữ liệu được mã hóa (được mã hóa trước khi rời thiết bị) thì không có vấn đề gì theo lệnh của tòa án, về mặt vật lý không thể được giải mã nếu không có khóa mã hóa, chỉ người dùng mới có.
Richard Tingle

9
@RichardTingle <tinfoil> Trừ khi cơ quan chính phủ cho biết đã phá vỡ mã hóa. </ Tinfoil>
Bob

3
Tôi chưa bao giờ nói rằng vấn đề không "thú vị", tôi thấy câu hỏi và câu trả lời cho đến nay rất hấp dẫn và kích thích tư duy. Đây chính xác là loại câu hỏi làm cho trang web này tuyệt vời. Tôi thực sự đặt câu hỏi về các yêu cầu và một số giả định có thể được thực hiện về dữ liệu. Ý thức cá nhân của tôi chỉ hét lên với tôi rằng những yêu cầu và giả định về tầm quan trọng của dữ liệu là những suy nghĩ của một công ty tự tôn và tự tôn mà nó tưởng tượng và sâu sắc nhưng trong thực tế ...
maple_shaft

38

Bạn cần sao lưu một vài bước và, tham khảo ý kiến ​​khách hàng của bạn, đưa ra mô hình mối đe dọa . (Vâng, đó là một liên kết đến một cuốn sách 600 trang; vâng, tôi thực sự khuyên bạn nên đọc toàn bộ.)

Một mô hình mối đe dọa bắt đầu bằng cách đặt câu hỏi như

  • Tại sao ứng dụng cần lưu trữ dữ liệu nhạy cảm này ngay từ đầu?
    • Bạn có thể tránh lưu trữ nó ở tất cả?
    • Nó có thể được ném đi sau một thời gian ngắn?
    • Có thực sự cần phải truy cập vào nhiều thiết bị không?
    • Nếu nó phải được truy cập trên nhiều thiết bị, nó có cần được lưu trữ trên nhiều thiết bị không?
  • Ai là người được phép xem dữ liệu nhạy cảm của mỗi người dùng?
    • Danh sách này có thể được thực hiện ngắn hơn?
  • Ai là những người có thể tiếp xúc với dữ liệu nhạy cảm của mỗi người dùng trong khi cố gắng thực hiện công việc của họ, nhưng không cần biết điều đó?
    • Thể này danh sách được thực hiện ngắn hơn?
    • Dữ liệu có thể được hiển thị không thể truy cập được cho họ mà không làm tổn hại khả năng thực hiện công việc của họ không?
    • Nếu nó không thể truy cập được, ít nhất nó có thể được làm cho không thể hiểu được? (Đây là những gì mã hóa làm, trong bản tóm tắt: nó làm cho dữ liệu không thể hiểu được.)
  • Ai là người muốn xem dữ liệu nhạy cảm, nhưng không được phép?
    • Những cơ hội nào họ có được tại dữ liệu?
    • Họ muốn làm gì với dữ liệu khi họ có nó?
    • Họ sẽ tức giận như thế nào nếu họ không có được thứ họ muốn?
    • Họ sẵn sàng chi bao nhiêu tiền, thời gian, chu kỳ CPU và công sức của con người?
    • Họ có quan tâm nếu có ai biết họ đã xem dữ liệu không?
    • Họ có muốn truy cập dữ liệu nhạy cảm của người dùng cụ thể không , hay ai sẽ làm gì?
    • Họ đã biết gì?
    • Họ đã có quyền truy cập vào cái gì?

Một khi bạn biết câu trả lời cho những câu hỏi này, bạn sẽ ở một nơi tốt hơn nhiều để tìm ra những việc cần làm.

Hãy nhớ rằng có thể có nhiều hơn một câu trả lời cho mỗi bộ câu hỏi, đặc biệt là những câu hỏi liên quan đến những kẻ tấn công (những người muốn có dữ liệu nhạy cảm nhưng không được phép có nó). Nếu bạn không thể nghĩ ra ít nhất nửa tá những kẻ tấn công kiểu mẫu khác nhau , với những động lực, mục tiêu và tài nguyên khác nhau, có lẽ bạn đã bỏ lỡ điều gì đó.

Ngoài ra, hãy nhớ rằng những kẻ tấn công khiến bạn (và / hoặc khách hàng) gặp rắc rối nhất, có khả năng gây ra một vụ nổ lớn trên phương tiện truyền thông nếu cuộc tấn công của chúng thành công, hoặc gây ra thiệt hại tổng hợp lớn nhất , có lẽ là không phải những kẻ tấn công có thể gây ra tác hại lớn nhất cho người dùng cá nhân nếu cuộc tấn công của họ thành công. Công ty của khách hàng của bạn quan tâm một cách hợp lý hơn về thiệt hại tổng hợp, nhưng người dùng quan tâm hợp lý hơn về tác hại đối với chính họ.


4
Điều này không thực sự cố gắng trả lời câu hỏi hoặc từ chối nó, nhưng đây thực sự là một câu trả lời tuyệt vời cho câu hỏi chưa được hỏi.
maple_shaft

11
@maple_shaft: Chà, nó trả lời câu hỏi mà OP muốn hỏi. Vì câu hỏi có thể được nhìn thấy là bị vấn đề XY , đây có vẻ là một câu trả lời tốt.
sleske

8

Một tùy chọn để thực hiện đồng bộ hóa là thực hiện ngang hàng. Điều này vẫn sẽ yêu cầu một máy chủ trung tâm, nhưng máy chủ đó sẽ không xử lý bất kỳ dữ liệu nào.

Khi một thiết bị lên mạng, một máy chủ trung tâm sẽ nhận được thông báo với id người dùng. Khi một thiết bị thứ hai của cùng một người dùng trực tuyến, máy chủ sẽ gửi cho cả hai thiết bị địa chỉ IP của thiết bị kia. Các thiết bị sau đó có thể trao đổi dữ liệu trực tiếp. Hãy cẩn thận: một thiết bị cần hoạt động như một máy chủ, vì vậy ít nhất một thiết bị không thể đứng sau bộ định tuyến NAT.

Đừng quên rằng bạn sẽ cần xác thực và mã hóa mạnh mẽ cho cả cơ chế thông báo và trao đổi ngang hàng.


1
Âm thanh giống như một sơ đồ phiên bản cũng sẽ được yêu cầu để tránh gửi tất cả dữ liệu qua lại giữa hai thiết bị ...
ebyrob

Trao đổi p2p sẽ là một giải pháp tuyệt vời, nếu không cần thiết lập không cần thiết buộc người dùng cuối, theo tôi, điều đó sẽ làm cho việc sử dụng ứng dụng trở nên thân thiện với người dùng hơn. Sau đó, có một câu hỏi, liệu khách hàng có muốn chọn giữa lỗ hổng dữ liệu và một chút rắc rối khi thiết lập ứng dụng hay không, điều này phụ thuộc rất nhiều vào mức độ nhạy cảm của dữ liệu và mức độ quan tâm của người dùng.
Andy

1
@DavidPacker giả sử bạn thiết lập và duy trì máy chủ đầu tiên, các bước thiết lập bổ sung là gì?
ebyrob

@wiserob Tôi có thể bị hiểu lầm, nhưng tôi hiểu rằng máy chủ được cung cấp bởi người tạo ứng dụng không chống lại bất cứ điều gì ngoài quy trình đồng bộ hóa p2p. Nhưng dữ liệu phải được kéo qua máy chủ này từ một trong các thiết bị của khách hàng - và khách hàng phải tự làm cho mình hoặc dữ liệu của anh ta có thể truy cập được - đây là thiết lập mà tôi đã nói đến.
Andy

1
@David, Philipp đang đề xuất trao đổi ngang hàng các dữ liệu nhạy cảm, do đó không gửi dữ liệu đó đến hoặc thậm chí thông qua máy chủ trung tâm. Máy chủ trung tâm chỉ ở đó để tạo điều kiện cho một người tìm kiếm đồng đẳng khác; sau đó nó ra khỏi đường
Erik Eidt

5

Làm cho nó trở thành vấn đề của người khác.

Lưu trữ dữ liệu cục bộ trong mỗi ứng dụng, sau đó cung cấp cho người dùng tùy chọn bật đồng bộ hóa bằng tài khoản của riêng họ với dịch vụ của bên thứ ba (Dropbox, Google Drive, v.v.). Ngoài ra, hãy suy nghĩ về việc mã hóa bất kỳ dữ liệu nào được tải lên dịch vụ của bên thứ ba (có những ưu và nhược điểm để thực hiện điều đó).

Điều này mang lại vẻ ngoài mà người dùng sở hữu dữ liệu của riêng họ, vì họ phải chọn tham gia đồng bộ hóa dữ liệu. Nó làm cho các ứng dụng hữu ích cho những người không muốn bất kỳ chia sẻ nào xảy ra. Và nó khiến người khác phải chịu trách nhiệm (về mặt kỹ thuật và, có khả năng, về mặt pháp lý) đối với những vấn đề đau đầu đang diễn ra là giữ bất kỳ dữ liệu chia sẻ nào an toàn.


1

Mối quan tâm của khách hàng của bạn dường như là về khả năng hiển thị của dữ liệu này. Câu hỏi đầu tiên để hỏi khách hàng của bạn là nếu dữ liệu được mã hóa, nó có thể được lưu trữ ở đâu? Sau đó, hãy hỏi khách hàng của bạn loại kiểm soát truy cập nào họ muốn tại chỗ trước khi dữ liệu có thể được giải mã và xử lý - khóa giải mã có thể được lưu trữ ở đâu? là một khóa riêng biệt cho mỗi người dùng? v.v ...

Nếu khách hàng của bạn không muốn dữ liệu được lưu trữ ở bất cứ đâu, họ có muốn người dùng nhập dữ liệu của tôi mỗi lần không?

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.