2.Thuật ngữ mã hóa
Mã hóa là quá trình truyền tải dữ liệu ở dạng mà người muốn xem lén nội
dung không thể đọc trước nếu không biết về Khóa sử dụng cho việc mã hóa.
Vấn đề đặt ra là chúng ta trao đổi thông tin cũng như liên lạc với đối
tác trong kinh doanh với những tài liệu có mức độ quan trọng và riêng tư
cao mà ta không muốn có một người thứ 3 biết, tuy nhiên việc trao đổi
thông tin qua Internet với các thao tác thủ công mà trước giờ ta sử
dụng thì nguy cơ bị hacker đánh cắp thông tin là điều luôn luôn có khả
năng xảy ra ở mức độ cao.
Hình 2.1: Mô tả truyền tải dữ liệu
Tùy vào thuật toán mã hóa mà ta có thể sử dụng khóa đồng bộ hoặc không đồng bộ.
Thuật toán mã hóa là dựa vào công thức toán học dùng cho việc mã hóa và
giải mã. Nhìn chung, thường có hai thuật toán có mối liên hệ với nhau,
một cho mã hóa và một dùng để giải mã. Bảo mật dữ liệu hiện đại là thuật
toán dựa trên các khóa, có thể được phân làm hai loại:
Thuật toán sử dụng khóa đồng bộ
Thuật toán sử dụng khóa đồng bộ dựa trên người gửi và người nhận đều
biết về một khóa bí mật. Người gửi sử dụng khóa bí mật đó để mã hóa gói
tin và người nhận sử dụng cùng khóa để giải mã gói tin. Vấn đề chính
trong việc sử dụng khóa đồng bộ là làm sao để phân phối khóa một cách an
toàn, không cho người thứ ba biết. Bất cứ người thứ ba biết về khóa bí
mật có thể chen vào quá trình chuyển gói tin để đọc và sửa đổi nội dung
gói tin. DES, 3DES, và AES là những thuật toán sử dụng khóa đồng bộ
thông dụng.
Thuật toán sử dụng khóa không đồng bộ:
Thuật toán sử dụng khóa không đồng bộ, hoặc được biến đến như là
thuật toán công khai khóa, sử dụng một cặp khóa, một dùng mã hóa và một
giải mã. Khóa dùng mã hóa còn được gọi là khóa công khai và có thể công
khai ra ngoài. Khóa còn lại là khóa cá nhân, sử dụng để giải mã, và phải
cần được bí mật. Mặc dù cặp khóa có mối liên hệ toán học với nhau,
không thể dùng khóa này để lần ra khóa kia được. Bất cứ ai có khóa công
khai của người nhận có thể mã hóa được gói tin, nhưng gói tin chỉ có thể
được mã hóa với khóa riêng của người nhận biết được. Vì vậy, một kênh
thông tin bảo mật dùng để chuyển đổi khóa bí mật là không cần thiết
trong thuật toán sử dụng khóa không đồng bộ.
Hình 2.2: Mã hóa sử dụng khóa công khai
Alice và Bob thống nhất về khóa công khai.
Bob gửi Alice khóa công khai của cậu ta và Alice gửi Bob khóa công khai của cô.
Alice gửi Bob 1 tin nhắn, mã hóa tin nhắn đó sử dụng khóa công khai của Bob.
Bob nhận được tin nhắn và giải mã tin nhắn đó sử dụng chính Key bí mật của cậu ta.
Chữ ký số:
Mã hóa tin nhắn với khóa bí mật tạo ra một chữ ký số, được sử dụng để
xác thực và cung cấp thông tin người gửi. Do đó, chữ kí số không chỉ có
tác dụng bảo vệ nội dung thông tin mà còn xác thực đích danh người gửi.
Thuật toán mã hóa
Có rất nhiều thuật toán mã hóa được phát triển cho khóa đồng bộ. Các
thuật toán thông dụng nhất dùng cho mã hóa là DES (khóa 56 bit), 3DES
(khóa 168 bit) và AES ( có thể lên tới khóa 488 bit).
2.2 Giao thức bảo mật IPSEC
IPSec là một từ viết tắt của thuật Internet Protocol Securityđược IETF
phát triển để thiết lập một cơ cấu bảo mật ở tầng 3( Network layer) của
mô hình OSI.
Hình 2.3: Vị trí IPSec trong mô hình OSI
Mọi giao tiếp trong một mạng trên cơ sở IP đều dựa trên các giao thức
IP. Do đó, khi một cơ chế bảo mật cao được tích hợp với giao thức IP
toàn bộ mạng được bảo mật bởi vì giao tiếp đều đi qua tầng 3.
IPsec được định nghĩa trong RFC 4301, Security Architecture for Internet
Protocol. IPsec cung cấp dịch vụ bảo mật, chống replay, xác thực, toàn
vẹn dữ liệu và điều khiển truy nhập.
IPSec cho phép một đường hầm bảo mật thiết lập giữa hai mạng riêng và
xác thực hai đầu của đường hầm này. Các thiết bị giữa hai đầu đường hầm
có thể là một cặp host, một cặp cổng an ninh (thiết bị định tuyến,
firewall, bộ tập trung VPN) hoặc cặp thiết bị gồm một host và một cổng
an ninh. Đường hầm đóng vai trò là một kênh truyền bảo mật giữa hai đầu
và các gói dữ liệu yêu cầu an ninh được truyền trên đó. IPSec cũng thực
hiện đóng gói dữ liệu và xử lí các thông tin để thiết lập, duy trì và
hủy bỏ kênh truyền khi không dùng đến nữa. Các gói tin truyền trong
đường hầm có khuôn dạng giống như các gói tin bình thường khác và không
làm thay đổi các thiết bị, kiến trúc cũng như những ứng dụng hiện có
trên mạng trung gian, qua đó cho phép giảm đáng kể chi phí để triển khai
và quản lý.
IPSec có hai cơ chế cơ bản để đảm bảo bảo mật dữ liệu là tiêu đề xác
thực ( AH – Authentication Header) và đóng gói tải tin an toàn (ESP –
Encapsulating Security Payload), trong đó IPSec phải hỗ trợ ESP và có
thể hỗ trợ AH. Cả AH và ESP đều cung cấp các phương tiện cho điều khiển
truy nhập dựa vào sự phân phối của các khóa mật mã và quản lý các luồng
lưu lượng có liên quan đến những giao thức an ninh này.
IPSec có thể sử dụng giao thức trao đổi khoá IKE (Internet Key Exchange)
để xác thực hai bên, thương lượng các chính sách bảo mật và xác thực
thông qua việc xác định thuật toán thiết lập kênh truyền, trao đổi khóa
cho mỗi phiên kết nối và dùng trong mỗi phiên truy nhập. Mạng dùng IPSec
để bảo mật các dòng dữ liệu có thể tự động kiểm tra tính xác thực của
thiết bị bằng chứng thực số của hai người dùng trao đổi thông tin qua
lại. Việc thương lượng này cuối cùng dẫn đến thiết lập một liên kết bảo
mật (SA – Security Association) giữa các cặp bảo mật.
2.2.1 Liên kết bảo mật SA
Để hai bên có thể truyền dữ liệu đã được bảo mật ( dữ liệu đã được xác
thực hoặc được mã hóa hoặc cả hai) cả hai bên phải cùng thống nhất sử
dụng giải thuật mã hóa, làm cách nào để chuyển khóa nếu như cần. Cả hai
bên cũng cần thỏa thuận bao nhiêu lâu sẽ thay đổi khóa một lần. Tất cả
các thỏa thuận trên là do SA đảm trách.
Xác thực giao thức, khóa và giải thuật.
Phương thức và khóa cho giải thuật xác thực là header xác thực (AH) hoặc giao thức đóng gói bảo mật payload (ESP).
Giải thuật mã hóa và giải mã, khóa.
Thông tin liên quan đến SA như địa chỉ SA và khoảng thời gian sống TTL
Hình 2.4: Cấu trúc SA
SPI (Security Parameter Index): Đây là một trường 32 bit dùng để
xác định cách thức bảo mật từ IPSec thích hợp. SPI nằm trong header của
header giao thức bảo mật. Hệ thống ở nơi nhận sẽ lựa chọn thức bảo mật
trong quá trình thống nhất SA.
Địa chỉ IP đích: Đây là địa chỉ IP của nơi nhận. Mặc dù nó có thể là
địa chỉ IP broadcast, unicast, hoặc multicast, nhưng cơ chế SA hiện tại
chỉ hoạt động đối với unicast.
Giao thức bảo mật: Cách thức bảo mật của IPSec, AH hoặc ESP.
Vì SA có tính đơn hướng nên phải có hai SA được định nghĩa ở hai đầu
cần thông tin. SA có thể cung cấp dịch vụ bảo mật cho VPN dưới dạng AH
hoặc ESP.
2.2.2. Giao thức xác thực tiêu đề AH
a. Giới thiệu
Giao thức xác thực tiêu đề AH được định nghĩa trong RFC 4302. AH cung
cấp khả năng xác thực nguồn gốc dữ liệu (Data Origin Authentication),
kiểm tra tính toàn vẹn dữ liệu (Data Integrity) và dịch vụ chống phát
lại (Anti-replay Service).
AH cho phép xác thực các trường của tiêu đề IP cũng như dữ liệu của các
giao thức lớp trên. Tuy nhiên, do một số trường của tiêu đề IP thay đổi
trong khi truyền và phía phát không dự đoán trước được giá trị của chúng
khi tới phía thu, giá trị của các trường này không bảo vệ được bằng AH.
Có thể nói AH chỉ bảo vệ một phần của tiêu đề IP mà thôi. AH không cung
cấp bất cứ xử lý nào để bảo mật dữ liệu của các lớp trên, tất cả đều
được truyền dưới dạng văn bản rõ. AH nhanh hơn ESP, nên có thể chọn AH
trong trường hợp cần yêu cầu chắc chắn về nguồn gốc và tính toàn vẹn của
dữ liệu, còn tính bảo mật dữ liệu thì không yêu cầu cao.
b.Cấu trúc trường AH
Cấu trúc trường AH
Hình 2.5: Cấu trúc trường AH
AH gồm có nhiều trường:
Next header: Nhận ra giao thức được sử dụng trong quá trình truyền thông tin.
Pad length: Chiều dài của AH Header
Reserved: Giá trị này dùng để sử dụng trong tương lai
Security parameter Index (SPI): Nhận ra các thông số được tích hợp với địa chỉ IP
Sequence Number: Tự động tăng có tác dụng chống tấn công kiểu replay attacks.
Authentication Data: Bao gồm dữ liệu để xác thực cho gói tin.
2.2.3 Giao thức đóng gói tải tin an toàn ESP
a. Giới thiệu
Giao thức ESP được định nghĩa trong RFC 4303. Cũng như AH, giao thức này
được phát triển hoàn toàn cho IPSec. ESP được sử dụng khi có yêu cầu về
bảo mật của lưu lượng IPSec cần truyền. Nó cung cấp tính bảo mật dữ
liệu bằng việc mật mã hóa các gói tin. Thêm vào đó, ESP cũng cho phép
xác thực nguồn gốc dữ liệu, kiểm tra tính toàn vẹn dữ liệu, dịch vụ
chống phát lại và một số giới hạn về luồng lưu lượng cần bảo mật.
b. Cấu trúc trường ESP
Hình 2.6 Cấu trúc trường ESP
Cũng giống như AH, ESP gồm những trường sau:
Security parameters index (SPI): Giá trị được sử dụng ( cùng với địa chỉ IP) để xác định sự ien kết bảo mật của bên gửi.
Sequence number:Tự động tăng có tác dụng chống tấn công kiểu replay attacks.
Payload data: Bảo vệ nội dung của gói IP ban đầu.
Padding: Thêm vào cho đủ kích thước của gói tin.
Pad length: Chiều dài của Padding
Next header: Nhận ra giao thức được sử dụng trong quá trình truyền thông tin.
Authentication data: Bao gồm dữ liệu để xác thực cho gói tin.
2.2.4Các mode chính của giao thức IPSec
a.Transport mode
Trong Transport mode, IPsec header được gắn vào IP header và
header của giao thức lớp trên.Vì vậy, IP payload được mã hóa còn IP
header vẫn được bảo vệ nguyên vẹn.
Transport mode dùng để bảo mật kết nối giữa hai host.
Hình 2.6 Gói tin IPsec trong Trasport mode
b.Tunnel mode
Không giống như Transport mode, Tunnel mode bảo vệ toàn bộ gói dữ
liệu. Toàn bộ gói IP được đóng gói trong một gói dữ liệu IP khác. Và
sau đó một IPsec header được chèn vào giữa IP header cũ và mới.
Toàn bộ gói IP ban đầu sẽ bị đóng gói bởi AH hay ESP và một IP
header mới sẽ được bao bọc xung quanh gói dữ liệu. Toàn bộ gói IP sẽ
được mã hóa và trở thành dữ liệu của gói IP mới.
Hình 2.7: Gói tin IP được bảo vệ bởi AH và ESP trong Tunnel mode
2.3 Quản lý khóa và thuật toán Diffie – Hellman:
2.3.1 Quản lý khóa ( Key Management)
IPSec dùng một giao thức thứ ba, Internet Key Exchange (IKE), để thỏa
thuận các giao thức bảo mật và các thuật toán mã hóa trước trong suốt
phiên giao dịch. Một phần quan trọng nữa, IPSec phân phối và kiểm tra
các khóa mã và cập nhật những khóa đó khi được yêu cầu.
Quản lí khóa là một vấn đề quan trọng khi làm việc với IPSec-VPN. Có 5
khóa cố định cho mọi bên IPSec quan hệ với nhau, bao gồm :
Hai khóa riêng được làm chủ bởi mỗi bên và không bao giờ chia sẻ. Chúng được sử dụng để mật mã bản tin.
Hai khóa công cộng được làm chủ bởi mỗi bên và chia sẻ cho mọi người. Những khóa này được sử dụng để kiểm tra chữ ký.
Khóa thứ năm được sử dụng là khóa bảo mật chia sẻ. Cả hai bên sử
dụng khóa này cho mật mã và hàm băm. Đây là khóa được tạo ra bởi thuật
toán Diffie-Hellman.
Trong thực tế, khóa riêng và khóa công cộng được sử dụng cho nhiều
kết nối IPSec do một bên đưa ra. Đối với một tổ chức nhỏ, toàn bộ những
khóa này có thể được quản lý thủ công. Tuy nhiên, khi cố gắng phân chia
xử lí để hỗ trợ cho một số lượng lớn các phiên VPN thì sẽ xuất hiện
nhiều vấn đề cần phải giải quyết. Giao thức Diffie-Hellman và kỹ thuật
chứng thực số thông qua CA là hai trong số những giải pháp hiệu quả để
quản lí khóa một cách tự động.
2.3.2 Thuật toán trao đổi Diffie – HellmanCó nhiều loại khóa dùng cho
các mục đích khác nhau: khóa đồng bộ, khóa không đồng bộ, khóa dùng để
mã hóa. Quá trình chia sẻ khóa cần được bảo vệ là một vấn đề của bảo
mật. Có nhiều cách giải quyết vấn đề trên, một trong những cách đó là
thuật toán chuyển đổi khóa Diffie-Hellman.
Whitfield Diffie và Martin Hellman đã phát minh ra thuật toán trao đổi
khóa này vào năm 1976 và được gọi là Diffie-Hellman key exchange.
Hình 2.8: Thuật toán chuyển đổi khóa Diffie Hellman
Giải thuật được trình bày như sau:
Đầu tiên, Alice tạo ra số cá nhân ngẫu nhiên a, Bob tạo số b
Tính toán các khóa công khai. Và Alice công bố X = ga mode p
Bob công bố Y= gb mode p.
Alice và Bob trao đổi X và Y cho nhau
Cuối cùng, Alice tính toán Kab = (gb)a mode p
Bob tính toán Kba = (ga)b mode p
Bởi vì Kab = Kba = K. Vì thế K là khóa chung của Alice và Bob
a.Hoạt động trao đổi khóa IKE:
IKE sẽ có chức năng trao đổi key giữa các thiết bị tham gia VPN và trao
đổi chính sách an ninh giữa các thiết bị .Và những chính sách an ninh
trên những thiết bị này được gọi là SA (Security Associate)
IKE thực hiện quá trình dò tìm, quá trình xác thực, quản lý và trao đổi
khóa. IKE sẽ dò tìm ra được một hợp đồng giữa hai đầu cuối IPSec và sau
đó SA sẽ theo dõi tất cả các thành phần của một phiên làm việc IPSec.
Phiên dò tìm thành công, các thông số SA hợp lệ sẽ được lưu trữ trong cơ
sở dữ liệu của SA
IKE (Chuyển đổi khóa qua Internet) hoạt động gồm hai phase chính, và một phase tùy chọn để có thể thiết lập IKE và IPsec SA:
Phase 1: cung cấp thông tin xác thực IKE cho các thành viên và
thiết lập khóa cho phiên kết nối đó. Pha 1 tạo ra chính sách ISAKMP SA
(thông tin bảo mật cho IKE, đôi khi được biết đến như IKE SA) sử dụng
thuật toán trao đổi khóa, cookies, và trao đổi ID. Khi mà ISAKMP SA được
thiết lập, tất cả trao đổi IKE giữa bên nhận và bên gửi sẽ được bảo vệ
bằng mã hóa và đảm bảo an toàn dữ liệu với việc kiểm tra xác thực. Mục
đích chính của IKE phase 1 là thiết lập 1 kênh kết nối được bảo vệ giữa
các bên để quá trình đàm phán phase 2 có thể diễn ra 1 cách bảo mật.
Phase 2: đàm phán và thiết lập chính sách IPsec SA sử dụng ESP hoặc AH để bảo vệ dữ liệu trong gói tin IP.
Phase 1.5 (XAUTH): với những kết nối từ xa, thiết bị cung cấp IPsec
thường thực hiện thêm 1 bước để có thể giúp khách hàng dễ dàng quản lý
kết nối IPsec của mình. Phase 1.5 xảy ra giữa phase 1 và phase 2.
Hình 2.9 Các phase hoạt động của IKE
b.IKE Phase 1
Có năm các thông số đó phải được phối hợp trong quá trình IKE phase 1:
Thuật toán mã hóa IKE (DES, 3DES hoặc AES)
Thuật toán xác thực ( MD5 hoặc SHA)
Chính sách IKE (Preshare-key, chữ ký RSA…)
Diffie-Hellman ( Group 1,2 hoặc 5)
Lifetime cho IKE (s hay byte)
IKE phase 1 quản lý thiết lập kết nối:
Quản lý kết nối
Chính sách trao đổi khóa: Diffie-Hellman
Xác thực thiết bị
Thiết lập kết nối từ xa (pha 1.5 – tùy chọn)
IKE phase 1 có hai chế độ là Main Mode và Aggressive Mode. Cả 2 đều
dùng để thiết lập ISAKMP/IKE SA. IKE SA có các thông số khác nhau để đàm
phán giữa các bên. Thông số bắt buộc gồm có thuật toán mã hóa, thuật
toàn băm, phương thức xác thực, nhóm Diffie-Hellman, và các thông số
khác như thời gian kết nối.
Main Mode
Main Mode thực hiện trao đổi hai chiều, tổng cộng gồm 6 gói tin. 3
Lần trao đổi như 3 bước đó là đàm phán chính sách bảo mật để quản lý kết
nối, sử dụng DH để mã hóa khóa cho chính sác mã hóa và HMAC đàm phán
phương thức xác thực như sử dụng chia sẻ khóa trước, mã hóa RSA hoặc chữ
kí RSA (chữ ký số).
Aggressive Mode
Trong Aggressive Mode, hai bên trao đổi thông qua 3 gói tin. Trao
đổi đầu tiên bao gồm danh sách các chính sách dùng cho quản lý kết nối,
công bố khóa kết hợp với DH, thông tin xác thực và xác minh dữ liệu (ví
dụ như chữ ký). Tất cả nhân tố trên được gói gọn trong một gói tin. Trao
đổi thứ hai là xác nhận của gói tin thứ nhất là thông báo kết nối có
thiết lập thành công hay không.
Hình 2.10: IKE phase 1 Main mode
c.IKE Phase 2
Đường hầm IPSec thực tế được thành lập vào IKE phase 2. IKE tạo ra một
rất an toàn kênh truyền thông (SA riêng của mình) để các đường hầm IPSec
(SA) có thể được tạo ra cho dữ liệu mã hóa và vận chuyển. Các thông số
IPSec được thương lượng thông qua IKE SA.
Các chức năng sau đây được thực hiện trong IKE phase 2:
Thương lượng các thông số bảo mật IPSec thông qua bộ chuyển đổi IPsec
Thiết lập Ipsec SA (đường hầm IPsec một chiều)
Thương lượng IPSec SA đinh kỳ để đảm bảo an ninh
Trao đổi Diffie-Hellman
Phase 2 là phase bắt buộc, đến phase này thì thiết bị đầu cuối đã có
đầy đủ các thông số cần thiết cho kênh truyền an toàn. Quá trình thỏa
thuận các thông số ở phase 2 là để thiết lập IPSec SA dựa trên những
thông số của phase 1. Quick mode là phương thức được sử dụng trong phase
2. Quick mode giám sát toàn bộ SA và thiết lập những cái mới khi cần
thiết.
Các thông số mà Quick mode thỏa thuận trong phase 2:
Giao thức IPSec (AH hoặc ESP)
Loại mã hóa IPSec ( DES, 3DES hoặc AES)
Xác thực IPSec (MD5 hoặc SHA)
Diffie-Hellman ( Group 1,2 hoặc 5)
IPSec mode (Tunnel hoặc transport)
IPSec SA lifetime: dùng để thỏa thuận lại IPSec SA sau một khoảng thời gian mặc định hoặc được chỉ định
IPSec SA của phase 2 hoàn toàn khác với IKE SA ở phase 1, IKE SA chứa
các thông số để tạo nên kênh truyền bảo mật, còn IPSec SA chứa các
thông số để đóng gói dữ liệu theo ESP hay AH, hoạt động theo tunnel mode
hay transport mode.
2.3 Luồng dữ liệu IPSec và NAT
AH chứng thực địa chỉ IP nguồn và port nên sẽ ngăn NAT thay đổi chúng.
Với ESP, TCP và UDP port cũng được chứng thực và mã hóa, nên suy ra PAT
không thể ánh xạ port nguồn. Vì TCP/UDP có checksum cả header giả, nên
khi NAT thay đổi địa chỉ, TCP/UDP checksum sẽ không còn giá trị. Bởi vì
trường checksum đã được chứng thực và mã hóa nên NAT không thể tính lại
chúng. ESP sẽ làm việc với NAT, nhưng sẽ không làm việc được với PAT. Để
có sự tương thích giữa ESP và PAT giải quyết như thế nào?
Hình 2.11: PAT lồi vì tầng 4 bị mã hóa trong gói ESP
Do đó NAT Traversal ( NAT-T) ra đời để giải quyết vấn đề trên bằng
cách thêm vào một TCP/UDP header vào giữa outer IP header và ESP header.
Bằng cách thêm TCP/UDP header, chúng ta vừa có thể sử dụng PAT, vừa
giải quyết luôn vấn đề về checksum.
NAT-T cung cấp một giải pháp thay thế với quá trình đóng gói UDP. Không
giống như Ipsec trên UDP, NAT-T được định nghĩa bởi RFC 3947/3948 và do
đó là một tiêu chuẩn mở. Với NAT-T, một gói tin kiểm tra ESP được gửi
giữa hai thiết bị Ipsec với một tiêu đề đoạn chuẩn UDP giữa các tiêu đề
bên ngoài tiêu đề IP và ESP. Các điểm đến cổng UDP số phải được 4.500.
Phần UDP header bao gồm cả phần thông tin checksum trong header. Phần
checksum này thì giống phần checksum đã được bảo vệ trong gói tin IPsec.
Khi địa chỉ đích nó nhận được một gói tin NAT-T, nó sẽ kiểm tra phần
checksum trong outer UDP và checksum trong inner UDP, nếu không giống
nhau tức là đã xảy ra quá trình PAT, ngược lại thì không có PAT. Khi
phát hiện không có PAT xảy ra thì các gói tin sau đó sẽ được gửi với
đóng gói ESP bình thường.
Hình 2.12: NAT-T hỗ trợ các gói tin bị mã hóa có thể đi qua thiết bị PAT
MẠNG RIÊNG ẢO TRÊN NỀN IPSEC
