
Phát triển Java 2.0: Bảo đảm
an toàn dữ liệu của ứng dụng
Java trên điện toán đám mây

Sử dụng mã hóa khóa bí mật để bảo vệ dữ liệu đám mây
An toàn dữ liệu là một mối quan tâm thật sự đối với các tổ chức đang xem xét chọn
dùng đám mây, nhưng trong nhiều trường hợp nó chưa phải là vấn đề. Trong bài
đăng này về Phát triển Java 2.0, hãy học cách sử dụng mã hóa khóa bí mật và Tiêu
chuẩn mã hóa nâng cao (Advanced Encryption Standard) để bảo vệ dữ liệu nhạy
cảm của ứng dụng cho đám mây. Bạn cũng sẽ nhận được một hướng dẫn ngắn về
chiến lược mã hóa, rất quan trọng để tối đa hóa hiệu quả của các tìm kiếm có điều
kiện trên các kho dữ liệu đám mây phân tán.
Chỉ trong một vài năm, các nền tảng và các dịch vụ điện toán đám mây đã thay đổi
đáng kể bối cảnh về phát triển ứng dụng Java™. Chúng đã hạ thấp các rào cản liên
quan đến bảo trì và cấu hình hệ thống và đồng thời đã làm giảm chi phí và tăng tốc
độ đưa phần mềm ra thị trường. Về mặt khái niệm, điện toán đám mây có ý nghĩa
là: các nhà quản lý kinh doanh thích lợi nhuận do đầu tư mang lại còn các nhà phát
triển thích thoát khỏi mã cơ sở hạ tầng. Tuy nhiên, nhiều cơ sở vẫn đang phải vật
lộn với việc nên hay không chuyển sang nền tảng đám mây.
An toàn dữ liệu là một trong những mối quan tâm chính đối với một tổ chức đang
xem xét việc di chuyển hệ thống phần mềm của mình lên một cơ sở hạ tầng đám
mây. Dữ liệu càng nhạy cảm thì càng có nhiều lý do để quan tâm. Là các nhà phát
triển phần mềm, điều quan trọng là chúng ta hiểu các rủi ro an toàn thực sự của

điện toán đám mây lẫn các cách tiếp cận thực tế để giải quyết ít nhất một số trong
các mối quan tâm này.
Trong bài đăng này về Phát triển Java 2.0, tôi sẽ giải thích điều gì làm cho việc
lưu trữ dữ liệu trong đám mây khác với việc lưu trữ nó trên một máy tính trung
tâm. Sau đó tôi sẽ giới thiệu cho bạn cách sử dụng các tiêu chuẩn và các tiện ích
mã hóa khóa bí mật dựng sẵn của nền tảng Java để giữ an toàn hợp lý cho dữ liệu
của bạn, ngay cả khi nó được lưu trữ trên một kho dữ liệu đám mây phân tán. Cuối
cùng, tôi sẽ trình bày một cách tiếp cận chiến lược về mã hóa, bằng cách sử dụng
các điều kiện truy vấn làm một vạch chuẩn để bạn biết có nên hay không nên mã
hóa dữ liệu của mình.
Bảo đảm an toàn dữ liệu đám mây
Điện toán đám mây chính xác không giới thiệu các vấn đề bảo mật dữ liệu mới;
trong hầu hết các trường hợp, nó chỉ khuếch trương các vấn đề này thôi. Việc đưa
dữ liệu lên đám mây có khả năng trưng nó ra cho một đối tượng người dùng lớn
hơn, đó thường là một điều tốt. Nhưng nếu dữ liệu được trưng ra có ý nghĩa riêng
tư hoặc chỉ được truy cập khi có quyền, thì việc đưa dữ liệu lên đám mây có thể là
thảm họa. Vấn đề cơ bản với điện toán đám mây là nó tách dữ liệu được giao phó
khỏi một nhà phát triển hoặc khỏi việc kiểm soát trực tiếp của quản trị viên hệ
thống (sys-admin). Thay vì được lưu trữ và quản lý cục bộ, dữ liệu trong các đám

mây được lưu trữ trên các thiết bị phân tán, có thể được đặt ở bất kỳ đâu và bất cứ
ai đều có thể truy cập được.
Thậm chí nếu trong thực tế công ty của bạn có thể sử dụng kho dữ liệu ở xa, không
tập trung, thì bạn cũng muốn các ứng dụng của mình trong đám mây cần bắt đầu có
một chút về an toàn dữ liệu. Khi bạn bắt đầu suy nghĩ về an toàn dữ liệu, có hai câu
hỏi quan trọng nảy sinh:
Dữ liệu có an toàn trong quá trình hoạt động không?
Dữ liệu có an toàn trong lúc không hoạt động không?
Dữ liệu trong quá trình hoạt động liên quan đến cách dữ liệu truyền đi từ
một vị trí này tới vị trí khác, đó là công nghệ và cơ sở hạ tầng truyền thông
mà bạn đang sử dụng. Dữ liệu không hoạt động liên quan đến việc bạn lưu
trữ dữ liệu như thế nào — và tốt ra sao. Ví dụ, nếu bạn lưu trữ các tên và
mật khẩu người dùng trong một cơ sở dữ liệu không mã hóa chúng, thì dữ
liệu không hoạt động của bạn sẽ không an toàn.
Để bảo vệ dữ liệu trong quá trình chuyển tiếp qua web, hầu hết đều sử dụng
HTTPS. Đây là định dạng HTTP có mã hóa dữ liệu chuyển đi từ các trình
duyệt đến các khách hàng. Một ưu điểm khác của HTTPS là nó có mặt ở
khắp nơi: Hầu hết các nhà phát triển đã cấu hình Apache, Tomcat, Jetty để
sử dụng HTTPS.

Mã hóa cũng là cơ chế chung để bảo vệ dữ liệu ở phần còn lại và điện toán
đám mây không thay đổi điều đó. Trong khi mã hóa có thể là bí mật, bạn chỉ
cần biết một số điều cơ bản về mã hóa để giữ an toàn hợp lý cho dữ liệu của
ứng dụng của mình. Và một khi dữ liệu của bạn đã an toàn, thì dù bạn dùng
dữ liệu cục bộ hay qua một nền tảng điện toán đám mây hoặc kho dữ liệu
đều không thành vấn đề.
Mã hóa khóa bí mật
Mã hóa là quá trình chuyển đổi văn bản thuần, dễ đọc đơn giản với mọi người
thành văn bản khó đọc. Bạn mã hóa bằng một thuật toán mật mã, còn được gọi là
cipher. Văn bản đã mã hóa được giải mã trở lại thành văn bản dễ đọc qua một
khóa, về cơ bản đó là một dạng mật khẩu. Mã hóa giữ an toàn thông tin bằng cách
làm cho thông tin trở nên khó đọc với bất cứ ai không có khóa.
Người ta thường sử dụng hai kiểu mã hóa dựa trên khóa trong điện toán: mã hóa
khóa công khai (dùng chung) và mã hóa khóa bí mật (dùng riêng). Mã hóa khóa
công khai là kỹ thuật phổ biến nhất để giữ an toàn dữ liệu trong quá trình chuyển
tiếp; trên thực tế, đó là kiến trúc bên dưới của tầng bảo mật giao dịch HTTPS.
Dạng mã hóa này đòi hỏi phải có hai khóa trong một bộ khóa công khai-bí mật.
Khóa công khai mã hóa dữ liệu còn khóa bí mật được sử dụng để giải mã dữ liệu
đó. Trong mã hóa khóa công khai, người ta có thể phân phối khóa công khai một