Các tập tin demo (*.c): 1 Rsagen.c

Một phần của tài liệu các hệ mật mã.doc (Trang 90 - 92)

. EMK: {KC }→ EKM0(KC)

1.5.Các tập tin demo (*.c): 1 Rsagen.c

o Other user

1.5.Các tập tin demo (*.c): 1 Rsagen.c

1.5.1. Rsagen.c

- Đây là chương trình demo tạo cặp khóa công khai RSA. Sau khi user nhập các thông tin về bản thân (ví dụ: tên, định danh, địa chỉ, passsword, chiều dài khóa…) thì chương trình sẽ lưu thông tin của user vào thư mục (default là usrpass) và tạo cặp khóa RSA: đối với user mới thì khóa công khai được cập nhật vào thư mục khóa công khai (default là keypub), khóa bí mật được mã hóa bằng khóa DES (password của user) và được lưu vào file, còn đối với user cũ thì tìm trong thư mục xem đã có khóa công khai đó chưa, nếu chưa có thì cập nhật vào, ngược lại báo cho user biết là trong thư mục đã tồn tại khóa công khai đó rồi.

- Các hàm chính dùng trong chương trình:

InitRandomStruct: khởi tạo đối tượng random cho hàm tạo khóa.

R_RandomCreate: tạo random cho hàm tạo khóa. DoGenerateKeys: tạo cặp khóa RSA.

Des_EncodePri: mã hóa khóa bí mật bằng khóa DES (password của user). WriteUserPass: lưu tên, password của user vào thư mục (default = usrpass). WritePublicKey: lưu tên, định danh và khóa công khai của user vào thư mục

WritePrivateKey: lưu tên, định danh và khóa bí mật của user vào file (default = keypri).

1.5.2. PubDir.c

- Đây là chương trình demo xem thư mục khóa công khai RSA. Sau khi user nhập các thông tin về bản thân (ví dụ: tên, định danh, địa chỉ, passsword, user mới hay cũ, chiều dài khóa…), nếu là user cũ thì chương trình sẽ tìm trong thư mục usrpass xem có user này không, nếu có thì tiếp tục, ngược lại thì yêu cầu user nhập lại thông tin, còn nếu là user mới thì cập nhật vào thư mục usrpass và tiếp tục. Cuối cùng in ra danh sách các khóa công khai có trong thư mục khóa công khai.

- Các hàm chính dùng trong chương trình: DoKeysDir: thư mục khóa công khai RSA.

GetPublic: in khóa công khai, dùng trong hàm DoKeysDir.

Search_Usr: tìm user trong thư mục usrpass dùng trong hàm DoKeysDir. WriteUserPass: ghi thông tin user mới vào thư mục usrpass.

1.5.3. PubFind.c

- Đây là chương trình demo tìm khóa công khai trong thư mục khóa công khai RSA. Sau khi user nhập các thông tin về bản thân (ví dụ: tên, định danh, địa chỉ, passsword, user mới hay cũ, chiều dài khóa…), nếu là user cũ thì chương trình sẽ tìm trong thư mục usrpass xem có user này không, nếu có thì tiếp tục, ngược lại thì yêu cầu user nhập lại thông tin, còn nếu là user mới thì cập nhật vào thư mục usrpass và tiếp tục. Sau đó yêu cầu user nhập vào user muốn tìm, nếu user này có trong thư mục khóa công khai thì in ra khóa công khai của user này, ngược lại báo “không có khóa công khai này, nhập lại thông tin cần tìm”.

- Các hàm chính dùng trong chương trình: GetPublic: in khóa công khai.

Search_Usr: tìm user trong thư mục usrpass.

WriteUserPass: ghi thông tin user mới vào thư mục usrpass. Search_key: tìm khóa công khai trong thư mục khóa công khai.

* Những công việc đã thực hiện:

1. Trình bày lý thuyết về mật mã hóa thông tin: + Các giải thuật DES, RSA, MD5.

+ Vấn đề quản lý và phân bố các khóa. + Vấn đề bảo mật các khóa.

+ Các tiêu chuẩn PKCS, X.509.

2. Xây dựng các chương trình nguồn và các chương trình demo. + Chương trình nguồn:

. Mật mã RSA theo chuẩn PKCS. . Mật mã DES.

. Giải thuật băm MD5.

. Các chương trình phụ trợ như tạo khóa, kiểm tra số nguyên tố, .... + Chương trình demo:

. Tạo khóa RSA cho user. . Xem thư mục khóa công khai.

. Tìm khóa công khai trong thư mục khóa công khai. * Những công việc cần thực hiện tiếp:

1. Hoàn chỉnh trang Web server.

2. Để tăng tính bảo mật thì khóa dùng chung giữa server và user không là password của user mà là khóa chủ của user (KMT). Khóa này ở server được mã hóa bằng khóa bí mật của server, khi có nhu cầu sử dụng, server sẽ giải mã khóa này bằng khóa bí mật của mình.

3. Xây dựng thêm các chương trình demo như hủy bỏ khóa công khai trong thư mục khóa công khai, chữ ký số,....

(adsbygoogle = window.adsbygoogle || []).push({});

Một phần của tài liệu các hệ mật mã.doc (Trang 90 - 92)