BAN CƠ YẾU CHÍNH PHỦ HỌC VIỆN KỸ THUẬT MẬT MÃ CƠ SỞ AN TOÀN THÔNG TIN Tìm hiểu về QR Code Người hướng dẫn Thầy Nguyễn Mạnh Thắng MỤC LỤC Sinh viên thực hiện 1 Tóm tắt nội dung đề tài 1 Lời nói đầu 2 C[.]
BAN CƠ YẾU CHÍNH PHỦ HỌC VIỆN KỸ THUẬT MẬT MÃ CƠ SỞ AN TỒN THƠNG TIN Tìm hiểu QR Code Người hướng dẫn: Thầy Nguyễn Mạnh Thắng MỤC LỤC Sinh viên thực hiện: Tóm tắt nội dung đề tài Lời nói đầu .2 CHƯƠNG 1: TỔNG QUAN VỀ QR CODE I Giới thiệu mã QR Code QR Code: Mã vạch hệ QR code khác với mã vạch truyền thống (Barcode)? .3 Cách sử dụng QR Code II Ưu nhược điểm QR Code Ưu điểm Nhược điểm .4 III Các phiên cấu trúc QR Code .4 Các phiên QR Code Cấu trúc QR Code CHƯƠNG 2: CÁCH THỨC XÂY DỰNG QR CODE I Data Analysis (Phân tích liệu) .7 II Data Encoding (Mã hoá liệu) III Error Correction Coding (Mã hoá sửa lỗi) 13 IV Structure Final Message (Thông điệp cuối cấu trúc) 14 V Module Placement in Matrix (Vị trí module ma trận) 14 VI Data Masking (Mặt nạ liệu) .21 VII Format and Version Information (Thông tin định dạng phiên bản) 22 Tóm tắt nội dung đề tài Với nội dung giao, nhóm chúng em gồm người tìm hiểu trình bày khái niệm xoay quanh QR Code, cách thức để xây dựng chương trình sinh đọc mã QR Code Qua rút ưu nhược điểm QR Code vài vấn đề an toàn QR Code Lời nói đầu Với phát triển mạnh mẽ cơng nghệ thông tin ứng dụng lĩnh vực đời sống xã hội việc ứng dụng nghiên cứu công nghệ giúp việc sống trở nên nhanh chóng tiện lợi điều vơ cần thiết Vì lý mà QR Code đời nhằm đáp ứng yêu cầu QR Code đời ứng dụng hầu hết mặt sống Chúng ta bắt gặp mã QR Code nhiều nơi sống ngày Ví dụ bao bì sản phẩm giúp ta có thơng tin sản phẩm đó, cửa hàng tiện lợi hay qn cà phê nhà hàng có QR Code quầy thu ngân phục vụ việc toán, … hay số ứng dụng mà rát hay gặp QR Code phục vụ việc chia sẻ mật wifi hay thông tin cá nhân người Vì chúng em hơm làm nghiên cứu nhỏ QR Code, mong thầy bạn theo dõi bổ sung ý kiến cho kiến thức chúng em đầy đủ xác CHƯƠNG 1: TỔNG QUAN VỀ QR CODE I Giới thiệu mã QR Code QR Code: Mã vạch hệ - QR Code khơng cịn xa lạ với chúng ta, bắt đầu xuất khắp nơi nhãn bìa sản phẩm, quầy toán cửa hàng tiện lợi, nhà hàng, cà phê, … Vậy QR Code gì? Mã QR mã ma trận (hay mã vạch hai chiều) phát triển công ty Denso Wave (Nhật Bản) từ năm 1994 Chữ “QR” xuất phát từ “Quick Response” – nghĩa đáp ứng nhanh, người tạo có ý định cho phép mã giải mã tốc độ cao - Hệ thống mã QR phát minh mục đích để theo dõi q trình sản xuất xe cộ, thiết kế phép quét phận với tốc độ cao Ban đầu ứng dụng để theo dõi phận xe, mã QR ứng dụng nhiều ngữ cảnh khác để hướng tới tiện lợi cho người sử dụng điẹn thoại thông minh - Một mã QR đựng thơng tin địa web (URL), thời gian diễn kiện, thông tin liên hệ cá nhân, địa email, tin nhắn Tuỳ thuộc vào thiết bị đọc mã QR mà bạn dùng quét, dẫn bạn tới trang web, gọi điện đến số điện thoại, toán hoá đơn, … QR code khác với mã vạch truyền thống (Barcode)? - Cùng mã vạch QR Code lại phiên cải tiến mã vạch truyền thống Mã vạch truyền thống dãy vạch xếp liền kề nhau, chứa tối da 20 ký tự số, mã QR có khả lưu hàng ngàn ký tự chữ số - Điều cho phép lượng thông tin truyền tải nhiều hơn, hỗ trợ người dùng tốt - Không thế, so kích thước QR Code chiếm khơng gian nhiều so với mã vạch truyền thống Cách sử dụng QR Code - Chỉ cần sử dụng điện thoại thông minh thiết bị chuyên dụng để quét mã QR đọc mã QR II Ưu nhược điểm QR Code Ưu điểm - Có thể lưu lượng thông tin lớn Với phiên (version 40) QR Code lưu trữ tối đa 1817 kỹ tự kanji/kana (2 loại kỹ tự tiếng Nhật), 4296 ký tự tiếng Anh 7098 chữ số - Có thể đọc cách nhanh chóng nhiều góc độ khác - Ngay QR Code bị bẩn hay hỏng, ta khơi phục thơng tin chứa nhờ khả sửa lỗi - Không cần giấy phép để tạo sử dụng mã QR Nhược điểm Nó yêu cầu cài đặt phần mềm ứng dụng đọc mã QR để qt hình ảnh mã QR Điều khơng thể thực tất loại điện thoại di động III Các phiên cấu trúc QR Code Các phiên QR Code - Có 40 phiên khác mã QR từ phiên (21x21), (25x25) đến phiên 40 (77x177) Cấu trúc QR Code Hình 1:Cấu trúc QR Code ① Cell (Ngôn ngữ): Trước hết, QR Code có chứa nhiều hoa văn đen trắng, thực tế ô đen trắng chứa đoạn mã nhị phân Các ô (cell) trắng đen mang giá trị 1, tập hợp cell thơng tin lưu trữ vào QR Code ② Hoa văn định vị: Ở bốn góc QR Code bố trí vng hoa văn định vị Nhờ vào hoa văn định vị này, camera xác định phạm vi QR Code đọc thông tin trường hợp QR Code bị biến dạng, nhờ ta quét QR Code cách nhanh chóng góc độ Thêm vào đó, hoa văn hình vng sử dụng để xác định phạm vi QR code ngăn cách với ký tự, hình vẽ xung quanh Đội phát triển QR code phải khảo sát 5000 trang tờ rơi, bao bì, poster, v.v… thấy hoa văn loại hoa văn có tỉ lệ sử dụng thấp Cả xếp hoa văn với tỉ lệ kích thước kết việc thống kế nhằm đảm bảo phạm vi code xác định ③ Timing pattern (mẫu thời gian): Các ô vuông đen trắng đặt xen kẽ nhằm giúp cho việc xác định toạ độ QR code ④ Alignment pattern (mẫu chỉnh): Ở vùng phía bên phải QR code có hình vng chứa hình vng nhỏ khác bên trong, hoa văn có tác dụng quan trọng, giúp cho việc điều chỉnh lại chênh lệch phát sinh camera bị lệch trình quét ⑤ Thông tin format (chức sửa lỗi): Xung quanh hoa văn định vị phần chứa thông tin format, dịnh mức độ sửa chữa lỗi QR code Ngoại trừ phần ② - ⑤, vùng khác QR code vùng ta thiết kế Bên cạnh đó, để giúp cho việc giữ cân ô đen trắng QR code, chức Mask thiết lập Nhờ vào đó, khơng thấy QR code chứa tồn đen Dựa loại nguyên tắc, thông tin lưu QR code đảm bảo giữ toàn vẹn màu sắc đen trắng đảo ngược để đảm bảo cân CHƯƠNG 2: CÁCH THỨC XÂY DỰNG QR CODE (Ví dụ với chuỗi HELLO WORLD) I Data Analysis (Phân tích liệu) - Một chế độ chuỗi 4-bit thể chế độ liệu bạn sử dụng: kiểu số, kiểu chuỗi, kiểu nhị phân Nhật ngữ Bit string 0001 0010 0100 1000 Data mode Numeric Mode Alphanumeric Mode Binary Mode Japanese Mode Bảng 2.1: Mode Indicator II Data Encoding (Mã hoá liệu) - Bước 1: Choose the Error Correction Level (chọn mức độ sửa lỗi) o QR Code bao gồm mã sửa lỗi Các khối liệu dự phòng đảm bảo mã QR Code đọc cho dù có phần khơng đọc o Có cấp độ sửa lỗi L, M, Q, H o Lưu ý: mức độ sửa lỗi cao yêu cầu nhiều byte mã QR phải lớn Error Correction Level L M Q H Error Correction Capability Recovers 7% of data Recovers 15% of data Recovers 25% of data Recovers 30% of data Bảng 2.2: Bảng mức độ sửa lỗi Với ví dụ chọn mức độ sửa lỗi Q - Bước 2: Determine the Smallest Version for the Data (xác định phiên nhỏ cho liệu) số Nếu độ dài chuỗi khơng phải bội số 3, nhóm chữ số cuối có hai số Bước 2: Bây coi nhóm chữ số số có ba chữ số (hoặc ba, nhóm cuối dài hai chữ số) Chuyển số có ba chữ số thành 10 bit nhị phân Nếu nhóm bắt đầu số 0, phải hiểu số có hai chữ số bạn nên chuyển thành bit nhị phân, có hai số đầu nhóm, nên hiểu chữ số số bạn nên chuyển thành bit nhị phân Tương tự, nhóm cuối bao gồm hai chữ số, bạn nên chuyển thành bit nhị phân, nhóm cuối bao gồm chữ số, bạn nên chuyển thành bit nhị phân o Alphanumeric Mode Encoding: Bước 1: Chia nhỏ chuỗi thành cặp ký tự Bước 2: Đối với cặp ký tự, lấy giá trị mã ASCII ký tự nhân với 45 Sau cộng số vào giá trị mã ASCII ký tự thứ hai Sau chuyển đổi số thành chuỗi nhị phân 11 bit, đệm bên trái số cần Nếu bạn mã hóa số ký tự lẻ, lấy biểu diễn số ký tự cuối chuyển thành chuỗi nhị phân bit o Byte Mode Encoding: Bước 1: Chuyển sang dạng ISO 8859-1 UTF-8 (nếu cần) Bước 2: Chia nhỏ chuỗi thành ký tự Bước 3: Chuyển ký tự sang dạng hex chuyển lại sang dạng nhị phân bit Thêm bên trái bit cần thiết để tạo độ dài bit cho ô o Kanji Mode Encoding: Bước 1: Chia nhỏ chuỗi thành ký tự Bước 2: Chuyển ký tự sang dạng hex nằm khoảng 0x8140 đến 0x9FFC 0xE040 đến 0xEBBF 10 Bước 3: Mã hố byte chế độ Kanji, có phương pháp để mã hoá ký tự Kanji Đối với ký tự có byte nằm khoảng 0x8140 đến 0x9FFC: o Trừ byte thu với 0x8140 chia số thành byte quan trọng byte quan trọng o Nhân byte quan trọng với 0xC0, sau thêm byte quan vào kết o Chuyển đổi kết thành nhị phân 13 bit Đối với ký tự có byte nằm khoảng 0xE040 đến 0xEBBF: o Trừ byte thu với 0xE040 chia số thành byte quan trọng byte quan trọng o Nhân byte quan trọng với 0xC0, sau thêm byte quan trọng vào kết o Chuyển đổi kết thành nhị phân 13 bit Bước 4: Ghép mã nhị phân thu với Ví dụ: để mã hố chuỗi kí tự, ta chia chuỗi thành cặp ký tự: HE,LL,O ,RL,D Sau thực bước Alphanumeric Mode Encoding Chuỗi bit là: Mode Indicator 0010 Character Count Indicator 000001011 Encoded Data 01100001011 01111000110 10001011100 10110111000 10011010100 001101 - Bước 6: Break Up into 8-bit Codewords and Add Pad Bytes if Necessary (Chia nhỏ thành tữ mã 8-bit thêm byte đệm cần thiết) 11 Sau nhận chuỗi bit bao gồm báo chế độ, báo số ký tự bit liệu mơ tả bước từ đến 3, cần thêm số byte đệm, đặc điểm kỹ thuật mã QR yêu cầu chuỗi bit phải lấp đầy hoàn toàn tổng dung lượng mã QR Các phần sau giải thích q trình thêm số byte đệm vào chuỗi bit o Xác định số bit cần thiết cho mã QR Để xác định số lượng bit liệu yêu cầu cho mã QR cụ thể, cần tham khảo bảng sửa lỗi Tìm phiên mức sửa lỗi sử dụng cho mã QR mã hoá tìm số cột “Total Number of Data Codewords for this Version and EC Level” Nhân số với để có tổng số bit liệu cần thiết cho phiên mức sửa lỗi Version 1-L 1–M 1–Q 1–H 2–L … Total Number of Data Codewords for this Version and EC Level 10 13 17 10 … EC Codewords Per Block Number Blocks Group 10 13 17 10 … 1 1 … of Number of … in Data Codewords in Each of Group 1’s Blocks 19 16 13 34 … … … … … … … Bảng 2.4: Bảng sửa lỗi [Xem thêm …] Ví dụ: với mã phiên - Q tổng số bit cần thiết cho mã QR 13 * = 104 bit o Hoàn thành bit Nếu chuỗi bit ngắn tổng số bit yêu cầu, dấu chấm hết có tối đa bốn chữ số phải thêm vào phía bên phải chuỗi Nếu chuỗi bit nhỏ 104, ta phải thêm số vào cuối chuỗi Nếu thêm số chuỗi nhiều 104, ta cần thêm số đủ 104 bit Ví dụ: Chuỗi ta là: 12 0010 000001011 01100001011 01111000110 10001011100 10110111000 10011010100 001101 0000 o Sau thêm dấu chấm cuối, số bit chuỗi bội số 8, trước tiên đệm chuỗi bên phải số để làm cho độ dài chuỗi trở thành bội số Ví dụ: Bước ta chia chuỗi thành nhóm bit Ở chuỗi cuối cùng, chưa đủ bit ta thêm vào sau số đủ Chuỗi thêm số vào sau chuỗi cuối 00100000 01011011 00001011 01111000 11010001 01110010 11011100 01001101 01000011 01000000 o Thêm bit đệm chuỗi ngắn Nếu chuỗi chưa đủ dài để lấp đầy dung lượng tối đa, thêm byte 11101100 00010001 vào cuối chuỗi, lặp lại chuỗi đạt đến độ dài tối đa Ví dụ: Chuỗi có 10 chuỗi con, cần phải thêm vào chuỗi Bắt đầu thêm 11101100, sau thêm 00010001, tới 11101100 Nếu cần nhiều thêm đủ số chuỗi Chuỗi bây giờ: 00100000 01011011 00001011 01111000 11010001 01110010 11011100 01001101 01000011 01000000 11101100 00010001 11101100 III Error Correction Coding (Mã hoá sửa lỗi) - Bước 1: Tìm có mã sửa lỗi cần tạo Ví dụ: xem bảng 2.4, cần 13 mã sửa lỗi - Bước 2: Tạo thơng điệp đa thức 13 Ví dụ: Chuyển 13 khối liệu từ bước sang thành dạng thập phân Ta được: 32, 91, 11, 120, 209, 114, 220, 77, 67, 64, 236, 17, 236 Lũy thừa số hạng tính: Số khối liệu + số mã sửa lỗi -1 Ở 13+13-1=25 Vậy nên số hạng 32x25 Từ ta đa thức: 32x25 + 91x24 + 11x23 + 120x22 + 209x21 + 114x20 + 220x19 + 77x18 + 67x17 + 64x16 + 236x15 + 17x14 + 236x13 - Bước 3: Tạo tạo đa thức (công cụ tạo đa thức) Ví dụ: Tiếp theo ta tạo tạo đa thức Ta chia thông điệp đa thức tạo để tạo mã sửa lỗi Các tạo đa thức đến từ gọi trường hữu hạn , biết đến trường Galois Các mã QR sử dụng trường Galois có 256 yếu tố, có nghĩa là, mục đích chúng ta, số mà giao dịch với ln ln tối đa 255 Để thực việc phân chia đa thức, chuyển đổi qua lại ký hiệu α (alpha) số nguyên Alpha giá trị số nguyên từ bảng log antilog Bộ tạo đa thức ln ln có dạng (x – α) (x – α 2) … (x – αt), t tương đương với số lượng mã sửa lỗi cần thiết trừ Ở tạo 13 mã sửa lỗi: α0x25 + α74x24+ α152x23+ α176x22 + α100x21+ α86x20 + α100x19 + α106x18+ α104x17 + α130x16+ α218x15 + α206x14 + α140x13+ α78x12 Kết bước ta mã sửa lỗi: 168 72 22 82 217 54 156 46 15 180 122 16 IV Structure Final Message (Thông điệp cuối cấu trúc) - Bước 1: Ta đặt đoạn mã sửa lỗi phía sau đoạn mã liệu - Bước 2: Chuyển đoạn mã vừa nhận sang mã nhị phân Ví dụ: Ta đặt đoạn mã sửa lỗi sau đoạn mã liệu: 32 91 11 120 209 114 220 77 67 64 236 17 236 168 72 22 82 217 54 156 46 15 180 122 16 14 Chuyển qua nhị phân: 00100000 01011011 11011100 01001101 11101100 10101000 00110110 10011100 01111010 00010000 V 00001011 01000011 01001000 00000000 01111000 01000000 00010110 00101110 11010001 11101100 01010010 00001111 01110010 00010001 11011001 10110100 Module Placement in Matrix (Vị trí module ma trận) - Bước 1: Thêm mẫu tìm kiếm Các mẫu cơng cụ tìm kiếm ln đặt góc bên trái, bên phải bên trái mã QR, phiên sử dụng Hình 2: Mẫu tìm kiếm Hình 3: Minh hoạ mẫu tìm kiếm QR Code phiên - Bước 2: Thêm dấu phân cách Các dải phân cách dịng mơ-đun màu trắng, rộng mơđun, đặt bên cạnh mẫu cơng cụ tìm để tách chúng khỏi phần cịn lại mã QR 15 Hình 4: Minh hoạ cho dải phân cách QR Code phiên - Bước 3: Thêm mẫu chỉnh Mã QR phiên trở lên bắt buộc phải có mẫu chỉnh Mẫu chỉnh Hình 5: Mẫu chỉnh Version QR Version QR Version QR Version QR Version QR Version QR Version QR Version QR Version QR Version 10 QR Version 11 QR Version 12 … Center Module Row and Column 18 22 26 30 34 22 38 24 42 26 46 28 50 30 54 32 58 Bảng 2.5: Bảng vị trí mẫu chỉnh [Xem thêm…] - Bước 4: Thêm mẫu thời gian Các mẫu thời gian hai đường, ngang dọc, module sáng tối xen kẽ Mẫu thời gian theo chiều ngang đặt hàng thứ mã QR dải phân cách Mẫu thời 16 gian dọc đặt cột thứ mã QR dấu phân cách Các mẫu thời gian bắt đầu kết thúc modlue tối Các mẫu chỉnh chồng lên mẫu thời gian module sáng tối chúng trùng với module sáng tối mẫu thời gian Hình 6: Minh hoạ cho mơ hình thời gian QR Code phiên - Bước 5: Thêm module tối khu vực dành riêng Như đề cập trước trang này, tất mã QR có mơ-đun tối bên cạnh mẫu cơng cụ tìm phía bên trái Cụ thể hơn, mô-đun tối nằm tọa độ ([(4 * V) + 9], 8) V phiên mã QR Dải mô-đun bên cạnh dải phân cách phải dành riêng cho vùng thông tin định dạng sau: Gần mẫu cơng cụ tìm bên trái, dải mô-đun phải dành riêng bên bên phải dải phân cách Gần mẫu cơng cụ tìm bên phải, dải mô-đun phải đặt trước bên dấu phân cách Gần mẫu cơng cụ tìm phía bên trái, dải mô-đun phải dành riêng bên phải dấu phân cách Các hình ảnh sau hiển thị khu vực dành riêng có màu xanh lam Chúng đặt dọc theo dải phân cách, mã QR phiên 17 ... TỔNG QUAN VỀ QR CODE I Giới thiệu mã QR Code QR Code: Mã vạch hệ QR code khác với mã vạch truyền thống (Barcode)? .3 Cách sử dụng QR Code II Ưu nhược điểm QR Code. .. chúng em gồm người tìm hiểu trình bày khái niệm xoay quanh QR Code, cách thức để xây dựng chương trình sinh đọc mã QR Code Qua rút ưu nhược điểm QR Code vài vấn đề an toàn QR Code Lời nói đầu Với... 5: Mẫu chỉnh Version QR Version QR Version QR Version QR Version QR Version QR Version QR Version QR Version QR Version 10 QR Version 11 QR Version 12 … Center Module Row and Column 18 22 26 30