Chứng chỉ: Lưu trữ chứng chỉ số được cấp bởi tổ chức cấp chứng chỉ cho người dùng.
Khóa: Bao gồm một khóa cơng khai (public key), một khóa riêng (private key) và khóa bảo vệ (secret key).
Các đối tượng này chỉ được sử dụng khi thiết bị eToKen kết nối với ứng dụng, nó khơng cho phép đọc hoặc lưu trữ khóa riêng ra thiết bị lưu trữ khác. Do tính an tồn của thiết bị eToKen, nên nó được sử dụng phổ biến trong các ứng dụng hiện nay như sử dụng để ký số, thực hiện các giao dịch thương mại, hải quan điện tử, kê khai thuế qua mạng.
b) Ứng dụng phía máy trạm bao gồm
Là giao diện được tích hợp trong mỗi chức năng có yêu cầu ký số hoặc xác thực của ứng dụng.
c) Thư viên mật mã
Cung cấp các lớp, các phương thức cho phép tương tác với modul tích hợp trên trình duyệt để thực thi các chức năng theo yêu cầu của chương trình.
d) Chứng chỉ số cho máy chủ
Sử dụng chứng chỉ SSL, nhằm đảm bảo thông tin trên kênh truyền cho ứng dụng web. Khi đó mọi dữ liệu trao đổi giữa người dùng và website sẽ được mã hóa (ở phía người gửi) và giải mã (ở phía người nhận) bởi cơ chế SSL mạnh mẽ nhất hiện nay. Nếu website không sử dụng chứng chỉ số SSL, mọi dữ liệu nhập vào website từ người dùng sẽ được truyền đi nguyên bản trên Internet. Khi đó, nguy cơ dữ liệu bị xâm nhập trong quá trình trao đổi dữ liệu giữa người dùng và website sẽ rất cao.
e) Các Dịch vụ phía máy chủ
Thực hiện xác thực tài liệu; dịch vụ Upload tài liệu cho phép máy trạm thực hiện tải tải liệu đã được ký số hoặc mã hóa lên server phục vụ cho quá trình phân phối tài liệu của ứng dụng (mạng văn phịng điện tử liên thơng).
3.3. Phân tích thiết kế giải pháp
3.3.1. Các chức năng cần thiết cho yêu cầu của phần mềm xác thực
STT Tên chức năng Mô tả chi tiết
1 Chức năng tại máy trạm
1.1 Cung cấp giao diện cho người dùng
Để tạo giao diện tích hợp với ứng dụng cho phép người dùng thực hiện các thao tác cần thiết
1.2 Ghép nối với thư viện mật mã Ghép nối với thư viện mật mã để thực hiện ký số, mã hóa theo yêu cầu của chương trình
1.3 Ghép nối với thiết bị eToKen Ghép nối với thiết bị eToKen khi có yêu cầu về khóa và chứng chỉ lưu trữ trong eToKen
2 Chức năng tại máy chủ
2.1 Tạo giao diện giao tiếp với máy trạm
Tạo giao diện để tải tài liệu trước khi xử lý
2.2 Kiểm tra, xác thực tài liệu Kiểm tra tính đúng đắn của tài liệu được gửi cũng như chứng chỉ người gửi
2.3 Thực hiện Upload tài liệu lên máy chủ
Upload tài liệu lên thư mục hoặc CSDL trên máy chủ
3 Thƣ viện mật mã
3.3 Các phương thức mã hóa Các phương thức mã hóa
3.3.2. Lựa chọn ngơn ngữ lập trình và cơng cụ thiết kế ứng dụng
- Visual Studio 2010 và.NET Framework 4
Visual Studio là bộ cơng cụ hồn chỉnh cho phép xây dựng, triển khai các ứng dụng cho máy để bàn lẫn các ứng dụng web. Visual Studio hỗ trợ nhiều ngơn ngữ lập trình từ C, C++, C#, C#.net, VB..; với Visual Studio 2010 Ultimate SP1 hỗ trợ.NET Framework 4 và Siverlight 5 cần thiết để xây dựng ứng dụng trong giải pháp này.
- Công cụ phát triển Silverlight verson 5.0
Việc lựa chọn Silverlight vì các lý do sau: Silverlight là một plug-in đa nền, đa trình duyệt nhằm cung cấp các ứng dụng cho phép tương tác với tài nguyên tại máy client. Silverlight cung cấp mơ hình lập trình động hỗ trợ AJAX, C#,.. và tích hợp với các ứng dụng Web hiện tại. Silverlight hỗ trợ đến phần lớn cả các trình duyệt web phổ biến hiện nay và chạy trên nền Mac OS hoặc Windows (Hình 3.3). Mặt khác với yêu cầu phục vụ cho ứng dụng ký số và mã hóa, do đó ứng dụng phải được thực thi phía máy trạm để thực hiện giao tiếp với thiết bị eToKen nhằm nâng cao tính an tồn và tồn vẹn thơng tin cho người dùng.
Hình 3.3. Khả năng hỗ trợ của Siverlight 5 đối với các loại hệ điều hành và trình duyệt Web
3.3.3. Phân tích thiết kế các thành phần của mơ hình
Trên cơ sở mơ hình xác thực và bảo mật đã giới thiệu trong mục 3.2, việc phân tích thiết kế phần mềm cần thực hiện các nội dung sau:
- Phân tích thiết kế thư viện mật mã cài đặt phía máy trạm và sử dụng tại máy chủ;
- Phân tích thiết kế dịch vụ phía máy chủ - Thiết kế cơng cụ ký số trên web
3.3.3.1. Thƣ viện mật mã
Thư viện mật mã trong mơ hình này được xây dựng trên cơ sở các tiêu chuẩn bắt buộc áp dụng về chữ ký số và dịch vụ chứng thực chữ ký số được quy định tại Quyết định sô: 59/2008/QĐ-BTTTT ngày 31/12/2008 của Bộ Thông tin và Truyền thơng và các tiêu chuẩn về an tồn thơng tin theo quy định tại Thông tư số 01/2011/TT-BTTTT ngày 04/01/2011 của Bộ trưởng Bộ Thông tin và Truyền thông.
Thư viện mật mã bao gồm các hàm, thủ tục cho phép giao tiếp với thiết bị eToken và các hàm, thủ tục ký số, xác thực văn bản như hình Hình 3.4 và dưới đây:
Hình 3.5. Lƣợc đồ xác thực văn bản ký số
3.3.3.2. Dịch vụ phía máy chủ
Để nâng cao tính an tồn thơng tin, mơ hình xác thực và bảo mật tài liệu thiết kế theo mơ hình client- server trên mơi trường web, trong đó q trình ký số hoặc mã hóa được thực thi tại máy trạm (client), máy chủ (server) chỉ làm nhiệm vụ cung cấp giao diện tại trình duyệt và đẩy dữ liểu lên server.
Dịch vụ WebService với phương thức Upload cho phép ứng dụng sử dụng để đưa dữ liệu file lên máy chủ một cách an tồn. Thuật tốn được mơ tả như sau:
- Đầu vào: tệp dữ liệu từ máy trạm được chọn - Đầu ra: đường dẫn tệp dữ liệu trên máy chủ - Các bước thực hiện:
B1) Đọc dữ liệu từ tệp dữ liệu từ máy trạm được chọn
B2) Thử Ghi dữ liệu vào biến writer (BinaryWriter) và đẩy lên máy chủ B3) Nếu q trình tại B2 thành cơng thì trả về đường dẫn tệp dữ liệu trên máy chủ, nếu khơng được thì trả về đường dẫn rỗng.
- Phương thức Upload chi tiết như sau:
public class SecureUpload : System.Web.Services.WebService {
[WebMethod]
public string Upload(string filename, byte[] rawfile)
{
string folderpath = stem.Web.Hosting.HostingEnvironment.MapPath("~/FileUpload/"); string filepath = WSUtils.getFilePathForUpload(Path.Combine(folderpath,filename)); BinaryWriter writer = null;
try {
// Create a new stream to write to the file
FileStream fstream = System.IO.File.Open(filepath, FileMode.OpenOrCreate); writer = new BinaryWriter(fstream);
// Writer raw data writer.Write(rawfile); writer.Flush(); writer.Close(); try { fstream.Close(); } catch (Exception) { } return filepath; }
catch (Exception) { return ""; }
} }
3.3.4. Công cụ ký số trên web
Mục tiêu thiết kế công cụ ký số trên web nhằm thực hiện việc ký số trực tiếp trên ứng dụng web, tuy nhiên vẫn đảm bảo tính tồn vẹn và tin cậy cho tài liệu được ký (vì tài liệu được ký tại máy trạm và thao tác trực tiếp trên thiết bị eToken). Chương trình ký được phát triển trên siverlight phiên bản 5 và.Net FrameWork 4.0.
Việc thiết kế công cụ ký số đảm bảo các yêu cầu sau:
- Cho phép người dùng lựa chọn văn bản để ký (văn bản định dạng.pdf) - Khi thực hiện lệnh ký số cho văn bản ứng dụng tự động giao tiếp với thiết bị eToken và thư viện mật mã đã cài đặt tại máy trạm để thực hiện ký văn bản.
- Kết quả trả về tệp văn bản được ký và tự động đẩy lên máy chủ - Thông báo cho người dùng kết quả đã thực hiện.
Mô tả chƣơng trình:
Đầu vào: - Tệp văn bản cần ký - Thiết bị eToken
- Thao tác, lệnh từ người dùng Đầu ra: - Tệp văn bản được ký
- Đẩy tệp văn bản ký lên máy chủ
- Thông báo cho người dùng kết quả thực hiện Các bước:
B1 Kiểm tra độ tin cậy (ứng dụng phải được tin cậy với trình duyệt bằng cách sử dụng chứng chỉ để ký cho ứng dụng và cài đặt tại máy trạm. Nếu khơng tin cậy thì cho thơng báo và kết thúc.
B2 Cho phép người dùng duyệt tệp văn bản, nếu tệp văn bản
khơng dúng định dạng thì u cầu duyệt lại tệp văn bản. B3 - Kiểm tra thiết bị eToken, nếu hợp lệ (đã kết nối và nhập
đúng mã PIN) thì thực hiện ký tệp văn bản - Đẩy tệp văn bản đã ký lên máy chủ - Thơng báo ký thành cơng
Mã chương trình: using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Windows; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Shapes; using System.Runtime.InteropServices.Automation; using System.IO; using System.Windows.Browser; using Demo.Service_UpLoad; using System.ServiceModel; namespace Demo {
public partial class MainPage : UserControl { string FileName = ""; string UploadWS_url = ""; public MainPage() { InitializeComponent(); }
public MainPage(IDictionary<string, string> initParams) { InitializeComponent(); try { this.UploadWS_url = initParams["UploadWS"]; } catch (Exception) { } }
private void Button_Click(object sender, RoutedEventArgs e) { if (Application.Current.HasElevatedPermissions) { BrowserFile(); RefresbtnSign(); } else {
MessageBox.Show("Ứng dụng không được tin cậy với trình duyệt");
} }
private void BrowserFile() {
try {
OpenFileDialog fld = new OpenFileDialog(); fld.ShowDialog();
FileName = fld.File.FullName;
lblFileName.Content = FileName.Substring(FileName.LastIndexOf(@"\") + 1); } catch (Exception) { FileName = ""; } }
private void button1_Click(object sender, System.Windows.RoutedEventArgs e) {
try {
dynamic bcycom = AutomationFactory.CreateObject("BCYCryptoClass"); //bcycom.SignPDFByEtoken1(txtInputFile.Text,txtFileDes.Text); MessageBox.Show("Đã ký xong văn bản");
}
catch (Exception ex) { MessageBox.Show(ex.ToString()); } }
private void cmdTestWS_Click(object sender, System.Windows.RoutedEventArgs e) {
this.busyIndicator1.IsBusy = true; cmdTestWS.IsEnabled = false;
WSUploadSoapClient proxy = new WSUploadSoapClient(); if (!string.IsNullOrEmpty(this.UploadWS_url)) {
EndpointAddress MyEndpointAddress = new EndpointAddress(this.UploadWS_url); proxy.Endpoint.Address=MyEndpointAddress;
}
string fname = "", folderpath = ""; if (FileName == "")
{
MessageBox.Show("Bạn hãy chọn văn bản để ký "); this.busyIndicator1.IsBusy = false;
return; }
dynamic bcycom = AutomationFactory.CreateObject("BCYCryptoClass"); byte[] raw = null;
try { raw = (byte[])bcycom.SignPDFByEtoken2(FileName); } catch (Exception) {
MessageBox.Show("Lỗi thao tác ký, hãy thực hiện lại thao tác"); busyIndicator1.IsBusy = false;
RefresbtnSign(); return;
}
getFileName(FileName, ref fname, ref folderpath); proxy.UploadCompleted+=new
EventHandler<UploadCompletedEventArgs>(proxy_UploadCompleted); proxy.UploadAsync(fname, raw);
}
void proxy_UploadCompleted(object sender, UploadCompletedEventArgs e) {
string sFileSign = Part.Substring(Part.LastIndexOf(@"\") + 1);
HtmlPage.Document.GetElementById("txtData").SetProperty("value", Part);//txtData //HtmlPage.Document.GetElementById("txtFileName").SetProperty("value",
sFileSign);//txtFileName
lblFileNameSign.Content = "Văn bản ký số: " + sFileSign; busyIndicator1.IsBusy = false;
//cmdTestWS.IsEnabled = true;
}
public static void getFileName(string filepath, ref string fname, ref string folderpath) { if (filepath == null) return; if (filepath == "") return;
int pos = filepath.LastIndexOf('\\'); if (pos < 0)
return; else {
fname = filepath.Substring(pos + 1); folderpath = filepath.Substring(0, pos); }
}
private void RefresbtnSign() { if (FileName == "") { cmdTestWS.IsEnabled = false; } cmdTestWS.IsEnabled = true; lblFileNameSign.Content = ""; } } }
3.4. Cài đặt giải pháp xác thực và bảo mật
3.4.1. Cài đặt chứng thƣ SSL cho ứng dụng mạng văn phòng điện tử
Để cài đặt an toàn tầng giao vận với giao thức https, máy chủ cần được cấp chứng thư số và chứng thư này phải được tin cậy tức là được một đơn vị có đủ tin cậy cấp. Sau đây là các bước cài đặt chứng chỉ SSL trên máy chủ Window server 2008, IIS 7:
1. Chuẩn bị chứng chỉ SSL
2. Vào Start –> Administrative Tools –> Internet Information Services (IIS) Manager.
3. Nhấn vào tên máy chủ.
5. Từ trình đơn “Actions“, nhấn “Complete Certificate Request.” để mở trình thuật sĩ Complete Certificate Request.
6. Chỉ đến vị trí tập tin chứng chỉ SSL. Ta sẽ được yêu cầu nhập tên đại diện cho chứng chỉ này (nên đặt trùng với tên miền mà đã đăng ký SSL).
7. Nhấn “OK” để cài đặt chứng chỉ.
Chú ý: Có thể sẽ gặp các thông báo lỗi sau: “Cannot find the certificate request associated with this certificate file. A certificate request must be completed on the computer where it was created.” hoặc “ASN1 bad tag value met“. Nếu đang cài đặt SSL lên chính máy chủ mà đã tạo CSR thì trong đa phần các trường hợp có thể làm ngơ trước các thông báo lỗi này. Và chứng chỉ SSL sẽ được cài đặt thành công và hiện trong danh sách. Nếu không hiện trong danh sách cần tạo lại CSR và tiến hành đăng ký một chứng chỉ SSL khác.
8. Từ cửa sổ IIS, chọn tên trang web sẽ được áp dụng bảo mật SSL. 9. Từ trình đơn “Actions“, nhấn “Bindings.” để mở cửa sổ “Site Bindings“.
10. Trong cửa sổ “Site Bindings“, nhấn nút “Add…“.
11. Trong danh sách “Type” chọn https. Ở danh sách “SSL Certificate” chỉ định chứng chỉ số đã được cài đặt thành công ở bước 7.
12. Nhấn “OK.”
Như vậy là chứng chỉ SSL đã được cài đặt và có thể thử truy cập vào website bằng giao thức https.
3.4.2. Cài đặt tích hợp ứng dụng ký số cho ứng dụng mạng văn phòng điện tử điện tử
a) Tích hợp giao diện trên ứng dụng
Cơng cụ ký số được tích hợp trong chức năng cập nhật văn bản đi tại đầu mối các cơ quan trong hệ thống mạng văn phòng điện tử liên thông
<form id="form1" runat="server" style="height:100%"> <div id="silverlightControlHost">
<input type="text" runat="server" id="txtData" value=""/>
<object data="data:application/x-silverlight-2," type="application/x-
silverlight-2" width="100%" height="100%">
<param name="source" value="ClientBin/KySo.xap"/> <param name="onError" value="onSilverlightError" /> <param name="background" value="white" />
<param name="minRuntimeVersion" value="5.0.60401.0" /> <param name="initParams"
value="UploadWS=http://localhost:8691/WSUpload.asmx"/>
<a
href="http://go.microsoft.com/fwlink/?LinkID=149156&v=5.0.60401.0" style="text- decoration:none">
<img src="http://go.microsoft.com/fwlink/?LinkId=161376"
alt="Get Microsoft Silverlight" style="border-style:none"/>
</a> </object><iframe id="_sl_historyFrame" style="visibility:hidden;height:0px;width:0px;border:0px"></iframe> </div> </form>
Trong đó tệp “KySo.xap” là tệp biên dịch từ ứng dụng Siverlight để cung cấp giao diện ký số cho ứng dụng web.
b) Cài đặt thư viện tại máy trạm
Để ứng dụng Siverlight hoạt động được trên máy trạm cần thực hiện các yêu cầu sau:
- Cài đặt thư viện mã hóa (cung cấp các hàm đã xây dựng);
Bước 1: Mở tệp setup.exe trong thư mục cài đặt để tiến hành cài đặt bộ thư viện cho ứng dụng. Nhấn Next để thực hiện bước tiếp theo.
- Cài đặt chứng thư số tại máy trạm: Chứng thư này chính là chứng thư đã ký cho giao diện trên trình duyệt để đảm bảo tính tin cậy giữa trình duyệt và máy chủ;
- Cài đặt trình điều khiển (Driver) cho thiết bị eTocken (thiết bị lưu chứng thư số).
3.5. Kết quả của giải pháp xác thực và bảo mật tài liệu
Sau khi nghiên cứu thành công sản phẩm giải pháp này, sản phẩm đã được cài đặt sử dụng trên hệ thống mạng văn phịng điện tử liên thơng của tỉnh Thái Bình để thực hiện việc ký số trực tại đầu mối các văn thư các cơ quan tỉnh Thái Bình. Như hình dưới đây:
Hình 3.6. Giao diện gửi văn bản đã đƣợc tích hợp chức năng ký số và sản phẩm ký số văn bản điện tử
Với sản phẩm trên giúp các đơn vị dễ dàng thao tác ký văn bản trực tuyến và đảm bảo tính xác thực và tính pháp lý cho văn bản khi gửi trên môi trường mạng.
KẾT LUẬN
Để nghiên cứu giải pháp xác thực và bảo mật tài liệu trong trao đổi văn bản trên môi trường mạng giữa các cơ quan nhà nước, luận văn tập trung nghiên cứu các vấn đề sau:
Nghiên cứu, tìm hiểu một số khái niệm về an tồn thơng tin, đánh giá thực trạng và nhu cầu về an tồn thơng tin trong các cơ quan nhà nước.
Để xây dựng giải pháp đáp ứng được yêu cầu trong thực tế, luận văn tập trung tổng hợp, phân tích một số cơ sở mật mã cần thiết để áp dụng trong việc bảo mật thông tin trên môi trường mạng theo tiêu chuẩn nhà nước đã quy định (đối với mã hoá phi đối xứng và chữ ký số, áp dụng lược đồ RSA-OAEP theo chuẩn PKCS#1 phiên bản 2.1; đối với mã hóa đối xứng áp dụng thuật tốn mã khối AES).
Trên cơ sở các nghiên cứu về mặt lý thuyết, luận văn tập trung nghiên cứu, xây dựng các giải pháp xác thực tài liệu trong trao đổi văn bản trên môi trường mạng giữa các cơ quan nhà nước.
Trong thời gian tới, tác giả sẽ tiếp tục nghiên cứu mở rộng các tính như xác thực đăng nhập, mã hóa dữ liệu trong trao đổi tài liệu cho các ứng dụng. Với thời gian và trình độ cịn hạn chế, trong luận văn này không tránh khỏi sơ