Luận văn này trình bày về thiết kế bộ mã hóa đường cong elliptic 256 bit trên ngôn ngữ Verilog, phục vụ trong mục đích bảo mật thông tin.. Các thông số của đường cong elliptic sử dụng tr
Giới thiệu đề tài
Tổng quan
Cuộc cách mạng công nghiệp 4.0 đang thúc đẩy sự phát triển mạnh mẽ trong nhiều lĩnh vực như trí tuệ nhân tạo (AI), Internet vạn vật (IoT) và Big Data Để tối ưu hóa sự phát triển này, việc trao đổi thông tin và dữ liệu giữa cá nhân, tổ chức và doanh nghiệp qua internet trở nên cực kỳ quan trọng Tuy nhiên, môi trường internet rộng lớn cũng tiềm ẩn nhiều rủi ro, khiến thông tin dễ bị kẻ xấu đánh cắp Điều này đặt ra thách thức lớn cho lĩnh vực an ninh mạng Hiện nay, nhiều phương thức bảo mật đã được phát triển, như IP security trong mô hình OSI và TLS/SSL hoạt động trên lớp TCP, nhằm đảm bảo an toàn cho thông tin.
TLS (Transport Layer Security) và SSL (Secure Sockets Layer) là các giao thức mã hóa nhằm bảo vệ việc truyền tải dữ liệu trên internet Chúng sử dụng mã hóa bất đối xứng để thiết lập một khóa đối xứng, khóa này được dùng để mã hóa thông tin liên lạc giữa server và nhiều clients Giao thức TLS/SSL giúp mã hóa dữ liệu, bảo vệ thông tin khỏi việc bị đánh cắp trong quá trình truyền tải Tuy nhiên, với sự gia tăng số lượng clients kết nối đến server, khối lượng dữ liệu cần xử lý cũng tăng lên, dẫn đến yêu cầu cao về công suất Do đó, cần thiết phải phát triển giải pháp giúp server mã hóa dữ liệu với thông lượng lớn nhưng tiêu thụ năng lượng ít hơn.
Với yêu cầu hiện tại, nhiều thuật toán mã hóa bất đối xứng cũ đã được loại bỏ, nhường chỗ cho mã hóa trên đường cong elip, đặc biệt là ECDSA (Elliptic Curve Digital Signature Algorithm), trở thành tiêu chuẩn tương lai Mục tiêu của luận văn này là xây dựng và tính toán khóa bất đối xứng cho chữ ký số ECDSA trên đường cong elip NIST P-256.
Tình hình nghiên cứu trong và ngoài nước
Việc sử dụng vi xử lý chuyên dụng cho mã hóa đường cong elliptic đã xuất hiện từ lâu, nhưng mã hóa RSA vẫn thống trị cho đến gần đây Sự phổ biến của thiết bị di động gọn nhẹ và Internet of Things (IoT) đã thúc đẩy việc áp dụng mã hóa đường cong elliptic, nhờ vào ưu điểm tiêu thụ ít năng lượng và yêu cầu bộ nhớ thấp hơn.
Nhiệm vụ luận văn
- Nội dụng 1: Tìm hiểu về giao thức TLS/SSL
- Nội dung 2: Tìm hiều về giao tiếp mã hóa khóa bất đối xứng
- Nội dung 3: Tìm hiểu lý thuyết về mã hóa đường cong elliptic
- Nội dung 4: Thiết kế hệ thống tính toán khóa bất đối xứng cho chữ ký số ECDSA theo mục tiêu đã đặt ra như sau:
Tạo chữ ký số theo chuẩn FIPS 186-4
Hỗ trợ cho đường cong elip NIST P-256 (Weierstrass curves)
Lý thuyết về mã hóa đường cong Elliptic
Giao thức TLS/SSL
SSL (Secure Sockets Layer) và TLS (Transport Layer Security) là các giao thức mật mã quan trọng nhằm bảo vệ thông tin khi truyền tải qua Internet Chúng sử dụng mã hóa khóa bất đối xứng để đảm bảo ba yếu tố chính trong việc thiết lập giao dịch an toàn: xác thực, mã hóa và toàn vẹn dữ liệu Mã hóa khóa bất đối xứng hoạt động thông qua một cặp khóa, bao gồm khóa riêng (Private Key) và khóa công khai (Public Key) Trong đó, khóa công khai được sử dụng để mã hóa thông tin, còn khóa riêng được dùng để giải mã, đảm bảo rằng khóa bí mật không thể bị phát hiện chỉ từ khóa công khai Kết nối giữa client và server được bảo mật bởi giao thức TLS/SSL mang lại sự an toàn cho dữ liệu truyền tải.
Kết nối được bảo vệ thông qua mã hóa đối xứng, trong đó chìa khóa mã hóa được tạo độc lập cho mỗi kết nối, dựa trên thông tin bí mật đã thương lượng ở đầu phiên làm việc Trước khi truyền bất kỳ dữ liệu nào, server và client sẽ trao đổi chi tiết về loại thuật toán và chìa khóa mã hóa sẽ được sử dụng Quá trình thương lượng này đảm bảo an toàn và đáng tin cậy, ngăn chặn bên thứ ba lấy cắp, giải mã hoặc thay thế thông tin mà không bị phát hiện.
Danh tính của client và server có thể được xác thực thông qua mã hóa khóa bất đối xứng Mặc dù quá trình xác thực này không bắt buộc, ít nhất một bên trong hai bên phải thực hiện xác thực, thường là server.
Đảm bảo kết nối đáng tin cậy là rất quan trọng, vì mỗi tin nhắn được gửi đi đều kèm theo một dòng mã duy nhất Điều này giúp bảo vệ tin nhắn khỏi việc bị mất mát hoặc thay thế trong quá trình vận chuyển.
Hình 2-1 Quá trình bắt tay SSL/TLS
Các bước bắt tay được mô hình hóa như sau:
Client: “Xin chào Tôi muốn thiết lập giao tiếp an toàn giữa hai chúng tôi Đây là bộ mã hóa của tôi và phiên bản SSL / TLS tương thích ”
Xin chào khách hàng, tôi đã kiểm tra bộ mã hóa và phiên bản SSL/TLS của bạn, và tôi nhận thấy chúng phù hợp Chúng ta có thể tiến hành sang bước tiếp theo Dưới đây là tệp chứng chỉ và khóa công khai của tôi, vui lòng kiểm tra chúng.
Khách hàng yêu cầu xác minh chứng chỉ của người dùng và sau một thời gian kiểm tra, họ xác nhận rằng mọi thứ có vẻ ổn nhưng cần xác minh khóa cá nhân Khách hàng sẽ tạo và mã hóa khóa chính bằng khóa công khai của người dùng, sau đó giải mã bằng khóa riêng Cuối cùng, chìa khóa chính sẽ được sử dụng để mã hóa và giải mã thông tin.
Cả hai bên đều đã xác định được danh tính của nhau, và thông tin trao đổi sẽ được bảo mật bằng khóa chính Lưu ý rằng sau khi quá trình xác minh hoàn tất, mã hóa sẽ chỉ diễn ra thông qua khóa chính, thể hiện hình thức mã hóa đối xứng.
Khách hàng yêu cầu xác minh các tác vụ chính bằng cách gửi thông báo mẫu và đề nghị nhận phiên bản đã giải mã của thông báo đó Nếu phiên bản này hoạt động, điều đó chứng tỏ rằng dữ liệu của họ đang được bảo mật an toàn.
Server: “Vâng, nó hoạt động Tôi nghĩ chúng tôi đã hoàn thành những gì chúng tôi đang tìm kiếm ”
Các giao thức TLS mới đã được cải tiến với tính năng forward secrecy, giúp bảo vệ các tin nhắn đã gửi trong quá khứ ngay cả khi chìa khóa mã hóa bị lộ trong tương lai.
Giao tiếp mã hóa bất đối xứng
Mô hình mã hóa công khai có thể được mô tả đơn giản như sau:
A muốn gửi thông tin cho B thông qua một cái hộp có chìa khóa mà chỉ B sở hữu B sẽ chuyển hộp cho A, để A có thể đặt thông tin vào trong và đóng nắp lại Sau khi gửi hộp trở lại cho B, A và bất kỳ ai khác đều không thể mở hộp để chỉnh sửa nội dung vì không có chìa khóa Khi B nhận hộp, B sẽ dùng chìa khóa của mình để mở và lấy thông tin mà A đã gửi.
- Ta gọi cái hộp là khóa công khai của B, chìa khóa là khóa riêng của B
Mã hóa công khai vượt trội so với mã hóa đối xứng nhờ vào khả năng cho phép bất kỳ ai muốn trao đổi thông tin bí mật với B có thể sử dụng khóa công khai của B Trong mô hình này, mỗi cá nhân đều sở hữu một khóa riêng để bảo vệ thông tin của mình.
Hình 2-2 Mô hình mã hóa bất đối xứng
Quá trình trao đổi dữ liệu sử dụng khóa công khai bao gồm các thành phần như khóa công khai (public key), khóa bí mật (private key), văn bản gốc (plaintext) và văn bản được mã hóa (ciphertext) Mã hóa (encryption) là quá trình chuyển đổi văn bản gốc thành văn bản được mã hóa, trong khi giải mã (decryption) là quá trình chuyển đổi văn bản được mã hóa trở lại thành văn bản gốc.
Trong mô hình khóa công khai, thuật toán mã hóa và khóa công khai đều được công khai, trong khi mỗi cá nhân chỉ cần quản lý khóa bí mật của riêng mình Điều này giúp hạn chế khả năng rò rỉ khóa so với hệ thống khóa bí mật Đặc biệt, độ an toàn của hệ thống mã hóa công khai không phụ thuộc vào việc kẻ địch có biết thuật toán mã hóa hay không, vì thuật toán đã được công khai.
Trong giao thức TLS/SSL, giao tiếp mã hóa bất đối xứng được sử dụng trong quá trình trao đổi pre-master secret để tạo ra khóa đối xứng, với các phương pháp phổ biến như RSA, DSA, DHE, ECDSA và ECDHE Tuy nhiên, do yêu cầu bảo mật ngày càng cao, kích thước chìa khóa của RSA và DHE ngày càng lớn, gây khó khăn trong tính toán và truyền tải Ngược lại, các thuật toán dựa trên đường cong elliptic cung cấp mức độ bảo mật tương đương nhưng với kích thước chìa khóa nhỏ hơn đáng kể Dưới đây là bảng so sánh kích thước chìa khóa giữa RSA, DH, DSA và ECDHE, ECDSA.
Kích thước chìa khóa của RSA, DSA và
Kích thước chìa khóa của ECDHE và ECDSA (bits)
Bảng 1 So sánh kích thước chìa khóa giữa RSA, DH, DSA và ECDHE, ECDSA.
Mã hóa đường cong elliptic
- Nhóm: Một cách hình thức, một tập G ≠ ∅ với phép * ( hoặc phép +) được gọi là một nhóm nếu nó thỏa mãn điều kiện sau đây:
G đóng dưới phép *, tức với mọi a, b ∈ G, a * b ∈ G
Phép cộng có tính chất kết hợp trong G, tức với mọi a, b, c∈G, ta có: (a * b) * c
Tồn tại trong G phần tử trung hòa e, thỏa: với mọi a∈G, a * e = e * a = a
Với mọi a∈G, tồn tại trong G phần tử đối của a, ký hiệu là –a, thỏa mãn: a * (-a)
Nếu là phép cộng (+) thì e được gọi là phần tử trung hòa (hoặc 0)
Nếu là phép nhân (*) thì e được gọi là phần tử đơn vị (hoặc 1)
Người ta hay dùng |G| hoặc #G được dùng để ký hiệu số phần tử trong một nhóm
G, hay còn gọi tắt là cấp của G
Một nhóm được gọi là nhóm Abelian nếu thỏa: a ∙ b = b ∙ a với mọi a, b ∈ G
- Nhóm cyclic: Cho (G, *) là một nhóm, ta nói G là nhóm cyclic sinh bởi x nếu:
𝐺 = {𝑥 𝑛 |𝑛 ∈ ℤ } trong đó: 𝑥 0 = 𝑒 là phần tử đơn vị của G và 𝑥 i = 𝑥 ∗ 𝑥 ∗ 𝑥 … ∗ 𝑥 (i lần, i ≥ 0) và x -i
=(x i ) -1 Ta ký hiệu nhóm cyclic sinh bởi x là: < 𝑥 >
Một định lý quan trọng về nhóm cyclic G có cấp n cho biết rằng với mọi số tự nhiên d sao cho 𝑑 | 𝑛, có đúng ϕ(d) phần tử có bậc đúng bằng d trong G, trong đó ϕ(d) là hàm phi Euler chỉ số nguyên dương nhỏ hơn d và nguyên tố cùng nhau với d Ngoài ra, tồn tại đúng một nhóm con của G có cấp d, và G có đúng d phần tử có bậc chia hết d.
Ngoài nhóm cyclic, nhóm Abel hay nhóm giao hoán cũng rất quan trọng trong lý thuyết nhóm Hầu hết các nhóm quen thuộc như ℤ, ℝ, ℚ và ngay cả nhóm cyclic đều thuộc loại nhóm Abel.
- Vành: là một tập R với hai toán tử + và *, thỏa các điều kiện sau:
- Trường: Cho (F, +, ) là một trường nếu:
(F, +) là một nhóm giao hoán với phép + và có phần tử đơn vị là 0 𝐹
(F – {0 𝐹 }, *) hay ta còn được ký hiệu: F * là một nhóm giao hoán với phép và có phần tử đơn vị là 1 𝐹
∀𝑎, 𝑏, 𝑐 ∈ 𝐹, (𝑎 + 𝑏) ∗ 𝑐 = 𝑎 ∗ 𝑐 + 𝑏 ∗ 𝑐 hay ta có thể nói, phép nhân phân phối với phép cộng
Nếu F hữu hạn, ta gọi F là trường hữu hạn
Ví dụ, (ℤp, +, ) với phép cộng và nhân theo modulo p là một trường hữu hạn Trong khi đó, (ℚ, +, ) với các phép cộng và nhân thông thường cho thấy (ℚ, +) là một nhóm giao hoán với phép cộng, và (ℚ*, ) là một nhóm giao hoán với phép nhân Hơn nữa, phép nhân phân phối với phép cộng chứng minh rằng (ℚ, +, ) là một trường vô hạn.
Trường hữu hạn bậc p, hay còn gọi là trường nguyên tố GF(p), được xác định cho một số nguyên tố p, với tập Zp = {0, 1, …, p-1} Trong trường này, các phép toán đại số được thực hiện theo modulo p Đặc biệt, mọi phần tử trong Zp (ngoại trừ 0) đều có giá trị nghịch đảo modulo, nghĩa là tồn tại các phần tử z, w ∈ Zp sao cho wz = 1 mod(p), hay z = w⁻¹ mod(p).
- Trường hữu hạn bậc 𝟐 𝒎 (binary field): cách để tạo nên một trường hữu hạn bậc
Trong trường hợp của trường F2m, các phần tử được biểu diễn thông qua các đa thức nhị phân, trong đó hệ số thuộc trường F2 = {0, 1} Đa thức này có bậc lớn nhất là m-1.
Một đường cong elliptic E trên trường K được định nghĩa bởi phương trình sau cùng với một điểm O tại vô cùng:
Nếu L là một trường mở rộng của K thì với ∞ là điểm ở vô cực, tập hợp các điểm L - hữu tỷ trên E là:
Hình 2-3 Đường cong elliptic trên R
Với các định nghĩa như trên:
(i) Phương trình được gọi là phương trình Weierstrass
E được định nghĩa trên K khi các hệ số a1, a2, a3, a4, a6 là các phần tử của K Chúng ta có thể sử dụng ký hiệu E/K để nhấn mạnh rằng E được định nghĩa trên K.
14 nghĩa trên K và K được gọi là trường cơ sở Chú ý rằng nếu E được định nghĩa trên K thì E cũng định nghĩa được trên trường mở rộng của K
Điều kiện ∆ ≠ 0 là cần thiết để đảm bảo rằng đường cong elliptic là trơn, tức là không tồn tại điểm nào trên đường cong có hai hoặc nhiều tiếp tuyến phân biệt Điểm ∞ là điểm trên đường thẳng ở vô cực, thỏa mãn các tính chất của phương trình Weierstrass.
Các điểm L-hữu tỷ trên E là những điểm (x, y) thỏa mãn phương trình đường cong, trong đó các tọa độ x, y thuộc L Điểm ở vô cực được xem là một điểm L-hữu tỷ với mọi trường mở rộng L của K.
Hai đường cong elliptic E1 và E2 định nghĩa trên K được cho bởi phương trình Weierstrass:
E 2 : y 2 + a 1’ xy + a 3’ y = x 3 + a 2’ x 2 + a 4’ x + a 6’ , được gọi là đẳng cấu trên K nếu tồn tại u, r, s, t ∈ K, u 6= 0 sao cho phép đổi biến
(x, y) → (u 2 x + r, u 2 sx + u 3 y + t) biến đổi phương trình E1 thành phương trình E2 Phép đổi biến được gọi là phép đổi biến chấp nhận được (admissiable change of variables)
Một phương trình Weierstrass trên trường K có thể được đơn giản hóa thông qua một phép đổi biến hợp lệ Chúng ta sẽ xem xét các trường hợp cụ thể với trường cơ sở.
K có đặc số 3 Nếu K có đặc số 3, ta cũng xét 2 trường hợp:
TH1: Nếu 𝑎 1 2 ≠ 𝑎 2 thì phép đổi biến chấp nhận được:
𝑑 2 + 𝑎 3 ) Với 𝑑 2 = 𝑎 1 2 + 𝑎 2 và 𝑑 4 = 𝑎 4 − 𝑎 1 𝑎 3 , biến E thành đường cong: y 2 = x 3 + ax 2 + b
Với a, b ∈ K Đường cong có dạng trên được gọi là không suy biến mạnh và có biệt thức
TH2: Nếu 𝑎 1 2 = −𝑎 2 thì phép đổi biến chấp nhận được:
(𝑥, 𝑦) → (𝑥, 𝑦 + 𝑎 1 𝑥 + 𝑎 3 ) biến E thành đường cong: y 2 = x 3 + ax 2 + b Với a, b ∈ K Đường cong có dạng trên được gọi là suy biến mạnh và có biệt thức ∆ = −a 3 b
Cấp của một trường hữu hạn là số lượng phần tử trong trường đó, và một trường hữu hạn tồn tại với cấp q khi q là lũy thừa của một số nguyên tố (q = p^m, với p là số nguyên tố và m là số nguyên dương) Trong trường hợp này, p được gọi là đặc số của trường, ký hiệu là Fq Đặc biệt, khi p là số nguyên tố, trường Fp đẳng cấu với Zp Đối với mọi số nguyên tố p và số nguyên dương n, cũng tồn tại trường hữu hạn với cấp p^n, ký hiệu là Fpn.
2.3.3 Đường cong Weierstrass rút gọn: Ứng dụng thực tế trong mã hóa đường cong elliptic, người ta thường sử dụng dạng rút gọn của đường cong Weierstrass:
Để xác định điểm R = P + Q (với P, Q ≠ O và P ≠ -Q) trong hình học, ta vẽ đường thẳng đi qua hai điểm P và Q, đường thẳng này sẽ cắt đường cong tại điểm thứ ba R' Sau đó, lấy đối xứng của điểm R' qua tung độ sẽ cho ra điểm R Tương tự, để tìm điểm R = 2P = P + P, ta vẽ tiếp tuyến tại P, cắt đường cong tại điểm R', và lấy đối xứng qua tung độ để thu được điểm R.
Hình 2-4 Cộng và nhân điểm trên đường cong elliptic
Về mặt đại số, điểm P, Q biểu diễn dưới tọa độ Affine có dạng 𝑃(𝑥 1 ; 𝑦 1 ) và Q(𝑥 2 ; 𝑦 2 ) Công thức tổng quát cho phép tính R(𝑥 3 ; 𝑦 3 ) = P + Q (P, Q ≠ O, P ≠ -Q): x 𝟑 = λ 𝟐 − 𝑥 1 − 𝑥 2 ; 𝑦 3 = λ(𝑥 1 − 𝑥 3 ) − 𝑦 1
Để giảm thiểu việc tính toán nghịch đảo modulo khi thực hiện phép cộng hai điểm trên đường cong elliptic, các điểm thường được chuyển sang hệ tọa độ xạ ảnh, cụ thể là tọa độ Jacobian Trong hệ tọa độ này, điểm 𝑃(𝑥 1 ; 𝑦 1 ) được biểu diễn dưới dạng 𝑃(𝑋 1 ; 𝑌 1 ; 𝑍 1 ), với mối quan hệ 𝑥 1 = 𝑋 1.
𝑍 1 3 (Lưu ý rằng nếu 𝑍 1 = 0 thì P = O) Phương trình đường cong trở thành:
Công thức tính cộng hai điểm 𝑃(𝑋 1 ; 𝑌 1 ; 𝑍 1 ) và 𝑄(𝑋 2 ; 𝑌 2 ; 𝑍 2 ) với điều kiện Q≠ ± P và P, Q ≠ O cho ra điểm 𝑅(𝑋 3 ; 𝑌 3 ; 𝑍 3 ):
𝐻 = 𝑈 1 − 𝑈 2 ; 𝑈 1 = 𝑋 1 𝑍 2 2 ; 𝑈 2 = 𝑋 2 𝑍 1 2 Nhân đôi điểm 𝑃(𝑋 1 ; 𝑌 1 ; 𝑍 1 ) để thu được điểm 𝑅(𝑋 3 ; 𝑌 3 ; 𝑍 3 ), ta có công thức sau:
2.3.4 Elliptic curve digital signature algorithm (ECDSA):
ECDSA, hay Thuật toán Chữ ký Số Dựa trên Đường cong Elliptic, là một phương pháp tạo chữ ký số cho dữ liệu nhằm ngăn chặn giả mạo và sai lệch thông tin Thuật toán này cung cấp một phương thức xác thực hiệu quả mà không làm giảm tính bảo mật của dữ liệu gốc ECDSA được áp dụng rộng rãi trong nhiều lĩnh vực yêu cầu bảo mật và riêng tư, đặc biệt là trong công nghệ Blockchain Bài viết này sẽ cung cấp cái nhìn tổng quan về ECDSA và ứng dụng của nó trong Blockchain.
Các tham số có trong luận văn:
p: Kích thước của trường Fp hữu hạn, p > 3 và là số nguyên tố
SEED (m): Một chuỗi kí tự dài ít nhất 160 bits
a,b: Các tham số định nghĩa của phương trình đường cong
G(x,y): Tọa độ điểm bắt đâu khác O
n: Bậc của G, được định nghĩa là số nguyên nhỏ nhất mà nG=O
𝑛 , đối với các đường cong chuẩn hóa h=1
Chữ ký số (ECDSA) sẽ được biểu diễn dưới cặp số (r,s)
Mục tiêu của luận văn tập trung vào quy trình tạo chữ ký số, bắt đầu từ việc cần có một private key Sau đó, quá trình tạo chữ ký số sẽ được thực hiện một cách cụ thể.
TẠO CHỮ KÝ SỐ ECDSA
- INPUT: Tham số D = (q ,FR,S,a,b,G,n,h), khóa bí mật d, thông điệp m
Bước 1: Để tạo ra cặp số (r,s) trước tiên chúng ta phải chọn ra số ngẫu nhiên k ( Lưu ý đây là số ngẫu nhiên k khác với private key) Lưu ý 1 n Trong luận văn R = 2 256
Z Tích của 2 toán tử qua phép nhân bình thường n Số Modul n Ngõ ra M M = ZR -1 mod n
Tính toán 1 t = Zn’ mod R // Trong luận văn tương đương lấy 256 bits cuối
2 q = (Z + tn) div R // Trong luận văn tương đương lấy 256 bits đầu
7 end if Với thuật toán trên với giá trị nhận được là giá trị chưa phải cuối cùng vì vậy để chuẩn hóa và nhận lại giá trị chính xác thì em tiến hành thực hiện thuật toán trên lần thứ hai với hạng thử nhân lúc đó sẽ là M và R 2 mod n(Đây là giá trị có thể tính toán được trước) Với kết quả sau lần nhân này sẽ là:
Sơ đồ khối để có thể thực hiện được thuật toán trên có chứa những khối chức năng chính như sau:
- Multiplication: Có chức năng thực hiện các phép nhân giữa các số 256 bits và đưa ra giá trị 512 bits
- Add: Có chức năng thực hiện các phép cộng giữa các số với nhau sử dụng thuật toán CLA
- Last substraction: Thực hiện phép trừ khi thực hiện kiểm tra điều kiện if ở bước thứ
- Controller: Nhận kết quả của 2 số q và n kiểm tra và sau đó đưa ra tính hiệu điều kiểu chọn tính hiệu cho khối Mux
- Mux: Nhận giá trị điều khiển của Controller sau đó xuất giá trị ra ngoài
Hình 3-13 Sơ đồ khối giải thuật bộ nhân Montgomery
Kết quả mô phỏng cho bộ tính giá trị nhân Modul: (MODEL SIM)
Hình 3-14 Kết quả mô phỏng nhân Modul (MODEL SIM)
Giá trị vào a 256'h4126885E7F786AF905338238E5346D5FE77FC46388668BD0FD59BE3190D2F5D1
30 b 256'h4126885E7F786AF905338238E5346D5FE77FC46388668 BD0FD59BE3190D2F5D1 m 256'hFFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179 E84F3B9CAC2FC632551
Giá trị nhận được ketqua 256’h5B7ACFCAE063C9BF1B061C9B0F69AF630D8A02C6D9F3C 8D085E5CE3821F5138C
Kết quả mô phỏng cho bộ tính giá trị nhân Modul: (Python)
Hình 3-15 Kết quả mô phỏng nhân Modul (Python)
Kết luận: Nhận được giá trị mong muốn
3.5.4 Bộ tính nghịch đảo Modul:
3.5.4.1 Lý thuyết và thuật toán:
Hình 3-16 Bộ nghịch đảo Montgomery
Chân Số Bits Mô tả IN/OUT
En 1 Khi nhận giá trị là một xung lên
1 với thời gian lên 1 là 10 ns (1 chu kỳ clock)
Clk 1 Nhận giá trị xung Clook với T
Rst 1 Cờ reset bật khi giá trị lên 1 IN
D_in 256 Giá trị cần lấy nghịch đảo IN
D_mod 256 Nhận giá trị Mod IN
Inv 256 Kết quả của bộ nghịch đảo
Vld 1 Tạo xung lên 1 khi hoàn thành tác vụ
OUT Bảng 8 Quan hệ vào ra của bộ nghịch đảo Montgomery
Bộ nghịch đảo Montgomery được thực hiện thông qua giải thuật ngịch đảo Montgomery, bao gồm hai phần với hai module tương ứng là phase 1 và phase 2 Kết quả cuối cùng của bộ nghịch đảo này là a -1 2 n mod(p) Để nhận được a -1 mod(p), cần thực hiện phép nhân.
Montgomery cho kết quả và 2 -n mod(p) (với là giá trị có thể tính toán được trước 2 -n ) Sau đây là thuật toán thực hiện bộ tính toán nghịch đảo Modul:
Ngõ vào N n = [log2 p] đây là giá trị có thể tính toán trước được
A Giá trị cần tính nghịch đảo, trong luận văn giá trị là một số 256 bits
P Số Modul p Ngõ ra M M = a -1 2 n mod p
- Output: r ∈ [1, p − 1] and k, where r = a -1 2 k (mod p) and n ≤ k
5 else if v is even then v := v/2, r := 2r
- Output: M ∈ [1, p − 1] and k, where r = a -1 2 n (mod p) and n ≤ k
14 return M := r Để đạt được giá trị mong muốn em sử dụng bộ nhân Modul nhân kết quả vừa nhận được với 2 n mod p
Ngõ vào M Giá trị có được sau Phase 2
2 n Giá trị được tính toán trước:
- Đối với trong đường cong elip:
- Đối với ngoài đường cong elip:
P Số Modul p Ngõ ra R R = a -1 mod p
Sơ đồ khối để có thể thực hiện được thuật toán trên có chứa những khối chức năng chính như sau:
Hình 3-17 Sơ đồ khối cho giải thuật bộ nghịch đảo Montgomery
- Counter: Thực hiện phép cộng để đếm các giá trị biến đếm trong vòng lặp
- Controller: Thực hiện kiểm tra và cấu trúc vòng lặp cho thuật toán điều khiển các bộ tính toán trong vòng lặp While hoặc For
- Shift Less or Right: Tại khối này em dùng phép dịch để thay thế cho các phép chia
2 (Tương ứng với dịch phải 1 bits) và nhân 2 (Tương ứng với dịch trái 1 bits)
- Add and Sub: Tính toán các giá trị cộng trừ trên bits bình thường giúp giải quyết những phép cộng trừ trong thuật toán
- Multi Mod: Khối này có nhiệm vụ chuẩn hóa cuối cùng nhằm tạo đưa ra giá trị mong muốn
Kết quả mô phỏng cho bộ tính giá trị bộ nghịch đảo Modul: (MODEL SIM)
Hình 3-18 Kết quả mô phỏng nghịch đảo Modul Phase1 (MODEL SIM)
Hình 3-19 Kết quả mô phỏng nghịch đảo Modul Phase2 (MODEL SIM)
Hình 3-20 Kết quả mô phỏng nghịch đảo Modul chuẩn hóa (MODEL SIM)
- Kết quả của bộ tính toán nghịch đảo Modul:
Hình 3-21 Kết quả mô phỏng nghịch đảo Modul (MODEL SIM)
Giá trị vào din = 256'd87634236482634929198721 m 256'hFFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179 E84F3B9CAC2FC632551
Giá trị nhận được inv 256’hCC4D8674E95B77226AFA9CD7C7FC5B7B657ED28BBD799 98DF19917FE73A42D64
Kết quả mô phỏng cho bộ tính giá trị nghịch đảo Modul: (Python)
Hình 3-22 Kết quả mô phỏng nghịch đảo Modul (Python)
Kết luận: Nhận được giá trị mong muốn
3.5.5 Bộ tính giá trị nhân vô hướng cho đường cong Weierstrass:
3.5.5.1 Lý thuyết và thuật toán:
Hình 3-23 Bộ nhân vô hướng cho đường cong Weierstrass
Chân Số Bits Mô tả IN/OUT
En 1 Khi nhận giá trị là một xung lên
1 với thời gian lên 1 là 10 ns (1 chu kỳ clock)
Clk 1 Nhận giá trị xung Clook với T
Rst 1 Cờ reset bật khi giá trị lên 1 IN
G 512 G là điểm tọa độ trong đường cong elip, chứa các giá trị tọa độ (x,y) Trong đó, x là 256 bits trọng số cao và y là 256 bits trọng số thấp
IN k 256 k là thừa số nhân với điểm G k được chọn thông qua bộ chọn số ngẫu nhiên
Trong đó, 256 bits trọng số cao chứa giá trị tọa độ x và 256 bits
37 trọng số thấp chứa giá trị tọa độ y
Vld 1 Tạo xung lên 1 khi hoàn thành tác vụ
OUT Bảng 9 Quan hệ vào ra của bộ nhân vô hướng cho đường cong Weierstrass
Bộ nhân vô hướng cho đường cong Weierstrass trong luận văn em áp dụng phương pháp cửa sổ w-NAF (non-adjacent form) để tối ưu hóa tính toán phép nhân vô hướng Phương pháp này yêu cầu 2 w−2 − 1 phép cộng và 1 phép nhân đôi cho bước chuẩn bị, cùng với w+1 L phép cộng và L phép nhân đôi cho phần tính toán, trong đó L là độ dài bit của k Số lượng phép nhân đôi không phụ thuộc vào w, trong khi số phép cộng lại phụ thuộc vào w trong phần tính chính Em đã lập bảng thống kê số phép cộng cần thiết cho các giá trị khác nhau của w với độ dài bit của k là 2, 3, 4, 5, 6.
Bảng 10 Tương quan của số lượng phép cộng và w
Tổng số phép cộng đạt cực tiểu khi kích thước cửa sổ là 5 hoặc 6, tùy thuộc vào độ dài bit của số ngẫu nhiên k Đối với đường cong elliptic 256 bit, kích thước w = 5 mang lại tốc độ xử lý tốt nhất, yêu cầu tính toán trước 15 điểm tọa độ (2w-1 – 1) Tuy nhiên, w = 4 cũng là một lựa chọn hợp lý, tạo ra sự cân bằng giữa tốc độ xử lý và diện tích, chỉ cần tính trước 7 điểm.
Elliptic thường được biểu diễn trong hệ tọa độ Jacobian để tối ưu hóa quá trình tính toán Các khối thuật toán chính đóng vai trò quan trọng trong việc thực hiện bộ tính toán này.
Else set u l = 0 Set c = c/2, l = l + 1 Return w-NAF(k)
Giải thuật cửa số w_NAF cho đường cong Weierstrass
Input: integer k and w, and point P = (x, y)
// Compute uP for u odd and 2 < 𝑢 < 2 w−1
Set Q = O, where the point of infinity is O
If u j > 0 then set Q = Q + P i Else set Q = Q − P i
Sơ đồ khối để có thể thực hiện được thuật toán trên có chứa những khối chức năng chính như sau:
Hình 3-24 Sơ đồ khối cho giải thuật bộ nghịch đảo Montgomery
Trong bài viết này, tôi thực hiện các phép toán để tính toán các phần tử trong cửa sổ với w = 5 Sau khi hoàn tất các phép toán, kết quả sẽ được lưu trữ dưới dạng tập hợp w-NAF (k) (ul-1 … u1; u0) Để lưu trữ tất cả các giá trị này, tôi sử dụng một thanh RAM Dưới đây là sơ đồ khối minh họa quá trình này.
- Controller: Nhằm điều khiển và kiểm soát quá trình của vòng lặp
- Add and sub: Thực hiện các phép tính toán cộng trừ trong thuật toán
- Mod 2 w : Với phép tính này em sử dụng phép tương đương là lấy w bits trọng số thấp trong giá trị đó
- Shift Right: Thay thế cho các phép toán chia 2
Hình 3-25 Sơ đồ khối cho giải thuật w - NAF
Chân Số Bits Mô tả IN/OUT
En 1 Khi nhận giá trị là một xung lên
1 với thời gian lên 1 là 10 ns (1 chu kỳ clock)
Clk 1 Nhận giá trị xung Clook với T
Rst 1 Cờ reset bật khi giá trị lên 1 IN k 256 k là thừa số nhân với điểm G k được chọn thông qua bộ chọn số ngẫu nhiên
Result 6 Kết quả là một mảng chứa các giá trị 6 bits Trong đó 5 bits trọng số thất sẽ là giá trị và bits trọng số cao nhất sẽ là bits dấu
Vld 1 Tạo xung lên 1 khi hoàn thành tác vụ
Bảng 10 Quan hệ vào ra của w-NAF
Kết quả mô phỏng cho w-NAF: (MODEL SIM)
- Giá trị w-NAF đưa ra:
Hình 3-26 Kết quả mô phỏng w-NAF (MODEL SIM)
- Giá trị Ram nhận vào:
Hình 3-27 Kết quả mô phỏng Ram (MODEL SIM)
- Vị trí các thanh ghi:
Hình 3-28 Vị trí lưu các giá trị trong thanh ghi Ram (MODEL SIM)
So sánh với kết quả test bằng Python:
- Code: w-NAF Python code import math c = 31 w = 5 l = 0
43 while (c > 0): if (c%2==1): u= c %(2**w) if (u > (2**(w-1))): u = u - 2**(w) c = c -u else: u=0 c= c//2 l= l+1 print("Giá trị tại vị trí ",l-1,"là :",u)
Hình 3-29 Kết quả mô phỏng w-NAF (Python)
Kết luận: Nhận được giá trị mong muốn
Để tối ưu thời gian xử lý tác vụ cho hệ thống, em đã thực hiện tính toán trước các giá trị điểm, bắt đầu từ register [0] và sử dụng các thông số đã được tính toán trước.
T