
“Khách đổi số lô trên đường dẫn rồi màn hình vẫn báo hàng chuẩn, tôi biết giải thích sao đây?” anh Tùng, chủ xưởng mật ong 4.000 chai mỗi tháng, nói khi mở trang truy xuất thử. Tem cũ chứa URL trace.matto.vn/?lot=2408A. Chỉ cần sửa 2408A thành 2408B, máy chủ trả về một lô khác mà không kiểm chuỗi đó do ai tạo.
Nhóm kỹ thuật giữ mã lô để tra cứu nhưng thêm chữ ký vào đường dẫn. Mỗi tem vẫn mở trên camera thường; máy chủ xác minh chữ ký trước khi hiển thị ngày đóng chai, vùng nuôi và phiếu kiểm nghiệm. Dữ liệu trước và sau được đo trên cùng 4.000 chai để thấy phần nào thay đổi.
Đường dẫn cũ tin mọi mã lô khách gửi lên

Phiên bản đầu nhận tham số lot rồi truy vấn cơ sở dữ liệu. Nếu lô tồn tại, trang hiện thông tin và biểu tượng màu xanh. Máy chủ không biết giá trị đến từ tem của xưởng, đường dẫn do đại lý gửi hay chuỗi bị người khác sửa trên thanh địa chỉ.
Đội thử 200 biến thể bằng cách đổi ký tự cuối. Có 31 chuỗi trùng với lô thật trong ba năm lưu dữ liệu, nên cả 31 đều mở trang xanh. Kẻ làm tem giả chỉ cần đoán được một mã lô đang bán rồi in lại cùng URL.
Nhật ký cũng chỉ ghi lượt mở theo lô, không có định danh từng tem. Một tem bị chụp và in 500 bản sẽ tạo nhiều lượt xem nhưng xưởng khó phân biệt đó là khách quan tâm hay bản sao. Báo cáo cũ vì vậy chỉ phù hợp cho nội dung truy xuất cơ bản.
Trước khi tạo mã QR sản phẩm mới, nhóm chốt hai lớp cần kiểm: URL phải chống sửa tham số và mỗi tem cần mã serial riêng. Lô 2608A gồm 4.000 chai sẽ có serial từ 000001 đến 004000.
Cấu trúc mới ghép mã lô, serial và chữ ký

Đường dẫn mới có dạng trace.matto.vn/p?lot=2608A&sn=000381&sig=K7P4N2. Trường lot chọn hồ sơ lô, sn xác định chiếc tem, còn sig là chữ ký rút gọn do máy chủ tạo. Người dùng có thể nhìn thấy ba trường nhưng không tự sinh sig hợp lệ cho dữ liệu đã sửa.
Ở phía máy chủ, đội ghép lot, sn và một khóa bí mật rồi tính HMAC-SHA256. HMAC là mã xác thực dùng khóa; cùng dữ liệu và cùng khóa sẽ cho cùng kết quả. Sáu đến mười ký tự đầu được dùng trên URL sau khi nhóm tính mức va chạm cho 4.000 tem.
Khóa bí mật chỉ nằm trong dịch vụ phát hành, không đưa vào file CSV cho nhà in. Xưởng gửi danh sách URL hoàn chỉnh, còn bên in chỉ ghép từng địa chỉ với serial in dưới mã. Nếu file bị lộ, khóa vẫn không xuất hiện.
Khi khách mở trang, máy chủ tự tính lại chữ ký từ lot và sn. Kết quả lệch thì trang báo mã không hợp lệ, không truy vấn tiếp hồ sơ lô. Serial đúng nhưng đã bị khóa cũng nhận thông báo riêng để bộ phận hỗ trợ tra nguyên nhân.
Đội còn thêm phiên bản khóa vào cơ sở dữ liệu. Khi đổi khóa năm sau, tem cũ vẫn được kiểm bằng khóa V1 trong thời gian bảo hành; tem mới dùng V2. Quy tắc này tránh làm 4.000 chai đang lưu thông mất trang truy xuất.
Mỗi yêu cầu xác minh còn được gắn một mã phản hồi nội bộ. Mã OK cho chữ ký hợp lệ, BAD_SIG dành cho chuỗi bị sửa và LOCKED chỉ serial đã khóa. Nhật ký lưu mã phản hồi thay vì câu mô tả dài, nhờ đó báo cáo theo tháng đếm đúng từng loại cảnh báo.
Tạo mã QR sản phẩm từ danh sách đã ký

Dịch vụ phát hành xuất CSV gồm serial, URL đã ký, số lô và trạng thái. Hai dòng đầu được kiểm tay, sau đó script rà số lượng, serial trùng và chữ ký trống. Chỉ file đạt 4.000 dòng hợp lệ mới chuyển sang khâu sinh hình.
Designer dùng trình tạo mã QR MONA trên trình duyệt để làm mẫu đầu. Công cụ cho tạo miễn phí, tải PNG hoặc SVG, gắn logo và hỗ trợ VietQR khi cần thanh toán. Bản SVG mẫu giúp chốt kích thước, độ tương phản và vùng trắng trước khi sinh lô tự động.
Tem mật ong rộng 35 x 50 mm, mã có cạnh 22 mm và vùng trắng 2,5 mm. Serial 000381 in dưới hình bằng chữ đen 7 pt. Xưởng không đặt ảnh tổ ong phía sau mã vì họa tiết vàng nhạt làm giảm ranh giới ô.
Phần mềm dàn trang ghép URL của dòng 381 với chữ SN000381. Camera kiểm tra tự động quét ảnh xuất, so URL nhận được với CSV và đánh dấu sai khác. Sau đó 20 tem từ đầu, giữa và cuối cuộn được quét bằng điện thoại.
Tạo mã QR sản phẩm theo lô cần giữ file nguồn, mã phiên bản và biên bản hủy bản lỗi. Cuộn in thử V3 bị lệch serial một hàng đã được cắt bỏ, cân và ghi nhận 126 tem hủy. Bản V4 mới được đưa sang máy dán nhãn.
Bảng đo trước và sau cho cùng một lô 4.000 chai
Nhóm chạy hai bộ kiểm trên hệ thống cũ và mới. Bộ A sửa mã lô hoặc serial của 200 URL. Bộ B quét lặp 50 tem, mỗi tem 12 lần từ ba địa chỉ mạng khác nhau.
| Chỉ số | Tem cũ | Tem có chữ ký |
|---|---|---|
| URL sửa tham số vẫn hiện trang xanh | 31/200 | 0/200 |
| Nhận diện tới từng serial | 0/4.000 | 4.000/4.000 |
| Thời gian phản hồi trung vị | 182 ms | 196 ms |
| Lượt quét lặp được gắn cờ | 0/600 | 550/600 |
Tỷ lệ URL sửa sai lọt qua giảm từ 31 ÷ 200 = 15,5% xuống 0%. Bước kiểm chữ ký làm thời gian trung vị tăng 196 – 182 = 14 ms. Mức tăng này nhỏ hơn thời gian tải ảnh sản phẩm nên người quét gần như không nhận ra.
Trong bài quét lặp, lượt đầu của mỗi tem được coi là bình thường; 11 lượt sau được gắn cờ. Phép tính là 50 x 11 = 550 cảnh báo trên 600 lượt. Báo cáo hiển thị serial, giờ và vùng mạng để nhân viên xem từng trường hợp.
Chữ ký không ngăn ai đó sao chép nguyên cả hình mã hợp lệ. Nó ngăn sửa lot hoặc sn mà vẫn được hệ thống chấp nhận. Việc phát hiện bản sao dựa thêm vào serial riêng, tần suất quét và các vị trí xuất hiện.
Ba câu hỏi trước khi đưa tem ra thị trường
Có cần chữ ký dài đủ 64 ký tự không?
Không cần in toàn bộ chuỗi băm nếu nhóm kỹ thuật đã tính mức va chạm theo sản lượng và rủi ro. Xưởng chọn độ dài sau khi thử tải, rồi lưu quy tắc trong tài liệu phiên bản.
Đổi thông tin lô có phải in tem lại không?
Nếu chỉ sửa nội dung trang như ảnh hoặc phiếu kiểm nghiệm, URL đã ký vẫn giữ. Nếu đổi lot, sn hoặc cách ký, xưởng phải phát hành đường dẫn và tem mới.
Khách thấy cảnh báo thì xử lý ra sao?
Trang đưa số serial, lý do ngắn và nút gửi ảnh sản phẩm cho bộ phận kiểm soát. Nhân viên tra nhật ký phát hành trước khi kết luận. Quy trình tạo mã QR sản phẩm có kiểm chứng nhờ vậy nối được tem in, dữ liệu lô và bằng chứng quét trong một hồ sơ.


