Cài đặt thuật toán sinh tham số RSA 2048 bit trên thiết bị PKI Token
Cũng như hầu hết các hệ mật mã khác, mô
hình, cấu trúc thuật toán của hệ mật mã khóa công
khai RSA là công khai. Vì vậy, việc đảm bảo an
toàn trong hệ mật phụ thuộc rất nhiều vào việc
đảm bảo tính an toàn của khóa bí mật. Để đảm bảo
an toàn cho khóa bí mật thì nó thường được lưu
trong thiết bị lưu khóa bảo mật PKI (Public Key
Infrastructure) Token. Thiết bị PKI Token là
thành phần quan trọng trong các giải pháp bảo mật
vì khả năng lưu trữ khóa, tham số mật và tính toán
mật mã trong môi trường an toàn. Ngoài ra, để
đảm bảo tính an toàn tuyệt đối cho khóa bí mật,
người ta lựa chọn phương pháp sinh khóa ngay
trong thiết bị PKI Token. Khóa bí mật sau khi sinh
ra được lưu vào thiết bị và không thể sao chép ra
ngoài, tránh tình trạng lộ lọt khóa. Các thiết bị
PKI Token thương mại trên thế giới [1]–[3] cũng
đã hỗ trợ chức năng sinh khóa ngay trong thiết bị.
Tuy nhiên, khó có thể kiểm soát được thuật toán
sinh khóa, cũng như các tiêu chuẩn an toàn cho
các tham số RSA. Đối với một số môi trường ứng
dụng đặc biệt, tiêu chí quan trọng khi đưa ra các
sản phẩm bảo mật là làm chủ toàn bộ thiết kế phần
cứng, phần mềm để có thể tùy chọn cài đặt các
thuật toán mật mã riêng vào thiết bị. Vì vậy, việc
nghiên cứu xây dựng module sinh tham số RSA
trong thiết bị PKI Token là rất cần thiết, giúp làm
chủ và kiểm soát được toàn bộ quy trình sinh tham
số RSA, giám sát loại trừ được các nghi ngờ mã
độc, cửa hậu (backdoor) ngay cả ở mức thấp
(firmware) tại phần cứng thiết bị PKI Token.
Trang 1
Trang 2
Trang 3
Trang 4
Trang 5
Trang 6
Trang 7
Trang 8
Tóm tắt nội dung tài liệu: Cài đặt thuật toán sinh tham số RSA 2048 bit trên thiết bị PKI Token
ộ tạo ngẫu tham số RSA từ module sinh khóa, module lưu nhiên. Khóa bí mật sau khi được mã hóa sẽ được khóa sẽ tiến hành thực hiện các quy trình cần thiết lưu vào bộ nhớ flash của thiết bị cùng với khóa để lưu khóa vừa sinh ra vào thiết bị. Khóa RSA công khai. sau khi được tạo ra sẽ được lưu vào thiết bị theo Bước 4: Mã hóa DEK và lưu bản mã vào thiết quy trình như trong Hình 4 (DEK – Data bị. Khóa DEK (dùng để mã hóa và giải mã khóa Encryption Key). bí mật) sẽ được mã hóa sử dụng mã PIN của User và lưu vào bộ nhớ flash của thiết bị. Xóa khóa, nếu có C. Nghiên cứu xây dựng module firmware xuất khóa công khai Xác định kích thước Sau khi sinh khóa, khóa bí mật được mã hóa và địa chỉ khóa và lưu trong thiết bị, còn khóa công khai sẽ được thiết bị xuất ra ngoài. Khóa công khai được xuất Lấy địa chỉ khóa ra ngoài theo định dạng chuẩn được quy định trong tiêu chuẩn ISO 7816-4, cụ thể như sau: Tiêu đề: Mã hóa khóa và lưu 7f49 xx (xx – là tổng độ dài của phản hồi) bản mã vào thiết bị Dữ liệu khóa công khai RSA: Mã hóa DEK và lưu 81 xx modulus (xx là độ dài số modulus) bản mã vào thiết bị 82 xx exponent (xx là độ dài của số mũ e) Hình 4. Quy trình hoạt động của module lưu khóa Giá trị độ dài xx cần tuân theo quy định trong tiêu chuẩn ISO 7816-4 về số byte để lưu giá trị Hoạt động của module lưu khóa được mô tả cụ như sau: nếu số byte cần để lưu giá trị là 02 thì thể như sau: phía trước cần thêm byte chỉ số 0x82, nếu số byte Bước 1: Xóa khóa tại vị trí cần lưu, nếu có. cần lưu giá trị là 01 thì phía trước không cần thêm Đầu tiên, sau khi nhận được các tham số về vị trí byte chỉ số. khóa, dữ liệu khóa từ module sinh khóa, module Cụ thể, hoạt động của module firmware xuất lưu khóa sẽ tiến hành xóa khóa tại vị trí cần lưu. khóa công khai được mô tả như sau: Bước này được thực hiện để đảm bảo giải phóng bộ nhớ phục vụ cho việc lưu khóa vào thiết bị. Ở Bước 1: Lấy dữ liệu khóa công khai. Dữ liệu đây cần lưu ý là, ở trên ứng dụng quản trị thiết bị khóa công khai gồm số modulus và số mũ công PKI Token, trước khi gửi lệnh sinh khóa xuống khai được đọc ra từ bộ nhớ flash của thiết bị. 56 No 1.CS (11) 2020 Khoa học và Công nghệ trong lĩnh vực An toàn thông tin Bước 2: Tạo phần tiêu đề cho dữ liệu phản hồi. trước. Ngoài ra, theo [11], kiểm tra Miller-Rabin Phần tiêu đề của dữ liệu phản hồi xuất khóa công với cơ sở 2 có tốc độ thực thi nhanh hơn nhiều so khai được bắt đầu bằng 7f49 theo đúng chuẩn với kiểm tra Miller-Rabin với cơ sở ngẫu nhiên ISO 7816, tiếp theo đến tổng độ dài của phản hồi. khác. Vì vậy khi thêm kiểm tra Miller-Rabin cơ Tổng độ dài của dữ liệu phản hồi gồm: độ dài của sở 2 trước kiểm tra Miller-Rabin với các cơ sở số modulus, độ dài của số mũ công khai và 6 bytes ngẫu nhiên khác nhau sẽ loại bỏ được phần lớn chỉ số (02 bytes chỉ số 7f49, các byte còn lại sẽ các hợp số trước khi thực hiện kiểm tra Miller- được giải thích sau). Vì độ dài số modulus là 256 Rabin với các cơ sở ngẫu nhiên khác. Phương = 0x100 nên cần 02 bytes để lưu giá trị tổng độ pháp giúp cải thiện tốc độ của phương pháp sinh dài của dữ liệu phản hồi, do đó ta có phần tiêu đề số nguyên tố xác suất dựa trên kiểm tra Miller- là 7f 49 82 xx xx. Rabin mà không làm ảnh hưởng đến sai số của phương pháp. Bên cạnh đó, để tăng tính hiệu quả Bước 3: Tạo phần dữ liệu số modulus. Phần dữ của hàm sinh số nguyên tố, nhóm tác giả lựa chọn liệu số modulus được bắt đầu bằng 81, tiếp theo giải pháp tìm kiếm tăng dần khi lựa chọn ứng cử đến độ dài của số modulus và số modulus. Vì cần viên đầu vào. 02 bytes để lưu giá trị độ dài của số modulus nên cần thêm chỉ số 82 sau chỉ số 81, cụ thể phần dữ Lưu đồ thuật toán sinh số nguyên tố sau khi cải liệu số modulus sẽ như sau: tiến được thể hiện trong Hình 5. 81 82 01 00 modulus. Bắt đầu Bước 4: Tạo phần dữ liệu số mũ công khai. Phần dữ liệu số mũ công khai được bắt đầu bằng 82, tiếp theo đến độ dài của số mũ exponent, và Xbits = 1024 số exponent. Vì chỉ cần 01 byte để lưu giá trị độ dài số mũ công khai, nên phần dữ liệu số mũ công Sinh số ngẫu nhiên khai sẽ như sau: 82 xx exponent. lẻ X có độ dài Xbits D. Nghiên cứu tích hợp module sinh tham số RSA vào firmware thiết bị PKI Token Chia thử Sai X = X +2 Để tích hợp module sinh tham số RSA vào firmware thiết bị PKI Token, ngoài việc xây dựng Đúng thêm module sinh khóa, lưu khóa và xuất khóa X = X +2 Sai MR2(X) = 0 công khai như trình bày ở trên, cần phải tùy biến, lựa chọn các hàm cần thiết trong thư viện polarSSL Đúng để tích hợp vào thiết bị. Trước tiên, trong hàm sinh số nguyên tố, nhóm tác giả tích hợp bộ tạo ngẫu MR(h,X) = 0 Sai X = X +2 nhiên trong thiết bị để sinh ra ứng cử viên ngẫu Đúng nhiên đầu vào. Do bộ nhớ của thiết bị PKI Token bị hạn chế, nên chỉ có thể đưa những thư viện cần Kết thúc thiết trong bộ thư viện polarSSL xuống thiết bị. Các thư viện cần thiết phục vụ việc sinh tham số Hình 5. Lưu đồ thuật toán sinh số nguyên tố sau khi RSA trên thiết bị gồm có thư viện tính toán số lớn cải tiến và thư viện mật mã khóa công khai. IV. NGHIÊN CỨU XÂY DỰNG CHƯƠNG TRÌNH TOKENADMIN HỖ TRỢ SINH THAM SỐ RSA Để tăng tốc độ sinh tham số RSA trên thiết bị PKI Token, nhóm tác giả đã tiến hành cải tiến hàm Phần mềm TokenAdmin là phần mềm chạy sinh số nguyên tố trong bộ thư viện polarSSL. trên môi trường Windows dành cho người quản Theo [6], do xác suất một số nguyên ngẫu nhiên trị viên để quản lý, thực hiện các tác vụ cần thiết có ước số nguyên tố nhỏ là tương đối lớn và việc với thiết bị PKI Token. Để phần mềm hỗ trợ sinh kiểm tra loại trừ các số nguyên ngẫu nhiên có ước tham số RSA trên thiết bị PKI Token, cần xây số nguyên tố nhỏ ít tốn kém tài nguyên tính toán dựng thêm chức năng tạo khóa và xuất khóa công hơn kiểm tra Miller-Rabin, nên trước khi áp dụng khai. Chức năng này trong phần mềm kiểm tra Miller-Rabin, ứng cử viên ngẫu nhiên TokenAdmin được xây dựng dựa trên lưu đồ hoạt đầu vào nên được kiểm tra các ước nguyên tố nhỏ động như trong Hình 6 và Hình 7. Số 1.CS (11) 2020 57 Journal of Science and Technology on Information security A. Nghiên cứu xây dựng và tích hợp module tạo B. Nghiên cứu xây dựng và tích hợp module xuất khóa cho phần mềm quản trị TokenAdmin khóa công khai cho phần mềm quản trị TokenAdmin Chức năng tạo khóa có nhiệm vụ gửi lệnh tạo Chức năng xuất khóa công khai giúp phần khóa xuống dưới thiết bị và nhận lại kết quả quá mềm gửi lệnh xuất khóa xuống thiết bị để lấy lên trình tạo khóa dưới thiết bị. Hoạt động cụ thể của khóa công khai, lưu khóa công khai vào file phục module tạo khóa trong phần mềm quản trị PKI vụ các mục đích cần thiết. Hoạt động cụ thể của Token hoạt động như sau. Đầu tiên, module sẽ module tạo khóa trong phần mềm quản trị PKI kiểm tra xem có thiết bị kết nối hay chưa, nếu Token hoạt động như sau. Đầu tiên, module sẽ chưa có thiết bị kết nối với máy tính, module sẽ kiểm tra xem có thiết bị kết nối hay chưa, nếu hiển thị thông báo ra màn hình. Nếu có thiết bị kết chưa có thiết bị kết nối với máy tính, module sẽ nối, module sẽ yêu cầu người quản trị nhập vào hiển thị thông báo ra màn hình. Nếu có thiết bị kết mã PIN của Admin. Mã PIN của Admin nhập vào nối, module sẽ yêu cầu người quản trị nhập vào sẽ được kiểm tra thông qua các hàm kiểm tra mã mã PIN của User. Mã PIN của User nhập vào sẽ PIN. Nếu mã PIN Admin nhập vào không đúng, được kiểm tra thông qua các hàm kiểm tra mã module sẽ cho phép người quản trị nhập lại mã PIN. Nếu mã PIN User nhập vào không đúng, PIN Admin cho đến khi hết số lần nhập sai được module sẽ cho phép người dùng nhập lại mã PIN phép. Nếu mã PIN Admin nhập vào hợp lệ, User cho đến khi hết số lần nhập sai được phép. module sẽ yêu cầu người quản trị nhập vào vị trí Nếu mã PIN User nhập vào hợp lệ, module sẽ khóa cần tạo. Tiếp đó, module sẽ kiểm tra vị trí kiểm tra vị trí khóa cần xuất ra có khóa chưa. Nếu khóa cần tạo đã có khóa chưa. Nếu chưa có khóa có khóa thì module sẽ gửi lệnh xuất khóa xuống thì module sẽ gửi lệnh sinh khóa xuống thiết bị, thiết bị, ngược lại sẽ đưa ra thông báo. Thiết bị sẽ ngược lại sẽ đưa ra thông báo. Quá trình sinh khóa gửi khóa công khai lên máy tính, module sẽ yêu trên thiết bị kết thúc, module nhận được thông báo cầu người dùng nhập tên để lưu khóa công khai về kết quả sinh khóa dưới thiết bị và đưa kết quả được xuất. Cuối cùng, module sẽ đưa ra thông báo này ra thông báo. về kết quả quá trình xuất khóa công khai. Bắt đầu Bắt đầu Chưa kết nối Chưa kết nối Kiểm tra thiết bị kết nối Kiểm tra thiết bị kết nối Có kết nối Có kết nối Đúng Đúng Sai Sai Kiểm tra Nhập mã Kiểm tra Nhập mã Solannhapsai PIN Admin Solannhapsai PIN User Solannhapsai++ Sai Kiểm tra mã PIN Solannhapsai++ Sai Kiểm tra mã PIN Đúng Đúng Chọn vị trí tạo khóa Lấy ID khóa Có khóa Kiểm tra khóa trong thiết bị Kiểm tra khóa trong thiết bị Không có Không có Có khóa Tạo khóa Xuất khóa In thông báo In thông báo Kết thúc Kết thúc Hình 6. Lưu đồ hoạt động module tạo khóa Hình 7. Lưu đồ hoạt động module xuất khóa công khai 58 No 1.CS (11) 2020 Khoa học và Công nghệ trong lĩnh vực An toàn thông tin Sau khi xây dựng, tích hợp module tạo tham số Ngoài ra, nhóm tác giả cũng tiến hành thử RSA trên thiết bị PKI Token và bổ sung chức nghiệm ký và kiểm tra chữ ký; mã hóa và giải mã năng tạo khóa và xuất khóa công khai cho phần sử dụng khóa sinh ra trong thiết bị. Kết quả thử mềm quản trị PKI Token trên máy tính Windows, nghiệm được thể hiện trong Hình 8 và Hình 9. nhóm tác giả tiến hành kiểm thử hoạt động của module tạo tham số RSA trên thiết bị PKI Token. Nhóm tác giả đã thực hiện thử nghiệm hoạt động của module tạo tham số RSA 2048 bit trên thiết bị PKI Token, so sánh tốc độ sinh tham số RSA 2048 bit trên thiết bị PKI Token giữa module sử dụng hàm sinh số nguyên tố của thư viện polarSSL và module sử dụng hàm sinh số nguyên tố do nhóm tác giả cải tiến. Các thử nghiệm được thực hiện trên máy tính HP PAVILION 7000 SERIES 7000 SERIES sử dụng chip Intel® Core™ i3-2100 CPU tốc độ 3.10GHz, RAM 5.00GB. Kết quả thử nghiệm được thể hiện trong Bảng 3. Hình 8. Kết quả thử nghiệm ký và kiểm tra chữ ký sử dụng khóa sinh ra trong thiết bị BẢNG 3. KẾT QUẢ SO SÁNH TỐC ĐỘ GIỮA MODULE SỬ DỤNG HÀM SINH SỐ NGUYÊN TỐ TRONG BỘ THƯ VIỆN POLARSSL VÀ MODULE SỬ DỤNG HÀM SINH SỐ NGUYÊN TỐ CẢI TIẾN Module sử dụng Module sử dụng Lần hàm sinh số nguyên hàm sinh số nguyên thử tố trong bộ thư viện tố do nhóm tác giả polarSSL cải tiến 1 11 phút 45 giây 4 phút 45 giây 2 21 phút 30 giây 8 phút 6 giây 3 3 phút 44 giây 9 phút 27 giây 4 14 phút 6 giây 7 phút 24 giây Hình 9. Kết quả thử nghiệm mã hóa và giải mã 5 4 phút 11 giây 5 phút 32 giây sử dụng khóa sinh ra trong thiết bị 6 9 phút 10 giây 3 phút 33 giây V. KẾT LUẬN 7 7 phút 30 giây 2 phút 24 giây Bài báo đã trình bày việc nghiên cứu xây dựng 8 10 phút 5 giây 7 phút 51 giây và tích hợp module sinh tham số RSA an toàn lên thiết bị PKI Token. Trong quá trình xây dựng 9 4 phút 46 giây 1 phút 7 giây module sinh tham số RSA, nhóm tác giả đã tiến 10 6 phút 38 giây 3 phút 37 giây hành cải tiến hàm sinh số nguyên tố trong bộ thư Trung viện polarSSL với mục đích tăng tốc độ sinh tham 9 phút 20 giây 5 phút 22 giây bình số RSA trên thiết bị PKI Token. Các kết quả thử nghiệm cho thấy, module sinh Như vậy, thời gian trung bình cần sinh tham số tham số RSA trên thiết bị PKI Token hoạt động RSA 2048 bit trên thiết bị PKI Token sử dụng ổn định, đáp ứng các yêu cầu đặt ra. Ngoài ra, việc hàm sinh số nguyên tố trong thư viện polarSSL nghiên cứu và cải tiến hàm sinh số nguyên tố đã khoảng 9 phút 20 giây, còn khi sử dụng hàm sinh giúp tăng tốc đáng kể tốc độ sinh tham số RSA số nguyên tố do nhóm tác giả cải tiến khoảng 5 2048 bit trên thiết bị PKI Token. Kết quả này là phút 22 giây. Do đó, sau khi cải tiến thuật toán, cơ sở để nhóm tác giả tiếp tục hoàn thiện module tốc độ sinh tham số RSA trên thiết bị PKI Token sinh tham số RSA trên thiết bị PKI Token. tăng tốc đáng kể. Số 1.CS (11) 2020 59 Journal of Science and Technology on Information security TÀI LIỆU THAM KHẢO SƠ LƯỢC VỀ TÁC GIẢ [1] SafeNet eToken 5110. [02-04-2020]. url: TS. Vũ Tá Cường https://www.digisign.ro/uploads/SafeNet- Đơn vị công tác: Viện KH-CN mật eToken-5110.pdf mã, Ban Cơ yếu Chính phủ, Hà Nội [2] Cryptomate64. [02-04-2020]. url: Email: vutacuong109@gmail.com Quá trình đào tạo: Tốt nghiệp cử nhân [3] RuToken. [02-04-2020]. url: năm 2011, thạc sĩ năm 2013 và tiến sĩ https://www.rutoken.ru/products/all/rutoken-ecp- năm 2016 chuyên ngành “Vô tuyến pki/#spec điện tử”, Đại học Hàng không vũ trụ Kharkov, Ucraina. Hướng nghiên cứu hiện nay: PKI Token, kỹ thuật mật mã. [4] National Institute of Standards and Technology. Digital Signature Standard (DSS). [02-04-2020]. url: https://nvlpubs.nist.gov/nistpubs/fips/ ThS. Nguyễn Thành Trung nist.fips.186-4.pdf. Đơn vị công tác: Viện KH-CN mật [5] PolarSSL 1.2.10 released. [02-04-2020]. url: mã, Ban Cơ yếu Chính phủ, Hà Nội https://tls.mbed.org/tech- Email: trungbcy@gmail.com updates/releases/polarssl-1.2.10-released. Quá trình đào tạo: Tốt nghiệp cử nhân [6] Alfred J. Menezes, Paul C. van Oorschot and năm 1995, thạc sĩ năm 2005 chuyên Scott A. Vanstone, “Handbook of Applied ngành “Kỹ Thuật mật mã”, Học viện Crytography”, CRC Press, 1996. Kỹ thuật Mật mã. [7] Matúš Nemec, “The properties of RSA key Hướng nghiên cứu hiện nay: PKI Token, kỹ thuật mật mã. generation process in software libraries”, Brno, 2016. ThS. Lê Đình Hùng [8] Hoàng Văn Thức, Luận án Tiến sĩ “Hệ tiêu Đơn vị công tác: Viện KH-CN mật chuẩn tham số an toàn cho hệ mật RSA và ứng mã, Ban Cơ yếu Chính phủ, Hà Nội dụng”, 2011. Email: ldhung85@gmail.com [9] Christophe Clavier, Benoit Feix, Loïc Thierry and Quá trình đào tạo: Tốt nghiệp cử nhân Pascal Paillier, “Generating Provable Primes năm 2008 chuyên ngành “Điện tử Efficiently on Embedded Devices”, PKC 2012, viễn thông”, Học viện Kỹ thuật quân LNCS 7293, pp. 372-389, 2012. sự, thạc sĩ năm 2017 chuyên ngành “Kỹ Thuật điện tử”, [10] Trần Duy Lai, Hoàng Văn Thức, Trần Sỹ Nam, Đại học Cộng nghệ - ĐHQG HN. “Thuật toán sinh số nguyên tố tất định hiệu quả Hướng nghiên cứu hiện nay: PKI Token, kỹ thuật mật mã. trên thiết bị nhúng”, Nghiên cứu Khoa học và Công nghệ trong lĩnh vực An toàn thông tin, ISSN 2615-9570, No 01. Vol 01. 2015. [11] Jørgen Brandt, Ivan Damgård and Peter Landrock, “Speeding up Prime Number Generation”, Advances in Cryptology – ASIACRYPT '91, pp. 440-449. [12] Jørgen Brandt, Ivan Damgärd, “On generation of Probable primes by incremental search”, Crypto’92, pp. 358-371. 60 No 1.CS (11) 2020
File đính kèm:
- cai_dat_thuat_toan_sinh_tham_so_rsa_2048_bit_tren_thiet_bi_p.pdf