(91) 350-9520 support@omarine.org M-F: 7 AM - 7 PM; Weekends: 9 AM - 5 PM

Ký thông điệp tiếng Việt

Không có vấn đề về ngôn ngữ khi ký một thông điệp. Chương trình gpg2 không thực hiện một chuyển đổi nào đối với bộ ký tự của dữ liệu, các mã kí tự được giữ nguyên bản. Nếu bạn muốn ký một thông điệp tiếng Việt, ví dụ thông điệp có nội dung “Đây là một thông điệp”, bạn lưu nó vào một tệp văn bản chẳng hạn vimessage.txt với mã hóa kí tự dạng UTF-8. Bạn ký thông điệp

cat vimessage.txt | gpg2 -o vimessagesigned.txt --clearsign

Dòng lệnh trên không có lụa chọn -u để chỉ ra người ký nên người ký sẽ là người ký mặc định, thông thường là người có khóa là khóa đầu tiên trong chùm khóa bí mật. Thường thì bạn tạo khóa đầu tiên cho chính mình và khóa đó là khóa đầu tiên trong chùm khóa bí mật, nếu không thay đổi cấu hình với lựa chọn --default-key thì người ký mặc định chính là bạn. Tệp văn bản đã ký được sinh ra là vimessagesigned.txt. Bạn nhấn chuột phải vào tệp này và chọn mở nó bằng LibreOffice Writer, nội dung tệp có dạng

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Đây là một thông điệp 
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2

iQEcBAEBAgAGBQJUqOoWAAoJEP3JzRIGRBPtjogIALQ8lTYbcVpvc4LvoXaHmZ2j
Q5pHq+4T+9CgT9vUdJS2hM9miO/UnWRLraZdklZs2hHqw2gGOoKLK0213BNcLBXE
xWm7/WyQgLCL+qVvU4ofkZySsYlRZy59/b4izs5IqlvsDIktYChC8t2BJyU97KeY
giaNfqtohhrDgwCrVR8/uKW/Pw5yW7DQkrG7Ru2W+eslwciQfaFvzzWwrc0Y89UN
AQ7DpsO+lg8Yi8OzoaRtwqa5zoV1pPNxV10TASdJxEEIcEtMjtNkVFF6dw9ggvdo
BGtDamF8xhGui87kx+aemGPrLdCWGVm21AnqyxJUvlYvL3yC1cpejcBoMxi8dVQ=
=Eaz7
-----END PGP SIGNATURE-----

Bây giờ bạn nhấn chuột trái vào tệp vimessagesigned.txt, tệp sẽ được mở bằng chương trình mặc định Kate

vimessage

Nội dung thông điệp hiển thị ở dạng không đọc được. Lý do là vì chương trình Kate mặc định đọc tệp văn bản với mã ISO-8859-1 (Latin 1)trong khi các kí tự của thông điệp lại mang mã UTF-8.

Chúng ta phân tích kí tự ‘â’, là kí tự thứ hai của từ đầu tiên, từ “Đây” trong thông điệp “Đây là một thông điệp”. Kí tự ‘â’ có điểm vào Unicode0x00e2. Trong vai trò một kí tự UTF-8, với điểm vào này nó được mã hóa bằng 2 bytes là 0xc30xa2. Chúng ta hãy xem 2 bytes này biểu diễn 2 kí tự ISO-8859-1 như thế nào

echo -e '\xc3\xa2'
â

Đó chính là các kí tự thứ ba và thứ tư trong thông điệp khi hiển thị với mã ISO-8859-1 như hình bên trên(2 kí tự đầu ứng với kí tự ‘Đ’ dạng UTF-8).

Vậy là đã rõ. Nội dung của thông điệp cần phải khớp với chữ ký là giá trị từng byte của nó chứ không phụ thuộc thông điệp được hiển thị ra sao. Khi xác minh chữ ký, các giá trị này phải đảm bảo chính xác bằng với từng byte tương ứng của thông điệp gốc, nếu không xác minh chữ ký sẽ thất bại, cho biết thông điệp không có giá trị với chữ ký. Điều đó cũng cho thấy một thông điệp tiếng Việt cần ký có thể là văn bản tiếng Việt gồm các kí tự tiếng Việt bất cứ dạng gì, UTF-8, UTF-16 hay kí tự tiếng Việt 1 byte. Quá trình xác minh chữ ký thực hiện xác minh nội dung các bytes dữ liệu của thông điệp chứ không để ý đến khía cạnh bộ kí tự mà thông điệp sử dụng. Tuy nhiên chúng ta nên sử dụng UTF-8 vì những lý do dưới đây cùng với một vài lưu ý

  • Thông điệp đã ký đi qua môi trường, qua các hệ thống khác nhau nên cần sử dụng tiếng Việt Unicode
  • Văn bản đã ký không chỉ có thông điệp mà gồm cả chữ ký. Các kí tự của chữ ký là các kí tự ASCII, thuộc 128 kí tự đầu của UTF-8 nên giữ toàn bộ văn bản trong một tệp văn bản UTF-8 là thuận tiện và không ảnh hưởng gì tới việc xác minh chữ ký.
  • Chúng ta nên thống nhất sử dụng UTF-8. Một thông điệp đã ký và công bố trên một trang Web hay trong một bức email, khi chép ra để xác minh chữ ký chúng ta chỉ cần hiểu rằng thông điệp gốc ở dạng UTF-8.
  • Một thông điệp đã ký và công bố trên một trang Web hay trong một bức email, tùy theo cấu hình trình duyệt Web hay trình khách email, nó có thể ở dạng Unicode không phải UTF-8 cho dù thông điệp gốc là UTF-8. Sau khi chép thông điệp vào cửa sổ soạn thảo(Kate), nếu trình soạn thảo đang trong trạng thái đọc mã không phải UTF-8, bạn sử dụng chức năng “Save As” rồi chọn mã hóa UTF-8 để giữ tệp. Ngược lại, nếu trình soạn thảo đã ở trạng thái đọc mã UTF-8, bạn nhấn “Save”. Thao tác này thực sự chuyển đổi mã kí tự của thông điệp về UTF-8 nếu cần.
  • Không sử dụng chức năng “Save As” rồi chọn mã hóa UTF-8 để giữ thông điệp sau khi ký mà không đọc được văn bản như hình bên trên. Điều này gây ra chuyển đổi mã kí tự, một kí tự ISO-8859-1 của thông điệp mà mã của nó vốn chỉ là một byte thành phần của kí tự UTF-8 gốc lại được chuyển thành mã UTF-8. Thông điệp chẳng những không trở về dạng hiển thị tiếng Việt mong muốn mà mã kí tự lại bị biến đổi khiến cho nội dung của thông điệp trở thành sai. Mã kí tự phải không thay đổi. Thông điệp sau khi ký đã có mã đúng, chỉ có hiển thị sai. Để giải quyết vấn đề hiển thị, bạn làm theo như dưới đây

Giữ thông điệp đã ký trong tệp mã hóa UTF-8

Thông điệp sau khi ký chứa các mã kí tự UTF-8 nhưng nó không hiển thị đúng vì chương trình Kate không biết điều này. Bạn cần cấu hình cho tệp chứa thông tin định dạng UTF-8 bằng cách chọn menu Tools->Encoding->Unicode->UTF-8.

vimessage-utf8

Cách trên chỉ cấu hình cho từng tệp riêng lẻ. Có một cách khác áp dụng cho tất cả các tệp mới mở mặc định sử dụng UTF-8 nhưng phải thay đổi cấu hình chương trình Kate. Bạn chọn menu Settings->Configure Kate. Hộp thoại cấu hình Configure – Kate mở ra, Bạn chọn mục Open/Save trong cây bên trái, rồi thả hộp combo với nhãn Encoding và chọn Unicode (UTF-8).

configure_kate

Thực hành xác minh chữ ký thông điệp tiếng Việt trên Web

Thông điệp ví dụ bên trên do tôi ký với khóa có số nhận dạng là 0x064413ED. Bạn có thể thực hành nhập khẩu khóa về từ keyserver để xác minh chữ ký thông điệp

gpg2 --keyserver hkp://keys.gnupg.net --recv-keys 0x064413ED

Bạn chép thông điệp đã ký bên trên và lưu vào một tệp văn bản đặt tên là vimessagesigned.txt với định dạng UTF-8. Xác minh thông điệp như sau

gpg2 --verify vimessagesigned.txt

 

Advertisements

Gửi phản hồi

Website này sử dụng Akismet để hạn chế spam. Tìm hiểu bình luận của bạn được duyệt như thế nào.

%d bloggers like this: