Tải bản đầy đủ (.doc) (48 trang)

Ứng dụng chữ ký điện tử trong giao dịch thương mại điện tử

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (290.69 KB, 48 trang )

Chuyên Đề Tốt Nghiệp Ứng Dụng Chữ Ký Điện Tử
LỜI MỞ ĐẦU
Ngày nay với sự phát triển vượt bậc của khoa học, công nghệ thông tin
được ứng dụng rộng rãi trong hầu hết mọi lĩnh vực của xã hội. Bắt đầu là từ
quân sự, dần dần đưa vào trong mọi hoạt động đời sống của quần chúng, từ
vui chơi giải trí, đến giao dịch kinh tế…
Khoa học hiện đại đưa Công nghệ thông tin vào đời sống, từ máy tính
cá nhân đến mạng truyền tin trên toàn thế giới. Tuy nhiên, hầu hết mọi sự
vật hiện tượng đều mang tính 2 mặt của nó, có sự ưu việt nhưng bên cạnh đó
cũng có những mặt tiêu cực của nó. Với hệ thống mạng máy tính toàn cầu
như hiện nay, sự thất thoát thông tin do sự cạnh tranh của đối thủ hay sự phá
hoại của những hacker đã làm ảnh hưởng không nhỏ tới lợi ích của cá nhân
người dùng cũng như của cộng đồng tập thể sử dụng nào đó. Để đảm bảo
được tài khoản cá nhân không bị thất thoát hay coppy thì người ta đã có
nhiều giải pháp để hạn chế hay chống lại những hacker máy tính đó. Chữ ký
điện tử là một trong những giải pháp đó.
Thấy rằng, chữ ký điện tử là một tiện ích không thể bỏ qua trong thế
giới tin học, đặc biệt là trong các giao dịch liên quan đến sự bảo đảm an toàn
thông tin, đặc biệt là trong Giao dịch thương mại điệnt tử. Vì vậy, em đã
chọn đề tài “Ứng dụng chữ ký điện tử trong giao dịch thương mại điện
tử ” để nghiên cứu. Đề tài gồm:
Chương 1: Tổng quan về giao dịch điện tử và bảo mật trong thương
mại điện tử.
Chương 2: Xây dựng công cụ mã khoá công khai RSA.
Chương 3: Xây dựng chữ ký điện tử.
Kết luận.
Tài liệu tham khảo.
SVTH: Nguyễn Thị Bích Nguyệt GVHD: Th.S Nguyễn Quỳnh
Mai
Chuyên Đề Tốt Nghiệp Ứng Dụng Chữ Ký Điện Tử
CHƯƠNG 1: TỔNG QUAN VỀ GIAO DỊCH ĐIỆN TỬ


VÀ BẢO MẬT TRONG THƯƠNG MẠI ĐIỆN TỬ
1.1 THƯƠNG MẠI ĐIỆN TỬ LÀ GÌ?
Thương mại điện tử tiếng Anh là Electronic Commerce hay thường viết
tắt là eCommerce. Khi nói đến thương mại điện tử là người ta nghĩ ngay đến
việc sử dụng Internet trợ giúp cho công việc kinh doanh. Trên thực tế,
thương mại điện tử có vai trò quan trọng hơn nhiều.
Trước hết, thuật ngữ thương mại điện tử chỉ mới được sử dụng
khi có một số người đã thực hiện được việc bán qua mạng Internet bằng
cách trả tiền bằng một loại tiền đã được mã hoá.
Vậy thương mai điện tử chỉ có thể thực hiện được qua Internet hay hệ thống
các máy tính nối mạng?. Đúng vậy, nhưng không phải giao dịch nào trên
Internet cũng được gọi là thương mại điện tử.
Thương mại điện tử là hình thức thương mại (quảng cáo, tiếp thị, mua
bán, trao đổi hàng hoá, thanh toán, bảo lãnh…) thông qua các phương tiện
thông tin và mạng máy tính điện tử, chủ yếu là sử dụng các mạng Internet và
Intranet
1.2 PHƯƠNG DIỆN KỸ THUẬT CỦA THƯƠNG MẠI ĐIỆN TỬ
Mục tiêu cuối cùng của mọi cuộc mua bán là người mua nhận được
hàng và người bán nhận được tiền trả cho số hàng đó. Thanh toán vì thế là
khâu quan trọng nhất của thương mại và thương mại điện tử thông qua các
hệ thống thanh toán điện tử và chuyển tiền điện tử mà bản chất là các
phương tiện tự động chuyển tiền từ tài khoản này sang tài khoản khác( nay
đã xuất hiện cả hình thức chuyển tiền mặt thông qua các “túi tiền điện tử”:
electronic purse)
SVTH: Nguyễn Thị Bích Nguyệt GVHD: Th.S Nguyễn Quỳnh
Mai
Chuyên Đề Tốt Nghiệp Ứng Dụng Chữ Ký Điện Tử
Thanh toán điện tử sử dụng rộng rãi trong các máy rút tiền tự động
(ATM: Automatic Teller Machine), thẻ tín dụng (credit card) các loại thẻ
mua hang (purchasing card), thẻ thông minh (smart card : là loại thẻ có gắn

chip điện tử mà thực chất là một máy tính điện tử rất nhỏ)v.v…
Internet và Web
Năm 1995, Inter net chính thức được công nhận là mạng toàn cầu,
một máy tính có địa chỉ Internet kết nối tới ISP (Internet Service Provider)
vào Internet là có thể giao tiếp tới nhiều máy tính kết nối Internet khác trên
khắp toàn cầu trên cơ sở giao thức chuẩn quốc tế TCP/IP. Công nghệ
Internet chỉ thực sự trở thành công cụ đắc lực khi áp dụng giao thức chuẩn
quốc tế HTTP (HyperText Transfer Protocol: Giao thức chuẩn truyền siêu
văn bản) với các trang siêu văn bản tạo ra nhiều dịch vụ khác nhau mà dịch
vụ hiện nay được sử dụng rộng rãi nhất là dịch vụ World Wide Web –
WWW. Bằng dịch vụ Web, người sử dụng đọc được các thông tin và truyền
từ nơi này tới nơi khác trên cơ sở giao thức truyền tệp FTP (File Transfer
Protocol), giao thức chuẩn thư tín POP (Post Office Protocol), giao thức
chuẩn truyền thông điệp đơn giản SMTP (Simple Message Transfer
Protocol), giao thức chuẩn truyền tin qua mạng NNTP (Net News Transfer
Protocol).
Các trình duyệt Web phổ biến hiện nay là Netscape Navigator,
Microsoft Internet Exploer…
Internet tạo ra bước phát triển mới của ngành truyền thông, chuyển từ thế
giới một mạng, một dịch vụ sang thế giới một mạng đa dịch vụ và trở thành
công cụ quan trọng nhất trong thương mại điện tử.
SVTH: Nguyễn Thị Bích Nguyệt GVHD: Th.S Nguyễn Quỳnh
Mai
Chuyên Đề Tốt Nghiệp Ứng Dụng Chữ Ký Điện Tử
1.2.1 Thư tín điện tử
Các đối tác ( người tiêu thụ, doanh nghiệp, các cơ quan Chính phủ) sử
dụng hòm thư điện tử để gửi thu cho nhau một cách “ trực tuyến” thông qua
mạng, gọi là thư tín điện tử(electronic mail, gọi tắt là email). Đây là một loại
thông tin ở dạng “phi cấu trúc” (unstructured form), nghĩa là thông tin phải
tuân thủ một cấu trúc đã thoả thuận (khác với “trao đổi dữ liệu điện tử”)

1.2.2 Thanh toán điện tử
Thanh toán điện tử (electronic payment) là việc thanh toán tiền thông
qua thông điệp điện tử (electronic message) thay cho việc giao tay tiền mặt;
việc trả lương bằng cách chuyển trực tiếp tiền và tài khoản, trả tiền mua
hàng bằng thẻ mua hàng, thẻ tín dụng v.v… đã quen thuộc từ lâu nay thực
chất là các dạng thanh toán điện tử. Ngày nay, với sự phát triển của thương
mại điện tử, thanh toán điện tử đã mở rộng sang các lĩnh vực mới; đáng đề
cập là :
1.2.2.1 Trao đổi dữ liệu tài chính (Financial Electronic Data
Interchange, gọi tăt là FEDI)
Chuyên phục vụ cho việc thanh toán điện tử giữa các công ty
giao dịch với nhau bằng điện tử.
1.2.2.2 Tiền mặt Internet (Internet Cash)
Là tiền mặt được mua từ một nơi phát hành (ngân hàng hay một tổ
chức tín dụng), sau đó được chuyển đổi tự do sang các đồng tiền khác thông
qua Internet, áp dụng cả trong phạm vi một nước cũng như giữa các quốc
gia; tất cả đều được thực hiện bằng kỹ thuật số hoá – digital cash, công nghệ
đặc thù chuyên phục vụ mục đích này có tên gọi là “ mã hoá công khai/bí
mật” ( Public/Private Key Cryptography). Tiền mặt Internet được người mua
hàng mua bằng tiền nội tệ, rồi dùng Internet để chuyển cho người bán hang.
SVTH: Nguyễn Thị Bích Nguyệt GVHD: Th.S Nguyễn Quỳnh
Mai
Chuyên Đề Tốt Nghiệp Ứng Dụng Chữ Ký Điện Tử
Thanh toán bằng tiền mặt Internet đang trên đà phát triển do có nhiều ưu
điểm nổi bật:
Có thể dùng cho thanh toán những món hàng có giá trị lớn nhỏ đều được.
Không đòi hỏi phải có một quy chế được thoả thuận từ trước, có thể
tiến hành giữa hai người hoặc hai công ty bất kỳ, các thanh toán vô danh;
Tiền mặt được nhận được đảm bảo là tiền thật, tránh được nguy cơ tiền giả.
1.2.2.3 Túi tiền điện tử (Electronic Purse)

Là nơi để tiền mặt Internet mà chủ yếu là thẻ khôn minh (smart card,
còn gọi là thẻ giữ tiền : store value card), tiền được trả cho bất cứ ai đọc
được thẻ đó; kỹ thuật của túi tiền điện tử cũng giông như ký thuật áp dụng
cho “ tiền mặt Internet” đó chính là kỹ thuật “mã hoá công khai/bí mật”
1.2.2.4 Thẻ thông minh (Smart Card)
Cũng giống như thẻ tín dụng, nhưng ở mặt sau thay vì dải từ là một
chíp máy tính điện tử có một bộ nhớ nhỏ để lưu trữ tiền số hoá, tiền đó chỉ
được “chi trả” khi người sử dụng và thông điệp (ví dụ xác nhận thanh toán
hoá đơn) được xác thực là đúng. Thông tin được xác thực là khác nhau
1.2.2.5 Giao dịch ngân hàng số hóa (Digital Baking)
Hệ thống thanh toán điện tử của ngân hàng là một đại hệ thống, gồm
nhiều tiểu hệ thống như: thanh toán giữa ngân hàng với khách hàng, thanh
toán giữa ngân hàng với các đại lý thanh toán, thanh toán nội bộ ngân hàng,
thanh toán giữa hệ thông ngân hàng này với hệ thống ngân hàng khác.
1.3 GIAO DỊCH TRONG THƯƠNG MẠI ĐIỆNTỬ
1.3.1 Khái niệm giao dịch Thương mại điện tử (Electronic Commerce
Transaction)
Thương mại được hiểu theo Đạo luật mẫu về thương mại của Liên
hiệp quốc bao gồm bốn kiểu :
Người với người: Qua điện thoại, máy Fax và thư điện tử (Email)
SVTH: Nguyễn Thị Bích Nguyệt GVHD: Th.S Nguyễn Quỳnh
Mai
Chuyên Đề Tốt Nghiệp Ứng Dụng Chữ Ký Điện Tử
Người với máy tính điện tử: Trực tiếp hoặc qua các mẫu biểu điện
tử(electronic form), và qua WWW
Máy tính điện tử với máy tính điện tử: qua trao đổi dữ liệu điện tử, thẻ khôn
minh, các dữ liệu mã hóa bằng mã vạch
Máy tính điện tử với người: Qua thư tín do máy tính tự động sản ra, máy
Fax, và thư điện tử.
1.3.2 Các bước giao dịch điện tử

Khi tiến hành giao dịch kinh doanh trên mạng và chấp nhận thanh
toán bằng thẻ tín dụng, người dùng phải trải qua những bước sau:
Người bán cung cấp đơn đặt hàng tại một địa chỉ website bảo mật SSL
(Secure Socket Layer).
Khách hàng chọn những mặt hàng họ cần và điền vào thẻ tín dụng và
những thông tin liên lạc, thông tin về sản phẩm.
Một màn hình hiện lên với đầy đủ mọi thông tin, cho phép khách xác
nhận đơn đặt hàng và xem tất cả các dữ liệu được nhập vào.
Máy chủ website đưa thông tin đến dịch vụ kiểm tra thanh toán thẻ tín
dụng để đối chiếu địa chỉ của khách hàng trên đơn đặt hàng có khớp với điạ
chỉ của người giữ thẻ hay không và xem hạn mức tín dụng của thẻ. Nếu như
tất cả các thông tin đều đúng và thẻ không bị lỗi, thì quá trình thanh toán sẽ
được thực hiện trong vài giây.
Nếu phần mềm shopping cart cho phép, một biên lai kiểm tra xác thực
việc mua hàng được gửi bằng email sẽ gửi đến cho khách hàng.
Sau đó người bán xử lý đơn đặt hàng và hàng được gửi đi.
Trung tâm thanh toán thẻ gửi thông báo dịch vụ kiểm tra thẻ tín dụng
là hàng vừa được gửi đi. Người bán không thu tiền trực tiếp từ người mua và
chi phí mua hàng được tính vào tài khoản của người giữ thẻ cho đến khi
hàng được chuyển đi.
SVTH: Nguyễn Thị Bích Nguyệt GVHD: Th.S Nguyễn Quỳnh
Mai
Chuyên Đề Tốt Nghiệp Ứng Dụng Chữ Ký Điện Tử
Dịch vụ kiểm tra thẻ tín dụng gửi yêu cầu thanh toán tới ngân hàng
phát hành thẻ.
Ngân hàng phát hành thẻ chấp nhận chuyển tiền tới ngân hàng của
người bán. Thông thường trong vũng 48 đến 72 giờ, tiền tự động được
chuyển vào tài khoản ngân hàng của người bán từ tài khoản ngân hàng của
người mua
1.4 BẢO MẬT TRONG GIAO DỊCH ĐIỆN TỬ

1.4.1 Khái niệm về bảo mật
1.4.1.1 Bảo mật là gì ?
Bảo mật là một bộ phận của khoa học máy tính, nó bảo vệ dữ liệu và
hệ thống máy tính để những người không được phép sẽ không thể đột nhập,
xem trộm, sao chép hay sử dụng được.
1.4.1.2 Các thuật ngữ thường dùng
Người gửi (Sender): là người muốn gửi một thông điệp tới một hay
một số người khác.
Người nhận (Receiver): là người nhận được thông điệp do người khác
gửi tới.
Sự mã hoá (Encryption): là quá trình nguỵ trang một thông điệp theo
một cách nào đấy làm ẩn đi nội dung của nó.
Sự giải mã (Decryption): là quá trình khôi phục lại bản rõ từ bản mã.
Bản rõ(Plaintext hay Cleartext): là thông điệp chưa được mã hoá hay
đã được giải mã.
Bản mã (Ciphertext): là thông điệp đã được mã hoá.
Mật mã (Crytography): là nghệ thuật và khoa học của việc bảo vệ an
toàn cho các thông điệp.
Phân tích mã (Cryptanalysis): là nghệ thuật và khoa học của việc bẻ mã, là
nhìn qua được sự nguỵ trang.
SVTH: Nguyễn Thị Bích Nguyệt GVHD: Th.S Nguyễn Quỳnh
Mai
Chuyên Đề Tốt Nghiệp Ứng Dụng Chữ Ký Điện Tử
1.4.2 Nhiệm vụ của bảo mật
1.4.2.1 Bảo mật vệ cái gì?
1.4.2.1.1 Bảo vệ dữ liệu
Hệ thống máy tính cần được bảo vệ do các yêu cầu sau:
Tính bảo mật: Các thông tin về kinh tế, chính trị, quân sự, công
nghệ cần giữ bí mật.
Tính toàn vẹn: Do các thông tin của hệ thống máy tính được dùng

chung nên đôi khi có thể bị thay đổi mất mát.
Tính kịp thời: Thông tin cần cung cấp một cách kịp thời khi cần thiết.
1.4.2.1.2 Bảo vệ tài nguyên
Trên thực tế khi kẻ tấn công xâm nhập được vào một hệ thống hắn sẽ
khống chế và sử dụng hệ thống đó để đánh cắp thông tin, mật khẩu đồng
thời sử dụng tài nguyên vào các mục đích đen tối khác.
1.4.2.1.3 Bảo vệ uy tín
Trong nhiều trường hợp các tổ chức hay công ty biết mình bị tấn công
nhưng không dám thông báo vì sợ bị mất uy tín. Vì vậy những cuộc tấn công
được biết chỉ là phần nổi của một tảng băng chìm mà thôi
1.4.2.1.4 Chống gian lận
Việc gian lận về văn bản điện tử dễ dàng hơn nhiều so với văn bản
giấy tờ. Do đó bảo mật đóng vai trò đặc biệt quan trọng khi mà thương mại
điện tử ngày càng được sử dụng rộng rãi.
1.4.3 Các phương thức bảo mật
1.4.3.1 Bảo vệ tại nơi lưu trữ
-Bảo mật truy nhập mạng (Login security)
-Bảo mật dịch vụ thư mục mạng (NDS security)
-Bảo mật hệ thống file (File system security)
SVTH: Nguyễn Thị Bích Nguyệt GVHD: Th.S Nguyễn Quỳnh
Mai
Chuyên Đề Tốt Nghiệp Ứng Dụng Chữ Ký Điện Tử
-Bảo mật hệ thống file quyết định đến thao tác của người sử dụng đối
với các file và thư mục trên ổ đĩa mạng.
-Sao lưu ổ đĩa.
1.4.3.2 Bảo vệ trên đường truyền
Vật lí
-Bảo vệ các thông tin được truyền đi chống lại những hành động xâm
nhập để lấy cắp, sửa chữa hay thay đổi thông tin trên đường truyền.
Thuật toán

- Dùng các thuật toán để mã hoá thông tin
- Các hệ thống bảo mật khác nhau có các mức an toàn khác nhau tuỳ
thuộc vào độ khó để có thể bẻ chúng. Tất cả các thuật toán về lí thuyết là có
thể bẻ được miễn là có đủ thời gian và tài nguyên máy tính .
- Các thuật toán được coi là an toàn nếu giá trị về tiền bạc và thời gian
để bẻ nó lớn hơn giá trị về giữ liệu mà nó mã hoá.
- Một số thuật toán chỉ có thể bẻ được với chi phí thời gian lớn hơn
thời gian tồn tại của vũ trụ trên một máy tính lớn hơn tất cả vật chất có
trong vũ trụ. Những thuật toán như vậy về lí thuyết là có thể bẻ được nhưng
nó không thể bẻ được trong thực tế.
SVTH: Nguyễn Thị Bích Nguyệt GVHD: Th.S Nguyễn Quỳnh
Mai
Chuyên Đề Tốt Nghiệp Ứng Dụng Chữ Ký Điện Tử
CHƯƠNG 2: XÂY DỰNG CÔNG CỤ MÃ KHOÁ
CÔNG KHAI RSA
2.1 . GIỚI THIỆU VỀ HỆ MÃ CÔNG KHAI
Ngày nay, nhu cầu sử dụng mạng máy tính trong trao đổi thông tin của
con người ngày càng tăng, tất nhiên người sử dụng hệ thống đều muốn có
cái gì đó là của riêng mình, các thông tin đến và đi phải đẩm bảo an toàn bí
mật. Một hệ thống có sử dụng hệ mật mã cổ điển sẽ dẫn đến một bài toàn
phân phối khoá nặng nề cho người sử dụng. Có thể hình dung bài toán đó
qua ví dụ sau:
Giả sử có 4 người sử dụng A,B,C và D trong hệ thống muốn trao đổi
thông tin thông qua các kênh:
*Kênh là đường truyền cho thông tin đi qua, trong một môi trường cá
nhân thì kênh là đường truyền chống lại được sự xâm nhập từ bên ngoài.
A và B muốn trao đổi thông tin cho nhau mà C, D không thể truy nhập được.
A và C muốn liên lạc với nhau mà B, D không truy nhâpj được.
Với BC, BD và CD cũng có yêu cầu tương tự.
Để giữ được tính huống này cần phải có 6 khoá kAB, kAC, kAD, kBC,

kBD, kCD. Nếu đặt thêm người sử dụng thứ năm E thì cần phải có thêm 4
khoá cho E và từng người trước đó. Sau đó lại thêm người F vào hệ thống
dẫn tới cần phải có thêm 5 khoá riêng biệt khác nữa.
Như vậy, với một hệ thống có n người sử dụng thì khi thêm một người
cần phải có thêm n khoá. Một hệ thống có n người sử dụng đòi hỏi phải có
số khoá ít nhất:
n n*( )−1
2
kho¸
SVTH: Nguyễn Thị Bích Nguyệt GVHD: Th.S Nguyễn Quỳnh
Mai
Chuyên Đề Tốt Nghiệp Ứng Dụng Chữ Ký Điện Tử
Khi n tăng, tức số lượng người sử dụng tăng lên, số khoá tăng lên rất
nhanh, kém an toàn, rất khó khăn cho người sử dụng hệ thống vì họ phải nhớ
nhiều khoá như vậy.
Đối với hệ mã công khai thì thêm một người sử dụng cũng chỉ thêm có một
cặp khoá cho người đó. Hệ thống có n người sử dụng cũng chỉ có n cặp khoá
( 2*n khoá ).
So sánh hệ cổ điển và hệ công khai.
Như đã biết, hệ mật mã cổ điển đều có tính chất là biết được khoá lập
mã ek thì cũng biết luôn khoá giải mã dk. Nói đúng hơn dk có thể suy ra
ngay từ ek hoặc có thể tính toán từ ek mà không khó khăn lắm. Bởi vậy, nếu
sử dụng bất kỳ hệ mã cổ điển nào người sử dụng phải giữ bí mật khoá lập
mã ek. Nói cách khác, hệ mã cổ điển giống như việc sử dụng khoá chìa, hai
bên A và B đều phải có chìa giống nhau để đóng hay mở, chỉ có hai người
này mới sử dụng được khoá đó, còn hệ mã công khai giống như việc dùng
hòm thư riêng cho mỗi người, B hay ai muốn gửi gì cho A thì bỏ vào hòm
thư đó, sau đó A sẽ dùng chìa riêng để mở.
Như vậy với hệ mã công khai, bất kỳ người dùng nào cũng có thể liên
lạc với người khác mà không sợ lộ thông tin, lại vô cùng đơn giản.

2.2. CƠ SỞ THUẬT TOÁN MÃ HÓA CÔNG KHAI
Trong hệ thống mã công khai, mỗi người đều có một lập mã ek được
thông báo cho mọi người trên phương tiện thông tin chung.
Mỗi người cũng có một khoá bí mật riêng của mình dùng để giải mã dk,
khoá này không ai biết được ngoài người đó. Nếu có người khác muốn
chuyển thông báo W cho người đó thì anh ta sẽ tra khoá công khai của người
nhận, dùng khoá đó để mã thông điệp rồi gửi đi, ký hiệu thông điệp gửi đi là
ek(W). Khi đó, chỉ có người nhận, có khoá giải mã riêng , dùng khoá giải mã
và đọc thông điệp, nó có dạng : W=dk(ek(W)).
SVTH: Nguyễn Thị Bích Nguyệt GVHD: Th.S Nguyễn Quỳnh
Mai
Chuyên Đề Tốt Nghiệp Ứng Dụng Chữ Ký Điện Tử
Như vậy, về phương diện người thám mã có thể biết được ek nhưng
lại không thể biết được dk. Về nguyên tắc, có thể tính hàm ngược của ek là
dk, nhưng việc tính toán này rất khó ( có thể nói là không thể được, với hầu
hết các khoá K). Hàm ek có tính chất như vậy gọi là hàm một phía. Nhìn
chung, trong mọi trường hợp thì ek không nhất thiết phải là một hàm.
2.3. CÁC PHƯƠNG PHÁP TOÁN HỌC.
2.3.1. Số nguyên tố
Số nguyên tố là một số nguyên dương bất kỳ mà nó chỉ có thể chia hết
(giá trị dư bằng không) cho bản thân nó và số 1 (ta không tính đến số âm).
Ví dụ 3,4,7,11 và 13 là các số nguyên tố.
* Ước số chung lớn nhất (Greatest Common Divisor) của hai số a và b
là số nguyên lớn nhất c mà cả a, b đều chia hết cho c (c<a, c<b). Kí hiệu là:
gcd(a,b)=c, rõ ràng gcd(a,b)=gcd(b,a). Nếu p là số nguyên tố thì với q bất kỳ
(q<p) đều có gcd(p,q)=1.Phần sau chúng ta sẽ đề cập đến thuật toán Euclit
để tìm ước số chung lớn nhất của hai số.
* Cho p và r<p (r:bất kỳ), p là số nguyên tố nếu:
gcd(p,r)=1
J(r,p)≡r(p-1)/2 mod p

Hàm J(r,p) là hàm Jacobi được định nghĩa như sau:
J(r,p)=
1
2 1
1
2
1 8
1 1 4
r =1
r:ch½n
r:lÎ (r 1)
J r
J p r r
p
r p
( / ) * ( )
( mod , ) * ( )
( )/
( )*( )/

− ≠






− −
2.3.2. Phép toán mod
Mod là phép toán lấy phần dư sau khi chia, nếu a mod n=b, có:

a=c*n+b ( c:số nguyên)
Số học mod có một số tính chất sau:
SVTH: Nguyễn Thị Bích Nguyệt GVHD: Th.S Nguyễn Quỳnh
Mai
Chuyên Đề Tốt Nghiệp Ứng Dụng Chữ Ký Điện Tử
- Tính kết hợp: a+(b+c) mod n= (a+b)+c mod n
- Tính giao hoán:a+b mod n=b+a mod n
- Tính phân bố: a*(b+c) mod n= (a*b+a*c) mod n
- Tính rút gọn: (a+b) mod n= ((a mod n)+(b mod b)) mod n
(a*b) mod n= ((a mod n)*(b mod n)) mod n
Tính chất cuối cùng dẫn đến phép xử lý số mũ như sau:
ab mod n=
((a mob n)*(a mod n)* ) mod n
(b lÇn)
              
Lưu ý: Biểu thức a+b mod n được hiểu là (a+b) mod n chứ không phải a+(b
mod n).
2.3.3. Thuật toán Euclit
Thuật toán Euclit dùng để tìm ước số chung lớn nhất của hai số, tức là
số nguyên lớn nhất chia hết cả hai.
Giả sử x chia hết a và b, bởi vậy x chia hết a-(k*b) với mọi k.
Chứng minh:
Bởi vì x chia hết cho a và b nên a=x*a1, b=x*b1.
a-(k*b)=x*a1-(x*k*b1)
=x*(a1-k*b1)
=x*d
Vậy x chia hết a-(k*b).
Kết quả này dẫn tới một thuật toán tìm gcd như sau:
Giả sử, muốn tìm x là gcd của a và b (a>b), viết a dưới dạng:
a=m*b+r

(r là phần chia của phép chia m=a/b).
Nếu x=gcd(a,b) thì x chia hết a,b và x chia hết r. Vậy:
gcd(a,b)=gcd(b,r) với mọi a>b>r≥0
Tiến hành tương tự với b và r thay cho a, b để tìm gcd
SVTH: Nguyễn Thị Bích Nguyệt GVHD: Th.S Nguyễn Quỳnh
Mai
Chuyên Đề Tốt Nghiệp Ứng Dụng Chữ Ký Điện Tử
b=m’*r+r’
Với m’=b/r và r’ là số dư còn lại. Thuật toán này cứ tiếp tục cho tới khi giá
trị dư bằng 0, lúc đó tìm được gcd(a,b).
2.3.4. Định lý Fermat
Theo lý thuyết số, định lý Fermat cho một số nguyên tố p bất kỳ và
một phần tử bất kỳ a<p,
ap mod p=a
hay
ap-1 mod p=1
Kết quả này đưa đến một phép toán nghịch đảo. Cho p nguyên tố và a<p,
nghịch đảo của a là x với
a*x mod p =1
Kết hợp hai phương trình cuối:
a*x mod p=1=ap-1 mod p
a*x mod p=ap-1 mod p
Như vậy: x=ap-2 mod p.
Công thức này chỉ phù hợp với p là số nguyên tố và a<p
*Phương pháp tìm nghịch đảo modulo.
Theo cách tính toán thông thường, để tìm được nghịch đảo trong modulo số
học cần một thời gian rất dài để tính toán. Sau đây, chúng ta nghiên cứu một
thuật toán tương đối nhanh để có thể thực hiện được điều này trong thực tế.
Thuật toán tìm a-1(mod n)
1. Tìm kiếm thông qua 1 n-1 cho đến khi a-1 được tìm thấy sao cho

a*a-1 (mod n)= 1
2. Nếu ϕ(n) là được biết thì sử dụng thuật toán tính nhanh luỹ thừa
(giải thuật Ấn Độ):
a-1≡aϕ(n)-1 (mod n) cho câu trả lời.
SVTH: Nguyễn Thị Bích Nguyệt GVHD: Th.S Nguyễn Quỳnh
Mai
Chuyên Đề Tốt Nghiệp Ứng Dụng Chữ Ký Điện Tử
3. Nếu ϕ(n) là không biết thì sử dụng thuật toán Euclit mở rộng.
Ví dụ Sử dụng thuật toán Euclit để tìm gcd(5,23).
23=4*5+3, 5=1*3+2
3=1*2+1, 2=2*1+0
suy ra gcd(5,23)=1
Thuật toán để tìm nghịch đảo: Để giải quyết ax=b(mod n)
Đầu tiên giải quyết : ay=1 (mod n) thì tìm thấy x=yb
Ví dụ: Giải quyết 5x=9 (mod 23)
Đầu tiên 5y=1 (mod 23)
Đạt được y=4 và theo đó x=14*9=11(mod 23)
*Định lý: Nếu g=gcd(a,n) và gb, ( = 0(mod g)) thì ax=b (mod n) có lời
giải :
x
b
g
x t
n
g
n
= +

























0
(mod )
với t=0, g-1
Trong đó x0 là lời giải từ
a
g
x
n
g

























=
1 mod
nếu không có lời giải.
Chứng minh: Nếu ax≡b(mod n) có lời giải trong [1,n-1] thì a(ax-b), gn,
ga. Theo đó
a

g
x
n
g
























=
1 mod

có duy nhất lời giải x0 trong khoảng [1,n/g-
1]. Theo đó x1=
b
g
x
n
g
0
mod








là lời giải của
a
g
x
n
g
n
g























∈ −
mod ,1 1
.
Ta có
a
g
x
b
g
kn
1

đối với tài nguyên k.

SVTH: Nguyễn Thị Bích Nguyệt GVHD: Th.S Nguyễn Quỳnh
Mai
Chuyên Đề Tốt Nghiệp Ứng Dụng Chữ Ký Điện Tử
Phép nhân bởi g cho ta: ã1-b=k’n. Vậy x1 là lời giải của ax≡b (mod n).
Nhưng bất cứ x thuộc [1,n-1] -> x=x1+t[n/g], t=0, g-1
* Định lý: giải sử p1, p2, pr là cặp (pairwise) liên quan số nguyên tố. Cho
n=p1p2 pr thì f(x) (mod n)≡0 nếu f(x) (mod pi) ≡0 i=1,2 r)
Chứng minh : pi là cặp liên quan tới số nguyên tố nếu:
f(x)=kn=kp1p2 pr ⇒ pi/f(x) đối với mọi i.
Do đố để giải quyết: ax=b(mod n) chúng ta cần giải quyết hệ thống tương
đẳng: ax=b (mod pi), i=1,2 r.
* Định lý phần dư Trung Hoa
Cho các số p1, ,pr là cặp liên quan số nguyên tố ở đó n=pi*p2 *pr thì các
sự tương đẳng của hệ thống x=xi (mod pi) có lời giải chung trong [0,n-1].
Chứng minh: Cho mỗi pi, gcd[pi,n/pi]=1 có tồn tại yi sao cho [n/pi]yi≡1
(mod pi).
Ngoài ra: [n/pi]yi=0 (mod pj), i≠j và pj≠ n/pi
Giả sử x=
n
y x n
p
i
i
r
i
i













=

1
mod
thì x là lời giải của x=xi (mod pi) vì x =
n
p
i
y
i
x
i
( )
=xi (mod pi).
Ví dụ : Giải phương trình x≡1 (mod 5) và x≡10 (mod 11) để tìm thấy lời giải
modulo 55. Đầu tiên xác định 55/5y1=1 (mod 5) hoặc 11y1=y1=1 (mod 50
-> y1=1, 55/11y2=1 (mod 11) hoặc 5y2=1 (mod 11) -> y2=9.
Sự tương đẳng trở thành:
11y1*21=21=1=x1 (mod 5)
5y2*21=21=10=x2 (mod 11)
Do đó : x=55/5y1x1+y2x2=11*1*1+5*9*10
=11+(44+1)*10

SVTH: Nguyễn Thị Bích Nguyệt GVHD: Th.S Nguyễn Quỳnh
Mai
Chuyên Đề Tốt Nghiệp Ứng Dụng Chữ Ký Điện Tử
=11+10
21 (mod 55).
2.3.5. Giải thuật Ấn Độ:
Nhân hai số lớn x, y tuỳ ý, chỉ dùng cửu chương lần hai.
Chia đôi liên tiếp x đến 0.
Nhân đôi liên tiếp y .
Tổng các y tương ứng với x lẻ chính là tích z=x*y.
xy=(x div 2)2y nếu x lẻ
(x div 2)2y + ynếu x không lẻ.
Suy ra hệ quả sau (dùng để tính nhanh luỹ thừa):
ax=(a2)(x div 2) nếu x lẻ.
a(a2)(x div 2) nếu x không lẻ.
2.3.6. Hàm Euler ϕ(n)
Euler phát biểu: Cho một số nguyên tố n, hàm ϕ(n) là một số nguyên
dương nhỏ hơn n, ϕ(n) nguyên tố cùng nhau với n.
(*) n và ϕ(n) là nguyên tố cùng nhau khi giữa chúng không tồn tại
thừa số chung nào lớn hơn 1. Nói cách khác, gcd(a, ϕ(n))=1.
Cho p là số nguyên tố:
ϕ(p)=(p-1)
Hơn nữa, nếu n=p*q, mà p và q đều là số nguyên tố thì:
ϕ(n)= ϕ(p)* ϕ(q)=(p-1)*(q-1)
Euler và Fermat chứng minh được là:
xϕ(p)≡1( mod n).
SVTH: Nguyễn Thị Bích Nguyệt GVHD: Th.S Nguyễn Quỳnh
Mai
Chuyên Đề Tốt Nghiệp Ứng Dụng Chữ Ký Điện Tử
2.4. MÃ KHOÁ CÔNG KHAI RSA.

2.4.1. Thuật toán mã hóa RSA từ lý thuyết đến thực hành
2.4.1.1. Đặt vấn đề
Hệ mã khoá công khai này do Rivest, Shamir và Adleman đề ra trước
tiên và thường được gọi vắn tắt là hệ RSA. Hệ này dựa trên sự kiện là theo
những thuật toán phân tích thừa số được biết cho đến nay, gần như không
thể tìm lại được hai số nguyên tố lớn p và q từ tích của chúng n=p*q. Mặt
khác, lại có thể sinh ra rất nhanh số nguyên tố ngẫu nhiên lớn.
Việc mã hoá với khóa công khai dựa vào số n, trong khi đố việc giải mã đòi
hỏi phải biết p và q.
2.4.1.2. Chọn khoá:
Hệ RSA bao gồm một cặp khoá (N,e) và (N,d). Để tìm các giá trị e,d
và N tiến hành làm như sau:
Giả sử chọn p và q là hai số nguyên tố ngẫu nhiên lớn (trong ứng dụng thực
tế p và q lên đến khoảng vài trăm chữ số thập phân). Đặt:
N=pq và ϕ(N)=(p-1)(q-1) ( với ϕ(N) là hàm Euler)
N càng lớn thì việc phân tích ra thừa số càng khó.
Chọn e (e>1) nguyên tố cùng nhau với ϕ(N) và một số d thoả mãn hệ thức :
ed≡1 (mod ϕ(N)).
Vì e và ϕ(N) là các số nguyên tố cùng nhau, hệ thức đồng dư trên có
nghiệm. Có thể tìm được nhanh nhờ thuật toán Euclid.
Một cách dễ để đảm bảo e là nguyên tố cùng nhau với ϕ(N) là chọn e là số
nguyên tố mà nó lớn hơn (p-1) hoặc (q-1), thoả mã gcd(e, ϕ(N))=1.
Cặp số nguyên (N,e) lập thành một mã khoá công khai.
Cặp số nguyên (N,d) lập thành một mã khoá bí mật.
N: modul từ tích pq.
SVTH: Nguyễn Thị Bích Nguyệt GVHD: Th.S Nguyễn Quỳnh
Mai
Chuyên Đề Tốt Nghiệp Ứng Dụng Chữ Ký Điện Tử
e: số mũ mã hoá công khai.
d: số mũ giải mã bí mật.

Về cơ bản , bản mã C là phần dư dương nhỏ nhất của We(mod N) với W là
bản rõ.
Các bước thực hiện của RSA
W
e Người gửi
C
d
Người nhận
W
2.4.1.3. Mã hoá
Phương pháp tiến hành
Để mã mã hoá bản rõ W theo phương pháp RSA, trước hết hãy hiển
thị bản rõ như một từ trên bộ chữ cái {0,1,2, ,9}, từ này được chia thành
SVTH: Nguyễn Thị Bích Nguyệt GVHD: Th.S Nguyễn Quỳnh
Mai
Chọn p và q
Tính N=pq
Tính ϕ(N)
Tìm d để:
ed≡1(mod ϕ(N))
W=C
d
(mod N)
Chọn e
C=W
e
(mod N)
Chuyên Đề Tốt Nghiệp Ứng Dụng Chữ Ký Điện Tử
các khối với kích thước thích hợp w1,w2, ,wk (k là số nguyên). Các khối
này được mã hoá riêng rẽ bằng cách dùng cặp (N,e). Bản rõ W được mã hoá

bằng cách nâng từng khối lên luỹ thữa e theo modul N:
Bản rõ: W= w1,w2, ,wk
Bản mã: C= c1, c2, , ck
tức là:
Ci=Wie mod N
Một kích thước thích hợp của các khối là số nguyên j duy nhất thoả mãn các
bất đẳng thức:
10j-1<N<10j (j>0)
Thuật toán mã hoá RSA
(Mã hoá bản rõ W dùng khoá công khai (N,e) )
1.Thêm vào W một kí tự ngẫu nhiên nào đó nếu cần thiết để chiều dài
của W (length(W)) là bội số của độ dài khối (BlockLength).
2.Tính số khối:
NumberOfBlock=
Length(W)
BlockLength
3.Khởi động chỉ số j tại giá trị 1.
4.For i=1 to NumberOfBlock do
a.Lấy ra xâu kí tự con wi từ W gồm BlockLength kí tự bắt đầu
từ vị trí j.
b.Chuyển wi sang dạng số ci
c.Tính ci=cie mod N
d.Tăng j thêm BlockLength.
Dưới đây là sơ đồ tổng quát chung cho việc mã hoá theo hệ RSA.
SVTH: Nguyễn Thị Bích Nguyệt GVHD: Th.S Nguyễn Quỳnh
Mai
Chuyên Đề Tốt Nghiệp Ứng Dụng Chữ Ký Điện Tử
Sơ đồ khối thuật toán mã hoá:
SVTH: Nguyễn Thị Bích Nguyệt GVHD: Th.S Nguyễn Quỳnh
Mai

BEGIN
Read name dest, source_file,
e,p,q
N=p*q
While !(feof(source_file))
w
i
=fgets(source_file)
Đổi w
i
ra số
c
i
=c
i
e
mod N
Write(dest_file)
END
Chuyên Đề Tốt Nghiệp Ứng Dụng Chữ Ký Điện Tử
Để giải mã bản mã lại phải sử dụng thông tin cửa sập bí mật, đó là số
nguyên d hay gọi là số mũ giải mã. Lưu ý là việc biết d có liên quan mật
thiết đến việc biết p và q.
2.4.1.4. Giải mã
Định lý:
Định lý này chứng tỏ d đúng với số mũ giải mã.
Giả sử C là bản mã tương ứng bản rõ W nhận được theo cách mã RSA được
mô tả ở trên và giả sử rằng có e và d thoả mãn hệ thức: ed≡1 (mod
ϕ(N)) (*)
Khi đó: Cd≡W (mod N).

*Chứng minh:
Theo (*), tồn tại một số nguyên k sao cho:
ed=k*ϕ(N) (**)
Theo định lý Fermat quen thuộc, ta có với p là số nguyên tố:
Wp≡W (mod p) bởi vậy: Wp-1≡1 (mod p)
vì (p-1) là thừa số của ϕ(N) nên :
Wk*ϕ(N)≡1 (mod p)
Nhân cả hai vế với W:
Wk*ϕ(N)+1≡W (mod p) (1)
Làm tương tự với q ta cũng có:
Wk*ϕ(N)+1≡W mod q (2)
Từ (1),(2) cùng với (**):
(We)d=We*d=Wk*ϕ(N)+1
=W mod p
=W mod q
Biểu thức cuối cùng thu được:
SVTH: Nguyễn Thị Bích Nguyệt GVHD: Th.S Nguyễn Quỳnh
Mai
Chuyên Đề Tốt Nghiệp Ứng Dụng Chữ Ký Điện Tử
(We)d=W mod N.
Mặt khác dễ dàng thấy rằng biểu thức trên cũng đúng trong trường hợp ít
nhất một trong p và q là ước của W. Do đó biểu thức trên luôn luôn đúng.
Với : Cd=(We)d
Từ đó ta thu được:
Cd=W (mod N)
Định lý đã được chứng minh xong.
Phương pháp tiến hành:
Định lý trên là công cụ đắc lực trong việc giải mã, như vậy việc giải
mã đối với hệ RSA bằng cách nâng mỗi khối ci lên luỹ thừa d theo modul N.
Theo đó để phục hồi bản rõ:

Wi=Cid mod N=(Wie)d mod N=Wied mod N
đối với mỗi khối Ci.
(Lưu ý: e và d phải được chọn sao cho:
Wed mod N=W
đối với mọi thông điệp W.
Ta cũng dùng ký hiệu w khi đã chuyển bản rõ sang dạng số nguyên vì w ở
đây là số nguyên không âm).
Thuật toán giải mã RSA:
(Giải bản mã gồm các khối ci, i=1, ,NumberOfBlock dùng khoá bí
mật d).
1.Khởi động W tại xâu kí tự rỗng
2.For i=1 to NumberOfBlock so
a.Tính ci=cid mod N
b.Chuyển ci sang xâu kí tự wi
c.W=W+ wi ( nối các wi để tạo thành W)
SVTH: Nguyễn Thị Bích Nguyệt GVHD: Th.S Nguyễn Quỳnh
Mai
Chuyên Đề Tốt Nghiệp Ứng Dụng Chữ Ký Điện Tử
3.Return W.
Dưới đây là sơ đồ tổng quát chung cho việc giải mã theo hệ RSA.
False
SVTH: Nguyễn Thị Bích Nguyệt GVHD: Th.S Nguyễn Quỳnh
Mai
BEGIN
Read source, dest_file, d,p,q
f=fopen(source_file
f==NULL
N=p*q
x=(p-1)*(q-1)
gcd(x,d)=1

d*d
-1
=1 (mod x)
While !feof(dest_file)
C
i
=C
i
d
mod N
Đổi ra ký tự
Write(dest_file)
END
Chuyên Đề Tốt Nghiệp Ứng Dụng Chữ Ký Điện Tử
2.4.2. Số luỹ thừa:
Các thuật toán trên đều có sử dụng phép nâng luỹ thừa với số mũ có
thể rất lớn theo các số nguyên tố p và q. Việc tính các số luỹ thừa lớn trong
toán học là rất khó khăn.
Với thuật toán sau, chúng ta có thể thực hiện phép nâng lên luỹ thừa theo
modul N để mã hoá và giải mã một cách hiệu quả bằng cách lặp lại các phép
bình phương và nhân như sau:
Thuật toán nâng lên luỹ thừa:
(Thuật toán này tính y=xk mod N)
1.Tìm biểu diễn cơ số hai bt ,b1b0 của số mũ k.
2.Khởi động y tại giá trị 1.
3.For i=t downto 0 do
a.Đặt y=y2 mod N
b.if bi=1 then
đặt y=(y*x) mod N
4.Return

Với thuật toán nâng lên luỹ thừa như vậy chúng ta có thể dễ dàng tính toán
các số nguyên với số mũ lớn bất kỳ.
Ví dụ minh họa:
Chọn p=47,q=59 là hai số nguyên tố.
Ta có: p*q=47*59=2773
(p-1)*(q-1)=2668
suy ra N=2773 và ϕ(N)=2668.
Bước tiếp theo xác định e và d, chọn e=p+1, tăng e cho tới khi gcd(e,
ϕ(N))=1. Lấy d=e+1, tăng đến khi e*d mod ϕ(N)=1 (có d=1089).
e*d mod ϕ(N) = 49*1089 mod 2668 = 53361 mod 2668 = 1
SVTH: Nguyễn Thị Bích Nguyệt GVHD: Th.S Nguyễn Quỳnh
Mai

×