Tải bản đầy đủ
Hình 3.5: Giao diện kiểm tra kết nối VPN

Hình 3.5: Giao diện kiểm tra kết nối VPN

Tải bản đầy đủ

64

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.

65

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.

Hình 3.8: Giao diện chối bỏ chữ ký

66

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.

67

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!.

68

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

69

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

70

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
tunnel-group nhanvien ipsec-attributes

71

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
using
using
using
using
using

System;
System.Collections.Generic;
System.ComponentModel;
System.Data;
System.Drawing;
System.Drawing.Drawing2D;

72

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 = "";

73

buf = sbuf.ToCharArray();
//duyệt từng ký tự trong mảng
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--------------------------------------

private void btnSign_Click_1(object sender, EventArgs e)
{
//Lấy chữ ký tại đây
long privateKey = 0;
if (txtPrivateKey.TextLength == 0)
{
MessageBox.Show("Bạn cần nhập khóa riêng của khách hàng vao");
txtPrivateKey.Focus();
return;
}
privateKey = long.Parse(txtPrivateKey.Text);
//Văn bản
if (txtMessage.TextLength == 0)
{
MessageBox.Show("Bạn cần nhập văn bản");
txtMessage.Focus();
return;
}
long x = 0;
if(long.TryParse(txtMessage.Text.Trim(),out x)==false)
x = convertStringToLong(txtMessage.Text.Trim());
//Lấy chữ ký
txtSignature.Text = authen.Sig(x, privateKey).ToString();
}
private
{
int
int
int
int
int

void btnTestC_Click(object sender, EventArgs e)
e1 = int.Parse(txtE1.Text);
e2 = int.Parse(txtE2.Text);
y = int.Parse(txtTestY.Text);
h = int.Parse(txtH.Text);
p = int.Parse(txtP.Text);

long temp1 =LuyThua(y, e1, p);// (long)Math.Pow(y, e1);
long temp2 = LuyThua(h, e2, p);// (long)Math.Pow(h, e2);
long c = (temp1 * temp2) % p;
txtTestC.Text = c.ToString();

74

btnTestD.Enabled = true;
}
#region======================Tinh luy thua theo modoule z=============
static long LuyThua(long x, long n, long m)
{
long lt=0;
if (n == 0)
return 1;
if (n == 1)
return x;
lt = LuyThua(x, n / 2, m);
if (n % 2 == 0)
return lt *lt % m;
else
return lt * lt * x % m;
}
#endregion============================================================
#region================Nghich dao cua mot so trong module================
int NghichDao(int m, int b)
{
int a1 = 1, a2 = 0, a3 = m;
int b1 = 0, b2 = 1, b3 = b;
//int qv;
int t1, t2, t3;
while (true)
{
if (b3 == 0) return 0;
if (b3 == 1) return b2;
int qv = a3 / b3;
t1 = a1 - qv * b1;
t2 = a2 - qv * b2;
t3 = a3 - qv * b3;
a1 = b1;
a2 = b2;
a3 = b3;
b1 = t1;
b2 = t2;
b3 = t3;
}
}
#endregion===============================================================
private void btnTestD_Click(object sender, EventArgs e)
{
//-------tinh a^-1 mod q-------int a = int.Parse(txtPrivateKey.Text.Trim());
int q = 233;
int m = NghichDao(q, a);
int c=int.Parse(txtTestC.Text);
int p=int.Parse(txtP.Text);
long d = LuyThua(c, m, p);
txtTestD.Text = d.ToString();
CalculateResult();
btnTest.Enabled = true;