Mô tả. Chức năng này cho phép người dùng xem danh sách và thông tin chi tiết chứng thư.
Điều kiện tiên quyết. Người dùng phải đăng nhập vào hệ thống.
Trình tự thực hiện.
1. Từ giao diện chính, người dùng mở màn hình Cá nhân/Chứng thư.
2. Hệ thống hiển thị danh sách các chứng thư. 3. Người dùng nhấn vào một chứng thư bất kỳ. 4. Hệ thống hiển thị thông tin chi tiết chứng thư đó.
5. Use case kết thúc.
72 3.3 Thiết kế cơ sở dữ liệu 3.3.1 Mô hình thực thể liên kết Hình 3.5 Mô hình thực thể liên kết 3.3.2 Bảng users Bảng 3.2 Bảng users STT Tên thuộc tính Kiểu dữ liệu Ràng buộc Mô tả 1 id bigint Khóa chính Mã người dùng 2 usertype varchar Not
null
Loại định danh người dùng
3 username varchar Not null
73 4 password varchar Not
null
Chuỗi ký tự bí mật được ghi nhớ bởi người dùng cuối 5 access_token varchar Mã truy cập dịch vụ tồn tại
trong thời gian ngắn được sử
dụng để xác thực các yêu cầu dịch vụ web tiếp theo trong cùng phiên làm việc
6 expires_at datetime Thời điểm access_token hết hạn sử dụng
7 remaining_counter int Not null
Số lần đăng nhập sai còn lại
trước khi bị khóa tài khoản 8 temp_lockout_until datetime Thời điểm tài khoản được mở
khóa 9 full_name varchar Not
null
Tên đầy đủ của người dùng 10 phone varchar Not
null
Sốđiện thoại của người dùng
11 email varchar Not null
Email của người dùng
12 oauth2 varchar Thông tin OAUTH2 của tài khoản
13 created_at timestamp Thời điểm tạo tài khoản 14 updated_at timestamp Thời điểm cập nhật thông tin
tài khoản gần nhất 3.3.3 Bảng devices Bảng 3.3 Bảng devices STT Tên thuộc tính Kiểu dữ liệu Ràng buộc Mô tả
1 device_uuid varchar Khóa chính
74 2 user_id bigint Khóa
ngoại
Mã người dùng 3 lang varchar Ngôn ngữ của thiết bị
4 otp_encrypted varchar Mã hóa base64 của OTP
đã được mã hóa bởi KAK.PublicKey
5 access_token varchar Mã truy cập dịch vụ tồn tại trong thời gian ngắn
được sử dụng để xác thực các yêu cầu dịch vụ web tiếp theo trong cùng phiên làm việc
6 expires_at datetime Thời điểm access_token hết hạn sử dụng
7 remember_me int Not null refresh_token có hiệu lực hay không
8 refresh_token varchar Mã làm mới dài hạn được sử dụng để xác thực lại
người dùng trong các phiên làm việc sau
9 remaining_counter int Not null Số lần đăng nhập sai còn lại trước khi bị khóa thiết bị
10 temp_lockout_until datetime Thời điểm thiết bị được mở khóa
11 change_device int Not null Đã thay đổi thiết bị hay thiết bịđầu tiên
12 os_type varchar Loại hệ điều hành của thiết bịdi động
13 os_version varchar Phiên bản hệ điều hành của thiết bị
75 14 model varchar Mẫu thiết bịdi động 15 tse_version varchar Not null Phiên bản của ứng dụng
TSE
16 firebase_id varchar Not null Mã Firebase của thiết bị
di động, giá trị này được lấy từ dịch vụ Firebase dùng cho thông báo đẩy 17 client_uuid varchar Not null Thông tin của thiết bị di
động, có thê là IMEI hoặc MAC hoặc một chuỗi được sinh ngẫu nhiên bởi ứng dụng TSE hoặc tổ hoặc của chúng 18 kak_public_key varchar Not null Mã hóa base64 của khóa
công khai của khóa xác thực
19 kak_private_encrypted varchar Not null Mã hóa base64 của khóa bí mật của khóa khóa xác thực
20 recovery_code varchar Mã phục hồi, nếu có sẽ được máy chủ gửi tới
người dùng thông qua email
21 created_at timestamp Thời điểm tạo thiết bị
22 updated_at timestamp Thời điểm cập nhật thông tin thiết bị gần nhất 3.3.4 Bảng inactive_devices Bảng 3.4 Bảng inactive_devices STT Tên thuộc tính Kiểu dữ liệu Ràng buộc Mô tả
76 1 device_uuid varchar Khóa
chính
Mã thiết bị
2 user_id bigint Khóa ngoại
Mã người dùng
3 activation_code varchar Not null Mã kích hoạt thiết bị được gửi đến người dùng qua email
4 activation_token varchar Mã truy cập dịch vụ tồn tại trong thời gian ngắn được sử dụng để xác thực các yêu cầu kích hoạt thiết bị
5 expires_at datetime Thời điểm activation_token hết hạn sử dụng
6 created_at timestamp Thời điểm tạo thiết bị
7 updated_at timestamp Thời điểm cập nhật thông tin thiết bị gần nhất 3.3.5 Bảng credentials Bảng 3.5 Bảng credentials STT Tên thuộc tính Kiểu dữ liệu Ràng buộc Mô tả 1 id bigint Khóa chính Mã chứng thư
2 user_id bigint Khóa
ngoại
Mã người dùng 3 cert_status varchar Not
null
Trạng thái của chứng
thư
4 cert_certificates varchar Not null
Một hoặc nhiều mã hóa base64 của các
77 chứng thư X.509v3 từ chuỗi chứng thư.
5 cert_issuer_dn varchar Not null Issuer Distinguished Name từ chứng thư X.509v3 dưới dạng chuỗi ký tự được mã hóa UTF-8.
6 cert_serial_number varchar Not null
Serial Number từ
chứng thư X.509v3
được biểu diễn dưới dạng chuỗi hexa. 7 cert_thumbprint varchar Not
null
Dấu tay của chứng
thư. Giá trị này được tính bằng cách băm
biểu diễn nhị phân của chứng thư được mã hóa. Thuật toán SHA-256 thường
được sử dụng đểbăm
dữ liệu này. 8 cert_subject_dn varchar Not
null Subject Distinguished Name từ chứng thư X.509v3 dưới dạng chuỗi ký tự được mã hóa UTF-8.
9 cert_valid_from datetime Not null
Ngày bắt đầu có hiệu lực từ chứng thư X.509v3 dưới dạng chuỗi ký tự.
78 10 cert_valid_to datetime Not
null
Ngày hết hiệu lực từ
chứng thư X.509v3
dưới dạng chuỗi ký tự.
11 cert_profile_name varchar Not null
Tên hồsơ của chứng
thư.
12 cert_profile_desc varchar Mô tả hồ sơ chứng
thư.
13 cert_purpose varchar Mục đích sử dụng của chứng thư.
14 shared_mode varchar Not null
Chếđộ chia sẻ nào sẽ được sử dụng trong ký số từ xa.
15 created_rp varchar Not null
Tên của Relying Party. Nó ám chỉ
rằng chứng thư đã được tạo bởi RP đó.
16 multisign int Not
null
Một số bằng hoặc lớn
hơn 1đại diện cho số lượng chữ ký tối đa
có thểđược tạo bằng chứng thư này với một yêu cầu ủy quyền duy nhất. 17 auth_modes varchar Not
null
Chỉ định một trong các chếđộ ủy quyền. 18 auth_mode varchar Not
null Một giá trị trong các giá trị của auth_modes, là chế độ ủy quyền được kích hoạt lúc này. Để
79
thay đổi phải do quản trị viên RRSP thực hiện.
19 scal int Not
null Các giá trị1: Mã băm dùng để ký không được liên kết với dữ liệu kích hoạt chữ ký; 2: Mã băm dùng để ký được liên kết với dữ liệu kích hoạt chữ ký. 20 contract_expiration_date datetime Not
null
Ngày hết hạn hợp
đồng. 21 remaining_signing_counter int Not
null
Sốlượt ký còn lại của chứng thư này.
22 auth_email varchar Not null
Email ủy quyền.
23 auth_phone varchar Not null
Số điện thoại ủy quyền.
24 default_passphrase int Not null
True nếu passphrase là mặc định và người dùng phải thay đổi
passphrase trước khi thực hiện mã hóa. 25 kak_changed int Not
null
Cờ ám chỉ trạng thái của KAK sẽthay đổi. 26 created_at timestamp Thời điểm tạo chứng
thư
27 updated_at timestamp Thời điểm cập nhật thông tin chứng thư
80 3.3.6 Bảng transactions Bảng 3.6 Bảng transactions STT Tên thuộc tính Kiểu dữ liệu Ràng buộc Mô tả 1 id bigint Khóa chính Mã giao dịch
2 credential_id bigint Khóa ngoại
Mã chứng thư
3 notification_message varchar Tin nhắn được hiển thịởthông báo đẩy. 4 message_caption varchar Chú thích của tin
nhắn.
5 message varchar Văn bản được hiển thị bên cạnh Tên dịch vụvà trước khi yêu cầu mã PIN xác thực.
6 logo_uri varchar URI của logo tùy chọn để hiển thị
trong trình xác thực. 7 bg_image_uri varchar URI của hình nền để
hiển thị trong trình xác thực.
8 rp_icon_uri varchar URI của biểu tượng Relying Party tùy chọn được hiển thị
trong trình xác thực.
9 rp_name varchar Not
null
Tên tùy chỉnh của Relying Party được
81 hiển thị trong trình xác thực.
10 confirmation_policy varchar Not null Chính sách xác nhận, một trong "PIN", "FINGER- PRINT", "TAP", "SWIPE", "IRIS".
11 vc_enabled int Not
null
Bật
VerificationCode. Giá trị mặc định là true.
12 ac_enabled int Not
null
Bật AuthorizeCode. Nếu giá trị là true, nó yêu cầu người dùng cuối nhắc lại AC mỗi khi lấy trạng thái.
13 num_signatures int Not null
Số lượng chữ ký cho ủy quyền một lần.
14 doc_digests_hashes text Một hoặc nhiều giá trịbămđược mã hóa base64 sẽ được ký.
Nó được yêu cầu khi SCAL là cấp 2. 15 doc_digetst_hash_algo_oid varchar Not
null
OID của thuật toán
băm dùng để tính
các mã băm của tài liệu.
16 sca_identity varchar Not null
82 17 auth_data_hash_algo_oid varchar Not
null
Thuật toán băm.
Mặc định SHA256. 18 auth_data_sign_algo varchar Not
null
Thành phần chỉ định OID thuật toán
được sử dụng để ký. 19 auth_data_sign_algo_params varchar Mã hóa base64 của tham số chữ ký ASN.1 mã hóa DER, nếu thuật toán chữ ký yêu cầu. 20 auth_data_challenge varchar Not
null
Mã hóa base64 của chuỗi thử thách.
21 type varchar Not
null
Loại giao dịch, có ba giá trị "SIGN",
"SYNC" và "LOGIN".
22 expires_at datetime Not null
Ngày giờ yêu cầu giao dịch hết hạn. 23 sign_algo varchar Not
null
Thành phần chỉ định OID thuật toán
được sử dụng để ký. 24 sign_algo_params varchar Mã hóa base64 của tham số chữ ký ASN.1 mã hóa DER, nếu thuật toán chữ ký yêu cầu.
25 status varchar Not
null
Trạng thái hiện tại của yêu cầu ký, một trong "WAITING, SIGNED,
83 CANCELED,
EXPIRED".
26 created_at timestamp Thời điểm tạo giao dịch
27 updated_at timestamp Thời điểm cập nhật thông tin giao dịch gần nhất
3.4 Thiết kế dịch vụ Web
3.4.1 API xác thực
Chức năng activate cho phép thiết bị di động ràng buộc với tài khoản của
người dùng cuối (chủ sở hữu). Chức năng này có bốn bước:
• login: Đăng nhập với tên tài khoản và mật khẩu để lấy access-token.
• retrieveActivationCode: Sử dụng access-token để lấy mã kích hoạt qua email hoặc SMS.
• initialize: Thiết bị TSE gửi mã kích hoạt đến endpoint. Endpoint sẽ phản hồi activation-token lại cho thiết bị TSE.
• sendDevice: Sử dụng activation-token để cập nhật thông tin thiết bị.
activate/login
Chức năng này nhận access-token dùng để truy xuất mã kích hoạt.
Bảng 3.7 API yêu cầu activate/login
Các thuộc tính yêu cầu
STT Tên thuộc tính Kiểu dữ
liệu
Bắt
buộc Mô tả
1 usertype string Có Giá trị luôn là "USERNAME".
84 3 password string Có Giá trị bí mật được ghi nhớ
bởi người dùng cuối.
Bảng 3.8 API phản hồi activate/login
Các thuộc tính phản hồi
STT Tên thuộc tính Kiểu dữ
liệu
Bắt
buộc Mô tả
1 error int Có Mã mô tả kết quả. 2 errorDescription string Có Mô tả chi tiết kết quả. 3 accessToken string Có Mã truy cập dịch vụ tồn tại
trong thời gian ngắn được sử dụng để xác thực các yêu cầu API tiếp theo trong cùng một phiên làm việc.
activate/retrieveActivationCode
Chức năng này yêu cầu RSSP gửi mã kích hoạt cho người dùng cuối thông qua email hoặc SMS. Người dùng cuối phải đăng ký sử dụng TSE trước, việc đăng
ký thực hiện trong BackOffice.
TSE Client phải gửi access-token nhận được từ activate/login trong HTTP header với tên: "Authorization" bắt đầu bằng "Bearer".
Bảng 3.9 API yêu cầu activate/retrieveActivationCode
Các thuộc tính yêu cầu
STT Tên thuộc tính Kiểu dữ
liệu
Bắt
buộc Mô tả
Bảng 3.10 API phản hồi activate/retrieveActivationCode
Các thuộc tính phản hồi
STT Tên thuộc tính Kiểu dữ
liệu
Bắt
85 1 error int Có Mã mô tả kết quả.
2 errorDescription string Có Mô tả chi tiết kết quả. 3 deviceUUID string Có Định danh của thiết bị TSE. 4 changeDevice bool Có true nếu thay đổi thiết bị, false nếu kích hoạt thiết bị đầu tiên.
activate/initialize
Chức năng này để khởi tạo kích hoạt, TSE gửi mã kích hoạt đến máy chủ
RSSP.
Bảng 3.11 API yêu cầu activate/initialize
Các thuộc tính yêu cầu
STT Tên thuộc tính Kiểu dữ
liệu
Bắt
buộc Mô tả
1 deviceUUID string Có Định danh của thiết bị TSE,
nhận trong
getActivationCode.
2 activationCode string Có Mã kích hoạt, giá trị này
được gửi bởi RSSP tới người dùng cuối qua email hoặc SMS.
Bảng 3.12 API phản hồi activate/initialize
Các thuộc tính phản hồi
STT Tên thuộc tính Kiểu dữ
liệu
Bắt
buộc Mô tả
1 error int Có Mã mô tả kết quả. 2 errorDescription string Có Mô tả chi tiết kết quả. 3 activationToken string Có Mã truy cập dịch vụ tồn tại
trong thời gian ngắn được sử dụng để xác thực các
86 yêu cầu API tiếp theo trong cùng một phiên làm việc.
activate/sendDevice
TSE client phải gửi activationToken nhận được từ activate/initialize trong HTTP header với tên: "Authorization" bắt đầu bằng "Bearer".
TSE client phải tạo KAK là cặp khóa RSA. Nếu người dùng cuối đồng ý sao
lưu KAK thì TSE client phải gửi kakPrivateEncrypted trong phần nội dung yêu cầu, kakPrivateEncrypted được mã hóa bằng RECOVERY CODE và phải có checksum (ví dụ: HMAC256) để TSE client có thể kiểm tra tính toàn vẹn của KAK khi khôi phục KAK.
Bảng 3.13 API yêu cầu activate/sendDevice
Các thuộc tính yêu cầu
STT Tên thuộc tính Kiểu dữ
liệu
Bắt
buộc Mô tả
1 osType string Có Loại hệđiều hành của thiết bị di động, một trong ba giá trị
"IOS", "ANDROID" và "WINDOWS_PHONE".
2 osVersion string Có Phiên bản hệ điều hành của thiết bị di động. Ví dụ: 13.0.1.
3 model string Mẫu của thiết bịdi động. Thí dụ: Vsmart Joy 1+.
4 tseVersion string Phiên bản của ứng dụng TSE.
5 firebaseID string Có Mã Firebase của thiết bị di
động, giá trị này được truy xuất từ dịch vụ Firebase,
được sử dụng để đẩy thông báo.
87 6 clientUUID string Có Thông tin của thiết bị di
dộng, có thể là IMEI hoặc MAC hoặc được sinh ngẫu nhiên bởi TSE client hoặc tổ
hợp của tất cả chúng.
7 kakPublicKey string Có Mã hóa base64 của khóa công khai của khóa ủy quyền.
8 kakPrivateEncrypted string Mã hóa base64 của khóa bí mật của khóa ủy quyền. 9 rememberMe bool Yêu cầu refresh-token từ
TSE, giá trị mặc định là false.
Bảng 3.14 API phản hồi activate/sendDevice
Các thuộc tính phản hồi
STT Tên thuộc tính Kiểu dữ
liệu
Bắt
buộc Mô tả
1 error int Có Mã mô tả kết quả. 2 errorDescription string Có Mô tả chi tiết kết quả. 3 accessToken string Có Mã truy cập dịch vụ tồn tại
trong thời gian ngắn được sử dụng để xác thực các yêu cầu API tiếp theo trong cùng một phiên làm việc.
4 ownerInfo/fullName string Có Tên đầy đủ của người dùng.
5 ownerInfo/phone string Có Số điện thoại của người dùng.
88
login
Chức năng này truy xuất token dùng cho các yêu cầu API tiếp theo trong cùng phiên làm việc.
Bảng 3.15 API yêu cầu login
Các thuộc tính yêu cầu
STT Tên thuộc tính Kiểu dữ
liệu
Bắt
buộc Mô tả
1 usertype string Có Giá trị luôn là "DEVICE_UUID".
2 username string Có Device UUID được trả về bởi
RSSP trong activate/retrieveActivationCode.
3 password string Có Giá trị bí mật được ghi nhớ bởi
người dùng cuối.
4 rememberMe bool Yêu cầu refresh-token từ TSE, giá trị mặc định là false.
Bảng 3.16 API phản hồi login
Các thuộc tính phản hồi
STT Tên thuộc tính Kiểu dữ
liệu
Bắt
buộc Mô tả
1 error int Có Mã mô tả kết quả. 2 errorDescription string Có Mô tả chi tiết kết quả. 3 accessToken string Có Mã truy cập dịch vụ tồn tại
trong thời gian ngắn được sử dụng để xác thực các yêu cầu API tiếp theo trong cùng một phiên làm việc.
89
revoke
Chức năng này thu hồi access-token hoặc refresh-token khi người dùng đăng
xuất trên TSE client. TSE client phải gửi access-token nhận được từ login trong HTTP header với tên: "Authorization" bắt đầu bằng "Bearer".
Bảng 3.17 API yêu cầu revoke
Các thuộc tính yêu cầu
STT Tên thuộc tính Kiểu dữ
liệu
Bắt
buộc Mô tả
Bảng 3.18 API phản hồi revoke
Các thuộc tính phản hồi
STT Tên thuộc tính Kiểu dữ
liệu
Bắt
buộc Mô tả
1 error int Có Mã mô tả kết quả. 2 errorDescription string Có Mô tả chi tiết kết quả.
updateAccount
Chức năng này cập nhật tên đầy đủ và/hoặc email của người dùng. TSE client phải gửi access-token nhận được từ login trong HTTP header với tên: "Authorization" bắt đầu bằng "Bearer".
Bảng 3.19 API yêu cầu updateAccount
Các thuộc tính yêu cầu
STT Tên thuộc tính Kiểu dữ
liệu
Bắt
buộc Mô tả
1 fullName string Tên đầy đủ của người dùng. 2 email string Email của người dùng.
Bảng 3.20 API phản hồi updateAccount