Bối cảnh và vấn đề nghiên cứu

Trong bối cảnh công nghệ thông tin phát triển nhanh chóng, các hệ thống trực tuyến ngày càng giữ vai trò thiết yếu đối với đời sống xã hội, từ quản lý tài chính, giáo dục, y tế cho đến thương mại điện tử. Sự gia tăng của các dịch vụ số kéo theo thách thức lớn về an toàn thông tin, đặc biệt là nguy cơ bị tấn công mạng, xâm phạm quyền riêng tư và đánh cắp tài khoản thông qua các cơ chế quản lý mật khẩu cố định truyền thống. Người dùng thường xuyên phải ghi nhớ nhiều thông tin đăng nhập trên các nền tảng khác nhau, dẫn đến xu hướng sử dụng mật khẩu đơn giản hoặc trùng lặp, tạo ra lỗ hổng bảo mật nghiêm trọng.

Xuất phát từ thực tiễn trên, đề tài "Nghiên cứu thuật toán One-Time-Pad cung cấp xác thực cho hệ thống SSO" được nhóm sinh viên thuộc Khoa Công nghệ thông tin, Trường Đại học Công Thương TP. Hồ Chí Minh (tiền thân là Trường Đại học Công nghiệp Thực phẩm TP.HCM) thực hiện dưới sự hướng dẫn của TS/ThS Trần Thị Bích Vân. Đề tài tập trung giải quyết bài toán cân bằng giữa việc nâng cao trải nghiệm người dùng và thiết lập cơ chế bảo mật xác thực mạnh mẽ.

Mục tiêu và nhiệm vụ nghiên cứu cụ thể của đề tài bao gồm:

  1. Nghiên cứu tổng quan về cơ chế xác thực tập trung Single Sign-On (SSO), các giao thức bảo mật liên quan và cách thức vận hành của hệ thống quản lý danh tính (IAM).
  2. Nghiên cứu nguyên lý toán học và tính an toàn tuyệt đối của thuật toán mã hóa đối xứng One-Time Pad (OTP).
  3. Tìm hiểu khái niệm, ưu điểm và quy trình xác thực của mã hóa có thể xác minh (Verifiable Encryption - VE).
  4. Thiết kế và triển khai thực nghiệm hệ thống máy chủ xác thực SSO bằng Keycloak kết hợp đăng nhập liên kết qua bên thứ ba (GitHub, Facebook), đồng thời xây dựng chương trình mô phỏng thuật toán One-Time Pad trên nền tảng .NET (C#).
  • Đối tượng nghiên cứu: Cơ chế xác thực Single Sign-On (SSO), thuật toán mật mã cổ điển One-Time Pad (OTP) và phương pháp mã hóa có thể xác minh (Verifiable Encryption - VE).
  • Phạm vi nghiên cứu: Khảo sát lý thuyết mật mã học; thử nghiệm kỹ thuật thiết lập dịch vụ Keycloak thông qua môi trường container hóa (Docker) và lập trình phần mềm mô phỏng thuật toán OTP cục bộ trên máy tính.

Cơ sở lý thuyết và phương pháp

Đề tài kết hợp giữa nghiên cứu lý thuyết mật mã học chuẩn mực và phương pháp thiết kế, thực nghiệm hệ thống phần mềm:

Khung lý thuyết và mô hình nghiên cứu

  • Mô hình Single Sign-On (SSO) và Quản lý danh tính (IAM): Dựa trên kiến trúc phân tách giữa Nhà cung cấp danh tính (Identity Provider - IdP) và Nhà cung cấp dịch vụ (Service Provider - SP). Đề tài xem xét 4 giao thức chuẩn:
    • SAML (Security Assertion Markup Language): Chuẩn dữ liệu XML trao đổi thông tin xác thực và ủy quyền trong mạng doanh nghiệp.
    • OAuth 2.0 (Open Authorization): Khung ủy quyền cho phép bên thứ ba truy cập tài nguyên mà không làm lộ mật khẩu.
    • OpenID Connect (OIDC): Tầng xác thực người dùng được xây dựng mở rộng trên nền tảng OAuth 2.0.
    • Kerberos: Giao thức xác thực mạng bảo vệ phiên trao đổi dữ liệu trong mạng nội bộ.
  • Lý thuyết mật mã học One-Time Pad (OTP): Dựa trên nền tảng chứng minh tính bí mật hoàn hảo (Perfect Secrecy) của Claude Shannon và Wendell Stanley (1949). Thuật toán đảm bảo tính an toàn tuyệt đối khi thỏa mãn đầy đủ 4 điều kiện:
    1. Khóa phải được tạo ra hoàn toàn ngẫu nhiên.
    2. Độ dài của khóa tối thiểu phải bằng độ dài của bản rõ (plaintext).
    3. Khóa không bao giờ được tái sử dụng toàn bộ hoặc một phần.
    4. Khóa phải được giữ bí mật tuyệt đối giữa hai bên giao tiếp.
  • Khái niệm Verifiable Encryption (VE): Cơ chế mã hóa cho phép người nhận hoặc bên thứ ba xác minh một số thuộc tính của dữ liệu gốc mà không cần phải thực hiện giải mã hay làm lộ nội dung thực tế của bản rõ.

Phương pháp nghiên cứu và nguồn dữ liệu

  • Phương pháp phân tích - tổng hợp tài liệu: Thu thập, đối chiếu và tổng hợp lý thuyết về các giao thức mạng, toán học mật mã (phép cộng modulo, phép toán thao tác bit XOR) từ các tài liệu khoa học.
  • Phương pháp thực nghiệm hệ thống:
    • Khởi tạo và vận hành nền tảng quản trị định danh mã nguồn mở Keycloak (phát hành theo giấy phép Apache 2.0) chạy trên nền Docker.
    • Cấu hình xác thực liên kết (Identity Federation) kết nối với hệ thống API của GitHub Developer Settings và Facebook for Developers.
    • Xây dựng giải thuật xử lý mảng byte và toán tử logic XOR bằng ngôn ngữ C# trên môi trường Microsoft .NET.

Thiết kế và triển khai hệ thống

Phần thực nghiệm kỹ thuật của đồ án bao gồm hai thành phần độc lập: cấu hình máy chủ xác thực SSO và lập trình mô phỏng thuật toán mã hóa OTP.

1. Triển khai máy chủ SSO với Keycloak và Docker

Keycloak được lựa chọn làm máy chủ Identity Provider nhằm quản lý người dùng, hỗ trợ xác thực đa yếu tố (MFA), ủy quyền theo vai trò (RBAC) và tích hợp đăng nhập mạng xã hội (Social Login).

  • Khởi tạo môi trường container:
    • Tải image từ registry: docker pull quay.io/keycloak/keycloak:latest
    • Chạy container ở chế độ phát triển (port 8080):
      docker run -d --name keycloak -p 8080:8080 \
        -e KEYCLOAK_ADMIN=admin \
        -e KEYCLOAK_ADMIN_PASSWORD=admin123 \
        quay.io/keycloak/keycloak:latest start-dev
      
  • Cấu hình nhà cung cấp danh tính GitHub:
    • Đăng ký ứng dụng mới trong mục GitHub Developer Settings > OAuth Apps.
    • Cấu hình Identity Provider trên giao diện quản trị Keycloak: Alias đặt là github, sao chép Client ID và Client Secret tương ứng từ GitHub, đặt tên hiển thị Login with GitHub.
  • Cấu hình nhà cung cấp danh tính Facebook:
    • Tạo ứng dụng loại Consumer trên Facebook Developers.
    • Thiết lập tính năng Facebook Login, cấu hình đường dẫn xác thực OAuth Redirect URI hợp lệ: http://localhost:8080/realms/ATTT15/broker/facebook/endpoint.
    • Khởi tạo Realm có tên ATTT15 trên Keycloak Admin Console, thêm Identity Provider loại Facebook và điền App ID cùng App Secret đã tạo.

2. Xây dựng ứng dụng mô phỏng thuật toán One-Time Pad (C# .NET)

Chương trình được xây dựng dưới dạng ứng dụng giao diện đồ họa (Windows Forms) với các chức năng sinh khóa ngẫu nhiên, mã hóa chuỗi ký tự và giải mã trả về văn bản gốc.

  • Cấu trúc lớp xử lý logic (OTP class):
    • Khởi tạo bộ sinh số ngẫu nhiên tĩnh System.Random.
    • Hàm GenerataKey(int length): Khởi tạo mảng byte có kích thước bằng độ dài thông điệp, điền dữ liệu ngẫu nhiên thông qua phương thức random.NextBytes(key).
    • Hàm Encrypt(byte[] text, byte[] key): Kiểm tra độ dài text và key. Sử dụng vòng lặp duyệt qua từng phần tử để thực hiện phép toán XOR: encrypted[i] = (byte)(text[i] ^ key[i]).
    • Hàm Decrypt(byte[] encrypted, byte[] key): Kiểm tra tính tương thích về chiều dài và thực hiện phép toán XOR ngược lại trên mảng byte đã mã hóa: decrypted[i] = (byte)(encrypted[i] ^ key[i]).
  • Giao diện và luồng tương tác:
    • Người dùng nhập thông điệp văn bản (ví dụ: hello) vào ô nhập liệu.
    • Nhấn nút tạo khóa (button1_Click): Chuyển chuỗi văn bản sang mảng byte theo bảng mã và sinh mảng khóa ngẫu nhiên tương ứng.
    • Nhấn nút mã hóa (button2_Click_1): Thực hiện hàm Encrypt và hiển thị kết quả chuỗi mã hóa lên giao diện.
    • Nhấn nút giải mã (button3_Click_1): Thực hiện hàm Decrypt để khôi phục chính xác chuỗi ký tự ban đầu.

Nội dung chính theo từng chương

Chương I: Single Sign-On

Chương I trình bày hệ thống hóa cơ chế hoạt động, sự phát triển và các chuẩn kỹ thuật của kiến trúc SSO:

  • Lịch sử và bản chất: SSO xuất hiện từ cuối thập niên 1980 đến đầu thập niên 1990 khi các tổ chức chuyển dịch sang môi trường mạng đa ứng dụng. Từ các giao thức ban đầu như Kerberos, đến sự chuẩn hóa của SAML đầu những năm 2000 và OIDC hiện nay, SSO đã trở thành hạ tầng xác thực tiêu chuẩn cho doanh nghiệp và các dịch vụ trực tuyến lớn (Google, Microsoft, Facebook).
  • Quy trình xác thực SSO 6 bước:
    1. Bước 1 - Yêu cầu truy cập: Người dùng gửi yêu cầu truy cập đến ứng dụng thành viên (SP), ứng dụng chuyển hướng người dùng đến IdP.
    2. Bước 2 - Đăng nhập IdP: Người dùng nhập thông tin xác thực tại trang đăng nhập tập trung của IdP.
    3. Bước 3 - Xác thực và tạo token: IdP kiểm tra tính hợp lệ của tài khoản, tạo và ký số một token bảo mật chứa định danh cùng quyền hạn người dùng.
    4. Bước 4 - Chuyển token: Token bảo mật được gửi trả về ứng dụng thông qua trình duyệt an toàn.
    5. Bước 5 - Xác minh token: Ứng dụng thành viên kiểm tra chữ ký và tính hợp lệ của token trước khi cấp quyền.
    6. Bước 6 - Truy cập liền mạch: Trong các phiên tiếp theo với các ứng dụng khác trong cùng liên minh, token được chia sẻ tự động, người dùng không cần đăng nhập lại.
  • Phân tích ưu nhược điểm và khía cạnh an toàn thông tin:
    • Ưu điểm: Cải thiện trải nghiệm đăng nhập, giảm thiểu tình trạng quên mật khẩu, giảm tải hỗ trợ kỹ thuật, cho phép quản lý và thu hồi quyền truy cập tập trung.
    • Hạn chế: Tiềm ẩn rủi ro "Điểm thất bại duy nhất" (Single Point of Failure - SPoF) nếu máy chủ IdP bị gián đoạn; nguy cơ xâm phạm diện rộng nếu tài khoản chính bị chiếm quyền.
    • Giải pháp đi kèm: Bắt buộc áp dụng mã hóa kênh truyền, xác thực đa yếu tố (MFA) và giám sát hành vi liên tục.

Chương II: One-Time Pad

Chương II đi sâu vào phân tích lý thuyết toán học và ứng dụng thực tiễn của kỹ thuật mã hóa OTP:

  • Nguyên lý hoạt động và công thức toán học: OTP sử dụng một khóa ngẫu nhiên $K$ có độ dài bằng hoặc lớn hơn bản rõ $P$. Thuật toán áp dụng phép toán XOR ($\oplus$) trên từng bit/byte hoặc phép cộng trừ modulo 256: $$\text{Mã hóa: } C = P \oplus K \quad (\text{hoặc } C = (P + K) \bmod 256)$$ $$\text{Giải mã: } P = C \oplus K \quad (\text{hoặc } P = (C - K) \bmod 256)$$
  • Ví dụ tính toán kiểm chứng: Văn bản minh họa phép mã hóa bản rõ "HELLO" với khóa "XMCKL" qua bảng mã ASCII:
Ký tự bản rõ ($P$) Mã ASCII ($P$) Ký tự khóa ($K$) Mã ASCII ($K$) Phép toán $P \oplus K$ Giá trị bản mã ($C$)
H 72 X 88 $72 \oplus 88$ 24 (\x18)
E 69 M 77 $69 \oplus 77$ 8 (\x08)
L 76 C 67 $76 \oplus 67$ 11 (\x0b)
L 76 K 75 $76 \oplus 75$ 1 (\x01)
O 79 L 76 $79 \oplus 76$ 3 (\x03)

Khi thực hiện giải mã bằng cách lấy từng giá trị bản mã XOR ngược lại với khóa, các giá trị ASCII gốc $(72, 69, 76, 76, 79)$ được khôi phục nguyên vẹn tạo thành chuỗi "HELLO".

  • Đặc tính an toàn và rào cản ứng dụng:
    • Do bản mã không lưu lại bất kỳ mẫu phân phối thống kê nào, OTP hoàn toàn miễn nhiễm với các kỹ thuật thám mã dựa trên tần suất ký tự.
    • Rào cản lớn nhất trong thực tiễn nằm ở bài toán quản lý và phân phối khóa (Key Distribution Problem): Việc chuyển giao an toàn một lượng khóa khổng lồ có kích thước tương đương dữ liệu mà không bị lộ là cực kỳ tốn kém tài nguyên.
  • Lĩnh vực ứng dụng đặc thù: Mã hóa quân sự và tình báo, truyền thông vô tuyến giữa các đơn vị tác chiến di động, hệ thống giao dịch mật mã tài chính cấp cao, bảo mật truyền thông không gian (giữa trạm mặt đất, vệ tinh và tàu vũ trụ), cùng các nghiên cứu mật mã học lý thuyết làm hệ quy chiếu bảo mật.

Chương III: Verifiable Encryption

Chương III khái quát về Verifiable Encryption (VE) - kỹ thuật mã hóa gắn liền với các phép kiểm chứng không tiết lộ dữ liệu:

  • Quy trình hoạt động 4 bước:
    1. Bước 1 - Mã hóa dữ liệu: Bản rõ được mã hóa bằng khóa công khai của bên nhận để tạo ra bản mã.
    2. Bước 2 - Tạo chứng chỉ xác minh: Bên gửi tạo một bằng chứng toán học (chứng chỉ/proof) chứng minh bản mã thỏa mãn một điều kiện nhất định.
    3. Bước 3 - Xác minh dữ liệu: Bên nhận hoặc bên thứ ba kiểm tra chứng chỉ xác minh mà không cần giải mã dữ liệu thực.
    4. Bước 4 - Khai thác lợi ích: Cho phép thực hiện các giao dịch minh bạch, bảo vệ dữ liệu nhạy cảm trong hệ thống phi tập trung hoặc trung gian.
  • So sánh đặc tính giữa VE và OTP:
Tiêu chí so sánh Thuật toán One-Time Pad (OTP) Thuật toán Verifiable Encryption (VE)
Mục đích sử dụng chính Bảo vệ tuyệt đối tính bí mật của nội dung truyền tải Xác thực và kiểm chứng tính hợp lệ của dữ liệu mà không để lộ nội dung
Tính linh hoạt Rất thấp (đòi hỏi khóa dài bằng thông điệp, chỉ dùng một lần) Cao hơn trong các giao thức xác thực phức tạp và hệ thống phân tán
Cơ sở an toàn Bí mật hoàn hảo dựa trên lý thuyết thông tin (Information-Theoretic) Độ phức tạp tính toán và các bài toán chứng minh mật mã học

Kết quả và đóng góp

Kết quả đạt được

  1. Hệ thống hóa lý thuyết: Đề tài đã tổng hợp và làm rõ kiến trúc xác thực tập trung SSO, phân loại vai trò của 4 giao thức phổ biến (SAML, OAuth 2.0, OpenID Connect, Kerberos), đồng thời phân tích chi tiết cơ chế bảo mật của thuật toán OTP và VE.
  2. Triển khai môi trường Keycloak: Thiết lập thành công hệ thống máy chủ xác thực Keycloak trên Docker container tại cổng 8080 với tài khoản quản trị admin, cấu hình Realm ATTT15 và tích hợp thành công hai Identity Providers mạng xã hội là GitHub và Facebook.
  3. Hiện thực hóa phần mềm OTP: Xây dựng ứng dụng Windows Forms bằng C# minh họa đầy đủ quy trình sinh khóa ngẫu nhiên, mã hóa và giải mã thông điệp dựa trên toán tử XOR bitwise.

Đóng góp của đề tài

  • Cung cấp tài liệu tham khảo có tính thực hành về quy trình cấu hình xác thực liên kết (Identity Federation) bằng Keycloak phục vụ cho các mô hình phát triển phần mềm hiện đại như microservices.
  • Minh chứng trực quan bằng mã nguồn về nguyên lý hoạt động của mật mã One-Time Pad, giúp liên kết kiến thức lý thuyết mật mã học trừu tượng với việc lập trình ứng dụng thực tế.

Hạn chế và hướng nghiên cứu tiếp

  • Hạn chế:
    • Nghiên cứu tập trung chủ yếu vào việc khảo sát lý thuyết riêng lẻ giữa hệ thống SSO và thuật toán OTP/VE, chưa xây dựng được mô hình tích hợp trực tiếp thuật toán OTP hoặc cơ chế VE vào sâu trong quy trình cấp phát token của máy chủ Keycloak (Keycloak SPI).
    • Chương trình demo OTP trên C# sử dụng bộ sinh số giả ngẫu nhiên System.Random, chưa áp dụng các bộ sinh số ngẫu nhiên an toàn mật mã (như RNGCryptoServiceProvider hay RandomNumberGenerator) để đáp ứng đúng tiêu chuẩn lý thuyết của Shannon.
  • Hướng nghiên cứu tiếp:
    • Nghiên cứu cơ chế tùy biến giao diện cung cấp dịch vụ (SPI - Service Provider Interface) của Keycloak để đưa các giải thuật mã hóa nâng cao vào quá trình ký hoặc mã hóa token.
    • Xây dựng giải pháp quản lý, đồng bộ và phân phối khóa ngẫu nhiên phục vụ cho việc ứng dụng OTP trong các môi trường mạng truyền thông tốc độ cao.

Giá trị tham khảo

Tài liệu đồ án chuyên ngành này mang lại giá trị tham khảo hữu ích cho:

  • Sinh viên ngành Công nghệ thông tin, An toàn thông tin, Kỹ thuật phần mềm: Là tài liệu tham khảo trực tiếp cho các học phần Mật mã học, An toàn mạng, Kiến trúc phần mềm và Đồ án chuyên ngành.
  • Lập trình viên và kỹ sư hệ thống: Phần hướng dẫn chi tiết về cấu hình Keycloak trên Docker, các bước đăng ký OAuth App trên GitHub và thiết lập Facebook Login là tài liệu hướng dẫn từng bước (step-by-step) có thể áp dụng ngay vào các dự án triển khai hệ thống xác thực tập trung.
  • Người nghiên cứu mật mã cơ bản: Các mục phân tích toán học và mã nguồn mẫu của thuật toán One-Time Pad cung cấp góc nhìn thực hành rõ ràng về thao tác xử lý dữ liệu nhị phân và bitwise trong C#.

Câu hỏi thường gặp

1. Bốn điều kiện bắt buộc để thuật toán One-Time Pad (OTP) đạt được tính an toàn tuyệt đối là gì?
Để đạt được mức bảo mật hoàn hảo theo lý thuyết của Claude Shannon, OTP phải thỏa mãn: (1) Khóa phải hoàn toàn ngẫu nhiên; (2) Chiều dài khóa tối thiểu phải bằng chiều dài bản rõ; (3) Khóa tuyệt đối không được tái sử dụng toàn bộ hoặc từng phần; (4) Khóa phải được giữ bí mật tuyệt đối giữa các bên tham gia.

2. Nhóm tác giả đã sử dụng câu lệnh và thông số nào để khởi chạy Keycloak qua Docker?
Nhóm sử dụng lệnh tải image: docker pull quay.io/keycloak/keycloak:latest và lệnh chạy container ở chế độ phát triển:

docker run -d --name keycloak -p 8080:8080 -e KEYCLOAK_ADMIN=admin -e KEYCLOAK_ADMIN_PASSWORD=admin123 quay.io/keycloak/keycloak:latest start-dev

3. Trong bài toán mã hóa từ "HELLO" với khóa "XMCKL", kết quả các giá trị ASCII của bản mã là bao nhiêu?
Quá trình tính toán bằng phép XOR từng ký tự cho ra các giá trị mã ASCII của bản mã lần lượt là: $72 \oplus 88 = 24$, $69 \oplus 77 = 8$, $76 \oplus 67 = 11$, $76 \oplus 75 = 1$, $79 \oplus 76 = 3$, biểu diễn dưới dạng mảng byte \x18\x08\x0b\x01\x03.

4. Đường dẫn chuyển hướng (Valid OAuth Redirect URI) được cấu hình cho Facebook Login trong đồ án là gì?
Đường dẫn được nhóm tác giả cấu hình trên cổng Facebook Developers là:
http://localhost:8080/realms/ATTT15/broker/facebook/endpoint (tương ứng với Realm ATTT15 trên Keycloak).

5. Sự khác biệt cốt lõi về mục đích giữa thuật toán OTP và Verifiable Encryption (VE) là gì?
OTP hướng đến việc bảo vệ tuyệt đối tính bí mật của nội dung văn bản khi truyền tải qua kênh không an toàn, trong khi VE cho phép bên nhận hoặc bên thứ ba xác minh, kiểm chứng tính hợp lệ của dữ liệu đã mã hóa mà không cần giải mã hay làm lộ nội dung thực tế của bản rõ.


Kết luận

Đồ án chuyên ngành của nhóm sinh viên Trường Đại học Công Thương TP. Hồ Chí Minh đã làm rõ cơ sở lý luận về cơ chế xác thực Single Sign-On (SSO), thuật toán mật mã cổ điển One-Time Pad (OTP) và mô hình Verifiable Encryption (VE). Thông qua việc triển khai thực nghiệm hệ thống Keycloak kết nối định danh GitHub/Facebook và lập trình ứng dụng C# mô phỏng OTP, đề tài đã cụ thể hóa kiến trúc xác thực tập trung và nguyên lý bảo mật dữ liệu. Kết quả của đồ án là tài liệu tham khảo hữu ích cho việc nghiên cứu và ứng dụng các giải pháp quản lý danh tính và an toàn thông tin trong môi trường phân tán.