Lịch sử ra đời thuật toán

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 32 - 37)

Với việc nhiều chƣơng trình cần bảo mật bị tấn công, trong khi các thuật toán mã hóa nhƣ RSA hay DES đều có thể bẻ gãy, 3-DES thực hiện quá cồng kềnh. Do đó Viện tiêu chuẩn và công nghệ quốc gia Mỹ (NIST) ra lời kêu gọi tìm kiếm chuẩn mã mới vào năm 1997. Sau đó có 15 đề cử đƣợc chấp nhận vào tháng 6 năm 1998 và đƣợc rút gọn còn 5 ứng cử viên vào tháng 6 năm 1999. Đến tháng 10 năm 2000, mã Rijndael đƣợc thiết kế bởi hai nhà mật mã học ngƣời Bỉ: Joan Daemen và Vincent Rijimen, đƣợc chọn làm chuẩn mã nâng cao AES ( Advanced Encryption Standard) và đƣợc công bố rộng rãi trong tài liệu FIPS PUB 197 vào tháng 11 năm 2001.

2.3.2 Mô tả thuật toán

Mặc dù 2 tên AES và Rijndael vẫn thƣờng gọi thay thế cho nhau nhƣng trên thực tế thì 2 thuật toán không hoàn toàn giống nhau. AES chỉ làm việc với các khối dữ liệu 128 bit và khóa có độ dài 128, 192 và 256 bit, trong khi Rijndael có thể làm việc với dữ liệu và khóa có độ dài bất kỳ là bội số của 32 bit nằm trong khoảng từ 128 đến 256.

33

Hình 2-3: Lƣu đồ cơ chế hoạt động của thuật toán AES[1]

Sơ đồ trên cho thấy giải thuật của thuật toán mã hóa AES-128, bao gồm 10 vòng (Round). Các vòng lặp chính thực hiện các hàm sau:

- SubBytes: phép biến đổi dùng trong phép mã hóa, áp dụng lên trạng thái, kết quả mã hóa trung gian, sử dụng một bảng thay thế byte phi tuyến (bảng thay thế byte phi tuyến đƣợc sử dụng trong một số phép thay thế byte và trong quy trình mở rộng khóa, nhằm thực hiện một phép thay thế 1-1 đối với giá trị mỗi byte) trên mỗi byte trạng thái một cách độc lập.

- ShiftRows: phép biến đổi dùng trong phép mã hóa áp dụng lên trạng thái bằng cách chuyển dịch ba hàng cuối của trạng thái theo số lƣợng byte các offset khác nhau.

34

- MixColumns: phép biến đổi trong phép mã hóa thực hiện bằng cách lấy tất cả các cột trạng thái trộn với dữ liệu của chúng, một cách độc lập nhau, để tạo ra các cột mới.

- AddRoundKey: phép biến đổi trong phép mã hóa và phép giải mã. Trong đó, một khóa vòng, các giá trị sinh ra từ khóa mã bằng quy trình mở rộng khóa, đƣợc cộng thêm vào trạng thái bằng phép toán XOR. Độ dài của khóa vòng bằng độ dài của trạng thái.

Các phép biến đổi trong phép mã hóa có thể đảo ngƣợc và sau đó thực hiện theo chiều ngƣợc lại nhằm tạo ra phép giải mã trực tiếp của thuật toán AES. Do vậy theo chiều giải mã ta cũng có các phép biến đổi sau: InvShiftRows, InvSubBytes, InvMixColumns và AddRoundKey.

Kết luận: qua khảo sát các thuật toán mã hóa trên, mặc dù cả ba thuật toán đều có khả năng xây dựng, lập trình, trên chip cứng, tuy nhiên về mức độ bảo mật, độ an toàn, với các thuật toán RSA, DES, hiện nay đã bị tấn công và bị bẻ khóa. Riêng với thuật toán DES, cần phải sử dụng 3-DES (tức là DES ba lần liên tiếp) mới đảm bảo được độ bảo mật. Điều này dẫn tới khả năng mã và giải mã sẽ bị chậm và việc thực thi trên các chip cứng là không khả thi. Với thuật toán mã hóa AES, cho đến nay đã được chứng minh là có độ bảo mật và an toàn cao, không những đã được các nước trên thế giới đưa vào làm chuẩn mã hóa quốc gia mà ngay tại Việt Nam, thuật toán AES đã được công bố thành tiêu chuẩn quốc gia TCVN 7816:2007 năm 2007, về thuật toán mã hóa dữ liệu. Chính vì vậy, trong luận văn này, đã sử dụng thuật toán mã hóa AES vào việc thiết kế sản phẩm khóa USB dongle cho giải pháp bảo vệ bản quyền phần mềm ứng dụng. Chi tiết được trình bày trong các phần tiếp theo của luận văn.

35

Chƣơng 3: THIẾT KẾ CHẾ TẠO THIẾT BỊ KHÓA CỨNG USB DONGLE VỚI GIAO THỨC USB

Trong quá trình nghiên cứu, chế tạo thiết bị, có hai phƣơng án thiết kế đƣợc thực hiện:

- Một là sử dụng chip ATMEGA8, không có sự tích hợp các engine USB (engine là một modul phần cứng trung gian đảm nhiệm một chức năng cụ thể đƣợc tích hợp vào bên trong các IC) và các engine mã mật. Đây là phƣơng án đơn giản nhất, ngƣời thiết kế chỉ cần có nền tảng cơ bản về thiết kế phần cứng cũng nhƣ lập trình trên chip cứng. Phƣơng án này có mức chi phí thấp nhất, thời gian thực hiện nhanh tuy nhiên độ bảo mật lại không cao.

- Hai là sử dụng chip MAXQ1050, có độ tích hợp cao bao gồm các engine USB cùng nhƣ engine về một số mã mật. Với phƣơng án này, đòi hỏi ngƣời thiết kế phải có kinh nghiệm về phần cứng cũng nhƣ các kiến thức về giao thức USB, bên cạnh đó là các kỹ năng về lập trình trên firmware trên chip cứng. Phƣơng án này có mức chi phí cao và thời gian thực hiện cũng lâu hơn, tuy nhiên độ bảo mật lại an toàn vì sử dụng phƣơng pháp mã hóa tiên tiến đã đƣợc thế giới công nhận.

Sơ đồ khối chức năng của thiết bị đƣợc thiết kế theo 2 phƣơng án trên có dạng nhƣ sau:

36

Hình 3-1: Sơ đồ khối chức năng thiết bị khóa cứng

Từ sơ đồ khối có thể nhận thấy, giải pháp hoàn chỉnh của cả 2 phƣơng án bao gồm mô đun phần mềm chạy trên máy tính và thiết bị phần cứng. Chúng giao tiếp với nhau thông qua giao thức USB, với mô đun phần mềm, giao thức USB đƣợc xử lý bởi các hàm API có trong chƣơng trình điều khiển cho thiết bị đã đƣợc cài sẵn trên hệ điều hành. Mô đun phần mềm này có chức năng gửi chuỗi dữ liệu cần kiểm tra xuống cho thiết bị, sau đó nhận kết quả gửi về, tiến hành thuật toán kiểm tra thông qua việc giải mã. Chƣơng trình ứng dụng sẽ lấy kết quả giải mã này để quyết định có tích cực hay không. Về phía thiết bị USB dongle, cũng bao gồm các mô đun giao tiếp USB, mô đun này có thể là chip chuyển đổi giao thức USB sang giao thức RS232, hoặc chip cứng có tích hợp sẵn các mô đun cứng, là các engine, phụ trách việc truyền nhận giao tiếp với giao thức USB. Mô đun USB này sẽ nhận và truyền dữ liệu với máy tính đồng thời đóng gói các dữ liệu này vào các thanh ghi chức năng. Tiếp theo, các mô đun nhận và xử lý dữ liệu sẽ tiếp nhận dữ liệu từ mô đun USB qua các thanh ghi chức năng, sau đó các trƣờng dữ liệu hỗ trợ, kết quả thu đƣợc ở mô đun này là gói dữ liệu có nghĩa phục vụ cho mô đun mã hóa dữ liệu. Mô đun mã hóa với bản chất là các hàm sinh mã, sẽ nhận dữ liệu thu đƣợc và mã hóa theo thuật toán đã đƣợc xác định trƣớc. Kết quả sau khi mã hóa sẽ đƣợc gửi cho mô đun truyền và xử lý dữ liệu, tại đây, dữ liệu đã đƣợc

37

mã hóa sẽ đƣợc bổ sung thêm các trƣờng dữ liệu phụ trợ và gửi vào mô đun USB và đƣợc gửi lên máy tính.

Sau đây, tôi xin đƣợc trình bày về 2 phƣơng án đƣợc thực hiện nêu trên.

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 32 - 37)