1. Trang chủ
  2. » Luận Văn - Báo Cáo

Mã hoá khoá phi đối xứng antisymetric encryption mã hoá khoá công khai

33 443 1

Đ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 33
Dung lượng 1,11 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Mã hoá khoá phi đối xứng antisymetric encryption mã hoá khoá công khai Khi quá trình tin học hóa xã hội đang diễn ra nhanh chóng như hiện nay thì vấn đề đảm bảo an toàn thông tin trở nên quan trọng hơn bao giờ hết. Việc đảm bảo an toàn thông tin đòi hỏi phải kết hợp nhiều biện pháp, công cụ, trong đó mật mã đóng vai trò hết sức quan trọng.

Trang 1

MỤC LỤC

MỤC LỤC 1

DANH MỤC CÁC TỪ VIẾT TẮT 2

DANH MỤC BẢNG BIỂU 3

DANH MỤC HÌNH VẼ 4

LỜI NÓI ĐẦU 5

Chương 1 MẬT MÃ KHÓA CÔNG KHAI 6

1.1 Mật mã khóa công khai 6

1.1.1 Giới thiệu chung về mật mã khóa công khai 6

1.1.2 Nguyên tắc cấu tạo của mã khóa công khai 7

1.1.3 Phân loại các hệ mật khóa công khai 8

1.2 Các hệ mật mã khóa công khai 9

1.2.1 Hệ mật RSA 10

1.2.2 Hệ mật ElGamal 12

1.2.3 Hệ mật trên các đường cong Elliptic 13

1.2.4 Giải pháp về vấn đề an toàn 14

Chương 2 THƯ VIỆN GMP HỖ TRỢ TÍNH TOÁN VỚI SỐ LỚN 15

2.1 Giới thiệu 15

2.2 Các phép toán trên số nguyên 16

2.3 Hiệu suất 19

2.4 Cài đặt 20

Chương 3 CÀI ĐẶT THUẬT TOÁN RSA SỬ DỤNG THƯ VIỆN GMP 22

3.1 Tạo khóa RSA 22

3.2 Mã hóa bằng RSA 26

3.3 Giải mã bằng RSA 28

3.4 Cài đặt, biên dịch và thực thi 29

3.5 Phân tích thời gian thực hiện 30

3.5.1 RSA 1024 bít 30

3.5.2 RSA với kích cỡ khóa khác nhau 30

KẾT LUẬN 32

TÀI LIỆU THAM KHẢO 33

PHỤ LỤC Error! Bookmark not defined.

Trang 2

DANH MỤC CÁC TỪ VIẾT TẮT

ANSI American National Standards Institute -Viện tiêu chuẩn quốc gia

của Mỹ

ASCII American Standard Code for Infornation Interchange

CBC Cipher Block Chaining

DES Data encryption Standard

IDEA International Data Encryption Algorithm

IEEE Institute of Electrical and Electronic Engineers - Viện kỹ thuật của

kỹ sư điện và điện tử

IETF Internet Engineering Task Force

IMAP Internet Message Access protocol

MIME Multipurpose Internet Mail Extensions

PCBC Propagating cipher block chaining

PGP Pretty Good Privacy

PKCS Public Key Cryptography Standard

S/ MIME Secure-MIME

TLS Transport Layer Security

MIT Học viện Công nghệ Massachusetts

GCHQ Cơ quan Thông tin chính phủ

RSA Rivest Shamir Adleman

GCD Great Comon Divisor

Trang 3

DANH MỤC BẢNG BIỂU

Bảng 1.1: Các bài toán để so sánh 8Bảng 3.1: Thời gian mã hóa và giải mã RSA (10.000 ký tự) 30Bảng 3.2: Thời gian cho các độ dài khóa khác nhau (10.000 ký tự) 30

Trang 4

DANH MỤC HÌNH VẼ

Hình 1.1: Mô hình mã hóa và giải mã trong mật mã khóa công khai 7Hình 1.2: Mô hình ký và kiểm tra chữ ký trong mật mã khóa công khai 7Hình 1.3: Sơ đồ mã hóa và giải mã thông tin dựa trên thuật thoát RSA 11

Trang 5

LỜI NÓI ĐẦU

Khi quá trình tin học hóa xã hội đang diễn ra nhanh chóng như hiện nay thì vấn đề đảm bảo an toàn thông tin trở nên quan trọng hơn bao giờ hết Việc đảm bảo an toàn thông tin đòi hỏi phải kết hợp nhiều biện pháp, công

cụ, trong đó mật mã đóng vai trò hết sức quan trọng Thông thường, người ta sử dụng mật mã đối xứng để mã hóa dữ liệu, còn khóa để thực hiện việc mã hóa đó lại được trao đổi nhờ mật mã khóa công khai Vai trò của mật mã khóa công khai không chỉ dừng lại ở việc trao đổi khóa Một chức năng rất quan trọng của mật mã khóa công khai là tạo và kiểm tra chữ ký số

Dù là mật mã đối xứng hay mật mã khóa công khai, độ an toàn là vấn

đề đầu tiên cần xem xét khi quyết định sử dụng một hệ mật nào đó Độ an toàn phải được đánh giá căn cứ vào trình độ phát triển của kỹ thuật thám mã (bao gồm thuật toán thám mã và sức mạnh tính toán của các thiết bị hỗ trợ) không chỉ ở thời điểm hiện tại mà cả trong tương lai Theo như bài báo

“Factorization of a 768-bit RSA modulus” ngày 18/02/2010 RSA 768 bit đã

bị thám thành công hiện trên 80 vi xử lí Opteron Theo bài báo này, RSA 768 bit khó hơn 1000 lần so với RSA 512 bit (bị phá vỡ cách đây một thập kỉ), và RSA 1024 bit khó hơn 1000 lần so với RSA 768 bit Theo công bố của bài báo trên (tháng 2/2010), RSA 1024 bit có thể bị phá vỡ bằng sức tính toán tương đương với 1500 năm, dùng một vi xử lý Opteron 2,2 GHz Và cho đến bây giờ theo cách tấn công mới, RSA 1024 bit đã bị bẻ gãy trong 100 giờ [8] Như thế, muốn tăng độ an toàn thì cần tăng kích thước của khóa

Qua việc tìm hiểu một số hệ mật khóa công khai, có thể thấy rằng, để cài đặt chúng bằng chương trình, ta cần thực hiện các phép nhân (lũy thừa) modulo với các số hàng trăm, hàng nghìn bít (số lớn) Một vấn đề thực sự khó giải quyết đối với mật mã khóa công khai Chính vì vậy em đã chọn đề

tài bài tập lớn “Mã hoá khoá Phi đối xứng (AntiSymetric Encryption) Mã

hoá khoá Công khai”

Nội dung bao gồm:

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

2 Thư viện gmp hỗ trợ tính toán với số lớn

3 Cài đặt thuật toán rsa sử dụng thư viện gmp

Trang 6

Chương 1 MẬT MÃ KHÓA CÔNG KHAI 1.1 Mật mã khóa công khai

1.1.1 Giới thiệu chung về mật mã khóa công khai

Vào năm 1976 Diffie và Hellman đã đề xuất ra các ý tưởng cho phép xây dựng các hệ mã hoạt động theo nguyên tắc mới, gắn liền với các bên truyền tin chứ không gắn với các cặp truyền tin Nguyên tắc hoạt động của các hệ mã đó là mỗi bên tham gia truyền tin sẽ có hai khóa, một khóa gọi là khóa bí mật (Ks) và một khóa gọi là khóa công khai (Kp) Khóa bí mật là khóa dùng để giải mã và được giữ bí mật, khóa công khai là khóa dùng để sinh mã được công khai hóa để bất cứ ai cũng có thể sử dụng khóa này gửi tin cho người chủ của hệ mã Nhờ mật mã khóa công khai ta có thể mã hóa một bức thư hay một tin nhắn thông qua mạng Internet mà không bị lộ thông tin bằng cách mã hóa nó bằng khóa công khai người gửi và chỉ người nhận mới có thể biết được thông tin sau khi giải mã bức thư hay tin nhắn đó bằng chính khóa bí mật của mình Trong mật mã khóa công khai, việc phân phối khóa trở nên dễ dàng hơn qua các kênh cung cấp khóa công cộng, số lượng khóa hệ thống quản lý cũng sẽ ít hơn Trong các mạng kết nối với quy mô lớn, mật mã khóa công khai đỏi hỏi ít tham số hơn, do đó ít dữ liệu về khoá hơn, nhờ đó làm tăng tính bảo mật trong mạng Các dịch vụ mới như chữ ký điện tử, thỏa thuận khóa cũng được xây dựng dựa trên mật mã khóa công khai

Các yêu cầu đối với một hệ mật mã khóa công khai bao gồm:

‒ Việc sinh Kp, Ks phải dễ dàng;

‒ Việc tính E(Kp, M) là dễ dàng;

‒ Nếu có C = E(Kp, M) và Ks thì việc tìm bản rõ cũng là dễ;

‒ Nếu biết Kp thì việc dò tìm Ks là khó;

‒ Việc khôi phục bản rõ từ bản mã là khó

Trang 7

Trong mật mã khóa công khai, khi A muốn truyền tin cho B, A sẽ sử dụng khóa Kp của B để mã hóa tin tức và truyền bản mã tới cho B, B sẽ sử dụng khóa bí mật của mình để giải mã và đọc tin (Hình 1.1):

Hình 1.1: Mô hình mã hóa và giải mã trong mật mã khóa công khai

Khi A muốn ký một văn bản thì A sẽ dùng khóa bí mật Ks của mình để

ký, A gửi văn bản cho B và B sẽ sử dụng khóa công khai của A để giải mã Nếu giải mã được thì đó đúng là văn bản đã được A ký Vì chỉ có A mới có khóa bí mật để mã hóa văn bản này (Hình 1.2):

Hình 1.2: Mô hình ký và kiểm tra chữ ký trong mật mã khóa công khai

Mật mã công khai thường được sử dụng để phân phối khoá bí mật hơn

là để mã hoá bản tin Lý do là mật mã khóa công khai đòi hỏi nhiều tài nguyên tính toán hơn (và do đó chậm hơn) so với mật mã đối xứng Hệ thống lai ghép sử dụng mật mã đối xứng để mã hóa dữ liệu cho phiên truyền thông,

và sử dụng mật mã khóa công khai để bảo vệ bí mật cho khóa được sử dụng trong phiên đó

1.1.2 Nguyên tắc cấu tạo của mã khóa công khai

Các hệ mã khóa công khai được xây đựng dựa trên các hàm một chiều (one-way functions) Hàm một chiều f: X  Y làm một hàm mà nếu biết x 

X, ta có thể dễ dàng tính được y = f(x) Nhưng với y bất kỳ  Y việc tìm x 

X sao cho y = f(x) là khó Có nghĩa là việc hàm ngược f-1 là khó Ví dụ, nếu

Khóa bí mật (Ks)

Khóa công khai (Kp)

Plaintext Plaintext

B

Signed message

Khóa công khai (Kp)

Khóa bí mật (Ks)

Ciphertext

Plaintext Plaintext

B

A

Trang 8

có các số nguyên tố P1,P2,…,Pn thì việc tính N = P1∙P2∙…∙Pn là dễ, nhưng nếu

có N thì việc phân tích ngược lại là một bài toàn khó

Để thuận tiện các hàm một phía được sử dụng trong các hệ mã khóa công khai thường được trang bị các cửa bẫy (trapdoor) giúp cho việc tìm x thỏa mã y = f(x) là dễ dàng nếu biết được cửa bẫy này

Hàm cửa bẫy (trapdoor function): là hàm một chiều trong đó việc tính

f-1 là rất nhanh khi chúng ta biết được cửa bẫy của hàm Ví dụ việc tìm nghiệm của bài toán xếp ba lô 0/1 trong hệ mã xếp ba lô là một hàm một phía (việc mã hóa rất nhanh và dễ dàng nhưng tìm vectơ nghiệm tương ứng là khó) nhưng nếu ta biết cửa bẫy (vectơ xếp balô siêu tăng A’) thì bài toán tính

f-1 lại rất dễ dàng

Độ an toàn của các hệ mật khóa công khai được đảm bảo bới các bài toán khó giải Hiện nay, các bài toán đó là:

‒ Bài toán phân tích thừa số nguyên tố (IFP)

‒ Bài toán tính lôgarít rời rạc (DLP)

‒ Bài toán tính lôgarít rời rạc trên đường cong Elliptic (ECDLP) Nội dung cụ thể của các bài toán này được trình bày trong Bảng 1.1

Khóa công khai

dựa trên vấn đề đã

cho

1.1.3 Phân loại các hệ mật khóa công khai

Ý tưởng về mật mã khóa công khai được Diffie và Heliman đưa ra vào năm 1975 Nhưng việc hiện thực hóa nó thì lại được Rivest, Shamin và Adieman thực hiện đầu năm 1977, khi xây dựng nên hệ mật RSA nổi tiếng

Trang 9

Đến nay đã có nhiều hệ mật khóa công khai được công bố, trong đó quan trọng nhất là:

‒ Hệ mật RSA Độ bảo mật của hệ RSA dựa trên độ khó của việc phân

tích ra thừa số nguyên tố các số nguyên lớn

‒ Hệ mật McEliece Hệ mật này dựa trên lý thuyết mã đại số và vẫn

được coi là an toàn Hệ mật McEliece dựa trên bài toán giải mã cho các mã tuyến tính

‒ Hệ mật ElGamal Hệ ElGamal dựa trên tính khó giải của bài toán

Logarit rời rạc trên các trường hữu hạn

‒ Hệ mật Chor-Rivest Hệ mật Chor-Rivest cũng được xem như một

loại hệ mật xếp ba lô Tuy nhiên hệ mật này vẫn còn được coi là hệ mật an toàn

‒ Hệ mật trên các đường cong Elliptic Các hệ này là biến tướng của

hệ mật khác, chúng làm việc trên các đường cong Elliptic chứ không phải trên các trường hữu hạn Hệ mật này đảm bảo độ mật với khoá số nhỏ hơn các hệ mật khoá công khai khác

Độ an toàn của từng hệ mật dựa trên các bài toán khác nhau, nhưng tất

cả chúng có một điểm chung, đó là để đảm bảo an toàn thì chúng phải sử dụng các số lớn Đó là những số nguyên có kích thước từ hàng trăm đến hàng nghìn bít trong biểu diễn nhị phân

1.2 Các hệ mật mã khóa công khai

Từ khi ra đời vào những năm 50 của thế kỷ trước, tốc độ bộ vi xử lý của máy tính đã tăng nhanh chóng: từ hàng trăm KHz ban đầu đến hơn 3 GHz ngày nay Bên cạnh đó, hiệu năng tính toán bộ của vi xử lý còn được tăng cường bằng các thay đổi trong kiến trúc của nó, bao gồm việc thiết kế nhiều nhân trong một vi xử lý Có một đặc tính của bộ vi xử lý rất ít thay đổi – đó là độ dài thanh ghi Những bộ vi xử lý thời kỳ đầu có thanh ghi 8 bít thì ngày nay, độ dài thanh ghi trong các vi xử lý hiện đại mới là 64 bít (một số vi xử lý chuyên dụng có độ dài thanh ghi lớn hơn) Tương ứng với độ dài thanh ghi của bộ vi xử lý, các ngôn ngữ lập trình như C, C++,… cung cấp các kiểu

dữ liệu số có độ dài tối đa là 64 bít, tức là ít hơn nhiều so với nhu cầu sử dụng trong các hệ mật khóa công khai Do vậy, các số có độ dài quá 64 bít

Trang 10

trong biểu diễn nhị phân, tức vượt quá khả năng lưu trữ của kiểu dữ liệu số nguyên chuẩn, được coi là các số lớn

1.2.1 Hệ mật RSA

RSA được Rivest, Shamir và Adleman phát triển, là một thuận toán mật mã hóa khóa công khai Nó đánh dấu một sự tiến hóa vượt bậc của lĩnh vực mật mã học trong việc sử dụng khóa công khai RSA đang được sử dụng phổ biến trong thương mại điện tử và được cho là đảm bảo an toàn với điều kiện độ dài khóa đủ lớn Thuật toán được công bố vào năm 1977 tại Học viện Công nghệ Massachusetts (MIT) Tên của thuật toán lấy từ ba chữ cái đầu của tên ba tác giả Trước đó, vào năm 1973, Clifford Cocks, một nhà toán học người Anh làm việc tại Trung tâm thông tin chính phủ (GCHQ: Government Communications Headquarters) thuộc Cục Trinh sát radio hoàng gia (SIGINT: Her Majesty's Government's Signal Intelligence) Anh quốc, đã

mô tả một thuật toán tương tự Với khả năng tính toán tại thời điểm đó thì thuật toán này không khả thi và chưa bao giờ được thực nghiệm Tuy nhiên, phát minh này chỉ được công bố vào năm 1997 vì được xếp vào loại tuyệt mật

Sơ đồ của quá trình mã hóa và giải mã thông tin dựa trên thuật thoát RSA được thể hiện trên Hình 1.3

Trang 11

Hình 1.3: Sơ đồ mã hóa và giải mã thông tin

dựa trên thuật thoát RSA

RSA là một thí dụ điển hình về một đề tài toán học trừu tượng lại có thể áp dụng thực tiễn vào đời sống thường nhật Khi nghiên cứu về các số nguyên tố, ít có ai nghĩ rằng khái niệm số nguyên tố lại có thể hữu dụng vào lãnh vực truyền thông Hệ mật RSA hoạt động như sau:

Trang 12

Bước 4: B tính d = e–1 (mod m) hay e*d = 1 (mod m) bằng cách dùng thuật toán Euclide

Bước 5: B công bố n và e trong danh bạ làm khoá công khai (public key), còn d làm khoá bí mật (private key)

b) Mã hoá

Bước 1: A (người gửi tin) nhận khoá công khai của B

Bước 2: A biểu diễn thông tin cần gửi thành số m (0 ≤ m ≤ n – 1)

n, m, e, d đều là các số lớn Như vậy, tất cả các pha (tạo khóa, mã hóa, giải mã) của hệ mật RSA đều đòi hỏi thực hiện các phép toán trên số lớn

1.2.2 Hệ mật ElGamal

Hệ mã Elgamal là một biến thể của sơ đồ phân phối khóa Hellman Hệ mã này được ElGamal đưa ra vào năm 1985 Giống như sơ đồ phân phối khóa Diffie-Hellman tính an toàn của nó dựa trên tính khó giải của bài toán logarit rời rạc

Diffie-Ban đầu người ta chọn một số nguyên tố lớn p và hai số nguyên tùy ý nhở hơn p là a (a là một phần tử nguyên thủy của Z* ) và x (x là của người nhận, bí mật) sau đó tính:

x

mod

Để mã hóa một thông điệp M (là một số nguyên trên Zp) thành bản mã

C người gửi chọn một số ngẫu nhiên k nhỏ hơn p và tính khóa mã hóa K:

mod

k

Sau đó tính cặp bản mã:

Trang 13

Để giải mã thông điệp đầu tiên ta cần tính lại khóa mã hóa thông điệp K:

x

a py Đến nay, vẫn chưa có thuật toán để giải bài toán lôgarit rời rạc với độ phức tạp tính toán hàm đa thức Tức là bài toán tìm lôgarit rời rạc là bài toán khó khi p lớn Do đó, để đảm bảo độ an toàn của hệ mật ElGamal thì cần chọn p lớn, từ đó kéo theo a, x, y, k, K, M, C1, C2 cũng là các số lớn Như vậy, hệ mật ElGamal đòi hỏi thực hiện các phép toán với số lớn

1.2.3 Hệ mật trên các đường cong Elliptic

Phép toán cộng trên đường cong elliptic tương ứng với phép nhân theo modulo trong hệ mã RSA, còn phép toán nhân (cộng nhiều lần) trên đường cong Elliptic tương ứng với phép lũy thừa theo modulo trong hệ mã RSA Tương tự như bài toán cơ sở của hệ mã RSA là bài toán phân tích ra dạng thừa số nguyên tố của một số nguyên lớn, các hệ mã dựa trên các đường con elliptic cũng có các bài toán cơ sở là một bài toán khó giải, gọi là bài toán lôgarit trên đường cong Elliptic

Xét phương trình Q = kP trong đó P, Q Ep(a, b) và k < p Việc tính Q nếu biết P và k là một bài toán dễ (thực hiện theo các công thức) Nhưng việc xác định k với giá trị P, Q cho trước lại là bài toán khó

Ví dụ: E23(9, 17) được xác định bởi phương trình

Trang 14

y2 mod 23 = (x3+ 9x+ 17) mod 23

Với Q = (4, 5) và P = (16, 5) thì k thỏa mãn Q = kP sẽ bằng bao nhiêu

? Phương pháp đơn giản nhất là nhân P lên nhiều lần cho tới khi bằng Q:

P = (16, 5), 2P = (20, 20), 3P = P = (16, 5); 2P = (20, 20); 3P = (14, 14); 4P = (19, 20); 5P = (13, 10); 6P = (7, 3); 7P = (8, 7); 8P (12, 17); 9P = (4, 5)

Như vậy k = 9 Trên thực tế các hệ mã sẽ đảm bảo giá trị k là đủ lớn để phương pháp vét cạn như trên là không thể thực hiện được Và như thế, để đảm bảo độ an toàn thì hệ mật khóa công khai trên đường cong Elliptic cũng đòi hỏi thực hiện các phép tính trên tập các số lớn

1.2.4 Giải pháp về vấn đề an toàn

Qua việc tìm hiểu một số hệ mật khóa công khai, có thể thấy rằng, để cài đặt chúng bằng chương trình, ta cần thực hiện các phép nhân (lũy thừa) modulo với các số hàng trăm, hàng nghìn bít (số lớn) Trong khi đó, các máy tính hiện đại chỉ hỗ trợ thực hiện các phép toán với các số có kích thước không quá 64 bít Do vậy, để có thể triển khai bằng chương trình các thuật toán mật mã khóa công khai, cần phải có giải pháp đặc biệt để thực hiện phép tính với các số lớn Về mặt ý tưởng, có thể dùng mảng để lưu trữ các số lớn, và các phép tính với số lớn có thể được xác định thông qua việc định nghĩa các phép tính trên mảng Tuy nhiên, đây là công việc phức tạp, nhất là trong vấn đề tối ưu hóa thuật toán để đạt được tốc độ tính toán cao nhất có thể Vì lý do đó, khi cần cài đặt bằng chương trình một thuật toán mật mã khóa công khai, nếu không có đủ kiến thức uyên thâm trong kỹ thuật lập trình thì ta nên sử dụng các thư viện có hỗ trợ thực hiện các phép tính với các

số lớn

Trang 15

Chương 2 THƯ VIỆN GMP HỖ TRỢ TÍNH TOÁN VỚI SỐ LỚN

2.1 Giới thiệu

GMP là thư viện do Torbjorn Granlund viết và đến bây giờ vẫn là người phát triển chính Rất nhiều cá nhân và tổ chức đã đóng góp xây dựng vào thư viện GMP Hiện giờ thư viện GMP vẫn đang được phát triển và phiên bản hiện tại là GMP 5.0.5

GMP là một thư viện cung cấp các hàm số học ở mức độ thấp nói chung, không phải được thiết kế đặc biệt cho các ứng dụng mật mã Tuy nhiên, nó thực hiện hiệu quả hơn các phép tính so với các thư viện chuyên về mật mã GMP là thư viện miễn phí được viết bằng ngôn ngữ C nhằm mục đích cung cấp thuật toán nhanh nhất có thể cho tất cả các ứng dụng cần thực hiện các phép toán số học với độ chính xác cao hơn so với khả năng mà các kiểu dữ liệu số trong ngôn ngữ C cơ bản cung cấp

GMP có đặc điểm là cực nhanh, ban đầu được thiết kế cho ngôn ngữ C nhưng sau đó có hỗ trợ cả C++ Bên cạnh C/C++, còn hỗ trợ các ngôn ngữ khác như Perl, PHP, Java Ví dụ PHP có extension php_gmp giúp việc sử dụng GMP trở nên rất dễ dàng [tham khảo tại php.net – GMP Functions]

Thư viện GMP có thể dùng trong tính toán cơ bản (cộng, trừ, nhân, chia) các số nguyên, số thực Nhược điểm của GMP là khá khó sử dụng vì phải viết chương trình theo dạng ngôn ngữ bậc thấp, thiếu tính trừu tượng Các hàm cơ bản nhất của GMP có dạng như sau:

Khai báo: mpf_f xf, yf, zf;

Khởi tạo (1): mpf_int(xf);

Khởi tạo (2): mpf_int2(xf, bits);

Giải phóng: mpf_clear(xf);

Thay thế: mpf_set_str(xf, str, base);

Cộng: mpf_add(zf, xf, yf);

Trang 16

Trừ: mpf_mul(zf, xf, yf);

Nhân: mpf_mul(zf, xf, yf);

Tuy nhiên khi đã làm quen với các hàm trên thì có thể viết được các chương trình lớn thực hiện các tính toán phức tạp mà không phải lo nghĩ gì tới giới hạn của các con số (GMP dễ dàng tính toán các số có 600 triệu chữ số) [9]

Để cập nhập thông tin về thư viện GMP, có thể xem ở địa chỉ

http://gmplib.org/ Phiên bản mới nhất có thể tìm thấy ở địa chỉ

Khởi tạo danh sách kết thúc là NULL của các biến mpz_t và đặt nó =0

void mpz_init2 (mpz_tx, mp bitcnttn)

Khởi tạo x, với khoảng trống là n bit và đặt giá trị =0 Dùng các hàm này khi mpz_init hoặc mpz_inits không cần thiết

Các hàm gán gán các giá trị mới vào các số nguyên đã được khởi tạo

void mpz_set(mpz_t rop, mpz_t top)

void mpz_set_ui(mpz_t rop, unsigned long int op)

void mpz_set_si(mpz_t rop, signed long int op)

Ngày đăng: 25/10/2014, 21:40

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] Gs Phan Đình Diệu (2002), “ Lý thuyết mật mã &amp; An toàn thông tin”, Đại học Quốc gia Hà Nội, tr 73 – 75.Tài liệu Tiếng Anh Sách, tạp chí
Tiêu đề: Lý thuyết mật mã & An toàn thông tin"”, Đại học Quốc gia Hà Nội, tr 73 – 75
Tác giả: Gs Phan Đình Diệu
Năm: 2002
[3] “SPEED - Software Performance Enhancement for Encryption and Decryption”,11–12 June 2007 Amsterdam, the Netherlands Sách, tạp chí
Tiêu đề: SPEED - Software Performance Enhancement for Encryption and Decryption
[5] Dalit Naor, Moni Naor, Jeff Lostpiech (24/02/2001), “ Revocation and Tracing Schemes for Stateless Receivers”, Advances in Cryptology – Crypto ’01 (Berlin), Lecture Notes in Computer Science Volume 2139 Sách, tạp chí
Tiêu đề: Revocation and Tracing Schemes for Stateless Receivers
[6] Ronald L. Rivest (1997), “All-or-Nothing Encryption and The Package Transform”. Proc. 4 th Fast Software Encryption International Workshop, Lecture Notes in Computer Science, Volume 1174 Sách, tạp chí
Tiêu đề: All-or-Nothing Encryption and The Package Transform
Tác giả: Ronald L. Rivest
Năm: 1997
[7] Zbigniew J. Czech, George Havas, Bohdan S. Majewski (1992), “ An optimal algorithm for generating minimal perfect hash function ”, Information Processing Letter Sách, tạp chí
Tiêu đề: An optimal algorithm for generating minimal perfect hash function
Tác giả: Zbigniew J. Czech, George Havas, Bohdan S. Majewski
Năm: 1992
[8] Andrea Pellegrini, Valeria Bertacco and Todd Austin, “Fault-Based Attack of RSA Authentication”, U ni versi t y of Mi chi gan, 2/2010.Tài liệu website Sách, tạp chí
Tiêu đề: Fault-Based Attack of RSA Authentication”, U ni versi t y of Mi chi gan, 2/2010
[9] Torbj¨orn Granlund, The GNU Multiple Precision Arithmetic Library, http://gmplib.org/gmp -man-5.0.5.pdf Link
[4] COMPARATIVE ANALYSIS OF MULTI-PRECISIONARITHMETIC LIBRARIES FOR PUBLIC KEY CRYPTOGRAPHY By AshrafAbusharekh MS CpE Candidate (Department of Electrical &amp; Computer Engineering) Khác

HÌNH ẢNH LIÊN QUAN

Hình 1.1: Mô hình mã hóa và giải mã trong mật mã khóa công khai - Mã hoá khoá phi đối xứng antisymetric encryption mã hoá khoá công khai
Hình 1.1 Mô hình mã hóa và giải mã trong mật mã khóa công khai (Trang 7)
Hình 1.2: Mô hình ký và kiểm  tra chữ ký  trong  mật mã khóa công khai - Mã hoá khoá phi đối xứng antisymetric encryption mã hoá khoá công khai
Hình 1.2 Mô hình ký và kiểm tra chữ ký trong mật mã khóa công khai (Trang 7)
Bảng 1.1: Các bài toán để so sánh - Mã hoá khoá phi đối xứng antisymetric encryption mã hoá khoá công khai
Bảng 1.1 Các bài toán để so sánh (Trang 8)
Hình 1.3: Sơ đồ mã hóa và giải mã thông tin    dựa trên thuật thoát RSA - Mã hoá khoá phi đối xứng antisymetric encryption mã hoá khoá công khai
Hình 1.3 Sơ đồ mã hóa và giải mã thông tin dựa trên thuật thoát RSA (Trang 11)
Bảng 3.2: Thời gian cho các độ dài khóa khác nhau (10.000 ký tự) - Mã hoá khoá phi đối xứng antisymetric encryption mã hoá khoá công khai
Bảng 3.2 Thời gian cho các độ dài khóa khác nhau (10.000 ký tự) (Trang 30)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w