Tổng quan MAXQ1050

Một phần của tài liệu Nghiên cứu giải pháp sử dụng khóa USB cho việc đảm bảo bản quyền cho (Trang 47 - 58)

MAXQ1050 là dòng vi điều khiển chuyên dụng cho các thiết bị USB bảo mật của hãng MAXIM. Chip đƣợc tích hợp sẵn bộ giao thức USB và một số thuật toán mã mật không đối xứng nhƣ RSA, AES, DES…thích hợp cho các ứng dụng về an ninh ngân hàng, Tokens, chữ ký số…. Một số đặc tính nổi bật:

- Dòng vi điều khiển 32 bit đƣợc xây dựng trên nền nhân MAXQ30 với cấu hình RISC, có hiệu năng cao và tiêu thụ nguồn thấp.

- Làm việc trực tiếp với nguồn cấp từ giao thức USB hoặc nguồn đƣợc cấp riêng 3.3V.

- Tích hợp sẵn bộ dao động 20MHz, riêng với những ứng dụng có giao tiếp USB phải sử dụng bộ dao động ngoài có tần số 12/24MHz.

- Thanh ghi lệnh có độ dài 16 bit, bus dữ liệu nội bộ có độ dài 32 bit. - Có 16 thanh ghi 32 bit cho mục đích tính toán Accumulator.

48

- Có 16 thanh ghi 32 bit cho mục đích chung General-Purpose. - Có 20 chân cổng vào ra đa mục đích tƣơng thích với điện áp 5V. - Tài nguyên bộ nhớ:

. 128KB flash chia thành 32 trang.

. Bộ nhớ flash cho phép đọc/ghi lên đến 20 nghìn lần. . 256 byte NV SRAM tối mật (chứa key).

. 4K NV SRAM cho ứng dụng sao lƣu nhƣng phải có pin hỗ trợ. . 12K SRAM bộ nhớ dữ liệu thông thƣờng.

. Hỗ trợ lập trình và debug theo chuẩn JTAG/TAP. - Tính năng bảo mật:

. Mỗi chip đƣợc cung cấp một serial duy nhất có độ dài 64bit.

. Có cơ chế tự hủy dữ liệu và key khi phát hiện sự truy cập trái phép.

. Tích hợp sẵn các engine AES, RSA, DSA, ECDSA, DES, 3DES, SHA-1, SHA-224, SHA-256.

. Có các cảm biến về nhiệt độ và điện áp để phát hiện sự tấn công. . Cung cấp 2 đầu vào cho chế độ tự hủy.

- Ngoại vi:

. Chức năng cảnh báo về sự cố nguồn cung cấp (sụt điện áp). . Giao tiếp USB với tốc độ full-speed với 6 endpoint.

49

Hình 3-12: Sơ đồ khối chức năng MAXQ1050[11]

50

3.2.2 Quy trình thiết kế

a. Sơ đồ khối

Với chip MAXQ1050 có độ tích hợp cao bao gồm giao tiếp USB, nên trong thiết kế gần nhƣ không cần thêm các thành phần phụ trợ, sơ đồ khối của thiết bị trở nên khá đơn giản.

51 b. Sơ đồ nguyên lý NC 1 P0.0/INT0 2 P0.1/INT1 3 P0.2/INT2 4 P0.3/INT3 5 P0.4/INT4/T0A 6 P0.5/INT5/T0B 7 P0.6/INT6/T1A 8 P0.7/INT7/T1B 9 NC 10 P1.0/RXD 11 P1.1/TXD 12 P1.2/ISO_C 13 P1.3/ISO_D 14 GND 15 P1.4/MISO 16 P1.5/MOSI 17 P1.6/SCLK 18 P1.7/SSEL 19 P2.0/TCK 20 P2.1/TDI 21 P2.2/TMS 22 P2.3/TDO 23 RST 24 NC 25 HFXIN 26 HFOUT 27 SDI1 28 SDI2 29 Vbat 30 GND 31 REG18 32 VDD 33 Vddio 34 Vddb 35 VBUS 36 DM 37 GND 38 DP 39 NC 40 U1 MAXQ1050 GND 0.01uF C1 Cap DM DP RESET TDO TMS TDI TCK 100nF C6 Cap 1.0uF C7 Cap GND 100nF C12 Cap 1.0uF C13 Cap GND GND

VBUS VDDB VDDIO VDD REG18

GND 1 2 3 4 5 6 USB1 MHDR1X6 TCK TDO TMS TDI GND VDDIO RESET VBUS D2 LED3 1K R1 Res1 P00 P01 P02 P03 P04 P05 P06 P07 P20 P21 GND MOSI MISO SCLK SSEL nCardInsert nLocked SDI2 1 2 SDI2 MHDR1X2 GND SDI2 1 2 3 4 5 6 7 8 9 10 P1 Header 5X2 VBUS 0.01uF C14 Cap 1uF C15 Cap GND 0.01uF C4 Cap 1uF C5 Cap GND DM DP 100nF C2 Cap 1.0uF C3 Cap GND iUSB ClassName: USB

Matched Net Lengths [Tolerance = 100mil]

VDDIO 1 2 Y1 12M 27p C22 27p C44 GND D5 LED3 1K R10 Res3 VBUS

Hình 3-15: Sơ đồ nguyên lý thiết bị

Có thể thấy sơ đồ nguyên lý của thiết bị khá đơn giản, với việc chip MAXQ1050 đã đƣợc tích hợp đầy đủ tính năng cho ứng dụng, nên trong sơ đồ chỉ cần bổ sung thêm các phần tử thụ động là các điện trở và tụ điện đảm bảo cho thiết bị hoạt động đƣợc ổn định.

52 (adsbygoogle = window.adsbygoogle || []).push({});

c. Sơ đồ mạch in và bố trí linh kiện

2 1 1 2 3 4 5 6 7 8 9 10 1 2 2 1 2 1 2 1 2 1 2 1 2 1 1 2 1 2 2 1 1 2 Hình 3-16: Sơ đồ mạch in mặt TOP 0 2 1 1 2 3 4 5 6 7 8 9 10 2 1 2 1 2 1 2 1 2 1 1 2 1 2 Hình 3-17: Sơ đồ mạch in mặt BOTTOM MH2 MH1 6 5 1 2 3 4 5 6 7 8 9 10

53 MH2 MH1 6 5 1 2 3 4 5 6 7 8 9 10

Hình 3-19: Sơ đồ bố trí linh kiện mặt TOP

Hình 3-20: Thiết bị sau khi hàn linh kiện

Hình 3-21: Hình ảnh so sánh giữa 2 sản phẩm và thiết bị lƣu trữ USB thông dụng có trên thị trƣờng

3.2.3 Nguyên lý làm việc

Trong thiết kế này (sử dụng chip MAXQ1050), nguyên lý làm việc cũng không khác so với thiết kế cũ (sử dụng chip ATMEGA8). Tuy nhiên do đƣợc hỗ trợ về các engine cứng của thuật toán AES, cho nên thiết bị đã sử dụng thuật toán AES điều này

54

khiến cho độ bảo mật của thiết bị đƣợc tăng lên nhiều lần trong khi hiệu năng sử dụng vẫn đảm bảo.

3.2.4 Chƣơng trình điều khiển (firmware)

Với thiết kế sử dụng MAXQ1050, việc lập trình firmware trở nên khá đơn giản, do một mặt chip đƣợc hỗ trợ về phần cứng các giao thức USB và mã AES, một mặt môi trƣờng lập trình đƣợc hỗ trợ bởi bộ thƣ viện dành riêng cho các chip đƣợc xây dựng trên nhân MAXQ30 của hãng MAXIM khá đầy đủ. Ngƣời dùng chỉ cần thao tác trên các bộ thƣ viện đã đƣợc xây dựng sẵn cũng nhƣ trên các tập thanh ghi đã khai báo.

Firmware của thiết bị có thể chia thành 2 phần riêng biệt:

a. Về giao thức USB

Nhƣ đã trình bày trong chƣơng 1 của luận văn, với giao thức USB đã đƣợc hỗ trợ về mặt phần cứng, ngƣời sử dụng chỉ cần thao tác trên các thanh ghi cấu hình và thanh ghi trạng thái và đặc biệt là khai báo về bảng mô tả thiết bị (HIDDescriptor). Cụ thể trong trƣờng hợp này hai thông số đặc trƣng cho thiết bị là:

- VID: 0x6666 - PID: 0x9999

Với việc khai báo thiết bị có Interface dạng HID, ta sẽ không cần phải viết driver cho thiết bị mà tận dụng sẵn các hàm API đã có hỗ trợ cho lớp HID trên hệ điều hành máy tính (hệ điều hành Windows) nhƣ: hàm phát hiện sự mặt thiết bị, hàm trao đổi dữ liệu… đây cũng là một ƣu điểm của thiết bị và mang tinh thần “plug and play” của giao thức USB, không cần phải cài thêm driver.

Chi tiết các bảng mô tả cùng với mã chƣơng trình đƣợc thể hiện trong phụ lục 2 của luận văn này.

55

b. Về mã AES

Chip MAXQ1050 có hỗ trợ phần cứng về thuật toán mã hóa AES là các engine, vì vậy ta chỉ cần can thiệp vào các thanh ghi điều khiển và thanh ghi trạng thái, không cần chú ý đến việc tính toán của thuật toán.

Trong bài luận văn này, thuật toán AES sẽ sử dụng có độ dài mã hóa 128 byte, đƣợc lấy từ ví dụ trong tài liệu FIPS 197 phụ lục B[7]

. Cụ thể:

- Khóa có giá trị: 0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c.

- Văn bản cần mã hóa có giá trị: 0x32, 0x43, 0xf6, 0xa8, 0x88, 0x5a, 0x30, 0x8d, 0x31, 0x31, 0x98, 0xa2, 0xe0, 0x37, 0x07, 0x34.

- Văn bản sau khi mã hóa có giá trị: 0x39, 0x25, 0x84, 0x1d, 0x02, 0xdc, 0x09, 0xfb, 0xdc, 0x11, 0x85, 0x97, 0x19, 0x6a, 0x0b, 0x32.

56

c. Lưu đồ chương trình

Hình 3-22: Lƣu đồ chƣơng trình main()

Hình 3-23: Lƣu đồ chƣơng trình mã hóa AES (adsbygoogle = window.adsbygoogle || []).push({});

Có thể nhận thấy, lƣu đồ chƣơng trình khá đơn giản, có đƣợc điều này do chip MAXQ1050 đã hỗ trợ về mặt phần cứng giao tiếp USB và thuật toán AES, ngƣời dùng chỉ can thiệp vào các thanh ghi điều khiển và trạng thái để thực hiện chƣơng trình theo chủ định.

57

Với chƣơng trình chính, sẽ đƣợc kích hoạt ngay sau gắn thiết bị vào máy tính, khi này các chức năng đƣợc thực hiện bao gồm, khởi tạo chƣơng trình (biến, bộ nhớ), sau đó khởi tạo chức năng USB cho thiết bị bao gồm:

- Thiết lập các thanh ghi của USB. - Tích cực chức năng USB.

Khi USB đã đƣợc khởi tạo xong, chức năng liệt kê “Enumerate” đƣợc kích hoạt, nhằm đáp ứng các yêu cầu đƣợc gửi từ máy tính, khi này các thông tin về thiết bị đã đƣợc lƣu trong các bản mô tả “Descriptor” nhƣ thông tin về VID, PID cũng nhƣ số lƣợng và chiều, kích thƣớc của các Endpoint có trong thiết bị. Chức năng này sau khi thực hiện xong, mối quan hệ giao tiếp về giao thức USB giữa thiết bị khóa và máy tính về bản chất là mối quan hệ truyền dữ liệu từ máy tính vào Endpoint 1 và nhận dữ liệu từ Endpoint 3 lên máy tính.

Thuật toán AES đƣợc thực hiện trên các mô đun phần cứng với khóa đã khai báo trƣớc. Dữ liệu đầu vào sẽ đƣợc lấy từ Endpoint 1, sau đó biến đổi và kết quả của thuật toán AES sẽ đƣợc gửi vào Endpoint 3 nhƣ đã trình bày trên lƣu đồ.

Chƣơng trình firmware của thiết bị đƣợc viết trên phần mềm CrossStudio for MAXQ30 và đƣợc trình bày trong phụ lục 2 của luận văn.

58

Chƣơng 4: CHƢƠNG TRÌNH PHẦN MỀM CHẠY TRÊN MÁY TÍNH KẾT NỐI VỚI KHÓA CỨNG

Một phần của tài liệu Nghiên cứu giải pháp sử dụng khóa USB cho việc đảm bảo bản quyền cho (Trang 47 - 58)