SQLCipher - Giải pháp mã hóa cho cơ sở dữ liệu nhúng và di động

08:53 | 27/11/2019

Thông thường, người dùng thường sử dụng các ứng dụng được cài đặt sẵn trong các thiết bị di động để lưu trữ dữ liệu cá nhân, bao gồm các mật khẩu, số tài khoản ngân hàng hay thông tin cá nhân. Tuy nhiên, điều này cũng gây ra một số rủi ro về an toàn thông tin mà người dùng có thể gặp như: dữ liệu cá nhân bị lấy cắp và chia sẻ bất hợp pháp từ các ứng dụng bên thứ ba; dữ liệu cá nhân bị khai thác khi thiết bị di động bị đánh cắp; rò rỉ dữ liệu khi thực hiện các kết nối không an toàn… Vậy làm thế nào để đảm bảo an toàn cho dữ liệu lưu trữ trên các thiết bị di động trước các rủi ro mất an toàn thông tin trong quá trình sử dụng?

SQLite là một cơ sở dữ liệu (CSDL) mã nguồn mở với đặc tính nhỏ gọn, cho phép lưu trữ dữ liệu vào một tập tin văn bản trên một thiết bị. Trong thực tế, SQLite mặc định đã được tích hợp trên thiết bị Android và nhiều thiết bị nhúng khác. Để truy cập dữ liệu này, người dùng không cần phải thiết lập bất kỳ kết nối nào như JDBC, ODBC..., SQLite được tác giả Richard Hipp viết dưới dạng thư viện bằng ngôn ngữ lập trình C. Khi người dùng truy cập đến tập tin CSDL này thì sẽ có khả năng đọc các dữ liệu lưu trữ trong đó.

SQLite phiên bản 3.0 trở lên đã được bổ sung tính năng bảo mật bằng phương pháp sử dụng mật khẩu truy cập, khi đó dữ liệu sẽ được mã hóa theo thuật toán RSA. Đây là cách đơn giản nhất để bảo vệ dữ liệu trong SQLite. Hiện nay có nhiều công cụ, bao gồm phiên bản miễn phí và phiên bản thương mại, thực hiện mã hóa dữ liệu lưu trữ trong CSDL SQLite. Bài viết này, giới thiệu giải pháp mã hóa dữ liệu cho CSDL SQLite sử dụng công cụ SQLCipher do Công ty bảo mật ứng dụng Zetetic (Mỹ) phát hành.

SQLCipher là một tiện ích mở rộng mã nguồn mở và thương mại cho CSDL SQLite, cung cấp mã hóa AES 256 bit trong suốt cho các tập tin cơ sở dữ liệu. SQLCipher đã được sử dụng như giải pháp bảo mật cho CSDL SQLite trong nhiều sản phẩm thương mại và mã nguồn mở, điều này trở thành một trong những nền tảng mã hóa CSDL phổ biến nhất cho các ứng dụng trên các hệ thống nhúng, thiết bị di động và một số máy tính. Nhiều tổ chức lớn đã sử dụng SQLCipher cho các ứng dụng của họ như: Samsung, Motorola, Xeror,...

Xử lý dữ liệu khi có (b) hoặc không có SQLCipher (a)

SQLCipher được phát triển bởi Zetetic và được giới thiệu lần đầu vào tháng 11/2008. Ban đầu, SQLCipher chỉ được sử dụng làm nền tảng bảo mật cho ứng dụng Codebook, một ứng dụng quản lý mật khẩu và dữ liệu. Tuy nhiên, do chi phí hoạt động thấp và kích thước nhỏ gọn, nó nhanh chóng trở nên phổ biến đối với các nhà phát triển ứng dụng trên nền tảng iOS và hiện là giải pháp bảo mật CSDL được sử dụng nhiều nhất. SQLCipher đã được sử dụng trên điện thoại iPhone với phiên bản hệ điều điều hành iOS từ 2 trở lên.

Vào năm 2011, dự án Guardian và Zetetic giới thiệu SQLCipher cho nền tảng Android do nhu cầu sử dụng hệ điều hành Android ngày càng nhiều. Từ đó, SQLCipher đã có mặt trong các hệ điều hành Android từ phiên bản 2.x (Eclair) trở lên. Đồng thời, SQLCipher cũng đã được sử dụng thành công trên các nền tảng khác, bao gồm Windows C/C ++, .NET, Ruby, Java, PHP, Python, QT, Mac OS X, Linux ....

Mã nguồn của SQLCipher, phiên bản càng đông SQLCipher được phát hành theo giấy phép mã nguồn mở BSD và các thư viện nhị phân dành cho phiên bản thương mại có sẵn trên các nền tảng Windows, .NET, hệ điều hành OS X, iOS, MonoTouch và Mono cho Android. Thư viện thương mại của SQLCipher hỗ trợ nhiều nền tảng, với giấy phép bản quyền tính trên nhà phát triển hay trên từng nền tảng. Đối với phiên bản SQLCipher dành cho doanh nghiệp (SQLCipher Enterprise Program) cung cấp thêm tính linh hoạt cho các tổ chức có yêu cầu đặc biệt thông qua gói hỗ trợ và cấp phép đăng ký hàng năm có thể tùy chỉnh. Mỗi giải pháp trong gói SQLCipher Enterprise Program được điều chỉnh theo nhu cầu cụ thể của khách hàng và có thể bao gồm nhiều tùy chọn:

- Các tính năng chỉ dành cho doanh nghiệp, ví dụ: hỗ trợ FIPS 140-2.

- Giấy phép bản quyền đầy đủ cho các nền tảng (di động, để bàn...).

- Cam kết SLA cùng các tùy chọn hỗ trợ.

- Bản quyền phân phối lại SDK và khả năng chuyển giao bản quyền.

- Các hàm thư viện SQLCipher tiêu chuẩn và cho các nền tảng đặc biệt như SQLCipher cho Cordova, SQLCipher cho JDBC, Apple WatchKit.

- Các điều khoản linh hoạt khác....

Về cơ bản, các phiên bản của SQLCipher có các đặc điểm bảo mật sau: Trong suốt với người dùng; Hoạt động hiệu quả ngay cả với các CSDL có kích thước lớn; Mã hóa 100% các dữ liệu trong CSDL SQLite; SQLCipher không cần cấu hình hay mã hóa ở mức ứng dụng; Mỗi trang CSDL được mã hóa và giải mã riêng lẻ; Kích thước trang mặc định là 4096 byte nhưng điều này có thể được điều chỉnh trong thực tế để cải thiện hiệu suất cho các loại truy vấn nhất định.

- SQLCipher không xây dựng các mã hóa riêng của nó. Thay vào đó, SQLCipher sử dụng các thư viện mã hóa có sẵn rộng rãi như OpenSSL libcrypto, LibTomCrypt và CommonCrypto cho tất cả các chức năng mã hóa.

- Làm việc với các chỉ mục SQLite nghĩa là truy xuất một bản ghi bằng cách sử dụng tìm kiếm được lập chỉ mục có thể sử dụng ít nhất 5% - 15% tài nguyên trên CSDL SQLite tiêu chuẩn.

- Hỗ trợ đa nền tảng, bao gồm: SQLCipher has broad platform support for with C/C++, Obj-C, QT, Win32/.NET, Java, Python, Ruby, Linux, Mac OS X, iPhone/iOS, Android, Xamarin.iOS, và Xamarin.Android

Việc tính hợp SQLCipher bảo đảm dữ liệu trong CSDL SQLite được thực hiện mã hóa dễ dàng. SQLCipher phù hợp cho các nền tảng với tài nguyên phần cứng. Ngày nay, nhiều công cụ quản trị CSDL SQLite tích hợp sẵn SQLCipher và các mã nguồn mở tích hợp SQLCipher mang đến sự dễ dàng, thuận lợi cho người sử dụng.

Tài liệu tham khảo

[1]. Jay A. Kreibich, (August 27, 2010), Using SQLite: Small. Fast. Reliable. Choose Any Three., O'Reilly Media; 1 edition

[2]. https://www.sqlite.org/index.html

[3]. https://www.zetetic.net/