Điểm:1

Kẻ tấn công có thể đánh cắp dữ liệu từ bảng được mã hóa AES mà không cần biết khóa không?

lá cờ in

Tôi nghĩ đến tình huống kẻ tấn công có thể đánh cắp dữ liệu từ bảng được mã hóa AES mà không cần biết khóa. Tôi đã cố gắng tìm kiếm trên internet nhưng không tìm thấy gì về điều này (có thể tôi đã không sử dụng đúng từ khóa), thực sự đánh giá cao nếu có ai có thể làm sáng tỏ điều đó.

Giả sử rằng bảng được mã hóa bằng cùng khóa nhưng khác IV:

  1. Kẻ tấn công đăng ký một tài khoản mới trong một ứng dụng bình thường.
  2. Ứng dụng tạo tài khoản và chèn một hàng mới (hàng thứ 2 trong bảng bên dưới)
  3. Bằng cách nào đó, kẻ tấn công đã tìm thấy một lỗ hổng trong ứng dụng để chạy SQL injection
  4. Bằng cách tiêm SQL, kẻ tấn công thay thế mật mã của hàng của mình bằng giá trị của nạn nhân ví dụ. aes_cipher_2 -> aes_cipher_1 và iv_2 -> iv_1
  5. Kẻ tấn công đăng nhập vào tài khoản của chính mình
  6. Kẻ tấn công truy cập trang hồ sơ, sau đó ứng dụng giải mã dữ liệu của Nạn nhân (aes_cipher_1) và hiển thị bản rõ cho anh ta.
TÔI tên tài khoản Địa chỉ nhà IV
1 Nạn nhân aes_cipher_1 iv_1
2 kẻ tấn công aes_cipher_2 iv_2
DannyNiu avatar
lá cờ vu
Tốt cho thử nghiệm tư duy, nhưng một số phương pháp hay nhất nên được khuyên cho người đọc: Sử dụng các câu lệnh đã chuẩn bị sẵn và các biến liên kết trong các truy vấn SQL để tránh tiêm nhiễm; Mã hóa cơ sở dữ liệu ở cấp hệ thống tệp, mã hóa cấp bảng dữ liệu quá tinh vi để có hiệu quả.
DannyNiu avatar
lá cờ vu
Bây giờ trở lại câu hỏi. Bạn đang tìm kiếm các biện pháp giảm nhẹ (mà tôi đã đưa ra một số trong nhận xét đầu tiên)? Hay bạn muốn một cái gì đó thiết thực, giống như một cuộc biểu tình tấn công?
fgrieu avatar
lá cờ ng
Lời khuyên của DannyNiu là tốt. Tuy nhiên, hãy lưu ý rằng «Mã hóa cơ sở dữ liệu ở cấp hệ thống tệp» không giúp giải quyết vấn đề của câu hỏi. Mã hóa được xác thực (AES-GCM tương tự) và bao gồm các trường _ID_ và _Username_ trong dữ liệu được xác thực, sẽ đi theo hướng đó. Nhưng vào cuối ngày, nếu kẻ tấn công xâm nhập đủ vào hệ thống của bạn để đọc, thay đổi cơ sở dữ liệu nhiều hơn nữa hoặc bạn cần mã hóa cấp hệ thống tệp, thì bạn sẽ gặp rắc rối lớn. Mục tiêu chính nên là để tránh điều đó. Mã hóa cơ sở dữ liệu hoặc hệ thống tệp (được xác thực) phải là một biện pháp bảo mật _extra_.
lá cờ in
@DannyNiu Đồng ý rằng các câu lệnh được chuẩn bị sẵn có thể ngăn chặn cuộc tấn công tiêm chích. Tuy nhiên, tôi cho rằng biện pháp này không thành công trong trường hợp này. Bạn có thể tư vấn một số giảm thiểu?
lá cờ in
@fgrieu Ý bạn là bao gồm ID/Tên người dùng trong khóa mã hóa phải không?
kelalaka avatar
lá cờ in
Có, [điều này được đề xuất đối với cơ sở dữ liệu được mã hóa CryptDB](https://ieeexplore.ieee.org/abstract/document/7034869/), thậm chí bạn có thể tìm thấy tập lệnh SQL ở đó. Bạn cần tính toàn vẹn và xác thực để giảm thiểu...
Điểm:3
lá cờ ng

Có, cuộc tấn công trong câu hỏi có thể hoạt động, theo các giả định đã nêu. Mã hóa AES-CTR của các trường cơ sở dữ liệu là không nên, vì lý do này và các lý do khác.

Một giảm thiểu một phần có thể là sử dụng mã hóa xác thực, ví dụ như AES-GCM, và bao gồm cả TÔItên tài khoản trường trong dữ liệu được xác thực. Hiệu ứng ròng là dữ liệu được mã hóa (trong một Địa chỉ nhà trường) bị thay đổi theo bất kỳ cách nào, bao gồm cả việc tách khỏi bản gốc TÔI hoặc tên tài khoản hoặc IV., sẽ không giải mã được với độ chắc chắn về mật mã.

Xác thực sẽ làm tăng kích thước của mật mã (dữ liệu trong một Địa chỉ nhà trường) bằng 12 byte (đó là một tham số), bất kể kích thước của TÔItên tài khoản cánh đồng. Việc tăng kích thước nhỏ có thể được giảm thiểu bằng cách tạo phần IV của mật mã, dù sao thì điều này cũng được khuyến khích chỉ vì nó làm cho liên kết giữa mật mã và IV của nó ít có khả năng bị mất hơn. Đặt IV ở đầu dữ liệu được mã hóa bằng mật mã khối là cách thực hành tiêu chuẩn.

Mã hóa được xác thực mang lại khả năng bảo vệ tốt hơn nhiều so với việc lấy khóa AES-CTR từ khóa chính và ID hoặc và tên tài khoản: nếu đối thủ có thể quản lý để thay đổi dữ liệu được mã hóa CTR và quan sát hành vi của một số hệ thống CNTT trên dữ liệu được giải mã, thì điều đáng sợ là họ có thể tìm hiểu điều gì đó về dữ liệu. Ví dụ: nếu byte '<' trong dữ liệu được giải mã gây ra một số hành vi có thể nhận dạng được, thì phải mất 30 lần thử cho mỗi ký tự để giải mã; giống như trong phim. Mã hóa xác thực bảo vệ chống lại điều này, các khóa dẫn xuất thì không.

Tôi còn lâu mới nói rằng mã hóa được xác thực của các mục nhập cơ sở dữ liệu bí mật là hoàn hảo. Nó không mang lại sự bảo vệ từ nhiều người trong cuộc. Nó thậm chí không cung cấp khả năng bảo vệ tốt cho các bản sao lưu, bởi vì khóa thường nằm trong bản sao lưu (vì lý do này, tôi ủng hộ việc mã hóa các bản sao lưu cơ sở dữ liệu bằng khóa chung và mã hóa lai). Và mã hóa được xác thực thường có thể bị phá vỡ. Ví dụ: với quyền truy cập đọc vào cơ sở dữ liệu bao gồm mật khẩu được băm, kẻ tấn công thường có thể thực hiện tìm kiếm mật khẩu để tìm mật khẩu của một số người dùng, sau đó đăng nhập với tư cách là một trong những người dùng này. Và với quyền truy cập ghi, kẻ tấn công có thể thay đổi mật khẩu băm thành mật khẩu mà chúng biết và đăng nhập với tư cách là bất kỳ người dùng nào chúng chọn.

Một lần nữa: mật mã không nên là tuyến phòng thủ đầu tiên cho cơ sở dữ liệu. Những kẻ tấn công không thể truy cập đọc, ít truy cập ghi hơn nhiều.Và cơ sở dữ liệu sử dụng ngôn ngữ văn bản cho các truy vấn (một lỗi thiết kế cố thủ trong thực tiễn CNTT hiện tại, cho phép và vẫn cho phép vô số cuộc tấn công và gây ra sự lãng phí lớn tài nguyên máy tính trong việc tạo và phân tích cú pháp truy vấn), sau đó ít nhất là một thiết kế và xem xét cẩn thận lớp phần mềm tạo truy vấn phải thực thi tách dữ liệu khỏi ngôn ngữ truy vấn.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.