Tải bản đầy đủ
4 Giao thức bảo mật ứng dụng chữ ký số cho các văn bản pháp quy trên trang thông tin

4 Giao thức bảo mật ứng dụng chữ ký số cho các văn bản pháp quy trên trang thông tin

Tải bản đầy đủ

58

Trong việc bảo mật thông tin là yếu tố quan trọng để giải quyết sự sống còn
của một tổ chức, công ty hay doanh nghiệp. Với sự phát triển nhanh chóng về công
nghệ thông tin đã mang lại nhiều tiện ích cho con người đồng thời cũng đặt ra một
nhu cầu cần thiết về sự an toàn và bảo mật. Và SSL (Secure Socket Layer) chính là
giải pháp tốt nhất hiện nay đáp ứng những nhu cầu đó và nó được coi là “Lá chắn
cuối cùng” trong bảo mật.
Giao thức SSL ban đầu được phát triển bởi Netscape version 1.0 thì đã được
công bố rộng rãi, version 2.0 được công bố tháng 2/1995 nhưng chứa nhiều lỗ hổng
bảo mật và sau cùng đưa đến mô hình SSL version 3.0 được ban hành 1996.
SSL giải quyết vấn đề bằng cách cho phép 1 cách tùy chọn mỗi bên trao đổi
và có thể chắc chắn về định danh của phía đối tác trong 1 quá trình gọi là
uthentication (xác thực). Một khi các bên đã được xác thực SSL cung cấp 1 kết nối
được mã hóa giữa 2 bên để truyền bảo mật các gói tin. Việc mã hóa trong quá trình
trao đổi thông tin giữa 2 bên cung cấp sự riêng tư bí mật. Thuật toán mã hóa được
sử dụng với SSL bao gồm hàm băm mã hóa, tương tự như 1 checksum. Nó đảm bảo
rằng dữ liệu không bị thay đổi trong quá trình truyền dẫn. Hàm băm mã hóa giải
quyết vấn đề toàn vẹn dữ liệu.
Trong khi SSL cung cấp tính xác thực, tính bảo mật và toàn vẹn dữ liệu, nó
không cung cấp non-repudiation (tính không từ chối). Non-repudiation có nghĩa là
khi 1 đối tượng gửi 1 gói tin, thì sau đó không thể phủ nhận việc mình đã gửi gói tin
đó. Khi 1 chữ ký số tương đương được liên kết với 1 gói tin, việc trao đổi này sau
đó có thể được chứng minh SSL 1 mình nó không cung cấp non-repudiation.
b) Tiến trình SSL
Việc trao đổi trên mạng sử dụng SSL với việc trao đổi thông tin qua lại giữa
client và server. Sự trao đổi thông tin này gọi là SSL handshake.
+ Đàm phán Cipher suite:
Một phiên bản SSL bắt đầu với việc đàm phán giữa client và server xem
cipher suite nào mà chúng sẽ sử dụng. Một cipher suite là 1 tập các thuật toán mã
hóa và kích thước khóa mà máy tính có thể dùng để mã hóa dữ liệu. Một cipher
suite bao gồm thông tin về các thuật toán trao đổi khóa công khai và các thuật toán

59

thỏa thuận khóa và các hàm băm mã hóa. Client nói với server các cipher suite nào
có sẵn và server lựa chọn cipher suite tốt nhất có thể chấp nhận.
+ Xác thực server
Trong SSL, bước xác thực là tùy chọn, việc xác thực server cho phép client
chắc chắn rằng chính server này đại diện cho đối tượng mà client tin tưởng.
Để chứng minh server thuộc về tổ chức mà nó khẳng định là nó đại diện,
server phải trình chứng chỉ khóa công khai của nó cho client. Nếu chứng chỉ này là
hợp lệ, client có thể chắc chắn về định danh server.
+ Gửi dữ liệu đã mã hóa:
Giờ cả client và server có thể truy cập đến khóa bí mật chung. Với mỗi gói
tin, chúng dùng đến hàm băm mã hóa, đã được chọn trong bước đầu của tiến trình,
và chia sẻ thông tin bí mật để tính toán 1 HMAC nối thêm vào gói tin. Sau đó chúng
dùng khóa bí mật và thuật toán khóa bí mật đã được đàm phán trước đó để mã hóa
dữ liệu và HMAC an toàn. Client và server giờ có thể trao đổi thông tin với nhau
một cách an toàn với các dữ liệu đã băm và mã hóa.
c) Giao thức SSL
Giao thức SSL handshake là sự trao đổi thông tin giữa client và server trước
khi gửi các gói tin đã được mã hóa, phần này sẽ mô tả chi tiết chuỗi tuần tự các gói
tin được trao đổi trong SSL handshake. Các gói tin mà chỉ được gửi trong một
trường hợp nào đó được đánh dấu là tùy chọn

60

Client
1. Client hello

Server
2. Server hello
3. Certificate
4. Certificate request
5. Server key exchange

Options
Options
Options

6. Server hello done
7. Certificate

Options

8. Client key exchange
9. Certificate verify

Options

10. Change cipher spec
11. Finish
12. Change cipher spec
13.Finished
14. Encrypted data

14. Encrypted data

15. Close Message

15. Close Message
Hình 3.7 Các gói tinh trong SSL

Mô tả các gói tin SSL được gửi theo thứ tự sau:
+ Client hello: client gửi đến server các thông tin bao gồm phiên bản SSL
cao nhất và 1 danh sách các cipher suite mà nó hỗ trợ bao gồm các thuật toán mã
hóa và kích thước khóa.
+ Server hello: server chọn ra phiên bản SSL cao nhất và cipher suite tốt nhất
mà cả client và server hỗ trợ và gửi thông tin này về client.
+ Certificate: server gửi cho client 1 chứng chỉ hoặc 1 chuỗi chứng chỉ. Về
cơ bản 1 chuỗi chứng chỉ bắt đầu bằng chứng chỉ khóa công khai của server và kết
thúc bằng chứng chỉ gốc cảu một tổ chức có thẩm quyền chứng chỉ. Gói tin này là
tùy chọn, nhưng nó được dùng bất cứ khi nào xác thực server là cần thiết
+ Certificate request: nếu server cần xác thực client, nó gửi cho client 1 yêu
cầu xem chứng chỉ. Trong các ứng dụng internet, gói tin này hiếm khi được gửi đi.
+ Server key exchange: server gửi cho client 1 gói tin trao đổi khóa server
trong khi khóa công khai được gửi.

61

+ Server hello done: server nói với client rằng nó hoàn thành các gói tin đàm
phám ban đầu.
+ Certificate: nếu server cần chứng chỉ từ client trong gói tin 4, client gửi
chuỗi chứng chỉ của nó, cũng giống như server làm trong gói tin 3.
+ Client key exchange: client sinh ra thông tin được dùng để tạo ra khóa
trong mã hóa đối xứng. Với RSA, client mã hóa thông tin khóa này bằng khóa công
khai của server rồi gửi đến server.
+ Certificate verify: gói tin này được gửi khi client trình ra chứng chỉ. Mục
tiêu của nó là cho phép server hoàn thành tiến trình xác thực client. Khi gói tin này
được dùng. Client gửi thông tin với chữ ký số tạo bằng hàm băm mã hóa. Khi server
giải mã thông tin này bằng khóa công khai của client, server có thể xác thực client.
+ Change cipher spec: client gửi gói tin bảo server thay đổi kiểu mã hóa.
+ Finished: client nói với server rằng nó sẵn sàng để bắt đầu trao đổi dữ liệu
an toàn.
+ Change cipher spec: server gửi gói tin bảo client thay đổi kiểu mã hóa.
+ Finished: server nói với client rằng nó sẵn sàng để bắt đầu trao đổi dữ liệu
an toàn. Kết thúc SSL handshake.
+ Encrypted data: client và server trao đổi với nhau, sử dụng thuật toán mã
hóa đối xứng và hàm băm mã hóa đã đàm phám ở 1 và 2 và dùng khóa bí mật mà
client gửi cho server.
+ Closed gói tin: kết thúc 1 kết nối, mỗi bên gử 1 gói tin close-notify để
thông báo đầu kia biết kết nối bị đóng.
3.4.2 Bảo mật hệ điều hành
a) Bảo mật hệ điều hành Windows
Sử dụng phần cứng an toàn: hiện nay có rất nhiều phần cứng như RAM,
USB, HDD, Keylogger cho phép ăn trộm dữ liệu của người dùng, việc lựa chọn
phần cứng chính hãng có xuất sứ rõ ràng là vô cùng quan trọng cho mọi nền tảng.
Sử dụng Windows có bản quyền cho phép cập nhập những bản vá lỗi và
nhận được sự hỗ trợ trực tiếp của hãng là cho hệ thống bạn an toàn hơn.
Thiết lập tự động Upgrade để có thể vá các lỗ hổng bảo mật

62

Thiết lập tường lửa cho máy tính: cho phép bảo vệ máy tính trước các mối
hiểm họa như tấn công lỗ hổng bảo mật, bùng nổ của worm…
Mã hóa ổ cứng với tính năng Bitlocked của Microsoft: hệ điều hành
Windows cho phép mã hóa toàn bộ ở cứng, điều này tránh thất thoát dữ liệu khi bị
mất máy tính, và chống được kẻ bẻ khóa máy tính.
Tắt tất cả các dịch vụ và ứng dụng không cần thiết giúp bạn giảm thiểu nguy
cơ bị tấn công vào máy tính.
Cài đặt các chương trình bảo vệ (Endpoint Security): các chương trình bảo
vệ giúp bạn giám sát toàn bộ hệ thống máy tính từ các quá trình I/O, đọc ghi dữ liệu
hay các truy cập mạng.
Thiết lập Ipsec cho các dịch vụ mạng thiếu an toàn: khi sử dụng dịch vụ
thiếu an toàn khi thông tin truyền trên mạng, bạn hoàn toàn có khả năng sử dụng
tính năng Ipsec để mã hóa thông tin truyền trên mạng. Ipsec đảm bảo dữ liệu của
bạn sẽ luôn an toàn.
b) Bảo mật hệ điều hành Linux
Sử dụng phiên bản Linux được phân phối bởi một tổ chức có uy tín như Red
Hat, Ubuntu và một vài nhà phân phối khác, sử dụng phiên bản mới nhất.
Khi triển khai cài đặt dịch vụ mới cần kiểm tra dịch vụ đó có những lỗ hổng
gì có thể xảy ra.
Sử dụng các phần mềm bảo mật khác cài đặt trên máy tính Linux (IDS/IPS,
Firewall).
Cài đặt Firewall Iptable trên Redhat:
3.4.3 Bảo mật cho ứng dụng DNS
Hệ thống tên miền (DNS) được sử dụng để xác định từ tên máy chủ đến
những địa chỉ IP trên internet và trên mạng cá nhân trên nền tảng TCP/IP. Máy
chủ DNS thường là mục tiêu mà những tin tặc khai thác và tấn công, tuy nhiên bạn
cũng có thể bảo mật chi nhưng máy chủ này bằng cách:
a) Sử dụng DNS Forwarder:
DNS Forwarder (Trình chuyển tiếp) là một máy chủ DNS thực hiện truy vấn
DNS thay cho nhiều máy chủ DNS khác nhau. DNS Forwarder được sử dụng để gỡ

63

bỏ những tác vụ đang xử lý khỏi nhưng máy chủ DNS đang thực hiện chuyển tiếp
nhưng truy vấn này sang Forwarder, và tăng lưu lượng bộ nhớ đệm DNS trên DNS
Forwarder.
Một chức năng khác của DNS Forwarder đó là ngăn cản máy chủ của DNS
chuyển tiếp yêu cầu trong khi tương tác với những máy chủ DNS trên internet. Đây
là chức năng đặc biệt quan trọng khi máy chủ DNS chưa tài nguyên bên trong miền
DNS. Thay vì cho phép những máy chủ DNS nội bộ tự thực hiện gọi lại lệnh và liên
lạc với những máy chủ DNS khác, nó cấu hình cho máy chủ DNS nội bộ sử dụng
Forwader cho tất cả các miền không được phân quyền.
b) Sử dụng máy chủ DNS lưu trữ
Máy chủ DNS lưu trữ là một máy chủ DNS không thể phân quyền cho bất kì
miền DNS nào. Nó được cấu hình thực hiện gọi lại lệnh hay sử dụng một
Forwarder. Khi máy chủ này nhận 1 phản hồi, nó sẽ lưu kết quả và chuyển câu trả
lời đến hệ thống gửi truy vấn DNS đến máy chủ DNS lưu trữ. Sau đó máy chủ này
có thể tập hợp nhiều phản hồi DNS giúp đáng kể thời gian phản hổi cho những máy
trạm DNS của máy chủ DNS lưu trữ.
c) Sử dụng DNS Advertiser
DNS Advertiser (Trình quảng cáo) là một máy chủ DNS thực hiện truy vấn
chi những miền DNS Advertiser được phân quyền.
d) Sử dụng DNS Resolver
DNS Resolver (Trình xử lý) là một máy chủ có thể gọi lại lệnh để xử lý tên
cho những miền không được máy chủ DNS phân quyền.
e) Bảo vệ bộ nhớ đệm DNS
Bộ nhớ đệm DNS là một vấn đề phát sinh. Hầu hết các máy chủ DNS có thể
lưu trữ kết quả truy vấn DNS trước khi chuyển tiếp phản hồi tới máy chủ gửi truy
vấn. bộ nhớ đệm DNS có thể cải thiện đáng kể khả năng thực hiện truy vấn DNS
f) Bảo mật kết nối bằng DDNS
Nhiều máy chủ DNS cho phép cập nhập động. tính năng cập nhập động giúp
máy chủ DNS này đăng ký tên máy chủ DNS và địa chỉ IP cho những máy chủ

64

DHCP chứa địa chỉ IP. DDNS có thể là một công cụ hỗ trợ quản trị hiệu quả trong
khi cấu hình thử công những mẫu tài nguyên cho những máy chủ này.
g) Sử dụng Firewall kiểm soát truy cập DNS
Firewall có thể sử dụng để chiếm quyền kiểm soát đối với những người dùng
kết nối máy chủ DNS. Với những máy chủ DNS chỉ sử dụng cho những truy vấn từ
máy trạm nội bộ, người quản trị cần phải cấu hình firewall để chặn kết nối từ những
máy chủ ngoài vào những máy chủ DNS này. Với những máy chủ sử dụng như
Forwarder lưu trữ, firewall cần được cấu hình chỉ cho phép nhận những truy vấn
DNS từ máy chủ DNS được sử dụng như Forwarder lưu trữ. Một cài đặt firewall
policy quan trọng đó là chặn những người dùng nội bộ sử dụng giao tiếp DNS kết
nối vào những máy chủ DNS ngoài.
h) Cài đặt kiểm soát truy cập vào Regitry của DNS
Những máy chủ DNS trên nền tảng Windows, kiểm soát truy cập cần được
cấu hình trong những cài đặt registry liên quan tới máy chủ DNS để cho phép
những tài khoản được yêu cầu truy cập đọc và thay đổi cài đặt.
i) Cài đặt kiểm soát truy cập vào file hệ thống DNS
Nhưng máy chủ DNS trên nền tảng Windows, nên cấu hình kiểm soát truy
cập trên file hệ thống liên quan đến máy chủ DNS vì vậy chỉ những tài khoản yêu
cầu truy cập vào chúng được phép đọc hay thay đổi những file này.

3.4.4 Bảo mật Website với SSL Certificate
Giao thức SSL được sử dụng rộng rãi trên hệ thống mạng nhằm mục đích
xác thực và mã hóa thông tin giữa client và server. SSL được sử dụng để mã hóa
cho các protocol hoạt động tại lớp ứng dụng (Application) như HTTP, FPT, SMTP,
POP, IMAP....
Hiện nay khi public một website lên internet, để áp dụng cơ chế mã hóa SSL ta phải
thuê SSL Certificate cho Web Server từ các tổ chức cung cấp Digital Certificate
như: Verisign, Cyber Trust, En Trust...
3.5 Cài đặt thực nghiệm và đánh giá
a) Môi trường xây dựng ứng dụng
Dùng ngôn ngữ lập trình Microsoft visual C#2008 Express Edition.

65

Hệ điều hành Microsoft Window XP3.
Sử dụng hệ mã hoá khoá công khai RSA để thực hiện quá trình tạo khoá, sử
dụng thuật toán băm MD5, để băm thông điệp trước khi thực hiện quá trình ký.
b) Người dùng ký
Người dùng thực hiện các nội dung ký: Ký văn bản, xác thực văn bản, mã
hóa văn bản và giải mã văn bản.
+ Tạo khóa: Người dùng nhấn nút tạo khóa hay nhập trực tiếp để tạo hai số
nguyên tố và kiểm tra có phải là số nguyên tố không, sau đó nhấn nút Tính để tạo ra
cặp khóa bí mật (D,N) và khóa công khai (E,N), khóa bí mật dùng để ký văn bản,
khóa công khai dùng để xác nhận chữ ký.

Hình 3.8 Tạo khóa
- Tạo và kiểm tra đó có phải số nguyên tố không