Kiến Thức Nền

« English »

cập nhật: 2023-07-09
(‘Giao Thức Điện Tín Mở Rộng’ → ‘Giao Thức Điện Tín Trạng Mở’)

Để nhìn thấy được bức tranh của thực tại, có những khái niệm chúng ta buộc phải hiểu. Dưới đây, tôi xin trình bày những khái niệm này theo cách tối giản nhất có thể.

Thực Tế ≠ Tiếp Thị

Có thể từ trang giới thiệu về thư điện tử, bạn đã nhận ra rằng “thuật toán đám mây” là cụm từ của phòng tiếp thị - khác xa với sự thật của cơ sở hạ tầng. Nếu bạn vẫn chưa hiểu thì tôi xin đánh vần ra ở đây:

ĐÁM MÂY THÌ Ở TRÊN TRỜI,

CÒN Ở DƯỚI ĐẤT, CHỈ CÓ MẠCH ĐIỆN VÀ BỘ NHỚ THÔI.

Trong thực tế, không gian mạng (hoặc là internet), là hệ thống máy tính được kết nối với nhau trên khắp hành tinh. Thứ mà người ta ví là đám mây ở đây là những máy hầu thông tin cho con người khi chúng ta truy cập mạng lưới thông tin bằng máy khách.

Tôi nghĩ nếu chúng ta tiếp tục sử dụng những cụm từ trừu tượng & sai sự thật này để mô tả thực tại thì càng ngày toàn xã hội sẽ càng lẫn lộn trong núi thông tin vốn dĩ đã rất rườm rà & rắc rối của ngành tin học.

Cấu Trúc Thông Tin

Cũng như toán học chỉ có hai phép tính căn bản là trừ và cộng, tin học cũng chỉ có hai cấu trúc làm nền móng cho tất cả mọi hệ thống thông tin bất kể về kích thước:

  1. Tập quyền. (centralized)
  2. Phân quyền. (federated)

Hệ thống internet theo bản chất là hệ thống phân quyền. Nghĩa là thông tin không được tập trung vào duy nhất một điểm nào. Mọi cá nhân đều có quyền đăng tải nội dung của riêng mình và có quyền truy cập thông tin tại (hoặc là @) nơi khác và thoát bất cứ lúc nào tuỳ ý.

Trang mạng bạn đang đọc này là một ví dụ. Vì tôi có thể thiết kế giao diện theo kiểu gì tuỳ thích, cập nhật hoặc xoá lúc nào tuỳ ý, và không ai có quyền cấm tôi đăng tải nội dung theo cách chính thống, nếu tôi không làm gì phạm pháp. Quan trọng nhất là tôi không có quyền khống chế bạn truy cập trang mạng khác.

Thư điện tử cũng là một minh chứng cho điều này vì chúng ta có thể liên lạc được với bất kì ai, bất kể bạn và người bạn muốn đối thoại đăng kí dịch vụ E-mail ở đâu. Nghĩa là tài khoản @trung.fun có thể gửi và nhận thư với tài khoản @yahoo.com hoặc @gmail.com hoặc bất kì nơi nào khác trên không gian mạng.

Tuy nhiên, một khi chúng ta sử dụng dịch vụ điện tín với mã nguồn đóng của một cty nào đó, thì nó đồng nghĩa với việc chúng ta đang sử dụng internet theo hệ thống tập quyền. Lý do là vì những cty này sẽ ép người dùng của họ chỉ liên lạc được với những tài khoản trong hệ thống của riêng họ. Nghĩa là tài khoản bạn đăng ký tại WhatsApp sẽ không thể liên lạc được với tài khoản đăng kí ở Telegram hoặc ở Zalo hoặc v.v….

Nói cách khác, chúng ta đang vô tình giao quyền lực và cống nộp các cuộc đối thoại của mình cho một tổ chức mà chính chúng ta cũng không biết thực ra ai đang là chủ chứ chưa bàn đến mục đích của họ là gì với thông tin họ thu được từ mình.

Phía dưới là biểu thị để giúp bạn hình dung hệ thống mạng tập quyền này:


                    Khách(d₄)                             Khách(c₄)
                       ↑                                      ↑
                       ·                                      ·
                       ↓                                      ↓                
        Khách(d₁)←·→Hầu(D)←·→Khách(d₃)         Khách(c₂)←·→Hầu(C)←·→Khách(c₃)    
                       ↑                                      ↑
                       ·                                      ·
                       ↓                                      ↓                
                    Khách(d₂)                             Khách(c₂)



                    Khách(a₄)                             Khách(b₄)
                       ↑                                      ↑
                       ·                                      ·
                       ↓                                      ↓                
        Khách(a₁)←·→Hầu(A)←·→Khách(a₃)         Khách(b₂)←·→Hầu(B)←·→Khách(b₃)    
                       ↑                                      ↑
                       ·                                      ·
                       ↓                                      ↓                
                    Khách(a₂)                             Khách(b₂)

Để ý là máy Hầu(A) không nói chuyện với máy Hầu(B) hay Hầu(C) hay Hầu(D)…

Mã Nguồn

Thiết bị tin học có 2 phần chính là phần cứng và phần mềm. Phần mềm chỉ tồn tại trong phần cứng. Phần cứng là những thứ trong thế giới vật lý. Chúng bao gồm bàn phím, chuột, màn hình LED|cảm ứng, loa, bộ vi xử lý (CPU), ổ cứng, thẻ nhớ, v.v.…. Nếu chỉ có phần cứng, những thứ này có giá trị tương đương rác công nghiệp.

Để sai khiến được phần cứng, chúng ta « con người » phải viết phần mềm.

Phần mềm được xây từ mã nguồn. Mã nguồn là thứ mà con người viết để lệnh cho phần cứng làm việc mà con người cần. Phần mềm với mã nguồn mở nghĩa là bất cứ người nào cũng có thể đọc xem cái máy của mình nó sẽ làm gì khi mình cho chạy phần mềm.

Khái niệm này thật ra rất bình thường trong thế giới vật lý. Vì khi ta mua bất kì sản phẩm gì, ta luôn có thể cân đo đong đếm và tự tính toán lại để kiểm chứng xem thứ mình nhận được có chuẩn với số tiền mình trả không.

Trong quá khứ, khi tôi chọn dùng những phần mềm với mã nguồn đóng, chẳng ai ngoài những người viết những phần mềm này biết được thực sự thiết bị của tôi đang làm cái gì khi tôi cho chạy những trương trình này. Có thể nó đang đào ₿itcoin, hoặc mở máy quay lên xem, hoặc mở micro lên nghe, hoặc theo dõi thông tin tài chính, hoặc làm gì khác thì chỉ có trời biết.

Khi hiểu được điều này thì tôi buộc phải chuyển sang dùng phần mềm với mã nguồn mở. Với những phần mềm này tôi luôn có thể tự kiểm chứng xem nó có làm đúng việc như quảng cáo hay không. Và không chỉ riêng một mình ngố tôi, những phần mềm này liên tục được cộng đồng trên toàn quả đất kiểm duyệt, khắc phục và cập nhật.

Phần Mềm Tự Do

‘Free Software’ dịch là ‘Phần Mềm Tự Do’. Không phải ‘miễn phí’.

Tự do trong phần mềm là khái niệm được đúc kết bởi quý ông tên Richard Stallman. Định nghĩa bao gồm 4 điều:

  1. Tự do để dùng dùng trương trình cho bất kì việc gì.
  2. Tự do để nghiên cứu cách thức hoạt động của trương trình và thay đổi cho mục đích khác theo tuỳ ý.
  3. Tự do để tái phân phối và sao chép trương trình để giúp người khác.
  4. Tự do để cải tiến trương trình, và phát hành cải tiến cho đại chúng để toàn cộng đồng hưởng lợi.

Điều (1.) và (3.) định nghĩa khái niệm ‘mã nguồn mở’. Vậy nên phần mềm tự do là phần mềm có mã nguồn mở. Nhưng phần mềm với mã nguồn mở không có nghĩa là phần mềm tự do.

Tất cả các phần mềm @trung.fun đều là phần mềm tự do.

Giao Thức

Giao thức là cách bắt tay giữa các phần mềm với nhau.

Bạn đang đọc trang mạng này qua giao thức HTTP hoặc HTTPS. Phần mềm trên máy hầu của tôi bắt tay với trình duyệt của bạn trước khi phục vụ nội dung tôi soạn sẵn qua một trong hai giao thức này.

Tương tự như vậy, những phần mềm điện tín nguồn mở thì bắt tay với nhau theo kiểu XMPP.

XMPP

‘Extensible Messaging Presence Protocol’ viết tắt là XMPP tạm dịch là ‘Giao Thức Điện Tín Trạng Mở’. Đây là tiêu chuẩn quốc tế cho việc nhắn tin tức thời, tắt là điện tín. Tên cũ của nó là Jabber (tôi nghĩ là dễ đọc hơn).

Extensible Messaging Presence Protocol

Vì XMPP là giao thức mở, nó vẫn đang được cộng đồng tiếp tục phát triển và cải tiến. XMPP hoạt động với cấu trúc tương tự như thư điện tử. Phía dưới là biểu thị mô tả hệ thống mạng phân quyền của E-mail và XMPP:


                     Khách(a₂)    Khách(d₁)
                        ↑            ↑
                        ·            ·
                        ↓            ↓
        Khách(a₁)←····→Hầu(A)←·····→Hầu(D)←····→Khách(d₂)    
                        ↑            ↑
                        ·            ·
        Khách(e₁)←···   ·            ·      ···→Khách(f₂)
                    ·   ↓            ↓      ·
                    ··→Hầu(E)←·····→Hầu(F)←··
                    ·   ↑            ↑      ·
        Khách(e₂)←···   ·            ·      ···→Khách(f₁)
                        ·            ·
                        ↓            ↓
        Khách(c₂)←····→Hầu(C)←·····→Hầu(B)←····→Khách(b₁)
                        ↑            ↑
                        ·            ·
                        ↓            ↓
                     Khách(c₁)    Khách(b₂)

Như bạn có thể thấy, tất cả máy hầu đều được kết nối với nhau. Vậy nên tất cả mọi người đều có thể tự do liên lạc được với nhau trong hệ thống này.

Nói cách khác, giống y như E-mail, địa chỉ bạn đăng kí tại @trung.fun có thể trao đổi thông tin được với @jabber.org hoặc @yax.im hoặc bất kì tài khoản nào khác sử dụng giao thức này.

XMPP cũng đỡ rườm rà hơn rất nhiều vì giữa khách-hầu và hầu-hầu bọn phần mềm chúng nó đều nói chuyện với nhau theo cùng một kiểu XMPP; không như E-mail nhảy múa đủ kiểu lăng nhăng.

Những ‘ông lớn’ cung cấp dịch vụ điện tín với mã nguồn đóng họ cũng đã từng là một phần của mạng phần quyền XMPP. Tiêu biểu là Yahoo Messenger của Yahoo, Messenger và WhatsApp của Meta (FaceBook), Google Talk, v.v.…. Những cty này đã từng mở cửa dịch vụ để cho phép người dùng của họ liên lạc với những địa chỉ XMPP khác. Bây giờ những cái cửa này đã đóng rồi.

Bảo Mật

Cũng như E-mail, nhân vật cần nên chú ý khi dùng dịch vụ điện tín vẫn chính là đơn vị cung cấp dịch vụ. Nếu bạn không mã hóa dữ liệu từ máy của mình thì chả khác gì bạn cho phép nhà cung cấp ngồi cạnh nghe lỏm từng chữ bạn đang nói.

Khi bạn dùng dịch vụ điện tín chủ thuộc với mã nguồn đóng, khả năng là cty đó sẽ quảng cáo rất rầm rộ về các phương thức bảo mật cho người dùng của họ. Nhưng chính vì phần mềm của họ là mã nguồn đóng, không có cách nào để bạn kiểm chứng những lời quảng cáo của họ cả. Bạn chỉ có cách là nhắm mắt tin bừa thôi. 😁

Tương phản với điều này, có rất nhiều những phần mềm mã nguồn mở sử dụng giao thức XMPP. Khi bạn dùng những phần mềm này, bạn có thể kiểm chứng tất cả mọi thứ. Cũng vì nó là giao thức mở nên bạn không chỉ có một mà đến những ba lựa chọn cho việc mã hóa tuỳ theo phần mềm bạn chọn dùng:

Thứ nhất là OTR, viết tắt cho ‘Off The Record’. Công nghệ này cho phép bạn kiểm chứng người bạn đang đối thoại có thật sự là người bạn nghĩ hay không. Dù tính năng nghe rất kêu, nhưng tôi thấy cách này trong thực tế hơi rườm rà và thiếu những chức năng rất cần thiết như mã hoá dữ liệu khi người nhận không hiện diện trên mạng. Công nghệ này tôi nghĩ là đã lỗi thời.

Thứ hai là OMEMO, viết tắt cho ‘OMEMO Multi-End Message and Object Encryption’. Công nghệ này rất tiện cho thiết bị di động vì nó tạo khóa bảo mật dựa trên mã số vô song của thiết bị. Đa số các trình khách sẽ tự động tạo khoá cho bạn ngay khi bạn đăng nhập lần đầu. Tối đa, bạn chỉ việc bấm nút một lần và dùng thôi. Công nghệ này còn cho phép bạn chọn thiết bị mà người nhận tin có thể đọc tin nhắn bạn gửi. Bạn cũng có thể an tâm hội thoại với công nghệ này. Nhược điểm đó là bạn vẫn có thể mất thiết bị di động nếu dựa hoàn toàn vào phương pháp này.

Thứ ba là OpenPGP, công nghệ bảo mật dùng chung với E-mail. Nhược điểm chính của cách này là kích thước của mỗi tin nhắn bạn nhận & gửi hơi lớn. Vậy nên tôi khuyên bạn chỉ nên dùng cách này trên máy tính bàn cho các cuộc đối thoại (1v1).

Để kiểm chứng bất kì phương thức bảo mật nào kể trên, hãy đóng vai kẻ xấu và đăng nhập vào tài khoản của chính mình trên bất kỳ trình máy khách nào khác.

Bạn có thể tham khảo trang này của Conversations để xem so sánh giữa ba công nghệ:

https://www.conversations.im/omemo/

(Thật sự không có đám mây nào đâu.)

~*~