2009-07-28 54 views
10

Tôi gặp sự cố mã hóa thú vị trong tầm tay. Tôi không biết nếu nó có thể được giải quyết nhưng ở đây đi:Bảo mật mã hóa hai chiều DB ngay cả từ Admin

Cơ sở dữ liệu chứa thông tin người dùng nhạy cảm. Như vậy, thông tin người dùng phải được mã hóa (mã hóa hai chiều). Người dùng có một đăng nhập/mật khẩu và chúng có thể được sử dụng trong mã hóa hai chiều. Bây giờ, mã hóa được thiết kế theo cách mà ngay cả người quản trị xem các bảng cơ sở dữ liệu cũng không thể hiểu được thông tin người dùng.

Tuy nhiên, thiết kế phải xử lý các trường hợp người dùng có thể quên mật khẩu của mình. Nếu mật khẩu được sử dụng để mã hóa, quên mật khẩu có nghĩa là thông tin bị mất - không muốn. Nếu mật khẩu người dùng được lưu trữ trong cơ sở dữ liệu bằng thuật toán hai chiều (thay vì băm một chiều) với khóa được mã hóa cứng trong tập lệnh, quản trị viên có thể khám phá khóa cứng bằng cách xem tập lệnh (quản trị viên của khóa học có quyền truy cập đến tập lệnh).

Có ai biết cách thoát khỏi điều này không?

PS: Đây là vấn đề thực sự. Công ty của tôi là một fan cuồng tín tuyệt đối (ISO 27001 và tất cả) và tôi đã được giao phó để thiết kế một hệ thống với chức năng được đề cập ở trên. Nhân tiện, tôi đang sử dụng một kịch bản PHP và MySQL.

EDIT: Có thể trước đây không rõ, người dùng cần xem/chỉnh sửa thông tin người dùng này hàng ngày.

+0

Câu hỏi: Mã hóa dữ liệu của bạn mạnh đến mức nào? Dữ liệu obfuscation (có nghĩa là dữ liệu sẽ không được lưu trữ như văn bản rõ ràng nhưng với một nỗ lực rất ít người có thể giải mã nó) là đủ, hoặc bạn muốn có một * thực * mạnh mẽ chương trình mã hóa? – Nicolas

+0

Mã hóa mạnh mẽ - không có khả năng dữ liệu nào được phát hiện! –

+1

Vâng, nếu bạn không muốn dữ liệu được giải mã nhưng đồng thời cần khả năng hiển thị dữ liệu được giải mã cho người dùng ... – Nicolas

Trả lời

15

Điều bạn muốn là đại lý khôi phục. Mã hóa tất cả dữ liệu hai lần: một lần với khóa người dùng, một lần với khóa đại lý khôi phục (công khai); ít nhất là cái thứ hai cần phải là bất đối xứng. Giữ khóa tác nhân khôi phục trong an toàn pyhsical, với giao thức truy cập chính thức (ví dụ: bốn nguyên tắc về mắt). Thông thường, quản trị viên không thể truy cập dữ liệu được mã hóa, nhưng nếu người dùng mất khóa và khôi phục được ủy quyền, thì bạn sẽ nhận được khóa khôi phục.

Ngoài ra còn có nhiều cách để mã hóa khóa của đại lý khôi phục để những người không đồng ý phải đồng ý sử dụng nó.

Chỉnh sửa: Một chiến lược triển khai là mã hóa mọi thứ hai lần. Ngoài ra, đối với mỗi tập dữ liệu cần phải được khôi phục một cách độc lập, hãy tạo khóa đối xứng mới và chỉ mã hóa khóa đó hai lần; dữ liệu gốc chỉ được mã hóa bằng khóa phiên.Cách tiếp cận đó có thể mở rộng đến nhiều độc giả độc lập; nó yêu cầu các phím bất đối xứng trên mỗi đầu đọc (để bạn có thể mã hóa khoá phiên bằng các khóa công cộng của tất cả các độc giả - một là tác nhân khôi phục).

Tôi đã sao chép thuật ngữ từ Encrypting File System của Microsoft, trong đó có lược đồ được triển khai.

+0

Đơn giản và thanh lịch –

+0

Bạn có thể vui lòng cung cấp một số liên kết tham chiếu mà tôi có thể đọc thêm không? –

+0

Hơn nữa, sẽ không mã hóa mọi thứ hai lần có nghĩa là bản thân người dùng sẽ không thể truy xuất/chỉnh sửa thông tin người dùng? –

1

Không thể hoàn thành.

Trong mọi trường hợp, ai đó phải có khả năng tạo lại khóa để giải mã. Hãy xem xét các tùy chọn:

  1. Khóa được lưu trữ trên máy chủ. Không có: quản trị viên có quyền truy cập.
  2. Khóa được mã hóa bằng mật khẩu của người dùng. Không: người dùng có thể quên nó.

Giải pháp là thư giãn quản trị viên có giới hạn truy cập và thay vì không thể, bạn làm cho nó rất khó. Ví dụ: nếu dữ liệu được mã hóa bằng khóa được mã hóa bằng mật khẩu của người dùng, nhưng khóa đó đã được ký thác trong một số hệ thống khác mà quản trị viên không thể truy cập được (có lẽ chỉ một quản trị viên khác có quyền truy cập?) thì bạn vẫn có thể khôi phục từ một người dùng quên mật khẩu của họ (với sự can thiệp của bất cứ ai có quyền truy cập vào các khóa đã ký quỹ), nhưng quản trị viên không thể tải xuống cơ sở dữ liệu của bạn và đọc tất cả dữ liệu.

+0

Nhưng đây có phải là hệ thống cực kỳ an toàn như ngân hàng, vv không? Tôi hỏi điều này bởi vì tôi tin rằng ai đó khác chắc chắn sẽ giải quyết vấn đề này và các ngân hàng dường như là một ứng cử viên mạnh mẽ. –

+0

Ngân hàng, v.v. sử dụng Mô-đun bảo mật phần cứng cho mã hóa của chúng –

+3

Tôi đồng ý, đó là kịch bản Ghostbusters. Tách các Keymasters khỏi Gatekeeper, những người kiểm soát mật khẩu tài khoản người dùng từ những người kiểm soát dữ liệu của người dùng, và bạn sẽ có thể tránh việc có một nhân viên xấu là một điểm thất bại duy nhất. Đó là tốt, bởi vì thay thế là tổng số đảo ngược protonic. – zombat

Các vấn đề liên quan