- vừa được xem lúc

Một số thuật toán cơ bản được ứng dụng trong an toàn thông tin (Phần 1)

0 0 36

Người đăng: Magic Stick

Theo Viblo Asia

I. Giới thiệu

Thuật toán hay giải thuật là các phương pháp để giải quyết vấn về toán học và khoa học máy tính, một tập hợp hữu hạn các hướng dẫn được xác định rõ ràng, có thể thực hiện được bằng máy tính, thường để giải quyết một lớp vấn đề hoặc để thực hiện một phép tính.

Lập trình chính là để yêu cầu, chỉ thị máy thực hiện, giải quyết 1 công việc, bài toán cụ thể nào đó của cuộc sống. Mỗi bài toán thực tế sẽ có cách giải quyết khác nhau. Am hiểu và sử dụng đúng thuật toán, sẽ giúp bạn giải quyết một cách dễ dàng, cùng với độ chính xác cao trong thời gian ngắn nhất.

Vậy thì trong an toàn thông tin chúng ta đã/sẽ sử dụng thuật toán như thế nào để giải quyết được các vấn đề.

II. Tính toán trên trường số lớn Fp

VD: Thời gian cần thiết để phân tích số nguyên n ra thừa số nguyên tố bằng thuật toán nhanh nhất hiện nay:

Số chữ số thập phân Số phép tính bits Thời gian
5050 1,4.10101,4.10^{10} 3,93,9 giờ
7575 9.10129.10^{12} 104104 ngày
100100 2,3.10152,3.10^{15} 7474 năm
200200 1,2.10231,2.10^{23} 3,8.1093,8.10^{9} năm
300300 1,5.10291,5.10^{29} 4,9.10154,9.10^{15} năm
500500 1,3.10391,3.10^{39} 4,2.10254,2.10^{25} năm

1. Giải thích về trường hữu hạn

  1. Trường là một tập hợp với 2 phép toán (+, .) thỏa mãn các tính chất số học thông thường:
  • (F,+)(F, +) là nhóm Abel với phép cộng
  • (F \ {0}, .) là nhóm Abel với phép nhân
  • Tính phân phối: (a+b).c=a.c+b.ca,b,cF(a + b).c = a.c + b.c ∀a, b, c ∈ F
  1. Trường hữu hạn (còn gọi là trường Galois) là những trường có hữu hạn số phần tử, số này gọi là bậc của trường đó.
  2. Các phép toán trên trường hữu hạn:
  • Có thể nói là có các phép toán cộng, trừ, nhân, chia số khác 0
  • Phép trừ được coi như là cộng với số đối của phép cộng ab=a+(b)a - b = a + (-b)
  • Phép chia là nhân với số đối của phép nhân a/b=a.b1a/b = a.b^{-1}
  • Số lượng phần tử của một trường hữu hạn được gọi là cấp hoặc bậc của nó.
  • Trường hữu hạn F cấp q nếu và chỉ nếu q là lũy thừa nguyên tố pm (trong đó p là số nguyên tố, m là số nguyên dương). Nếu m=1m = 1 thì F được gọi là trường nguyên tố, nếu m2.Fm ≥ 2.F được gọi là trường mở rộng.
  • Trường nguyên tố Fp=0,1,...,p1Fp = {0, 1, ..., p - 1} với các phép toán (+, .) thực hiện theo modulo p.
  • VD:
  • F29F_{29} = {0, 1, 2, 3, ..., 28}
  • Phép toán cộng: 17+20=817 + 20 = 837mod29=837 mod 29 = 8
  • Phép trừ: 1720=2617 - 20 = 263mod29=26-3 mod 29 = 26
  • Phép nhân: $17.20 = 214 vì 340mod29=21340 mod 29 = 21
  • Phép lấy nghịch đảo: 171=1217 - 1 = 1217.12mod29=117.12 mod 29 = 1.

2. Phép tính cộng và trừ

  • Các thuật toán cộng, trừ, nhân, chia, ... giới thiệu trong chương này phù hợp với triển khai phần mềm
  • Ta giả thiết nền tảng triển khai có kiến trúc W – bit trong đó W là bội số của 8 (phổ biến là 64 – 32 bit), các hệ thống máy có công suất thấp có thể có W nhỏ hơn, VD: hệ thống nhúng W = 16 bit, thẻ thông minh W = 8 bit.
  • Các bit của một W-bit là từ U được đánh số từ phải qua trái bắt đầu từ 0 đến W -1.
  • Ta có FpF_{p} = {0 ... p - 1}.
  • Tính m=[log2(p)]m = [\log_{2}(p)] là độ dài bit của p và t=[m W]t = [m \ W] là độ dài từ của p
  • Biểu diễn của phần tử a được lưu trữ trong một mảng AA == (A[t – 1], ...,A[2], A[1], A[0]) của t các từ W bit, trong đó bit ngoài cùng bên phải của A[0]A[0] là bit có trọng số thấp nhất.
A[t1]A[t - 1] ... A[2]A[2] A[1]A[1] A[0]A[0]
  • Biểu diễn aFpa ∈ F_{p} như một mảng A của các từ W-bit: VD: cho W= 8, xét F2147483647F_{2147483647} , hãy biểu diễn số a = 23456789 dưới dạng mảng:
import math a = 23456789
W = 8
p = 2147483647 def solve(a, W, p): result = [] m = round(math.log2(p)) t = round(m/W) n = [pow(2, i*W) for i in range(t)] for i in n[::-1]: result.append(math.floor(a/i)) a = a%i return result if __name__ == "__main__": print(solve(a, W, p))

Còn tiếp....

Bình luận

Bài viết tương tự

- vừa được xem lúc

Thuật toán quay lui (Backtracking)

Quay lui là một kĩ thuật thiết kế giải thuật dựa trên đệ quy. Ý tưởng của quay lui là tìm lời giải từng bước, mỗi bước chọn một trong số các lựa chọn khả dĩ và đệ quy.

0 0 38

- vừa được xem lúc

Các thuật toán cơ bản trong AI - Phân biệt Best First Search và Uniform Cost Search (UCS)

Nếu bạn từng đọc các thuật toán trong AI (Artificial Intelligence - Trí tuệ nhân tạo), rất có thể bạn từng nghe qua về các thuật toán tìm kiếm cơ bản: UCS (thuộc chiến lược tìm kiếm mù) và Best First Search (thuộc chiến lược tìm kiếm kinh nghiệm). Khác nhau rõ từ khâu phân loại rồi, thế nhưng hai th

0 0 152

- vừa được xem lúc

Sử dụng vector trong lập trình C++ - giải bài toán lập trình muôn thủa

Chào buổi tối mọi người, hôm nay lang thang trên mạng bắt gặp bài toán quen thuộc một thời của quãng đường sinh viên IT. Đấy chính là câu số 1 trong đề thi dưới đây:.

0 0 35

- vừa được xem lúc

MÔ PHỎNG THUẬT TOÁN VƯƠNG HẠO TRONG PROLOG

. 1. Các luật suy diễn trong thuật toán Vương Hạo. Luật 1: Chuyển vế các giả thuyết và kết luận ở dạng phủ định. Ví dụ: p v q, !(r ^ s), !q, p v r -> s, !p <=> p v q, p v r, p -> s, r ^ s, q.

0 0 76

- vừa được xem lúc

A* Search Algorithm

What is A* Search Algorithm. How it works. . Explanation.

0 0 42

- vừa được xem lúc

Python: Jump Search

Search là một từ khóa khá là quen thuộc đối với chúng ta. Hiểu theo đúng nghĩa đen của nó chính là "Tìm kiếm".

0 0 35