Mã hóa runtime trong bộ nhớ
1. Tổng quan
Khi dữ liệu nhạy cảm như khóa API, access token hoặc thông tin xác thực riêng tư được ứng dụng sử dụng, chúng tạm thời nằm trong bộ nhớ heap. Để giảm khả năng phần mềm độc hại hoặc công cụ quét bộ nhớ tìm thấy các bí mật này, chúng tôi sử dụng một lớp bảo vệ bộ nhớ chuyên biệt được xây dựng với memguard. Điều này đảm bảo thông tin nhạy cảm được lưu trữ trong các vùng nhớ bị khóa, được bảo vệ và chỉ tồn tại trong thời gian ngắn, ngăn ngừa việc vô tình bị lộ hoặc lưu lại sau khi sử dụng.
Mặc dù mã hóa runtime trong bộ nhớ giảm đáng kể rủi ro tấn công kênh kề, nó không loại bỏ hoàn toàn 100% các cuộc tấn công này và không phải là sự thay thế đầy đủ cho một môi trường TEE (Trusted Execution Environment) hoàn chỉnh như Confidential VM.

Mã hóa runtime trong bộ nhớ: bảo vệ khóa và thông tin xác thực nhạy cảm khỏi công cụ quét bộ nhớ và phần mềm độc hại bằng vùng nhớ heap bị khóa và được bảo vệ.
2. Tại sao điều này quan trọng
Ngay cả khi đã mã hóa dữ liệu lúc lưu trữ và lúc truyền tải, bí mật vẫn có thể bị lộ trong khi đang được sử dụng, tức là khi được giải mã cho các thao tác runtime. Các cuộc tấn công bộ nhớ thường nhắm vào đúng khoảng thời gian này bằng cách quét heap của tiến trình để tìm các mẫu khóa dễ nhận diện.
Bằng cách cô lập thông tin xác thực trong vùng nhớ được bảo vệ:
- Dữ liệu bị khóa trong RAM vật lý, không bị swap ra đĩa.
- Các trang nhớ được bao quanh bởi các vùng bảo vệ giúp phát hiện hoặc chặn các nỗ lực truy cập.
- Bộ đệm được xóa trắng một cách tường minh sau khi sử dụng.
- Thời gian tồn tại của bí mật trong bộ nhớ được giảm xuống chỉ còn vài mili giây hoặc vài giây.
Cách tiếp cận này mang lại khả năng phòng thủ nhiều lớp trước việc đánh cắp thông tin xác thực lúc runtime và phần mềm độc hại chạy trong tiến trình.
3. Tổng quan kiến trúc
3.1 Giải mã và nạp dữ liệu
Dữ liệu nhạy cảm (ví dụ: khóa API hoặc token) được giải mã từ kho lưu trữ an toàn hoặc lấy từ trình quản lý bí mật, sau đó được đặt trực tiếp vào vùng nhớ heap được bảo vệ.
3.2 Vùng nhớ được bảo vệ
Sau khi được nạp, dữ liệu được giữ trong một enclave do memguard bảo vệ:
- Không thể swap (bảo vệ dựa trên mlock)
- Được bao quanh bởi các trang bảo vệ
- Tự động hủy khi có lỗi hoặc khi kết thúc phạm vi sử dụng
3.3 Truy cập tạm thời
Dữ liệu được bảo vệ chỉ được truy cập trong thời gian ngắn khi thực hiện các thao tác cần đến nó (ví dụ: xác thực, ký hoặc mã hóa). Không có bản sao lâu dài nào được tạo ở nơi khác trong bộ nhớ.
3.4 Xóa trắng ngay lập tức
Sau khi thao tác hoàn tất, bộ đệm bộ nhớ được xóa trắng an toàn và giải phóng, không để lại dấu vết nào có thể khôi phục của bí mật.
4. Tóm tắt
Thông tin xác thực nhạy cảm chỉ được giải mã vào vùng nhớ heap được bảo vệ, cô lập khỏi không gian tiến trình thông thường. Chúng chỉ được sử dụng trong thời gian ngắn, bị xóa ngay lập tức và không bao giờ được ghi vào log hay đĩa, đảm bảo rằng ngay cả khi máy chủ bị xâm nhập hoặc có nỗ lực kiểm tra bộ nhớ, kẻ tấn công cũng không thể khôi phục các bí mật đang được sử dụng.