2011-01-08 39 views
11

Có nhiều cách tiếp cận khi chạy mã không tin cậy trên CPU điển hình: hộp cát, gốc giả, ảo hóa ...Mã GPGPU không đáng tin cậy (OpenCL vv) - có an toàn không? Rủi ro gì?

Còn mã không đáng tin cậy cho GPGPU (OpenCL, cuda hoặc đã biên dịch) thì sao?

Giả sử rằng bộ nhớ trên card đồ họa được xóa trước khi chạy bên thứ ba đang không tin cậy như vậy,

  • được có bất kỳ rủi ro an ninh?
  • Loại rủi ro nào?
  • Bất kỳ cách nào để ngăn chặn chúng?
    • Có phải hộp cát có thể/khả dụng trên gpgpu?
    • có thể là thiết bị nhị phân?
    • các kỹ thuật khác?

P.S. Tôi quan tâm nhiều hơn đến an ninh cấp mã nhị phân của gpu thay vì bảo mật ngôn ngữ lập trình cao cấp gpgpu (Nhưng những giải pháp đó cũng được chào đón). Những gì tôi có nghĩa là tài liệu tham khảo để mã hóa gpu (mã máy a.k.a) được chào đón.

+0

Cảm ơn Navi đã trả lời. Giả sử tôi sẽ sử dụng thẻ gpu riêng để tính toán (ví dụ như Tesla cũ hơn ...). Làm thế nào để thực hiện như vậy thực thi mã không đáng tin cậy an toàn? –

Trả lời

2

Rủi ro giống như với bất kỳ chương trình C. Ngoài ra, bạn có thể làm cho toàn bộ màn hình của mình bị đóng băng. Tôi đã làm được điều đó một lần, bằng cách thực hiện một phép tính rất dài. Hiệu ứng là màn hình không cập nhật nữa, ví dụ thời gian trên widget đồng hồ không thay đổi trong khoảng thời gian đó. Vì vậy, bạn nên sử dụng hai card đồ họa - một cho các công cụ GPU.

+0

Ok, do đó, giả sử chúng ta có một thẻ riêng biệt để xử lý CPU. Vậy thì những rủi ro gì? Bạn đã viết "giống như với bất kỳ chương trình C nào", thực sự ... "C" chương trình có thể dễ dàng thực thi "system()", điều gì có thể xảy ra trong trường hợp trên? –

2

Mã GPU chắc chắn có thể nguy hiểm. Các GPU hiện tại không cung cấp khả năng bảo vệ bộ nhớ, do đó, về cơ bản, mọi hạt nhân GPU đều có thể truy cập tất cả bộ nhớ video. Tôi không chắc chắn nếu nó có thể truy cập vào bộ nhớ của máy chủ là tốt (thông qua bản đồ bộ nhớ có thể?). Nó không thể để hạt nhân trước, họ có thể "hog" GPU và điều này gây đóng băng nếu nó được sử dụng cho đầu ra đồ họa, quá. (Thông thường trình điều khiển sẽ chấm dứt hạt nhân không thoát sau vài giây)

Giả sử, dòng GPU mới của AMD có một số tính năng bảo vệ bộ nhớ, nhưng tôi nghi ngờ chúng được sử dụng tại thời điểm này. Có thể chia các bộ xử lý GPU thành nhiều phân đoạn với phần cứng gen hiện tại (GeForce 4xx +, Radeon 6xxx +), nhưng điều đó không thực sự giống với đa nhiệm thời gian thực, được cắt trước. ;)

+0

Trên thực tế, GPU của NVIDIA đã có bộ nhớ bảo vệ (với một MMU) từ ít nhất là 8000 series. Tôi không biết về ATI. Ví dụ, nó không nên có thể gây ra leo thang đặc quyền từ một quá trình không gian người dùng bằng cách sử dụng mã GPU. – wump

+0

bướu: bạn có chắc không? Vì nó có vẻ khá rõ ràng rằng không có bộ nhớ bảo vệ. Việc ghi bên ngoài bộ nhớ đệm được cấp phát có thể gây ra tất cả những điều kỳ lạ xảy ra, bao gồm cả sự cố hệ thống máy chủ (trên G80/GT200, chưa được thử nghiệm trên GF100). Chắc chắn không có MMU nào hoạt động để bảo vệ bộ nhớ, ngay cả khi nó tồn tại. – dietr

+0

Thật vậy, có thể làm hỏng GPU bằng cách ghi bên ngoài bộ đệm bộ đệm được cấp phát. Nếu đây là CPU giống như được sử dụng để hiển thị, hệ thống của bạn sẽ bị lỗi. Tôi đã luôn luôn giả định điều này là do lỗi trong trình điều khiển.MMU là có và hoạt động mặc dù, và ngăn chặn một quá trình từ văn bản vào một số không gian bộ nhớ của quá trình khác. Tôi nghĩ * nếu bạn có một GPU riêng thì không thể làm hỏng hệ thống của bạn theo cách này. – wump

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