Hosting VPS mã hóaMã hóa dữ liệu lưu trữ bảo vệ một máy đã tắt nguồn.

Mọi nhà cung cấp trên thị trường này đều sẽ nói với quý khách rằng dữ liệu của quý khách an toàn khi ở với họ. Câu hỏi thực sự hữu ích thì hẹp hơn nhiều: khi máy đang chạy và ổ đĩa đang được gắn kết, người vận hành có thể đọc được những gì — và điều gì phải đúng thì câu trả lời mới thực sự là không gì cả.

11 phút đọc · Kiểm tra lần cuối 3 tháng 9 2026 · Không có gì ở đây là trang bán hàng

Ba trạng thái, và trạng thái mà ngành này không bán

Dữ liệu được mô tả là đang ở một trong ba trạng thái, và sự phân biệt đó chính là toàn bộ nội dung của trang này. Lưu trữ (at rest) là một ổ đĩa không ai đang đọc. Truyền tải (in transit) là một gói tin trên đường truyền. Sử dụng (in use) là một tiến trình đang giữ bản rõ trong bộ nhớ để có thể làm điều gì đó với nó.

Hai trạng thái đầu đã được giải quyết và mọi nhà cung cấp đều bán chúng. Đường truyền dùng TLS, và ổ đĩa vật lý bên dưới quý khách gần như chắc chắn đã được mã hóa. Rất ít điều được nói về trạng thái thứ ba, vì đó chính là nơi nhà cung cấp đang đứng: một máy chủ đang chạy có ổ đĩa đã mở khóa, khóa đang thường trú trong bộ nhớ, và dữ liệu ở dạng chưa mã hóa. Đó không phải là một lỗ hổng của mã hóa. Đó chính là ý nghĩa của việc đang chạy.

“Mã hóa dữ liệu lưu trữ” thực sự có nghĩa là gì khi một nhà cung cấp nói ra cụm từ đó

Mã hóa dữ liệu lưu trữ phía nhà cung cấp là có thật và đáng để có. Nó có nghĩa là ổ đĩa, mảng đĩa, hay kho snapshot được mã hóa bằng một khóa do nhà cung cấp quản lý, nên một ổ đĩa rời khỏi tòa nhà — dù bị hỏng, bị thay thế, bán lại hay bị đánh cắp — cũng chỉ là một khối vô dụng chứ không phải một bản sao cơ sở dữ liệu của quý khách. Mọi nền tảng nghiêm túc đều làm điều này, và nó không tốn của quý khách một đồng nào.

Điều nó không thể làm được là loại trừ nhà cung cấp, vì theo đúng định nghĩa, nhà cung cấp chính là bên giữ khóa. Đó là một biện pháp kiểm soát chống lại bến bốc dỡ hàng, chứ không phải chống lại người vận hành. Một nhà cung cấp trả lời câu hỏi về quyền truy cập của chính họ bằng cách mô tả mã hóa dữ liệu lưu trữ thì thực chất đã trả lời một câu hỏi khác, và thường họ cũng thừa biết điều đó.

Phiên bản thực sự loại trừ được nhà cung cấp là phiên bản mà chiếc khóa không bao giờ đến tay họ. Sự đánh đổi đó được ghi rõ trong runbook tương ứng: snapshot ở đây được lưu trữ dưới dạng đã mã hóa, hệ thống này không giữ khóa để đọc nội dung của một ổ đĩa mà chính quý khách đã mã hóa, và vì vậy cũng không thể cứu hộ ổ đĩa đó giúp quý khách. Cả hai nửa của câu đó thực chất là cùng một sự thật, và một nhà cung cấp chỉ nói ra nửa đầu tiên thì vẫn đang giữ một chiếc khóa.

Ba loại máy chủ, ba câu trả lời khác nhau

“Nhà cung cấp của tôi có đọc được ổ đĩa của tôi không” sẽ có câu trả lời khác nhau trên một instance dùng chung, trên toàn bộ một máy, và trong một tủ rack quý khách thuê theo đơn vị. Những khác biệt đó đáng để trình bày rõ, vì chúng thường được bán như cùng một sản phẩm chỉ khác nhau về những con số đi kèm.

Thứ quý khách đang thuêNhững gì người vận hành có thể chạm tới trong lúc máy đang chạyĐiều đó có ý nghĩa gì đối với quý khách
VPS dùng chungHypervisor nắm giữ bộ nhớ guest của quý khách. RAM của guest có thể bị trích xuất, và một lần live migration sẽ sao chép nó sang một máy chủ khác, đó vốn là điều được thiết kế để xảy ra.Bất kỳ khóa nào nằm trong RAM của quý khách đều nằm trong tầm với. Mã hóa bảo vệ ổ đĩa khi được lưu trữ, chứ không bảo vệ guest đang chạy.
Máy chủ riêngKhông có hypervisor nào ở phía trên quý khách. Bộ điều khiển quản lý — IPMI, BMC, hay bất kỳ tên gọi nào nhà sản xuất đặt cho nó — là một máy tính thứ hai nằm ngay trên bo mạch, tồn tại lâu hơn cả hệ điều hành của quý khách.Một diện tấn công nhỏ hơn nhiều, nhưng không phải là bằng không. Bộ điều khiển đó vẫn có thể gắn phương tiện lưu trữ và theo dõi console.
ColocationPhần cứng của quý khách, firmware của quý khách, ổ đĩa của quý khách. Cánh cửa, nguồn điện và đôi tay của một người khác.Điều còn lại là một câu hỏi mang tính vật lý, và đó là loại câu hỏi duy nhất quý khách có thể trả lời bằng một ổ khóa.

Không có dòng nào trong số đó là lập luận chống lại sản phẩm được nêu phía trên nó. Chúng là lập luận cho việc cần biết rõ mình đang mua sự bảo vệ chống lại mối đe dọa nào. Một đơn vị vận hành hypervisor có thể đọc được bộ nhớ của một guest đang chạy trên đó, và một nhà cung cấp tuyên bố ngược lại đã hiểu sai chính hệ thống của mình. Thứ họ đọc được hoặc là dữ liệu của quý khách, hoặc chỉ là nhiễu, và điều nào trong hai khả năng đó đã được quyết định từ nhiều tháng trước, bởi nơi quý khách đặt chiếc khóa.

Nghi thức khóa (key ceremony) chính là toàn bộ cam kết

Tất cả những điều trên đều quy về một câu hỏi vận hành duy nhất: vào thời điểm máy khởi động, chiếc khóa đến từ đâu? Có ba câu trả lời đang được sử dụng, và độ vững chắc của chúng không hề ngang nhau.

  1. Lưu ngay trên máy. Một tệp khóa nằm trên cùng ổ đĩa, hoặc một cụm mật khẩu được nhúng sẵn trong script cấp phát, để máy chủ có thể tự khởi động mà không cần người can thiệp. Đây là kiểu mã hóa chỉ để cho có: ai đọc được ổ đĩa thì cũng đọc được chiếc khóa đang nằm ngay bên cạnh.
  2. Do nhà cung cấp nắm giữ. Tiện lợi, có thể khôi phục được, và chính xác là kiểu sắp xếp mà một lệnh pháp lý có thể tác động vào. Khóa tồn tại, có người đang nắm giữ nó, và việc nắm giữ đó là điều một tòa án có thể nêu đích danh trong một văn kiện.
  3. Do chính quý khách cung cấp ở mỗi lần khởi động. Máy khởi động vào một initramfs và không làm gì cả cho đến khi quý khách kết nối vào và cung cấp cụm mật khẩu. Khóa chỉ tồn tại trong bộ nhớ của máy đó, chỉ trong lúc máy đang chạy, và không ở bất kỳ nơi nào khác trên đời.

Chỉ có cách thứ ba là đưa câu hỏi này ra khỏi góc độ pháp lý. Một lệnh có thể buộc một nhà cung cấp cung cấp những gì họ đang nắm giữ; nó không thể buộc nhà cung cấp đó cung cấp một chiếc khóa mà họ chưa từng được trao. Đó là khác biệt về bản chất chứ không phải về mức độ, và đó là lý do vì sao warrant canary đã ký ở đây còn mang thêm một tuyên bố riêng về việc bị ép buộc làm suy yếu một biện pháp bảo vệ bằng mật mã. Một lời hứa về hành vi và một sự thật về toán học là hai loại văn kiện khác nhau, và chỉ một trong hai loại tồn tại lâu hơn cả người đã tạo ra nó.

Những gì mã hóa toàn bộ ổ đĩa vẫn để lộ ở dạng chưa mã hóa

Một hệ thống file gốc đã mã hóa không phải là một hộp đen. Có nhiều thứ nằm ngoài phạm vi bảo vệ của nó ngay từ cách nó được xây dựng, và biết rõ đó là những gì chính là sự khác biệt giữa việc có một mô hình mối đe dọa thực sự và chỉ dựa vào cảm tính.

  • Chuỗi khởi động (boot chain). /boot và initramfs được đọc trước khi bất cứ thứ gì có thể được giải mã, nên chúng không được mã hóa, và trên phần cứng đi thuê mà quý khách không thể xác thực firmware, chúng cũng không được xác minh. Ai có quyền ghi vào đó đều có thể viết ra thứ gì đó giữ lại cụm mật khẩu của quý khách.
  • Swap và chế độ ngủ đông (hibernation). Swap chưa mã hóa sẽ lưu các trang bộ nhớ đã giải mã mà không hề báo hiệu gì. Hãy mã hóa nó hoặc tắt hẳn đi; không có lựa chọn thứ ba nào là an toàn cả.
  • Hình dạng của chiếc máy. Kích thước các phân vùng, header LUKS, dung lượng ổ đĩa đang được sử dụng, và bản thân sự thật đơn giản rằng nó có được mã hóa hay không.
  • Mọi thứ mà tiến trình đang chạy đang giữ. Cơ sở dữ liệu trong bộ nhớ đệm trang, khóa riêng TLS mà máy chủ web đã nạp lúc khởi động, các biến môi trường, các socket đang mở. Đây là hạng mục lớn nhất trong danh sách này, và mã hóa dữ liệu lưu trữ không chạm đến bất kỳ thứ nào trong số đó.
  • Lưu lượng của quý khách. Quý khách liên lạc với ai, khi nào và bao nhiêu, vẫn y như trước. Đó là chủ đề của hướng dẫn no-logs chứ không phải trang này.

Chuỗi khởi động là điều mà mọi người thường đánh giá thấp. Nếu initramfs là nơi quý khách gõ cụm mật khẩu, thì initramfs lúc này chính là một dấu nhắc thông tin xác thực trên một chiếc máy quý khách không kiểm soát được về mặt vật lý — vì vậy dấu vân tay của khóa host SSH của nó quan trọng không kém gì cụm mật khẩu. Đây là một khóa khác với khóa mà hệ thống đang chạy sẽ hiển thị, và đó chính xác là lý do vì sao một dấu vân tay bị thay đổi lúc khởi động lại dễ dàng được bỏ qua. Hãy ghi lại nó ngay lần đầu tiên và kiểm tra lại ở mọi lần sau đó. Một dấu nhắc trông có vẻ đúng nhưng thực chất không đúng chính là toàn bộ cuộc tấn công.

Những gì nó ngăn được, và những gì nó không ngăn được

Mối đe dọaMã hóa ổ đĩa có giúp ích gì không?Tại sao
Ổ đĩa rời khỏi tòa nhàCó, hoàn toànDù bị hỏng, bị thay thế, bán lại hay bị đánh cắp, một ổ đĩa đã tắt nguồn cũng chỉ là bản mã và không gì khác.
Tịch thu một máy đã tắt nguồnThứ bị lấy đi là trạng thái của ổ đĩa tại thời điểm nguồn điện bị ngắt. Khi không có chiếc khóa nào trong tòa nhà, trạng thái đó chỉ là nhiễu.
Tịch thu khi máy đang chạyKhôngKhóa nằm trong RAM và hệ thống tệp đang được gắn kết. Đây chính là trường hợp mà nội dung tiếp thị không bao giờ nhắc tới.
Lệnh được tống đạt cho nhà cung cấpKhông trực tiếp, và đó chính là điều mấu chốtLệnh đó chỉ được đáp ứng bằng những gì đang thực sự tồn tại. Một chiếc khóa chưa từng được trao thì không thể được cung cấp, bất kể văn kiện đó viết gì.
Nhà cung cấp đọc tệp của quý kháchChỉ trong cách sắp xếp thứ ba nêu trênKhóa do nhà cung cấp quản lý đồng nghĩa với việc nhà cung cấp có quyền truy cập. Khóa của riêng quý khách đồng nghĩa với việc chỉ quý khách có quyền truy cập, không ai khác.
Máy chủ đang chạy bị xâm phạmKhôngMột kẻ tấn công có quyền root trên một máy có ổ đĩa đang được gắn kết là đang ở bên trong ranh giới mã hóa, chứ không phải bên ngoài nó.
Sai lầm của chính quý kháchKhôngMột cụm mật khẩu dán vào một yêu cầu hỗ trợ, hay gõ vào một dấu nhắc chưa được xác minh, sẽ chấm dứt cam kết đó triệt để chẳng khác gì chưa từng có cam kết nào.

Hãy đọc dọc theo cột ở giữa. Mã hóa có tính quyết định chính xác trong những trường hợp máy đang tắt hoặc khóa chưa từng được trao ra, và không còn ý nghĩa gì trong mọi trường hợp máy đang chạy và đã có ai đó ở bên trong. Đó không phải là một điểm yếu cần được thiết kế để né tránh. Đó chính là bản chất của mã hóa, và một trang nào ngụ ý điều khác đi thì chỉ đang cố bán một thứ gì đó mà thôi.

Cái giá phải trả, được nêu rõ trước khi quý khách cam kết thực hiện

Đây là phần mà những trang quảng cáo “hosting đã mã hóa” không hề có, và lý do là vì mỗi mục trong đó đều là một bất tiện có thật mà quý khách sẽ gặp phải trong vòng chưa đầy một tháng.

  • Không có khởi động lại tự động. Một bản cập nhật kernel, một sự cố về nguồn điện, hay một lần di chuyển sang máy chủ khác sẽ khiến máy dừng lại ở dấu nhắc cụm mật khẩu cho đến khi có người đến nhập. Tính sẵn sàng giờ đây phụ thuộc vào lịch trình giấc ngủ của quý khách.
  • Không có cứu hộ. Một nhà cung cấp không đọc được ổ đĩa thì không thể sửa chữa nó. Kiểm tra hệ thống tệp, khôi phục dữ liệu, và cả những yêu cầu kiểu “làm ơn sao chép giúp tôi phần cấu hình được không” giờ đây đều chỉ còn một mình quý khách tự lo liệu.
  • Bản sao lưu là bản mã. Điều đó đúng, và có nghĩa là một lần khôi phục cũng cần đến khóa. Một bản sao lưu mà quý khách không thể mở ra không phải là một bản sao lưu.
  • Một header bị hỏng là chí mạng. LUKS header lưu khóa chủ đã được mã hóa trong một vùng nhỏ ở đầu ổ đĩa. Hãy sao chép nó ra khỏi máy ngay từ ngày đầu tiên; nếu không có nó, dù cụm mật khẩu đúng cũng không mở được gì cả.
  • Một số chi phí phụ trội. Có thật, thấy rõ trong một bài kiểm tra hiệu năng, nhưng hiếm khi là yếu tố giới hạn đối với một khối lượng công việc — mọi bộ xử lý hiện nay đều xử lý AES bằng phần cứng. Hãy đo trên chính máy quý khách đã thuê thay vì tranh cãi suông về nó.

Thiết lập sao cho nó thực sự đáng giá

Các câu lệnh nằm trong cơ sở kiến thức. Phần tiếp theo đây là thứ tự để thực hiện chúng, đó là phần không có sẵn dưới dạng một câu lệnh.

  1. Hãy thu xếp quyền truy cập console trước khi bắt đầu, chứ không phải sau đó. Sai lầm đầu tiên xảy ra ngay tại dấu nhắc khởi động, và SSH lại chính xác là thứ không có sẵn ở đó.
  2. Hãy mã hóa một ổ đĩa thứ hai trước. Dữ liệu trên một ổ đĩa mã hóa riêng biệt mang lại phần lớn lợi ích với chỉ một phần nhỏ rủi ro vận hành, và nó giúp quý khách làm quen với các kiểu sự cố có thể xảy ra trên một chiếc máy vẫn tự khởi động được bình thường.
  3. Chỉ chuyển hệ thống file gốc vào sau lớp mã hóa đó một khi việc này đã trở thành thói quen, cùng với một máy chủ SSH nhỏ trong initramfs để nhận cụm mật khẩu lúc khởi động.
  4. Hãy ghi lại dấu vân tay khóa host của initramfs ngay lần mở khóa đầu tiên, và xác minh lại nó ở mọi lần sau đó. Đây không phải là cùng một khóa mà hệ thống đang chạy sẽ hiển thị, và việc xem một sự thay đổi là bình thường chính là cách một cụm mật khẩu bị đánh cắp.
  5. Hãy sao lưu header LUKS đến một nơi không phải là chính chiếc máy đó, sau đó chứng minh rằng bản sao lưu thực sự mở được ổ đĩa, thay vì chỉ mặc định là nó sẽ hoạt động.
  6. Hãy mã hóa hoặc tắt swap, sau đó kiểm tra lại thực sự những gì quý khách đã dựng nên: lsblk -o NAME,FSTYPE,MOUNTPOINT cho thấy thứ gì nằm sau mapper và thứ gì âm thầm không nằm trong đó.
  7. Hãy khởi động lại máy một lần, một cách có chủ đích, trước khi trên đó có bất cứ thứ gì quý khách sẽ tiếc nếu mất. Lần khởi động lại tự động đầu tiên vào lúc ba giờ sáng không phải là thời điểm để học quy trình đó.

Cách kiểm tra tuyên bố mã hóa của một nhà cung cấp trong mười phút

Cùng một phép thử như ở mọi nơi khác trong bộ tài liệu này: mỗi câu hỏi dưới đây hoặc có một tài liệu làm câu trả lời, hoặc không có.

  1. Thứ đang được mã hóa là nền tảng, ổ đĩa, hay guest — và cái nào trong số đó mới là thứ quý khách thực sự đang hỏi đến?
  2. Ai tạo ra chiếc khóa đó, nó được lưu ở đâu, và quy trình sẽ ra sao khi một khách hàng làm mất nó? Một phương án khôi phục chính là một chiếc khóa thứ hai, và một chiếc khóa thứ hai là một thứ thứ hai có thể bị ra lệnh buộc phải cung cấp.
  3. Quý khách có thể tự mang khóa riêng của mình đến và từ chối chia sẻ nó không? Nếu câu trả lời là có, hãy hỏi xem điều gì sẽ ngừng hoạt động. Nếu không có gì ngừng hoạt động cả, thì việc mã hóa đó vốn chẳng có tác dụng gì.
  4. Có console nào vẫn hoạt động được khi máy không thể khởi động không, và nó được bao gồm sẵn hay tính phí theo giờ?
  5. Nhà cung cấp nói rằng họ sẽ không còn làm được những gì một khi quý khách đã mã hóa? Một nhà cung cấp tuyên bố vừa có quyền riêng tư hoàn hảo vừa có hỗ trợ đầy đủ thì hoặc là chưa suy nghĩ thấu đáo, hoặc đang mô tả một chiếc khóa mà chính họ đang nắm giữ.

Điều cuối cùng đó chính là dấu hiệu để nhận biết. Mọi câu trả lời trung thực trong lĩnh vực này đều khiến nhà cung cấp phải trả một cái giá nào đó, và một tuyên bố không tốn gì để đưa ra thì đang mô tả một sản phẩm chứ không phải một cam kết. Những gì hệ thống này sẽ làm và sẽ không làm được trình bày trong hướng dẫn dành cho cơ quan thực thi pháp luật, và được thống kê trong báo cáo minh bạch.

Những câu hỏi khách hàng thực sự đặt ra

Nhà cung cấp hosting của tôi có thể đọc được tệp của tôi không?

Trên một ổ đĩa chưa mã hóa thì có — ở bất kỳ nhà cung cấp nào, tại bất kỳ quốc gia nào, bất kể họ nói gì về việc ghi log hay khu vực pháp lý. Điều đó xuất phát từ việc vận hành phần cứng, chứ không phải từ một lựa chọn chính sách. Với mã hóa toàn bộ ổ đĩa mà khóa do quý khách cung cấp ở mỗi lần khởi động, câu trả lời trở thành không trong lúc máy đang tắt, và vẫn là không ngay cả khi máy bị tịch thu, vì không có gì trong toàn bộ hệ thống có thể giải mã được nó.

Việc mã hóa ổ đĩa của tôi có ngăn được lệnh của tòa án không?

Không, và sự phân biệt này đáng được giữ lại rõ ràng. Một lệnh có thể buộc một nhà cung cấp cung cấp những gì họ đang có. Nó không thể tạo ra một chiếc khóa chưa từng được trao, nên thứ mà lệnh đó thu được chỉ là bản mã. Câu hỏi chuyển từ góc độ pháp lý sang góc độ toán học, và câu trả lời toán học đó không hề thay đổi tùy theo tòa án.

Một VPS được mã hóa sẵn từ nhà cung cấp có phải là cùng một điều không?

Thường thì không. Cụm từ đó gần như luôn có nghĩa là mã hóa dữ liệu lưu trữ ở tầng nền tảng, dưới một khóa do nhà cung cấp quản lý, bảo vệ một ổ đĩa rời khỏi tòa nhà nhưng không loại trừ được nhà cung cấp. Nó đáng để có, nhưng lại không phải là thứ mà hầu hết mọi người bỏ tiền ra mua vì lý do đó. Hãy hỏi xem ai giữ khóa trong lúc máy đang bật.

Điều gì xảy ra khi một máy chủ đã mã hóa khởi động lại?

Máy sẽ dừng lại và chờ quý khách. Đó chính là cái giá của cách sắp xếp này, và không có phiên bản nào thiếu đi điều đó, vì một chiếc máy có thể tự mở khóa chính là một chiếc máy đang giữ khóa của chính nó. Hãy lên kế hoạch để mỗi lần cập nhật kernel đồng nghĩa với một lần mở khóa theo lịch, và giữ sẵn quyền truy cập console cho lần khởi động nào đó gặp trục trặc.

Mã hóa toàn bộ ổ đĩa có làm chậm máy chủ không?

Thấy rõ trong một bài kiểm tra hiệu năng, nhưng hiếm khi thấy trên một khối lượng công việc thực tế. Mọi bộ xử lý hiện nay đều xử lý AES bằng phần cứng, và nút thắt cổ chai thông thường vẫn nằm ở chỗ vốn có. Chạy lệnh cryptsetup benchmark ngay trên chính chiếc máy quý khách đã thuê sẽ cho câu trả lời chính xác hơn bất kỳ con số nào in trên một trang web.

Mã hóa một ổ đĩa thứ hai như vậy đã đủ chưa?

Với hầu hết mọi người, đây là bước đầu tiên hợp lý và thường cũng là bước cuối cùng: đặt dữ liệu lên ổ đĩa đã mã hóa trong khi hệ điều hành vẫn đọc được bình thường, nhờ đó khởi động lại tự động và công cụ cứu hộ vẫn hoạt động. Điều nó không bao phủ là những gì hệ thống đã ghi ở nơi khác — log, swap, tệp tạm, bộ nhớ đệm trang. Hãy quyết định điều đó một cách có chủ đích, thay vì để mặc định quyết định thay quý khách.

Tôi có thể thực hiện việc này trên một máy chủ riêng nữa không?

Có, và chống lại một diện tấn công nhỏ hơn so với trên một instance dùng chung, vì không có hypervisor nào ở phía trên quý khách nắm giữ bộ nhớ của quý khách. Bộ điều khiển quản lý vẫn còn đó và vẫn tồn tại lâu hơn cả hệ điều hành của quý khách, nên chuỗi khởi động vẫn cần được quan tâm kỹ lưỡng như vậy. Trên phần cứng thuộc sở hữu của quý khách, đặt trong một tủ rack quý khách thuê, điều còn lại chỉ là một câu hỏi vật lý.

Còn bộ nhớ được mã hóa, hay điện toán bảo mật (confidential computing) thì sao?

Đó là điều có thật và đúng là mục tiêu cần nhắm tới: AMD SEV-SNP và Intel TDX mã hóa bộ nhớ của guest để chống lại chính hypervisor, đó chính là khoảng trống mà toàn bộ trang này mô tả. Phần khiến nó thực sự có ý nghĩa là chứng thực từ xa (remote attestation) — bằng chứng, dành cho quý khách, rằng chiếc máy quý khách đang giao tiếp thực sự đang chạy đúng thứ quý khách nghĩ, ở đúng chế độ quý khách nghĩ. Một nhà cung cấp chào mời “RAM đã mã hóa” mà không có một cơ chế chứng thực quý khách có thể tự xác minh thì chỉ đang đưa ra một tuyên bố, chứ không phải một biện pháp kiểm soát thực sự.

Mọi mức giá trên toàn hệ thống này được công bố đầy đủ, tại một nơi duy nhất. Xem toàn bộ danh mục