3.3.1. Cơ sở lý thuyết
a) Thuật toán chữ ký chống chối bỏ
Trong các sơ đồ của chữ ký điện tử, việc kiểm thử tính đúng đắn của chữ ký là do ngƣời nhận thực hiện. Nhằm tránh việc nhân bản chữ ký để sử dụng nhiều lần, tốt nhất là để ngƣời gửi tham gia trực tiếp vào việc kiểm thử chữ ký. Điều đó đƣợc thực hiện bằng một giao thức kiểm thử, dƣới dạng một giao thức mời hỏi và trả lời.
Giả sử tài liệu cùng chữ ký từ G gửi đến N. Khi N yêu cầu G cùng kiểm thử chữ ký, thì một vấn đề nảy sinh là làm sao để ngăn cản G chối bỏ một chữ ký mà anh ta đã ký, G có thể tuyên bố rằng chữ ký đó là giả mạo ?
Để giải quyết tình huống trên, cần có thêm giao thức chối bỏ, bằng giao thức này, G có thể chứng minh một chữ ký là giả mạo. Nếu G từ chối tham gia vào giao thức đó, thì có thể xem rằng G không chứng minh đƣợc chữ ký đó là giả mạo.
Nhƣ vậy sơ đồ chữ ký không phủ định đƣợc gồm 3 phần: một thuật toán ký, một giao thức kiểm thử, và một giao thức chối bỏ.
* Chuẩn bị các tham số:
Chọn số nguyên tố p sao cho bài toán log rời rạc trong Zp là khó.
p = 2*q+1, q cũng là số nguyên tố.
Gọi P là nhóm nhân con của Zp* theo q (P gồm các thặng dƣ bậc hai theo mod p). Chọn phần tử sinh g của nhóm P cấp q.
Đặt P = A = P, K = (p, g, a, h): aZ q*, hgamod p
1). Thuật toán ký: Dùng khoá bí mật k’ = a để ký lên x: Chữ ký là y = Sig k’ (x) = x a mod p.
2). Giao thức kiểm thử: Dùng khoá công khai k” = (p, g, h).
Với x, yP, ngƣời nhận N cùng ngƣời gửi G thực hiện giao thức kiểm thử: 1/. N chọn ngẫu nhiên e1, e2Zq*
2/. N tính c = ye1 he2 mod p, và gửi cho G. 3/. G tính d = c1/a mod qmod p và gửi cho N.
4/. N chấp nhận y là chữ ký đúng, nếu dx e1 ge2 mod p
3). Giao thức chối bỏ:
1/. N chọn ngẫu nhiên e1, e2Zq*
2/. N tính c = ye1 he2 mod p, và gửi cho G. 3/. G tính d = c1/a mod qmod p và gửi cho N.
4/. N thử điều kiện dx e1ge2 (mod p). Nếu đúng ==> 5/. 5/. N chọn ngẫu nhiên f1, f2Zq*.
6/. N tính C = yf1βf2mod p và gửi cho G. 7/. G tính D = C1/a(mod q) mod p và gửi cho N.
8/. N thử điều kiện Dx f1gf2 (mod p). Nếu đúng == > 9/. 9/. N kết luận y là chữ ký giả mạo nếu:
(d* α1/e2)f1 (D* α1/f2)e1 (thaybằngg).
b) Bảo vệ an toàn hệ thống trong mạng riêng ảo
Nhƣ chúng ta đã biết kĩ thuật đƣờng hầm là lõi cơ bản của VPNs. Bên cạnh đó do vấn đề bảo mật của một số thông tin quan trọng, ngƣời ta cũng sử dụng kết hợp một số phƣơng pháp bảo mật khác.
Để bảo mật dữ liệu trong mạng riêng ảo ta sử dụng các phƣơng pháp mã hóa nhằm đảm bảo che dấu đƣợc dữ liệu trƣớc xâm phạm không mong muốn từ tác nhân bên ngoài. Các thuật toán mã hóa thƣờng sử dụng: các hệ thống mật mã khóa đối xứng (Symmetric Key Cryptosystem), và các hệ thống mật mã
(Public Key Cryptosystem).
Ngoài ra, để bảo toàn dữ liệu trong công nghệ mạng riêng ảo, ngoài sử dụng các hàm băm toán học, ngƣời ta còn kết hợp sử dụng chữ ký số nhằm đảm bảo rằng dữ liệu truyền trên môi trƣờng mạng sẽ đƣợc bảo toàn khi đến đích.
Bên cạnh đó vấn đề xác thực cũng là vấn đề mấu chốt làm nên sự an toàn của công nghệ mạng riêng ảo. Xác thực trong công nghệ mạng riêng ảo giải quyết hai vấn đề cơ bản, đó là xác thực nguồn gốc dữ liệu và xác thực toàn vẹn dữ liệu.
3.3.2. Xây dựng mạng riêng ảo
a) Mô hình và yêu cầu bài toán
- Mô hình hệ thống thử nghiệm:
Hình 3.1: Mô hình mô phỏng mạng riêng ảo cơ bản
- Yêu cầu bài toán:
Cấu hình triển khai hệ thống sao cho máy trạm thông qua internet sẽ kết nối nội bộ tới Server và gửi nhận dữ liệu với nó. Ngoài ra với mỗi tài khoản sẽ có những quyền yêu cầu ứng dụng khác nhau với server trung tâm.
b) Cấu hình triển khai
*) Cấp phát địa chỉ IP cho các thiết bị:
- Cổng Ethernet 0/2 của ASA 5520 đƣợc gán địa chỉ IP là 192.168.1.1/24. - Cổng Ethernet 0/1 của ASA ta gán cho địa chỉ 10.0.1.1/24.
- Máy tính Client có địa chỉ IP là 192.168.3.2/24
- Máy Server nội bộ công ty đƣợc gán địa chỉ IP là 10.0.1.4/24.
- Router 3640 đƣợc gán địa chỉ IP 192.168.1.2 /24 cho cổng FastEthernet0/0. Gán địa chỉ IP 192.168.2.1 cho cổng Serial 1/0.
- Router mô phỏng của ISP có địa chỉ IP cổng serial nối với Router 3640 là 192.168.2.2. Địa chỉ IP của cổng FastEthernet 0/0 nối với máy Client là 192.168.3.1 .
- Cấu hình Firewall ASA 5520 (xem chi tiết phần phụ lục) - Cấu hình máy chủ dịch vụ.
- Cài đặt VPN client trên máy khách
c) Kiểm tra và thử nghiệm
Bƣớc 1: Chạy VPN client trên máy khách
Hình 3.2: Giao diện cài đặt thông số trên VPN client.
Trong đó:
- Connection Entry: Đặt tên kết nối ( đặt tùy ý mang tính gợi nhớ). - Description : Giải thích về kết nối.
- Host: địa chỉ cổng outside của ASA 5510 (IP: 192.168.1.1) - Name: tên Group của User.
- Password: password chứng thực group.
- Confim password: Xác nhận lại password của group Bƣớc 2: Chứng thực ngƣời dùng
Sau khi kết nối thành công đến ASA 5510, một hộp thoại hiện lên yêu cầu xác thực ngƣời dùng. Vì khi kết nối vào hệ thống VPN thì mỗi User sẽ có những quyền cao thấp khác nhau, vì thế quá trình xác thực này giúp phân quyền sử dụng cũng nhƣ điều khiển tài nguyên hệ thống cho mỗi User.
Hình 3.3 : Giao diện đăng nhập
Bƣớc 3: Kiểm tra kết nối.
Sau khi kết nối thành công và xác thực ngƣời dùng thành công, giao diện của phần mềm VPN Client sẽ hiện thị nhƣ hình sau:
Hình 3.4: Trạng thái báo kết nối thành công
Và máy Client có địa chỉ IP thực là 192.168.3.2, sau khi VPN đến mạng nội bộ sẽ đƣợc cấp một địa chỉ IP trong dải là 30.0.2.10- 30.0.2.100.
3.3.3. Xây dựng chƣơng trình chữ ký chống chối bỏ (Chi tiết phần phụ lục)
a) Các đoạn mã chương trình (Xem chi tiết phần phụ lục) b) Giao diện chương trình
- Giao diện ký:
Khi ngƣời dùng muốn ký lên một dữ liệu số hoặc văn bản, ngƣời dùng nhập vào dữ liệu cần ký lên trong mục “Văn bản”. Sau khi nhập văn bản thì bấm nút Ký để ký lên văn bản đó và chƣơng trình sẽ cho ra chữ ký của ngƣời dùng (hình 3.6).
Hình 3.6: Giao diện ký
- Giao diện kiểm thử chữ ký:
Khi xảy ra chanh chấp và chối bỏ chữ ký của khách hàng thì cần có giao thức chối bỏ để kiểm tra xem chữ ký đó có phải của khách hàng hay không. Giao diện chƣơng trình mô tả quy trình chối bỏ chữ ký giữa ngƣời nhận và ngƣời gửi. Nhập chữ ký và văn bản mà ngƣời gửi đã ký lên đó vào chƣơng trình kiểm tra. Sau đó bấm vào từng nút của quy trình chối bỏ sẽ cho ra kết quả chữ ký có đúng là của ngƣời gửi hay không hay là đã bị giả mạo.
Hình 3.7: Giao diện kiểm thử chữ ký
- Giao diện giao thức chối bỏ chữ ký:
Khi xảy ra chanh chấp và chối bỏ chữ ký của khách hàng thì cần có giao thức chối bỏ để kiểm tra xem chữ ký đó có phải của khách hàng hay không. Giao diện chƣơng trình mô tả quy trình chối bỏ chữ ký giữa ngƣời nhận và ngƣời gửi. Nhập chữ ký và văn bản mà ngƣời gửi đã ký lên đó vào chƣơng trình kiểm tra. Sau đó bấm vào từng nút của quy trình chối bỏ sẽ cho ra kết quả chữ ký có đúng là của ngƣời gửi hay không hay là đã bị giả mạo.
Với mô hình mô phỏng thực nghiệm đã mô tả đƣợc phần nào cách thức triển khai giải pháp mạng riêng ảo và ứng dụng làm hành lang an toàn cho các giao dịch thƣơng mại điện tử. Ngoài ra việc thử nghiệm sử dụng chữ ký số chống chối bỏ trong ký kết hợp đồng điện tử đã giải quyết đƣợc vấn đề an toàn và chống chối bỏ hợp đồng trong các giao dịch điện tử. Qua quá trình thử nghiệm cho ta thấy đƣợc các biện pháp bảo vệ hệ thống giao dịch thƣơng mại điện tử trong công nghệ mạng riêng ảo, và từ đây ta cũng có thể kết hợp cùng các biện pháp an ninh bảo mật khác để đem đến một hệ thống giao dịch điện tử an toàn, ổn định.
KẾT LUẬN
Công nghệ mạng riêng ảo là một công nghệ không mới, nhƣng nó đã và đang mang lại rất nhiều lợi ích cho các nhà cung cấp dịch vụ viễn thông, công nghệ thông tin nói riêng và những ngƣời sử dụng các dịch vụ viễn thông công nghệ thông tin nói chung. Đây là công nghệ mở ra một sự phát triển mới của nền công nghệ thông tin, nó sẽ phát triển lợi ích của internet là kết nối mọi ngƣời gần nhau hơn, ngoài ra nó lại đảm bảo đƣợc các kết nối đó là an toàn.
Ngoài ra với sự phát triển của các giao dịch thƣơng mại điện tử nhƣ ngày nay, vấn đề an toàn cho các hệ thống giao dịch đã và đang là vấn đề quan tâm hàng đầu của những nhà cung câp dịch vụ. Điều đó sẽ quyết định sự thành bại của mỗi doanh nghiệp tham gia vào thƣơng mại điện tử.
Với mong muốn nắm rõ để nâng cao hơn sự an toàn cho các giao dịch thƣơng mại điện tử, đề tài “Nghiên cứu mạng riêng ảo và ứng dụng trong thƣơng mại điện tử” đã đƣa ra các khái niệm cơ bản về công nghệ mạng riêng ảo và thƣơng mại điện tử. Đề từ đó ứng dụng đƣợc các công cụ và khả năng bảo vệ hệ thống của công nghệ mạng riêng ảo vào quy trình ký kết hợp đồng điện tử. Việc ứng dụng công nghệ mạng riêng ảo vào quy trình ký kết hợp đồng điện tử đã giải quyết đƣợc các vấn đề cấp bách mà quy trình này đặt ra, đó là đảm bảo đƣợc các vấn đề về bảo mật, toàn vẹn thông tin và xác thực chống chối bỏ giao dịch ký kết hợp đồng điện tử. Và với mong muốn này, để tài sẽ giúp các nhà quản lý có thêm một hƣớng để kết hợp lợi ích của công nghệ mạng riêng ảo vào làm hành lang an toàn cho các giao dịch thƣơng mại điện tử.
Hƣớng phát triển tiếp theo
Mạng riêng ảo là công nghệ không phải là mới nhƣng thực sự đƣợc áp dụng tại việt nam chƣa nhiều. Hƣớng phát triển tiếp theo là nghiên cứu sâu hơn về thƣơng mại điện tử và vấn đề bảo mật trong mạng riêng ảo để từ đó sẽ có sự kết hợp tốt hơn nhằm góp phần phát triển mạnh hơn các giao dịch thƣơng mại điện tử an toàn tại việt nam. Cuối cùng tôi mong muốn đƣợc sử dụng những kiến thức thu đƣợc để tham gia vào triển khai rộng rãi công nghệ mạng riêng ảo với nhiều lĩnh vực hơn nữa tại Việt Nam.
Xin chân thành cảm ơn!.
TÀI LIỆU THAM KHẢO
Tiếng Việt
[1]. Hoàng Đức Thọ (2006), An toàn mạng riêng ảo, NXB Học viện kỹ thuật mật mã.
[2]. Trần Công Hùng (2002), Kỹ thuật mạng riêng ảo, NXB Học viện Bƣu chính viễn thông.
[3]. Trần Văn Hòe (2007), Thương mại điện tử căn bản, NXB Đại học kinh tế Quốc dân. [4]. Trịnh Nhật Tiến (2007), Giáo trình môn An toàn dữ liệu.
[5]. Phan Đình Diệu (2002), Lý thuyết mật mã & An toàn thông tin, NXB Đại học Quốc Gia Hà Nội.
Tiếng Anh
[6] Cisco Secure Virtual Private Networks (Volume 1,2) Copyright © 2001, Cisco System, Inc. [7] VPN technologies: Definitions and Requirements Copyright © 2002, VPN Consortium. [8] Public Key Infranstructure Copyright © 2001, SecGo Solution Oy.
Các trang Web [9]. http://vnpro.org/ [10].http://www.itexpert.org/ [11]. http://www.vnec.org
PHỤ LỤC
Cấu hình VPN trên Firewall ASA
ASA# show startup-config : Saved
: Written by enable_15 at 19:26:27.446 UTC Fri August 20 2012! ASA Version 7.0(7)
!
hostname ASA
enable password 8Ry2YjIyt7RRXU24 encrypted names dns-guard ! interface Ethernet0/0 nameif outside security-level 0 ip address 192.168.1.1 255.255.255.0 ! interface Ethernet0/1 nameif inside security-level 100 ip address 10.0.1.1 255.255.255.0 ! interface Ethernet0/2 shutdown no nameif no security-level no ip address ! interface Management0/0 shutdown no nameif no security-level no ip address !
passwd 2KFQnbNIdI.2KYOU encrypted ftp mode passive
access-list vpnra extended permit ip 10.0.1.0 255.255.255.0 30.0.2.0 255.255.255.0 access-list vpnra extended permit ip 10.0.1.0 255.255.255.0 40.0.2.0 255.255.255.0 access-list vpnra extended permit ip 10.0.1.0 255.255.255.0 50.0.2.0 255.255.255.0 pager lines 24
mtu outside 1500 mtu inside 1500
ip local pool testpool 30.0.2.10-30.0.2.100 ip local pool admin 40.0.2.20-40.0.2.21 ip local pool nhanvien 50.0.2.20-50.0.2.100 asdm image disk0:/asdm-507.bin
no asdm history enable arp timeout 14400
nat (inside) 0 access-list vpnra
route outside 0.0.0.0 0.0.0.0 192.168.1.2 1 timeout xlate 3:00:00
timeout conn 1:00:00 half-closed 0:10:00 udp 0:02:00 icmp 0:00:02 timeout sunrpc 0:10:00 h323 0:05:00 h225 1:00:00 mgcp 0:05:00 timeout mgcp-pat 0:05:00 sip 0:30:00 sip_media 0:02:00
timeout uauth 0:05:00 absolute
username testuser password pU4oyO2h2X5.LJuf encrypted username admmin password QxNPkKer0BBRUeCu encrypted username nhanvien password jECAPm8Kwyiplbyk encrypted no snmp-server location
no snmp-server contact
snmp-server enable traps snmp authentication linkup linkdown coldstart no service password-recovery
crypto ipsec transform-set myset esp-des esp-md5-hmac crypto dynamic-map dyn1 1 set transform-set myset crypto dynamic-map dyn1 1 set reverse-route crypto map mymap 10 ipsec-isakmp dynamic dyn1 crypto map mymap interface outside
isakmp identity address isakmp enable outside
isakmp policy 2 authentication pre-share isakmp policy 2 encryption des
isakmp policy 2 hash md5 isakmp policy 2 group 2
isakmp policy 2 lifetime 86400
isakmp policy 65535 authentication pre-share isakmp policy 65535 encryption 3des
isakmp policy 65535 hash sha isakmp policy 65535 group 2
isakmp policy 65535 lifetime 86400 tunnel-group testgroup type ipsec-ra tunnel-group testgroup general-attributes address-pool testpool
tunnel-group testgroup ipsec-attributes pre-shared-key *
tunnel-group admin type remote-access tunnel-group admin general-attributes address-pool admin
tunnel-group admin ipsec-attributes pre-shared-key *
tunnel-group nhanvien type remote-access tunnel-group nhanvien general-attributes address-pool nhanvien
pre-shared-key * telnet timeout 5 ssh timeout 5 console timeout 0 ! class-map inspection_default match default-inspection-traffic ! policy-map global_policy class inspection_default inspect dns maximum-length 512 inspect ftp inspect h323 h225 inspect h323 ras inspect netbios inspect rsh inspect rtsp inspect skinny inspect esmtp inspect sqlnet inspect sunrpc inspect tftp inspect sip inspect xdmcp !
service-policy global_policy global
Cryptochecksum:4659429d7eeda76402a31d96e539b955
Kiểm tra cấu hình ASA 5510
ASA(config)# show ip local pool testpool
Begin End Mask Free In use 30.0.2.10 30.0.2.100 0.0.0.0 90 1 Available Addresses: 30.0.2.11 30.0.2.12 30.0.2.13 30.0.2.14 … 30.0.2.97 30.0.2.98 30.0.2.99 30.0.2.100
Một số đoạn code chƣơng trình
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Drawing.Drawing2D; using System.Text;
using System.Windows.Forms;
namespace SignatureDigital
{
public partial class FrmHome : Form
{
public FrmHome()
{
this.StartPosition = FormStartPosition.CenterScreen;
InitializeComponent();
SetStyle(ControlStyles.ResizeRedraw, true);
this.tabControlPanelSign.Style.BackColor1.Color =
System.Drawing.Color.White;
this.tabControlPanelSign.Style.BackColor2.Color =
System.Drawing.Color.FromArgb(((int)(((byte)(188)))), ((int)(((byte)(233)))),
((int)(((byte)(252)))));
this.tabControlPanelTest.Style.BackColor1.Color =
System.Drawing.Color.White;
this.tabControlPanelTest.Style.BackColor2.Color =
System.Drawing.Color.FromArgb(((int)(((byte)(188)))), ((int)(((byte)(233)))),
((int)(((byte)(252)))));
this.tabControlPanelDeny.Style.BackColor1.Color =
System.Drawing.Color.White;
this.tabControlPanelDeny.Style.BackColor2.Color =
System.Drawing.Color.FromArgb(((int)(((byte)(188)))), ((int)(((byte)(233)))),
((int)(((byte)(252)))));
}
protected override void OnPaintBackground(PaintEventArgs e)
{
Rectangle rc = ClientRectangle;
if (rc.Width == 0 || rc.Height == 0) return;
using (LinearGradientBrush brush = new LinearGradientBrush(rc,
Color.White, Color.FromArgb(188, 233, 252), 90F)) {
e.Graphics.FillRectangle(brush, rc); }
}
ProcessSignature authen = new ProcessSignature();
private void txtPrivateKey_KeyPress(object sender, KeyPressEventArgs e)
{
if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) && (e.KeyChar
!= '.' ||
(e.KeyChar == '.' && (txtPrivateKey.Text.Length == 0 ||
txtPrivateKey.Text.IndexOf('.') != -1))))
e.Handled = true;
}
//================Convert string to time==================
private long convertStringToLongOld(string strChuoi)
{
char[] buf;
int ch;
String sbuf = strChuoi;
String strso = "";
buf = sbuf.ToCharArray();
for (int i = 0; i < buf.Length; i++) {
ch =(int)buf[i]; //chuyen doi tu ký tự thứ i sang dang so và gán vào
biến ch
strso += ch.ToString();//ghép các số của ký tự i vào một string
}
long kq = long.Parse(strso);
return kq;
}
private long convertStringToLong(string strChuoi)
{
long lNumber = 0;
foreach (char c in strChuoi.ToCharArray())
lNumber += Convert.ToInt64(c);
return lNumber;
}
//---End of convert string to long---