Thiết bị mã hóa, smartcard và OpenSC (phần 1)

Tôi mới quay trở lại phát triển tiếp CryptoStick, sau 1 năm gián đoạn. Thực ra công việc của tôi không phải là phát triển phần cứng hay firmware cho nó, mà là mở rộng bộ phần mềm OpenSC để nó có thể nói chuyện, khai thác CryptoStick nói riêng và mọi smartcard theo chuẩn OpenPGP nói chung.

##Thế CryptoStick là gì?

CryptoStick là một loại thiết bị có hình dáng giống bút nhớ USB (pen drive, USB key), nhưng thay vì để lưu trữ dữ liệu như bút nhớ thì nó làm công việc mã hóa, giải mã dữ liệu. Dữ liệu được chuyển vào CryptoStick ở dạng nguyên bản rồi được lấy ra ở dạng đã được mã hóa, hoặc ngược lại.

CryptoStick

Cơ chế mã hóa mà CryptoStick áp dụng là mô hình khóa công khai (public key), sử dụng cặp khóa riêng và khóa công khai (private key, public key).

Ngoài CryptoStick, ta có thể thấy đã có những phần mềm làm chức năng tương tự, như GnuPG. Nhưng trong khi GnuPG là phần mềm và cất các khóa dưới dạng file, lưu trong máy của ta, thì CryptoStick chứa các khóa bên trong nó và không thể lấy ra. Mọi dữ liệu chuyển ra, chuyển vào giữa CryptoStick và người dùng chỉ là dữ liệu cần mã hóa và khóa công khai mà thôi. Do đó, sử dụng CryptoStick, ta không lo bị lộ khóa riêng (private key). Đánh đổi lấy tính bảo mật cao đó là sự bất tiện khi phải mang theo 1 vật lủng lẳng bên mình, và nếu ta lỡ làm hư nó là coi như ta cũng mất luôn mớ dữ liệu đã mã hóa trước đó vì giờ ta không còn có thể giải mã được nữa.

Ghi chú: Có 1 cách để đề phòng sự mất mát, đó là ta tạo khóa bên ngoài, dùng các phần mềm khác chứ không dùng CryptoStick, rồi sau đó import vào CryptoStick. Như vậy, ngoài private key chứa trong CryptoStick, ta còn bản gốc của nó được cất giấu bên ngoài, để dành dùng lại khi lỡ làm hư hay đánh rơi CryptoStick đâu mất.

(còn tiếp)