Chứng chỉ ký mã là chứng thư số cấp cho doanh nghiệp hoặc nhà phát triển để ký lên tệp cài đặt, thư viện, trình điều khiển hay bản cập nhật phần mềm, giúp hệ điều hành của khách biết phần mềm đến từ đâu và không bị sửa sau khi ký. Từ năm 2023, theo quy tắc chung của ngành, khoá bí mật của chứng chỉ ký mã được tin công khai phải được sinh và giữ trong thiết bị bảo mật phần cứng như token chuyên dụng hoặc mô-đun bảo mật phần cứng (kể cả loại trên đám mây), không còn được cấp dưới dạng tệp lưu trên máy.
Bài này viết cho doanh nghiệp phần mềm vừa và nhỏ, và cho các công ty không chuyên phần mềm nhưng có phát hành công cụ cho khách cài, như phần mềm kết nối thiết bị, ứng dụng bán hàng, tiện ích kê khai. Bài đi qua hồ sơ xin cấp, cách giữ khoá, dấu thời gian, quy trình ký và những tình huống rủi ro như lộ khoá. Bài không hướng dẫn thao tác trên từng công cụ cụ thể và không nêu tên đơn vị cấp.
Vì sao phần mềm phát hành cho khách cần được ký
Khi người dùng tải và chạy một tệp cài đặt không có chữ ký, hệ điều hành thường hiện cảnh báo nhà phát hành không xác định, có nơi chặn hẳn. Khách hàng doanh nghiệp có chính sách bảo mật chặt thường không cho cài phần mềm chưa ký. Phần mềm của bạn có thể hoàn toàn sạch, nhưng trong mắt máy khách nó không khác gì một tệp lạ tải từ đâu đó.
Chữ ký số trên mã giải quyết hai việc. Thứ nhất, nó gắn phần mềm với một danh tính đã được đơn vị cấp xác minh, thường là tên doanh nghiệp. Thứ hai, nó bảo đảm tệp không bị sửa sau khi ký: chỉ cần thay một byte, chữ ký báo không hợp lệ. Điều thứ hai quan trọng với cả chính doanh nghiệp, vì nó bảo vệ khách khỏi bản cài đặt bị kẻ xấu chèn mã độc rồi phát tán dưới tên bạn.
Cần hiểu đúng giới hạn: chữ ký không chứng minh phần mềm an toàn hay không có lỗi, chỉ chứng minh ai phát hành và tệp còn nguyên vẹn. Một số hệ điều hành còn xây dựng mức uy tín cho phần mềm dựa trên lịch sử tải và cài đặt, nên phần mềm mới ký vẫn có thể bị cảnh báo một thời gian. Chữ ký là điều kiện cần, không phải tấm vé qua mọi lớp kiểm tra.
Đừng nhầm chứng chỉ ký mã với chữ ký số dùng ký văn bản. Token ký tờ khai của công ty không dùng để ký phần mềm được, và ngược lại chứng chỉ ký mã không dùng để ký hợp đồng.
Hồ sơ và điều kiện khi xin chứng chỉ ký mã
Đơn vị cấp xác minh danh tính người xin tương tự chứng chỉ website loại xác minh tổ chức, cộng thêm yêu cầu về nơi giữ khoá. Bảng dưới gom những thứ thường được hỏi.
| Hạng mục | Nội dung | Lưu ý |
|---|---|---|
| Danh tính tổ chức | Tên pháp lý, mã số doanh nghiệp, địa chỉ khớp với nguồn đăng ký | Tên này sẽ hiện cho người dùng khi cài phần mềm |
| Số điện thoại kiểm chứng | Số của doanh nghiệp tra được ở nguồn độc lập để gọi xác nhận | Giống yêu cầu với chứng chỉ website xác minh tổ chức |
| Người đề nghị và thẩm quyền | Người đứng ra xin và văn bản xác nhận họ được phép thay mặt doanh nghiệp | Mức xác minh cao hơn thường đòi văn bản ký |
| Nơi sinh và giữ khoá | Token phần cứng do đơn vị cấp gửi, mô-đun bảo mật phần cứng của doanh nghiệp hoặc dịch vụ ký trên đám mây | Khoá không được xuất ra thành tệp |
| Nhà phát triển cá nhân | Một số đơn vị cấp có loại xác minh cá nhân bằng giấy tờ tuỳ thân | Tên người sẽ hiện thay tên công ty |
Với doanh nghiệp vừa thành lập, nguồn dữ liệu độc lập có thể chưa có thông tin, khiến xác minh chậm. Nên bắt đầu sớm trước ngày phát hành bản đầu tiên.
Giữ khoá ký: ba cách và việc cần quy định trong nội bộ
Token phần cứng. Đơn giản và rẻ nhất với đội nhỏ: khoá nằm trong một thiết bị cắm vào máy ký. Điểm yếu là thiết bị vật lý có thể mất, hỏng, và máy ký phải ở cạnh token, khó dùng cho hệ thống phát hành tự động.
Mô-đun bảo mật phần cứng tại chỗ. Hợp với doanh nghiệp có hạ tầng riêng và ký nhiều. Đòi hỏi người vận hành có kinh nghiệm và chi phí đầu tư thiết bị.
Dịch vụ ký trên đám mây. Khoá nằm trong mô-đun bảo mật phần cứng của nhà cung cấp dịch vụ, hệ thống phát hành gọi tới để ký. Tiện cho tự động hoá nhưng phải quản lý chặt tài khoản và quyền gọi ký, vì ai có quyền gọi là ký được.
Quy định ai được ký. Dù chọn cách nào, quy chế nội bộ cần ghi: ai được giữ hoặc gọi khoá, loại bản dựng nào được ký (chỉ bản phát hành chính thức, không ký bản thử tuỳ tiện), ai duyệt trước khi ký, và ghi nhật ký mỗi lần ký.
Không chia sẻ khoá với bên ngoài. Đơn vị gia công phát triển phần mềm cho bạn không cần giữ khoá ký của bạn. Họ giao bản dựng, bạn kiểm rồi ký trên hạ tầng của mình. Không cho mượn, không ký hộ phần mềm của bên khác dưới tên doanh nghiệp.
Dấu thời gian: vì sao phần mềm đã ký vẫn chạy sau khi chứng chỉ hết hạn
Chứng chỉ ký mã có thời hạn. Nếu chỉ ký mà không kèm dấu thời gian, khi chứng chỉ hết hạn, hệ điều hành có thể coi chữ ký trên mọi bản đã phát hành là không còn hợp lệ, dù tệp không hề thay đổi. Khách đang dùng bản cũ bỗng gặp cảnh báo khi cài lại.
Dấu thời gian là một chữ ký bổ sung do một dịch vụ cấp dấu thời gian tin cậy đóng lên, xác nhận rằng tại thời điểm đó chữ ký của bạn đã tồn tại và chứng chỉ còn hạn. Nhờ vậy chữ ký được tiếp tục coi là hợp lệ sau khi chứng chỉ hết hạn. Hầu hết công cụ ký đều có tuỳ chọn gắn dấu thời gian; đơn vị cấp chứng chỉ ký mã thường cung cấp sẵn dịch vụ này.
Dấu thời gian không cứu được trường hợp chứng chỉ bị thu hồi vì lộ khoá. Khi thu hồi, đơn vị cấp thường ghi một mốc thời gian từ đó chữ ký bị coi là không tin được; những bản ký sau mốc đó, kể cả có dấu thời gian, sẽ bị từ chối. Đây là lý do mốc thu hồi cần được chọn cẩn thận khi xảy ra sự cố.
Quy trình ký một bản phát hành
Khung dưới đây áp dụng cho đội nhỏ. Đội có hệ thống phát hành tự động đưa các bước này vào đường phát hành, giữ nguyên nguyên tắc duyệt trước khi ký.
- Dựng bản phát hành từ mã nguồn đã được duyệt, trên máy dựng sạch, không dựng trên máy cá nhân của lập trình viên.
- Kiểm tra bản dựng: chạy kiểm thử, quét mã độc, đối chiếu danh sách tệp với bản trước.
- Người có thẩm quyền duyệt phát hành, ghi lại phiên bản và lý do.
- Ký bằng khoá trên thiết bị phần cứng hoặc dịch vụ ký, luôn kèm dấu thời gian.
- Kiểm tra chữ ký trên một máy sạch khác: thông tin nhà phát hành đúng, chữ ký và dấu thời gian hợp lệ.
- Phát hành qua kênh chính thức của công ty, công bố mã băm của tệp để khách đối chiếu nếu họ muốn.
- Ghi nhật ký ký: ai ký, lúc nào, bản nào, bằng chứng chỉ nào.
Nhật ký ký là thứ cứu doanh nghiệp khi có sự cố: nếu khoá bị dùng sai, bạn biết bản nào là bản thật để thông báo cho khách.
Sai lầm hay gặp ở doanh nghiệp mới ký mã lần đầu
Những lỗi dưới đây không phải lỗi kỹ thuật phức tạp mà là lỗi quy trình, và gần như doanh nghiệp nào mới làm cũng gặp ít nhất một lần.
- Token ký nằm thường trực trên máy của một lập trình viên, cắm suốt ngày, ai ngồi vào máy cũng ký được.
- Mã PIN của token ghi trên giấy dán cạnh màn hình hoặc gửi trong nhóm chat chung.
- Ký cả bản thử nghiệm nội bộ rồi bản đó lọt ra ngoài, mang tên doanh nghiệp đi khắp nơi.
- Quên gắn dấu thời gian; đến khi chứng chỉ hết hạn, các bản cũ đồng loạt bị cảnh báo.
- Không ghi nhật ký ký, nên khi nghi lộ khoá không biết bản nào thật, bản nào giả.
- Đơn vị gia công tự xin chứng chỉ ký mã đứng tên họ rồi ký sản phẩm của bạn, khách thấy tên một công ty lạ khi cài đặt.
- Chứng chỉ sắp hết hạn mà không ai nhớ, vì không nằm trong sổ danh mục chứng chỉ của công ty.
Cả bảy lỗi đều được ngăn bằng một trang quy chế ký mã và một người chịu trách nhiệm giữ quy chế đó. Đó cũng là thứ khách hàng doanh nghiệp lớn hay hỏi khi đánh giá nhà cung cấp phần mềm.
Ứng dụng di động và kho ứng dụng
Ứng dụng di động phát hành qua kho ứng dụng của các hệ điều hành di động đi theo cơ chế ký riêng của từng kho, không dùng chứng chỉ ký mã mua từ đơn vị cấp. Doanh nghiệp đăng ký tài khoản nhà phát triển ở dạng tổ chức, kho xác minh tổ chức theo quy trình riêng, sau đó cấp hoặc quản lý khoá ký cho ứng dụng.
Hai điểm cần quản trị như với chứng chỉ khác. Một là tài khoản nhà phát triển phải đứng tên doanh nghiệp, không đứng tên cá nhân lập trình viên hay đơn vị gia công; mất tài khoản là mất quyền cập nhật ứng dụng. Hai là khoá ký ứng dụng, nếu doanh nghiệp tự giữ, phải được sao lưu an toàn: với một số nền tảng, mất khoá ký đồng nghĩa không phát hành được bản cập nhật cho ứng dụng đang có khách dùng. Hiện nhiều kho cho phép kho giữ khoá ký chính, doanh nghiệp chỉ giữ khoá tải lên có thể đặt lại khi mất; kiểm tra chính sách hiện hành của kho bạn dùng.
Khi đổi đơn vị gia công ứng dụng, đưa tài khoản nhà phát triển và khoá ký vào danh sách bàn giao, giống như tên miền và chứng chỉ website.
Câu hỏi thường gặp
Lộ khoá ký mã thì phải làm gì đầu tiên?
Ngừng mọi việc ký, báo ngay đơn vị cấp để thu hồi chứng chỉ và thống nhất mốc thời gian thu hồi, rà nhật ký ký để biết bản nào là bản thật, rồi xin chứng chỉ mới và ký lại các bản đang phát hành. Thông báo cho khách nếu có khả năng bản giả đã phát tán.
Lập trình viên tự do có xin được chứng chỉ ký mã không?
Một số đơn vị cấp có loại xác minh cá nhân bằng giấy tờ tuỳ thân, tên người sẽ hiện thay tên công ty khi cài. Yêu cầu giữ khoá trên thiết bị phần cứng vẫn áp dụng như với doanh nghiệp.
Có thể dùng chung một chứng chỉ ký mã cho nhiều sản phẩm không?
Có, chứng chỉ gắn với nhà phát hành, không gắn với một sản phẩm. Nhưng nên quy định rõ sản phẩm nào được ký và ai duyệt, vì một lần ký nhầm bản thử hay bản có lỗi sẽ mang tên doanh nghiệp đi khắp nơi.
Ký mã có bắt buộc theo pháp luật Việt Nam không?
Pháp luật không đặt chung một yêu cầu ký mã cho mọi phần mềm. Yêu cầu thường đến từ hệ điều hành, từ khách hàng doanh nghiệp hoặc từ hồ sơ thầu và quy định chuyên ngành. Hãy đọc kỹ yêu cầu kỹ thuật trong hợp đồng hoặc hồ sơ mời thầu.
Phần mềm đã ký rồi nhưng máy khách vẫn cảnh báo là do đâu?
Có thể do thiếu dấu thời gian và chứng chỉ đã hết hạn, do chuỗi chứng chỉ chưa đầy đủ, hoặc do phần mềm còn mới chưa có uy tín với cơ chế đánh giá của hệ điều hành. Kiểm tra chữ ký trên máy sạch trước, rồi theo dõi cảnh báo sau một thời gian phát hành.