You are on page 1of 78

Nguyễn Thị Hiền 1 Luận văn thạc sỹ

MỤC LỤC
MỤC LỤC............................................................................................................... 1

DANH MỤC HÌNH................................................................................................ 4

CÁC KÝ HIỆU VÀ CỤM TỪ VIẾT TẮT........................................................... 6

MỞ ĐẦU ................................................................................................................. 7

Chương 1 – Vai trò chìa khóa trong các giải pháp bảo mật và an toàn thông tin
.................................................................................................................................. 9

1.1 Vai trò của chìa khóa trong các giải pháp bảo mật và an toàn thông tin ........ 9

1.1.1 Trong hệ mã khóa đối xứng...................................................................... 9

1.1.2 Trong hệ mã khóa công khai .................................................................... 10

1.1.3 Trong sơ đồ xưng danh và xác nhận danh tính......................................... 10

1.1.4 Trong hệ xác nhận và chữ ký điện tử ....................................................... 11

1.2 Vấn đề an toàn khóa trong các giải pháp bảo mật........................................... 11

1.2.1 Hệ mã khóa công khai ............................................................................. 11

1.2.2 Hệ mã khóa đối xứng................................................................................ 13

1.2.3 Trong môi trường truyền tin công cộng ................................................... 14

Chương 2 – Các giao thức an toàn khóa trong trao đổi, phân phối và chuyển
vận khóa .................................................................................................................. 16

2.1 Nhu cầu thỏa thuận, chuyển vận và phân phối khóa .................................. 16

2.2 An toàn khóa trong các giao thức trao đổi.................................................. 18

2.2.1 Trao đổi khóa Diffie-Hellman.............................................................. 18

2.2.2 Trao đổi khóa STS................................................................................ 20

2.2.3 Thỏa thuận khóa MTI........................................................................... 22


Nguyễn Thị Hiền 2 Luận văn thạc sỹ

2.2.4 Giao thức Shamir ................................................................................. 24

2.2.5 Giao thức trao đổi khóa mã hóa EKE .................................................. 25

2.2.6 Sơ đồ Girault ........................................................................................ 28

2.3 An toàn khóa trong các giao thức phân phối khóa ..................................... 31

2.3.1 Sơ đồ phân phối khóa Blom................................................................. 32

2.3.2 Hệ phân phối khóa Kerberos................................................................ 34

2.3.3 Hệ phân phối khóa Diffie-Hellman ..................................................... 36

2.3.4 An toàn khóa trong các sơ đồ chia sẻ bí mật........................................ 37

2.4 An toàn khóa trong các giao thức chuyển vận khóa................................... 39

2.4.1 Giao thức không sử dụng chữ ký ......................................................... 40

2.4.2 Giao thức có sử dụng chữ ký................................................................ 40

2.4.3 Giao thức lai ......................................................................................... 42

Chương 3 - Kỹ thuật quản trị và kiểm tra việc sử dụng khóa........................... 46

3.1 Quản trị khóa .............................................................................................. 46

3.2 Các kỹ thuật quản trị................................................................................... 46

3.2.1 Các kỹ thuật phân phối khóa bí mật..................................................... 46

3.2.2 Kỹ thuật phân phối khóa công khai...................................................... 50

3.3 Kỹ thuật kiểm tra việc sử dụng khóa .......................................................... 58

3.3.1 Tách biệt khóa và ràng buộc khóa........................................................ 58

3.3.2 Kỹ thuật điều khiển việc sử dụng khóa ................................................ 59

3.4 Quản lý khóa trong hệ thống đa vùng......................................................... 60

3.4.1 Quan hệ tin cậy giữa hai vùng.............................................................. 61

3.4.2 Mô hình tin cậy với nhiều TA .............................................................. 62


Nguyễn Thị Hiền 3 Luận văn thạc sỹ

3.5 Vòng đời khóa ............................................................................................ 64

Chương 4 - Một số cách tổ chức các dịch vụ quản trị khóa ............................... 67

4.1 Giới thiệu......................................................................................................... 67

4.2 Giao thức socket an toàn SSL ......................................................................... 67

4.2.1 Kiến trúc SSL ........................................................................................... 68

4.2.2 Giao thức SSL Record .............................................................................. 69

4.2.3 Giao thức SSL Change Cipher Spec......................................................... 70

4.2.4 Giao thức Alert ......................................................................................... 71

4.2.5 Giao thức Handshake................................................................................ 71

4.3 Cơ sở hạ tầng khóa công khai PKI.................................................................. 74

4.3.1 Tổng quan PKI.......................................................................................... 75

4.3.2 Các dịch vụ PKI........................................................................................ 75

NHẬN XÉT VÀ KẾT LUẬN ................................................................................ 77

TÀI LIỆU THAM KHẢO ..................................................................................... 78


Nguyễn Thị Hiền 4 Luận văn thạc sỹ

DANH MỤC HÌNH


Hình 2.1: Giao thức Diffie-Hellman ...................................................................... 19

Hình 2.2: Giao thức STS......................................................................................... 20

Hình 2.3: Thỏa thuận khóa MTI ........................................................................... 22

Hình 2.4: Giao thức Shamir .................................................................................. 24

Hình 2.5: Giao thức EKE ....................................................................................... 26

Hình 2.6: Sơ đồ TA cấp khóa công khai tự xác thực cho các thành viên .......... 29

Hình 2.7: Sơ đồ Girault .......................................................................................... 29

Hình 2.8: Sơ đồ phân phối khóa Blom .................................................................. 32

Hình 2.9: Hệ phân phối khóa Kerberos ................................................................ 34

Hình 2.10: Giao thức phân phối khóa Diffie-Hellman ....................................... 37

Hình 2.11: Sơ đồ ngưỡng Shamir .......................................................................... 38

Hình 2.12: Giao thức Beller-Yacobi 4-lần qua ..................................................... 43

Hình 2.13: Giao thức Beller-Yacobi 2-lần qua ..................................................... 45

Hình 3.1: Giao thức chuyển văn bản có KTC ...................................................... 48

Hình 3.2: Cây nhị phân........................................................................................... 52

Hình 3.3: Cây xác thực ........................................................................................... 53

Hình 3.4: Các vùng riêng biệt ................................................................................ 62

Hình 3.5: Mô hình tin cậy có thứ bậc chặt chẽ..................................................... 63

Hình 3.6: Mô hình tin cậy ngược thứ bậc ............................................................. 64

Hình 3.7: Mô hình tổng quát.................................................................................. 64

Hình 4.1: Chồng giao thức SSL ............................................................................. 68

Hình 4.2: Hoạt động giao thức SSL Record ......................................................... 69


Nguyễn Thị Hiền 5 Luận văn thạc sỹ

Hình 4.3: Hoạt động giao thức Handshake .......................................................... 71

Hình 4.4: Kỹ thuật kết khối an toàn gói tin Internet........................................... 75


Nguyễn Thị Hiền 6 Luận văn thạc sỹ

CÁC KÝ HIỆU VÀ CỤM TỪ VIẾT TẮT


2 - lầnqua: 2 – pass (giao thức gồm 2 lần chuyển văn bản giữa các bên) (tương tự
như vậy với 3-lần qua và 4-lần qua)

x || y: để chỉ xâu nối x và y.

CA: Certificate Authority - Ủy quyền chứng chỉ.

CBC: Cipher Block Chaining.

CSDL: Cơ sở dữ liệu.

EKE: Encrypted Key Exchange.

KDC: Key Distribution Center – Trung tâm phân phối khóa.

KTC: Key Translation Center – Trung tâm chuyển khóa .

PKI: Public Key Infrastructure - Cơ sở hạ tầng khóa công khai.

SSL: Secure Socket Layer - Tầng socket an toàn.

STS: Station To Station.

TA: Trust Authority – Ủy quyền tin cậy.

TMĐT: Thương mại điện tử.


Nguyễn Thị Hiền 7 Luận văn thạc sỹ

MỞ ĐẦU
Hiện nay, ở các nước phát triển cũng như đang phát triển, mạng máy tính và
Internet đang ngày càng đóng vai trò thiết yếu trong mọi lĩnh vực hoạt động của xã
hội, và một khi nó trở thành phương tiện làm việc trong các hệ thống thì nhu cầu
bảo mật thông tin được đặt lên hàng đầu. Nhu cầu này không chỉ có ở các bộ máy
An ninh, Quốc phòng, Quản lý Nhà nước, mà đã trở thành cấp thiết trong nhiều hoạt
động kinh tế xã hội: tài chính, ngân hàng, thương mại…thậm chí trong cả một số
hoạt động thường ngày của người dân (thư điện tử, thanh toán tín dụng,…). Do ý
nghĩa quan trọng này mà những năm gần đây công nghệ mật mã và an toàn thông
tin đã có những bước tiến vượt bậc và thu hút sự quan tâm của các chuyên gia trong
nhiều lĩnh vực khoa học, công nghệ.

Một điểm đặc biệt của công nghệ bảo mật hiện đại là không dựa vào khả năng giữ
bí mật của phương pháp (công nghệ), vì nó thường không chỉ một người nắm giữ,
nói chung thường là nhóm đông người biết, mà khả năng giữ bí mật tuyệt đối của cả
một nhóm người là không thể, vì thế bí mật chỉ có thể giữ bởi một người mà lợi ích
của anh ta gắn liền với bí mật đó. Chính vì vậy, trong mã hóa hiện đại, người ta
luôn giả thiết rằng phương pháp mã hóa thông tin là cái không thể giữ được bí mật,
chúng sẽ được công khai, còn việc thực hiện thì cho phép thay đổi theo một tham số
do từng người sử dụng tự ấn định (mỗi giá trị của tham số sẽ xác định một cách mã
hóa riêng), việc lập mã và giải mã chỉ có thể được thực hiện khi biết được tham số
đó. Tham số như vậy được gọi là “chìa khóa” và đó là thông tin duy nhất cần phải
giữ bí mật. Tóm lại, một hệ mã hiện đại cần phải dựa trên nguyên tắc: chốt tính bảo
mật vào chìa khóa, chứ không phải vào phương pháp (thuật toán).

Luận văn sẽ nghiên cứu và xác định rõ vai trò của chìa khóa trong các giải pháp
bảo mật và an toàn thông tin. Trên cơ sở nghiên cứu và phân tích các giải pháp an
toàn khóa trong việc phân phối, trao đổi, chuyển vận khóa, cũng như các phương
thức quản lý nhằm mang lại hiệu quả cao nhất trong quá trình thực hiện các giao
thức đó. Luận văn gồm có bốn chương:
Nguyễn Thị Hiền 8 Luận văn thạc sỹ

Mở đầu

Chương 1: Vai trò chìa khóa trong các giải pháp bảo mật và an toàn thông tin.

Chương 2: Các giao thức an toàn khóa trong trao đổi, phân phối và chuyển vận
khóa.

Chương 3: Kỹ thuật quản trị và kiểm tra việc sử dụng khóa.

Chương 4: Một số cách tổ chức các dịch vụ quản trị khóa.

Kết luận
Nguyễn Thị Hiền 9 Luận văn thạc sỹ

Chương 1 – VAI TRÒ CHÌA KHÓA TRONG CÁC GIẢI PHÁP BẢO
MẬT VÀ AN TOÀN THÔNG TIN

1.1. Vai trò của chìa khóa trong các giải pháp bảo mật và an toàn thông tin

Mật mã hay các giải pháp bảo mật được sử dụng để bảo vệ tính bí mật của thông tin
khi chúng được truyền trên các kênh truyền thông công cộng. Giả sử nếu một người
U muốn gửi cho người V một văn bản p, để bảo mật U lập cho p một bản mật mã c
bằng một phương pháp Toán học nào đó, và thay vì gửi cho V văn bản p, U gửi cho
V văn bản c. V nhận được c thực hiện giải mã để thu được p. Để U biến p thành c
và V biến c thành p, U và V phải thống nhất sử dụng chung một hệ mã khóa nào đó:
hệ mã khóa đối xứng hoặc hệ mã khóa công khai.

1.1.1. Trong hệ mã khóa đối xứng

Hoạt động của hệ mã này được mô tả như sau: Nếu U và V là hai người dùng sử
dụng hệ mã khóa đối xứng (đôi khi nó còn được gọi là hệ mã khóa bí mật) để gửi
tin cho nhau. U dùng thuật toán E và khóa K lập mật mã (từ đây trở đi ta sẽ gọi tắt
là mã hóa) cho văn bản M muốn gửi cho V, rồi gửi cho V bản mã: c = EK(M). Thuật
toán mã hóa E sinh ra các output khác nhau phụ thuộc vào giá trị khóa K. Ở đầu bên
kia V sau khi nhận được bản mã c, sẽ sử dụng thuật toán giải mã D và chính khóa K
để thu được bản rõ M (việc giải bản mã thành bản rõ từ nay sẽ được gọi là giải mã).
Hệ mã loại này có tên là hệ mã khóa đối xứng vì khóa lập mã và khóa giải mã là
một, U và V chỉ có thể truyền tin được với nhau nếu cả hai cùng biết khóa K. Tính
an toàn của hệ mã phụ thuộc vào hai yếu tố: thuật toán phải đủ mạnh để không thể
giải mã được văn bản nếu đơn thuần chỉ dựa vào bản rõ, và tính an toàn khóa, chứ
không phải là an toàn thuật toán, tức là nếu biết bản mã và thuật toán mã hóa nhưng
không biết khóa vẫn không thể tìm được bản rõ. Nói cách khác, ta không cần giữ bí
mật thuật toán mà chỉ cần giữ bí mật chìa khóa. Việc giữ bí mật chìa khóa trở thành
điểm mấu chốt của hệ mã khóa loại này, nếu vì lý do nào đó mà khóa bị lộ thì tất cả
những văn bản hai bên trao đổi với nhau cũng sẽ bị lộ.
Nguyễn Thị Hiền 10 Luận văn thạc sỹ

1.1.2. Trong hệ mã khóa công khai

Để sử dụng hệ mã khóa đối xứng yêu cầu hai bên trước khi truyền tin phải có chung
một giá trị khóa, giá trị này cần phải giữ bí mật và điều này không thuận tiện trong
môi trường truyền thông công cộng như hiện nay. Vì thế người ta đã đưa ra cách mã
hóa khác, cho phép các bên trong hệ thống có thể truyền tin cho nhau bằng cách
công bố công khai thông tin cần cho việc lập mã, khiến cho người gửi và người
nhận không cần quy ước trước với nhau, và cũng không có những bí mật chung.
Bên nhận được bản mã sử dụng khóa bí mật của mình giải mã để thu được văn bản
gốc. Khóa K của mỗi người dùng gồm hai phần K = ( K ' , K " ) trong đó K ' là phần
công khai, còn giữ bí mật K " .

Mã hóa được thực hiện rất dễ dàng, bất kỳ người nào cũng có thể làm được, còn
việc giải mã rất khó khăn nếu như không có khóa riêng, còn nếu có nó thì việc giải
mã cũng dễ như việc mã hóa. Việc giữ bí mật khóa trong hệ mã khóa công khai
không còn là vấn đề nữa, vì mỗi người có một khóa riêng chỉ có chính anh ta biết
mà thôi nên khả năng anh ta làm lộ gần như là không có. Vì vậy đối với những hệ
mã loại này tính an toàn chúng nằm trong khả năng không bị lộ của chìa khóa bí
mật từ những thông tin công khai tất cả mọi người đều có, mà điều này thì lại phụ
thuộc vào độ khó của bài toán nào đó ví như: việc tính tích hai số nguyên tố lớn n =
p.q: dễ dàng nhân hai số nguyên tố lớn p, q để thu được tích n của chúng, nhưng bài
toán sẽ là khó nếu cho giá trị tích n, xác định các nhân tử nguyên tố p, q của nó.
Hay như bài toán nếu có số nguyên tố p, một phần tử nguyên thủy α theo mod p, ta
dễ dàng tính được β = α x mod p ∈ Z *p , với x là giá trị bất kỳ. Nhưng nếu ngược lại

biết β, α , p khó tìm được số nguyên x ( 0 ≤ x ≤ p − 2 ) sao cho α x ≡ β (mod p) . Tuy


nhiên, đến nay chưa có chứng minh bằng Toán học nào chỉ ra rằng đây thực sự là
các bài toán khó, hoặc không thể giải trong thời gian chấp nhận được.

1.1.3. Trong sơ đồ xưng danh và xác nhận danh tính

Xưng danh và xác nhận danh tính là thuật ngữ ngày nay đang được nhắc đến rất
nhiều, nó đảm bảo rằng bên nhận văn bản đúng là bên ta định nhằm tới, hay chắc
Nguyễn Thị Hiền 11 Luận văn thạc sỹ

chắn rằng các thao tác trên văn bản là do bên được phép thực hiện. Cho đến giữa
những năm 1970 [4] người ta vẫn còn cho rằng xưng danh và xác nhận danh tính
với mã hóa thực chất là cùng một mục tiêu an toàn thông tin. Nhưng cùng với sự
khám phá ra hàm băm, chữ ký điện tử, người ta nhận ra rằng đó là hai mục tiêu an
toàn thông tin hoàn toàn độc lập. Xưng danh và xác nhận danh tính rất cần thiết
trong các hoạt động thông tin, đặc biệt là khi các hoạt động này thông qua mạng.
Mục tiêu an toàn của việc xưng danh là bảo đảm sao cho khi “nghe” một chủ thể U
nào đó xưng danh với chủ thể V, bất kỳ ai khác U cũng không thể sau đó mạo nhận
mình là U, kể cả chính V. Nói cách khác, U muốn chứng minh để bên kia V xác
nhận danh tính của mình mà không để lộ bất kỳ thông tin gì về mình.

Việc xưng danh thường phải thông qua một giao thức hỏi - đáp nào đó, nhờ đó V có
thể xác nhận danh tính của U, V hỏi U, U trả lời để chứng tỏ cho V biết là U có sở
hữu một bí mật riêng nào đó. Vấn đề an toàn của sơ đồ xưng danh là phải đảm bảo
để sau khi U xưng danh với V, thì bất kỳ người nào khác không thể mạo nhận mình
là U kể cả V. Nói cách khác, U không để lộ một thông tin gì về bí mật mà U có
ngoài thông tin duy nhất là U sở hữu bí mật đó.

Sự an toàn của sơ đồ xưng danh cũng nằm trong tính khó giải của các bài toán nào
đó, hay dựa trên hàm một chiều nào đó.

1.1.4. Trong hệ xác nhận và chữ ký điện tử

Như ta đã nói ở trên bài toán bảo mật được đáp ứng bằng các giải pháp mật mã. Tuy
nhiên giờ đây người nhận còn muốn kiểm thử tính xác thực nguồn gốc của thông
tin, cũng như chắc chắn là thông tin đã không bị thay đổi trong quá trình truyền đi,
và nhất là cần ràng buộc danh tính của bên đã gửi thông tin đi để sau đó anh ta
không thể thoái thác là mình không gửi văn bản đó. Những yêu cầu này được đáp
ứng bằng cách sử dụng chữ ký điện tử.

Chữ ký điện tử có cùng mục đích như chữ ký viết tay, tuy nhiên nếu chữ ký viết tay
dễ dàng giả mạo được thì chữ ký điện tử lại rất khó giả mạo, cộng thêm nó chứng
nhận nội dung của thông tin cũng như là danh tính của người gửi.
Nguyễn Thị Hiền 12 Luận văn thạc sỹ

Sơ đồ chữ ký điện tử cơ bản được mô tả như dưới đây:

1. Người gửi (chủ nhân của văn bản) tạo chữ ký trên văn bản bằng khóa riêng
của mình;

2. Người gửi chuyển văn bản cùng chữ “ký” cho người nhận;

3. Người nhận văn bản sử dụng chìa khóa công khai của người gửi kiểm thử
chữ ký trên văn bản nhận được.

Chữ ký không thể làm giả được vì chỉ có duy nhất người gửi có chìa khóa bí mật để
ký, và cũng không ai giả mạo được vì không có khóa bí mật. Văn bản đã ký không
thể thay đổi nội dung được nữa. Người đã ký thì không thể thoái thác “chữ ký” của
mình.

Bài toán xác nhận với chữ ký điện tử, theo nghĩa nào đó, có thể xem là “đối ngẫu”
với bài toán mã hóa bằng hệ mã công khai. Và vì thế nên sự an toàn của các sơ đồ
ký cũng giống như thuật toán mã khóa công khai phụ thuộc vào độ khó của bài toán
nào đó.

1.2. Vấn đề an toàn khóa trong các giải pháp bảo mật

1.2.1. Hệ mã khóa công khai

Việc tính toán lập mã được công bố công khai (để mọi người trong mạng có thể
thực hiện được). Việc giải mã thì chỉ có người có chìa khóa riêng, bí mật mới có thể
thực hiện được. Quá trình để U gửi thông tin cho V sử dụng hệ mã với khóa công
khai như sau:

(1) U và V thống nhất với nhau về hệ mã công khai sẽ sử dụng;

(2) V gửi khóa công khai của mình cho U (hoặc U lấy được khóa công khai của V
từ cơ sở dữ liệu công khai đặt ở một nơi nào đó);

(3) U sử dụng khóa công khai của V để mã hóa văn bản rồi gửi cho V;

(4) V dùng khóa bí mật của mình để giải mã văn bản nhận được từ U.
Nguyễn Thị Hiền 13 Luận văn thạc sỹ

Với những hệ mã khóa loại này phải đảm bảo dù kẻ tấn công có biết thuật toán và
khóa công khai K không biết khóa bí mật vẫn khó tìm được cách giải mã.

Trong trường hợp dữ liệu công khai được các bên lấy từ một máy chủ nào đó ở xa,
giao thức chỉ an toàn nếu giải quyết được trường hợp sau đây:

• Tấn công giữa dòng

Nếu một kẻ W có khả năng tráo đổi chìa khóa trên cơ sở dữ liệu (CSDL) khóa công
khai thì người đó dễ dàng thu được toàn bộ thông tin mà U gửi cho V. Muốn làm
được việc này, anh ta chỉ việc lấy khóa công khai của mình tráo vào khóa công khai
của V; khi U lấy chìa này để mã hóa thông tin gửi cho V, sẽ bị W thu được và giải
mã; sau khi đọc xong thông tin anh ta sẽ mã hóa bằng khóa công khai của V rồi gửi
cho V; V vẫn nhận thông tin mà U gửi nhưng không biết là W đã nghe trộm toàn bộ
thông tin này. Vẫn bằng cách này W cũng nghe được toàn bộ thông tin mà V gửi
cho U.

Điểm yếu của hệ thống là khi U lấy chìa công khai của V để mã hóa thông tin mà
không biết chìa khóa đó có thực sự là của V hay không? Đặt ra yêu cầu ở đây là
phải khắc phục được tình trạng này. Thêm nữa, nếu giả thiết rằng không một kẻ tấn
công nào có thể truy nhập được vào CSDL trên máy chủ, thì khả năng U nhận được
một khóa “giả mạo” từ trung tâm vẫn có thể xảy ra nếu như W thu được các văn bản
trên đường chuyển về cho U.

1.2.2. Hệ mã khóa đối xứng

Quá trình truyền tin của hai bên U và V sử dụng hệ mã khóa đối xứng có thể được
mô tả như sau:

1. U và V thỏa thuận về hệ mã khóa

2. U và V thỏa thuận khóa dùng chung

3. U sử dụng thuật toán và khóa đã thỏa thuận mã hóa văn bản M muốn gửi cho
V
Nguyễn Thị Hiền 14 Luận văn thạc sỹ

4. U gửi cho V bản mã hóa đó

5. V giải mã văn bản nhận được từ U bằng thuật toán và khóa đã thỏa thuận với
U để thu được bản rõ M.

W nào đó trên đường truyền muốn có được văn bản M, nếu anh ta nghe đường
truyền ở bước (4), anh ta sẽ phải có gắng phân tích bản mã để thu được bản rõ. Tuy
nhiên giờ đây chúng ta có rất nhiều thuật toán để không cho phép W thực hiện
mong muốn của mình. Nhưng W không chịu lùi bước, anh ta cố gắng nghe đường
truyền từ bước (2), và nếu như hai người không có một biện pháp bảo vệ nào cho
khóa thì những gì mà V có được thì W cũng có.

Việc mã hóa thông tin bằng hệ mã đối xứng sử dụng chìa khóa chung cho cả hai
công việc lập mã và giải mã, đặt ra yêu cầu là làm thế nào để hai bên có thể có
chung một giá trị bí mật, không có bên nào khác có thể biết được. Ta vừa nói rằng
với những hệ mã đối xứng thì giai đoạn U và V thống nhất với nhau về chìa khóa
chung sẽ sử dụng là khâu yếu nhất. Nếu chìa khóa này mà bị lộ không những kẻ
gian biết được thông tin hai bên trao đổi với nhau mà còn có thể đóng giả “bên này”
để đánh lừa “bên nọ”. Giải pháp đơn giản nhất là sử dụng khóa phiên chỉ có hiệu
lực trong khoảng thời gian nhất định. Tuy nhiên đó không phải là cách làm hay, và
không khắc phục tận gốc vấn đề. Giải quyết bài toán này càng khó khăn hơn khi ta
biết rằng việc trao đổi khóa một cách tuyệt mật (có giá trị hơn dữ liệu) trong môi
trường công cộng là vô cùng khó.

1.2.3. Vấn đề an toàn khóa trong môi trường truyền thông công cộng

Chúng ta đang tiến đến thế giới của hàng tỷ máy tính kết nối với nhau, nhờ đó
chúng ta có thể mua hàng trên Internet, gửi số thẻ tín dụng, tham gia thị trường
chứng khoán, kiểm tra tài khoản trong ngân hàng, và thực hiện các giao dich thông
qua Internet, thậm chí có thể ký các hợp đồng kinh tế qua mạng. Những công việc
liên quan đến chính lợi ích kinh tế của chúng ta. Do đó, vấn đề làm sao để bảo vệ
tính bí mật và an toàn của thông tin ngày càng to lớn và phổ biến hơn bao giờ hết.
Nguyễn Thị Hiền 15 Luận văn thạc sỹ

Hãy hình dung như thế này, mong muốn trao đổi các văn bản với nhau một cách an
toàn (tin cậy, toàn vẹn, xác thực và không thể thoái thác) được thỏa mãn bằng cách
sử dụng thuật toán mã hóa và công nghệ chữ ký điện tử. Nếu sử dụng thuật toán mã
hóa khóa đối xứng (thông thường các thuật toán khóa đối xứng nhanh hơn khoảng
từ 30-100 lần so với các thuật toán phi đối xứng tương đương) thì khóa đối xứng
được thống nhất và trao đổi với nhau bằng cách nào đó chỉ có hai bên tham gia trao
đổi mới biết mà thôi. Những phương pháp để hai bên nào đó thống nhất một khóa
chung một cách an toàn để sử dụng mã hóa sau này sẽ được nói đến ngay trong
chương hai của luận văn.

Có một giải pháp cho vấn đề trên là người ta sẽ sử dụng hệ mã khóa công khai để
trao đổi khóa đối xứng với nhau, tức là nếu U muốn thống nhất với V khóa dùng
chung K nào đó, U sẽ dùng khóa công khai K’ của V để mã hóa K, sau đó gửi bản
mã cho V, V sẽ dùng khóa riêng của mình để thu được K. Nếu thế thì yêu cầu đặt ra
ở đây là chúng ta sẽ phân phối khóa công khai như thế nào, hay làm thế nào để
khẳng định trong môi trường mạng rằng U đúng là đã có khóa công khai thực sự
của V. Từ đó nảy sinh yêu cầu quản trị khóa và kiểm tra việc sử dụng khóa và đó là
vấn đề sẽ được trình bày trong chương ba của luận văn.
Nguyễn Thị Hiền 16 Luận văn thạc sỹ

Chương 2 - CÁC GIAO THỨC AN TOÀN KHÓA TRONG TRAO ĐỔI,


PHÂN PHỐI VÀ CHUYỂN VẬN KHÓA

2.1. Nhu cầu thỏa thuận, chuyển vận và phân phối khóa

Các hệ mã khóa công khai có nhiều điểm ưu việt hơn so với hệ mã khóa đối xứng vì
chúng không cần thiết lập một kênh truyền an toàn để trao đổi khóa bí mật. Tuy
nhiên điểm yếu của các hệ mã khóa công khai là chậm hơn nhiều so với các hệ mã
khóa đối xứng, thêm nữa hệ mã khóa công khai rất nhạy cảm với tấn công chọn bản
rõ tức là nếu bản mã C = E(P), trong đó P là bản rõ, thì người thám mã chỉ phải thực
hiện mã hóa tất cả các bản rõ có thể rồi so sánh kết quả thu được với C (điều này
làm được là do khóa mã hóa được công khai), bằng cách này anh ta không thể xác
định được khóa bí mật nhưng vẫn có thể thu được P. Vì vậy, trên thực tế hệ mã
khóa đối xứng vẫn đang là công cụ chính trong mã hóa dữ liệu (nhất là khi làm việc
với những văn bản lớn). Thêm nữa, trong rất nhiều giao thức mật mã, đặc biệt là
những giao thức có sự tham gia của bên thứ ba, thường đòi hỏi các bên có một chìa
khóa bí mật chung để làm tiền đề cho quá trình trao đổi chìa khóa phiên làm việc
hay trao đổi chìa khóa công khai dùng trong hệ mã công khai. Vấn đề đặt ra ở đây là
làm sao để trao đổi các giá trị bí mật đó một cách an toàn.

Trong chương này, luận văn sẽ đi vào chi tiết một vài cách tiếp cận để giải quyết
vấn đề trên. Trước tiên ta sẽ xem xét một vài khái niệm cơ bản sẽ được nói đến.

Giao thức là một thuật toán có sự tham gia của nhiều bên, được xác định chính xác
bởi một chuỗi các bước hoạt động của các bên tham gia nhằm đạt được mục tiêu
xác định.

Một vài sơ đồ, giao thức trong chương này có sự tham gia của một cơ quan được uỷ
thác (ký hiệu là TA) chịu trách nhiệm kiểm tra các thông tin về danh tính người
dùng, chọn và chuyển khóa,.v.v.
Nguyễn Thị Hiền 17 Luận văn thạc sỹ

Ngoài nhiệm vụ thiết lập một giá trị khóa chung cho hai bên, đôi khi các bên còn
đòi hỏi giao thức cung cấp tính xác thực, các khả năng xác thực mà giao thức có thể
là:

Xác thực khóa (key authentication) là khả năng giao thức cho phép một bên đuợc
bảo đảm rằng ngoại trừ đúng bên đúng với thông tin danh tính đã xác định trước thì
không một ai khác có thể tính được giá trị bí mật.

Điều này có nghĩa là nếu U (V) muốn thiết lập, hoặc chuyển cho V (U) khóa bí mật
bằng cách sử dụng một giao thức có khả năng xác thực khóa thì sau khi kết thúc
giao thức U chắc chắn rằng chỉ có V mới có thể thu được giá trị đó.

Xác thực khóa đôi khi còn được gọi là xác thực khóa ẩn (implicit key
authentication)

Xác nhận khóa (key confirmation) là khả năng giao thức cho phép một bên chắc
chắn rằng bên kia đã có giá trị bí mật. Nghĩa là sau khi kết thúc giao thức U chắc
chắn rằng V đã thu được giá trị bí mật K.

Xác thực khóa hiển (explicit key authentication) Giao thức có khả năng xác thực
khóa và xác nhận khóa thì được gọi là giao thức xác thực khóa hiển.

Xác thực thực thể (entity authentication) là quá trình cho phép một bên được đảm
bảo về danh tính của bên kia, và thực sự bên kia đã tham gia vào hoạt động của giao
thức.

Các giao thức có thể chỉ cung cấp xác thực thực thể đơn phương (tức là chỉ cho
phép xác thực theo một chiều hoặc là U về V, hoặc là V về U).

Các giao thức có thể bị tấn công dưới dạng các hình thức sau:

Tấn công thụ động (còn gọi là tấn công bị động – passive attack): quan sát, nghe
trộm quá trình thực hiện giao thức nhưng không làm ảnh hưởng tới giao thức và
không thay đổi được thông tin giao dịch.
Nguyễn Thị Hiền 18 Luận văn thạc sỹ

Tấn công chủ động (active attack): tìm cách thay đổi giao thức (theo hướng có lợi
cho mình), thay đổi thông tin, xóa thông tin thực, tạo thông tin giả, tham gia vào
giao dịch.

2.2. An toàn khóa trong các giao thức trao đổi

Giao thức trao đổi khóa là quá trình thực hiện mà nhờ đó hai (hay nhiều) bên cùng
nhau thiết lập khóa bí mật dùng chung thông qua quá trình truyền thông trên một
kênh công cộng.

Sau một số bước trao đổi gói tin cho nhau, U và V sẽ có chung một giá trị K. Bài
toán an toàn khóa đặt ra trong các giao thức này là:

− Mức thứ nhất là nếu W thu được các gói tin U, V gửi cho nhau vẫn không
thể xác định được giá trị khóa chung K đó.

− Mức thứ hai là ngoài việc giao thức đảm bảo an toàn mức một thì giao thức
phải có tính xác thực ẩn.

− Mức thứ ba là mức thứ hai, ngoài ra cả hai bên chắc chắn về bên sẽ dùng
chung khóa với mình, và thực sự đã có các giá trị khóa đó. Tức là giao
thức xác thực hiển và xác thực thực thể.

2.2.1. Trao đổi khóa Diffie-Hellman

2.2.1.1. Giao thức

Đây là giao thức đơn giản nhất cung cấp một chìa khóa chung cho U và V để hai
bên có thể sử dụng hệ mã khđối xứng nào đó [6].

Số nguyên tố p và phần tử nguyên thuỷ α ∈ Zp* được công khai (hoặc U chọn để
truyền thông với V). Hoạt động của giao thức được trình bày như trong Hình 2.1
dưới đây:
Nguyễn Thị Hiền 19 Luận văn thạc sỹ

Hình 2.1 Giao thức Diffie-Hellman


1. U tính X = α a mod p rồi gửi cho V.
U

2. V lấy ngẫu nhiên aV sao cho 0 ≤ aV ≤ p − 2 .

3. V tính Y = α a mod p rồi gửi cho U.


V

4. U tính khóa chung


K = Y aU = (α aV ) aU mod p= α au aV = mod p

V cũng tính được


K = X aV = (α aU ) aV mod p= α au aV mod p

Giá trị aU và aV được chọn lại mỗi khi thực hiện giao thức nên đảm bảo tính mới
(freshness) cho khóa K.

2.2.1.2. Giao thức là an toàn với tấn công thụ động

Khi kẻ tấn công W nghe lén trên đường truyền, anh ta có thể thu được giá trị X và
Y. Liệu rằng từ hai giá trị này anh ta có thể tính được K không? Cách đơn giản nhất
là anh ta đi tìm aU hoặc aV, muốn thế thì W phải giải được bài toán Diffie-Hellman
trong trường Z *p , mà bài toán này đến nay vẫn còn là khó giải với p lớn bất kỳ.

Bài toán Diffie-Hellman: Biết α x mod p và α y mod p , với x, y được lấy ngẫu nhiên
trong Zp-1. Tính α xy mod p .

2.2.1.3. Giao thức bị tấn công giữa dòng

αa U
α a′
U

U
α a'V W αa V
V

W là một kẻ tấn công giữa dòng, nhận được các gói tin U và V gửi cho nhau rồi
thay thế bằng các giá trị do W đưa ra như trong sơ đồ trên.
Nguyễn Thị Hiền 20 Luận văn thạc sỹ


Sau khi thực hiện xong giao thức, U chia sẻ khóa bí mật K ' = α a U aV
mod p với W, còn

V thiết lập khóa K " = α aV aU
mod p với W. Khi U mã hóa văn bản gửi cho V, chỉ có W

có thể giải mã được, còn V thì không thể. Nguợc lại, khi V gửi cho U, thì cũng chỉ
có W có thể giải mã được. U và V cứ tưởng là đang trao đổi thông tin với nhau, chứ
không phải là với W.

2.2.2. Thỏa thuận khóa Station to Station (STS)

2.2.2.1. Giao thức STS

Giao thức do Difie, Van Oorschot, và Wiener đưa ra [6]. Đây là giao thức thỏa
thuận khóa có xác thực (xác thực thực thể và xác thực khóa) dựa trên trao đổi khóa
Diffie-Hellman, nó khắc phục vấn đề tấn công giữa dòng trong giao thức trên.
Ngoài số nguyên tố p và phần tử sinh α công khai của hệ thống, mỗi người dùng U
còn có thuật toán ký sigU cùng với thuật toán kiểm thử verU. Giao thức này có sự
tham gia của bên thứ ba TA có sơ đồ ký với thuật toán ký sigTA, thuật toán kiểm thử
công khai là verTA. Mỗi cá thể U sẽ có chứng chỉ:

C(U) = (ID(U), verU, sigTA(ID(U)), verU)

trong đó ID(U) là thông tin xác định danh tính của U. Hoạt động của giao thức được
trình bày như trong Hình 2.2 dưới đây:

Hình 2.2 Giao thức STS


1. U sinh ngẫu nhiên aU, 0 ≤ aU ≤ p-2
2. U tính
X = α aU mod p

rồi gửi cho V.


3. V lấy ngẫu nhiên aV, 0 ≤ aV ≤ p-2
4. V tính
Y = α aV mod p

sau đó tính
Nguyễn Thị Hiền 21 Luận văn thạc sỹ

K = X aV = α aV aU mod p


yV = sigV( α a ,α a ).V U

5. V gửi (C(V), α a , yV ) cho U.


V

6. U tính
K = Y aU = α aV aU mod p

Kiểm tra lại yV bằng thuật toán kiểm thử verV và C(V) bằng thuật toán
verTA.
7. U tính
yu = sigU (α aU ,α aV )

rồi gửi (C(U), yU) cho V.


8. V sử dụng verU để kiểm thử yU, verTA kiểm thử C(U).

2.2.2.2. Giao thức an toàn với tấn công giữa dòng

αa U

α a , sigV (α a ,α a )
V V U

U V
sigU (α aU ,α aV )

Thật vậy W không thể thay thế α a bằng α a ' , hoặc sau khi nhận được α a của V,
U U V

thay thế nó bằng α a ' . Vì để làm được điều này đồng nghĩa với việc anh ta phải thay
V

sigV (α aV ,α a 'U ) bằng sigV (α a 'V ,α aU ) . Mà do không biết thuật toán ký của V nên W

không thể tính được chữ ký trên (α a ' ,α a ) . Tương tự như thế vì không biết thuật
V U

toán ký của U nên anh ta không thể giả mạo sigU (α a ,α a ' ) thành sigU (α a ' ,α a ) .
U V U V

Bằng cách sử dụng chữ ký, giao thức đã ngăn chặn được các tấn công giữa dòng.

Giao thức STS trên không cho phép xác nhận khóa, tuy nhiên nếu trong bước 4 ta
lấy:
Nguyễn Thị Hiền 22 Luận văn thạc sỹ

yV = eK ( sig (α aV ,α aU ))

và ở bước 6, ta mã hóa các giá trị đã biết với khóa phiên vừa tạo được, thì giao thức
cho phép xác nhận khóa.

2.2.3. Thỏa thuận khóa MTI

2.2.3.1. Giao thức

Dựa trên giao thức Diffie-Hellman, Matsumoto, Takashima, và Imai đã xây dựng
một giao thức thỏa thuận khóa MTI [6]. Các bước hoạt động của giao thức được mô
tả như trong Hình 2.3 dưới đây.

Hình 2.3 Giao thức thỏa thuận khóa MTI

1. U sinh ngẫu nhiên rU thỏa mãn 0 ≤ rU ≤ p-2, rồi tính

sU = α r mod pU

2. U gửi (C(U), sU) cho V.

3. V lấy ngẫu nhiên rV, 0 ≤ rV ≤ p-2, rồi tính

sV = α r mod pV

4. V gửi (C(V), sV) cho U.

5. Khi đó cả U và V đều tính được khóa K chung:

K = sV a bV r mod p = sU a bU r mod p = α r a
U U V V U V + rV aU
mod p

trong đó U lấy được bV từ C(V), còn V lấy được bU từ C(U).

Giống như trong giao thức trao đổi khóa Diffie-Hellman số nguyên tố p, phần tử
nguyên thuỷ α là các giá trị công khai. ID(U) là danh tính của U, U giữ bí mật aU (0
≤ aU ≤ p-2), công khai giá trị:

bU = α a mod p
U

TA công khai thuật toán kiểm thử chữ ký verTA giữ bí mật thuật toán ký sigTA.

Chứng chỉ C(U) của U gồm


Nguyễn Thị Hiền 23 Luận văn thạc sỹ

C(U) = (ID(U), bU, sigTA(ID(U), bU))

2.2.3.2. Giao thức an toàn với tấn công thụ động

Các gói tin lưu chuyển trong giao thức có thể được mô tả như trong hình vẽ dưới
đây:

C(U), α r mod p
U

U V
C(V), α mod p
rV

Dễ thấy là MTI kháng lại được tấn công thụ động cũng như Diffie-Hellman, do việc
giải bài toán MTI cũng khó như bài toán Diffie-Hellman. Người ta đã chứng minh
được rằng nếu giải được bài toán Diffie-Hellman thì cũng giải được bài toán MTI
và ngược lại.

Bài toán MTI: Biết α a mod p , α b mod p , α x mod p , α y mod p , với các giá trị a, b,
x, y được lấy ngẫu nhiên trong trường Zp-1. Tính α ax +by mod p .

2.2.3.3. Giao thức xác thực ẩn

Giao thức MTI là xác thực khóa ẩn. Giả sử rằng nếu không dùng chữ ký trong giao
thức, kẻ tấn công W có thể thay đổi các giá trị mà U và V gửi cho nhau như trong
hình vẽ dưới đây:

C(U), α rU C(U), α rU′

U
C(V), α rV W C(V), α rV′
V
Nguyễn Thị Hiền 24 Luận văn thạc sỹ

+ rV′ aU
Khi đó U và V sẽ tính hai khóa khác nhau: U tính K = α r U aV
mod p, trong khi đó
V tính K ' = α r′ a
U V + rV aU
mod p. Tuy nhiên W cũng không thể biết được các giá trị này
do không biết aU và aV. Vậy thì ngay cả khi U và V không tính chung một giá trị
khóa thì W cũng không thể xác định được các giá trị mà U và V có. Nói cách khác
U (và V) được đảm bảo rằng chỉ có V (và U) mới có thể tính được khóa. Do đó giao
thức có tính xác thực khóa ẩn.

Chú ý: Cả hai giao thức STS và MTI đều dựa trên giao thức trao đổi khóa Diffie-
Hellman, và đều kháng lại được tấn công giữa dòng. Giao thức STS là giao thức 3 -
lần qua (3 – pass – 3 lần chuyển văn bản trong giao thức) có sử dụng chữ ký, còn
MTI là giao thức 2- lần qua (2 - pass) không cần sử dụng chữ ký.

2.2.4. Giao thức Shamir

2.2.4.1. Giao thức trao đổi không cần chìa khóa

Giao thức do Adi Shamir phát minh ra nhưng chưa bao giờ được công bố chính
thức [5], cho phép U và V truyền tin với nhau một cách an toàn mà không cần trao
đổi trước chìa khóa. Giao thức áp dụng cho các hệ mã có tính giao hoán:

EU(EV(P)) = EV(EU(P))

Khi U muốn gửi cho V bản tin M thì hai bên thực hiện giao thức hoạt động như
Hình 2.3 dưới đây, trong đó U, V tương ứng là khóa bí mật của U, V:

Hình 2.4 Giao thức Shamir


1. U mã hóa M bằng khóa của mình rồi gửi cho V
C1 = EU(M)
2. V sử dụng khóa của mình mã hóa C1 rồi gửi cho U
C2 = EV(EU(M))
3. U giải mã C2 bằng khóa của mình rồi gửi V
C3 = DU(EV(EU(M))) = DU(EU(EV(M))) = EV(M)

V dùng khóa của mình giải mã C3 để thu được DV(C3) = DV(EV(M)) = M


Nguyễn Thị Hiền 25 Luận văn thạc sỹ

Lưu ý: Không nên áp dụng thuật toán mã bằng phép XOR bit (dùng chìa là một xâu
bit còn thuật toán mã là trộn xâu bit đó với dữ liệu) [6] cho giao thức này mặc dù
nó thỏa mãn tính giao hoán. Thật vậy nếu kẻ tấn công W nào đó “nghe trộm” được
cả ba bản mã C1, C2, C3

C1 = M ⊕ U

C2 = M ⊕ U ⊕ V

C3 = M ⊕ V

thì hoàn toàn có thể tính được M:

C1 ⊕ C2 ⊕ C3 = (M ⊕ U) ⊕ (M ⊕ U ⊕ V) ⊕ (M ⊕ V) = M

2.2.4.2. Sự an toàn của giao thức

Shamir đã sử dụng thuật toán mã hóa tương tự RSA để dùng trong giao thức, trong
đó p là số nguyên tố lớn, e là khóa mã hóa thỏa mãn (e, p-1) = 1. Tính d sao cho ed
≡ 1 mod (p-1).

Mã hóa văn bản M : C = Me mod p

Giải mã thu được văn bản M = Cd mod p

Với cách sử dụng này nếu W muốn có được M thì anh ta buộc phải giải bài toán
logarit rời rạc.

Cũng giống như Diffie – Hellman, giao thức Shamir cho phép một bên truyền tin
mà không cần biết khóa của bên kia.

2.2.5. Giao thức trao đổi khóa mã hóa - Encrypted Key Exchange (EKE)

2.2.5.1. Giao thức

Giao thức dùng để nhận diện lẫn nhau và sinh chìa khóa cho phiên làm việc do
Steve Bellovin và Micheal Merritt đưa ra [4], sử dụng cả mã khóa đối xứng và mã
khóa công khai theo cách tiếp cận: khóa bí mật được dùng để mã hóa khóa công
khai sinh ngẫu nhiên, do đó không sợ kẻ gian tráo đổi các chìa khóa công khai.
Nguyễn Thị Hiền 26 Luận văn thạc sỹ

Bằng cách này hai bên tham gia giao thức không cần đến một bên thứ ba xác nhận
hộ chìa khóa công khai của nhau.

Giao thức EKE tổng quát hoạt động như Hình 2.5 dưới đây. Giả sử U và V (có thể
là hai thành viên, hoặc một thành viên và máy chủ) cùng biết mật khẩu P.

Hình 2.5 Giao thức EKE


1. U sinh ngẫu nhiên chìa khóa công khai K ' , mã hóa bằng chìa bí mật
P: Ep(K’) (E là thuật toán mã khóa đối xứng). Sau đó gửi cho V
U, EP(K’)
2. V biết P nên có thể giải mã để tìm ra K’, đồng thời lấy ngẫu nhiên K
dùng làm khóa phiên, mã hóa nó như sau: EP(EK’(K)) rồi gửi cho U.
3. U giải mã để lấy K và dùng nó mã hóa xâu RU do mình sinh ra ngẫu
nhiên, rồi gửi cho V:
EK(RU)
4. V nhận được gói tin giải mã để thu được RU, rồi lấy ngẫu nhiên một
xâu khác, RV, mã hóa cả hai xâu bằng khóa K, rồi gửi cho U
EK(RU||RV)
5. U nhận tin, giải mã để thu được RU, RV. Nếu RU đúng là giá trị mà U
đã lấy ở bước (3) thì U sẽ mã hóa tiếp RV rồi gửi cho V
EK(RV)

6. V nhận tin này, giải mã để thu được xâu bit mà mình sinh ra. Nếu
RV đúng là giá trị mà V đã lấy ở bước thứ (4), thì kết thúc quá trình
truyền thông giữa U và V. Trong quá trình truyền tin, khóa K được
hai bên sử dụng như một khóa phiên.

Đến bước (3), cả U & V đều biết K’ và K, trong đó K được sử dụng như là khóa
trong phiên truyền tin giữa hai bên.

2.2.5.2. Cài đặt giao thức


Nguyễn Thị Hiền 27 Luận văn thạc sỹ

Trong thực tế giao thức EKE có thể triển khai với RSA, ElGamal, hoặc với Diffie-
Hellman. Trong từng cài đặt cụ thể, giao thức có thể được đơn giản hóa dựa trên
đặc thù của mỗi hệ mã.

2.2.5.3. Giao thức cho phép nhận diện lẫn nhau

Phần hỏi - đáp trong giao thức (từ bước (3) đến (6)) nhằm mục đích xác nhận. Từ
(3) đến (5), V chứng tỏ cho U thấy rằng mình biết khóa K; còn từ (4) đến (6) U
chứng tỏ cho V rằng U biết K.

2.2.5.4. An toàn giao thức

Kẻ tấn công E trên đường truyền chỉ có được EP(K’), EP(EK’(K)), và những văn bản
đã được mã hóa. E có thể cố gắng đoán P (nếu U, V dùng mật khẩu dễ đoán thì rất
có thể điều này sẽ xảy ra), và kiểm tra lại các suy đoán của mình. Tuy nhiên trong
giao thức này E không thể thực hiện các kiểm tra của mình mà không thực hiện
phép thám mã thuật toán công khai. Và nếu K, K’ được lấy một cách ngẫu nhiên thì
bài toán thám mã này gần như không thể thực hiện được.

2.2.5.5. Làm mạnh thêm EKE

Để tăng thêm khả năng cho EKE chống lại sự thám mã bằng các giá trị K đã dùng
trước đây, ở bước (3), U lấy thêm một xâu bit ngẫu nhiên SU và gửi cho V:

EK(RU || SU)

Bước (4), V cũng lấy thêm một giá trị ngẫu nhiên SV, gửi cho U:

EK(RU || RV || SV)

Sau đó U, V thống nhất với nhau sử dụng chìa khóa phiên S = SU ⊕ SV cho các
trao đổi sau này, khi đó K chỉ còn là khóa để trao đổi khóa.

Với cách làm này, giá trị S mà kẻ tấn công E thu được không cung cấp cho anh ta
một chút thông tin gì về P (bảo vệ P), bởi vì trong giao thức không có phép toán
nào sử dụng P để mã hóa thông tin liên quan trực tiếp đến S. Tấn công trên K cũng
Nguyễn Thị Hiền 28 Luận văn thạc sỹ

không khả thi do K chỉ được dùng để mã hóa dữ liệu ngẫu nhiên, còn S thì không
có chỗ nào mã hóa một mình.

Một trong những lợi thế của EKE là, nếu biết phối hợp khéo léo, thì sức mạnh của
hệ thống sẽ được kết hợp thế mạnh của cả hai loại khóa sử dụng

2.2.6. Sơ đồ Girault

2.2.6.1. Giao thức thỏa thuận khóa tự xác thực

Giao thức thỏa thuận khóa không chứng chỉ do Girault đưa ra, là sự kết hợp giữa
RSA và thuật toán rời rạc. Sở dĩ giao thức có tên như thế là do nó cho phép người
dùng “tự xác thực” khóa, theo nghĩa là chỉ có chính họ mới biết khóa bí mật, trái
ngược với những giao thức mà bên uỷ quyền cũng biết khóa bí mật của mỗi người.
Với n = pq, trong đó p = 2p1 + 1, q = 2q1 + 1, p, q, p1, q1 là những số nguyên tố lớn.
Nhóm nhân Z n* đẳng cấu với Z *p x Z q* . Do đó bậc cao nhất của phần tử nào đó trong

Z n* sẽ là bội số chung nhỏ nhất của p-1 và q-1, tức là 2p1q1. Giả sử α là phần tử bậc

2p1q1. Khi đó nhóm con cyclic của Z n* sinh bởi α là cài đặt phù hợp với bài toán
logarit rời rạc.

Trong sơ đồ Girault, n, α là các giá trị công khai, còn p, q, p1, q1 chỉ có TA biết. Số
mũ mã hóa RSA e công khai do TA lấy, giữ bí mật d=e-1 mod Φ(n).

ID(U) là định danh của cá thể U. TA sẽ cấp cho U khóa công khai tự xác thực pU
bằng giao thức trong Hình 2.6 dưới đây:
Nguyễn Thị Hiền 29 Luận văn thạc sỹ

Hình 2.6 TA cung cấp khóa công khai tự xác thực cho thành viên

1. U sinh ngẫu nhiên aU, rồi tính

bU = α a mod n
U

2. U gửi aU và bU cho TA.

3. TA xác định

pU = (bU - ID(U))d mod n

và gửi pU cho U

Từ công thức xác định pU ta thấy có thể tính

bU = pUe + ID(U) mod n

từ các giá trị công khai pU, ID(U).

Sơ đồ Girault được trình bày như trong Hình 2.7 dưới đây:

Hình 2.7 Sơ đồ Girault

1. U sinh ngẫu nhiên rU rồi tính

sU = α r mod n
U

2. U gửi ID(U), pU, và sU cho V

3. V lấy rV ngẫu nhiên và tính

sU = α r mod n
V

4. V gửi ID(V), pV, và sV cho U.

5. Khi đó U tính khóa chung

K = sV a ( pV e + ID(V )) r mod n = α r a
U U U V + rV aU
mod n

và V cũng tính được

K = sU a ( pU e + ID(U )) r mod n = α r a
V V U V + rV aU
mod n
Nguyễn Thị Hiền 30 Luận văn thạc sỹ

2.2.6.2. Giao thức an toàn với tấn công thụ động, tấn công chủ động

Hãy xem khả năng các khóa tự xác thực có thể bảo vệ giao thức trước một tấn công
nào đó. Vì TA không ký trên các giá trị bU, pU, và ID(U), nên người khác không thể
kiểm thử được tính chính xác của các giá trị đó một cách trực tiếp. Nếu kẻ tấn công
W giả mạo các thông tin của U (tức là các giá trị này không phải là những giá trị
được sinh ra bởi quá trình truyền tin với TA). W giả mạo giá trị bU thành bU′ , nhưng
nếu bài toán logarit rời rạc vẫn còn khó giải được thì W không thể tính được aU′ , mà
khi không có bU′ , W không thể tính được khóa K. Tấn công thụ động không thể xảy
ra.

Tình huống này tương tự với việc W là kẻ tấn công chủ động. W có thể làm cho U
và V không tính cùng một giá trị khóa chung, nhưng cũng không thể xác định được
những giá trị mà U, V có. Do đó, giống như MTI, sơ đồ cung cấp tính xác thực khóa
ẩn.

Ở đây có thể ta sẽ đặt câu hỏi là tại sao TA lại yêu cầu U gửi cả giá trị aU trong khi
đó TA có thể tính được pU mà chỉ cần sử dụng bU. Lý do của nó là TA phải tin chắc
rằng U thực sự biết aU trước khi TA tính pU cho U. Chúng ta sẽ phân tích kỹ hơn để
thấy được sự cần thiết của điều này.

Nếu kẻ tấn công W chọn một giá trị a’U nào đó, rồi tính:

bU′ = α aU′ mod n

và lấy

bW′ = bU′ − ID(U ) + ID(W )

sau đó gửi b’W và ID(W) cho TA. TA tính khóa công khai

pW′ = (bW′ − ID(W )) d mod n

cho W. Ta thấy rằng

bW′ − ID(W ) ≡ bU′ − ID(U ) (mod n)


Nguyễn Thị Hiền 31 Luận văn thạc sỹ

hay pW′ = pU′ .

Sau này, khi U và V thực hiện giao thức, W có thể thay thế thông tin như hình vẽ
dưới đây:

ID(U), pU, α r mod n


U
ID(U), p’U, α r ′ mod n
U

U
ID(V), pV, α r mod n
V W ID(V), p’V, α r ′ mod n
V
V

V sẽ tính khóa K’ = α r ′ a
U V + rV aU′
mod n

trong khi đó U sẽ tính khóa K = α r U aV + rV aU


mod n

W có thể tính được K’ = sV a ( pVe + ID(V ))rU′ mod n
U

W biết khóa K’ của V, còn V nghĩ rằng mình đang dùng chung khóa với U. Vì thế
W sẽ giải mã được tất cả văn bản mà V gửi cho U.

2.3. An toàn khóa trong các giao thức phân phối khóa

Giao thức phân phối khóa: Là quá trình nhờ đó một bên tạo ra hoặc ngược lại nhận
được một giá trị dùng làm bí mật (khóa), và chuyển cho bên kia một cách an toàn.

Phân phối khóa đôi khi còn được gọi là chuyển vận khóa.

Trong phần này chúng ta sẽ nghiên cứu các giao thức phân phối có sự tham gia của
một Trung tâm phân phối khóa (KDC – Key Distribution Center) được các thành
viên trong hệ thống tin cậy. Giao thức giả thiết rằng U và V tương ứng chia sẻ khóa
KU, KV với KDC. Khi đó hoạt động của các giao thức dạng này có thể mô tả tổng
quát như sau:

− U yêu cầu T (KDC) cung cấp một khóa phiên để truyền thông với V.

− T sinh ngẫu nhiên khóa phiên K, gửi E K (K ) cho U và E K (K ) cho V.


U V

− U và V sử dụng KU, KV của mình giải mã để thu được khóa K.


Nguyễn Thị Hiền 32 Luận văn thạc sỹ

Vấn đề an toàn của giao thức:

- Khi TA phân phối bí mật cho U, V thì một thành viên của hệ thống có thể
thu được khóa của U và V hay không, nếu không thì bao nhiêu người liên
minh với nhau để tính được khóa của U và V?

2.3.1. Sơ đồ phân phối khóa Blom

2.3.1.1. Trình bày sơ đồ

Sơ đồ Blom [6] thường được dùng trong hệ thống mạng gồm n thành viên, các giá
trị khóa được lấy trong trường Zp, trong đó p nguyên tố, p ≥ n, nếu k số nguyên
thỏa mãn 1 ≤ k ≤ n-2 là số người nhiều nhất mà sơ đồ mong muốn còn giữ được an
toàn thì TA sẽ phải chuyển k +1 giá trị trong Zp cho mỗi người qua kênh chuyển tin
cậy. U và V nếu muốn truyền thông với nhau sau đó sẽ tính khóa chung KU,V = KV,U
mà k người bất kỳ ngoại trừ U và V không thể xác định được giá trị khóa này.

Trước tiên luận văn sẽ trình bày sơ đồ trong trường hợp k = 1 như trong Hình 2.8
dưới đây.

Hình 2.8 Sơ đồ phân phối khóa Blom (k=1)


1. Công khai số nguyên tố p của hệ thống, mỗi cá thể U công khai giá trị
rU ∈ Zp, giá trị này của mọi người là khác nhau.
2. TA lấy ba giá trị ngẫu nhiên a, b, c ∈ Zp (không cần phải khác nhau),
sau đó xây dựng đa thức:
f ( x, y ) = a + b( x + y ) + cxy) mod p

3. TA xác định rồi chuyển cho mỗi người dùng U một đa thức
g U ( x) = f ( x, rU ) mod p

Với cách xác định như trên thì gU(x) là đa thức tuyến tính biến x, vì thế ta
có thể viết
gU(x) = aU + bUx
trong đó aU = a + brU mod p , bU = b + crU mod p

4. U và V muốn truyền tin với nhau, hai người sẽ dùng khóa chung
Nguyễn Thị Hiền 33 Luận văn thạc sỹ

K U ,V = K V ,U = f (rU , rV ) = a + b(rU + rV ) + crU rV mod p

trong đó U tính KU, V bằng

f (rU , rV ) = g U (rV )

còn V tính KU, V

f (rU , rV ) = g V (rU )

2.3.1.2. Vấn đề an toàn của sơ đồ

Sơ đồ Blom với k=1 là an toàn tuyệt đối đối với bất kỳ người dùng nào.

Thật vậy, giả sử nếu W là một thành viên của hệ thống muốn tính khóa của U, V

K U ,V = a + b(rU + rV ) + crU rV mod p

W có thể biết các giá trị công khai rU, rV, cộng thêm những giá trị aW, bW TA gửi
cho W, còn a, b, c thì không thể biết được, :
aW = a + brW mod p , bW = b + crW mod p

Với những thông tin mà W có thì giá trị bất kỳ l ∈ Z p đều có thể là khóa KU, V. Xét

hệ phương trình được biểu diễn bởi ma trận (trong Zp) như dưới đây:

 1 rU + rV rU rV  a   l 
    
1 rW 0  b  =  a w 
0 1 rW  c   b 
    w 

Phương trình đầu tiên chính là giả thiết K U, V = l ; phương trình thứ hai và thứ ba là
những thông tin mà W biết. Định thức của ma trận này là
2
rW + rU rV − (rU + rV ) rW = (rW − rU )(rW − rV )

(các phép toán ở đây đều được thực hiện trong Zp). Do rW ≠ rU và rW ≠ rV , nên định
thức trên khác không, do đó hệ phương trình có duy nhất nghiệm a, b, c. Hay nói
cách khác với những thông tin mà W có thì giá trị l bất kỳ đều có thể là khóa K U ,V

của U và V.
Nguyễn Thị Hiền 34 Luận văn thạc sỹ

Tuy nhiên, nếu hai thành viên W, X nào đó sao cho {W, X} ∩ {U,V} = φ liên
minh với nhau thì họ có thể xác định được a, b, c. Thật vậy hệ phương trình:

aW = a + brW
b = b + crW
 W

a X = a + brX
 b X = b + crX

sẽ có duy nhất nghiệm a, b, c. Một khi họ đã xác định được các giá trị này thì họ sẽ
tính được tất cả các khóa của hai bên nào đó.

Xuất phát từ chứng minh trên, làm sao để xây dựng sơ đồ an toàn với sự liên minh
của k người nào đó, thế thì trong bước 2, TA sẽ sử dụng đa thức có dạng:
k k
f ( x, y ) = ∑∑ ai , j x i y j mod p
i =0 j =0

trong đó ai , j ∈ Zp (0 ≤ i ≤ k , 0 ≤ j ≤ k ) , ai , j = a j ,i với mọi i, j. Phần còn lại của giao

thức vẫn giữ nguyên.

2.3.2. Hệ phân phối khóa Kerberos

2.3.2.1. Trình bày sơ đồ

Hệ phân phối Kerberos [6] là hệ dựa trên mã khóa bí mật, sinh khóa cho mỗi phiên
truyền thông giữa hai người nào đó. Mỗi thành viên U trong mạng chia sẻ một khóa
bí mật DES KU với TA. Mỗi khi có nhu cầu truyền thông với V, U sẽ yêu cầu TA
cấp một khóa phiên cho cho cả U và V. Khi TA nhận được yêu cầu này từ U, nó sẽ
ghi lại thời gian yêu cầu T (tem thời gian), và xác định khoảng thời gian sống L của
khóa K (khoảng thời gian khóa K còn hợp lệ). Hoạt động của giao thức được trình
bày như trong Hình 2.9 dưới đây.

Hình 2.9 Hệ phân phối khóa phiên Kerboros

1. U yêu cầu TA cung cấp khóa phiên để truyền tin với V

2. TA sinh ngẫu nhiên khóa phiên K, tem thời gian T, và thời gian sống L
Nguyễn Thị Hiền 35 Luận văn thạc sỹ

(khóa phiên K chỉ có giá trị từ thời điểm T đến T+L).

3. TA tính

m1 = e KU ( K || ID(V ) || T || L)

m2 = e KV ( K || ID(U ) || T || L)

rồi gửi m1, m2 cho U

4. U dùng hàm d K giải mã để thu được K, T, L và ID(V). Sau đó tính


U

m3 = e K ( ID(U ) || T )

rồi gửi m2, m3 cho V.

5. V sử dụng d K giải mã m2 để xác định K, T, L và ID(U), d K giải mã m3


V

thu được T và ID(U). Nếu thấy các giá trị T và ID(U) giải mã được khớp
nhau thì V tính

m 4 = e K (T + 1)

rồi gửi cho U

6. U dùng dK giải mã m4 và kiểm tra xem kết quả thu được có đúng là
T+1 hay không.

2.3.2.2. Vấn đề an toàn của sơ đồ

Trong giao thức, các văn bản m1, m2, m3 có chức năng hoàn toàn khác nhau, m1, m2
dùng để cung cấp tính an toàn quá trình chuyển K, trong khi đó m3, m4 được sử
dụng để xác nhận khóa, cho phép U và V tin rằng người kia cũng sở hữu cùng một
giá trị khóa phiên K với mình.

Sử dụng tem thời gian T và thời gian sống L để kháng lại các tấn công chủ động
dùng lại các văn bản sử dụng trước đó đã hết hiệu lực.

Trở ngại chính của Kerboros là tất cả mọi người trong mạng phải có một đồng hồ
đồng bộ, vì giao thức cần phải xác định thời điểm hiện tại để tính toán khoảng thời
Nguyễn Thị Hiền 36 Luận văn thạc sỹ

gian còn hợp lệ của khóa. Trong thực tế thực hiện điều này là rất khó, vì thế luôn có
độ chênh lệch nhất định.

2.3.3. Hệ phân phối khóa Diffie – Hellman

2.3.3.1. Trình bày giao thức

Để sử dụng được Kerboros thì TA luôn luôn phải trực tuyến (on-line), đôi lúc điều
này có thể dẫn đến lãng phí tài nguyên và tình trạng thắt cổ chai... Giao thức thỏa
thuận khóa Diffie-Hellman [4] được xây dựng từ giao thức trao đổi khóa Diffie-
Hellman cho phép TA không phải biết và chuyển bất kỳ thông tin bí mật nào về
khóa của các bên tham gia truyền tin khi thiết lập khóa chung.

Trong sơ đồ này TA sử dụng thuật toán kiểm thử verTA công khai, thuật toán ký
sigTA, công khai số nguyên tố p, phần tử nguyên thủy α của Zp cho mọi người dùng
trong mạng. Mỗi cá thể U có một chứng chỉ được cấp phát một lần khi tham gia vào
hệ thống

C(U) = (ID(U), bU, sigTA(ID(U), bU))

trong đó bU = α a mod p , aU là giá trị bí mật, ID(U) là thông tin xác định danh tính
U

U.

Hoạt động của giao thức được mô tả trong Hình 2.10


Nguyễn Thị Hiền 37 Luận văn thạc sỹ

Hình 2.10 Giao thức phân phối khóa Diffie-Hellman

1. V tính

mod p = α aU aV mod p
aV
K U ,V = bU

trong đó giá trị bU lấy từ chứng chỉ của U

2. U tính

mod p = α aU αV mod p
aU
K V ,U = bV
giá trị bV lấy từ chứng chỉ của V.

2.3.3.2. Vấn đề an toàn của sơ đồ

Chúng ta sẽ xem xét tính an toàn của sơ đồ trước tấn công thụ động và chủ động.
Chữ ký trên chứng chỉ của người dùng chống lại các tấn công chủ động, vì rõ ràng
không ai có thể thay đổi được giá trị bU (hay bV) đã được TA ký trong chứng chỉ.
Đối với các tấn công bị động, nếu W có các giá trị α a mod p và α a mod p , thì liệu
U V

anh ta có thể tính được α a U aV


mod p ? Khi đó anh ta phải giải bài toán Diffie-

Hellman, nếu bài toán giải được thì giao thức không an toàn với tấn công thụ động.
Cũng giống như giao thức Diffie-Hellman và một vài giao thức dựa trên nó, tính an
toàn của sơ đồ trước các tấn công bị động nằm trong tính khó giải của bài toán
Diffie – Hellman.

2.3.4. An toàn khóa trong các sơ đồ chia sẻ bí mật

Có những bí mật chung của một nhóm người nào đó mà chỉ khi có đủ các thành
viên trong nhóm mới có thể giải mã được. Mô hình phổ biến giải quyết vấn đề này
là các sơ đồ ngưỡng tức là dữ liệu được chia thành n gói (gọi là các hình chiếu -
shadow) sao cho có m gói thì sẽ khôi phục được dữ liệu, còn mọi tập con không quá
(m - 1) gói thì không thể.
Nguyễn Thị Hiền 38 Luận văn thạc sỹ

Trong phần này chúng ta sẽ xem xét một sơ đồ ngưỡng tiêu biểu do Shamir đưa ra.
Sơ đồ này dựa trên nội suy đa thức: đa thức y = f (x) bậc t-1 xác định duy nhất nhờ
t điểm (xi, yi). Hoạt động của giao thức như trong Hình 2.11 dưới đây.

Hình 2.11 Sơ đồ ngưỡng Shamir

1. Phân phát các gói: Trung tâm T lấy giá trị bí mật S ≥ 0, chia cho n người.

a. T lấy số nguyên tố p > max(S, n), và đặt a0 = S.

b. T lấy độc lập, ngẫu nhiên t - 1 hệ số a1, a2, …,at-1, 0 ≤ aj ≤ p-1, xác
t −1
định một đa thức ngẫu nhiên trên Zp, f ( x) = ∑ a j x j
j =0

c. T tính các Si = f(i) mod p, 1 ≤ i ≤ n (hoặc có thể lấy n giá trị phân
biệt nằm trong khoảng 1 ÷ p − 1 ), rồi chuyển Si cho Pi, cùng với
chỉ số i công khai.

2. Tập hợp các chia sẻ. Bất kỳ một nhóm t người hoặc nhiều hơn đóng góp
các chia sẻ của mình, sẽ có t điểm khác nhau (x, y) = (i, Si), khi đó sẽ
tính được các hệ số aj, 1 ≤ j ≤ t − 1 , của đa thức f(x) bằng hai cách (sử
dụng nội suy, giải hệ phương trình) . Khi đó S sẽ tính được nhờ
f (0) = a 0 = S .

Sơ đồ ngưỡng Shamir có các tính chất sau đây:

• hoàn hảo theo nghĩa nếu có ít hơn t giá trị thì mọi giá trị nằm trong khoảng
[0, p-1] đều có thể là S.

• lý tưởng theo nghĩa là độ dài bit của các chia sẻ bằng với độ dài bit của S.

• khả năng mở rộng khi có thêm người dùng mới. T tính thêm rồi chuyển giá
trị cho người sử dụng mới gia nhập hệ thống, những giá trị của những người
khác không hề thay đổi.
Nguyễn Thị Hiền 39 Luận văn thạc sỹ

• dễ dàng thay đổi mức độ điều khiển. Thành viên nào càng có nhiều giá trị thì
càng chi phối nhiều hơn vào quá trình tính S.

• không có giả thiết nào không thể chứng minh được. Không giống như nhiều
sơ đồ mã hóa khác, tính an toàn đặt dưới một giả thiết chưa được chứng
minh đúng đắn bằng Toán học, sơ đồ ngưỡng không có một giả thiết nào
không thể chứng minh được.

Tổng quát

Ta tổng quát hóa sơ đồ ngưỡng lên như sau. Đưa ra tập tất cả người dùng P, xác
định U (cấu trúc truy nhập) là tập các tập con, được gọi là các tập con được quyền
của P. Các gói được tính toán và phân phối sao cho khi kết hợp các gói của các
thành viên trong một tập con A ∈ U sẽ thu được giá trị của S, nhưng nếu kết hợp
các gói của những người trong tập con B ⊆ P , B ∉ U sẽ không thể tính được giá trị
của S.

Các sơ đồ ngưỡng là lớp đặc biệt của sơ đồ chia sẻ bí mật tổng quát, trong đó cấu
trúc truy nhập bao gồm tất cả các tập con có t người.

2.4. An toàn khóa trong các giao thức chuyển vận khóa

Như ta đã nói trong mục 2.3 chuyển vận khóa chính là phân phối khóa. Tuy nhiên
trong phần này chủ yếu trình bày giao thức chuyển vận khóa dựa trên mã khóa công
khai, trong đó một bên sẽ lấy khóa đối xứng rồi chuyển cho bên kia bằng cách sử
dụng khóa công khai của bên đó để mã hóa. Với cách làm như vậy, giao thức cho
phép xác thực khóa với bên gửi vì chắc chắn rằng chỉ có bên có khóa bí mật tương
ứng với khóa công khai dùng để mã hóa mới có thể thu được giá trị khóa đối xứng
đó.

Vấn đề an toàn đặt ra đối với các giao thức loại này khi U đã chắc chắn rằng chỉ có
V mới thu được khóa thì ngoài ra:

- U cần chắc chắn thêm rằng:

o V đã nhận đúng giá trị khóa và thực sự đã có giá trị đó.


Nguyễn Thị Hiền 40 Luận văn thạc sỹ

o Đúng là bên mà mình cần chuyển sẽ nhận được khóa.

- Bên nhận V cần chắc chắn:

o Người gửi cho mình đúng là U.

Giải pháp cho vấn đề này là sử dụng chữ ký, có thể ký trên văn bản vừa mã hóa
bằng khóa công khai, hoặc ký trên văn bản rồi mới thực hiện mã hóa, hoặc gửi cả
bản có chữ ký trên văn bản và bản mã hóa văn bản bằng khóa công khai. Đó chính
là các giao thức chúng ta sẽ nghiên cứu trong phần này.

2.4.1. Giao thức không sử dụng chữ ký

Giao thức một lần chuyển

U chuyển cho V gói tin: PV(k || U)

Giao thức là xác thực ẩn như đã nói ở trên. Còn đối với bên nhận V thì không có gì
đảm bảo rằng U đúng là người đã chuyển cho mình gói tin đó.

Nếu giao thức có sử dụng tem thời gian thì có thể kháng lại được tấn công biết khóa
(nếu khóa đã dùng trước đây bị lộ thì khóa dùng sau này cũng bị lộ), tức là khi đó U
sẽ chuyển cho V: PV(k, TU).

2.4.2. Giao thức có sử dụng chữ ký

Sử dụng chữ ký là một cách thức để giao thức chuyển vận xác thực nguồn gốc dữ
liệu cho bên nhận. Giao thức có thể thực hiện ký trên khóa rồi mã hóa, hoặc mã hóa
xong rồi ký, hoặc ký và mã hóa riêng.

Ta ký hiệu SU(y), PV(y) là chữ ký trên y dùng khóa bí mật của U, và mã khóa công
khai trên y dùng khóa của V.

2.4.2.1. Ký trên khóa rồi thực hiện mã hóa

• Giao thức

U gửi cho V: PV(k || tU* || SU(V || k || tU*))


Nguyễn Thị Hiền 41 Luận văn thạc sỹ

tU là tem thời gian do U chọn (dấu * để chỉ giá trị không bắt buộc phải có trong gói
tin giao thức)

• Vấn đề an toàn của giao thức

Nếu có tU việc xác thực U với V thuận tiện hơn, ngoài ra nó cũng đảm bảo tính mới
của khóa. Danh tính của V được đưa vào trong văn bản ký nhằm ngăn chặn không
cho V đóng giả U gửi cho người khác.

So với phương pháp mã hóa xong rồi ký mà ta sẽ nói đến ngay sau đây thì phương
pháp này có nhược điểm là dữ liệu để mã hóa thường lớn hơn, vì thế có thể phải
điều chỉnh kích thước khối trong sơ đồ mã hóa công khai. (sử dụng CBC [6])

Nếu thuật toán ký khả nghịch tức là từ chữ ký có thể thu được văn bản gốc, U chỉ
cần chuyển cho V:

U→V: PV(SU(V || k || tU*))

2.4.2.2. Mã hóa và ký riêng

• Giao thức

Với những sơ đồ ký không cho phép xác định bản rõ từ chữ ký, thay vì mã hóa trên
chữ ký, ta sẽ thực hiện ký trên khóa và mã hóa khóa riêng biệt. Văn bản của giao
thức có dạng:

U→V: PV(k || tU*), SU(V || k || tU*)

Nếu khóa k chỉ dùng để mã hóa tệp dữ liệu y nào đó, thì thay cho k ta sẽ dùng SU(V
|| Ek(y) || tU*). Giao thức này rất phù hợp với các ứng dụng lưu và chuyển tiếp: dữ
liệu y cùng với thông tin về khóa được chuyển cho bên kia, bên nhận thu được y
bằng cách sử dụng k để giải mã tệp sau đó mới kiểm thử chữ ký trên y.

2.4.2.3. Mã hóa khóa rồi ký

• Giao thức

Ngược lại với cách ký trên bản mã khóa, U muốn chuyển cho V khóa k có thể gửi
gói tin như sau:
Nguyễn Thị Hiền 42 Luận văn thạc sỹ

U→V: tU*, PV(U || k), SU(V || tU* || PV(U || k))

Thông tin về V được đưa vào trong phần ký để chống lại việc lột bỏ (stripping) chữ
ký – không cho phép kẻ tấn công W nào đó lấy được giá trị PV(k) rồi ký đè lên bằng
khóa của mình. Hơn nữa, khi chọn thuật toán mã hóa, lưu ý rằng nó phải đảm bảo
W không thể thay đổi PV(U || k) thành PV(W || k).

• Tính an toàn của giao thức

Bằng cách dùng tem thời gian, giao thức cho phép các bên xác thực lẫn nhau.

2.4.3. Giao thức lai

Không chỉ thuần sử dụng một hệ mật mã nào đó, đôi khi có những giao thức sử
dụng mã khóa đối xứng trong cả mã khóa công khai và chữ ký điện tử, giao thức
Beller-Yacobi là một ví dụ như thế. Những giao thức sử dụng cả kỹ thuật mã khóa
đối xứng và mã khóa công khai được gọi là giao thức lai.

2.4.3.1. Giao thức Beller-Yacobi 4 - lần qua (4-pass)

• Giao thức

Khi hai bên tham gia vào quá trình truyền tin có sự chênh lệch về khả năng xử lý thì
ngoài yêu cầu giao thức đảm bảo việc chuyển khóa an toàn nó còn phải hạn chế đến
mức ít nhất các phép toán cần thực hiện tại bên yếu hơn (ít tài nguyên hơn, khả
năng xử lý, tính toán kém hơn).

Về cơ bản trong giao thức, U tự xưng danh với V bằng cách ký trên một văn bản
ngẫu nhiên m, trong khi V xưng danh với U thông qua việc chứng tỏ những hiểu
biết của mình về khóa K mà chỉ có V mới xác định được. Để thuận tiện cho việc
trình bày ta sẽ sử dụng RSA với giá trị mũ công khai e = 3, mặc dù trong thực tế
người ta thường dùng Rabin vì tính hiệu quả của nó.

Ký hiệu EK(y) là bản mã khóa đối xứng của y bằng thuật toán E sử dụng khóa K,
PX(y) tương ứng với bản mã bằng khóa công khai của X trên y, ngược lại SX(y) là
Nguyễn Thị Hiền 43 Luận văn thạc sỹ

kết quả giải mã bằng khóa bí mật của X trên y. IX là xâu bit xác định danh tính của
X. h(y) là giá trị băm y.

Ủy quyền T chọn số nguyên tố nS, phần tử sinh α nhóm nhân modulo nS, số nguyên
tố p, q, công khai n = pq và eT = 3, giữ bí mật dT thỏa mãn eT d T ≡ 1 mod (p-1)(q-1).
Mỗi bên (U và V) được T gửi khóa công khai có xác thực và một xâu xác định danh
tính nT , (n S , α ) , IX.

Ta quy ước bên U là bên yếu hơn. Hoạt động của giao thức được mô tả như trong
Hình 2.12 dưới đây:

Hình 2.12 Giao thức Beller-Yacobi 4-lần qua

Trước khi thực hiện giao thức U lấy ngẫu nhiên số a thỏa mãn
1 ≤ a ≤ nS − 2 , tính ν U = α a mod n S là chữ ký ElGamal rồi chuyển ν U cho

T, T xây dựng và gửi chứng chỉ cho U: certU = ( I U ,ν U , GU ) bao gồm danh
tính IU của U, khóa công khai ký ElGamal, chữ ký RSA GU của T trên các
thông tin đó: GU = S T ( I U ,ν U ) = (h( IU ,νU ) d mod nT .
T

1. U lấy ngẫu nhiên x sao cho 1 ≤ x ≤ n S − 2 và giữ bí mật, rồi tính:

ϑ = α x mod nS ; x −1 mod (n S − 1) ; av mod(n S − 1) . (x phải được lấy mới

trong mỗi lần ký đảm bảo tính an toàn của ElGamal, và nguyên tố cùng
nhau với n S − 1 để tồn tại x −1 ).

2. V gửi U

certV = ( I V ,ν V , GV ) (1)

3. U kiểm tra tính xác thực của nV bằng: h( I V , nV ) = GV3 mod nT . U lấy
khóa ngẫu nhiên K sao cho 1 < K < nV − 1 và gửi cho V

Y = PV ( K ) = K 3 mod nV (2)

4. V giải mã thu được K = SV(Y) = Y d mod nV sau đó lấy ngẫu nhiên m


V
Nguyễn Thị Hiền 44 Luận văn thạc sỹ

∈ Z, nối thêm vào m t ( t ≈ 50 ) số 0, mã hóa bằng khóa K, rồi gửi cho


U

E K (m || {0} ) (3)
t

5. U nhận được gói tin thì giải mã ra rồi kiểm tra xem nó có dạng t bit 0 ở
cuối hay không; nếu đúng, U biết là V có khóa K. U tạo ra M = m||IV,
tính w ≡ ( M − aϑ ) x −1 mod nS-1, rồi gửi cho V

E K ((ϑ , w) || certU ) (4)

(Ở đây (ϑ , w) là chữ ký theo sơ đồ ElGamal của U trên M, và


certU = ( I U ,ν U , GU ) . Danh tính IU trong M được dùng để loại trừ khả năng

bị tấn công giữa dòng.)

6. V giải mã văn bản nhận được từ U, kiểm tra lại tính xác thực của rU:
h( I U ,ν U ) = GU3 mod nT , V xây dựng được M = m || IV với m đã lấy ở

trên cùng với định danh của nó, sau đó kiểm thử chữ ký của U trên m
bằng cách kiểm tra: α M ≡ ν Uϑ ϑ W mod nS . Nếu đúng, V chấp nhận U với
danh tính IU chính là bên sinh ra K.

• Vấn đề an toàn khóa của giao thức

Trong giao thức mỗi bên phải thực hiện ít nhất một phép toán mã hóa với khóa bí
mật chứng tỏ sự hiểu biết của mình về khóa, và một hoặc hai phép toán với khóa
công khai (kiểm thử danh tính) vì thế mà cho phép xác thực lẫn nhau.

2.4.3.2. Giao thức Beller-Yacobi 2 - lần qua

• Giao thức

Thay đổi giao thức Beller-Yacobi 4-lần qua ta sẽ được giao thức 2-lần qua như
trong Hình 2.13 dưới đây:
Nguyễn Thị Hiền 45 Luận văn thạc sỹ

Hình 2.13 Giao thức Beller-Yacobi 2-lần qua

1. V chọn ngẫu nhiên m rồi gửi m, certV = ( I V ,ν V , GV ) cho U

2. U xây dựng chữ ký ElGamal (t, w) trên M = (m, IV), lấy t làm khóa
phiên K = t rồi gửi cho V: PV(t), Er(certU || w).

3. V giải mã gói tin U gửi cho để thu được t (= K), sau đó lấy giá trị này
để giải mã certU và w, rồi kiểm thử certU và chữ ký (t, w) trên M =
m||IV.

• Vấn đề an toàn khóa của giao thức

So với Beller-Yacobi 4-lần qua khả năng xác thực của giao thức 2-lần qua có yếu
hơn, nhưng không đáng kể: V nhận được xác thực về U và khóa K chỉ có U biết,
trong khi U cũng chắc chắn rằng khóa K chỉ có V biết. Nếu muốn U cũng nhận
được xác thực về V thì giao thức cần thêm vào một gói tin nữa.

Ở đây có thể sẽ xảy ra hiệu ứng không mong muốn nếu lấy khóa phiên K = t, khi đó
U không thể tác động lên giá trị khóa, giao thức sẽ trở thành thỏa thuận khóa. Vì thế
thay vào đó U sẽ chọn ngẫu nhiên x, lấy K = x, rồi mã hóa x gửi đi cùng w.
Nguyễn Thị Hiền 46 Luận văn thạc sỹ

Chương 3 - KỸ THUẬT QUẢN TRỊ VÀ KIỂM TRA VIỆC SỬ DỤNG KHÓA

3.1. Quản trị khóa

Quan hệ khóa là trạng thái trong đó các thực thể truyền thông chia sẻ dữ liệu chung
(chất liệu khóa) để làm thuận tiện cho các kỹ thuật mã hóa. Dữ liệu này có thể các
khóa công khai, bí mật, các giá trị khởi tạo, các tham số công khai khác.

Quản trị khóa là các kỹ thuật hay thủ tục hỗ trợ cho việc thiết lập và duy trì một
quan hệ khóa giữa các bên được phép. Cụ thể là các công việc:

1. tạo người dùng hệ thống mới trong vùng;

2. tạo sinh, phân phối, cài đặt chất liệu khóa;

3. điều phối việc sử dụng chất liệu khóa;

4. cập nhật, thu hồi, huỷ bỏ chất liệu khóa;

5. lưu giữ, sao lưu, phục hồi chất liệu khóa.

Lý do phải quản trị khóa

Quản trị khóa đóng vai trò quan trọng trong hệ thống mã hóa, nó là nền tảng để thực
hiện được các kỹ thuật nhận thực thực thể, xác nhận nguồn gốc dữ liệu, toàn vẹn dữ
liệu, và chữ ký điện tử một cách an toàn. Nếu hệ thống có sử dụng các kỹ thuật
quản trị khóa một cách hợp lý, nó có thể kháng lại các mối đe dọa sau:

1. lộ khóa bí mật

2. không còn đảm bảo tính xác thực của khóa bí mật & công khai. Tính xác thực
ở đây được xem là những hiểu biết và khả năng kiểm thử được định danh của bên
nhận đối với bên gửi.

3. thực hiện những thao tác không được phép trên khóa công khai & khóa bí mật.

3.2. Các kỹ thuật quản trị

3.2.1 Các kỹ thuật phân phối khóa bí mật


Nguyễn Thị Hiền 47 Luận văn thạc sỹ

Khóa bí mật mà ta nói đến ở đây là các khóa của hệ mã khóa đối xứng và các khóa
riêng trong hệ mã khóa công khai. Trong phần này chúng ta sẽ nghiên cứu hai kỹ
thuật phân phối khóa bí mật phổ biến nhất một dựa trên việc phân lớp sử dụng khóa,
một dựa trên chứng chỉ và Trung tâm chuyển khóa.

3.2.1.1. Phân lớp khóa

Người ta phân loại khóa dựa trên mức độ quan trọng của chúng như sau:

1. khóa chính (master key): khóa ở mức cao nhất trong cây phân cấp, thông
thường không bảo vệ bằng mã hóa. Chúng thường được phân phối bằng tay, hoặc
thông qua các thủ tục, các phần cứng vật lý.

2. khóa mã hóa khóa (key - encrypting keys): khóa đối xứng hay các khóa công
khai dùng để chuyển vận hay lưu giữ các khóa khác, sự an toàn của các khóa đó phụ
thuộc vào chúng.

3. khóa dữ liệu (data keys): dùng trong các phép toán mã hóa (hay xác thực) trên
dữ liệu. Chúng có thể là các khóa phiên (trong hệ mã đối xứng). Khóa riêng trong
sơ đồ chữ ký cũng có thể là khóa dữ liệu (tuy nhiên loại này thường được dùng
trong thời gian dài).

Khóa ở mức cao được sử dụng để bảo vệ khóa ở mức thấp hơn. Mục đích chính của
việc làm này để tăng thêm độ khó cho các tấn công, và hạn chế bớt thiệt hại khi có
khóa nào đó bị lộ. Chẳng hạn khi khóa mã hóa khóa bị lộ, tệ hơn nữa là khóa chính
thì sẽ ảnh hưởng tới sự an toàn của tất cả các khóa ở mức dưới, nhưng khi khóa mã
hóa dữ liệu nào đó bị lộ thì không ảnh hưởng tới các khóa ở mức trên.

Ngoài ra người ta có thể phân chia khóa dựa trên khoảng thời gian còn hợp lệ của
chúng thành khóa vĩnh cửu (dùng mãi mãi) và khóa phiên (chỉ dùng trong một
phiên giao dịch hoặc trong khoảng thời gian nhất định). Khóa vĩnh cửu thường được
dùng trong những ứng dụng lưu trữ dữ liệu, còn khóa phiên thường được dùng trong
những ứng dụng truyền thông. Khóa dùng lâu dài chủ yếu được dùng để bảo vệ
khóa phiên.
Nguyễn Thị Hiền 48 Luận văn thạc sỹ

3.2.1.2. Chứng chỉ và Trung tâm chuyển khóa

ƒ Trung tâm chuyển khóa KTC

Trung tâm chuyển khóa KTC (Key Translation Center) T là một phục vụ được ủy
quyền cho phép hai bên U và V truyền thông an toàn thông qua việc sử dụng các giá
trị khóa KUT và KVT đã thống nhất trước với T. Nếu U muốn gửi cho V văn bản M
thì anh ta có thể sử dụng giao thức có sự tham gia của KTC như trong Hình 3.1 dưới
đây. Trong trường hợp văn bản M chính là khóa K cần chuyển cho nhau, thì giao
thức có thể được coi là giao thức chuyển khóa; vì thế KTC được gọi là trung tâm
chuyển khóa hay văn bản.

Trong giao thức E là thuật toán mã khóa đối xứng. Giá trị M là văn bản U muốn gửi
cho V. Trước khi thực hiện giao thức U chia sẻ KUT với T, còn V là KVT.

Hình 3.1 Giao thức chuyển văn bản có KTC

1. U mã hóa M (cùng với danh tính của bên nhận V) bằng KUT, rồi gửi
cho T cùng với danh tính của mình (cho phép T kiểm tra KUT)

U→T: U , E K (V || M ) (1)
UT

2. Sau khi giải mã văn bản, T xác định được đây là thông tin U cần gửi
cho V, T sẽ tìm khóa KVT của V, mã hóa văn bản M bằng khóa này rồi
gửi cho V.

T trả lại văn bản đã được mã hóa bằng khóa của V cho U (hoặc có thể
gửi tới một site công cộng) để U gửi cho V. (hoặc có thể trực tiếp gửi cho
V)

T→U: E K ( M || U ) (2)
VT

U→V: E K ( M || V ) (3)
VT

Với giao thức trên thì chỉ một trong hai U hoặc V là truyền thông trực tiếp với T.
Ngoài ra có thể thay đổi giao thức đi bằng cách U gửi văn bản cho T, sau đó T sẽ
Nguyễn Thị Hiền 49 Luận văn thạc sỹ

mã hóa và trực tiếp gửi cho V. Nó được gọi là “chuyển văn bản” vì T chỉ làm nhiệm
vụ chuyển M mà U muốn gửi cho V.

Tính an toàn của giao thức:

- Danh tính mà (1) sử dụng khóa công khai của U để mã hóa, được đưa vào trong
(2) nhằm chỉ rõ nguồn gốc dữ liệu tránh tấn công tráo khóa.

- Thứ tự của hai trường danh tính và văn bản trong (1) và (2) ngược nhau nhằm
không cho kẻ tấn công dùng lại (1) để gửi trở lại U.

- Tấn công dùng lại văn bản hoàn toàn bị loại bỏ khi ta sử dụng thêm tem thời
gian hoặc số tuần tự. Giao thức trên không cung cấp xác thực thực thể.

- Nên sử dụng kỹ thuật kiểm tra tính toàn vẹn dữ liệu trên bản mã để T có thể phát
hiện được sự giả mạo danh tính U trong (1), cũng như trong (2) và (3).

- Có thể sử dụng mã hóa CBC [6] để ngăn ngừa kiểu tấn công chọn bản rõ trên
khóa KVT trong (2), và thêm vào phần đầu một số ngẫu nhiên.

ƒ Chứng chỉ khóa đối xứng

Nếu KTC không muốn luôn luôn phải duy trì CSDL các bí mật của người dùng (có
khi phải có thêm các bản sao trên nhiều phục vụ khác nhau) và thực hiện các giao
dịch truy xuất tới các giá trị đó khi có yêu cầu chuyển khóa thì sử dụng chứng chỉ là
một giải pháp thay thế.

Giờ đây khóa của mỗi cá thể V, KVT được mã hóa bằng khóa KT chỉ có T biết khi
đưa vào trong chứng chỉ E K ( KVT || V ) . Ngoài ra chứng chỉ cũng có thể thêm khoảng
T

thời gian còn hợp lệ của nó. Khi đó (1) trong Giao thức 3.1 sẽ được thay bằng

U→T: SCertU , E K (V || M ), SCertV


UT
(1)

trong đó SCertU = E K ( K UT || U ), SCertV = E K ( K VT || V )


T V

Hệ thống sẽ có một CSDL công khai gồm nhiều mục dữ liệu, mỗi mục có tên người
dùng và chứng chỉ tương ứng của người đó. Để xây dựng được (1), U lấy chứng chỉ
Nguyễn Thị Hiền 50 Luận văn thạc sỹ

của V và đưa vào văn bản gửi cho T cùng với thông tin về mình. T sử dụng khóa KT
của mình thu được KUT và KVT từ chứng chỉ của U, V. Ngoài ra T còn phải thử lại
rằng người dùng V mà U muốn truyền thông mô tả trong E K (V || M ) có đúng là
UT

định danh trong SCertV hay không.

3.2.2 Kỹ thuật phân phối khóa công khai

Các hệ mã khóa công khai chúng ta đã biết yêu cầu mỗi người phải có một giá trị
khóa công khai. Để phân phối các giá trị đó cho người dùng đảm bảo tính xác thực
tránh được tấn công giữa dòng như đã chỉ ra trong chương 1 ta có thể sử dụng một
trong các kỹ thuật dưới đây:

• Phân phối điểm - điểm trên kênh truyền tin cậy. Khóa công khai của các bên thu
được thông qua việc trao đổi trực tiếp với nhau trên một kênh tin cậy. Phương
pháp này phù hợp với hệ thống không thường xuyên sử dụng hoặc hệ đóng và
nhỏ.

Nhược điểm lớn nhất của phương pháp này là rất bất tiện khi cần một giá trị khóa
để cho người dùng mới tham gia vào hệ thống. Lý do chính là tính không tự động
của hệ thống. Hơn nữa để sử dụng phương pháp này phải có thêm chi phí để duy
trì những kênh truyền tin cậy.

• Truy nhập trực tiếp tới các tệp dùng chung (đăng ký khóa công khai). Sử dụng
một CSDL công khai lưu trữ tên và khóa công khai được xác thực của mỗi người
dùng hệ thống. Truy nhập từ xa qua những kênh truyền công cộng có thể tránh
được những tấn công bị động, còn nếu muốn kháng lại những tấn công chủ động
phải dùng những kênh truyền tin cậy. Phương pháp này thường sử dụng cây xác
thực để xác thực các giá trị công khai đó.

• Sử dụng phục vụ uỷ quyền trực tuyến. Một phục vụ tin cậy cho phép các truy
nhập tương tự như khi truy nhập tới tệp dùng chung, khi các bên có yêu cầu khóa
công khai, nó sẽ được phục vụ gửi cho cộng với chữ ký của phục vụ trên khóa đó.
Mỗi người sử dụng đều có thể kiểm thử được chữ ký của phục vụ.
Nguyễn Thị Hiền 51 Luận văn thạc sỹ

Trở ngại chính của phương pháp này là phục vụ luôn luôn phải trực tuyến (on-
line), điều này có thể dẫn đến tình trạng thắt nút cổ chai. Ngoài ra phương pháp
còn yêu cầu đường truyền thông nối giữa phục vụ với các bên, và giữa hai bên với
nhau.

• Sử dụng phục vụ uỷ quyền ngoại tuyến & chứng chỉ. Trong trường hợp này phục
vụ được gọi là CA (uỷ quyền chứng chỉ). Mỗi cá thể U chỉ phải liên lạc với phục
vụ một lần để đăng ký khóa công khai của mình và nhận khóa kiểm thử chữ ký
của CA (để kiểm thử chứng chỉ của người khác). CA sẽ chứng nhận (công chứng)
khóa công khai của U rồi ràng buộc giá trị này với xâu xác định danh tính của U,
đó sẽ là nội dung chứng chỉ của U.

• Sử dụng hệ xác thực ẩn các tham số hệ thống. Đó là các hệ dựa trên danh tính có
sử dụng các khóa công khai xác thực ẩn thông qua việc thiết kế thuật toán, vì vậy
mà mọi sự thay đổi các tham số hệ thống sẽ bị phát hiện.

Dưới đây chúng ta sẽ xem xét chi tiết các khái niệm được nhắc đến trong các kỹ
thuật trên.

ƒ Cây xác thực

Cây xác thực là phương pháp tạo ra các giá trị công khai cùng với tính xác thực có
thể kiểm chứng của chúng thông qua việc sử dụng cấu trúc cây kết hợp với hàm
băm và tính xác thực của nút gốc. Những ứng dụng có thể sử dụng chúng gồm:

• xác thực khóa công khai (hoặc các chứng chỉ công khai)

• dịch vụ tem thời gian tin cậy

• xác thực các tham số hợp lệ của người dùng

Để thuận tiện cho việc khảo sát chi tiết, trước tiên ta nhắc lại các khái niệm cơ bản
của cây nhị phân.

Cây nhị phân


Nguyễn Thị Hiền 52 Luận văn thạc sỹ

Cây nhị phân là một cấu trúc gồm các đỉnh và các cạnh có hướng (cung). Các đỉnh
của cây gồm có ba loại:

1. đỉnh gốc. Đỉnh có hai cung đi về phía nó, gọi là cung trái và cung phải.

2. đỉnh trong. Mỗi đỉnh trong có ba cung liên quan đến nó, hai cung trái và phải
đi về phía nó và một cung đi ra khỏi nó.

3. lá. Mỗi đỉnh lá có một cung đi ra khỏi nó.

Hai đỉnh gắn với cung nào đó có quan hệ “cha - con”, đỉnh mà cung đó đi ra khỏi nó
gọi là con (tương ứng với cung trái và phải là con trái và phải), ngược lại gọi là cha.

Từ cấu trúc cây nhị phân xác định ở trên dễ dàng thấy rằng luôn luôn tồn tại duy
nhất một đường đi từ một đỉnh trong (hoặc lá) bất kỳ tới gốc.

Gốc

Cung phải Cung phải

Hình 3.2: Cây nhị phân (3 đỉnh lá màu đen, 1 đỉnh trong)

Xây dựng và sử dụng cây xác thực

Xét một cây nhị phân T có t lá. Gọi h là hàm băm không va chạm. Ta có thể sử
dụng cây T để xác thực t giá trị công khai Y1, Y2, …, Yt, bằng cách xây dựng cây
xác thực T* như sau.

1. Gán nhãn cho t lá các giá trị Yi khác nhau đó.

2. Trên mỗi cung đi ra từ Yi gán nhãn h(Yi).

3. Nếu cung trái và phải của mỗi đỉnh trong được gán nhãn tương ứng là h1, h2
thì đỉnh trong đó sẽ được gán nhãn là h(h1||h2).

4. Nếu các cung đi đến gốc được gán nhãn là u1, u2, thì gốc sẽ được gán nhãn
là h(u1||u2).
Nguyễn Thị Hiền 53 Luận văn thạc sỹ

Nếu giả thiết rằng giá trị ứng với nhãn của gốc đã được xác thực khi đó t giá trị
công khai Yi được xác thực như sau: với mỗi giá trị Yi, tồn tại đường đi duy nhất
(đường xác thực) từ Yi đến gốc. Mỗi cung trên đường đi sẽ là cung trái hay cung
phải của một đỉnh nào đó hoặc là gốc. Nếu e là cung trực tiếp đi về phía x, ta sẽ ghi
lại nhãn trên cung đi về phía x mà không phải là e . Dãy các nhãn này viết theo
đúng thứ tự đường đi sẽ xác thực giá trị Yi.

R = h(h1 || h2)

h1 = h(h(Y1)||h(Y2)) h2 = h(Y3)
Y3
h(Y1) h(Y2)
Y1 Y2

Hình 3.3: Cây xác thực.

ƒ Chứng chỉ khóa công khai

Chứng chỉ được dùng như một phương tiện để phân phối hay chuyển các khóa công
khai trên kênh truyền thông tin cậy, nó sẽ tạo ra các giá trị công khai của một thực
thể sao cho các bên khác có thể kiểm tra tính xác thực và hợp lệ. Trong thực tế
người ta thường hay sử dụng các chứng chỉ X.509.

Cấu trúc chứng chỉ

Nó gồm có hai phần: phần dữ liệu và phần chữ ký. Phần dữ liệu tối thiểu phải có
khóa công khai và thông tin về danh tính xác định chủ thể dưới dạng bản rõ. Phần
chữ ký là chữ ký của uỷ quyền xác nhận thông tin trong phần dữ liệu.

Tạo chứng chỉ

Trước khi tạo chứng chỉ khóa công khai cho chủ thể U nào đó, uỷ quyền nên xác
định các độ đo thích hợp (mức độ an toàn cần thiết, những hoạt động thương mại),
để kiểm thử danh tính của U và xác thực đúng là giá trị công khai đó là của U.
Chúng ta phân biệt hai trường hợp sau:
Nguyễn Thị Hiền 54 Luận văn thạc sỹ

− Trường hợp thứ nhất (uỷ quyền tạo khóa). Uỷ quyền sẽ tạo ra cặp khóa công
khai, rồi cấp cho cá thể nào đó, cũng như đưa cả giá trị đó vào chứng chỉ của
cá thể. Các thành viên sẽ thu được giá trị bí mật tương ứng qua kênh truyền
an toàn và tin cậy sau khi chứng tỏ được mình. Tất cả các bên sau đó sử dụng
chứng chỉ này chủ yếu uỷ thác sự tin cậy vào một danh tính đã được kiểm
thử trước đó.

− Trường hợp thứ hai (thực thể tạo khóa). Các thành viên sẽ tự lấy khóa công
khai của mình, rồi chuyển giá trị đó cho bên được uỷ quyền. Sau khi kiểm tra
tính tin cậy của nguồn gốc dữ liệu, uỷ quyền sẽ tạo ra chứng chỉ khóa công
khai như ta đã biết ở trên.

Lưu ý rằng trong trường hợp thứ hai, uỷ quyền sẽ yêu cầu các cá thể chứng tỏ sự
hiểu biết về giá trị bí mật tương ứng, để ngăn ngừa những bên không có quyền.

Sử dụng và kiểm thử chứng chỉ

Toàn bộ quá trình mà bên V nào đó sử dụng chứng chỉ để xác nhận khóa công khai
của bên U có thể mô tả qua các bước như sau:

1. V yêu cầu khóa công khai từ uỷ quyền.

2. V nhận được xâu xác định danh tính U.

3. yêu cầu (từ CSDL chứng chỉ công khai tập trung, hoặc trực tiếp từ U),
chứng chỉ khóa công khai tương ứng với chủ thể U và chấp nhận xâu định
danh trước (thực hiện trên kênh công cộng).

4. (a) Kiểm tra thời gian hiện tại có vi phạm khoảng thời gian hợp lệ
trong chứng chỉ.

(b) Kiểm tra xem khóa công khai của CA còn hợp lệ hay không.

(c) Kiểm thử chữ ký trên chứng chỉ của U, sử dụng khóa công khai của
CA.

(d) Kiểm tra xem chứng chỉ đã bị thu hồi hay chưa.
Nguyễn Thị Hiền 55 Luận văn thạc sỹ

5. Nếu tất cả các kiểm tra đều thành công thì V chấp nhận giá trị trong chứng
chỉ đúng là khóa công khai của U.

ƒ Hệ dựa trên danh tính

Hệ này tương tự như hệ mã khóa công khai, nó cũng có những phép toán với khóa
công khai và những biến đổi với khóa bí mật, chỉ khác là trong hệ mã công khai thì
người dùng có giá trị khóa công khai tường minh, còn trong hệ dựa trên danh tính
khóa công khai được thay bằng (hoặc có thể xác định được từ) những thông tin
danh tính công khai đã có. Bất kỳ thông tin không thể chối được xác định duy nhất
người sử dụng đều có thể được dùng làm thông tin định danh.

Hệ mã khóa dựa trên danh tính (hay còn gọi là hệ dựa trên ID) là một hệ phi đối
xứng trong đó thông tin xác định giá trị công khai của thực thể (tên duy nhất) đóng
vai trò như khóa công khai, và được uỷ quyền T sử dụng để tính giá trị bí mật cho
thực thể.

Sau khi tính được, T chuyển khóa bí mật cho thực thể qua một kênh an toàn, tin cậy.
Giá trị bí mật của thực thể được tính toán từ những thông tin xác định danh tính,
hoặc có thể từ những thông tin chỉ có T biết. Nhằm chống lại sự giả mạo và mạo
nhận thực thể, nên chỉ có T mới có thể tạo ra những giá trị bí mật hợp lệ từ những
thông tin xác định danh tính.

Trong một vài trường hợp, có thể đưa thêm vào dữ liệu công khai của hệ thống DU
gắn với người dùng U trong thông tin định danh của anh ta IDU; những hệ thống
như thế không còn là “thuần” dựa trên danh tính nữa, mặc dù không cần phải xác
thực DU hay IDU một cách tường minh.

Chú ý (tính xác thực của hệ dựa trên ID): Hệ dựa trên ID khác với hệ mã khóa
công khai ở một điểm nữa là tính xác thực của những dữ liệu công khai đặc tả người
dùng không cần phải được kiểm thử một cách tường minh. Chính sự dư thừa vốn có
của dữ liệu công khai người dùng trong hệ thống, cùng với việc sử dụng dữ liệu hệ
thống công khai tin cậy, đã ngầm bảo vệ để chống lại sự giả mạo; nếu dữ liệu đó
được sử dụng không đúng, việc mã hóa sẽ thất bại, cụ thể hơn: không kiểm thử
Nguyễn Thị Hiền 56 Luận văn thạc sỹ

được chữ ký trong sơ đồ ký dựa trên ID, không xác thực được thực thể trong quá
trình xác thực, không thể giải mã được bản mã trong sơ đồ mật mã, quá trình thỏa
thuận khóa sẽ khiến các bên tạo ra các khóa khác nhau sau khi thực hiện giao thức.

Nghiên cứu các hệ dựa trên ID cho phép xây dựng một hệ thống mô phỏng hệ thống
thư điện tử lý tưởng. Trong thực tế người ta đã cài đặt những hệ thống dạng này
trong đó có sử dụng các thẻ điện tử (chipcard).

ƒ Khóa công khai xác thực ẩn

Thay vì sử dụng hệ thống khóa công khai ta có thể kết hợp sử dụng cùng với khóa
công khai xác thực ẩn. Trong hệ này, các khóa công khai của người dùng phải được
tái dựng lại chứ không chuyển chúng như trong hệ thống dựa trên chứng chỉ. Người
ta thiết kế các hệ này sao cho:

1. Các giá trị công khai có thể dễ dàng tái dựng được (bởi bên khác) từ những
dữ liệu công khai (chủ yếu thay cho chứng chỉ)

2. Dữ liệu công khai có thể bao gồm:

a. dữ liệu hệ thống gắn với uỷ quyền T;

b. danh tính của thực thể người dùng (tên hay địa chỉ chẳng hạn);

c. dữ liệu bổ trợ thêm của mỗi cá thể.

3. Tính toàn vẹn của khóa công khai không được kiểm thử một cách trực tiếp,
nhưng giá trị công khai “đúng” chỉ có thể thu được từ những dữ liệu đã
được xác thực.

Để đảm bảo tính xác thực của giá trị công khai có thể tái dựng được, khi thiết kế hệ
thống phải cho phép:

1. thay đổi dữ liệu tái dựng khóa công khai hay danh tính người dùng sẽ
không thu được giá trị công khai.
Nguyễn Thị Hiền 57 Luận văn thạc sỹ

2. những kẻ tấn công (không biết giá trị bí mật của T) muốn tính được khóa
bí mật từ những giá trị công khai của bất kỳ bên nào là không thể thực
hiện được trong một thời gian chấp nhận được.

ƒ Đánh giá và so sánh các kỹ thuật trên

Các phương pháp đã khảo sát ở trên cơ bản khác nhau như sau:

1. Hệ thống dựa trên chứng chỉ lưu giữ khóa công khai ở dạng hiện, với hệ dựa
trên danh tính thì giá trị này không ở dạng tường minh; còn trong hệ xác thực ẩn
giá trị này có thể tái dựng. Khóa công khai trong hệ mã khóa công khai được
thay bằng:

a. bộ ba (DA, IDA, PT) trong hệ dựa trên danh tính, trong đó IDA là danh tính
của A, DA là các thông tin công khai bổ trợ (do T xác lập liên quan đến
IDA và khóa bí mật của A), PT là khóa công khai (hay tham số hệ thống)
của uỷ quyền T.

b. bộ ba (RA, IDA, PT) trong hệ xác thực ẩn. Khóa PA được tái dựng từ
những tham số này, RA đóng vai trò tương tự như DA ở trên.

2. Tính xác thực của khóa công khai có thể (hay phải) được kiểm thử rõ ràng
trong hệ dựa trên chứng chỉ, nhưng không cần trong hệ dựa trên ID hay hệ xác
thực ẩn.

3. Cơ quan uỷ quyền (TA) không cần biết khóa bí mật của người dùng trong hệ
dựa trên chứng chỉ hay hệ xác thực ẩn với khóa tự xác thực, nhưng trong hệ dựa
trên ID thì ngược lại TA cần phải biết giá trị đó.

4. Giống như hệ dựa trên ID, khóa công khai xác thực ẩn (của cả hai lớp) phụ
thuộc vào những thông tin xác định danh tính thực thể, theo nghĩa này thì nó
cũng được gọi là “dựa trên danh tính”. Tuy nhiên hệ dựa trên ID không cho phép
phơi bày toàn bộ khóa công khai.

5. Có hai lớp khóa công khai xác thực ẩn khác với quan hệ giữa dữ liệu công
khai và khóa bí mật như sau:
Nguyễn Thị Hiền 58 Luận văn thạc sỹ

a. Lớp 1: khóa bí mật của thành viên là hàm của dữ liệu công khai, và do
bên thứ ba tin cậy tính toán.

b. Lớp 2: dữ liệu công khai là hàm của khóa công khai, và khóa bí mật
tương ứng chỉ do bên sở hữu tính toán.

6. Trong cả ba cách tiếp cận trên, có thể ở một giai đoạn nào đó bên thứ ba (có
mức độ tin cậy nhất định) yêu cầu một đường truyền để chuyển sự tin cậy giữa
những người dùng trước đó chưa từng gặp nhau, cũng như không có gì chung
ngoài các tham số hệ thống (hoặc có thể là những hiểu biết về danh tính của bên
kia).

Chú ý:

- So với hệ dựa trên chứng chỉ, khóa công khai xác thực ẩn có ưu điểm là
không gian yêu cầu ít hơn (chứng chỉ cần lưu chữ ký); tiết kiệm chi phí tính
toán (không phải kiểm thử chữ ký), và chi phí truyền thông (thông tin về
danh tính có thể biết trước). Tuy nhiên nó lại yêu cầu tính toán trong quá
trình tái dựng giá trị công khai; và các dữ liệu khác.

- Việc thu hồi (loại bỏ) các giá trị công khai được giải quyết trong sơ đồ dựa
trên ID và hệ sử dụng khóa công khai xác thực ẩn bằng cách kết hợp các giá
trị đó với khoảng thời gian khóa còn hợp lệ hoặc số seri.

3.3. Kỹ thuật kiểm tra việc sử dụng khóa

3.3.1 Tách biệt khóa và ràng buộc việc dùng khóa

Những thông tin có thể đưa thêm vào kết hợp với khóa sẽ dùng để mã hóa có thể là
những tham số hạn chế những sử dụng trên khóa đó bao gồm:

1) Người sở hữu giá trị khóa đó.

2) Thời gian khóa còn hợp lệ.

3) Định danh khóa.

4) Mục đích sử dụng.


Nguyễn Thị Hiền 59 Luận văn thạc sỹ

5) Thuật toán riêng nào đó.

6) Hệ thống hay môi trường dự định sẽ dùng, những sử dụng được phép.

7) Tên cá thể gắn với quá trình tạo, đăng ký, xác nhận khóa.

8) Kiểm tra tính toàn vẹn trên khóa.

Nguyên lý của việc tách biệt khóa là các khóa có chức năng khác nhau phải được
tách bạch về mặt mã hóa, tránh dùng cùng khóa cho nhiều mục đích khác nhau ví
như không nên dùng khóa mã hóa khóa giống như khóa mã hóa dữ liệu, hoặc như
khóa đối xứng và khóa dùng để ký cũng phải phân biệt rõ ràng vì vòng đời của
chúng là không giống nhau. Những sai lầm chúng ta thường mắc phải là: dùng khóa
công khai trong cả sơ đồ ký và phần hỏi – đáp nhằm xác thực thực thể; khóa dùng
cả trong mã hóa và xác thực thực thể (rất dễ bị tấn công chọn bản rõ); sử dụng khóa
đối xứng cả trong mã hóa và xác thực văn bản.

3.3.2 Các kỹ thuật điều khiển việc sử dụng khóa

3.3.2.1. Tạo đuôi khóa và các biến thể khóa

Tạo đuôi khóa là phương pháp tương đối đơn giản để mô tả những sử dụng được
phép trên khóa (khóa dùng để mã hóa dữ liệu hay mã hóa khóa). Nó là một vecto bit
hay một trường có cấu trúc đi cùng khóa trong toàn bộ thời gian sống của khóa.
Vecto này được mã hóa cùng với khóa, và chỉ có thể nhận được nó ở dạng tường
minh sau khi giải mã khóa.

Phương pháp đơn giản nhất để phân tách khóa là các khóa khác nhau đó được xác
định từ một giá trị nào đó nhờ các hàm, các giá trị đó gọi là các biến thể khóa.

- Kỹ thuật đơn giản nhất là kỹ thuật lấy phần bù khóa. Thay vì dùng khóa K
(khóa mã hóa các khóa khác) ta sẽ sử dụng giá trị K⊕N trong đó N tăng lên
sau mỗi lần sử dụng.

- Kỹ thuật thứ hai sử dụng phần bù theo mặt nạ định sẵn. Giả sử trong hệ
thống có ba lớp khóa, khi đó các khóa sẽ được xác định từ hai biến thể
Nguyễn Thị Hiền 60 Luận văn thạc sỹ

K 1 = K ⊕ v1 và K 2 = K ⊕ v 2 của khóa chính K, với v1, v2 là các giá trị mặt nạ

công khai có sẵn.

Lưu ý rằng các phép toán trên phải không khả nghịch (một chiều), nếu không giá trị
ban đầu có thể tính được từ các biến thể của nó.

3.3.2.2. Chứng nhận khóa

Yêu cầu chống lại sự tráo đổi khóa xuất hiện trong hầu hết các giao thức tạo lập
khóa. Một trong những kỹ thuật dùng để ngăn ngừa việc tráo đổi khóa là đặc tả rõ
ràng danh tính các bên có liên quan tới giá trị khóa đó, và chỉ khi có các thông tin
định danh đúng đắn mới có thể xác định được khóa. Khi đó, khóa được gọi là dành
riêng cho các danh tính đó, hay được chứng nhận cho các bên đó.

Hệ thống có thể thực hiện chứng nhận khóa bằng cách đơn giản như sau: Phục vụ
được uỷ quyền (hoặc có thể là bên nào đó) dùng khóa mã hóa khóa K để mã hóa
khóa phiên S cho bên gửi i và bên nhận j dưới dạng: E K ⊕( i|| j ) ( S ) , trong đó giá trị i và

j là duy nhất xác định thực thể trong hệ thống. Khi đó hai bên để tính được S phải
có chung giá trị K, và các giá trị i, j đúng đắn.

3.3.2.3. Vecto điều khiển

Là giải pháp kết hợp ý tưởng tạo đuôi khóa và chứng nhận trên khóa. Mỗi khóa S sẽ
đi kèm với một vecto C, chỉ rõ mục đích sử dụng khóa. Vecto này sẽ ràng buộc S
thông qua sự thay đổi khóa mã khóa K trước khi mã hóa: E K ⊕C ( S ) .

Việc giải mã để nhận được khóa yêu cầu phải cung cấp vecto C đúng đắn cũng như
K, còn nếu giá trị K ⊕ C không đúng thì kẻ tấn công sẽ không thu được thông tin gì.

3.4. Quản lý khóa trong hệ thống đa vùng

Các kỹ thuật ta đã xét trong các phần trên chủ yếu hoạt động trong vùng chỉ có một
cơ quan được uỷ thác (CA). Tuy nhiên trong thực tế có những hệ thống gồm nhiều
vùng, mỗi vùng có một CA riêng. Vậy thì làm thế nào để các bên uỷ thác vào CAX
nào đó có thể tin cậy vào các giá trị khóa của các thành viên uỷ thác vào CAy.
Nguyễn Thị Hiền 61 Luận văn thạc sỹ

3.4.1 Quan hệ tin cậy giữa hai vùng

Nếu hai bên U và V, trong đó U thuộc vùng DU có cơ quan được uỷ thác TU, còn V
là thành viên của vùng DV, uỷ quyền TV, muốn truyền tin cho nhau, thì có thể thực
hiện một trong hai cách sau:

1. (dùng chung khóa đối xứng) thiết lập khóa chung KUV chỉ có hai bên (có thể
có uỷ quyền) biết. Quá trình để U và V có chung một giá trị khóa có thể phác
thảo các bước như sau:

- U thông báo cho TU muốn có khóa với V

- TU, TV thiết lập khóa bí mật ngắn hạn KUV

- TU chuyển KUV cho U, TV chuyển cho V an toàn và tin cậy

- U dùng KUV để truyền thông trực tiếp với V.

2. (chia sẻ khóa công khai tin cậy) giá trị khóa công khai tin cậy sẽ được sử
dụng như là cầu nối tin cậy giữa các vùng. U có thể nhận được khóa công
khai tin cậy từ V như sau:

- U yêu cầu TU cung cấp khóa công khai của V

- TU nhận được giá trị đó từ TV xác thực

- TU chuyển khóa này cho U

- U sử dụng khóa này để truyền thông trực tiếp với V

Để thực hiện được một trong hai trường hợp trên thì giữa TU và TV phải có quan hệ
tin cậy, nó có thể là trực tiếp “tin” vào nhau, hoặc cả hai cùng “tin” vào một bên
trung gian thứ ba.

Bây giờ chúng ta sẽ nói đến một khái niệm thường xuyên được nhắc đến trong phần
tiếp theo.

Chứng chỉ giao chéo (cross - certificate) là chứng chỉ do một CA tạo ra, chứng
nhận khóa công khai của CA khác.
Nguyễn Thị Hiền 62 Luận văn thạc sỹ

3.4.2 Các mô hình tin cậy với nhiều CA

Có rất nhiều mô hình khác nhau để tổ chức quan hệ tin cậy giữa các CA trong hệ
thống gồm nhiều CA, để phân biệt với mô hình truyền thông người ta gọi đó là mô
hình dùng để chứng nhận. Các quan hệ tin cậy được thiết lập như thế nào để các
thành viên của một CA nào đó có thể kiểm thử được chứng chỉ do CA khác cấp.

3.4.2.1. Sự tin cậy trên các vùng riêng biệt

Mô hình này có các CA khác nhau xác định trên các vùng khác nhau, giữa chúng
không có quan hệ tin cậy. Người dùng ở vùng này không thể kiểm thử tính xác thực

của chứng chỉ trong vùng khác.

CA1 CA2

E1(1) ... E r(1) E1( 2) ... E s( 2 )

Hình 3.4 Các vùng riêng biệt

3.4.2.2. Mô hình tin cậy có thứ bậc chặt chẽ

Mô hình này gồm có một nút gốc, và mọi sự chứng nhận đều xuất phát từ gốc, vì
thế nó còn được gọi là mô hình tin cậy tập trung.

Nhược điểm của mô hình này là:

- mọi sự tin cậy của hệ thống phụ thuộc vào gốc

- luôn luôn yêu cầu một dãy các bước chứng nhận kể cả với hai thực thể trên
cùng một vùng.

- khi cây có độ cao lớn thì dãy các bước chứng nhận càng lớn.
Nguyễn Thị Hiền 63 Luận văn thạc sỹ

- không thật tự nhiên, vì thông thường sự tin cậy bao giờ cũng bắt nguồn từ
những nút cục bộ chứ không phải gốc ở xa.

CA5

CA3

CA1 CA2 CA4 …

E1(1) …
( 2)
E r(1) E1 … E s( 2 ) E1( 4) … E r( 2)

Hình 3.5 Mô hình tin cậy có thứ bậc chặt chẽ

3.4.2.3. Chứng chỉ ngược thứ bậc và mô hình tổng quát

Để khắc phục nhược điểm sự tin cậy tập trung quá nhiều vào gốc của mô hình
trước, người ta đưa ra một mô hình tổng quát hơn cho phép các CA con ở mức dưới
có thể chứng nhận chứng chỉ của các CA cha. Vì thế trong mô hình này có hai loại
chứng chỉ: loại đúng thứ bậc do CA cha chứng nhận cho các CA con, loại ngược
thứ bậc do các CA con chứng nhận CA cha. Mô hình này tự nhiên hơn mô hình
trước vì CA của mỗi vùng sẽ chứng nhận khóa công khai của thực thể trong vùng
đó. Tuy nhiên mô hình này vẫn còn không thuận tiện khi phải thiết lập quan hệ tin
cậy giữa hai thực thể thuộc hai vùng khác nhau.
Nguyễn Thị Hiền 64 Luận văn thạc sỹ

CA5

CA3

CA1 CA2 CA4

Hình 3.6 Mô hình tin cậy ngược thứ bậc.

Khi đó mô hình tin cậy không tập trung, không có nút gốc, có dạng đồ thị có hướng,
trong đó quan hệ tin cậy được thể hiện bởi các cung của đồ thị là mô hình tổng quát
và phù hợp với yêu cầu thực tế nhất trong số các mô hình đã xét.

CA5

CA3

CA1 CA2 CA4

Hình 3.7 Mô hình tin cậy tổng quát

Ngoài ra, đôi khi người ta phải giới hạn phạm vi của dãy chứng nhận có thể chỉ nhỏ
hơn một giá trị nào đó, hoặc các vùng hợp lệ trong khi chứng nhận.

3.5. Vòng đời khóa

Cách quản lý khóa đơn giản nhất là dùng khóa vĩnh cửu nghĩa là giá trị của nó
không thay đổi mỗi khi sử dụng. Tuy nhiên điều này rất nguy hiểm, vì vậy khóa
phải được cập nhật một cách định kỳ để tránh sự phụ thuộc giữa khóa mới và khóa
cũ trong quá khứ. Dãy các trạng thái thể hiện sự thao tác trên chất liệu khóa trong
Nguyễn Thị Hiền 65 Luận văn thạc sỹ

toàn bộ thời gian sống của nó được gọi là vòng đời quản lý khóa. Các giai đoạn này
thường bao gồm:

1 đăng ký thành viên - thực thể trở thành thành viên của vùng. Giai đoạn này
yêu cầu một thực thể nào đó khi gia nhập vùng phải cung cấp một số PIN,
hay mật khẩu.

2 khởi tạo người dùng - thực thể bắt đầu thực hiện ứng dụng mã hóa, thường là
hoạt động sử dụng hay cài đặt chất liệu khóa ban đầu thu được sau khi đăng
ký.

3 sinh khóa – sinh ra khóa để mã hóa. Thành viên có thể tự lấy khóa của mình
hoặc yêu cầu từ một uỷ quyền nào đó.

4 cài đặt khóa - chất liệu khóa được cài đặt thực sự để sử dụng

5 đăng ký khóa – cùng với cài đặt khóa, chất liệu khóa phải chính thức được
ghi lại cùng với tên để phân biệt các thành viên.

6 sử dụng thông thường - sử dụng khóa để mã hóa theo sơ đồ mã hóa nào đó.

7 sao lưu khóa – sao lưu chất liệu khóa một cách độc lập bằng phương tiện lưu
giữ tin cậy.

8 cập nhật khóa - trước khi khoảng thời gian mã hóa hết liệu lực, chất liệu
khóa phải được thay bằng giá trị mới.

9 lưu trữ lại - chất liệu không còn được dùng nữa có thể được lưu giữ lại phục
vụ cho một vài trường hợp nhất định nào đó.

10 đăng ký lại và huỷ bỏ - mỗi khi không còn yêu cầu khóa hay duy trì nó nữa,
thì cần phải đăng ký lại (loại bỏ tất cả bản ghi chính thức các khóa đang có)
và loại bỏ tất cả cá bản sao của khóa. Nếu là khóa bí mật thì mọi sự theo dấu
cũng phải được xóa bỏ hẳn.
Nguyễn Thị Hiền 66 Luận văn thạc sỹ

11 khôi phục khóa - nếu chất liệu khóa bị mất không phải vì để lộ (ví dụ như
thiết bị hư hỏng hay quên mật khẩu), cần phải khôi phục lại từ bản sao lưu
của nó.

12 thu hồi khóa - việc làm cần thiết khi loại bỏ khóa đã dùng hết hạn. Nếu sử
dụng chứng chỉ khóa công khai điều này có nghĩa là thu hồi chứng chỉ.

Các giai đoạn này thường được sử dụng trong hệ mã công khai, còn với hệ đối xứng
thì không cần giai đoạn: đăng ký, sao lưu, huỷ bỏ hay lưu trữ lại.
Nguyễn Thị Hiền 67 Luận văn thạc sỹ

Chương 4 - MỘT SỐ CÁCH TỔ CHỨC CÁC DỊCH VỤ QUẢN TRỊ


KHÓA

4.1. Giới thiệu

Ngày nay hầu như tất cả các doanh nghiệp đều có Web site riêng của mình và trong
các công ty thì việc sử dụng Internet ngày càng trở nên hết sức bình thường. Hệ quả
của nó là mọi người ngày càng quan tâm thực sự đến thương mại điện tử (TMĐT)
trên nền tảng Web. TMĐT với sự tham gia của rất nhiều tổ chức, doanh nghiệp
khác nhau với nhiều giao dịch điện tử, không có giấy tờ, chỉ có truyền thông mạng
và máy tính, truyền thông có thể là công khai hoặc bí mật, hoặc cũng có thể là sự
hợp thành của cả hai. Trước đây TMĐT chủ yếu tập trung vào trao đổi dữ liệu điện
tử, và đó là phương thức chính để thực hiện các hoạt động kinh doanh giữa các bên
đã thiết lập quan hệ làm ăn trước đó. Nhưng giờ đây dưới sự phát triển của trình
duyệt và HTML, TMĐT đã được mở rộng như là các hoạt động kinh doanh thông
qua Internet thậm chí có thể giữa các bên mà có thể trước đây chưa hề biết nhau,
còn Web được coi là hình thức thông dụng cho việc chuyển vận thông tin. Việc giao
dịch sử dụng cơ sở hạ tầng của mạng công khai Internet có thể giảm chi phí cho các
doanh nghiệp. Nó sẽ cho phép tất cả các công ty lớn, vừa, nhỏ vươn tới các khách
hàng thực sự ở khắp mọi nơi.

Tuy nhiên chúng ta phải đối mặt với một thực tế là Internet và Web cực kỳ nhạy
cảm với các kiểu tấn công, và vì thế nhu cầu tất yếu ở đây đòi hỏi cần phải phát
triển các dịch vụ đảm bảo an toàn.

Trong chương này luận văn sẽ tập trung vào hai vấn đề ngày càng trở nên quan
trọng hơn và gần như đã trở thành một phần của thương mại Web: giao thức Socket
an toàn SSL và cơ sở hạ tầng khóa công khai PKI.

4.2. Giao thức SSL

SSL (Secure Socket Layer) do Netscape đưa ra dùng để cung cấp tính bí mật và tin
cậy giữa hai ứng dụng đang giao tiếp.
Nguyễn Thị Hiền 68 Luận văn thạc sỹ

SSL Handshake Protocol cho phép server và client thực hiện việc xác thực lẫn nhau,
thỏa thuận một thuật toán mã hóa và các khóa bí mật trước khi giao thức ứng dụng
gửi hoặc nhận dữ liệu.

4.2.1 Kiến trúc của SSL

Giao thức Giao thức Giao thức HTTP


SSL Change SSL Alert
Handshake Cipher Spec

Giao thức SSL Record

TCP

IP

Hình 4.1 Chồng giao thức SSL

Giao thức SSL Record cung cấp các dịch vụ an ninh chủ yếu cho các giao thức khác
ở tầng trên. Đặc biệt là giao thức HTTP (Hypertext Transport Protocol) cung cấp
dịch vụ tương tác Web giữa client/server có thể hoạt động trên nền của SSL. Ba
giao thức mức cao hơn có thể coi là một phần của SSL: giao thức SSL Handshake,
giao thức Change Cipher Spec, và giao thức Alert. Ngoài ra có hai khái niệm quan
trọng của SSL là phiên làm việc SSL và kết nối SSL:

− kết nối SSL: Một kết nối là một chuyển vận (được xác định trong mô hình
OSI) cung cấp loại dịch vụ phù hợp. Với SSL, kết nối là quan hệ ngang
hàng (peer-to-peer). Kết nối xảy ra rất nhanh chóng, và luôn luôn gắn liền
với một phiên làm việc nào đó.

− phiên làm việc SSL: luôn luôn gắn giữa client và server. Chúng được tạo
ra bởi giao thức Handshake, xác định các tham số an toàn mã hóa có thể
dùng chung cho nhiều kết nối. Sử dụng phiên làm việc để giảm chi phí
Nguyễn Thị Hiền 69 Luận văn thạc sỹ

thương lượng tham số mới mỗi khi kết nối. Một phiên làm việc gồm nhiều
kết nối.

4.2.2 Giao thức SSL Record

Giao thức này cung cấp hai dịch vụ cho kết nối SSL:

− bí mật: Giao thức Handshake xác định khóa bí mật dùng chung để sử dụng
mã hóa đối xứng cho payload SSL.

− toàn vẹn dữ liệu: Giao thức Handshake cũng xác định khóa bí mật dùng
chung sử dụng để hình thành mã xác thực văn bản (MAC).

Hình vẽ dưới đây sẽ chỉ rõ hơn toàn bộ hoạt động của giao thức SSL Record:

Dữ liệu ứng dụng

Phân mảnh

Nén

Thêm MAC

Mã hóa

Thêm header của


SSL record

Hình 4.2 Hoạt động giao thức SSL Record

Đầu tiên là phân mảnh dữ liệu thành các khối có kích thước nhỏ hơn hoặc bằng 214
byte. Sau đó, có thể thực hiện nén dữ liệu, tuy nhiên trong phiên bản SSLv3, không
áp dụng thuật toán nén nào nên trường này có giá trị null. Bước tiếp theo trong quá
trình xử lý là tính mã xác thực văn bản trên dữ liệu đã nén. Để làm được điều này,
phải có một khóa bí mật dùng chung. Tính toán này được xác định như sau:
Nguyễn Thị Hiền 70 Luận văn thạc sỹ

hash(MAC_write_secret || pad_2 || hash(MAC_write_secret || pad_1 || seq_num ||


SSLCompress.type || SSLCompress.length || SSLCompressed.fragment))

trong đó

MAC_write_secret : khóa bí mật dùng chung

hash : thuật toán băm (MD5 hạơc SHA-1)

pad_1 : byte 0x36 lặp lại 48 lần với MD5, 40 lần với SHA-1

pad_2 : byte 0x5C lặp lại 48 lần với MD5, 40 lần với SHA-1

seq_num : số tuần tự của văn bản

SSLCompress.type : giao thức tầng trên được dùng xử lý phân mảnh này

SSLCompress.length : độ lớn của phân mảnh đã nén

SSLCompressed.fragment : phân mảnh nén

Sau đó, văn bản nén cùng với MAC được mã hóa bằng thuật toán mã hóa đối xứng,
có thể là IDEA, RC2-40, DES-40, DES, 3DES, …Bước cuối cùng của giao thức là
thêm header gồm các trường sau:

− Content Type (8 bit): giao thức tầng cao hơn được dùng để xử lý các phân
đoạn đã đóng gói.

− Major Version (8 bit): phiên bản chính của SSL đang dùng. Với SSLv3 thì
giá trị này bằng 3.

− Minor Version (8 bit): phiên bản phụ đang dùng. Với SSLv3 thì giá trị này
bằng 0.

− Compressed length (16 bit): độ lớn tính theo byte của phân đoạn bản rõ.

4.2.3 Giao thức Change Cipher Spec

Một trong những giao thức đặc tả SSL dùng trong SSL Record và là giao thức đơn
giản nhất, gói tin của nó chỉ có một byte với giá trị bằng 1, chỉ ra trạng thái treo để
chờ sao chép vào trạng thái hiện thời, đang cập nhật bộ mã hóa sử dụng để kết nối.
Nguyễn Thị Hiền 71 Luận văn thạc sỹ

4.2.4 Giao thức Alert

Giao thức dùng để chuyển cảnh báo có liên quan đến SSL cho thực thể ngang hàng.
Gói tin của giao thức gồm hai byte, byte thứ nhất có giá trị cảnh báo hoặc rất có hại
để chuyển tính nghiêm trọng của vấn đề: nếu là rất có hại, SSL ngay lập tức kết thúc
kết nối, kết nối khác của phiên làm việc sẽ được tiếp tục, không thiết lập kết nối
mới. Byte thứ hai là mã đặc tả cảnh báo: gói tin nhận được không thích hợp, MAC
nhận được không đúng, không giải nén được, handshake thất bại (tương ứng với giá
trị thứ nhất là rất có hại).

4.2.5 Giao thức Handshake

Phần phức tạp nhất của SSL. Giao thức cho phép server và client xác thực với nhau
và thỏa thuận thuật toán mã hóa, MAC và khóa để bảo vệ dữ liệu SSL. Giao thức
được gọi trước khi chuyển dữ liệu của ứng dụng. Giao thức bao gồm một dãy các
các gói tin trao đổi giữa client và server như trong hình vẽ dưới đây:

Pha 1 Thiết lập năng lực an ninh gồm


phiên bản giao thức, định danh phiên
làm việc, bộ mã hóa, phương pháp nén,
số ngẫu nhiên khởi tạo.

Pha 2 Server gửi chứng chỉ, trao


đổi khóa, và yêu cầu chứng chỉ.
Tín hiệu server kết thúc pha chào
hỏi.

Pha 3 Client gửi chứng chỉ nếu


được yêu cầu, trao đổi khóa, và gửi
kiểm thử chứng chỉ (có thể).

Pha 4 Thay đổi bộ mã hóa và kết


thúc giao thức bắt tay.

Hình 4.3 Hoạt động giao thức Handshake


Nguyễn Thị Hiền 72 Luận văn thạc sỹ

Mỗi gói tin đều gồm có ba trường:

− Type (1 byte): chỉ rõ gói tin này là loại nào trong số 10 gói tin.

− Length(3 byte): độ lớn của gói tin tính theo byte.

− Content (≥ 1 byte): tham số kết hợp với gói tin.

Quá trình thiết lập kết nối logic giữa client và server có thể chia làm bốn pha như
dưới đây:

Pha 1: Thiết lập năng lực an ninh

Thiết lập kết nối logic và thiết lập khả năng an ninh sẽ có. Quá trình trao đổi sẽ
xuất phát từ client thông qua việc gửi client_hello_massage với các tham số dưới
đây:

− Version: Phiên bản SSL mà client có thể hiểu được.

− Random: Cấu trúc ngẫu nhiên do client sinh ra chứa 32 bit

− Session ID: Định danh phiên làm việc có độ dài thay đổi

− CipherSuite: Danh sách tổ hợp các thuật toán mã hóa client được hỗ trợ.

− Compression Method: Danh sách các phương pháp nén client hỗ trợ.

Sau khi nhận được gói tin client_hello, client chờ để nhận gói tin server_hello cũng
có các tham số tương tự như gói tin client_hello.

Thành phần đầu tiên của Cipher Suite là phương thức trao đổi khóa: RSA, Diffie-
Hellman có dùng chứng chỉ, Diffie-Hellman có xác thực khóa, Diffie-Hellman
không có xác thực, Fortezza.

Pha 2: Xác thực server và trao đổi khóa

Server bắt đầu pha này bằng cách gửi chứng chỉ của nó, nếu thực sự cần thiết, gói
tin sẽ chứa một hoặc dãy các chứng chỉ X.509. Gói tin certificate là bắt buộc với bất
kỳ phương pháp thỏa thuận trao đổi khóa nào ngoại trừ Diffie-Hellman không có
xác thực. Sau đó server sẽ gửi gói tin server_key_exchange đi nếu có yêu cầu. Với
Nguyễn Thị Hiền 73 Luận văn thạc sỹ

hai tình huống: Server đã gửi chứng chỉ với các tham số Fixed Diffie-Hellman hay
sử dụng trao đổi khóa RSA thì không cần gói tin này. Nếu server không sử dụng
Diffie-Hellman nặc danh thì nó sẽ yêu cầu chứng chỉ từ client bằng cách gửi
certificate_request gồm hai tham số: certificate_type, certificate_authorities. Gói tin
cuối cùng cần phải có trong mọi trường hợp là server_done kết thúc quá trình chào
hỏi từ server. Sau đó server sẽ đợi client trả lời.

Pha 3: Client xác thực và trao đổi khóa

Sau khi nhận được gói tin server_done từ server, client nên kiểm thử rằng server đã
cung cấp chứng chỉ hợp lệ nếu cần và kiểm tra xem các tham số server_hello có
chấp nhận được hay không. Nếu thỏa mãn, client sẽ gửi một vài gói tin cho server.
Nếu server yêu cầu chứng chỉ, client bắt đầu pha này bằng cách gửi certificate. Nếu
không có chứng chỉ client sẽ gửi no_certificate. Sau đó gửi gói tin
client_key_exchange, gói này là bắt buộc. Nội dung thì tùy thuộc phương pháp trao
đổi khóa:

− RSA: client sinh giá trị 48 byte rồi mã hóa bằng khóa công khai của lấy được
từ chứng chỉ của server hoặc từ gói tin server_key_change.

− Diffie-Hellman nặc danh hay thay đổi: gửi tham số Diffie-Hellman công khai
của client.

− Diffie-Hellman cố định: phần này sẽ là null nếu tham số Diffie-Hellman


công khai của client đã gửi trong gói tin certificate.

− Fortezza: tham số Fortezza của client.

Kết thúc pha này client gửi gói tin certificate_verify để cung cấp sự kiểm thử tường
minh chứng chỉ client. Gói tin này chỉ gửi đi nếu chứng chỉ client có khả năng ký.

Pha 4. Kết thúc

Pha này sẽ hoàn thành quá trình khởi động một kết nối an toàn. Client gửi gói tin
change_cipher_spec và sao chép CipherSpec đang chờ vào CipherSpec hiện tại. Sau
đó client ngay lập tức gửi gói tin finished bằng các thuật toán, khóa, bí mật mới.
Nguyễn Thị Hiền 74 Luận văn thạc sỹ

Gói tin này sẽ kiểm thử tiến trình trao đổi khóa và xác thực có thành công hay
không. Để đáp lại server gửi gói tin chage_cipher_spec, chuyển CipherSpec chờ vào
CipherSpec hiện thời, rồi gửi finished. Đến thời điểm này quá trình bắt tay đã hoàn
thành từ đây client và server có thể bắt đầu trao đổi dữ liệu tầng ứng dụng.

4.3. PKI

PKI (Public Key Infrastructure) cho phép các bên khi tham gia vào một giao dịch có
thể nhận ra bên kia bằng cách cung cấp thông tin xác thực thông qua chứng chỉ, và
tin tưởng vào truyền thông bằng cách cung cấp bí mật thông qua việc sử dụng mã
hóa, xác thực, toàn vẹn dữ liệu, và không thể thoái thác thông qua chữ ký điện tử.
PKI là sự hợp thành của chứng chỉ điện tử, mã hóa khóa công khai, các CA. Trong
môi trường Internet mở như hiện nay thì sử dụng PKI cấp quyền cho các bên là giải
pháp hợp lý nhất.
Nguyễn Thị Hiền 75 Luận văn thạc sỹ

Bản rõ

mã hóa bằng băm


khóa đối xứng
Bản mã Văn bản tóm lược

khóa đối xứng được mã


hóa bằng khóa công khai ký
của người nhận

Bản mã + khóa đối xứng được mã hóa Chữ ký điện tử

hỗ trợ hỗ trợ

Chứng chỉ điện tử

hỗ trợ
Cơ sở hạ tầng khóa công khai PKI

Thành Chức Cấu trúc uỷ quyền: ƒ Sản phẩm thương mại


phần phần năng PKI ƒ Mô hình uỷ quyền ƒ Khả năng thông dịch
mềm PKI ƒ Chứng chỉ giao chéo ƒ Chuẩn

Hình 4.4 Kỹ thuật kết khối an toàn gói tin Internet

4.3.1 Các dịch vụ PKI

PKI chủ yếu cung cấp dịch vụ xuất bản chứng chỉ và làm sao để có thể truy nhập và
sử dụng chúng. Giống như danh bạ điện thoại vậy, thư mục PKI liệt kê khóa công
khai của tổ chức hay cá nhân. Các PKI giải quyết các bài toán quản lý khóa: tạo
sinh, phân phối, xác thực, và lưu giữ. Một cơ sở hạ tầng khóa công khai PKI gồm:

− Một uỷ quyền chứng chỉ (CA) sinh và kiểm thử các chứng chỉ

− Một uỷ quyền đăng ký (RA) thực hiện kiểm thử ủy quyền chứng chỉ trước
khi xuất bản chứng chỉ cho bên yêu cầu.
Nguyễn Thị Hiền 76 Luận văn thạc sỹ

− Dịch vụ thư mục (DS) trong đó các chứng chỉ (cùng với khóa công khai của
chúng) được lưu giữ và có sẵn dùng (thường là trong thư mục chuẩn ITU
X.500)

− Thực thể cuối (EE) giữ chứng chỉ: người dùng, tổ chức, ứng dụng, .v.v.

− Các client dùng PKI để nhận chứng chỉ, hợp lệ chứng chỉ và chữ ký;

− Một hệ thống quản lý chứng chỉ.

Hệ thống quản lý chứng chỉ thường có các dịch vụ sau:

− Hủy bỏ chứng chỉ: hủy chứng chỉ đã xuất bản, tạo và công khai danh sách
chứng chỉ thu hồi, lưu lại và ..

− Hết hạn chứng chỉ và cập nhật

− Dịch vụ bảo đảm có thể giải mã được các văn bản đã mã hóa trước đó

− Sao lưu và phục hồi chứng chỉ: Bảo đảm không bị mất thông tin

− Dịch vụ hỗ trợ không thể thoái thác: việc sao lưu và phục hồi khóa gây ra
một kẽ hở cho hệ thống. Ai đó có thể lợi dụng điều này cho rằng đã có người
khác truy nhập tới khóa đang ký của họ, vì thế họ không hoàn toàn chịu trách
nhiệm cho những giao dịch kiểu như thế, mặc dù những giao dịch này rõ
ràng là do họ ký. Do đó cần thiết phải duy trì hai cặp khóa cho mỗi người
dùng. Cặp khóa mã hóa có thể sao lưu và phục hồi, ngược lại thì cặp khóa ký
không nên để cho người dùng sở hữu hoàn toàn.

− Dịch vụ tem thời gian

− Hợp lệ chứng chỉ thông qua chính sách.


Nguyễn Thị Hiền 77 Luận văn thạc sỹ

NHẬN XÉT VÀ KẾT LUẬN

Ý nghĩa của việc nghiên cứu vấn đề

Vấn đề đặt ra trong luận văn rất cần thiết trong nghiên cứu về mật mã, và sử dụng
chúng trong các ứng dụng, đặc biệt là ngày nay khi mà hầu hết các hoạt động trao
đổi thông tin của con người đều được thực hiện thông qua mạng truyền thông công
cộng như Internet. Trong bối cảnh đó kể cả khi hệ thống sử dụng phương pháp mã
hóa công khai thì việc quản lý và điều phối việc sử dụng khóa vẫn cực kỳ cần thiết.
Còn nếu hệ thống sử dụng thuật toán mã hóa đối xứng thì việc trao đổi, phân phối,
chuyển vận giá trị bí mật một cách an toàn cho hai bên là yêu cầu tất yếu. Trên cơ
sở đó luận văn đã cố gắng tìm hiểu các giao thức tạo lập khóa bí mật và các kỹ thuật
quản trị khóa và đạt được một vài kết quả nhất định.

1. Các kết quả đạt được

- Nghiên cứu tìm hiểu và phân tích các giao thức tạo lập khóa: trao đổi, phân
phối, chuyển vận khóa .

- Tìm hiểu các kỹ thuật quản trị và kiểm tra việc sử dụng khóa.

- Tìm hiểu giao thức socket an toàn – công nghệ ứng dụng sử dụng các giao
thức tạo lập khóa đã nghiên cứu, cơ sở hạ tầng khóa công khai PKI trong môi
trường mạng toàn cầu.

2. Hướng phát triển của luận văn

- Nghiên cứu thay đổi các giao thức trao đổi khi đưa vào thực tế nhằm làm
tăng thêm độ an toàn và tin cậy cho các bên tham gia truyền thông.

- Nghiên cứu các khả năng tránh được các tấn công dùng lại, an toàn tiếp theo,
tránh tấn công từ chối dịch vụ và bảo vệ danh tính của khóa phiên trong các
giao thức trao đổi khóa.

- Nghiên cứu và đề xuất một vài giải pháp cho các hệ thống ứng dụng mã hóa
đòi hỏi sự tin cậy nhiều nhất hiện nay.
Nguyễn Thị Hiền 78 Luận văn thạc sỹ

TÀI LIỆU THAM KHẢO

Tiếng Việt

[1] Phan Đình Diệu (2002), Lý thuyết mật mã & an toàn thông tin, Nhà xuất
bản Đại học Quốc gia Hà nội.

[2] Phạm Huy Điển – Hà Huy Khoái (2003), Mã hóa thông tin - Cơ sở Toán
học & ứng dụng, Nhà xuất bản Đại học Quốc gia Hà nội.

[3] Hà Huy Khoái (1997), Nhập môn số học thuật toán, Nhà xuất bản Khoa
học.

Tiếng Anh

[4] A.J. Menezes, P.C. Van Oorschot, S.A. Vanstone (1997), Handbook of
Applied Cryptography, CRC Press.

[5] Bruce Schneier (1996), Applied Cryptography – Protocols, Algorithms and


Source Code in C, John Wiley & Sons, Inc.

[6] Douglas R.Stinson (1995), Cryptography – Theory and Practice, CRC


Press

[7]. Jan Li (2000), Public key infrastructure technology introduction, Intel


Semiconductor Ltd.

[8] S. Goldwasser, M.Bellare (2001), Lecture notes on Cryptography, MIT


Laboratory of Computer Science.

[9] Steven M. Bellovin & Michael Merritt (1992), Encrypted Key Exchange:
Password Based Protocols Secure Against Dictionary Attacks. The IEEE
Symposium on Research in Security and Privacy Oakland May 1992

[10] William Stalling (1998), Cryptography and network security – Principles


and Practice, 2nd ed., Prentice Hall, Inc.
[11] (1998) An Introduction to Cryptography, Network Associates Inc.

You might also like