Cải tiến bộ sinh khóa RSA của EJBCA

Một phần của tài liệu Luận văn thạc sĩ nghiên cứu kiến trúc và xây dựng hệ thống chứng thực tập trung (Trang 156 - 159)

 Nội dung của chương này giới thiệu gói phần mềm mã nguồn mở EJBCA, gó

8.2.2Cải tiến bộ sinh khóa RSA của EJBCA

EJBCA sử dụng gói thư viện mã hóa mã nguồn mở Bouncy Castle (gọi tắt là BC) trong mọiquytrình mãhóa vàgiao thứccủamình nhằmmanglại tínhcẩnmật, toàn vẹn, xác thực và không thể chối từ. Gói thư viện mã hóa này là một thực thi Java của cácthuật toánmãhóa, được pháttriển bởi côngtyLegionof theBouncyCastle. Gói thư viện này được tổ chức nhằm cung cấp một giao tiếp lập trình ứng dụng (Application Program Interface – API) “gọn nhẹ” (light-weight) phù hợp cho việc sử dụngtrongbấtkỳmôitrường nào(baogồmcảphiênbảnJ2EEmớinhất)vớihạtầng bổ sung để các thuật toán phù hợp với cơ cấu mở rộng mã hóa Java (Java CryptographyExtension–JCE).

• MộtAPImãhóagọnnhẹchoJavavàC#.

• Một provider cho JCE và kiến trúc mã hóa Java (Java Cryptography Architecture – JCA).

• Một thư viện cho việc đọc và ghi các đối tượng ASN.1 được mã hóa. • MộtAPITLS24phíatrìnhkhách“gọnnhẹ”.

• CácbộphátsinhchochứngnhậnX.509phiênbản1và3,CRLphiênbản2và cáctậptinPKCS#12.

• Các bộ phát sinh cho chứng nhận thuộc tính X.509 phiên bản 2. • Cácbộphátsinh/xửlýchoS/MIMEvàCMS(PKCS#7/RFC3852). • Các bộ phát sinh/xử lý cho OCSP (RFC 2560).

• Cácbộphátsinh/xửlýchoTSP(RFC3161). • Các bộ phát sinh/xử lý cho OpenPGP (RFC 2440).

• MộtphiênbảnjarđượckýphùhợpchoJDK1.4-1.6vàSunJCE.

API nhỏgọn làm việcvới mọithứ từJ2ME đến JDK1.6 vàcũng có mộtAPI trong C#cungcấphầuhếtnhữngchứcnăngtươngtựnhưtrên.

Như đã trình bày ở Chương 2, đề tài này quan tâm đến hệ mã khóa công khai RSA và các ứng dụng của nó trong mã hóa và chữ ký số nên các hàm liên quan đến hệ mã

24TLS(TransportLayerSecurity)làgiaothứcmậtmãcungcấpcácgiaotiếpantoàntrênInte rnetnhưchotrìnhduyệtweb,

thưđiệntử,gửitinnhắntứcthời,traođổidữliệu,…TiềnthâncủaTLSchínhlàgiaothứcS SL(SecureSocketsLayer).

132

RSA đượcđặc biệtchú ý.Hàmsinhkhóa genKeyscủaEJBCA tronglớp KeyTool

thuộc gói org.ejbca.util như sau:

public static KeyPair genKeys(String keySpec, String keyAlg)

throws NoSuchAlgorithmException,

NoSuchProviderException,

InvalidAlgorithmParameterException {

KeyPairGenerator keygen = KeyPairGenerator.getInstance(keyAl

g, "BC");

// RSA keys

int keysize = Integer.parseInt(keySpec);

keygen.initialize(keysize); …

return keys;

}

Hình8.2.HàmphátsinhkhóaRSAcủaEJBCA

Tathấybiến keygencókiểu KeyPairGenerator(thuộcgói java.security)sẽ nhậnthựcthểcủaproviderBCnếuđược.NếugóithưviệnBCnàychưađượccàiđặt, nósẽlấythựcthểmặcđịnhcủaJava.Đâylàthaotáckiểmtratrongtrườnghợpngười sử dụng quên cài đặt gói thư viện BC này. (adsbygoogle = window.adsbygoogle || []).push({});

Lệnh keygen.generateKeyPair nhằm phát sinh cặp khóa. Khi thuật toán được chọn là RSA, hàm RSAKeyPairGenerator của BC (lớp RSAKeyPairGenerator

thuộc gói org.bouncycastle.crypto.generators) sẽ được thực hiện. Thuật toán phát sinh cặp khóa RSA được hàm này sử dụng như sau:

RSAKeyPairGenerator(e,strength)

Đầu vào: số nguyên � là số mũ công khai, �������� là độ dài khóa.

Đầu ra: cặp khóa công khai �, � và bí mật �, � .

(1) ����������←(��������+1)/2. (2) ����������←��������−����������.

(3) Chọn một số nguyên ngẫu nhiên �, độ dài ����������.

(4) Nếu � không là số nguyên tố hoặc ���(�,�)≠1 thì trở lại bước (3). (5) Chọn một số nguyên ngẫu nhiên �, độ dài ����������.

(6) Nếu � không là số nguyên tố hoặc ���(�,�)≠1 hoặc độ dài của �×� khác �������� thì quay lại bước (5).

(7) �←�×�.

(8) ��� ← �−1 ×(�−1). (9) � ←�−1������.

(10) Trả về (�,�) và (�,�).

Thuậttoán8.1.PhátsinhcặpkhóaRSAtrongBouncyCastle

133

Theo các phân tích ở Chương 5, các số nguyên tố � và � được sinh ra ở bước (3) và (5)trongThuậttoán8.1trên nênlàcácsốnguyêntốmạnh(strongprime)thayvìcác số nguyên tố ngẫu nhiên nhằm tránh các phương pháp tấn công phân tích đặc biệt. Vì vậy,phần sinhkhóacủaRSA sẽđược thaybằngphầnsinhkhóa củathưviệnmãhóa SmartRSA được xây dựng và giới thiệu ở Chương 7 .

8.2.3 Nhậnxét

BouncyCastlelàgóiphầnmềmmãhóamãnguồnmở cungcấpcácchứcnăngnhằm mang lại tính cẩn mật, toàn vẹn, xác thực và không thể chối từ cho bất kỳhệ thống

nào sử dụng nó, điển hình là hệ thống EJBCA. Với việc cải tiến hàm sinh khóa RSA củagóiphầnmềmmãhóanàybằnghàmsinhkhóamạnhcủabộthưviệnSmartRSA đã đượctrình bàyởChương 7,hệ thốngEJBCA sẽ manglại độan toànvà hiệu quả cao hơn khi đi vào sử dụng trong thực tế.

8.3 Triểnkhai hệthống8.3.1 Mụctiêu

Một phần của tài liệu Luận văn thạc sĩ nghiên cứu kiến trúc và xây dựng hệ thống chứng thực tập trung (Trang 156 - 159)