Nghiên cứu xây dựng bộ sinh số ngẫu nhiên tích hợp với nhiều hệ điều hành

5 136 1
Nghiên cứu xây dựng bộ sinh số ngẫu nhiên tích hợp với nhiều hệ điều hành

Đang tải... (xem toàn văn)

Thông tin tài liệu

Bài viết này trình bày một nghiên cứu thiết kế bộ sinh số dựa trên hiện tượng jitter thời gian của CPU sử dụng trên hệ điều hành Linux và Windows. Số ngẫu nhiên sinh ra được đánh giá và vượt qua hầu hết các phép test thống kê của NIST.

Cơng nghệ thơng tin & Cơ sở tốn học cho tin học NGHIÊN CỨU XÂY DỰNG BỘ SINH SỐ NGẪU NHIÊN TÍCH HỢP VỚI NHIỀU HỆ ĐIỀU HÀNH Nguyễn Thị Tuyết Trinh*, Nguyễn Hồng Quang, Đinh Tiến Thành Tóm tắt: Hầu hết tạo số ngẫu nhiên thực phi vật lý có nguồn entropy dựa vào bất ổn thời gian hoạt động kiện phần cứng, đó, khơng đủ đáp ứng nhu cầu ln tăng số ngẫu nhiên có chất lượng cao Vì thế, cần tìm thêm nguồn entropy phi vật lý khác thay Bài báo trình bày nghiên cứu thiết kế sinh số dựa tượng jitter thời gian CPU sử dụng hệ điều hành Linux Windows Số ngẫu nhiên sinh đánh giá vượt qua hầu hết phép test thống kê NIST Tốc độ sinh bit cao, không cần thiết kế phần cứng chuyên dụng, phù hợp với nhiều hệ điều hành ưu điểm trội so với sinh số khác Từ khóa: Số ngẫu nhiên, Jitter thời gian CPU, TRNG, Mật mã, Đánh giá thống kê MỞ ĐẦU Số ngẫu nhiên đóng vai trò quan trọng nhiều lĩnh vực khác mà đặc biệt mật mã Sự an toàn hệ thống mật mã phụ thuộc nhiều vào tính ngẫu nhiên Các sinh số ngẫu nhiên có nguồn entropy phi vật lý khơng đòi hỏi phần cứng chun dụng mà khai thác kiện hệ thống (thời gian máy tính, số liệu RAM, ) và/hoặc tương tác người – máy (gõ phím, di chuyển chuột), thiết kế tương đối đơn giản, dễ thực phần mềm máy tính giá thành hợp lý Hiện nay, hệ điều hành cung cấp nguồn entropy cho sinh số ngẫu nhiên thực phi vật lý Bộ sinh số ngẫu nhiên Linux (/dev/random) dựa bốn nguồn entropy khác thời gian lần gõ bàn phím di chuột, thời gian truy cập nhớ gián đoạn cụ thể ([2], [8]) Đầu chuyển vào trữ entropy có độ lớn 512 byte Tuy nhiên, chất lượng số ngẫu nhiên không cao, đánh số giả ngẫu nhiên Tương tự, hệ điều hành Windows cung cấp thư viện mật mã Crypt API với tính mã hóa, giải mã, lưu trữ khóa, hàm băm, chữ ký số và đặc biệt sinh số ngẫu nhiên Nguồn entropy sinh số thời gian xử lý CPU, thời gian thời hệ thống , sau xử lý qua hàm SHA-512, tạo đầu 512 bit ([2]) Tháng 10 năm 2014, Stephan Müller đề xuất sinh số ngẫu nhiên thực phi vật lý dựa tượng jitter thời gian CPU với trình xử lý sau phức tạp, ảnh hưởng đến tốc độ chạy hệ điều hành Linux ([1], [3]) Do đó, nghiên cứu chúng tơi đề xuất phương pháp riêng, xây dựng sinh số ngẫu nhiên có nguồn entropy jitter thời gian CPU có thiết kế đơn giản hơn, tốc độ thực thi cao chạy hệ điều hành Linux Windows THIẾT KẾ BỘ SINH SỐ NGẪU NHIÊN Sau nghiên cứu sản phẩm tác giả khác, chúng tơi phân tích tượng jitter thời gian CPU sử dụng làm nguồn entropy, tiến hành thiết kế cụ thể, triển khai thử nghiệm để kiểm chứng 2.1 Jitter thời gian hoạt động CPU Với phức tạp cao hệ điều hành đại hạt nhân nguyên khối lớn chúng, tất thành phần phần cứng phức tạp sử dụng rộng rãi Tuy nhiên, phức tạp, khơng xác định xác mức độ lấp đầy cache vị trí 126 N T T Trinh, …, Đ T Thành, “Nghiên cứu xây dựng sinh số… nhiều hệ điều hành.” Nghiên cứu khoa học cơng nghệ xác liệu nhớ thời điểm định Điều dẫn đến việc thực lệnh có biến động nhỏ thời gian thực Ngoài CPU đại có đếm thời gian độ phân giải cao, xác định biến động nhỏ Ví dụ, CPU x86 đại có định TSC có độ phân giải phạm vi nano giây Có thể nhận thấy thay đổi thời gian thực giống hệt lệnh CPU Hình minh họa biến đổi thời gian thực đoạn mã sau đây: static inline void jent_get_nstime(uint64_t *out) { if (clock_gettime(CLOCK_REALTIME, &time) == 0) } void main(void) { jent_get_nstime(&time); jent_get_nstime(&time2); delta = time2 - time; } Các giá trị biến delta khơng giống lần lặp lại vòng lặp riêng lẻ Khi chạy đoạn mã với 1.000.000 vòng lặp hệ thống trạng thái tĩnh (không thực tác vụ khác) để giảm thiểu sai khác thời gian trình gây Hình Phân bố biến đổi thời gian hoạt động CPU 2.2 Mơ hình sinh số ngẫu nhiên Bộ sinh số ngẫu nhiên dựa tượng jitter thời gian CPU sử dụng đọc thời gian có độ phân giải cao để lấy tem thời gian Đầu sinh số nguyên dương có độ lớn 64 bit lưu trữ entropy (được minh họa với màu xám hình 2) Các hộp xám xác định trữ entropy hai thời điểm khác xử lý Tạp chí Nghiên cứu KH&CN quân sự, Số 52, 12 - 2017 127 Công nghệ thông tin & Cơ sở tốn học cho tin học Hình Mơ hình sinh số ngẫu nhiên Bộ sinh số ngẫu nhiên thực vòng thu thập entropy sau:  Thực truy cập nhớ để tạo thay đổi thời gian: Hoạt động truy cập nhớ xây dựng giá trị sau: kích thước khối nhớ (memory block), số lượng khối nhớ tạo thành số lượng hoạt động truy cập thực Việc truy cập nhớ đảm bảo tất byte nhớ truy cập đồng cách trì trỏ đến byte cuối nhớ truy cập  Lấy tem thời gian để tính tốn delta thời gian đến thời điểm tem thời gian vòng lặp trước đó: Đầu tiên, trước lấy tem thời gian độ phân giải cao, gọi tới hàm jent_memaccess(ec, 0) để thực hoạt động truy cập nhớ làm thêm biến động lấy tem thời gian CPU Sau đó, thực lấy tem thời gian với độ xác đến nano giây cách sử dụng hàm khác cho hệ điều hành Linux Windows: - Đối với hệ điều hành Linux, sử dụng hàm clock_gettime; - Đối với hệ điều hành Windows, sử dụng hàm QueryPerformanceCounter Tùy chỉnh hàm đếm thời gian có độ phân giải cao tương ứng với hệ điều hành khác nhau, xây dựng sinh số ngẫu nhiên tương thích với đa hệ điều hành với tốc độ sinh bit cao  Gấp giá trị delta thời gian vào bit Xử lý giá trị vừa gấp xử lý Von-Neumann Thêm giá trị đến trữ entropy sử dụng phép XOR Xoay trữ để điền vào giá trị bit trữ Giao diện tạo số ngẫu nhiên thực phi vật lý dựa tượng jitter thời gian CPU cung cấp cho người dùng trỏ vào nhớ biến có kích thước tùy ý Khi có yêu cầu sinh dòng bit số ngẫu nhiên với kích thước chọn, chuỗi bit phải lưu trữ vị trí nhớ trỏ đến 128 N T T Trinh, …, Đ T Thành, “Nghiên cứu xây dựng sinh số… nhiều hệ điều hành.” Nghiên cứu khoa học công nghệ THỰC NGHIỆM VÀ KIỂM CHỨNG KẾT QUẢ Tiến hành thử nghiệm sinh 1024 bit máy tính khác với cấu sau:  Máy 1: máy Dell Optiplex 390, chip Intel Core i3 2120, RAM 2GB, chạy Windows Ultimate-64bit  Máy 2: máy Vaio VPCEL 13FX, chip AMD-E350, RAM 4GB, chạy Ubuntu 16.04  Máy 3: máy Acer Travel Mate P243, chip Intel Pentium B970, RAM 2GB, chạy Windows 10-64bit Chúng sử dụng tiêu chuẩn test thống kê NIST Mức có nghĩa α chọn 0,01 tức độ tin cậy pˆ     99% Khoảng tin cậy thực tế tính pˆ (1  pˆ ) , với m số lượng chuỗi bit lấy P-value dùng để đo mức độ ngẫu m nhiên Yêu cầu P  value   số sinh coi ngẫu nhiên Bảng kết pˆ  đánh giá Tên phép test Test thời gian sinh số ngẫu nhiên (giây) Test tần suất (đơn bit) Test tần suất khối bit Test dãy bit Phép test dãy số dài khối Test hạng ma trận nhị phân Test biến đổi Fourier rời rạc Test tìm tổ hợp định, khơng chồng Test tìm tổ hợp định, chồng Test “Thống kê toàn bộ” Test độ phức tạp tuyến tính Test chuỗi m-bit Test entropy xấp xỉ Test tổng cộng dồn Test lệch ngẫu nhiên Test thay đổi độ lệch ngẫu nhiên Máy K.quả Đ.giá 0,034 Máy K.quả Đ.giá 0,019 Máy K.quả Đ.giá 0,028 0,657 0,903 P P 0,391 0,856 P P 0,341 0,566 P P 0,546 0,612 P P 0,733 0,213 P P 0,722 0,483 P P 0,258 0,008 0,914 P F P 0,456 0,026 0,744 P P P 0,134 0,087 0,511 P P P 0,845 P 0,903 P 0,803 P 0,823 0,406 0,513 0,412 0,745 0,398 0,584 P P P P P P P 0,903 0,546 0,004 0,783 0,453 0,912 0,584 P P F P P P P 0,729 0,478 0,823 0,567 0,611 0,547 0,005 P P P P P P F KẾT LUẬN Nghiên cứu sinh số ngẫu nhiên thực dựa tượng jitter thời gian CPU cho thấy sử dụng sinh số ứng dụng đòi hỏi độ an tồn cao, đặc biệt mật mã Bộ sinh số ngẫu nhiên sử dụng đồng với ứng dụng sử dụng số ngẫu nhiên, chẳng hạn sinh mầm cho tạo số ngẫu nhiên tất định Kết thực nghiệm cho thấy số ngẫu nhiên sinh vượt qua hầu hết phép thử thống kê NIST Ưu điểm sinh số tốc độ đáp ứng yêu cầu sinh số ngẫu nhiên nay, không yêu cầu mầm với liệu từ trạng thái trước tạo, nguồn entropy Tạp chí Nghiên cứu KH&CN quân sự, Số 52, 12 - 2017 129 Công nghệ thông tin & Cơ sở toán học cho tin học cao, thiết kế đơn giản dễ hiểu So với sinh số ngẫu nhiên thực vật lý, sinh số không cần thiết kế vi mạch riêng, chạy máy tính nhiều hệ điều hành khác TÀI LIỆU THAM KHẢO [1] Stephan Müller, “CPU Time Jitter Based Non-Physical True Random Number Generator”, 2016 [2] Khudran Alzhrani, Khudran Alzhrani, “Windows and Linux Random Number Generation Process: A Comparative Analysis”, 2015 [3] Stephan Müller, “CPU Time Jitter Based Non-Physical True Random Number Generator”, 2014 [4] Mario Stipcevic, Cetin Kaya Koc, “True Random Number Generators”, 2012 [5] Simona Buchovecká, “Analysis of a True Random Number Generator”, Czech Technical University in Prague, 2012 [6] Jiří Sobotka, Václav Zeman, “Design of the true random numbers generator”, ISSN 1213-1539 Vol (No 3), 2011, p47-52 [7] Andrew Rukhin, Juan Soto, James Nechvatal, Miles Smid, Elaine Barker, Stefan Leigh, Mark Levenson, Mark Vangel, David Banks, Alan Heckert, James Dray, San Vo, “A Statistical Test Suite for Random and Pseudorandom Number Generators for Cryptographic Applications”, NIST, Special Publication 800-22, 2010 [8] Zvi Gutterman, Benny Pinkas, Tzachy Reinman, “Analysis of the Linux Random Number Generator”, 2006 ABSTRACT HIGH SPEED RANDOM NUMBER GENERATOR RUNS ON MULTIPLE OPERATING SYSTEMS Most of non-physical true random number generators obtain entropy source from time variances of hardware events which not occur fast enough to satisfy the ever grown needs of high-quality random numbers Therefore, additional sources of entropy must be opened up In this paper, a reseach of designing CPU time jitter based non-physical true random number generator which runs on Linux and Windows operating systems is introduced The generated random numbers have estimated by NIST statistic tests and overcomes most of them Keywords: True random number, CPU time jitter, TRNG, Cryptography, Statistical test Nhận ngày 11 tháng 07 năm 2017 Hoàn thiện ngày 03 tháng 08 năm 2017 Chấp nhận đăng ngày 20 tháng 12 năm 2017 Địa chỉ: Học viện Kỹ thuật Mật mã – Ban Cơ yếu Chính phủ * Email: nguyentuyettrinh189@gmail.com 130 N T T Trinh, …, Đ T Thành, “Nghiên cứu xây dựng sinh số… nhiều hệ điều hành.” ... Trinh, …, Đ T Thành, Nghiên cứu xây dựng sinh số nhiều hệ điều hành. ” Nghiên cứu khoa học công nghệ THỰC NGHIỆM VÀ KIỂM CHỨNG KẾT QUẢ Tiến hành thử nghiệm sinh 1024 bit máy tính khác với cấu sau:... hàm đếm thời gian có độ phân giải cao tương ứng với hệ điều hành khác nhau, xây dựng sinh số ngẫu nhiên tương thích với đa hệ điều hành với tốc độ sinh bit cao  Gấp giá trị delta thời gian vào... KẾT LUẬN Nghiên cứu sinh số ngẫu nhiên thực dựa tượng jitter thời gian CPU cho thấy sử dụng sinh số ứng dụng đòi hỏi độ an tồn cao, đặc biệt mật mã Bộ sinh số ngẫu nhiên sử dụng đồng với ứng dụng

Ngày đăng: 30/01/2020, 04:30

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan