1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

THUẬT TOÁN CHỮ KÝ SỐ TRÊN ĐƯỜNG CONG ELLIPTIC

79 1,2K 2

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 79
Dung lượng 566,43 KB

Nội dung

đường cong elliptic ECDSA, và dựa trên những ưu điểm của thuật toán nàyđể đưa ra đề xuất cho việc áp dụng thuật toán trên thiết bị có tài nguyên hạnchế như trong các thẻ NFC, RFID,… Với

Trang 1

NGHIÊN CỨU THUẬT TOÁN CHỮ KÝ SỐ TRÊN ĐƯỜNG CONG ELLIPTIC

Trang 2

MỤC LỤC

Trang

Trang phụ bìa

Bản cam đoan

Mục lục

Tóm tắt luận văn

Danh mục các ký hiệu, viết tắt, các bảng, các hình vẽ

Trang 4

DANH MỤC HÌNH VẼ

Trang

Trang 5

DANH MỤC BẢNG BIỂU

Trang

Trang 6

DANH MỤC KÝ HIỆU VÀ CHỮ VIẾT TẮT

ANSI American National Standard

Institute

Tổ chức tiêu chuẩn quốc gia Hoa Kỳ

DLP Discrete Logarithm Problem Vấn đề logarit rời rạc

DSA Digital Signature Algorithm Thuật toán chữ ký số

DSKS Duplicate-signature Key

Selection

Việc lựa chọn khóa bản sao chữ ký

DSS Digital Signature Standard Chuẩn chữ ký số

ECC Elliptic Curve Cryptography Mật mã hóa đường cong

ellipticECDSA Elliptic Curve Digital Signature

Trang 7

LỜI MỞ ĐẦU

Ngày nay, sự phát triển của khoa học công nghệ thông tin và truyềnthông đã làm cho việc trao đổi, học hỏi thông tin trở nên không còn bị ảnhhưởng quá nhiều bởi khoảng cách về địa lý nữa Nhưng khi việc trao đổithông tin trong một môi trường mở như thế lại là điều kiện thuận lợi cho các

kẻ phá hoại có thể dễ dàng đánh cắp và thay đổi thông tin Chính vì vậy, yêucầu đặt ra khi trao đổi thông tin trong môi trường mở như thế đó là phải cótính an toàn và xác thực

Sự ra đời của các hệ mật mã hóa chính là nhằm đảm bảo an toàn thôngtin trong quá trình trao đổi, nhất là sự ra đời của các hệ mật mã hóa công khai

đã tạo ra bước đột phá trong việc xác thực thông tin Diffie và Hellman chính

là những người đi tiên phong trong lĩnh vực mật mã khóa công khai với sự rađời của thuật toán trao đổi khóa Sau đó là sự ra đời của hàng loạt các hệ mật

mã hóa khác như RSA, Elgamal, ECC… Và các hệ mật này đóng vai trò quantrọng trong thuật toán chữ ký số nhằm đảm bảo an toàn và tính xác thực củathông tin

Trong các hệ mật mã hóa khóa công khai thì hệ mật đường congElliptic (ECC) được cho là một hệ mật có độ bảo mật cao và an toàn hơnnhiều so với các thuật toán mật mã hóa khác Nó được ứng dụng trong rấtnhiều lĩnh vực và được sử dụng nhiều nơi trên thế giới Với các đặc tính của

nó thì nó là thuật toán mà được áp dụng phổ biến nhất trên cá thiết bị có tàinguyên hạn chế như trong các thẻ NFC, RFID,… các thiết bị này có thể nói làphổ biến trong cuộc sống ngày nay và cũng yêu cầu các thuật toán xác thực antoàn và hiệu quả

Luận văn với tên gọi “Nghiên cứu thuật toán chữ ký số trên đườngcong elliptic” với mục đích chính là nghiên cứu thuật toán chữ ký số trên

Trang 8

đường cong elliptic (ECDSA), và dựa trên những ưu điểm của thuật toán này

để đưa ra đề xuất cho việc áp dụng thuật toán trên thiết bị có tài nguyên hạnchế như trong các thẻ NFC, RFID,… Với mục tiêu trên, luận văn có bố cụcnhư sau:

- Chương 1 - “Mật mã khóa công khai và chữ ký số”: Trong chươngnày, luận văn sẽ đi vào trình bày tổng quan về hệ mật mã khóa côngkhai và thuật toán chữ ký số

- Chương 2 - “Hệ mật dựa trên đường cong elliptic”: sẽ mang đến chongười đọc lý thuyết về đường cong elliptic và hệ mật dựa trênđường cong elliptic

- Chương 3 - “Xây dựng lược đồ chữ ký số trên đường cong elliptic”:dựa vào lý thuyết elliptic và hệ mật đường cong elliptic để trình bàylược đồ chữ ký số dựa trên đường cong elliptic và đề xuất ứng dụngthuật toán trên các thiết bị có tài nguyên hạn chế

Trang 9

CHƯƠNG 1: MẬT MÃ KHÓA CÔNG KHAI VÀ CHỮ KÝ SỐ 1.1 Mật mã khóa công khai

Ý tưởng về mật mã khóa công khai được Diffie và Hellman đưa ra vàonăm 1976 là hệ mật mã đối xứng Thuật toán mật mã khóa công khai dựa trênmột khóa cho việc mã hóa và một mã khác cho việc giải mã Hay nói cáchkhác mật mã khóa công khai có tính chất bất đối xứng, nó bao gồm việc sửdụng hai khóa riêng biệt tương phản với mã hóa khóa đối xứng là chỉ có mộtkhóa Việc sử dụng hai khóa là quan trọng trong lĩnh vực cần tính bí mật vàchứng thực Sự phát triển của mật mã khóa công khai đóng một vai trò rất lớn

và tạo ra một cuộc cách mạng trong kỹ thuật mật mã Trong đó, những giảithuật khóa công khai đều dựa trên những hàm toán học hơn là những phépthay thế và chuyển vị trong những hệ mật mã cổ điển

Khái niệm mật mã khóa công khai đã tạo ra sự cố gắng để giải quyết haivấn đề khó khăn nhất trong mã hóa quy ước đó là sự phân bố khóa và chữ kýsố:

• Trong mã hóa quy ước sự phân bố khóa yêu cầu hai hoặc nhiềungười truyền thông cùng tham gia một khóa mà bằng cách nào đó đãđược phân bố với họ hoặc sử dụng một trung tâm phân phối khóa

• Nếu mật mã đã trở nên phổ biến thì những bản tin và tài liệu điện tử

sẽ cần những chữ ký tương đương mà đã sử dụng trong các tài liệugiấy Tức là một phương pháp có thể được nghĩ ra có quy định làmhài lòng tất cả những người dùng tham gia khi một đoạn tin số đượcgửi đi bởi một cá nhân nào đó hay không

Những thuật toán mật mã khóa công khai có các đặc điểm sau [7]:

Trang 10

• Việc tính toán là không khả thi để giải mã khi mà chỉ dựa vào thuậttoán mã hóa và khóa mã hóa.

• Một trong hai khóa có liên quan đến nhau được dùng để mã hóa, cònkhóa còn lại thì được dùng để giải mã

Trong mật mã khóa công khai, tất cả những người tham gia đều đượctruy cập để biết khóa công khai của nhau, và khóa riêng là chỉ được tạo bởimỗi cá nhân và do đó khóa riêng cần phải được giữ kín Khi nào khóa riêngcủa người dùng còn được bảo vệ bí mật, thông tin trao đổi là an toàn Tại bất

kì thời điểm nào, một hệ thống có thể thay đổi khóa riêng của nó và đưa rakhóa công khai khác để thay thể khóa cũ của nó

Mật mã hóa công khai có thể được ứng dụng trong bảo mật truyền tin vàchứng thực:

• Bảo mật trong truyền tin: bên A sẽ dùng khóa công khai của bên B để

mã hóa bản tin, bản mã này sẽ chỉ có thể giải được bằng khóa riêng củabên B (hình 1.1 a)

• Chứng thực: bên A kí lên tin cần gửi bằng cách mã hóa với khóa bí mậtcủa A và gửi bản tin này cho B Khi B muốn kiểm tra tính tin cậy củatin nhận được, B chỉ việc kiểm tra bàng việc dùng khóa công khai của

A để giải mã bản tin, nếu giải mã đúng thì bản tín đáng tin cậy (hình1.1 b)

Trang 11

a) Mã hóa với khóa công khai.

b) Chứng thực với khóa riêng.Hình 1.1 Mật mã khóa công khai [7]

Trang 12

1.1.1 Thuật toán mã hóa khóa công khai

a Các bước tiến hành trong quá trình mã hóa khóa công khai

(i) Mỗi người dùng tạo một cặp khóa để dùng cho mã hóa và giải mã

(ii) Mỗi hệ thống công bố rộng rãi khóa mã bằng cách đặt khóa vào mộtthanh ghi hay một file công khai Đây chính là khóa công khai, khóacòn lại được giữ riêng và bí mật

(iii) A muốn gửi cho B thì A phải mã hóa bản tin bằng khóa công khai của

B rồi gửi cho B, vì chỉ có B mới có khóa riêng được dùng để giải mãbản tin Khi A đã mã hóa bản tin bởi khóa công khai của B thì ngay cả

A cũng không thể giải mã được bản mã này khi chỉ biết khóa côngkhai của B

(iv) Khi B nhận được bản tin đã mã hóa từ A, B giải mã bằng khóa riêngcủa mình Không ai có thể giải mã được bản mã này bởi chỉ có B mới

có khóa riêng

b Mô hình đảm bảo tính tin cậy

Trong mô hình đảm bảo tính tin cậy, người nhận B sinh ra một cặpkhóa: khóa công khai PUB và khóa riêng PRB Khóa công khai PUB được công

bố cho tất cả các người dùng khác được biết, còn khóa riêng PRB thì chỉ có Bmới biết Khi người A muốn gửi bản tin cho B, A sẽ dùng khóa công khai củangười nhận B để mã hóa Chỉ có B sử dụng khóa riêng PRB của mình để giải

mã bản tin được

Với bản tin X và khóa PUB, người dùng A dùng một thuật toán mã hóa

E để tạo ra bản mã Y = {Y1,Y2,…,YN}:

Y = E(X,PUB)Người nhận B dùng thuật toán D để tạo lại bản tin X:

X = D(Y,PRB)

Trang 13

Mô hình mật mã khóa công khai dùng để bảo đảm độ tin cậy đượcmình họa trên hình 1.1a.

Mô hình mật mã này không đảm bảo được tính tin cậy vì bản tin truyền

đi mặc dù không thể bị thay thế (không ai có thể mã hóa bằng một khóa khác

mà dùng khóa công khai của A giải mã ra bản tin có nghĩa được), nhưng bất

kì ai cũng có thể dùng khóa công khai của A để giải mã và đọc được bản tinnày

Đê có thể đảm bảo được cả tính tin cậy thì phải sử dụng hai lớp mã hóa.Người gửi A mã hóa bản tin dùng khóa riêng của mình là PRA để mã hóa bảntin của mình (tạo ra chữ ký số) Sau đó, dùng khóa công khai PUB của B để

mã hóa lần hai cho bản mã đó Quá trình này yêu cầu bên nhận để giải mãđược chính xác bản mã thì cần phải có hai khóa: khóa riêng PRB của B vàkhóa công khai PUA của A để giải mã

Trang 14

Z = E(E(X,PRA),PUB)

X = D(D(Z,PRB),PUA)

Mô hình mật mã khóa công khai đảm bảo tính tin cậy và xác thực đượcminh họa trên hình 1.2

Hình 1.2 Mô hình mật mã khóa công khai đảm bảo tính tin cậy và xác thực

1.1.2 Các yêu cầu đối với mật mã khóa công khai

Hệ thống mật mã khóa công khai phụ thuộc vào thuật toán mã hóa dựatrên hai khóa có liên hệ với nhau Diffie và Hellman đã đòi hỏi hệ thống này

bỏ qua việc chứng minh sự tồn tại của thuật toán Tuy nhiên, họ đã đưa ra cácđiều kiện mà thuật toán đó phải đạt được

• Nó phải được tính toán dễ dàng cho bên B để khởi tạo một cặp khóa(khóa công khai PUb, khóa riêng PRb)

• Nó phải tính toán dễ dàng cho bên gửi A, việc biết khóa công khai vàbản tin M để mã hóa, để tạo ra từ mã tương ứng:

Trang 15

• Việc tính toán là không thể đối với kẻ địch khi biết khóa công khai vàbản mã để khôi phục bản tin gốc M.

Trên đây là các yêu cầu bắt buộc, như dấu hiệu cho thấy rằng chỉ mộtvài thuật toán là được chấp nhận sử dụng phổ biến trong một vài thời kì từ khimật mã khóa công khai được đưa ra

Các yêu cầu được đúc rút lại để cần cho một hàm cửa sập một chiều.Hàm một chiều là một hàm tương tự như mỗi hàm có một giá trị nghịch đảoduy nhất, với điều kiện phép tính của hàm là dễ dàng, nhưng trái lại phép tínhnghịch đảo là không thể:

Y = f(x) là dễ

X = f-1(Y) là không thể tính được

Nói cách khác, “dễ dàng” ở đây được xác đinh bởi một bài toán là nó

có thể giải quyết được trong một thời gian nhất định (có tính khả thi) Nếuhàm chiều dài đầu vào là n bit thì thời gian để tính tỉ lệ với na (a là hằng số).Nhằm đảm bảo tính bảo mật, người a sử dụng khóa có kích thước đủ lớn(thường là hàng trăm chữ số thập phân)

1.1.3 Các ứng dụng sử dụng mật mã khóa công khai

Tùy vào từng ứng dụng mà các người dùng có thể sử dụng hoặc khóariêng của mình hoặc khóa công khai của người nhận, hoặc cả hai khóa để thựchiện một số ứng dụng sau đây:

(i) Giữ bí mật bản tin giữa hai bên: người gửi mã hóa bản tin bằng khóacông khai của người nhận, người nhận dùng khóa riêng của mình đểgiải mã

(ii) Chữ ký số: người gửi mã hóa đoạn tên (ký tên / xác thực) bằng khóariêng của mình, người nhận dùng khóa công khai của người gửi để

Trang 16

giải mã bản tin Chữ ký được áp dụng tới đoạn tin hay với một khối

dữ liệu nhỏ mà được liên kết trong một số phương thức với đoạn tin

(iii) Trao đổi khóa: người gửi mã hóa bản tin hai lần, lần một là mã hóabản tin bằng khóa riêng của mình, lần hai là mã hóa liên tiếp bản mã

đã được mã trong lần một bằng khóa công khai của người nhận.Người nhận giải mã bằng khóa riêng của mình, sau đó dùng khóacông khai của người gửi để giải mã

1.1.4 Ưu điểm của mật mã khóa công khai

Ưu điểm nổi bật của mật mã khóa công khai so với mật mã khóa bí mật

là khóa có thể công bố công khai, không cần phải có một kênh liên lạc bí mật

để truyền khóa Người dùng có thể công bố khóa công khai của mình trên mộttrang công khai tin cậy nào đó cùng với các người dùng khác để có thể công

bố cho mọi người dùng khác biết Bất kỳ người dùng nào cũng có thể dùngkhóa công khai của bạn để mã hóa bản tin và gửi cho người nhận và chỉ cóngười nhận mới có thể đọc được chính xác bản tin đó (vì chỉ người nhận mới

có khóa để giải mã bản mã đó) Mật mã khóa công khai ngoài việc mã hóa,trao đổi bản tin, xác thực còn được dùng làm chữ ký số

1.2 Một số hệ mật mã khóa công khai quan trọng

Theo [3], chỉ một vài thuật toán mã hóa khóa công khai là an toàn vàthực tiễn Trong số đó, chỉ một số loại là thích hợp cho việc mã hóa Số khácchỉ thích hợp cho chữ kí số Trong số các thuật toán mã hóa khóa công khai,chỉ có 4 thuật toán là RSA (1978), ElGamal (1985), Schorr (1990) và ECC(1985) là được xem là thích hợp cho cả mã hóa và chữ ký số Một số thuậttoán mã hóa khóa công khai khác được thiết kế để chỉ thích hợp cho an toànchữ kí số là DSA (1991) Trong mục này, luận văn sẽ trình bày một số hệ mật

mã khóa công khai nổi tiếng như Diffie-Hellman, RSA, ElGama và thuật toán

Trang 17

mật mã đường cong Elliptic (ECC) sẽ được luận văn đề cập đến trong chương2.

1.2.1 Thuật toán Diffie-Hellman

Thuật toán Diffe-Hellman được đưa ra vào năm 1976 Thuật toán này

sử dụng phép tính lũy thừa mô-đun q (q là một số nguyên tố) như một thuậttoán trao đổi khóa Phép tính lũy thừa có ưu điểm là dễ dàng tính toán trêntrường hữu hạn GF(q) nhưng lại gặp rất nhiều khó khăn trong việc tính toánlogarit trên trường hữu hạn GF(q)

Thuật toán Diffie-Hellman có thể được mô tả như sau:

Gọi q là một số nguyên tố và α là một phần tử nguyên tố với q Sau đó,tính lũy thừa của α có thể tạo tất cả các giá trị nguyên từ 1 đến (q – 1) theomột thứ tự nào đó Với bất kì số nguyên Y được tạo bởi α mũ X được biểudiễn như sau:

Y ≡αX mod qTrong đó, 1 ≤ X ≤ q – 1

Sau đó, để có thể xác định được X thì phép tính logarit rời rạc theo α

Yi ≡αXi mod q

Trang 18

đến người dùng j Tương tự, người dùng j cũng gửi đi:

Yj ≡αXj mod qđến người dùng i

Thật vậy, cả hai người dùng i và j đã trao đổi một khóa bí mật từ Xi và

Xj là riêng, các tham số công khai là (q, α, Yi, Yj) Do đó, kẻ tấn công buộcphải thực hiện phép tính logarit rời rạc, điều mà được cho là không thực tế,khi mà số nguyên tố là rất lớn

Khi sử dụng trường hữu hạn GF(q), trong đó q là một số nguyên tố hay

q = pk (p là số nguyên tố, k là một số nguyên), là cần thiết để chắc chắn tham

số q – 1 là một số nguyên tố lớn, ngược lại thì nó có thể dễ dàng để có thể tínhđược phép tính logarit rời rạc trên trường GF(q)

Đây là thuật toán tiên phong trong việc sử dụng thuật toán trao đổikhóa và là sơ khai của hệ mật mã khóa công khai sau này

Trang 19

Hình 1 3 Lược đồ trao đổi khóa Diffie-Hellman [3].

1.2.2 Mật mã khóa công khai RSA

Thuật toán RSA được phát minh bởi Rivest, Schamir và Adleman vàonăm 1976, nó là thuật toán mã hóa khóa công khai đầu tiên và dựa trên thuậttoán Diffie-Hellman Thuật toán RSA sử dụng hai khóa: khóa công khai vàkhóa riêng Mỗi người dùng sẽ giữ cho mình một khóa riêng và khóa này là bímật Nếu khóa này sử dụng cho việc mã hóa thì khóa còn lại được sử dụngcho việc giải mã, bản tin đã bị mã hóa chỉ có thể được giải mã bằng khóa cònlại và ngược lại

Trang 20

Theo [1], cơ sở thuật toán dựa trên tính khó của bài toán phân tích các

số lớn thành tích các thừa số nguyên tố: không tồn tại thuật toán thời gian đathức (theo độ dài biểu diễn nhị phân của số đó) cho bài toán này Chẳng hạn,việc phân tích một số là tích của 2 số nguyên tó lớn hàng trăm chữ số có thể

sẽ mất hàng ngàn năm tính toán với một máy PC trung bình có CPU khoảngtrên 2Ghz

Thuật toán RSA được mô tả như sau:

Cho một khóa côn khai e và mô-đun n, khóa riêng d được sử dụng choviệc giải mã phải được tìm dựa trên n Chọn hai số nguyên tố lớn p và q, vàtìm mô-đun n được tìm bằng việc thực hiện phép nhân p và q:

n = p.qchọn khóa mã hóa e mà e và φ(n) là nguyên tố với nhau, nghĩa là gcd(e,φ(n))

= 1, trong đó φ(n) = (q – 1)(p – 1) được gọi là hàm Euler

Sử dụng thuật toán euclid, khóa riêng d thực hiện cho việc giải mã cóthể được tính toán bằng việc thực hiện phép tính nghịch đảo của e:

d ≡ e-1 mod φ(n) hoặc ed ≡ 1 mod φ(n)

Khóa giải mã d và n là có quan hệ nguyên tố với nhau Các số e và nđược gọi là các khóa công khai, trong khi đó d được gọi là khóa riêng

Để thực hiện mã hóa bản tin m, từ mã c tương đương với khối tin tức

có thể được tìm thấy sử dụng theo công thức mã hóa sau:

Trang 21

do ed ≡ 1 (mod φ(n)) theo định lý Euler.

Hình 1.4 Mô hình mã hóa/giải mã mật mã khóa công khai RSA [3]

Thuật toán RSA

Xây dựng: Chọn các tham số

1. Chọn hai số nguyên tố lớn p và q Tính n = p.q và φ(n) = (p – 1)(q – 1)

2. Chọn e, 1 ≤ e ≤φ(n) – 1 sao cho gcd(e, φ(n)) = 1

3. Tìm d sao cho e.d = 1 (mod φ(n))

Khóa công khai (PUb) là (e, n)

Trang 22

d.e = 1 (mod φ(n)) ⇒ d = 13.

Để mã hóa một chuỗi nhị phân, ta phải bẻ ra thành nhiều đoạn có độ dài

u bit, sao cho 2u ≤ 142 ⇒ u = 7 Mỗi đoạn như vậy sẽ là một số nằm trongkhoảng 0-127

Giả sử, ta cần mã hóa bản tin X = (0000010) = 2, ta có:

E(X) = X37 = 12 (mod 143) ⇒ Y = (00001100)

Giải mã như sau:

X = D(Y) = 1213 = 2 (mod 143)

1.2.3 Mật mã khóa công khai ElGamal

Thuật toán ElGamal có thể được dùng cho cả mã hóa và chữ ký số Anninh của mô hình ElGamal dựa vào độ khó của phép tính logarit rời rạc trênGF(q), trong đó q là một số nguyên tố lớn

Để mô tả hệ thống ElGamal, ta chọn một số nguyên tố lớn p và hai sốngẫu nhiên g và x thỏa mãn g < p và x < p, tại đó x là khóa riêng Số ngẫunhiên g là một số có căn hai nguyên tố với p Khóa công khai được xác địnhbởi (y, g, p) Sau đó, ta thực hiện phép tính y ≡ gx (mod p) Để mã hóa bản tin

m, 0 < m ≤ p – 1, đầu tiên đặt một số ngẫu nhiên k sao cho gcd(k, p – 1) = 1.Bản tin đã được mã hóa có thể được thực nhiện nhanh bởi cặp (r, s) như sau:

r ≡ gk (mod p)

s ≡ ykm (mod p)

Để giải mã m, chia s cho rx:

m = s/rx (mod p – 1)

Trang 23

Để kí lên một bản tin đã cho m, đầu tiên chọn một số ngẫu nhiên k màgcd(k, p – 1) = 1 và thực hiện m ≡ xr + ks (mod p – 1) dùng thuật toán Euclid

mở rộng để tìm s Kĩ thuật cơ bản cho việc mã hóa và kí sử dụng thuật toánElGamal như một hệ thống mật mã được mô tả như sau:

a Mã hóa ElGamal

Để tạo một cặp khóa, đầu tiên chọn một số nguyên tố p và hai số ngẫunhiên g và x sao cho g, x < p Sau đó tính:

y ≡ gx (mod p)Khóa công khai là (y, g, p) và khóa riêng là x < p

Để mã hóa bản tin m, 0 ≤ m ≤ p – 1, ta chọn một số ngẫu nhiên k saocho gcd(k, p – 1) = 1 Bản tin đã được mã hóa được tạo theo cặp (r, s):

r ≡ gk (mod p)

s ≡ ykm (mod p)Chú ý: kích thước của bản mã là gấp đôi kích thước của bản tin Để giải

mã bản tin, ta thực hiện phép chia s cho rx được biểu diễn như sau:

rx≡ (gk)x (mod p)s/rx≡ ykm/(gk)x≡ (gx)km/(gk)x ≡ m (mod p – 1)

Trang 24

Hình 1.5: Lưu đồ mã hóa ElGamal [3].

Ví dụ 1.2: p = 11, g = 3, x = 6 Ta được y = gx = 36 = 3 (mod 11) Khóa côngkhai là (p,g,y) = (11,3,3) còn khóa riêng là x = 6

Để mã hóa bản tin m = 6, ta chọn một số ngẫu nhiên k = 7 và tính:

r = gk = 37 = 9 (mod 11), s = 37.6 = 10 (mod 11)Bản mã là (r, s) = (9,10)

Để giải mã bản tin, dựa vào bản mã thu được (r,s) = (9,10) và khóariêng x = 6 ta giải mã như sau:

Trang 25

Bản tin kí cho m là cặp (r, s), với s được xác định như sau:

gm ≡ yrrs (mod p) = (gx)r(gk)s (mod p) = gxr+ks (mod p)

Trang 26

Ví dụ 1.3: p = 11, g = 7, x = 3 ta tính y = gx (mod p) = 73 (mod 11) = 2 Tađược khóa công khai (p, g, y) = (11, 7, 2) Để xác thực bản tin m = 6, ta chọnmột số ngẫu nhiên k = 7, ta được:

Theo [2], chữ ký số không phải là hình ảnh số hóa của một chữ ký tay,cũng không phải là một số nhận dạng cá nhân hay một mật khẩu, mà là một

bộ dữ liệu đính kèm vào một thông điệp điện tử Dữ liệu đính kèm này là mộtbản tóm lược toán học của thông điệp, được tạo bằng cách sử dụng mật mãkhóa công khai Do vậy, chữ ký số là khác biệt đối với mỗi người ký và mỗithông điệp

Một chữ ký số phụ thuộc vào khóa riêng của người ký và nội dung củabản ký và khóa này phải được một bên thứ ba có tính pháp lý và được hai bên

Trang 27

tin tưởng Các chữ ký số phải xác minh được, nghĩa là nếu như có tranh chấpxảy ra thì bên thứ ba có nhiệm vụ xác minh bản ký và giải quyết tranh chấpmột cách công bằng mà không cần biết khóa riêng của người ký Các tranhchấp có thể nảy sinh khi một người cố chối bỏ một chữ ký mà mình đã tạo ra,hoặc khi có một kẻ giả mạo đưa ra một chứng cứ gian lận.

1.3.1 Lược đồ chữ ký số

Một lược đồ chữ ký số thường được dùng bởi một người ký (signer) vàmột tập hợp người xác minh Người ký bắt đầu bằng việc khởi tạo một vàithuật toán tạo khóa để cung cấp một cặp khóa (PU, PR), trong đó PU là khóacông khai, PR là khóa riêng Người ký sau đó sẽ công bố khóa công khai củamình, ta giả thiết rằng bất kỳ người xác minh nào cũng có thể sở hữu một bảnsao chính xác của khóa công khai PU của người ký Ta có thể tưởng tượngrằng có một thư mục công khai mà có thể kết nối người ký đến khóa côngkhai của mình cũng như của những người khác và thư mục này được quản lýtheo cách mà nó không khả thi cho một người nào đó đăng ký một khóa côngkhai mà không phải của mình Tuy nhiên, nói chung sẽ có nhiều người ký, sởhữu khóa công khai của riêng họ, và vì vậy bất cứ người xác minh nào cũngphải biết không chỉ khóa công khai của mình mà còn phải biết khóa công khaithuộc về những người ký khác nữa mà chữ ký của họ cần phải được xác minh

Khi một người ký đã thiết lập một khóa công khai PU như trên, lược đồchữ ký số cho phép người ký chứng thực (ký lên) một bản tin theo cách màbất kỳ người nào – người biết khóa công khai của người ký cũng có thể xácminh rằng nguồn gốc của bản tin từ người ký là vẫn chưa bị thay đổi bằng bất

kỳ cách nào Cụ thể hơn, đối với bất kỳ bản tin m nào, người ký có thể ápdụng thuật toán ký lên m bằng khóa riêng PR của mình; việc này trả về một

Trang 28

chữ ký S có thể được xác minh bởi bất kỳ người nào biết khóa công khai và

sử dụng khóa công khai để xác minh nó

Giả thiết rằng bất kỳ bên thứ ba nào cũng có thể sở hữu một bản saohợp pháp khóa công khai của người ký, người ký có thể truyền tải ít nhất mộtbản tin tin vậy và được xác thực Vì vậy, ta có thể tự hỏi là tại sao lược đồ chữ

ký số là cần thiết cho tất cả? Vấn đề là việc phân phối tin cậy của khóa côngkhai PU là một nhiệm vụ khó, nhưng việc sử dụng một lược đồ chữ ký cầnchính là việc công bố ngay lập tức, sau đó một số không giới hạn các bản tin

có thể gửi thường xuyên và tin cậy Xa hơn nữa, lược đồ chữ ký tự bản thânchúng được dùng để đảm bảo phân phối tin cậy các khóa công khai khác nhưmột phần của cơ sở hạ tầng khóa công khai

1.3.2 Phân loại lược đồ chữ ký số

Lược đồ chữ ký số bao gồm một thuật toán tạo chữ ký số và thuật toánxác minh chữ ký số tương ứng Thuật toán tạo chữ ký số là phương pháp tạo

ra một chữ ký số Thuật toán xác minh chữ ký số là phương pháp để xác minhrằng một chữ ký số là đích thực (tức là thực sự đã được tạo bởi một thực thểnào đó)

Có hai loại lược đồ chữ ký số:

(i) Lược đồ chữ ký số kèm thông điệp (digital signature scheme

with appendix): Lược đồ này yêu cầu thông điệp nguồn như làđầu vào của thuật toán xác minh

(ii) Lược đồ chữ ký số khôi phục thông điệp (digital signature

scheme with message recovery): Lược đồ này không yêu cầuthông điệp nguồn nhu là đầu vào của thuật toán xác minh Trongtrường hợp này, thông điệp nguồn được khôi phục lại từ bản thânchữ ký

Trang 29

Các lược đồ chữ ký số cơ bản được phân theo bài toán khó là cơ sở cho

độ mật của chúng:

(i) Các lược đồ thừa số hóa số nguyên: lược đồ RSA, Rabin,… Độ

an toàn của các lược đồ này dựa trên độ khó giải của bài toánthừa số hóa số nguyên

(ii) Các lược đồ logarit rời rạc: sơ đồ ElGamal, Schnorr, DSA…Độ

an toàn của các lược đồ này dựa trên độ khó giải của bài toánlogarit rời rạc trên một trường hữu hạn

(iii) Các lược đồ trên đường cong Elliptic: Lược đồ ECDSA,

ECKCDSA… Độ an toàn của các lược đồ này dựa trên độ khógiải của bài toán logarit rời rạc trên đường cong Elliptic (bài toánECDLA)

(iv) Các lược đồ khác: lược đồ Feige-Fiat-Shamir, GQ… các lược đồ

này dựa trên các bài toán khó khác

1.3.3 Thuật toán chữ ký số (DSA)

Vào năm 1991, viện tiêu chuẩn và công nghệ quốc gia (NIST) Mỹ đã

đề xuất ra thuật toán chữ ký số (DSA) cho các ứng dụng chữ ký số liên bang

Họ đã đề xuất chuẩn chữ ký số (DSS) mới bằng việc sử dụng một lược đồ chữ

ký khóa công khai để xác minh tính toàn vẹn thông tin của dữ liệu mà ngườinhận nhận được và nhận diện người gửi dữ liệu

DSA cung cấp các ứng dụng thẻ thông minh cho chữ ký số Khóa khởitạo trên DSA là nhanh hơn trên RSA Việc tạo chữ ký có cùng tốc độ nhưRSA nhưng việc xác thực chữ ký là chậm hơn nhiều so với RSA

DSA dựa trên độ khó của việc tính toán logarit rời rạc và được bắtnguồn từ lược đồ được biểu diễn bởi ElGamal và Schnorr Khóa công khaibao gồm ba thông số (p,q,g) và được công bố chung cho nhóm người dùng.Chọn q có đô dài 160 bit và p có độ dài lớn hơn 512 và nhỏ hơn 1024 bit là số

Trang 30

nguyên tố sao cho q là một thừa số nguyên tố của (p – 1) Tiếp theo, chọn g >

1 để h’(p – 1)/q (mod p) sao cho h’ là một số nguyên thuộc khoảng giữa 1 và p –1

Với ba số này, mỗi người dùng chọn một khóa riêng x nào đó trong dải

1 < x < q – 1 và khóa công khai y được tính từ x:

y ≡ gx (mod p)

Để xác định được x từ y thì ta phải thực hiện hàm logarit rời rạc y với

cơ sở g (mod p) là quá khó để tính ra

Để ký lên một bản tin m, người gửi phải tính hai thông số là (r,s) dựavào các cặp số công khai (p,q,g) và khóa riêng x với bản rút gọn của bản tin m

là H(m) và một số k ngẫu nhiên (k < q) Tại bên nhận, việc xác minh dựa vàokhóa công khai y của người gửi để giải mã bản mã và đối chiếu với bản gốcđược trích ra từ bản tin m (H(m))

Khi hàm hash một chiều H hoạt động trên một bản tin m với một độ dàibất kỳ, một bản tin rút gọc có độ dài cố định (mã hash) h có thể được thựchiện sao cho h = H(m) Bản tin rút gọn h đến đầu vào tính toán DSA để tínhchữ ký cho bản tin m Việc ký lên bản rút gọn chính là việc ký lên bản tinthường tận dụng hiệu quả của việc xử lý chữ ký, vì bản tin rút gọn h thường

có kích thước nhỏ hơn bản tin chính m rất nhiều SHA là an toàn vì nó đượcthiết kế để không thể tính toán để khôi phục một bản tin tương đương như bảnrút gọn đã cho Bất kỳ sự thay đổi nào ở bản tin chính trong khi truyền sẽ đưa

ra một kết quả bản tin rút gọn khác và chữ ký sẽ lỗi khi xác thực Cấu trúc củathuật toán DSA được mô tả như trong hình 1.7

Trang 31

Hình 1 7: Lược đồ chữ ký số DSA[3].

Thuật toán ký DSA [3]:

(i) Tạo cặp khóa

p: là một số nguyên tố có độ dài từ 512 đến 1024 bit.g: là một thừa số nguyên tố của p – 1 có độ dài 160 bit

g ≡ h’(p – 1)/q (mod p) > 1 và h’ < p – 1

(p,q,g): là các thông số công khai

x < q: khóa riêng có độ dài 160 bit

y ≡ gx (mod p): khóa công khai có độ dài 160 bit

(ii) Thực hiện ký (bên gửi)

k < q: là một số ngẫu nhiên

r ≡ (gk mod p)(mod q)

Trang 32

s ≡ k-1(h + xr)(mod q), h = H(m) là hàm Hash một chiều của bản tin m.(r,s): là chữ ký.

Ví dụ 1.4 [3]: Chọn p = 23, q = 11 (q là thừa số nguyên tố của p – 1) Chọn h’

= 16 < p – 1, vậy g ≡ 162 (mod 23) ≡ 3 > 1 Chọn khóa riêng x = 7 < q và tính khóa công khai y ≡ gx (mod p) ≡ 37 (mod 23) ≡ 2

1.3.4 Ưu điểm của chữ ký số

Việc sử dụng chữ ký số mang lại nhiều ưu điểm khi cần xác định nguồngốc, tính toàn vẹn của thông tin trong quá trình truyền tin trên mạng côngcộng

Trang 33

(i) Khả năng xác định nguồn gốc: Các hệ mật mã hóa khóa công

khai cho phép xác định nguồn gốc của bản tin bằng việc sử dụngkhóa riêng – chỉ người chủ của nó mới có thể dùng để tạo chữ kýcho bản tin

(ii) Tính toàn vẹn: khi người dùng tham gia vào quá trình trao đổi tin

tức trên đường truyền công cộng thì hoàn toàn có thể tin tưởng làbản tin không bị thay đổi trong khi truyền Vì nếu như văn bảnnày bị thay đổi thì khi dùng khóa công khai của người ký giải mãbản ký thì sẽ không khớp với bản chính vì chỉ có người ký mới

có thể tạo chữ ký chính xác cho bản tin bằng khóa riêng củamình

một văn bản nào đó là do mình gửi Để ngăn ngừa việc này, bênnhận sẽ yêu cầu bên gửi phải kèm theo một chữ ký số tương ứngcho văn bản số đó Khi có tranh chấp xảy ra, người nhận sẽ sửdụng chữ ký này như một chứng cứ để bên gửi không thể phủnhận được văn bản đã ký

1.4 Kết luận chương

Trong chương này, luận văn đã trình bày tổng quan về mật mã khóacông khai và chữ ký số Theo đó, mật mã khóa công khai là một phần khôngthể thiếu được trong chữ ký số để đảm bảo tính xác thực và không thể chối bỏcủa chữ ký số Bằng việc dùng hai khóa (khóa công khai và khóa riêng) để mãhóa và xác thực bản tin, thuật toán mật mã khóa công khai đã tạo ra một quytrình khép kín và phù hợp với chữ ký số

Ngoài ra, trong chương này luận văn cũng đã đưa ra một số thuật toán

mã hóa khóa công khai được sử dụng phổ biến hiện nay Các hệ mật mã nàyđều có một đặc điểm chung là dựa trên độ khó của phép tính logarit rời rạc

Trang 34

trên trường hữu hạn GF(p) (hay Fp) để tăng độ khó trong việc giải mã củamình Tiếp theo, trong chương 2 luận văn sẽ trình bày một thuật toán mã hóakhóa công khai dựa trên đường cong elliptic – một hệ mật mà được biết là antoàn hơn thuật toán RSA rất nhiều trong khi lại sử dụng khóa ngắn hơn.

Trang 35

CHƯƠNG 2: HỆ MẬT DỰA TRÊN ĐƯỜNG CONG ELLIPTIC 2.1 Cơ sở toán học

2.1.1 Trường hữu hạn

Một trường hữu hạn bao gồm một tập hợp hữu hạn các phần tử F cùngvới hai phép toán nhị phân trên F là phép cộng và phép nhân thỏa mãn cáctính chất số học nào đó Bậc của trường hữu hạn là số lượng các phần tử trongtrường Tồn tại một trường hữu hạn bậc q khi và chỉ khi q là lũy thừa của một

số nguyên tố Nế q là lũy thừa của một số nguyên tố thì về cơ bản là chỉ cómột trường hữu hạn bậc q; trường này được kí hiệu là Fq (hay GF(q)) Tuynhiên, có nhiều cách để biểu diễn các phần tử của Fq Một vài phép biểu diễn

có thể dẫn đến việc thực hiện hiệu quả hơn các phép toán học trên phần cứnghay trong phần mềm

Nếu q = pm, trong đó p là số nguyên tố và m là một số nguyên dươngthì p được gọi là đặc trưng của Fq Hầu hết các chuẩn mà chọn kỹ thuật mật

mã hóa đường cong elliptic giới hạn bậc trên trường hữu hạn là nguyên tố (q

= p) hay lũy thừa của 2 (q = 2m)

a. Trường hữu hạn Fp

Gọi p là một số nguyên tố Trường hữu hạn Fq được gọi là một trườngnguyên tố là sự kết hợp của các số nguyên {0,1,2,…,p – 1} với các phép sốhọc sau:

• Phép cộng: Nếu a, b ∈ Fq thì a + b = r, trong đó r là số dư khi a + b chiacho p và 0 ≤ r ≤ p – 1 Đây là phép cộng mô-đun p

• Phép nhân: Nếu a, b ∈ Fq thì a.b = s, trong đó s là số dư khi a.b chia cho

p và 0 ≤ s ≤ p – 1 Đây là phép nhâ mô-đun p

Trang 36

• Phép nghịch đảo: Nếu a là một phần tử khác 0 trên Fq, nghịch đảo của amô-đun p được ký hiêu là a-1 là số nguyên duy nhất c ∈ Fq sao cho a.c =1.

Trang 37

Các phép toán trên trường được định nghĩa trên các phần tử thuộc khibiểu diễn dưới dạng đa thức với đa thức f(x):

• Phép cộng: Nếu a = (am-1…a1a0) và b=(bm-1…b1b0) là các phần tử thuộcthì a + b = c = (cm-1…c1c0), trong đó ci = (ai + bi) mod 2

• Phép nhân: Nếu a = (am-1…a1a0) và b=(bm-1…b1b0) là các phần tử thuộcthì a.b = r = (rm-1…r1r0), trong đó đa thức rm-1xm-1 +…+ r1x + r0 là phần

dư khi đa thức chia cho f(x) trên F2

• Phép nghịch đảo: Nếu a là một phần tử khác 0 trên , nghịch đảo của ađược ký hiệu là a-1 là phần tử duy nhất c ∈ sao cho a.c = 1

Ví dụ 2.1: Các phần tử thuộc có 16 đa thức nhị phân có bậc cao nhất là 3:

- Phép nghịch đảo: (z3 + z2 + 1)-1 = z2 vì (z3 + z2 + 1).z2 mod (z4 + z + 1) = 1

2.1.2 Đường cong Elliptic trên trường hữu hạn F p

Đặt p > 3 là một số nguyên tố Một đường cong elliptic E trên Fp đượcđịnh nghị bởi phương trình dạng:

Trong đó, a, b ∈ Fp và 4a3 + 27b2 ≠ 0 (mod p) bao gồm tất cả các điểm(x,y), x ∈ Fp thỏa mãn công thức 2.3 cùng với điểm đặc biệt O gọi là điểm ở

vô cực

Trang 38

Ví dụ 2.1: Đường cong elliptic trên F23, p = 23 và đường cong E có dạng: y2 =

x3 + x + 4 trên F23 (thỏa mãn 4.13+27.42 = 436 = 22 mod 23 ≠ 0) Ta có cácđiểm (x,y) trên E(F23) như sau:

(0,2) (0,21) (1,11) (1,12) (4,7) (4,16) (7,3)(7,20) (8,8) (8,15) (9,11) (9,12) (10,5) (10,18)(11,9) (11,14) (13,11) (13,12) (14,5) (14,18) (15,6)(15,17) (17,9) (17,14) (18,9) (18,14) (22,5) (22,19)

Công thức cộng:

Có một quy tắc được gọi là “chord-and-tangent” cho việc cộng haiđiểm trên đường cong elliptic E(Fp) để tính ra điểm trên đường elliptic thứ 3.Cùng với phép toán cộng này, tập hợp các điểm E(Fp) tạo thành một nhómcùng với O phục vụ như nhận dạng Nghĩa là nhóm này được sử dụng trongcấu trúc hệ mật mã đường cong elliptic Quy tắc cộng được mở rộng tốt nhất

về phương diện hình học Đặt P = (x1,y1) và Q = (x2,y2) là hai điểm khác nhautrên đường cong elliptic E thì tổng của P và Q được ký hiệu là R = (x3,y3)được định nghĩa như sau:

Đầu tiên, vẽ đường thẳng đi qua P và Q; đường này cắt đường congelliptic tại một điểm thứ 3 Sau đó, R là điểm phản xạ của điểm này qua trục

x, điều này được biểu diễn qua hình 2.1 Đường cong elliptic trên hình nàygồm 2 phần, phần giống hình ellip và phần cong vô hạn

Nếu P = (x1,y1) thì gấp đôi P được kí hiệu là R = (x3,y3) được địnhnghĩa như sau:

Đầu tiên, vẽ đường tiếp tuyến với đường cong elliptic tại điểm P.Đường này cắt đường cong elliptic tại điểm thứ hai Sau đó, R là điểm phản

xạ của điểm này qua trục x được biểu diễn qua hình 2.2

Trang 39

Hình 2.1: Mô tả hình học của phép cộng hai điểm khác nhau trên đường cong

Ngày đăng: 29/10/2016, 13:04

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w