Chương 5 : Tổng quan QR code
5.2 Cấu trúc QR code
5.3 Khả năng lưu trữ - sửa lỗi
5.3.1.1 Khả năng lưu trữ
Bảng 15: khả năng lưu trữ của QR code
Loại ký tự Khả năng lưu trữ tối đa
Số đơn thuần 7089 ký tự
Số và chữ cái 4296 ký tự
Số nhị phân (8 bit) 2953 byte
Kanji/Kana 1817 ký tự
5.3.1.2 Khả năng sửa lỗi
Bảng 16: khả năng sửa lỗi của QR code
Mức độ Phần trăm lỗi
Mức L 7% số từ mã có thể phục hồi
Mức M 15% số từ mã có thể phục hồi
Mức Q 25% số từ mã có thể phục hồi
5.4 So sánh QR code với các loại 2D code khác
Ngoài QR code, một số loại 2D code khác cũng được phát triển. Bảng dưới dây là các 2D code phổ biến và tính năng của chúng: [29]
Bảng 17: so sánh QR code và các 2D code khác
2D code QR code PDF417 Data
Matrix Maxi Code Hình minh họa Nhà phát triển DENSO (Japan) Symbol Technologies (USA) RVSI Acuity CiMatrix (USA) UPS (USA)
Loại Matrix Stacked Bar
Code Matrix Matrix Dung lượng data Numeric 7089 2710 3116 138 Alphanumeric 4296 1850 2355 93 Binary 2953 1018 1556 Kanji 1817 554 778 Tính năng chính Dung lượng lớn, kích thước nhỏ, tốc độ đọc cao Dung lượng lớn Kích thước nhỏ Tốc độ đọc cao Hạng mục sử dụng Tất cả hạng mục Office automation FA Logistics Tiêu chuẩn AIM JIS, ISO AIM, ISO AIM, ISO AIM, ISO Từ bảng so sánh trên, dễ dàng nhận thấy rằng QR code hoàn toàn vượt trội so với các loại 2D code khác
5.5 So sánh QR code và NFC 5.5.1 Các nguy cơ của NFC 5.5.1 Các nguy cơ của NFC
Cũng giống như các smart card RFID, NFC cũng sử dụng sóng RF để truyền dữ liệu và hoạt động trên dải tần 13.56 MHz do đó NFC cũng gặp phải các nguy cơ
nói chung của các thiết bị sử dụng sóng RF như: kỹ thuật đảo ngược và phân tích cơng suất. Ngồi ra NFC cịn phải đối mặt với một số nguy cơ khác như sau:
5.5.1.1 Eavesdropping (nghe trộm)
Bởi vì NFC là giao tiếp khơng dây nên nghe trộm là một vấn đề quan trọng cần phải chú ý. Khi hai tiếp bị giao tiếp qua NFC chúng sử dụng sóng RF để trao đổi thơng tin. Kẻ tấn cơng có thể sử dụng anten để nhận các tín hiệu truyền đi. Mặc dù, NFC thường được thực hiện giữa hai thiết bị ở gần nhau không quá 10cm tuy nhiên khoảng cách giao tiếp còn phụ thuộc vào chế độ hoạt động. Khi thiết bị đang gửi dữ liệu ở chế độ active, kẻ tấn cơng có thể nghe trộm trong khoảng cách lên đến 10m, trong khi đó khi thiết bị gửi thơng tin ở chế độ passive, khoảng cách này giảm xuống còn khoảng 1m. [30]
5.5.1.2 Phá hoại dữ liệu
Kẻ tấn cơng có thể làm thiết bị thu nhận khơng đúng dữ liệu được gửi bởi thiết bị phát. Phá hoại dữ liệu có thể thực hiện bằng cách phát một tần số phù hợp trong khoảng thời hai thiết bị giao tiếp với nhau. Về cơ bản nó là một hình thức tấn cơng Denial of Service. [30]
5.5.1.3 Chèn dữ liệu
Kẻ tấn cơng có thể chèn dữ liệu phá hoại vào quá trình trao đổi dữ liệu giữa hai thiết bị NFC. Kẻ tấn cơng có thể gửi dữ liệu của mình sớm hơn thiết bị hợp lệ trả lời. Nếu kẻ tấn công gửi dữ liệu trùng thời điểm thiết bị hợp lệ trả lời, dữ liệu sẽ bị hỏng. [30]
5.5.2 Tính tiện dụng của QR code so với NFC
So với NFC, QR code tiện dụng hơn do khơng địi hỏi smart phone phải trang bị chip NFC (chỉ 31% smartphone được trang bị NFC), khơng có sự phân biệt về nền tảng hệ điều hành, ngồi ra QR code cịn miễn phí.
Hình 5.3: so sánh QR code và NFC [31] 5.6 Kết luận
Như đã trình bày ở các phần trên RFID, NFC và các hình thức truyền thơng dùng sóng RF nói chung phải đối mặt với nhiều nguy cơ. Do đó, để tránh các nguy cơ khi sử dụng sóng RF, tơi quyết định sử dụng QR code để trao đổi thông tin giữa smart phone và module xử lý xác nhận truy cập (Raspberry Pi).
Capture QR code
Smart phone
Camera QR code
Hình 5.4: minh họa scan QR code từ màn hình smart phone của người dùng Như hình 5.4, QR code được scan trực tiếp từ màn hình smart phone của người Như hình 5.4, QR code được scan trực tiếp từ màn hình smart phone của người dùng, điều này giúp loại bỏ các hình thức tấn cơng như nghe trộm, chèn dữ liệu, phá hoại dữ liệu, MITM attack…
Tuy nhiên, với cách làm trên vẫn tồn tại một nguy cơ bị tấn cơng, đó là hình thức tấn cơng phát lại – replay attack. Phần xử lý khắc phục lỗ hổng này sẽ được trình bày ở chương 6.
6 Chương 6: Hình thức tấn cơng phát lại (Replay attack)
6.1 Giới thiệu
6.1.1 Kịch bản tấn cơng Xét tính huống sau: Xét tính huống sau:
Giả sử Bob là ngân hàng còn Alice là một khách hàng của Bob. Alice gửi thông điệp đề nghị Bob chuyển cho Trudy 10.000$.
Alice có áp dụng các biện pháp như chữ ký điện tử với mục đích khơng cho Trudy mạo danh cũng như sửa thông điệp.
Tuy nhiên, nếu Trudy sao chép và phát lại thơng điệp đến Bob thì các biện pháp bảo vệ này khơng có ý nghĩa. Bob sẽ tin rằng Alice đã gửi lại thông điệp mới để yêu cầu chuyển thêm cho Trudy 10.000$ nữa.
6.1.2 Định nghĩa
Replay attack hay cịn gọi là tấn cơng phát lại. Trudy (kẻ tấn công) chặn thông điệp của Alice gửi cho Bob và sau đó một thời gian gửi lại thơng điệp này cho Bob. Như vậy Bob sẽ nghĩ rằng Alice gửi thông điệp hai lần khác nhau. Tuy nhiên, thực sự thì Alice chỉ gửi một lần.
Alice Bob Trudy
Network
Sao chép thơng điệp của Alice và gửi lại cho Bob
Hình 6.1: replay attack 6.1.3 Liên hệ thực tế hệ thống 6.1.3 Liên hệ thực tế hệ thống
Trong phần trên, chúng ta có mơ hình scan QR code từ màn hình smart phone của người dùng như sau:
Capture QR code
Smart phone
Camera QR code
Hình 6.2: minh họa scan QR code từ màn hình smart phone của người dùng Nếu như kẻ tấn cơng đặt một camera bí mật và cũng chụp được QR code từ Nếu như kẻ tấn cơng đặt một camera bí mật và cũng chụp được QR code từ màn hình smart phone thì có thể sử dụng nó để đánh lừa module điều khiển access control và xâm nhập trái phép.
6.2 Các phương pháp chống Replay attack:
Có 3 phương pháp để chống replay attack [9] 6.2.1 Dùng số định danh
6.2.1.1 Phương pháp
Trong mỗi message gửi cho Bob, Alice nhúng vào đó một con số định danh thơng điệp S. Mỗi message tương ứng với một S khác nhau.
, AB
CE P S K Với là phép nối dãy bit
Do đó, nếu Trudy phát lại message, Bob sẽ biết được hai message có cùng số định danh và loại bỏ message thứ hai.
6.2.1.2 Nhược điểm
Phương pháp này có hạn chế là Bob phải lưu trữ số định danh của Alice để có cơ sở so sánh.
6.2.2 Dùng timestamp 6.2.2.1 Phương pháp 6.2.2.1 Phương pháp
Trong mỗi thông điệp gửi cho Bob, Alice nhúng nào một timestamp T xác định thời điểm gửi. Bob chỉ chấp nhận thơng điệp nếu nó đến được Bob trong một thời gian giới hạn nào đó kể từ lúc gửi.
, AB
CE P T K
6.2.2.2 Nhược điểm
Phương pháp này yêu cầu đồng hồ của Alice và Bob phải đồng bộ, khơng được sai lệch q nhiều. Ngồi ra, độ trễ việc truyền tin trên mạng cũng là một trở ngại đối với phương pháp này.
6.2.3 Dùng cơ chế challenge/ response 6.2.3.1 Phương pháp 6.2.3.1 Phương pháp
Để đảm bảo thông điệp từ Alice không phải là thông điệp phát lại, Bob gửi một số ngẫu nhiên N cho Alice (gọi là nonce). Alice sẽ nhúng N trong thông điệp gửi lại Bob.
Khi Bob giải mã thông điệp, Bob sẽ kiểm tra N mà Bob nhận được xem có trùng khớp với N mà Bob đã gửi đi không.
Như vậy, Trudy khơng thể phát lại thơng điệp vì mỗi lần Bob sẽ gửi một số N khác nhau. A B N , AB C E P N K A B N , U B C E M N K Mã hóa đối xứng Mã hóa bất đối xứng
Hình 6.3: cơ chế challenge/ response chống replay attack 6.2.3.2 Nhược điểm 6.2.3.2 Nhược điểm
Phương pháp này đòi hỏi phải thêm một bước là Bob gửi N cho Alice. 6.3 Kết luận
Trong đề tài luận văn này, tôi sử dụng phương pháp dùng timestamp để tránh nguy cơ bị tấn công phát lại. Phương pháp này khơng địi hỏi phải có thêm bước trao
đổi thơng tin giữa người gửi và người nhận như cơ chế challenge/ response, cũng không yêu cầu bên nhận phải lưu trữ số định danh như phương pháp dùng định danh. Các thiết bị ngày nay có khả năng đồng bộ thời gian từ NTP server, hơn nữa, việc scan QR code trực tiếp từ màn hình smart phone diễn ra với tốc độ rất nhanh, không bị ảnh hưởng bởi độ trễ như khi truyền tin qua mạng.
7 Chương 7: Xây dựng hệ thống Access Control 7.1 Mơ hình hệ thống 7.1 Mơ hình hệ thống 7.1.1 Mơ hình thực tế CA server Smart Phone Certificate
Signing Request Digital signature QR code
Camera
Raspberry Pi (Access control module) Certificate FTP server Web server Control Name Email User name Password AES encrypt Pre-shared key Pre-shared key AES decrypt
Hình 7.1: mơ hình thực tế hệ thống access control 7.1.2 Thuyết minh hệ thống 7.1.2 Thuyết minh hệ thống
Bảng 18: thành phần và chức năng của các thành phần trong hệ thống access control
Thành phần Chức năng
Đăng ký tài khoản:
- Người dùng đăng ký thông gồm: tên, email, username, password cho web server (thông tin được gửi đi là các thơng tin đã mã hóa AES bằng pre-shared key thiết lập sẵn trong phần mềm).
- Thông tin username/ password sẽ được dùng để đăng nhập tài khoản quản lý của người dùng trên web server.
Phần mềm access control trên smart phone người dùng
- Username còn được dùng làm tên file certificate do CA tạo ra do đó username khơng được phép trùng.
Tạo chữ ký điện tử:
- Người dùng nhập vào chuỗi chữ ký dạng plaintext. - Tạo chữ ký điện tử.
- Đăng ký public key (upload Certificate Signing Request lên CA server).
Xác thực ra vào (Access control)
- Tạo QR code để scan bằng module điều khiển access (Raspberry Pi)
- QR code = time stamp + username + chuỗi chữ ký (plain text) + chuỗi chữ ký (mã hóa)
Module điều khiển access (Raspberry Pi)
Scan QR code:
- Scan QR code từ màn hình smart phone của người dùng
Xác thực chữ ký điện tử:
- Giải mã QR code → chuỗi
- Kiểm tra tính hợp lệ của time stamp (chống replay attack) - Kiểm tra file certificate (tương ứng với username) có tồn tại hay khơng? Nếu không → download file certificate từ CA server
- Kiểm tra tính hợp lệ của chữ ký điện tử với public key trong certificate tương ứng.
CA & web server
Nhận thông tin đăng ký từ người dùng
- Giải mã thông tin đăng ký từ người dùng bằng pre-shared key đã thiết lập sẵn.
- Kiểm tra thông tin đăng ký từ người dùng (username và email không được phép trùng)
- Tạo tài khoản người dùng tương ứng thông tin đã đăng ký
Nhận CSR và tạo certificate tương ứng
- Nhận certificate signing request từ người dùng - Tạo certificate tương ứng
- Chuyển file certificate sang FTP server với tên file là username của người dùng tương ứng.
7.2 Lưu đồ giải thuật
7.2.1 Phần mềm access control
START
Đăng ký thông tin người dùng lên Web Sever, bao gồm: - Tên người dùng (Name)
- Địa chỉ mail (Email) - Tên đăng nhập (User Name) - Mật khẩu (Password)
Tạo cặp khóa public key và private key dùng thuật tốn ECC (elliptic curve cryptography)
Tạo Certificate Signing Request (CSR) bao gồm: - Common name
- Organization - Organization Unit - Public key
Sau đó dùng private key để ký (sign) CSR
Upload file CSR đến CA server
STOP
Tạo chữ ký điện tử từ một chuỗi plaintext tùy chọn
Cần Access?
Tạo QR code = Chuỗi (Thời gian + Tên đăng nhập + Chuỗi chữ ký dạng plain text + Chuỗi chữ ký)
Scan QR code bằng camera của module Access control (Raspberry Pi)
Yes No
Dùng khóa bí mật thiết lập trước (pre-shared key) mã hóa AES các thơng tin đăng ký trước khi gửi đến Web Server
Quá trình thực hiện:
B1: người dùng sử dụng chức năng “Register Information”, nhập các thông tin bắt
buộc vào phần mềm trên smartphone Android bao gồm: - Name: tên của người dùng
- Email: email đăng ký để sử dụng phần mềm (mỗi người dùng chỉ có một email tương ứng, email này cũng được dùng để hệ thống gửi các cảnh báo đến người dùng). Email không được phép trùng.
- Username: tên đăng nhập, tên này sẽ được sử dụng làm tên của file CSR và X.509 certificate để xác thực người dùng. Ngồi ra, cịn được dùng lên tên đăng nhập giao diện quản lý web tự động cấp cho người dùng. Username không được phép trùng.
- Password: mật khẩu tương ứng với username ở trên, dùng để đăng nhập web - Nhấn nút “Register” để đăng ký thơng tin đã nhập phía trên về CA server. Lưu ý:
Phần mềm được thiếp lập sẵn một khóa (pre-shared key), được sử dụng để mã hóa AES-256 các thơng tin người dùng đã đăng ký phía trên, nhắm bảo mật thơng tin trong q trình trao đổi qua internet.
Pre-shared key này người dùng không thể chỉnh sửa. Việc cập nhật pre-shared key do tác giả phần mềm cập nhật thông qua việc cập nhật phần mềm từ CH play.
B2: người dùng sử dụng chức năng Generate ECDSA, để tạo chuỗi chữ ký điện tử
và file Certificate Signing Request (CSR). Cụ thể như sau:
- Người dùng nhập chuỗi chữ ký dạng plaintext vào phần mềm.
- Nhấn nút “Sign”. Sau khi nhấn nút, phần mềm sẽ tự động tạo ra một cặp khóa (public key và private key). Dùng private key để ký chuỗi plaintext đã nhập phía trên, tạo thành chuỗi chữ ký điện tử. Cuối cùng là tạo ra file CSR với tên file chính là username người dùng đã đăng ký.
Lưu ý:
Sau khi thực hiện bước 1 và bước 2, người dùng đã hồn tất q trình đăng ký. Bước 1 chỉ cần thực hiện một lần. Bước 2 cũng chỉ thực hiện một lần, trừ trường hợp người dùng muốn thay đổi cặp khóa hoặc chuỗi chữ ký điện tử.
B3: Sử dùng phần mềm trên smart phone thực hiện quá trình access control
Sau khi đã thực hiện quá trình đăng ký ở bước 1 và bước 2. Người dùng sử dụng chức năng “QR Access key” để tạo ra mã QR code từ chuỗi chữ ký điện tử đã tạo ra ở bước 2. Người dùng scan mã QR code này bằng module điều khiển, nếu QR code hợp lệ người dùng có thể được phép access.
Lưu ý:
Mã QR code chỉ có thời gian hiệu lực là 60s (để chống replay attack), do đó mỗi lần người dùng thực hiện quá trình access cần phải tạo lại QR code (nhấn nút trên phần mềm).
7.2.2 Module điều khiển access control (Raspberry Pi)
START
Scan mã QR code từ điện thoại của người dùng
Scan thành công? Yes No
Giải mã QR code thành dạng chuỗi
QR code = Chuỗi( Thời gian + Tên đăng nhập + Chuỗi chữ ký dạng plain text + Chuỗi chữ ký)
Tách chuỗi giải mã thành các chuỗi con: - Thời gian
- Tên đăng nhập (username) - Chuỗi chữ ký dạng plaintext - Chuỗi chữ ký
Kiểm tra chuỗi thời gian (chống Replay Attack)
Hợp lệ
Yes
Kiểm tra file Certificate trên board Raspberry Pi
Tồn tại?
Download file Certificate tương ứng với Tên đăng nhập (username) No Yes Xác thực (verify) chữ ký điện tử Xác thực thành công? Cho phép Access STOP No No Yes
Quá trình thực hiện:
B1: Scan và giải mã QR code từ smart phone của người dùng
Nếu module điều khiển access control scan thành công QR code từ smart phone của người dùng thì chuyển sang bước 2. Nếu không sẽ báo lỗi để người dùng điều chỉnh vị trí đặt smart phone cho đến khi scan QR code thành công.
B2: Giải mã QR code
Module điều khiển access control chuyển mã QR code thành dạng chuỗi.
Chuỗi QR code = thời gian + tên đăng nhập (username) + chuỗi chữ ký dạng plain text + chuỗi chữ ký điện tử (đã mã hóa).
B3: Tách chuỗi và kiểm tra tính hợp lệ
Module điều khiển access control thực hiện quá trình tách chuỗi. Thành phần đầu