ĐẠI HỌC THÁI NGUYÊN

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG

NGÔ THU PHƯƠNG

NGHIÊN CỨU CƠ SỞ HẠ TẦNG

KHÓA CÔNG KHAI PKI ỨNG DỤNG CHỨNG THỰC

CHO CÁC GIAO DỊCH HÀNH CHÍNH CÔNG ĐIỆN TỬ

LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH

THÁI NGUYÊN - 2017

ĐẠI HỌC THÁI NGUYÊN

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG

NGÔ THU PHƯƠNG

NGHIÊN CỨU CƠ SỞ HẠ TẦNG

KHÓA CÔNG KHAI PKI ỨNG DỤNG CHỨNG THỰC

CHO CÁC GIAO DỊCH HÀNH CHÍNH CÔNG ĐIỆN TỬ

Chuyên ngành: Khoa học máy tính

Mã số: 60.48.01.01

LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH

Người hướng dẫn khoa học: TS. Phạm Thế Quế

THÁI NGUYÊN - 2017

i

LỜI CAM ĐOAN

Tôi cam đoan đây là công trình nghiên cứu của riêng tôi, dưới sự chỉ dẫn của

TS. Phạm Thế Quế. Các số liệu, kết quả nêu trong luận văn là trung thực, luận văn

này cho đến nay chưa được bảo vệ tại bất kỳ hội đồng nào và chưa hề được công bố

trên bất kỳ phương tiện nào khác.

Thái nguyên, ngày ..... tháng ..... năm 2017

Tác giả luận văn

Ngô Thu Phương

ii

LỜI CẢM ƠN

Em xin chân thành cảm ơn thầy giáo TS. Phạm Thế Quế đã tận tình hướng

dẫn và tạo mọi điều kiện cho em hoàn thành luận văn.

Em xin chân thành cảm ơn các thầy cô giáo, các cán bộ nhân viên phòng đào

tạo, ban lãnh đạo Trường Đại học Công nghệ thông tin và Truyền thông đã giúp đỡ

tạo điều kiện cho em hoàn thành luận văn này.

Cuối cùng, em xin chân thành cảm ơn sự quan tâm giúp đỡ của gia đình, cơ

quan, bạn bè và tập thể lớp Cao học K14B đã cổ vũ động viên em hoàn thành luận

văn của mình.

Tuy đã cố gắng nhưng do thời gian và trình độ có hạn nên chắc chắn luận

văn này còn nhiều thiếu sót và hạn chế nhất định. Kính mong nhận được sự góp ý

của thầy cô và các bạn.

Thái nguyên, ngày ..... tháng ..... năm 2017

Học viên

Ngô Thu Phương

iii

MỤC LỤC

LỜI CAM ĐOAN ....................................................................................................... i

LỜI CẢM ƠN ........................................................................................................... ii

MỤC LỤC ............................................................................................................... iii

DANH MỤC NHỮNG TỪ VIẾT TẮT ................................................................. vi

DANH MỤC BẢNG ............................................................................................... vii

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

MỞ ĐẦU .................................................................................................................... 1

1. Lý do chọn đề tài ................................................................................................ 1

2. Ý nghĩa khoa học của đề tài ............................................................................... 2

3. Đối tượng và phạm vi nghiên cứu ...................................................................... 2

4. Những nội dung nghiên cứu chính ..................................................................... 2

CHƯƠNG 1 CƠ SỞ HẠ TẦNG KHÓA CÔNG KHAI ........................................ 3

1.1 Hệ mật mã khóa bất đối xứng [2] ................................................................. 3

1.1.1 Khái niệm ................................................................................................ 3

1.1.2 Thuật toán mật mã RSA ........................................................................... 5

1.1.3 Chuyển đổi văn bản rõ ........................................................................... 7

1.1.4 Đánh giá kỹ thuật mật mã bất đối xứng ................................................ 8

1.1.5 Một số kỹ thuật phá mã RSA ................................................................. 9

1.1.6 Một số hệ mật mã khóa công khai khác ............................................... 9

1.2 Hàm băm bảo mật ............................................................................................ 9

1.2.1 Giới thiệu ................................................................................................. 9

1.2.2 Các tính chất của hàm băm bảo mật ................................................... 10

1.2.3 Ứng dụng hàm băm bảo mật ................................................................... 11

1.2.4 Hàm băm bảo mật SHA .......................................................................... 12

1.2.5 Hàm băm MD5 ........................................................................................ 13

1.3 Chữ ký số [2] .................................................................................................. 14

iv

1.3.1 Khái niệm chữ ký số ............................................................................... 14

1.3.2 Quy trình tạo và kiểm tra chữ ký số ........................................................ 15

1.3.3 Những vấn đề còn tồn tại của chữ ký số ................................................. 18

1.4 Cơ sở hạ tầng khóa công khai PKI [3] ........................................................... 19

1.4.1 Khái niệm ................................................................................................ 19

1.4.2 Chức năng chủ yếu của PKI .................................................................... 21

1.4.3 Các thành phần PKI ................................................................................ 22

1.4.4 Các thủ tục trong PKI .............................................................................. 23

1.4.5 Khái niệm chứng thực số ........................................................................ 24

1.5 Một số thuật toán quản lý khóa [2] ............................................................. 25

1.5.1 Thuật toán trao đổi khoá Diffie -Hellman ........................................... 25

1.5.2 Đánh giá độ an toàn thuật toán trao đổi khoá Diffie -Hellman ......... 26

1.5.3 Quản lý khoá công khai trong mật mã bất đối xứng .............................. 27

1.5.4 Sử dụng mật mã bất đối xứng để trao đổi khóa bí mật ........................... 29

Kết luận chương ........................................................................................................ 31

CHƯƠNG 2 KỸ THUẬT XÁC THỰC THÔNG TIN TRONG GIAO DỊCH

ĐIỆN TỬ .................................................................................................................. 32

2.1 Giới thiệu chung xác thực thông tin ........................................................... 32

2.2 Các kỹ thuật xác thực thông tin [2] ................................................................ 33

2.2.1 Sử dụng các thuật toán mật mã khóa đối xứng ....................................... 34

2.2.2 Sử dụng các thuật toán mật mã khóa bất đối xứng ................................. 35

2.2.3 Sử dụng mã xác thực MAC ..................................................................... 36

2.2.4 Sử dụng các hàm băm bảo mật ............................................................... 37

2.2.5 Xác thực thông tin dùng chữ ký điện tử ................................................. 38

2.2.6 Xác thực thông tin dùng chữ ký điện tử và chứng thực điện tử ........... 40

2.3 Các giao thức xác thực ................................................................................... 42

2.3.1 Mật khẩu .................................................................................................. 42

2.3.2 Các giao thức xác thực trong mô hình điểm - điểm ................................ 43

2.3.3 Xác thực trong các hệ thống phân tán ..................................................... 44

v

2.3.4 Giao thức xác thực Kerberos 4 ................................................................ 48

2.3.5 Giao thức xác thực Kerberos 5 ................................................................ 52

Kết luận chương ........................................................................................................ 55

CHƯƠNG 3 GIẢI PHÁP XÁC THỰC CHO CÁC GIAO DỊCH HÀNH

CHÍNH CÔNG ĐIỆN TỬ ...................................................................................... 56

3.1 Dịch vụ hành chính công ............................................................................. 56

3.1.1 Khái niệm ................................................................................................ 57

3.1.2 Các đặc trưng cơ bản của dịch vụ hành chính công ................................ 57

3.2 Mô hình xác thực người dùng hành chính công ........................................ 58

3.2.1 Các thành phần hệ thống xác thực .......................................................... 58

3.2.2 Hệ thống ký hiệu ..................................................................................... 59

.......................................................................................................................... 60

3.2.3 Hoạt động hệ thống xác thực thông tin ... Error! Bookmark not defined.

3.3 Các quy trình xác thực hệ thống thông tin hành chính công ................... 60

3.3.1 Quy trình cấp và quản lý chứng thực khóa ........................................ 60

3.3.2 Quy trình xác thực thông tin ................................................................... 63

3.3.3 Một số nhận xét ....................................................................................... 64

3.4 Cài đặt thử nghiệm ......................................................................................... 65

3.5 Đánh giá kết quả thử nghiệm .......................... Error! Bookmark not defined.

KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ............................................................. 68

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

vi

DANH MỤC NHỮNG TỪ VIẾT TẮT

Advanced Encryption Standard American National Standards Institude Certification Authority Certificate Revocation List Data Ecryption Standard Domain Name System Digital Signature Algorithm Digital Signature Standard Electronic Data Interchange Federal Information Processing Standard File Transfer Protocol Hyper Text Transport Protocol International Data Encryption Algorithm International Organization for Standardization Internet Service Provider International Telecommunication Union Message Digest 5 National Institute of Standards and Technology Open System Interconnection Pretty Good Private Public Key Infrastructure Registration Authority Rivest-Shamir-Aldeman Secure Electronic Transaction Secure Hash Algorithm

AES ANSI CA CRL DES DNS DSA DSS EDI FIPS FTP HTTP IDEA ISO ISP ITU MD5 NIST OSI PGP PKI RA RSA SET SHA TCP/IP Transmission Control Protocol / Internet protocol Uniform Resource Locator URL Chuẩn mã hoá tiên tiến Viện tiêu chuẩn quốc gia Mỹ Nhà cung cấp chứng thực Danh sách chứng thực thu hồi Chuẩn mã dữ liệu Hệ thống tên miền Thuật toán chữ ký điện tử Chuẩn chữ ký điện tử Trao đổi dữ liệu điện tử Chuẩn xử lý thông tin liên bang Mỹ Giao thức truyền file Giao thức truyền siêu văn bản Thuật toán mã hoá dữ liệu quốc tế Tổ chức tiêu chuẩn hoá quốc tế Nhà cung cấp dịch vụ Internet Liên minh viễn thông quốc tế Viện quốc gia về chuẩn và công nghệ Kết nối giữa các hệ thống mở Cơ sở hạ tầng khoá công khai Nhà quản lý đăng ký Giao dịch điện tử an toàn Thuật toán băm an toàn Giao thức điều khiển truyền dẫn/ giao thức Internet Bộ định vị tài nguyên

vii

DANH MỤC BẢNG

Bảng 1.1: Các phiên bản SHA .................................................................................. 13

Bảng 1.2: So sánh các thông số giữa SHA-1 và MD5 .............................................. 13

Bảng 3.1: Kết quả thử nghiệm .................................................................................. 67

viii

DANH MỤC HÌNH

Hình 1.1: Cấu trúc hệ thống mật mã khóa bất đối xứng ............................................. 5 Hình 1.2: Một ứng dụng điển hình của hàm băm ..................................................... 10 Hình 1.3: Định nghĩa chữ ký số ................................................................................ 15 Hình 1.4: Sơ đồ tổng quát tạo chữ ký số ................................................................... 16 Hình 1.5: Sơ đồ tổng quát kiểm tra chữ ký số .......................................................... 17 Hình 1.6: Sơ đồ tổng quát tạo và kiểm tra chữ ký số ................................................ 17 Hình 1.7: Các thành phần cơ bản của một PKI ......................................................... 23 Hình 1.8: Thuật toán trao đổi khoá Diffie-Hellman ................................................. 26 Hình 1.9: Dùng mật mã bất đối xứng để trao đổi khoá ............................................. 29 Hình 2.1: Xác thực thông tin dùng mật mã đối xứng ............................................... 34 Hình 2.2: Sử dụng khóa bất đối xứng để trao đổi khóa bí mật ................................. 35 Hình 2.3: Xác thực thông tin dùng mật mã bất đối xứng ......................................... 35 Hình 2.4: Xác thực thông tin dùng MAC ................................................................. 36 Hình 2.5: Xác thực thông tin dùng hàm băm ............................................................ 37 Hình 2.6: Xác thực dùng hàm băm và mật mã bất đối xứng .................................... 38 Hình 2.7: Xác thực thông tin dùng chữ ký số ........................................................... 39 Hình 2.8: Xác thực thông tin dùng chữ ký số ........................................................... 39 Hình 2.9: Minh hoạ xác thực sử dụng chứng chỉ số và chữ ký điện tử .................... 40 Hình 2.10: Sơ đồ minh họa quá trình xin cấp chứng chỉ số ...................................... 41 Hình 2.11: Giao thức xác thực PAP .......................................................................... 44 Hình 2.12: Giao thức xác thực CHAP ...................................................................... 44 Hình 2.13: Thủ tục xác thực Kerberos 4 ................................................................... 49 Hình 2.14: Xác thực giữa hai lãnh địa Kerberos ...................................................... 52 Hình 3.1: Mô hình tổng quát cấp chứng thực khóa .................................................. 62 Hình 3.2: Quy trình khởi tạo chứng thực khóa cho người sử dụng .......................... 63 Hình 3.3: Giao diện chương trình demo chữ ký số ... Error! Bookmark not defined. Hình 3.4: Giao diện kiểm tra chuỗi toàn vẹn ........... Error! Bookmark not defined.

1

MỞ ĐẦU

1. Lý do chọn đề tài

Ngày nay, cùng với sự phát triển của công nghệ thông tin và truyền thông,

giao dịch điện tử đã và đang phát triển mạnh mẽ thay thế dần các giao dịch truyền

thống. Sự bùng nổ của Internet, một mặt đem lại nhiều ứng dụng tiện lợi, nhưng hầu

hết các thông tin quan trọng và nhạy cảm (thông tin mật, mã số tài khoản…) đều

được lưu trữ và trao đổi trên môi trường Internet.

Triển khai các giao dịch điện tử trên Internet như trao đổi thư tín, các giao

dịch hành chính công Chính phủ - công dân,… đã trở thành một phần tất yếu của

cuộc sống hiện đại. Tuy nhiên các nguy cơ, lừa đảo, giả mạo, chiếm quyền điều

khiển,… qua mạng ngày càng gia tăng với các thủ đoạn tinh vi. Vì vậy việc đảm

bảo an toàn thông tin, tránh mọi nguy cơ bị thay đổi, sao chép hoặc mất mát dữ liệu

trong các ứng dụng trên mạng luôn là vấn đề bức xúc và cần thiết, được nhiều người

quan tâm. Nhu cầu thực tế được đặt ra, đó là phải có một cơ quan đảm bảo chứng

thực điện tử cho các giao dịch điện tử, nhằm đảm bảo yêu cầu xác thực, bí mật, toàn

vẹn, chống chối bỏ. Thực tế là hiện nay trên thế giới, có rất nhiều cách xây dựng,

triển khai một hệ thống PKI. Có thể đơn cử ra một vài ví dụ cụ thể như: CA -

Microshoft, OpenCA - Opensourc, Entrus….

Cấu trúc hạ tầng mã khóa công khai PKI (Public Key Infrastructure), cùng

với các tiêu chuẩn và các công nghệ ứng dụng của nó có thể coi là một giải pháp

tổng hợp và độc lập mà các tổ chức, doanh nghiệp có thể ứng dụng để giải quyết

vấn đề này. PKI bản chất là một hệ thống công nghệ vừa mang tính tiêu chuẩn, vừa

mang tính ứng dụng được sử dụng để khởi tạo, lưu trữ và quản lý các văn bản điện

tử cũng như các khóa công khai và bí mật. Ngoài việc bảo đảm an toàn cho thông

tin liên lạc và lưu trữ, PKI còn là cơ sở pháp lý để giải quyết khi có tranh chấp. Vì

vậy mục tiêu đặt ra là xây dựng một bộ tiêu chuẩn bảo mật tổng hợp cùng các công

cụ quản lý, cho phép người sử dụng cũng như các tổ chức có thể tạo, lưu trữ và trao

đổi các thông tin một cách an toàn.

2

Luận văn này với mục đích nghiên cứu về hạ tầng khóa công khai PKI và

ứng dụng cho các giao dịch hành chính điện tử.

2. Ý nghĩa khoa học của đề tài

Nghiên cứu lý thuyết mật mã, chữ ký số và xác thực; hạ tầng khóa công khai

PKI và ứng dụng của nó. Từ đó xây dựng chương trình ứng dụng có khả năng bảo

mật nội dung thông tin dưới dạng văn bản điện tử, tạo chữ ký trên văn bản điện tử

và chứng thực chữ ký số trên văn bản điện tử; góp phần phục vụ những người quản

lý đơn vị trao đổi thông tin với các đối tác khách hàng, điều hành công việc từ xa.

3. Đối tượng và phạm vi nghiên cứu

3.1 Đối tượng nghiên cứu

− Xác thực và mã hóa ứng dụng khóa công khai PKI

− Các giải pháp mã hóa, hàm băm, chữ ký số

3.2 Phạm vi nghiên cứu:

− Xây dựng các mô hình xác thực dịch vụ hành chính công

− Xây dựng quy trình xác thực hành chính công

4. Những nội dung nghiên cứu chính

Luận văn gồm 3 chương như sau:

CHƯƠNG 1 : CƠ SỞ HẠ TẦNG KHÓA CÔNG KHAI

CHƯƠNG 2: KỸ THUẬT XÁC THỰC THÔNG TIN TRONG GIAO DỊCH

ĐIỆN TỬ

CHƯƠNG 3: GIẢI PHÁP XÁC THỰC CHO CÁC GIAO DỊCH HÀNH

CHÍNH CÔNG ĐIỆN TỬ

3

CHƯƠNG 1

CƠ SỞ HẠ TẦNG KHÓA CÔNG KHAI

1.1 Hệ mật mã khóa bất đối xứng [2]

1.1.1 Khái niệm

Đặc trưng của hệ mật mã khóa bất đối xứng (Asymmetric Key Encryption),

hay còn được gọi là hệ mật mã khóa công khai (Public Key Encryption) là dùng 2

khóa riêng biệt cho hai quá trình mã hóa và giải mã, trong đó có một khóa được phổ

biến công khai (Public Key), không cần giữ bí mật, ký hiệu PU và khóa còn lại gọi

là khóa riêng (Private Key) được giữ bí mật, chỉ có chủ sở hữu được biết, ký hiệu là

PR. Cả hai khoá có thể được dùng để mã hoá hoặc giải mã theo nhu cầu sử dụng.

Việc chọn khoá công khai hay khoá bí mật cho quá trình mã hoá sẽ tạo các ứng

dụng khác nhau:

1. Dùng khoá công khai PU để mã hoá và khoá riêng để giải mã cho ứng

dụng bảo mật thông tin (Confidentiality).

2. Dùng khoá riêng PR để mã hoá và khoá công khai PU để giải mã cho ứng

dụng xác thực nội dung và nguồn gốc thông tin (Authentication).

Thuật toán mật mã bất đối xứng dựa trên các hàm toán học. Mật mã hóa bất

đối xứng còn được gọi bằng một tên thông dụng hơn là mật mã hóa dùng khóa công

khai (Public Key Kncryption).

Nói chung, mật mã hóa bất đối xứng không phải là một kỹ thuật mật mã an

toàn hơn so với mật mã đối xứng, mà độ an toàn của một thuật toán mã nói chung

phụ thuộc vào 2 yếu tố: Độ dài của khóa và mức độ phức tạp khi thực hiện thuật

toán (trên máy tính). Hơn nữa, mặc dù được ra đời sau nhưng không có nghĩa rằng

mật mã bất đối xứng hoàn toàn ưu điểm hơn và sẽ được sử dụng thay thế cho mật

mã đối xứng. Mỗi kỹ thuật mã có một thế mạnh riêng và mật mã đối xứng vẫn rất

thích hợp cho các hệ thống nhỏ và đơn giản. Ngoài ra, vấn đề phân phối khóa trong

mật mã bất đối xứng cũng được đánh giá là một trong những vấn đề phức tạp khi

triển khai kỹ thuật mật mã này trong thực tế.

4

Các bước cơ bản của một hệ thống mật mã khóa công khai bao gồm:

1. Mỗi thực thể thông tin (User) tạo ra một cặp khóa công khai PU (Public

Key) và khóa riêng PR (Private Key).

2. User thông báo khoá công khai PU cho các User khác biết, còn khóa riêng

PR là sở hữu riêng, giữ bí mật.

3. Nếu User A muốn gửi thông tin cho User B, User A sẽ thực hiện mã hóa

thông tin cần gửi bằng khóa công khai của User B.

4. Khi nhận được thông tin đã mã hóa từ User A, User B thực hiện giải mã

thông tin đó bằng khóa riêng của nó. Do khóa riêng không phổ biến công khai nên

chỉ có User B có khả năng giải mã được.

Mật mã hóa bất đối xứng được sử dụng trong các ứng dụng: che giấu thông

tin, tạo chữ ký số (Digital Signature) và trao đổi khóa trong các thuật toán mật mã

đối xứng (Key Exchange).

a) Ứng dụng bảo mật thông tin

5

b) Ứng dụng xác thực thông tin

Hình 1.1: Cấu trúc hệ thống mật mã khóa bất đối xứng

1.1.2 Thuật toán mật mã RSA

RSA (Rivest – Shamir – Adleman hay RSA) là thuật toán mật mã khóa bất

đối xứng được xây dựng bởi Ron Rivest, Adi Shamir và Len Adleman tại viện công

nghệ Massachusetts (MIT), ra đời năm 1977, đến nay đã được ứng dụng trong nhiều

lĩnh vực. Cũng như các thuật toán mật mã bất đối xứng khác, nguyên lý của RSA

dựa chủ yếu trên lý thuyết số, lý thuyết logic rời rạc

RSA là một thuật toán mật mã khối, kích thước khối thông thường là 1024

hoặc 2048 bit. Thông tin gốc của RSA được xử lý như các số nguyên. Ví dụ, khi

chọn kích thước khối của thuật toán là 1024 bit thì số nguyên này có giá trị từ 0 đến 21024 – 1, tương đương với số thập phân có 309 chữ số. Chú ý rằng đây là những số

nguyên cực lớn, không thể xử lý được bằng cách sử dụng các cấu trúc dữ liệu có sẵn

của các ngôn ngữ lập trình phổ biến.

Thuật toán RSA được mô tả như sau:

1. Chọn hai số nguyên tố đủ lớn p và q.

2. Ký hiệu N = pq, φ(N) = (p-1)(q-1).

3. Chọn một số e sao cho e và φ(N) là hai số nguyên tố cùng nhau.

4. Tìm số d sao cho ed = 1 mod φ(N)

6

5. Cặp khóa bất đối xứng

− Khóa công khai (Public): PU= (N, e) − Khóa bí mật (Private): PR = (N, d) 6. Nếu sử dụng kỹ thuật RSA để mã hóa thông tin

− Mã hóa: • Khối thông tin gốc “m” chuyển về số nguyên M≤ N • C = Me mod N − Giải mã: M = Cd mod N Ví dụ: 1. Chọn các số nguyên tố: p = 11 và q = 3

2. N = pq = 3*11 = 33, φ(N) = (p-1) (q-1) = (11 - 1) (3 - 1) = 20 3. Chọn e = 3, vì 3 và 20 nguyên tố cùng nhau. 4. Với e = 3, chọn d = 7, vì e*d = 3*7 = 1 mod 20 5. Cặp khóa bất đối xứng

− Khóa công khai (Public): PU = (33, 3) − Khóa bí mật (Private): PR = (33, 7) 6. Giả sử User A có cặp khóa PUA = (33, 3) và PRA = (33, 7),User B muốn

gửi thông tin M = 15 cho User A

− User B mã hóa M bằng PUA = (33,3), C = 153 mod 33 = 3375 mod 33 = 9

mod 33. Khi đó, thông tin mật gửi cho User A là C = 9

− Khi nhận C = 9, User A giải mã bằng khóa riêng PRA = (33, 7): M = Cd

mob N = 97 mod 33 = 4.782.969 mod 33 = 15 mod 33.

- Thông tin giải mã được là M = 15

Tóm lại, thuật toán mật mã RSA được thực hiện gồm 3 quá trình tách rời: tạo

khoá, mã hoá và giải mã được tóm tắt như sau:

1. Tạo khoá:

• Chọn p, q (p và q là số nguyên tố, p ≠ q) • Tính N = p*q • Tính φ(N) = (p - 1)(q - 1) • Chọn e sao ước số chung lớn nhất của e và φ(N) là 1 • Chọn d sao cho e.d mod φ(N) = 1 • Cặp khoá RSA được tạo ra là PU = (N, e), PR = (N, d) 2. Mã hoá: C = Me mod N (M là số nguyên nhỏ hơn N)

7

3. Giải mã: M = Cd mod N Trong thực tế, để đạt được độ an toàn cao, cặp khóa phải được chọn trên các số p và q đủ lớn (N nhỏ nhất phải là 1024 bit), do vậy, vấn đề thực thi RSA bao

gồm các phép toán lũy thừa trên các số rất lớn. Vấn đề giảm chi phí tính toán và

tăng tốc độ thực hiện thuật toán RSA là một trong những vấn đề quan trọng cần

phải giải quyết. Trên các hệ thống máy tính hiện nay, hiệu suất thực hiện giải thuật

RSA là chấp nhận được.

1.1.3 Chuyển đổi văn bản rõ

Trước khi thực hiện mã hóa, ta phải thực hiện việc chuyển đổi văn bản rõ

(chuyển đổi từ M sang m) sao cho không có giá trị nào của M tạo ra văn bản mã không

an toàn. Nếu không có quá trình này, RSA sẽ gặp phải một số vấn đề: Nếu m = 0

hoặc m = 1 sẽ tạo ra các bản mã có giá trị là 0 và 1 tương ứng

Khi mã hóa với số mũ nhỏ (chẳng hạn e = 3) và m cũng có giá trị nhỏ, giá

trị cũng nhận giá trị nhỏ (so với n). Như vậy phép modulo không có tác dụng và

có thể dễ dàng tìm được m bằng cách khai căn bậc e của c (bỏ qua modulo). RSA là

phương pháp mã hóa xác định, không có thành phần ngẫu nhiên, nên Hacker có thể

tấn công lựa chọn bản rõ bằng cách tạo ra một bảng tra giữa bản rõ và bản mã. Khi

gặp một bản mã, Hacker sử dụng bảng tra để tìm ra bản rõ tương ứng.

Trên thực tế, thường gặp 2 vấn đề đầu khi gửi các bản tin ASCII ngắn

với m là nhóm vài ký tự ASCII. Một đoạn tin chỉ có 1 ký tự NUL sẽ được gán giá

trị m = 0 và cho ra bản mã là 0 bất kể giá trị của e và N. Tương tự, một ký tự ASCII

khác, SOH, có giá trị 1 sẽ luôn cho ra bản mã là 1. Với các hệ thống dùng giá

trị e nhỏ thì tất cả ký tự ASCII đều cho kết quả mã hóa không an toàn vì giá trị lớn

nhất của m chỉ là 255 và 2553 nhỏ hơn giá trị n chấp nhận được. Những bản mã này

sẽ dễ dàng bị phá mã. Để tránh gặp phải những vấn đề trên, RSA trên thực tế

thường bao gồm một hình thức chuyển đổi ngẫu nhiên hóa m trước khi mã hóa. Quá

trình chuyển đổi này phải đảm bảo rằng m không rơi vào các giá trị không an toàn.

Sau khi chuyển đổi, mỗi bản rõ khi mã hóa sẽ cho ra một trong số khả năng trong

tập hợp bản mã. Điều này làm giảm tính khả thi tấn công lựa chọn bản rõ (một bản

rõ sẽ có thể tương ứng với nhiều bản mã tuỳ thuộc vào cách chuyển đổi).

8

Một số chuẩn, như PKCS, được thiết kế chuyển đổi bản rõ trước khi mã hóa

bằng RSA. Các phương pháp chuyển đổi này bổ sung thêm bít vào M. Các phương

pháp chuyển đổi cần được thiết kế cẩn thận để tránh những dạng tấn công phức tạp,

tận dụng khả năng biết trước được cấu trúc của bản rõ. Phiên bản ban đầu của

PKCS dùng một phương pháp Ad- hoc mà về sau được biết là không an toàn

trước tấn công lựa chọn bản rõ thích ứng (Adaptive Chosen Ciphertext Attack). Các

phương pháp chuyển đổi hiện đại sử dụng các kỹ thuật như chuyển đổi mã hóa bất

đối xứng tối ưu (Optimal Asymmetric Encryption Padding - OAEP) để chống lại

tấn công dạng này. Tiêu chuẩn PKCS còn được bổ sung các tính năng khác để đảm

bảo an toàn cho chữ ký RSA (Probabilistic Signature Scheme for RSA - RSA -

PSS).

1.1.4 Đánh giá kỹ thuật mật mã bất đối xứng

Kỹ thuật mật mã bất đối xứng hoàn toàn có thể đáp ứng được những yêu cầu

về bảo mật hệ thống như trong kỹ thuật mật mã đối xứng, mặc dù tốc độ thực thi

của mã bất đối xứng thường thấp hơn do bản chất thuật toán dựa trên các thao tác số

học chứ không dựa trên các thao tác xử lý bit. Hơn nữa, mã bất đối xứng chỉ phù

hợp với việc thực thi bằng phần mềm. Mật mã bất đối xứng đảm bảo được 2 yêu

cầu cơ bản của thông tin là tính bí mật và tính toàn vẹn. Kỹ thuật mật mã bất đối

xứng có 2 ưu điểm so với mã đối xứng:

1. Hai thực thể không cần thực hiện trao đổi khóa trước khi làm việc.

2. Bên cạnh công dụng đảm bảo tính toàn vẹn của dữ liệu, mật mã bất đối

xứng (khi được sử dụng cho mục đích xác thực) còn đảm bảo được tính không thể

phủ nhận (non-repudiation) của thông tin.

Theo lý thuyết, RSA có thể bị tấn công bằng những phương thức sau:

− Brute-force attack: tìm lần lượt khoá riêng PR

− Mathematical attack: xác định p và q bằng cách phân tích N thành tích của

các thừa số nguyên tố rồi từ đó xác định e và d.

− Timing attack: dựa trên thời gian thực thi của thuật toán giải mã.

9

− Chosen ciphertext attack: sử dụng các đoạn thông tin mật (ciphertext) đặc

biệt để khôi phục thông tin gốc.

Tuy nhiên trong thực tế, nguy cơ tấn công các hệ thống mật mã RSA là rất

thấp, do RSA là một thuật toán linh động, kích thước khối dữ liệu gốc và chiều dài

khoá dễ dàng được thay đổi mà không ảnh hưởng đến thuật toán mã.

1.1.5 Một số kỹ thuật phá mã RSA

RSA có thể bị tấn công bằng những phương thức sau đây:

− Tìm lần lượt khoá riêng PR − Xác định p và q bằng cách phân tích N thành tích của các thừa số nguyên

tố rồi từ đó xác định e và d.

− Dựa trên thời gian thực hiện của thuật toán giải mã. − Sử dụng các đoạn thông tin mật (Ciphertext) đặc biệt để khôi phục thông

tin gốc.

− Trong thực tế, nguy cơ tấn công các hệ thống mật mã RSA là rất thấp, vì RSA là một thuật toán linh động, kích thước khối dữ liệu gốc và chiều dài khoá dễ

dàng thay đổi mà không ảnh hưởng đến thuật toán mã.

1.1.6 Một số hệ mật mã khóa công khai khác

− ELGamal(ELGamal,s Public-key Cryptosystem): Độ bảo mật dựa trên

tính khó giải của bài toán logarit rời rạc trên các trường hữu hạn.

− Schnorr( Schnorr,s Public-key Cryptosystem): Độ bảo mật dựa trên các

thuật toán logarit rời rạc.

− DSA (Digital Signature Algorithm): Độ bảo mật dựa sự kết hợp của

ELGamal và Schnorr.

− ECC(The Elliptic Curve Cryptosystem): Là biến tướng của các hệ mật

khác (ELGamal), làm việc trên các đường cong Elip. 1.2 Hàm băm bảo mật 1.2.1 Giới thiệu

Hàm băm bảo mật (Secure Hash Function) còn được gọi là hàm băm (Hash) là một trong những kỹ thuật cơ bản để thực hiện các cơ chế xác thực thông tin (Message Authentication). Ngoài ra, hàm băm cũng còn được sử dụng trong nhiều thuật toán mật mã, trong chữ ký số (Digital Signature) và trong nhiều ứng dụng

khác.

Nguyên tắc của hàm băm là biến đổi khối thông tin gốc M có độ dài bất kỳ thành một đoạn thông tin ngắn hơn có độ dài cố định. Đoạn thông tin này gọi là giá

10

trị băm, hay còn được gọi là mã băm h = H(M) (Hash Code hay Message Digest).

Mã băm được dùng để kiểm tra tính chính xác của thông tin nhận được. Thông thường, mã băm được gửi đính kèm với thông tin gốc. Ở phía nhận, hàm băm lại

được áp dụng đối với thông tin gốc để tìm ra mã băm mới, giá trị này được so sánh

với mã băm đi kèm với thông tin gốc. Nếu hai mã băm giống nhau, nghĩa là thông

tin gửi đi không bị thay đổi.

1.2.2 Các tính chất của hàm băm bảo mật

Chỉ có thể dùng hàm băm để tính mã băm từ thông tin gốc chứ không thể

tính được thông tin gốc từ mã băm. Do đặc tính này, các hàm băm bảo mật cũng

còn được gọi là hàm băm một chiều (One Way Hash Function).

Các tính chất của một hàm băm bảo mật h = H(M)

− H(M)có thể được áp dụng cho khối thông tin với chiều dài bất kỳ − Dung lượng mã băm h = H(M) luôn có chiều dài cố định − Hàm băm H(M) với một giá trị có thể thực hiện trên phần cứng hoặc bằng

phần mềm.

− Tính chất một chiều (One Way Property): Cho trước một giá trị h, khó có

thể tìm được một giá trị M sao cho H(x) = h.

− Tính chất đụng độ yếu (Weak Collision Resistance): Cho trước khối thông tin M, không thể tìm được một khối thông tin M” ≠ M sao cho cùng giá trị băm

H(M”) = H(M).

− Tính chất đụng độ mạnh (Strong Collision Resistance): Không thể tìm

được hai khối thông tin M” ≠ M sao cho H(M”) = H(M).

c ố g n i t

c ố g n i t

H

c ố g n i t g n ô h T

g n ô h T

g n ô h T

: So sánh

H

: Hàm băm

: Mã băm

H

Hình 1.2: Một ứng dụng điển hình của hàm băm

11

Trong những trường hợp lý tưởng nhất là ứng với một khối thông tin M xác

định một giá trị duy nhất mã băm h = H(M) và ngược lại, mỗi giá trị h xác định duy

nhất một khối thông tin M, tức là ánh xạ 1:1, sẽ không thể xảy ra tình huống tồn tại

hai khối thông tin khác nhau cùng cho một giá trị băm. Nếu tồn tại 2 khối thông tin

khác nhau cùng cho ra một mã băm, nói rằng thuật toán băm bị đụng độ (Collision).

Tạo ra các tình huống đụng độ là mục tiêu tấn công của Hacker vào một hàm băm

bảo mật.

Xác suất để hai khối thông tin có cùng một giá trị băm phụ thuộc vào kích

thước của mã băm, tức là phụ thuộc vào số lượng mã băm có thể có. Kích thước mã

băm càng nhỏ thì khả năng xảy ra tình huống đụng độ càng lớn, và do đó xác suất

tấn công thành công càng lớn. Nếu kích thước mã băm là n bit, để xác suất xảy ra đụng độ là 50% thì cần có khoảng 2n/2 khối thông tin được xử lý. Các kiểu tấn công

này được gọi là tấn công Birthday Attack.

Nói chung, độ an toàn một hàm băm phụ thuộc vào kích thước mã băm

1.2.3 Ứng dụng hàm băm bảo mật

Một ứng dụng tiêu biểu của hàm băm mật như sau: Giả sử Alice đặt ra một

bài toán khó cho Bob, và tuyên bố rằng cô ta đã giải được. Bob sẽ phải cố gắng tự

thực hiện, nhưng chưa dám chắc rằng Alice không giải sai. Do đó, Alice viết ra lời

giải của mình, gắn thêm một giá trị nonce ngẫu nhiên, tính giá trị băm của nó và cho

Bob biết giá trị băm đó (giữ bí mật lời giải và giá trị nonce). Bằng cách này, khi

Bob tìm ra lời giải của mình vài ngày sau đó, Alice có thể chứng minh rằng cô ta có

lời giải sớm hơn bằng cách tiết lộ giá trị nonce cho Bob. (Đây là một ví dụ về một

lược đồ cam kết đơn giản trong thực tế, vai trò của Alice và Bob thường sẽ là các

chương trình máy tính, và bí mật sẽ là một cái gì đó dễ dàng giả mạo hơn là một bài

toán đó theo yêu cầu).

Một trong những ứng dụng quan trọng của hàm băm an toàn là việc xác minh

tính toàn vẹn của thông tin, nó xác định liệu có sự thay đổi nào đã được thực hiện

đối với thông điệp (hoặc một tập tin). Ví dụ, có thể được thực hiện bằng cách so

12

sánh các giá trị băm của thông điệp đã tính toán trước, và sau khi truyền đi (hoặc sự

kiện nào đó).

Một giá trị tóm lược thông điệp cũng có thể phục vụ như là một phương tiện

nhận dạng một tập tin đáng tin cậy một số hệ thống quản lý mã nguồn, bao gồm Git,

Mercurial và Monotone, sử dụng giá trị shalsum của nhiều dạng nội dung khác nhau

(nội dung tập tin, cây thư mục, vv…) để nhận dạng chúng một cách duy nhất. Một

ứng dụng khác liên quan tới việc xác thực mật khẩu. Mật khẩu thường không được

lưu trữ dạng văn bản rõ, với các lý do hiển nhiên, mà thay bằng dạng giá trị tóm

lược. Để xác thực người dùng, mật khẩu đại diện cho người sử dụng được băm và

so sánh với giá trị băm lưu trữ. Điều này đôi khi được gọi là phép mã hóa một chiều

(one-way encryption). Đối với cả hai lý do bảo mật và hiệu suất, hầu hết các thuật

toán chữ ký số chỉ định rằng chỉ giá trị tóm lược của thông báo được "ký", chứ

không phải toàn bộ thông báo. Các hàm băm cũng có thể được sử dụng trong việc

tạo các bit giả ngẫu nhiên (pseudorandom)

Các giá trị băm còn được sử dụng để nhận dạng tập tin trên mạng khi chia sẻ

theo mô hình Peer to Peer. Ví dụ, trong một liên kết ed2k, một giá trị băm MD4

biến thể được kết hợp với kích thước tập tin, cung cấp đủ thông tin để định vị các

nguồn tập tin, tải các tập tin và xác nhận nội dung của nó. (Trong máy tính, các liên

kết ed2k là các hyperlinks được sử dụng để biểu thị các tập tin được lưu trữ trong

mạng eDonkey P2P.) Các liên kết Magnet là một ví dụ khác. Các giá trị băm tập tin

như vậy thường là băm đầu danh sách băm hoặc cây băm để có thêm nhiều tiện lợi.

1.2.4 Hàm băm bảo mật SHA

khối 512 bit, qua 5 công đoạn khác nhau SHA (Secure Hash Function) chuẩn hoá năm 1993, sau đó được chỉnh sửa năm 1995 và đặt tên là SHA-1, từ đó phiên bản cũ được gọi là SHA-0.

SHA-1 tạo ra mã băm có chiều dài cố định là 160 bit. Về sau, có nhiều nâng

cấp đối với SHA, chủ yếu là tăng chiều dài mã băm, từ đó xuất hiện các phiên bản khác nhau của SHA, bao gồm: SHA-256 (mã băm dài 256 bit), SHA-384 (mã băm dài 384 bit) và SHA-512 (mã băm dài 512 bit).

SHA-1 chấp nhận các khối thông tin có kích thước tối đa là 264 bit để tạo ra

mã băm với độ dài cố định 160 bit. Toàn bộ khối thông tin được xử lý theo từng

13

Bảng 1.1: Các phiên bản SHA

Thông số SHA-1 SHA-256 SHA-384 SHA-512

Kích thước mã băm (bit)

Kích thước thông tin gốc (bit) 160 < 264 256 < 264 384 < 2128 512 <2128

Kích thước khối (bit) 512 512 1024 1024

Độ dài từ (bit) 32 32 64 64

Số bước thực hiện (bước) 80 64 80 80

1.2.5 Hàm băm MD5

MD5 (Message Digest Algorithm 5) là một giải thuật xác thực thông tin

được sử dụng phổ biến trên Internet, đặc biệt dùng để kiểm tra tính chính xác của

các phần mềm mã nguồn mở phát hành trên mạng. Giải thuật này được xây dựng

bởi Ron Rivest và được chuẩn hóa bằng RFC 1321. MD5 có thể xử lý các khối

thông tin có độ dài không giới hạn để tạo ra mã băm dài 128 bit. Thông tin gốc cũng

xử lý theo từng đoạn 512 bit. MD5 được sử dụng rộng rãi trong các chương trình an

ninh mạng, và cũng thường được dùng để kiểm tra tính nguyên vẹn của tập tin.

MD5 được sử dụng rộng rãi trong thế giới phần mềm để đảm bảo rằng tập

tin tải về không bị lỗi. Người sử dụng có thể so sánh giữa thông số kiểm tra phần

mềm bằng MD5 đượ c công bố với thông số kiểm tra phần mềm tải về bằng

MD5. Hệ điều hành Unix sử dụng MD5 để kiểm tra các gói mà nó phân phối,

trong khi hệ điều hành Windows sử dụng phần mềm của hãng thứ ba.

MD5 được dùng để mã hóa mật khẩu. Mục đích của việc mã hóa này là biến

đổi một chuỗi mật khẩu thành một đoạn mã khác, sao cho từ đoạn mã đó không thể

nào lần trở lại mật khẩu. Có nghĩa là việc giải mã là không thể hoặc phải mất một

khoảng thời gian vô tận (đủ để làm nản lòng các hacker).

Bảng 1.2: So sánh các thông số giữa SHA-1 và MD5

Thông số so sánh MD5 SHA-1

Kích thước mã băm (bit) 128 160

Kích thước khối (bit) 512 512

Số bước 64

80 < 264 Kích thước thông tin gốc (bit) Không giới hạn

Số lượng hàm logic 4 4

14

Với 128 bit giá trị mã băm, việc tìm ra hai khối thông tin để có cùng một giá

trị mã băm không còn là điều bất khả thi đối với năng lực của các bộ xử lý hiện đại

hiện nay. Vì vậy, độ an tòan của một MD5 đang bị đe dọa nghiêm trọng, và mức độ

phổ biến của MD5 có thể sẽ giảm đi rất nhiều và được thay thế bằng một giải thuật

xác thực khác hiệu quả hơn.

1.3 Chữ ký số [2]

1.3.1 Khái niệm chữ ký số

Ứng dụng quan trọng nhất của mật mã khoá công khai là chữ ký số hay còn

được gọi là chữ ký điện tử. Chữ ký số là một phương thức nhằm đảm bảo tính

hợp pháp của các thực thể khi tham gia các giao dịch điện tử. Chữ ký số là một

cơ chế xác thực cho phép người tạo ra thông tin (Message Creator) gắn thêm một

đoạn mã đặc biệt vào thông tin, có tác dụng như là một chữ ký thông thường.

Chữ ký được tạo ra bằng cách áp dụn g một hàm băm lên thông gốc và sau đó nó

được mã hóa bằng khóa riêng của người gửi. Chữ ký số có mục đích đảm bảo tính

toàn vẹn về nguồn gốc và nội dung của thông tin.

Trong khi các cơ chế xác thực thông tin (Message Authentication) đã thực

hiện chức năng xác thực nguồn gốc thông tin. Các hàm băm một chiều chỉ mới có

tác dụng bảo vệ thông tin trao đổi giữa hai thực thể không xâm phạm của một thực

thể bên thứ 3. Tuy nhiên, các cơ chế này không thể ngăn chặn được sự xâm phạm

của chính hai thực thể trực tiếp tham gia.

Ví dụ: Thực thể A gửi một tài liệu X cho thực thể B, sử dụng một cơ chế xác

thực nào đó, cơ chế này mới chỉ đảm bảo chỉ có thực thể A và thực thể B dùng

chung một khoá bí mật K để tạo ra các mã xác thực từ thông tin gốc. Tuy nhiên, nếu thực thể B cố ý thay đổi nội dung của tài liệu X thành một tài liệu có nội dung mới Y khác với tài liệu X gốc, và với khóa bí mật K. Thực thể B hoàn toàn có thể tạo ra thông tin xác thực mới để gắn vào Y, làm cho nó trở thành một bản tin hợp lệ mặc dù thực chất đây không phải là bản tin do thực thể A tạo ra. Ngược lại, Thực thể A cũng có thể từ chối xác nhận việc nó đã gửi bản tin X cho thực thể B, vì với các cơ

chế xác thực như trên, thực thể B hoàn toàn có khả năng giả mạo thông tin đưa ra từ thực thể A.

Cũng như một chữ ký thông thường (chữ ký bằng tay), một chữ ký số phải

có đầy đủ các thuộc tính sau đây:

15

− Phải xác nhận chính xác người ký và ngày giờ phát sinh chữ ký. − Phải xác thực nội dung thông tin ngay tại thời điểm phát sinh chữ ký. − Phải có khả năng cho phép kiểm chứng bởi một người thứ 3 để giải quyết

các tranh chấp nếu có.

Như vậy, chức năng của chữ ký số bao gồm chức năng xác thực.

Các yêu cầu đối với chữ ký số:

− Là một chuỗi bit phát sinh từ khối thông tin gốc cần được xác nhận. − Chữ ký phải chứa thông tin nhận dạng riêng của người ký để tránh giả

mạo và tránh phủ nhận.

− Quy trình tạo ra chữ ký số và xác minh chữ ký số phải đơn giản, nhanh

chóng và thuận tiện, dễ sử dụng.

− Chữ ký không thể bị giả mạo bằng bất cứ cách nào. − Có thể sao chép một bản sao của chữ ký dành cho mục đích lưu trữ.

Hashing

Mã hóa

Mã băm

M

(SHA, MD5)

PR (Private Key)

Chữ ký số soos

h = H(M)

Thông tin gốc (bản rõ)

Hình 1.3: Định nghĩa chữ ký số

1.3.2 Quy trình tạo và kiểm tra chữ ký số

a) Quy trình tạo ra chữ ký số: Quy trình này được thực hiện bởi người gửi

- Tạo giá trị băm tài liệu cần gửi bằng MD5 hay SHA

- Chữ ký số của người gửi là kết quả mã hoá giá trị băm bằng khoá riêng

(Private key) của người gửi.

- Gửi thông điệp được gửi đi bao gồm tài liệu gốc và chữ ký người gửi

16

Hình 1.4: Sơ đồ tổng quát tạo chữ ký số

b) Quy trình kiểm tra chữ ký số

- Người nhận tạo giá trị băm cho tài liệu gốc trong thông điệp. Giá trị này

gọi là giá trị băm người nhận.

- Giải mã chữ ký người gửi bằng khoá công khai của người gửi, kết quả là

giá trị băm tài liệu của người gửi, gọi là giá trị băm người gửi. Chỉ người gửi nào có

khoá riêng tương ứng với khoá công khai của người nhận mới có thể tạo ra chữ ký

số. Do đó người nhận có thể xác minh được nguồn gốc người gửi.

- Nếu giá trị băm người gửi và người nhận trùng nhau, nghĩa là người nhận

đã nhận đúng đối tượng cần mong đợi. Ngược lại, người nhận đã nhận thông tin từ

đối tượng không mong đợi.

17

Hình 1.5: Sơ đồ tổng quát kiểm tra chữ ký số

Có thể tóm tắt các quy trình tạo chữ ký số và kiểm tra chữ ký số khi thực thể

A gửi một bản tin M đến thực thể B như sau:

1. Thực thể A tạo một chữ ký số: E (H(M), PRA)

2. Thực thể A gửi thông điệp đến thực thể B: (M, E(H(M), PRA)

3. Thực thể B nhận (M, E(H(M), PRA)

4. Giải mã, khôi phục giá trị băm người gửi:h= D[E(H(M), PRA)),PUA]

5. Tạo giá trị băm người nhận: h’ = H(M)

6. So sánh h và h’. Nếu hai thông tin này giống nhau, thì bản tin nhận được

xem như hợp lệ.

Hình 1.6: Sơ đồ tổng quát tạo và kiểm tra chữ ký số

18

1.3.3 Những vấn đề còn tồn tại của chữ ký số

Trên lý thuyết, mỗi bước trong quá trình tạo và kiểm tra chữ ký số là an toàn.

Tuy nhiên trên thực tế, còn nhiều trường hợp vẫn chưa an toàn, đó là:

- Cũng như việc sử dụng Password, khoá bí mật cũng phải được đảm bảo tuyệt

đối bí mật. Chỉ có chủ sở hữu của nó mới được biết. Nhưng nếu nó bị đánh cắp hay bị lộ

từ một tập tin trên máy bởi một Hacker thì người chủ thực sự của nó có thể bị giả mạo.

Khoá bí mật bị Hacker sử dụng theo ý đồ xấu.

- Bất kỳ người dùng nào sử dụng khoá công khai của một người sử dụng

khác, cần kiểm tra chữ ký số, phải có sự đảm bảo chắc chắn rằng họ đã có khoá

công khai tin tưởng và chính xác.

Làm thế nào để bạn biết chính xác được khoá công khai mà bạn nhận được

qua thư điện tử hoặc nhắn tin từ ngân hàng, đối tác, nhà cung cấp của bạn mà không

phải là từ một người nào đó có ý đồ lừa đảo? Để giải quyết vấn đề này, người ký

chữ ký số và người nhận có thể:

Hoặc là mỗi bên sẽ đăng ký một cặp khoá gồm khoá công khai và bí mật. Họ

sẽ giữ khoá bí mật của mình còn khoá công khai được nhập vào bản ghi của họ

trong tệp cơ sở dữ liệu được công bố công khai trên mạng. Mỗi người sử dụng khoá

bí mật để ký các tài liệu và người nhận dùng khoá công khai của người gửi để kiểm

tra chữ ký. Hoặc là hai bên cần tới bên thứ ba. Họ đề nghị bên thứ ba phát hành cho mỗi bên một cặp khoá. Khi một bên ký hợp đồng, bên kia có thể thông qua bên thứ

ba để kiểm tra khoá công khai có thật sự là của bên ký hợp đồng không. Vai trò của

bên thứ ba đảm bảo cho người nhận có khoá công khai chính xác của người gửi.

Sự can thiệp của bên thứ ba là cần thiết để xác lập lòng tin và sự an toàn

trong các giao dịch điện tử. CA cung cấp chứng nhận điện tử cho các bên tham gia

giao dịch. Nngoài ra CA còn có khả năng kiểm tra tính hợp lệ của các chứng thực

điện tử của các thực thể tham gia trong các giao dịch.

Một vấn đề khác nữa là pháp luật về chữ ký điện tử chưa được đặt dưới một chuẩn mực kỹ thuật. Hiện nay có tới hơn 12 phần mềm ứng dụng về chữ ký điện tử

trên thị trường. Tuy nhiên, bởi tốc độ và sự tiện lợi, một số lượng lớn các công ty vẫn sẵn sàng sử dụng chữ ký điện tử.

Như trên đã trình bày, mỗi một thực thể khi tham gia các giao dịch điện tử cần phải có đồng thời một cặp khoá mã công khai và khóa riêng (Public Key và Secret

Key). Một câu hỏi được đặt ra: Ai là người cung cấp cặp khoá mã ấy? Và dịch vụ chứng thực điện tử đã xuất hiện.

19

1.4 Cơ sở hạ tầng khóa công khai PKI [3]

1.4.1 Khái niệm Cơ sở hạ tầng khóa công khai PKI (Public Key Infrastructure) là một hệ thống hạ tầng bao gồm các thiết bị phần cứng, các hệ thống phần mềm, các chính sách, các thủ tục và con người.. cần thiết để tạo ra, quản lý, lưu trữ và phân phối các chứng thực khóa phục vụ cho mục đích là phổ biến khóa công khai của các thực thể thông tin.

Vai trò của PKI trong hệ thống là quản lý các chứng thực khóa một cách an

toàn và cung cấp nó cho user một cách hiệu quả nhất.

Mục tiêu của PKI là cung cấp một môi trường làm việc phối hợp, trong đó, thiết bị, phần mềm của nhiều nhà sản xuất khác nhau có thể cùng sử dụng chung một cấu trúc chứng thực khóa.

Đặc tính chung đối với tất cả các PKI: 1. Chứng thực (Certification):

Là quá trình gắn kết một giá trị khoá công khai với thông tin về một cá nhân, một tổ chức hay một thực thể, thậm chí với một thông tin nào đó, ví dụ như giấy phép hay giấy tờ tuỳ thân (Credential)

Quá trình xác thực sử dụng PKI, khi một CA cấp giấy chứng nhận (Certification) cho một thực thể và khi người sử dụng xác nhận sự hợp lệ của chứng thực, được gọi là thực thể xác thực. Mức độ mà người sử dụng tin tưởng vào các thông tin của chứng thực và sự hợp lệ của nó là cách để đánh giá tính chắc chắn của sự xác thực.

Một chứng thực có thể chứa các thông tin thực thể hay các thông tin phi thực thể. Khi là một chứng thực đặc tính, việc xác thực chứng thực đặc tính được gọi là xác thực đặc tính. Chứng thực chứa các thông tin phi thực thể, như là các giấy phép hay giấy tờ tuỳ thân được gọi là chứng thực thuộc tính (Attribute Certificate). Quá trình xác thực một chứng thực tin cậy gọi là xác thực tin cậy (Credential Authentication)

Việc một PKI sử dụng loại chứng thực thực thể hay chứng thực tin cậy hay

cả hai cũng là một đặc tính của cơ sở hạ tầng khoá công khai. 2. Xác nhận hợp lệ (Validation) là quá trình kiểm tra xem một chứng thực còn hợp lệ hay không. Thông tin trong một chứng thực có thể thay đổi theo thời gian. Một người sử dụng chứng thực số (Certificate User) cần phải đảm bảo rằng dữ liệu trong chứng thực là đúng, gọi là xác nhận hợp lệ chứng thực. Có hai phương pháp cơ bản để xác nhận hợp lệ chứng thực:

20

- Xác nhận trực tuyến (Online Validation): Người sử dụng có thể hỏi trực

tiếp tổ chức cấp phát CA về tính hợp lệ của chứng thực số khi sử dụng

- Xác nhận hợp lệ không trực tuyến (Offine Validation): CA có thể gia hạn thêm thời hạn hợp lệ của chứng thực – một bộ thời gian sẽ định nghĩa khoảng thời gian mà các thông tin chứa trong chứng thực được cho là hợp lệ (còn hiệu lực).

Cũng như các phương pháp xác nhận hợp lệ là các biện pháp thu hồi chứng thực số (Revocation). Thu hồi chứng thực là quá trình thông báo cho người sử dụng được biết khi thông tin trong chứng thực mất hiệu lực. Đặc biệt khi một chủ thể của khoá riêng bị lộ, hay thông tin định danh của một chứng thực thay đổi, ví dụ, chủ thể có một số điện thoại mới

Nếu một chứng thực được xác nhận hợp lệ trực tuyến với một CA, thì vấn đề thu hồi chứng thực cũng có thể thực hiện được, vì CA có thể dễ dàng thông báo một chứng chỉ đã hết hiệu lực.

Nếu không sử dụng được phương pháp trực tuyến, phương pháp sử dụng phổ biến là danh sách chứng thực thu hồi (CRL). Một CRL là một danh sách các chứng thực bị đã ký bị loại bỏ bởi CA theo khoảng thời gian nhất định. Người sử dụng cần phải kiểm tra danh sách CRL mới nhất trong quá trình xác thực để đảm bảo là chứng thực được sử dụng không bị loại bỏ.

Một trong những quan tâm chủ yếu với CRL, đó là trong khoảng thời gian khi một CA nhận được một lưu ý là một chứng thực nên được loại bỏ, đến khi CA công bố nó trong danh sách CRL tiếp theo, thì người sử dụng kiểm tra CRL hiện thời sẽ không biết được các thu hồi và sẽ cho rằng chứng thực vẫn còn hiệu lực. Được gọi là CRL Time Granularity Problem

Một quan tâm khác là kích thước của CRL. Một CA có thể xác thực cho rất nhiều chủ thể. Khi một CRL quá lớn sẽ rất khó cho người sử dụng xem xét vì băng thông hạn chế. Thêm nữa, do CRL được ký, chữ ký đó cần được kiểm tra trước khi CRL được dùng, và thời gian cần để kiểm tra chữ ký trên CRL lớn và xử lý các đầu vào có thể trở nên quan trọng.

Để khắc phục các vấn đề trên, cần sử dụng từng loại CRL riêng rẽ cho các lý do thu hồi chứng thực khác nhau và hoặc cho các chủ thể chứng thực khác nhau. Thí dụ, CA có thể đưa ra một CRL cho các thu hồi thông thường (chẳng hạn như thay đổi trong thông tin nhận dạng của chủ thể chứng thực) và CRL khác cho các thu hồi do bị lộ sự bảo mật. Tương tự, một CA có thể đưa ra một CRL cho các chủ thể người sử dụng đầu cuối và CRL khác cho các CA khác mà nó chứng thực. Các

21

phương pháp này có hiệu quả trong việc phân chia một CRL lớn thành các phần nhỏ hơn, nhưng vấn đề CRL Time Granularity Problem vẫn chưa giảm đáng kể

Một phương pháp khác được đưa ra để xử lý vấn đề này: delta-CRL. Delta- CRL là một danh sách của các thay đổi CRL (do CA tự ký ) xuất hiện kể từ khi CRL đầy đủ lần trước được đưa ra. Delta-CRL cho phép thông báo các thu hồi chứng thực được đưa ra thường xuyên hơn, và do đó sẽ làm giảm xác suất một chứng thực đã bị thu hồi được xác nhận hợp lệ nhầm. Delta-CRL còn giải quyết được vấn đề kích thước CRL. Một hệ thống xác nhận chứng thực có thể khởi đầu với một CRL đầy đủ, rồi chỉ cần xử lý với các delta-CRL khi chúng được đưa ra, cập nhật lại bản CRL đầy đủ của nó.

Phương pháp thu hồi và xác nhận hợp lệ trực tuyến vẫn còn rất mới. Trong khi có vẻ như phương pháp trực tuyến tránh được vấn đề quản lý CRL, các yêu cầu về dải thông và tốc độ xử lý vẫn còn chưa được xác định rõ. 1.4.2 Chức năng chủ yếu của PKI

Một hệ thống PKI nhằm giải quyết các vấn đề sau: 1. Authentication: Là các hoạt động kiểm tra tính xác thực của một thực thể trong giao dịch, liên quan đến kiểm tra tính đúng đắn một thực thể giao tiếp trên mạng. Một thực thể có thể là một người, một chương trình máy tính, hoặc một thiết bị phần cứng. Các hoạt động kiểm tra tính xác thực được đánh giá là quan trọng nhất trong các hoạt động của một phương thức bảo mật. Một hệ thống thông thường phải thực hiện kiểm tra tính xác thực của một thực thể khi thực thể đó được kết nối với hệ thống. Cơ chế kiểm tra tính xác thực của các phương thức bảo mật dựa vào 3 mô hình chính như sau:

- Cơ chế kiểm tra tính xác thực dựa vào mô hình những thông tin biết trước. Đối tượng cần kiểm tra phải cung cấp những thông tin mà chúng biết, ví dụ như Password, hoặc mã số thông số cá nhân PIN (Personal Information Number).

- Với cơ chế kiểm tra dựa vào mô hình những thông tin đã có, đối tượng kiểm tra cần phải thể hiện những thông tin mà chúng sở hữu, ví dụ như Private Key, hoặc số thẻ tín dụng.

- Với cơ chế kiểm tra dựa vào mô hình những thông tin xác định tính duy nhất, đối tượng cần kiểm tra có những thông tin để định danh tính duy nhất của mình, ví dụ thông qua giọng nói hoặc Fingerprint những thông tin đã có và những thông tin xác định tính duy nhất.

2. Confidential: đánh giá mức độ bảo mật, hay tính an toàn đối với mỗi phương thức bảo mật, mức độ có thể phục hồi dữ liệu từ những người không có

22

quyền đối với dữ liệu đó. Có thể bảo mật dữ liệu theo kiến trúc end-to-end hoặc link-by-link. Với mô hình end-to-end dữ liệu được bảo mật trong toàn bộ quá trình xử lý, lưu truyền trên mạng. Với mô hình link-by-link dữ liệu chỉ được bảo vệ trên các đường truyền vật lý.

3. Integrity: Tính toàn vẹn, hoạt động này đánh giá khả năng sửa đổi dữ liệu với dữ liệu nguyên thuỷ ban đầu, một phương thức bảo mật có tính toàn vẹn dữ liệu khi nó bảo đảm các dữ liệu mã hoá không thể bị thay đổi nội dung so với tài liệu gốc (khi đã được giải mã) và trong trường hợp những kẻ tấn công trên mạng sửa đổi nội dung dữ liệu đã mã hoá thì không thể khôi phục lại dạng ban đầu của dữ liệu.

4. Nonreputation: Tính không thể phủ nhận trong các giao dịch là phải xác định tính xác thực của chủ thể gây ra hành động có thực hiện bảo mật hay không (Ví dụ chữ ký điện tử sử dụng trong hệ thống Mail cho phép xác định chính xác đối tượng “ký” - Người gửi Message) 1.4.3 Các thành phần PKI Một cơ sở hạ tầng khoá công khai bao gồm: - User: là người sử dụng, một phần mềm hoặc một thiết bị tham gia vào quá trình trao đổi thông tin sử dụng mật mã khóa công khai. Mỗi thực thể có một cặp khóa, trong đó khóa công khai được phổ biến bởi PKI dưới dạng các chứng thực khóa, còn khóa bí mật do chính thực thể quản lý.

- Certificate Authority (CA): là thực thể tạo ra và cung cấp các chứng thực số cho người sử dụng đầu cuối. Chứng thực khóa từ các khóa công khai mà các thực thể đầu cuối ủy quyền cho phép nó phổ biến cùng với chữ ký số của chính CA tạo ra. Do vậy, CA là một thực thể được tin cậy

- Nhà quản lý đăng ký RA(Registration Authority): là một thành phần tùy chọn của PKI, đóng vai trò như người thẩm tra cho CA trước khi một chứng chỉ số được cấp phát tới người yêu cầu. Nó xử lý một số công việc quản lý nhằm giảm tải cho CA, chẳng hạn như đăng ký thực thể đầu cuối, kiểm chứng các thực thể đầu cuối, tạo ra các cặp khóa public-private, …

- Repository: Kho lưu trữ chứng thực khóa và cung cấp chứng thực khóa cho các thực thể đầu cuối khi có yêu cầu. Có nhiều cách để thực thể đầu cuối truy xuất các chứng thực khóa tại PKI: thông qua dịch vụ thư mục LDAP (X.500), thông qua FTP hoặc HTTP, …

23

Hình 1.7: Các thành phần cơ bản của một PKI

- Certificate revocation list (CRL) Issuer: Một chứng thực khóa khi đã được tạo ra và phổ biến thì không có nghĩa là nó sẽ được tồn tại vĩnh viễn. Sau một khoảng thời gian nhất định hoặc theo yêu cầu của thực thể đầu cuối, chứng thực khóa có thể bị thu hồi. CRL là danh sách các chứng thực khóa bị thu hồi, được tạo ra bởi CA hoặc ủy quyền cho CRL issuer. Như vậy, CRL issuer cũng là một thành phần tùy chọn của PKI.

1.4.4 Các thủ tục trong PKI - Đăng ký (Registration): là thủ tục mà thực thể đầu cuối phải thực hiện để

tham gia vào PKI lần đầu tiên.

- Khởi tạo (Initialization): Khởi tạo các thông tin của thực thể đầu cuối tại

CA, tạo ra cặp khóa Public/Private cho thực thể đầu cuối.

- Chứng thực (Certification): CA tạo ra chứng thực khóa cho thực thể đầu cuối, ứng với khóa công khai vừa được tạo ra ở giai đọan khởi tạo hoặc do thực thể đầu cuối cung cấp.

- Phục hồi khóa (Key Pair Recovery): cho phép phục hồi một khóa cũ trước đó. Thủ tục này thường được dùng trong trường hợp khóa mật mã vì một lý do nào đó không truy xuất được. Để khôi phục dữ liệu đã bị mật mã hoá, cần phải có thủ tục này để lấy lại khoá.

- Cập nhật khóa (Key Pair Update): Mỗi chứng thực khóa được tạo ra và tồn tại trong thời gian nhất định có hiệu lực. Sau khoảng thời gian này, chứng thực khóa sẽ bị thu hồi (Revoke). Thủ tục Key Pair Update có tác dụng gia hạn sự tồn tại của chứng thực khóa, cho phép một chứng thực khóa tiếp tục tồn tại sau khi đã hết thời gian hiệu lực.

24

- Yêu cầu thu hồi chứng thực về khóa (Revocation Request): Yêu cầu thu hồi các chứng thực khóa đã cấp, vì lý do khóa riêng bị lộ chẳng hạn. Thủ tục này cho phép một thực thể đầu cuối yêu cầu thu hồi một chứng thực khóa trong thời gian chưa hết hiệu lực.

1.4.5 Khái niệm chứng thực số Chứng thực số (Digital Certificate), còn được gọi là chứng nhận điện tử, là một tệp tin điện tử được đính kèm với một thông báo thư điện tử hoặc một chương trình được nhúng vào một trang Web nhằm kiểm tra tính xác thực của một người sử dụng hoặc một Website, dùng để xác minh danh tính một cá nhân, một máy chủ, một công ty... trên Internet. Chứng thực số do một tổ chức đứng ra cấp phát, chứng nhận được gọi là nhà cung cấp chứng thực số (Certificate Authority, viết tắt là CA). CA phải đảm bảo về độ tin cậy, chịu trách nhiệm về độ chính xác của chứng thực số mà nó cấp.

Khi một thực thể muốn có một chứng thực số, CA sẽ yêu cầu thực thể đó cung cấp bằng chứng nhận dạng thích hợp. Nếu đáp ứng theo yêu cầu, CA sẽ phát hành chứng thực, bao gồm các nội dung:

- Thông tin cá nhân: Là các thông tin của thực thể xin cấp chứng thực số, gồm: tên, quốc tịch, địa chỉ, điện thoại, email, tên tổ chức .v.v. Phần này giống như các thông tin trên chứng minh thư của mỗi người.

- Khoá công khai: Khoá công khai là một giá trị được nhà cung cấp chứng thực đưa ra như một khoá mã hoá, kết hợp cùng với một khoá riêng duy nhất được tạo ra từ khoá công khai để tạo thành cặp mã khoá bất đối xứng.

- Chữ ký số của CA cấp chứng chỉ: Còn gọi là chứng chỉ gốc. Đây là sự xác nhận của CA, bảo đảm tính chính xác và hợp lệ của chứng chỉ đã được cấp. Muốn kiểm tra một chứng chỉ số, trước tiên phải kiểm tra chữ ký số của CA có hợp lệ hay không. CA ký lên chứng thực và không cần giữ bí mật chứng thực đối với bất kỳ người nào nhận chứng thực.

Yêu cầu nhận dạng của các CA cũng khác nhau, các chứng thực được phân loại thành các lớp đảm bảo thấp, trung bình hoặc cao phụ thuộc phần lớn vào yêu cầu nhận dạng cần phải đáp ứng.

Chứng thực (Certificate) thực chất là quá trình kết hợp thông tin Public Key vài tên của thực thể để định danh tính duy nhất cho thực thể đó (khái niệm tên của thực thể có thể là tên của một Server, tên một cá nhân, tên một Object,…). Thực thể là những đối tượng cần định danh qua Certificate. Các tham số, thuộc tính của thực thể là những nội dung thông tin để định danh một thực thể duy nhất. Một thực thể

25

có thể là một cá nhân, một thiết bị phần cứng như Router, máy chủ, hay là một phần mềm,…Các thông số, thuộc tính định dạng một Certificate gọi là Certificate Subject. Chứng thực số có các lợi ích:

− Mã hoá: Khi người gửi đã mã hoá thông tin bằng khoá công khai thì người khác không thể giải mã. Đây là một tính năng rất quan trọng, giúp người sử dụng hoàn toàn tin cậy về khả năng bảo mật thông tin.

− Chống giả mạo: Khi gửi đi một tài liệu bản rõ có sử dụng chứng thực số, người

nhận sẽ kiểm tra được thông tin nhận được có bị thay đổi hay không.

− Xác thực: Khi gửi một thông tin kèm chứng thực số, người nhận sẽ xác

định rõ được danh tính của người gửi.

− Chống chối cãi nguồn gốc: Khi sử dụng một chứng thực số, người gửi và người nhận phải chịu trách nhiệm hoàn toàn về những thông tin mà chứng thực số đi kèm. Trong trường hợp chối cãi, CA cung cấp chứng thực số cho hai bên sẽ chịu trách nhiệm xác minh nguồn gốc thông tin, chứng tỏ nguồn gốc thông tin được gửi. − Chữ ký điện tử người gửi: Những tài liệu có thể gửi đi nhanh chóng qua Internet có thể bị đọc hay bị giả mạo trước khi đến người nhận. Bằng việc sử dụng chứng thực số cá nhân, người gửi có thể tạo thêm một chữ ký điện tử vào tài liệu như là một bằng chứng xác nhận. Chữ ký điện tử có các tính năng xác thực thông tin, toàn vẹn dữ liệu và chống chối bỏ nguồn gốc. 1.5 Một số thuật toán quản lý khóa [2] 1.5.1 Thuật toán trao đổi khoá Diffie -Hellman

Diffie-Hellman là một thuật toán dùng để trao đổi khóa đối xứng (Key Exchange), không dùng để mật mã hóa thông tin. Tuy nhiên, Deffie-Hellman lại có ích trong giai đoạn trao đổi khóa bí mật của các thuật toán mật mã đối xứng. Như trên đã trình bày, một trong những vấn đề quan trọng liên quan trực tiếp đến tính an toàn của các thuật toán mật mã đối xứng là vấn đề thống nhất khoá bí mật giữa các thực thể thông tin.

Thuật toán trao đổi khoá Diffie-Hellman dựa trên phép logarit rời rạc (Discrete log). Cho trước một số g và x = gk , tìm k, sao cho k = logg(x). Tuy nhiên, nếu cho trước g, p và (gk mod p), thì quá trình xác định k theo phương pháp logarit rời rạc. Việc tính logarit rời rạc nói chung rất phức tạp nhưng vẫn có thể thực hiện được.

Thuật toán Diffie-Hellman khá đơn giản như sau:

Gọi p là một số nguyên tố và g là một cơ số sinh (Generator) thoả điều kiện

với mọi x ∈ {1, 2, …, p-1}, tồn tại số n sao cho: x = gn mod p.

26

− Giá trị p và g được phổ biến công khai giữa thực thể trao đổi khoá − User A tạo ra một số bí mật Xa < p, tính Ya = (gXa mod p) và gửi cho B − User B tạo ra số bí mật Xb < p, tính Yb = (gb mod p) và gửi lại cho A − Dựa trên thông tin từ A, User B xác định được khoá bí mật dùng cho

phiên làm việc bằng cách tính giá trị (gXa mod p)Xb = (gXaXb mod p)

− Tương tự, User A cũng xác định được khoá bí mật này bằng cách tính giá

trị (gXb mod p)Xa = (gXaXb mod p)

− Giả sử trong quá trình trao đổi các giá trị (gXa mod p) và (gXb mod p), một người thứ 3 nào nó bắt được thông tin này thì cũng rất khó xác định được a và b vì độ phức tạp của phép toán logarit rời rạc là rất cao.

User A

User B

Chọn số bí mật Xa < p Tính Ya = (gXa mod p) và gửi cho B Tính K = (Yb)Xa mod p

Chọn số bí mật Xb < p Tính Yb = (gXb mod p) và gửi cho A Tính K = (Ya)Xb mod p

Hình 1.8: Thuật toán trao đổi khoá Diffie-Hellman

Ví dụ: Cho p = 353 và g = 3, Giả sử, User A chọn giá trị bí mật Xa = 97 và

User B chọn giá trị bí mật Xb = 233. Khi đó:

User A tính được Ya = (397 mod 353) = 40 và gửi cho B. User B tính được Yb = (3233 mod 353) = 248 và gửi cho A. User A tính được khoá bí mật K = (Yb)Xa mod 353=24897mod 353= 160 User B tính được khoá bí mật K =(Ya)Xb mod 353= 4097 mod 353 = 160

1.5.2 Đánh giá độ an toàn thuật toán trao đổi khoá Diffie -Hellman

Tính an toàn của Diffie-Hellman dựa trên độ phức tạp của phép toán logarit rời rạc. Nói chung, việc xác định các giá trị Xa, Xb từ các giá trị p, g, Ya và Yb là không thể thực hiện được trên các số nguyên đủ lớn. Tuy nhiên, thuật toán này không ngăn chặn được các tấn công theo phương thức xen giữa Man-In-The-Middle (MITM):

27

- Thực hiện tấn công MITM trên kết nối User A - User B, User C chọn hai số nguyên XC1 và XC2 thoảXC1 < p và XC2 < p, sau đó cũng tính hai giá trị tương ứng YC1 = (gXc1 mod p) và YC2 = (gXc2 mod p)

− Khi User A gửi Ya cho User B, User C sẽ chặn lấy Ya, đồng thời mạo danh A gửi YC1 cho B. User B xác định khoá K1 dựa trên YC1, và gửi Yb lại cho A. User C chặn Yb và mạo danh B để gửi cho A giá trị YC2.

− User A xác định khoá K2 dựa trên YC2. Bắt đầu từ đây, C chặn bắt và thay

đổi bằng cách sử dụng cặp khoá K1 và K2.

Như vậy, thuật toán Diffie-Hellman không giải quyết được vấn đề trên, vì không có cơ chế xác thực giữa các thực thể trao đổi khoá. Điều này sẽ được khắc phục bằng cách sử dụng kết hợp với các thuật toán xác thực như sẽ trình bày ở phần kế tiếp trong chương sau.

Ngoài hai thuật toán RSA và Diffie-Hellman, một số thuật toán khác cũng được phát triển dựa trên nguyên lý sử dụng một cặp khoá công khai và bí mật. Elliptic-Curve Cryptography (ECC) là một giải thuật mới đang được thử nghiệm và hứa hẹn nhiều ưu điểm so với RSA như độ phức tạp tính toán giảm trong khi tính an toàn vẫn được đảm bảo. ECC thích hợp với các ứng dụng chạy trên các thiết bị có năng lực xử lý hạn chế chẳng hạn như các thiết bị nhúng (Embded devices). 1.5.3 Quản lý khoá công khai trong mật mã bất đối xứng

Trong kỹ thuật mật mã bất đối xứng, khoá riêng của mỗi thực thể được chính thực thể đó quản lý mà không cần phải chia sẻ cho ai, tuy nhiên cơ chế nào được dùng để phổ biến khóa công khai một cách an toàn và hiệu quả?

Các cơ chế khác nhau có thể dùng để phổ biến khóa công khai bao gồm: − Phổ biến công khai trên các diễn đàn công cộng: người sử dụng thực hiện việc này bằng cách gửi các thông báo kèm theo khóa công khai của mình đến các website hoặc diễn đàn công cộng trên mạng Internet. Phương pháp này đơn giản nhưng có nhược điểm là khóa dễ bị giả mạo. Một người A có thể đưa khóa công khai của mình lên mạng nhưng thông báo rằng đó là khóa của người B, bằng cách đó, A có thể đọc được những thông tin bí mật mà người khác gửi cho B.

− Sử dụng danh bạ khóa công khai (Public Key Directory): với danh bạ này, những người dùng nào muốn phổ biến khóa của mình thì phải đăng ký với nhà xuất bản và để tránh việc giả mạo, nhà xuất bản phải áp dụng một cơ chế kiểm duyệt an toàn nào đó đối với người đăng ký.

28

− Phương pháp này an toàn hơn cách mà mỗi cá nhân tự phổ biết khóa của mình. Tuy nhiên, nó cũng có khả năng bị giả mạo khi khóa bí mật của nhà xuất bản

bị lộ, kẻ tấn công có thể thay đổi các thông tin mà người sử dụng đã đăng ký lên đó.

− Phương pháp sử dụng danh bạ công cộng có một điểm yếu khác đó là mọi người dùng muốn liên lạc với một người khác cần đến khoá công khai thì phải liên

lạc với nhà xuất bản để được cung cấp, điều này đặt nhà xuất bản vào trạng thái có

nguy cơ quá tải bất cứ lúc nào, hơn nữa đây chính là điểm thắt cổ chai của các giao

dịch trên mạng.

Chứng thực khóa công khai (Public Key Certificate hay gọi tắt là Certificate

hay chứng thực khóa) là một cơ chế phổ biến khóa công khai trong đó mỗi thực thể

tự phổ biến khóa của mình bằng bất cứ phương tiện gì nhưng vẫn đảm bảo được

tính xác thực của khóa.

Chứng thực khóa công khai là một tổ hợp gồm có khóa công khai của một

thực thể, nhận dạng của thực thể đó và chữ ký số (digital signature) xác nhận của

một thực thể thứ 3, thực thể thứ 3 này là một tổ chức được tintưởng trong cộng

đồng (ví dụ như cơ quan nhà nước hoặc các tổ chức tài chính). Các đặc trưng của cơ

chế này bao gồm:

• Mỗi thực thể đều có thể đọc các chứng thực khóa để biết được khóa công

khai cũng như nhận diện chủ sở hữu của khóa đó.

• Mỗi thực thể đều có thể xác thực thông tin trong chứng thực khóa là chính

xác nhờ vào chữ ký của một thực thể được tin cậy thứ 3.

• Chỉ có người chứng thực (Certificate Authority hay CA) mới có quyền tạo

ra và cập nhật các chứng thực khóa.

Quá trình tạo ra và phân phối chứng thực khóa diễn ra như sau :

1) Để tạo chứng thực khóa, thực thể A gửi yêu cầu đến cơ quan chứng thực

CA (Certificate Authority). Trong yêu cầu có chứa khoá công khai của A (PUA). Để tránh các tình huống giả mạo CA yêu cầu cung cấp chứng thực gửi từ các thực thể

đầu cuối phải được gửi đến CA bằng một kênh bảo mật, trên đó có áp dụng các cơ

chế xác thực chặt chẽ.

2) CA tạo ra chứng thực khóa cho A bằng cách mã hoá khối thông tin bao

gồm: nhận dạng của thực thể A (IDA), khoá công khai của A (PUA) và thời điểm

thực hiện việc cấp chứng thực, bằng khoá riêng của CA (PRCA).

29

Như vậy, thực thể A đã tạo được chứng thực khóa cho mình (CA). Tương tự

như vậy, thực thể B cũng yêu cầu CA cung cấp chứng thực khóa cho nó(CB).

Để bắt đầu trao đổi thông tin với nhau sử dụng mật mã bất đối xứng, hai thực

thể A và B trao đổi chứng thực khóa cho nhau để thực thể này nhận được khoá công

khai của thực thể kia.

Với việc nhờ một thực thể tin cậy thứ 3 làm trung gian để tạo ra chứng thực

khóa, khoá công khai có thể được phân phối một cách an toàn mà không bị giả mạo.

Một trong những cơ chế được sử dụng rộng rãi để tạo ra các chứng thực khóa công

khai là chuẩn X.509. Chuẩn này được dùng trong nhiều dịch vụ và giao thức bảo

mật như IPSec, SSL, S/MIME, SET, …

1.5.4 Sử dụng mật mã bất đối xứng để trao đổi khóa bí mật

Trong kỹ thuật mật mã đối xứng, cả hai thực thể thông tin phải dùng chung

một khóa bí mật. Vấn đề là làm thế nào để trao đổi khóa bí mật giữa hai thực thể

này. Thuật toán trao đổi khóa Diffie-Hellman được trình bày trong phần mã hóa bất

đối xứng là một thuật toán an toàn, cho phép hai thực thể trao đổi khóa bí mật mà

một thực thể thứ 3 không lấy cắp được. Tuy nhiên, hạn chế của Diffie-Hellman là

không có tính xác thực, nghĩa là một thực thể sẽ không thể biết chắc chắn rằng khóa

mình nhận được đúng là khóa của thực thể mà mình đang muốn trao đổi thông tin

hay không. Do vậy, trong thực tế, Diffie-Hellman thường được dùng phối hợp với

một cơ chế xác thực đầu cuối (peer authentication).

(1) E([N1 + IDA], PUB)

(2) E([N1 + N2], PUA)

(3) E(N2, PUB)

(4) E(E(K, PRA), PUB)

Hình 1.9: Dùng mật mã bất đối xứng để trao đổi khoá

30

Dùng khóa công khai để trao đổi khóa bí mật của mã hóa đối xứng là một

cách hiệu quả có thể giải quyết được vấn đề trên đây. Một thực thể A (thực thể khởi

tạo - Initiator) muốn trao đổi khóa bí mật với một thể B (thực thể đáp ứng -

responder) có thể thực hiện thủ tục trao đổi khoá như sau:

1) Thực thể A dùng khoá công khai của B (PUB) để mã hoá một bản tin bản

có chứa nhận dạng của A (IDA) và một giá trị ngẫu nhiên N1 (nonce) để nhận diện

giao tác đang thực hiện.

A → B: E([N1 + IDA], PUB)

2) Thực thể B gửi lại cho A một bản tin chứa giá trị ngẫu nhiên N2 do B tạo

ra, cùng với số N1 nhận được từ A. Toàn bộ bản tin được mã hoá sử dụng khoá

công khai của A (PUA).

B → A: E([N1 + N2], PUA)

3) Một lần nữa, A gửi lại cho B một bản tin chứa giá trị N2 được mã hoá

bằng khoá công khai của A (PUA).

A → B: E(N2, PUB)

4) Thực thể A chọn khoá bí mật K thuật toán mã hoá đối xứng, mã hoá nó

bằng chính khoá riêng của A (PRA), tiếp tục mã hoá một lần nữa bằng khoá công

khai của B (PUB),gửi kết quả cho B.B sẽ nhận được khoá bí mật mà A tạo ra một

cách an toàn.

A → B: E(E(K, PRA), PUB)

31

Kết luận chương

Giải pháp sử dụng chứng thực số là sự kết hợp nhiều biện pháp bảo mật đảm

bảo được an toàn thông tin giao dịch trên mạng Internet. Đây là một nền tảng công

nghệ mang tính tiêu chuẩn trên toàn cầu và cũng là giải pháp rất cần thiết đối với

một quốc gia đang trong quá trình phát triển các ứng dụng giao dịch điện tử trong

nhiều lĩnh vực như ở Việt Nam.

Chương này của luận văn đã trình bày một cách cơ bản của kỹ thuật mật mã

bất đối xứng, kỹ thuật hàm băm, chữ ký số và cơ sở hạ tầng khóa công khai PKI. Là

những nền tảng cơ bản để giải quyết những vấn đề xác thực nội dung và nguồn gốc

thông tin. Kỹ thuật mật mã khóa đối xứng và bất đối xứng mới chỉ ngăn chặn các

hành vi vi phạm tính bảo mật và tính toàn vẹn của thông tin và nguồn gốc thông tin.

Chữ ký số được xây dựng dựa trên kỹ thuật hàm băm một chiều và mật mã khóa

công khai, cũng mới chỉ giúp cho các thực thể xác minh được nguồn gốc thông tin,

chứ không ngăn chặn được các hành vi từ chối trách nhiệm pháp lý trong giao dịch.

Vì vậy vấn đề bảo đảm an toàn cho các hệ thống thông tin là một trong

những vấn đề quan trọng và bức thiết, trở thành một mục tiêu phải đặt lên hàng đầu

trong quá trình thiết kế, xây dựng và cài đặt hệ thống. Để có thể đánh giá một hệ

thống thông tin an toàn và bảo mật phải dựa trên các tiêu chí: tính bí mật, tính toàn

vẹn, tính xác thực và tính không chối cãi. Phải thể hiện qua mối quan hệ giữa người

sử dụng với hệ thống và tài nguyên thông tin. Các quan hệ này được đảm bảo bằng

các phương thức xác thực (Authentication), cấp phép sử dụng (Authorization) và từ

chối phục vụ (Repudiation).

32

CHƯƠNG 2

KỸ THUẬT XÁC THỰC

THÔNG TIN TRONG GIAO DỊCH ĐIỆN TỬ

2.1 Giới thiệu chung xác thực thông tin

Vấn đề bảo đảm an toàn cho các hệ thống thông tin là một trong những vấn đề quan trọng không thể thiếu trong quá trình thiết kế, cài đặt, vận hành và bảo dưỡng các hệ thống thông tin. Nhu cầu bảo vệ thông tin ngày càng trở nên bức thiết. Bảo vệ thông tin là bảo vệ tính bí mật của thông tin, tính toàn vẹn của thông tin, tính xác thực và không chối bỏ thông tin

An toàn thông tin có thể hiểu là cách thức bảo vệ thông tin nhằm đảm bảo an toàn cho hoạt động và cho tất cả các thành phần của mạng bao gồm dữ liệu, thiết bị, cơ sở hạ tầng mạng và đảm bảo mọi tài nguyên mạng được sử dụng tương ứng với một chính sách hoạt động được ấn định và với chỉ những người có thẩm quyền tương ứng.

Xác thực (Authentification) là kỹ thuật kiểm tra tính hợp pháp của một thực thể giao tiếp trên mạng được quyền sử dụng tài nguyên của mạng. Một thực thể có thể là một người sử dụng, một chương trình ứng dụng, hoặc một thiết bị phần cứng. Các hoạt động kiểm tra tính xác thực được đánh giá là quan trọng nhất trong các hoạt động của một phương thức bảo mật. Một hệ thống thông thường phải thực hiện kiểm tra tính xác thực của một thực thể trước khi thực thể đó thực hiện kết nối với hệ thống. Việc xác thực thường kết hợp với sự cho phép sử dụng hay từ chối phục vụ. Xác thực thông thường bằng mật khẩu (Password), dấu vân tay hay các dấu hiệu đặc trưng. Nói cách khác, xác thực là sự cho phép xác định người sử dụng được quyền thực hiện một hành động nào đó như đọc/ghi một tệp, hay sử dụng tài nguyên phần mềm, sử dụng các tài nguyên phần cứng, sử dụng các dịch vụ mạng... Người sử dụng phải qua giai đoạn xác thực bằng mật khẩu trước khi được phép khai thác thông tin hay một tài nguyên nào đó trên mạng. Cơ chế kiểm tra tính xác thực của các phương thức bảo mật dựa vào 3 mô hình chính sau:

- Đối tượng cần kiểm tra cần phải cung cấp những thông tin trước, ví dụ như

Password, hoặc mã số PIN (PersonalInformation Number).

- Kiểm tra dựa vào mô hình những thông tin đã có, đối tượng kiểm tra cần phải thể hiện những thông tin mà chúng sở hữu, ví dụ như Private Key, hoặc số thẻ tín dụng.

33

- Kiểm tra dựa vào mô hình những thông tin xác định tính duy nhất, đối tượng kiểm tra cần phải có những thông tin để định danh tính duy nhất của mình, ví dụ như thông qua giọng nói, dấu vân tay, chữ ký ...

Không thể chối cãi (Nonreputation) nghĩa là trong quá trình giao lưu tin tức trên mạng, xác nhận tính chân thực của những thực thể tham gia. Tức là tất cả các thực thể tham gia không thể chối bỏ hoặc phủ nhận những thao tác và cam kết đã được thực hiện.

Các hình thức tấn công trực tiếp, nghe trộm, giả mạo, chối cãi nguồn gốc, truy nhập bất hợp pháp… Đặc biệt, các hình thức tấn công từ chối dịch vụ DoS (Denial of Service) và DDoS (Distributed Denial of Service) được đánh giá là các nguy cơ lớn nhất đối với sự an toàn của các hệ thống thông tin, gây ra những thiệt hại lớn và đặc biệt là chưa có giải pháp ngăn chặn hữu hiệu. Các hình thức tấn công đều nhằm vào tính khả dụng của hệ thống.

Một trong những giải pháp cần thiết để phòng, tránh các nguy cơ tấn công mạng là các giải pháp xác thực, kiểm tra các thông tin nhận được có đến từ một nguồn hợp lệ và có bị sửa đổi hay không. Mặt khác xác thực cũng có thể kiểm tra trình tự và tính đúng lúc của các thông tin nhận được.

Ngoài việc chứng minh người sử dụng, các hệ thống xác thực cũng được sử dụng để xác định những thông tin nào có thể được truy nhập; ví dụ như cơ sở dữ liệu tài nguyên hoặc cơ sở dữ liệu tài chính của một tổ chức.

Có nhiều giao thức xác thực đã được đề xuất như: xác thực thông qua yêu cầu và phản hồi, xác thực bằng hỏi đáp, xác thực Deffie-Hellman, xác thực dùng một trung tâm phân phối khoá, xác thực Need-Schoede…các giao thức xác thực này đã để lộ nhiều điểm yếu, đó là thông tin trao đổi khoá giữa hai người sử dụng các giao thức này có thể bị bên thứ ba xen vào, vì vậy vấn đề an toàn của thông tin khi thực hiện các giao dịch cũng cần phải được xem xét. Giải pháp xác thực dùng chứng chỉ số (Digital Certificate) và chữ ký điện tử (Digital Signature) được đề xuất nhằm đảm bảo an toàn cho các thông tin giao dịch, nó giải quyết được các vấn đề bảo mật dữ liệu, định danh được người gửi, tính toàn vẹn của dữ liệu và không bị giả mạo. 2.2 Các kỹ thuật xác thực thông tin [2]

Xác thực thông tin (Message Authentication) là một cơ chế được ứng dụng

trong xử lý thông tin với mục đích:

− Đảm bảo nội dung thông tin trao đổi giữa các thực thể là chính xác, không bị thêm, sửa, xóa hay phát lại. Nói cách khác, đảm bảo tính toàn vẹn về nội dung

34

không bị vi phạm.

− Đảm bảo đối tượng tạo ra thông tin, tạo ra nguồn gốc thông tin đúng là đối tượng hợp lệ đã được khai báo. Nói cách khác, đảm bảo tính toàn vẹn về nguồn gốc thông tin.

Để thực hiện xác thực thông tin, về nguyên tắc có các phương pháp sau: − Sử dụng các thuật toán mật mã khóa đối xứng và bất đối xứng: − Sử dụng mã xác thực MAC − Xác thực sử dụng các hàm băm bảo mật − Xác thực thông tin dùng chữ ký điện tử − Xác thực thông tin dùng chữ ký điện tử và chứng thực điện tử − Mật khẩu − Các giao thức xác thực trong mô hình điểm - điểm − Xác thực trong các hệ thống phân tán − Giao thức xác thực Kerberos 4 − Giao thức xác thực Kerberos 5

2.2.1 Sử dụng các thuật toán mật mã khóa đối xứng

Để xác thực thông tin, nguyên tắc của mật mã là chỉ có những đối tượng hợp lệ mới khôi phục được thông tin gốc từ thông tin mật. Có thể sử dụng nguyên tắc này để xác thực thông tin như sau:

Theo quy ước, chỉ có nơi gửi thông tin và nơi nhận thông tin hợp lệ mới có khóa bí mật K. Do đó chỉ nơi nhận thông tin hợp lệ mới có khả năng tạo ra khối thông tin mật hợp lệ từ khối thông tin gốc M. Tương tự, chỉ có nơi nhận thông tin hợp lệ mới có khả năng giải mã được thông tin mật để ra thông tin gốc M. Tất cả các cố gắng khác đều cho ra kết quả sai.

Như vậy: − Chỉ có người nhận hợp lệ mới nhận được thông điệp từ người gửi và − Chỉ có người gửi hợp lệ mới gửi được thông điệp đến người nhận

Nơi nhận

Nơi gửi

C

Hình 2.1: Xác thực thông tin dùng mật mã đối xứng

35

Sử dụng kỹ thuật mật mã khóa bất đối xứng để trao đổi khóa bí mật trên kênh an toàn, bằng cách mã hóa khóa bí mật (đối xứng) sử dụng khóa công khai của người gửi PUB

• Bên gửi: [E(K, PUB), E(M, K)] • Bên nhận: − Giải mã: D[E(K, PUB), PRB] = K − Giải mã: D[E(M, K), K] = M

Nơi nhận

Nơi gửi

K

C

K

E

D

E(K, PUB)

PUB

PRB

E: thuật toán mật mã D: Thuật toán giải mã K: Khóa bí mật dùng chung giữa bên gửi và bên nhận

M: thông tin gốc C: Thông tin mật PRB: Khóa bí mật của bên nhận. PUB: Khóa công khai của bên nhận

Hình 2.2: Sử dụng khóa bất đối xứng để trao đổi khóa bí mật

2.2.2 Sử dụng các thuật toán mật mã khóa bất đối xứng

Nơi nhận

M

C

D

E

Trường hợp sử dụng mật mã khóa bất đối xứng để xác thực thông tin, nơi gửi thông tin thực hiện mã hóa bằng khóa bí mật PR bên gửi thay vì dùng khóa công khai PU. Khối thông tin mật tạo ra có thể được giải mã bởi bất kỳ đối tượng nào biết khóa công khai của thực thể gửi. Tuy nhiên, nếu quá trình giải mã thành công, đối tượng nhận thông tin có thể chắc chắn rằng thông tin nhận được là đúng và chính đối tượng gửi hợp lệ đã gửi thông tin này, bởi vì chỉ có đối tượng đó mới có khóa riêng PR. Nơi gửi M

E(M, PRB)

PRA

PUA

D: Thuật toán giải mã E:Thuật toán mật mã K: Khóa bí mật dùng chung giữa bên gửi và bên nhận PUA: Khóa công khai của bên gửi

M: Thông tin gốc C: Thông tin mật PRA: Khóa bí mật của bên gửi. PRB: Khóa bí mật của bên nhận. PUB: Khóa công khai của bên nhận

Hình 2.3: Xác thực thông tin dùng mật mã bất đối xứng

36

• Bên gửi: E(M, PRA) • Bên nhận: − Giải mã: D[E(K, PRA), PUA] = M

2.2.3 Sử dụng mã xác thực MAC

Mã xác thực MAC (Message Authentication Code) được sinh ra từ tổ hợp

gồm một khối thông tin gốc có độ dài bất kỳ và một khóa bí mật. Kích thước của

MAC là cố định, không phụ thuộc vào kích thước của khối dữ liệu gốc và thường

nhỏ hơn dữ liệu gốc. Nơi gửi sẽ gửi giá trị MAC kèm cùng với thông tin gốc. Phía

nhận sau khi nhận được thông tin gốc cùng với giá trị MAC gửi kèm sẽ thực hiện

thao tác tạo ra giá trị MAC mới từ thông tin gốc cùng với khóa bí mật đã thống nhất

giữa hai bên. Nếu giá trị MAC vừa tạo như giá trị MAC nhận được từ phía gửi, phía

nhận có thể chắc chắn rằng thông tin gốc không bị thay đổi trong quá trình truyền

Việc dùng MAC để xác thực thông tin dựa vào hai cơ sở:

− Ứng với một khối thông tin gốc M và một khóa bí mật K, hàm C chỉ tạo ra

duy nhất một mã xác thực MAC.

− Chỉ có phía gửi và phía nhận hợp lệ mới được biết khóa K. Có hai kỹ thuật tạo ra mã xác thực MAC: Kỹ thuật dùng cơ chế mật mã khối

(Cipher Block Chaining), gọi là CMAC hay CBC-MAC và kỹ thuật dựa trên các

hàm băm bảo mật, gọi là HMAC.

Mã xác thực MAC được ứng dụng trong các trường hợp thông tin chỉ yêu

cầu đảm bảo tính xác thực mà không cần đảm bảo tính bí mật.

Nơi gửi

Nơi nhận

M

So sánh

Mã xác thực (MAC)

M: thông tin gốc K: Khóa bí mật dùng chung giữa bên gửi và bên nhận C: Hàm tạo mã xác thực | |: Nối mã xác thực vào thông tin gốc

Hình 2.4: Xác thực thông tin dùng MAC

• Bên gửi: − Mã hóa: MACA = E(M, K)

37

− Mã hóa: E(K, PUB) − Truyền: (M, E(M, K), E(K, PUB)) • Bên nhận: − Giải mã: D[E(K, PUB), PRB] = K − Giải mã: D[E(M, K)] = MACB − So sánh: MACA = MACB ?

2.2.4 Sử dụng các hàm băm bảo mật

Sử dụng các hàm băm bảo mật (Secure Hash Function) cũng như mã xác

thực MAC, hàm băm cũng tạo ra một khối thông tin ngắn có độ dài xác định gọi là

mã băm (Hash Code) từ một khối thông tin gốc có độ dài bất kỳ. Tuy nhiên, khác

với MAC, hàm băm chỉ dựa vào thông tin gốc để tạo ra mã băm mà không dùng

thêm bất kỳ khóa bí mật nào. Do vậy, để có thể sử dụng như một cơ chế xác thực

thông tin, hàm băm phải được dùng kèm với một thuật toán mật mã nào đó (đối

xứng hoặc bất đối xứng).

Hình sau trình bày một ứng dụng điển hình của hàm băm xác thực thông tin.

Theo cơ chế này, mã băm sau khi được tạo ra sẽ được mã hóa bằng một thuật toán

mật mã đối xứng với khóa bí mật K chỉ có bên gửi và bên nhận biết. Đoạn mã băm

đã được mã hóa và được gửi đi kèm với thông tin gốc và quá trình kiểm tra ở phía

nhận cũng được tiến hành theo trình tự ngược lại, tức là giải mã đoạn mã băm bằng

khóa bí mật, sau đó tạo ra mã băm mới từ thông tin gốc và so sánh hai đoạn mã

băm.

Nơi gửi

Nơi nhận

M’

M’

So sánh

Mã băm đã được mã hóa

M’

Hình 2.5: Xác thực thông tin dùng hàm băm

Sử dụng khóa đối xứng, bất đối xứng để mã hóa tài liệu và trao đổi khóa bí

mật K trên kênh an toàn thực hiện trao đổi thông tin

38

Nơi nhận

K

K

Nơi gửi

E

M

M

D

E(M, K)

E(K, PRB)

K

K

D

E

PRB

PUB

E:Thuật toán mật mã D: Thuật toán giải mã K: Khóa bí mật dùng chung giữa bên gửi và bên nhận

M: Thông tin gốc C: Thông tin mật PRB: Khóa bí mật của bên nhận. PUB: Khóa công khai của bên nhận M’: Thông tin cá nhân

Hình 2.6: Xác thực dùng hàm băm và mật mã bất đối xứng

• Bên gửi: − Băm: hA = H(M’, K) − Mã hóa: E( hA, K) − Mã hóa: E( M, K) − Mã hóa: E(K, PUB) − Truyền: (M’, E( hA, K), E( M, K), E(K, PUB)) • Bên nhận: − Giải mã: K = D[E(K, PUB),PRB] − Giải mã: hA= D[E( hA, K), K] − Băm: hB = H(M’, K) − So sánh: hA = hB ? − Giải mã: M = D[E( M, K), K] Có nhiều cách áp dụng các thuật toán mật mã vào hàm băm để xác thực thông tin: Sử dụng kỹ thuật mật mã khóa đối xứng hoặc khóa bất đối xứng. Hoặc chỉ mã hóa giá trị băm hoặc mã hóa cả thông tin gốc và giá trị băm, có thể tổ hợp nhiều cách trên lại với nhau.

Ngoài các ứng dụng xác thực thông tin, các hàm băm còn được sử dụng

trong nhiều ứng dụng khác nhau. 2.2.5 Xác thực thông tin dùng chữ ký điện tử

Sử dụng các hàm băm bảo mật (Secure Hash Function) chữ ký số để xác thực nguồn gốc thông tin. Hàm băm dựa vào thông tin gốc để tạo ra mã băm và dùng khóa riêng của người gửi mã hóa giá trị băm này. Vì vậy, để có thể sử dụng cơ

39

chế xác thực thông tin, hàm băm phải được dùng kèm với một thuật toán mật mã bất đối xứng RSA.

Nơi gửi

Nơi nhận

M’

M’

Mã băm đã được mã hóa

M’

Chữ ký số

Hình 2.7: Xác thực thông tin dùng chữ ký số

Sử dụng khóa bí mật K (đối xứng) để mã hóa tài liệu M và sử dụng khóa

công khai của người nhận PUB (bất đối xứng) để mã hóa khóa bí mật K

• Bên gửi: − Tạo chữ ký số: E [H(M’), PRA] − Mã hóa tài liệu: E( M, K) − Mã hóa: E(K, PUB) − Truyền: (M’, E [H(M’), PRA], E( M, K), E(K, PUB)) • Bên nhận: − Giải mã: K = D[E(K, PUB),PRB] − Giải mã: hA= D[E[H(M’), PRA], PUA] − Băm: hB = H(M’) − So sánh: hA = hB ? − Giải mã: M = D[E( M, K), K]

Nơi gửi

K

Nơi nhận

K

E

M

D

E(M, K)

M

E(K, PRB)

K

D

E

K

PUB

PRB

E:Thuật toán mật mã D: Thuật toán giải mã K: Khóa bí mật dùng chung giữa bên gửi và bên nhận

M: Thông tin gốc C: Thông tin mật PRB: Khóa bí mật của bên nhận. PUB: Khóa công khai của bên nhận M’: Thông tin cá nhân

Hình 2.8: Xác thực thông tin dùng chữ ký số

40

2.2.6 Xác thực thông tin dùng chữ ký điện tử và chứng thực điện tử

Quá trình xác thực dùng chứng chỉ số và chữ ký điện tử như sau:

a)Thiết lập phiên làm việc:

− Trước tiên, User truy nhập khoá riêng của mình cho Client

− Client của người sử dụng truy tìm khoá riêng và sử dụng nó để tạo chữ ký

điện tử cho User

− Client gửi chứng thực sốvà chữ ký điện tửcủa User tới Server

− Server sử dụng chứng thực số và chữ ký số đã nhận xác thực định danh

User có đúng hay không

− Nếu đúng, Server xác thực quyền truy nhập cho User và cho phép User

bắt đầu phiên làm việc giữa Client và Server.

Œ User enters private-key password

Ž Client sends certificate and digital signature across network.

 Server authorizes access for  Server user authenticated identity. certificate and digital signature to authenticate the user’s identity.

 Client retrieves private key and uses it to create digital signature

Web server

Hình 2.9: Minh hoạ xác thực sử dụng chứng chỉ số và chữ ký điện tử

b) Quá trình xin cấp một chứng chỉ số

1. User: Tạo một cặp khoá PRU và PUU(Private và Public Key).

2. Gửi khoá công khai của User PUU và một số thông tin định danh khác – M, tạo

thành một chứng thực số (Certificate) đến CA. Như vậy có thể hiểu một chứng thực bao

gồm: Certificate = {PUUvà M}. Thông tin định danh cá nhân thường là họ tên, số điện

thoại, địa chỉ email ... Thông tin định danh của cá nhân hay của một Website thường là

các định danh tài nguyên URL của site đó..

41

3. CA sẽ băm H(M + PUU),mã hoá bằng khoá riêng của CA (CA Private

key) - PRCA tạo thành chữ ký số của CA, đính vào chứng chỉ số (Certificate) tạo

thành một chứng chỉ số đã ký SC (Signed Certificate):E[H(M+PUU),PRCA]

4. Trả chứng chỉ số đã ký SC về cho người dùng.

Certifying Authority

PUU (Public Key)

User

Certificat Request

PRCA

Signed Certificate

Hình 2.10: Sơ đồ minh họa quá trình xin cấp chứng chỉ số

c) Quá trình sử dụng chứng chỉ số 1. Giả sử Client đã được Server cấp chứng chỉ số đã ký SC. Client có thể

định danh được Server

2. Chứng chỉ số bao gồm khoá công khai của Server cùng với thông tin định danh. Client giải mã chữ ký điện tử của CA bằng khoá công khai của CA, thực hiện HASH để xác thực rằng chứng chỉ số không bị thay đổi. Như vậy khoá công khai của CA đã được sử dụng để chứng thực khoá công khai trong chứng chỉ số của người gửi. Khi khoá công khai của người gửi được xác nhận, nó được dùng để chứng thực chữ ký điện tử trong thông điệp của nó.

Để cung cấp một chứng chỉ bảo đảm hoặc hệ thống chữ ký, những điều kiện

sau phải được thoả mãn :

− Nhà cung cấp dịch vụ chứng chỉ phải cung cấp chứng chỉ cho cả bên gửi

và bên nhận.

− Bên nhận phải có khả năng sử dụng chứng chỉ của CA để kiểm chứng

khoá công khai của bên gửi.

− Khoá công khai đã được chứng thực của bên gửi phải được sử dụng để

kiểm chứng chữ ký điện tử của thông điệp của nó.

42

2.3 Các giao thức xác thực 2.3.1 Mật khẩu

Trong số các cơ chế xác thực, cơ chế xác thực dựa trên thông tin mà thực thể truy xuất biết (what you know) là cơ chế đơn giản nhất và được sử dụng nhiều nhất. Thông tin này thường là mật khẩu (password), được liên kết với một thực thể dùng để xác thực thực thể đó.

Mật khẩu thường là một chuỗi ký tự. Không gian mật khẩu (password space) là tập hợp tất cả các chuỗi ký tự có thể xuất hiện trong mật khẩu. Mỗi hệ thống xác thực có một không gian mật khẩu khác nhau. Không gian mật khẩu càng lớn thì khả năng bị tấn công mật khẩu theo phương thức vét cạn (Brute Force) lại càng thấp.Mật khẩu được gọi là phức tạp nếu nó khó bị phát hiện bằng phương pháp dò mật khẩu theo từ điển (Dictionary Attack).

Theo khảo sát, những loại mật khẩu được dùng phổ biến nhất hiện nay: − Người sử dụng có thói quen dùng tên của người sử dụng (User Name hoặc

Account Name), hoặc ngày sinh, số điện thọai… để làm mật khẩu − Dùng tên đăng nhập (Logon Name) làm mật khẩu. − Dùng tên máy tính (Computer Name) làm mật khẩu. − Dùng những từ khóa đặc biệt như computer, hacker, … − Lấy tên của những người có quan hệ mật thiết, như vợ, chồng, con, người

thân làm mật khẩu ….

Những mật khẩu như trên đều có độ phức tạp rất thấp và do đó dễ dàng bị tiết lộ. Các hệ thống xác thực thường đưa ra các chính sách về mật khẩu (Password Policy) đối với người sử dụng. Các chính sách này thường quy định những ràng buộc sau đây:

− Chiều dài tối thiểu và độ khó của mật khẩu, mật khẩu không được chứa

User Name hoặc logon-name (Password Complexity).

− Thời gian sử dụng tối đa của mật khẩu (Password Age). − Thường xuyên thay đổi mật khẩu, … Về phía người sử dụng, những nguyên tắc chung để tăng độ an toàn cho

việc xác thực dùng mật khẩu bao gồm:

− Sử dụng nhiều loại ký tự khác nhau để làm mật khẩu, mục đích là mở rộng không gian mật khẩu (dùng chữ cái, chữ số, các ký hiệu đặc biệt, dùng phối hợp giữa chữ hoa và chữ thường, …)

− Không sử dụng các mật khẩu quá ngắn. − Không sử dụng những từ khóa hoặc từ có nghĩa trong mật khẩu. − Thường xuyên thay đổi mật khẩu. − Không ghi chép mật khẩu lên bất kỳ vị trí nào.

43

− Không tiết lộ mật khẩu cho người khác, cả những tình huống an toàn nhất. Trên các máy chủ xác thực, mật khẩu của người sử dụng thường không được lưu trữ một cách trực tiếp dưới dạng ký tự gốc (cleartext) mà phải được mã hoá dưới một dạng nào đó để đảm bảo an toàn. Ngoài ra, để mật khẩu không bị đánh cắp khi truyền đi trên mạng, nhiều thủ tục xác thực phức tạp được xây dựng để đảm bảo rằng mật khẩu không được truyền đi trực tiếp (Cleartext) trên mạng. 2.3.2 Các giao thức xác thực trong mô hình điểm - điểm

Một thực thể bên ngoài hệ thống thông tin muốn truy xuất hệ thống như một chủ thể của thệ thống thì phải cung cấp các thông tin để hệ thống xác thực nhận dạng của chủ thể. Các thông tin này thường là mật khẩu, thẻ xác thực, dấu vân tay, … Quá trình xác thực một thực thể bao gồm việc lấy thông tin mà thực thể cung cấp, phân tích và xác định xem thông tin có liên kết với thực thể đó hay không.

Có hai mô hình thực tế của một hệ thống xác thực là xác thực tại chỗ (Local Authentication) và xác thực từ xa (Remote Authentication) thông qua môi trường mạng. Mô hình thứ nhất được sử dụng khi người sử dụng đăng nhập trực tiếp vào một thống nội bộ (Local Logon), thông tin xác thực (tên người dùng và mật khẩu) được cung cấp trực tiếp cho hệ thống xác thực (server). Trong mô hình thứ hai, người sử dụng đăng nhập vào một hệ thống ở xa. Tình huống này bắt buộc các thông tin xác thực phải được gửi đi trên mạng và do đó, nguy cơ bị nghe lén thông tin là rất cao. Các giao thức xác thực được thiết kế để giảm thiểu các nguy cơ này.

Trong các hệ thống cổ điển, kết nối từ xa thường được thực hiện bằng các giao thức điểm – điểm như SLIP (Serial Line Internet Protocol) hoặc PPP (Point to Point Protocol). Các thủ tục xác thực đều là một chiều, tức là chỉ có máy chủ xác thực người sử dụng chứ không có thủ tục ngược lại. Hai giao thức xác thực thường được dùng trong các hệ thống này là PAP và CHAP

PAP (Password Authentication Protocol) là giao thức xác thực đơn giản nhất và do đó kém an toàn nhất. Để xác thực với một hệ thống Server ở xa, người sử dụng chỉ gửi tên đăng nhập và mật khẩu một cách trực tiếp (Clear Text) cho Server trong gói tin yêu cầu xác thực (Authenticate Request Packet). Server sẽ kiểm tra thông tin xác thực chứa trong gói dữ liệu này, nếu trùng với thông tin đã lưu trữ trong cơ sở dữ liệu thì sẽ trả lời bằng một gói tin xác nhận (Authenticate Ack Packet) và quá trình xác thực thành công. Ngược lại, nếu thông tin xác thực không đúng, Server trả lời bằng gói từ chối (Authenticate Nak Packet).

44

Authenticate request (User-name + Password)

Server

Người sử dụng

Authenticate ack hoặc Authenticate nak

Hình 2.11: Giao thức xác thực PAP

CHAP (Challenge-Handshake Authentication Protocol) là giao thức xác thực phức tạp hơn, được dùng trong giao thức kết nối PPP (Point to Point Protocol) và một số hệ thống khác. CHAP bảo mật hơn PAP, vì dùng các hàm băm một chiều và thông tin xác thực không được gửi đi trực tiếp trên mạng. Quá trình xác thực bằng giao thức CHAP gồm các bước sau đây (gọi là quá trình Challenge Response):

− Sau khi thiết lập kết nối PPP, để xác định xem người sử dụng có quyền truy xuất hay không, Server sẽ gửi cho người sử dụng một khối dữ liệu thách thức (Challenge), trong đó có chứa một giá trị ngẫu nhiên do Server tạo ra.

− Người sử dụng sau khi nhận được khối Challenge sẽ gắn thêm tên đăng nhập và mật khẩu, sau đó thực hiện hàm băm một chiều (ví dụ MD5) lên khối thông tin đó và gửi mã băm lại cho Server.

− Phía Server cũng thực hiện một quá trình tương tự và so sánh với kết quả nhận được từ người sử dụng để xác định quá trình xác thực có thành công hay không.

Một đặc điểm nữa của giao thức này làm tăng tính an toàn của kết nối là quá trình Challenge Rresponse được lặp lại nhiều lần trong suốt thời gian duy trì kết nối. Nếu gói tin trả lời của người dùng không hợp lệ, kết nối sẽ bị giải giải phóng, ngắt kết nối

Challenge

Server

User-name + H(user-name + password + challenge)

Người sử dụng

Success / Failure

Hình 2.12: Giao thức xác thực CHAP

45

2.3.3 Xác thực trong các hệ thống phân tán

Trong các hệ thống phân tán, nhiều máy chủ cung cấp dịch vụ được quản lý

bởi một trung tâm xác thực duy nhất. Giao thức xác thực trong các hệ thống này

phải đảm bảo được 2 yêu cầu cơ bản:

− Đảm bảo an toàn đối với thông tin xác thực (tên đăng nhập và mật khẩu

không được truyền đi trực tiếp trên mạng).

− Người dùng chỉ cần đăng nhập một lần cho phiên làm việc nhưng có khả

năng sử dụng tất cả các dịch vụ có trong hệ thống.

Trong một hệ thống mạng có nhiều máy chủ cung cấp dịch vụ khác nhau,

như Web Server, Mail Server, Database Server… Khi người sử dụng đăng nhập vào

hệ thống, người sử dụng này phải có khả năng truy xuất đến tất cả các dịch vụ trên

mạng (tùy theo quyền được cấp) mà không phải nhập lại tên đăng nhập và mật khẩu

cho từng dịch vụ. Cơ chế quản lý tập trung này cung cấp sự tiện lợi cho cả người sử

dụng lẫn hệ thống.

Một thủ tục xác thực điển hình gồm các bước như sau:

− Một người dùng đăng nhập từ một máy con (C ) trong hệ thống và yêu cầu

truy xuất đến máy chủ V.

− Máy con C yêu cầu người dùng cung cấp tên đăng nhập và mật khẩu rồi

sau đó chuyển thông tin này cho trung tâm xác thực AS (Authentication Server).

− Máy chủ AS kiểm tra xem tên đăng nhập và mật khẩu có hợp lệ hay không, đồng thời kiểm tra xem người dùng này có được phép truy xuất các dịch vụ

trên máy chủ V hay không.

− Nếu cả hai việc kiểm tra trên đều thành công thì người dùng được phép truy xuất dịch vụ trên máy chủ V. Để làm được việc đó, AS tạo ra một thẻ truy xuất

(ticket) chứa các thông tin bao gồm nhận dạng của người dùng, địa chỉ mạng của

máy con và nhận dạng của máy chủ V. Thẻ truy xuất này được mã hóa bằng khóa bí

mật dùng chung giữa AS và V. Thẻ truy xuất cũng được gửi cho C.

− Bắt đầu từ đây, C có thể yêu cầu các dịch vụ của V bằng cách gởi các bản tin có gắn kèm thẻ truy xuất vừa tạo ra cho V. Máy chủ V sẽ giải mã thẻ truy xuất

và chấp nhận cho C truy xuất các dịch vụ của mình.

C → AS: IDC + PC + IDV

AS → C: Ticket

46

C → V: IDC + Ticket Ticket = E([IDC + ADC + IDV], KV) Trong đó:

C: Máy con

AS: máy chủ xác thực (Authentication server).

V: máy chủ cung cấp dịch vụ.

IDC: Nhận dạng (tên đăng nhập) của người dùng.

IDV: Nhận dạng của máy chủ V.

PC: Mật khẩu của người dùng.

ADC: Địa chỉ mạng của máy con.

KV: Khóa bí mật của máy chủ cung cấp dịch vụ V.

Thủ tục xác thực như trên giải quyết được vấn đề bảo mật bằng cách đưa ra

khái niệm thẻ truy xuất (ticket), trong đó các thông tin bí mật được mã hóa trong

một bản tin đặc biệt trước khi luân chuyển trên mạng. Tuy nhiên, vẫn còn hai vấn

đề chưa được giải quyết:

1) Nếu người dùng có nhu cầu sử dụng dịch vụ nhiều lần, hoặc sử dụng

nhiều dịch vụ khác nhau trên các máy chủ khác nhau, vì vậy người dùng phải thực

hiện thủ tục xác thực nhiều lần, tức là phải nhập lại mật khẩu nhiều lần.

2) Thủ tục xác thực vẫn còn một bước (bước đầu tiên) trong đó thông tin xác

thực (mật khẩu) được gửi đi trực tiếp trên mạng mà không mã hóa.

a. Thủ tục sau đây sẽ giải quyết hai vấn đề trên:

• Khi người dùng đăng nhập hệ thống:

(1) C → AS: IDC + IDtgs

(2) AS → C: E(Tickettgs, Kc)

• Khi người dùng truy xuất một loại dịch vụ (per service type):

(3) C → TGS: IDC + IDV + Tickettgs

(4) TGS → C: Ticketv • Khi người dùng truy xuất một phiên giao dịch cụ thể (per service session):

(5) C → V: IDC + Ticketv Trong đó:

Tickettgs = E([IDC + ADC + IDtgs + TS1 + Lifetime1], Ktgs) Ticketv = E([IDC + ADC + IDv + TS2 + Lifetime2], Kv)

47

Trong thủ tục trên, một thành phần mới được thêm vào hệ thống xác thực là

máy chủ cấp thẻ TGS (Ticket Granting Server).

Khi người dùng xác thực thành công với AS, thay vì cấp thẻ sử dụng dịch vụ

trực tiếp cho người dùng, AS chỉ cấp cho người dùng thẻ truy xuất của TGS, có tác

dụng như một xác nhận đây là một người dùng hợp hệ. Kể từ đó về sau, mỗi khi

người dùng cần truy xuất dịch vụ nào thì chỉ cần gởi thẻ truy xuất và yêu cầu của

mình đến TGS để được cấp thẻ truy xuất dịch vụ.

Như vậy, AS chỉ cần cấp thẻ cho người dùng một lần, hay nói cách khác, thẻ

có thể dùng lại, cả trong trường hợp người dùng sử dụng dịch vụ nhiều lần hoặc sử

dụng nhiều dịch vụ khác nhau mà không cần phải nhập lại mật khẩu.

Thủ tục này được mô tả chi tiết như sau:

− Máy con C yêu cầu một thẻ xác nhận người dùng hợp lệ (Ticket Granting Ticket) bằng cách gởi nhận dạng của người dùng cho AS, trong đó có nhận dạng

của TGS.

− AS gửi lại thẻ xác nhận người dùng hợp lệ cho máy con nhưng được mã hóa với khóa là mật khẩu của người dùng (KC). Do đó, nếu người dùng cung cấp đúng mật khẩu thì thẻ này được giải mã thành công, ngược lại, việc xác thực xem

như kết thúc không thành công.

Như vậy, mật khẩu của người dùng đã không được gởi đi trực tiếp trên

mạng. Do thẻ này có khả năng dùng lại, nên để quản lý việc tồn tại của nó, trong thẻ

được gắn thêm một nhãn thời gian quy định thời gian tồn tại hợp lệ của thẻ. Để

tránh trường hợp thay đổi và giả mạo thẻ, thẻ được mã hóa một lần nữa bằng khóa

bí mật của AS và TGS.

− Sau khi đã có thẻ xác nhận người dùng hợp lệ, máy con có thể yêu cầu dịch vụ trên máy chủ V bằng cách yêu cầu thẻ sử dụng dịch vụ (Service-granting

Ticket) từ TGS. Thông tin gởi đến cho TGS bao gồm nhận dạng của máy chủ V, thẻ

xác nhận người dùng hợp lệ và tên đăng nhập của người dùng.

− TGS giải mã thẻ xác nhận người dùng hợp lệ để kiểm tra, nếu hợp lệ thì cấp thẻ truy xuất dịch vụ cho người dùng. Thẻ này được mã hóa bằng khóa bí mật

của V và TGS.

− Sau khi có thẻ truy xuất dịch vụ, người dùng có thể sử dụng dịch vụ trên

máy chủ V.

48

Như vậy, thủ tục trên giải quyết được 2 vấn đề: dùng lại thẻ và không gởi

mật khẩu trực tiếp trên mạng.

Tuy nhiên, lại thêm 2 vấn đề khác nảy sinh: − Thứ nhất, nếu thời gian tồn tại của các ticket quá ngắn, người dùng có thể phải nhập lại mật khẩu để tạo thẻ mới. Nếu thời gian này quá dài, nguy cơ bị lấy cắp thẻ tăng lên. Do đó, xác nhận một thẻ, máy chủ (TGS hoặc V) phải biết chắc rằng mình đang làm việc với đúng người dùng có tên đăng nhập chứa trong thẻ.

− Thứ hai, song song với việc người dùng xác thực với máy chủ, thì cũng cần phải có thao tác xác thực ngược lại từ máy chủ đến người dùng để loại trừ trường hợp chính máy chủ bị giả mạo.

Đây chính là tồn tại được giải quyết bởi giao thức xác thực Kerberos.

2.3.4 Giao thức xác thực Kerberos 4

Kerberos là một thủ tục nâng cao độ an tòan khi xác thực trong môi trường

mạng phân tán. Kerberos dựa trên kỹ thuật mật mã đối xứng (DES).

Có thể tóm lược thủ tục xác thực của Kerberos version 4 như sau:

1- Máy con yêu cầu AS cung cấp thẻ xác nhận người dùng: C → AS: IDc + IDtgs + TS1 2- AS cung cấp thẻ xác nhận người dùng cho máy con: AS → C: E([Kc,tgs + IDtgs + TS2 + Lifetime2 + Tickettgs], Kc) Tickettgs = E([Kc,tgs + IDc + ADc + IDtgs + TS2 + Lifetime2], Ktgs) 3- Máy con yêu cầu TS cung cấp thẻ truy xuất dịch vụ: C → TGS: IDv + Tickettgs + Authenticatorc 4- TGS cung cấp thẻ truy xuất dịch vụ cho máy con: TGS → C: E([Kc,v + IDv + TS4 + Ticketv], Kc,tgs) Tickettgs = E([Kc,tgs + IDC +ADC + IDtgs + TS2 + Lifetime2], Ktgs) Ticketv = E([Kc,v + IDC + ADC + IDv + TS4 + Lifetime4], Kv) Authenticatorc = E([IDC + ADC + TS3], Kc,tgs) 5- Máy con yêu cầu dịch vụ: C → V: Ticketv + Authenticatorc Authenticatorc = E([IDc + ADC + TS5], Kc,v) 6- Server xác thực với máy con (không bắt buộc): V →C: E([TS5 + 1], Kc,v) Ticketv: = E([Kc,v + IDc + ADc + IDv + TS4 + Lifetime4], Kv)

49

Kerberos

Máy con (C)

Ticket granting Ticket Request

Ticket + session key

Máy chủ xác thực (AS)

Service granting Ticket Request

Ticket + session key

Máy chủ cấp thẻ (TGS)

Máy chủ (V)

Yêu cầu dịch vụ Cung cấp dịch vụ

Hình 2.13: Thủ tục xác thực Kerberos 4

Các thành phần trong các bản tin của Kerberos: Bản tin (1): Máy con yêu cầu cấp thẻ xác nhận người dùng (Ticket Granting

Ticket):

− IDC: Nhận diện của người dùng (do máy con gởi đến cho AS, dựa trên

thông tin đăng nhập củangười dùng).

− IDtgs: Nhận diện của TGS, mục đích cho AS biết rằng máy con đang muốn

truy xuất đến TGS.

− TS1: Nhãn thời gian, đồng bộ thời gian giữa AS và máy con. Bản tin (2): AS cung cấp thẻ xác nhận người dùng cho máy con: − Kc: Dùng chính mật khẩu của người dùng làm khoá mật mã, vừa có mục đích bảo vệ thông tin vừa cho phép AS xác thực mật khẩu của người dùng. Nếu máy con không có mật khẩu đúng thì sẽ không giải mã được bản tin này.

− Kc, tgs: khoá bí mật được dùng giữa máy con và TGS do AS tạo ra. Khóa

này chỉ có tác dụng trong một phiên làm việc (session key).

− IDtgs: Nhận diện của TGS, dùng để xác nhận rằng thẻ này có tác dụng cho

phép máy con truy xuất đến TGS.

− TS2: Nhãn thời gian, cho biết thời điểm thẻ được tạo ra.

50

− Lifetime2: Cho máy con biết thời gian tồn tại của thẻ. − Tickettgs: Máy con dùng thẻ này để truy xuất TGS. Bản tin (3): Máy con yêu cầumáy chủ TGS cấp thẻ truy xuất dịch vụ

(Service Granting Ticket):

− IDV: Nhận dạng của máy chủ V, dùng để thông báo cho TGS là máy con

muốn truy xuất đến dịch vụ của máy chủ V.

− Tickettgs: Thẻ được cấp cho máy con bởi AS − Authenticatorc: một giá trị được tạo ra bởi máy con để xác minh thẻ. Bản in (4): TGS cung cấp thẻ truy xuất dịch vụ cho máy con:: − Kc, tgs: Khoá bí mật dùng chung giữa máy con và TGS − Kc, v: Khoá bí mật giữa máy con và máy chủ V do TGS tạo ra. Khoá này

chỉ có giá trị trong từng phiên làm việc (session key).

− IDv: Nhận diện của máy chủ V, xác nhận thẻ của máy chủ V − TS4: nhãn thời gian cho biết thời điểm thẻ được tạo ra. − Ticketv: Thẻ được máy con dùng để truy xuất máy chủ V. − Tickettgs: Thẻ này được dùng lại để người dùng không phải nhập lại mật

khẩu khi muốn truy xuất dịch vụ khác.

− Ktgs: Khóa bí mật dùng chung giữa AS và TGS. − Kc, tgs: Session key được TGS dùng để giải mã authenticator. Khoá này

được dùng chung giữa máy con và TGS.

− IDC: Nhận diện máy con, cho biết đây là chủ sở hữu của thẻ. − ADC: Địa chỉ mạng của máy con, dùng để ngăn chặn trường hợp một máy

khác lấy cắp thẻđể yêu cầu dịch vụ.

− IDtgs: Nhận diện TGS, để xác nhận thẻ đã được giải mã thành công. − TS2: Nhãn thời gian cho biết thời điểm tạo ra thẻ. − Lifetime2: Thời gian tồn tại thẻ, ngăn chặn sử dụng lại thẻ (Replay). − Authenticatorc: Thông tin xác thực của máy con. − Kc, tgs: Khoá bí mật dùng chung giữa máy con và TGS, dùng để mã hoá

thông tin xác thực của máy con.

− IDc: Nhận dạng máy con, phải trùng với ID trong thẻ. − ADc: Địa chỉ mạng của máy con, phải trùng với địa chỉ trong thẻ. − TS3: Nhãn thời gian, cho biết thời điểm Authenticator được tạo ra. Bản tin (5): Máy con yêu cầu truy xuất dịch vụ: − Ticketv: Thẻ cho biết máycon đã được xác thực bởi AS.

− Authenticatorc: Thông tin xác thực thẻ của máy con.

Bản tin (6): Máy chủ V xác thực với máy con:

51

− Kc, v: Khoá bí mật dùng chung giữa máy con và máy chủ V. − TS5 + 1: Nhãn thời gian, không dùng thông tin xác thực cũ − Ticketv: Thẻ truy xuất máy chủ V, có thể dùng lại khi máy con truy xuất

dịch vụ đến chính máy chủ V không cần yêu cầu cấp thẻ mới.

− Kv: Khoá bí mật dùng chung giữa TGS và máy chủ V. − Kc, v: Khoá bí mật dùng chung giữa máy con và máy chủ V, dùng để giải

mã thông tin xác thực.

− IDc: Nhận dạng của máy con. − ADc: Địa chỉ mạng của máy con. − IDv: Nhận dạng của máy chủ V. − TS4: Nhãn thời gian cho biết thời điểm thẻ được tạo. − Lifetime4: Thời gian tồn tại của thẻ. − Authenticatorc: Thông tin xác thực của máy con. − Kc, v: Khoá bí mật, dùng chung giữa máy con và máy chủ V để mã hoá

thông tin xác thực.

− IDc: Nhận diện máy con, phải giống với IDc trong thẻ − ADc: Địa chỉ mạng của máy con, phải giống với địa chỉ trong thẻ. − TS5: Thời điểm thông tin xác thực được tạo ra. Kết hợp giữa nhiều hệ thống Kerberos: Một môi trường sử dụng hệ thống xác thực Kerberos đầy đủ bao gồm máy chủ Kerberos (Kerberos server), các máy chủ dịch vụ (application server) và các máy con sử dụng dịch vụ (client), trong đó:

− Máy chủ Kerberos phải có danh sách tất cả các tên đăng nhập và mật khẩu đã được mã hóa của các người dùng này. Tất cả các máy con đều phải đăng ký với máy chủ Kerberos.

− Máy chủ Kerberos sử dụng một khóa bí mật chung với các máy chủ còn

lại. Tất cả các máy chủ đều phải đăng ký với máy chủ Kerberos.

Một môi trường thỏa mãn các điều kiện như vậy được gọi là một Domain Như vậy, các máy chủ và máy con thuộc các đơn vị quản lý khác nhau sẽ thuộc về các lãnh địa Kerberos khác nhau. Giao thức xác thực Kerberos cũng bao gồm các thủ tục cho phép kết hợp các lãnh địa Kerberos lại để cung cấp dịch vụ một cách đồng nhất. Hình 3.4 mô tả họat động của thủ tục này.

Trình tự của thủ tục kết hợp lãnh địa Kerberos được tóm tắt như sau: (1)C → AS: IDc + IDtgs + TS1 (2) AS → C: E([Kc,tgs + IDtgs + TS2 + Lifetime2 + Tickettgs], Kc) (3) C → TGS: IDtgsrem + Tickettgs + Authenticatorc (4) TGS → C: E([Kc,tgsrem + IDtgsrem + TS4 + Tickettgsrem], Kc,tgs)

52

(5) C → TGSrem: IDvrem + Tickettgsrem + Authenticatorc

(6) TGSrem → C: E([Kc,vrem + IDvrem + TS6 + Ticketvrem], Kc,tgsrem)

(7) C→ Vrem: Ticketvrem + Authenticatorc

Domain A

Kerberos

Máy con

Ticket-granting-Ticket Request

AS

Ticket-granting-Ticket

Service-granting-Ticket Request for realm B

TGS

Service-granting-Ticket

Domain B

Kerberos

TGS

ụ v h c d u ầ c u ê Y

Service Granting Ticket Request Service Granting Ticket

ụ v h c d p ấ c g n u C

AS

Máy chủ

Hình 2.14: Xác thực giữa hai lãnh địa Kerberos

53

2.3.5 Giao thức xác thực Kerberos 5

Kerberos 5 được nâng cấp từ Kerberos 4 với những điểm khác biệt sau:

− Kerberos 4 phụ thuộc chặt chẽ vào giải thuật DES, trong khi Kerberos 5

thì tương thích với mọi giải thuật mã hóa.

− Kerberos 4 phụ thuộc vào địa chỉ IP để xác thực người dùng, Kerberos 5

có thể sử dụng bất kỳ địa chỉnào (ví dụ MAC address).

− Kerberos 4 sử dụng thêm 1 byte trong các bản tin để cho biết thứ tự byte

trong bản tin. Kerberos 5 dùng cú pháp ANS.1 (Abstract Syntax Notation One) và

luật mã hóa cơ bản BER (Basic Coding Rules) để tạo ra cơ chế xếp thứ tự byte

trong bản tin một cách rõ ràng.

− Thời gian tồn tại của thẻ trong Kerberos 4 được chứa trong một trường dài 8 bit, tính theo đơn vị 5 phút, như vậy, thời gian sống tối đa của thẻ là 5 * 28= 1280

phút (khỏang 21 giờ). Trong Kerberos 5, thời gian tồn tại được biểu thị bằng thời

điểm bắt đầu và thời điểm kết thúc, cho phép thời gian này được biến thiên không

giới hạn.

− Kerberos 4 không cho phép cơ chế chuyển tiếp xác thực, tức là cơ chế một

máy con truy xuất đến một máy chủ, và yêu cầu máy chủ này truy xuất đến dịch vụ

của một máy chủ khác thông qua nhận dạng của máy con. Kerberos 5 cung cấp khả

năng này.

− Kerberos 4 yêu cầu N2 quan hệ giữa các lãnh địa Kerberos trong trường

hợp liên kết họat động giữa N lãnh địa. Kerberos 5 yêu cầu số quan hệ ít hơn nhiều.

Thủ tục xác thực dùng Kerberos 5 được tóm tắt như sau:

(1) C → AS: Options + IDc + Realmc + IDtgs + Times + Nonce1

(2)AS→C:Realmc+IDC+Tickettgs+E([Kc,tgs+Times+Nonce1+Realmtgs

+IDtgs],Kc)

Tickettgs = E([Flags + Kc,tgs + Realmc + IDc + ADc + Times], Ktgs)

(3) C→TGS: Options + IDv + Times + Nonce2 + Tickettgs +Authenticatorc

(4)TGS→C:IDc+Ticketv+E([Kc,v+Times+Nonce2+Realmv+IDv], Kc,tgs)

Tickettgs = E([Flags + KC,tgs + Realmc + IDC + ADC + Times], Ktgs)

54

Ticketv = E([Flags + Kc,v + Realmc + IDC + ADc + Times], Kv)

Authenticatorc = E([IDC + Realmc + TS1], Kc,tgs)

(5) C → V: Options + Ticketv + Authenticatorc

(6) V → C: E([TS2 + Subkey + Seq#], Kc,v)

Ticketv = E([Flags + Kc,v + Realmc + IDC + ADC + Times], Kv)

Authenticatorc = E([IDC + Realmc + TS2 + Subkey + Seq#], Kc,v)

Trong thủ tục trên, ngoài những thành phần đã xuất hiện trong Kerberos 4

còn có thêm các thành phần mới sau đây:

− Realm: Biểu thị vùng của người dùng (Domain).

− Options: Các tuỳ chọn, dùng để yêu cầu các thông tin cộng thêm xuất hiện

trong thẻ.

− Times: Tham số thời gian trong thẻ nhưfrom, till, rtime.

− Nonce: Giá trị ngẫu nhiên được tạo ra trong bản tin để đảm bảo rằng bản

tin trả lời là bản tin hợp lệ chứ không phải bản tin cũ dùng lại.

55

Kết luận chương

Giải pháp sử dụng chứng thực số là sự kết hợp nhiều biện pháp bảo mật đảm

bảo được an toàn thông tin giao dịch trên mạng Internet. Đây là một nền tảng công

nghệ mang tính tiêu chuẩn trên toàn cầu và cũng là giải pháp rất cần thiết đối với

một quốc gia đang trong quá trình phát triển các ứng dụng giao dịch điện tử trong

nhiều lĩnh vực như ở Việt Nam.

Chương này của luận văn đã làm rõ các đặc tính cơ bản của các kỹ thuật xác

thực thông tin, bao gồm các phương pháp như sau:

− Xác thực sử dụng các thuật toán mật mã khóa đối xứng

− Xác thực sử dụng các thuật toán mật mã khóa bất đối xứng − Xác thực sử dụng mã xác thực MAC

− Xác thực sử dụng các hàm băm bảo mật − Xác thực thông tin dùng chữ ký điện tử Các kỹ thuật xác thực trên mới chỉ giải quyết được các vấn đề về xác minh

nguồn gốc thông tin, chưa giả quyết được những trường hợp tranh chấp, chối bỏ

trách nhiệm pháp lý trong các giao dịch điện tử. Những giải pháp sau giải quyết

những vấn đề về chống chối bỏ

− Xác thực thông tin dùng chữ ký điện tử và chứng thực điện tử − Mật khẩu

− Các giao thức xác thực trong mô hình điểm - điểm − Các giao thức xác thực trong các hệ thống phân tán

− Giao thức xác thực Kerberos 4 − Giao thức xác thực Kerberos 5 Tuy nhiên trong thực tế, có thể tích hợp nhiều phương pháp theo yêu cầu bảo

mật. Phổ biến hiện nay, phương pháp chữ ký số trên cơ sở hạ tầng khóa công khai

PKI.Bất kỳ một tổ chức, doanh nghiệp hay cá nhân nào cũng có thể xây dựng cơ

chế an toàn bảo mật và xác thực dựa trên chữ ký số và cơ sở hạ tầng khóa công

khai. Có thể sử dụng khoá công khai của một thành viên từ xa cần tìm và phê chuẩn

một đường dẫn chứng thực, qua nhiều CA trung gian. Việc xây dựng một hạ tầng

khóa công khai nhằm đáp ứng các yêu cầu về bảo mật phụ thuộc phần lớn vào các

mô hình, cấu trúc của các hệ thống thông tin.

56

CHƯƠNG 3

GIẢI PHÁP XÁC THỰC CHO

CÁC GIAO DỊCH HÀNH CHÍNH CÔNG ĐIỆN TỬ

3.1 Dịch vụ hành chính công

3.1.1 Khái niệm

Dịch vụ công là những hoạt động phục vụ các lợi ích chung, thiết yếu, các

quyền và nghĩa vụ cơ bản của tổ chức và công dân do Nhà nước trực tiếp thực hiện

hoặc chuyển giao cho các cơ sở ngoài Nhà nước thực hiện nhằm mục tiêu hiệu quả

và công bằng.

Dịch vụ hành chính công là một loại hình dịch vụ công do các cơ quan hành

chính Nhà nước thực hiện để phục vụ các quyền và nghĩa vụ cơ bản của các tổ chức

và công dân. Được thực hiện dựa trên thẩm quyền hành chính - pháp lý Nhà nước.

3.1.2 Các đặc trưng cơ bản của dịch vụ hành chính công

Dịch vụ hành chính công gắn liền với thẩm quyền hành chính pháp lý của bộ

máy Nhà nước nên loại dịch vụ này chỉ có thể do các cơ quan hành chính Nhà nước

thực hiện, như trong việc cấp các loại giấy phép, giấy khai sinh, chứng minh thư,

công chứng, xử lý và xử phạt hành chính, kiểm tra và thanh tra hành chính …

Dịch vụ hành chính công phục vụ cho hoạt động quản lý của Nhà nước, là

những hoạt động nhằm phục vụ cho chức năng quản lý; là những dịch vụ mà Nhà

nước bắt buộc và khuyến khích người dân phải làm để đảm bảo trật tự và an toàn xã

hội; là những quy định có tính chất bắt buộc của Nhà nước. Càng nhiều người sử

dụng dịch vụ hành chính công thì càng tạo điều kiện cho các hoạt động quản lý Nhà

nước được tốt hơn.

Dịch vụ hành chính công là những hoạt động không vu lợi, nếu có thu tiền thì

thu dưới dạng phí và lệ phí để nộp ngân sách Nhà nước.

Mọi người dân có quyền ngang nhau trong việc tiếp cận và sử dụng các dịch

vụ này với tư cách là đối tượng phục vụ của chính quyền. Nhà nước có trách nhiệm

và nghĩa vụ phục vụ cho mọi người dân.

57

3.1.3 Các mức độ dịch vụ hành chính công

Giao dịch hành chính công là cơ chế giải quyết công việc của tổ chức, công

dân thuộc thẩm quyền của cơ quan hành chính nhà nước từ tiếp nhận yêu cầu, hồ sơ

đến trả kết quả chỉ thông qua một đầu mối.

Hành chính công có 4 mức độ dịch vụ khác nhau:

Mức độ 1: Là dịch vụ bảo đảm cung cấp đầy đủ các thông tin về thủ tục hành

chính và các văn bản có liên quan quy định về thủ tục hành chính đó.

Mức độ 2 : Là dịch vụ công trực tuyến mức độ 1 và cho phép người sử dụng

tải về các mẫu văn bản và khai báo để hoàn thiện hồ sơ theo yêu cầu. Hồ sơ sau khi

hoàn thiện được gửi trực tiếp hoặc qua đường bưu điện đến cơ quan, tổ chức cung

cấp dịch vụ.

Mức độ 3 : Là dịch vụ công trực tuyến mức độ 2 và cho phép người sử dụng

điền và gửi trực tuyến các mẫu văn bản đến cơ quan, tổ chức cung cấp dịch vụ. Các

giao dịch trong quá trình xử lý hồ sơ và cung cấp dịch vụ được thực hiện trên môi

trường mạng. Việc thanh toán lệ phí (nếu có) và nhận kết quả được thực hiện trực

tiếp tại cơ quan, tổ chức cung cấp dịch vụ.

Mức độ 4: là dịch vụ công trực tuyến mức độ 3 và cho phép người sử dụng

thanh toán lệ phí (nếu có) được thực hiện trực tuyến. Việc trả kết quả có thể được

thực hiện trực tuyến, gửi trực tiếp hoặc qua đường bưu điện đến người sử dụng.

3.1.4 Một số dịch vụ hành chính công

1. Lĩnh vực Báo chí

- Cấp giấy phép họp báo

- Cấp giấy phép xuất bản bản tin

- Cấp phép thành lập và hoạt động văn phòng đại diện của cơ quan báo chí

- Cấp phép hoạt động phóng viên thường trú của các cơ quan báo chí

2. Lĩnh vực Xuất bản

- Cấp giấy phép hoạt động in

- Đăng ký hoạt động cơ sở in

- Thủ tục đăng ký sử dụng máy photocopy màu.

- Cấp giấy phép tổ chức triển lãm, hội chợ xuất bản phẩm

- Cấp giấy phép xuất bản tài liệu không kinh doanh

- Cấp giấy phép nhập khẩu xuất bản phẩm không kinh doanh

58

3. Lĩnh vực Phát thanh, truyền hình và Thông tin điện tử

- Cấp giấy phép thiết lập trang thông tin điện tử tổng hợp

- Gia hạn giấy phép thiết lập trang thông tin điện tử tổng hợp

- Cấp lại giấy phép thiết lập mạng thông tin điện tử tổng hợp

4. Lĩnh vực Công nghệ thông tin

- Thủ tục thẩm định thiết kế sơ bộ đối với các dự án đầu tư ứng dụng công

nghệ thông tin (dự án nhóm B, C) sử dụng nguồn vốn ngân sách Nhà nước do

UBND cấp tỉnh, cấp huyện, cấp xã quyết định đầu tư

5. Lĩnh vực Bưu chính, Viễn Thông

- Cấp giấy phép bưu chính

- Cấp văn bản xác nhận văn bản thông báo hoạt động bưu chính

- Văn bản chấp thuận vị trí xây dựng, lắp đặt trạm thu phát sóng thông tin di

động (BTS)

- Thông báo thời gian chính thức bắt đầu cung cấp trò chơi G2, G3, G4 trên

mạng cho công cộng

- Thông báo thay đổi phương thức, phạm vi cung cấp dịch vụ trò chơi điện tử

G1 trên mạng đã được phê duyệt

− Thông báo thời gian chính thức cung cấp trò chơi điện tử trên mạng

3.2 Mô hình xác thực người dùng hành chính công

3.2.1 Các thành phần hệ thống xác thực

1. Người sử dụng đầu cuối (End Entity): Là các tổ chức, doanh nghiệp, cá

nhân, hoặc là một phần mềm hoặc một thiết bị tham gia vào quá trình trao đổi thông

tin tham gia các giao dịch hành chính công, sử dụng mật mã khóa công khai, gọi tắt

là các thực thể đầu cuối. Các thực thể có một cặp khóa công khai PU và khóa riêng

PR, trong đó khóa công khai PU được phổ biến bởi PKI dưới dạng các chứng thực

khóa, còn khóa bí mật do chính các thực thể quản lý, sở hữu riêng.

2. Trung tâm chứng thực - CA (Certificate Authority): Là cơ quan có thẩm

quyền cấp và quản lý các chứng thực khóa công khai của các thực thể đầu cuối.

Chứng thực khóa công khai (gọi tắt là chứng thực). Nội dung của một chứng thực

bao gồm các thông tin:

59

− Khóa công khai PU của thực thể đầu cuối ủy quyền cho CA phổ biến − Thông tin cá nhân của thực thể đầu cuối tham gia: Tên, định danh, địa chỉ

của tổ chức, doanh nghiệp, cá nhân

− Chữ ký số của tổ chức xác thực CA. Vì vậy, CA phải là một thực thể được

tin cậy, nếu không, chữ ký của CA sẽ không có ý nghĩa gì.

3. Máy chủ chứng thực - AS (Authority Server) Cơ sở dữ liệu lưu trữ chứng

thực khóa của các thực thể đầu cuối, Trung tâm chứng thực - CA

4. Máy chủ xử lý - RA (Registration Authority): Tiếp nhận yêu cầu cấp và

quản lý các thẻ chứng thực khóa cho các thực thể đầu cuối. Có một số chức năng xử

lý một số công việc quản lý nhằm giảm tải cho AS, chẳng hạn như đăng ký thực thể

đầu cuối, kiểm chứng các thực thể đầu cuối, tạo ra các cặp khóa Public- Private, …

3.2.2 Hệ thống ký hiệu

− PUA: Khóa công khai của thực thể đầu cuối A − PRA: Khóa riêng (khóa bí mật) của thực thực thể đầu cuối A − KCA-A: Khóa bí mật dùng chung chothực thể A và Trung tâm xác thực − H(M): Hàm băm bảo mật, H = {MD5 hoặc SHA} − E(M, K): Mã hóa bản tin M bằng khóaK = {PUA ,PRA hoặc K} − D(M, K): Giải mã bản tin M bằng khóa K − DSA: Chữ ký số của thực thể A − CA: Thẻ “Chứng thực khóa” của thực thể A − TA : Là thời gian có hiệu lực của thẻ “Chứng thực khóa” của A − DSCA-A: Chữ ký số của Trung tâm chứng thực ký vào chứng thực CA − AS: Máy chủ chứng thực, Trung tâm lưu trữ thẻ “Chứng thực khóa” − Thực thể đầu cuối có thể là; ü Tổ chức, doanh nghiêp, công ty, cá nhân, ..

ü Thiết bị: Server, Router,…

ü Phần mềm,..

3.2.3 Hoạt động hệ thống xác thực thông tin

1. Đăng ký (Registration): Là thủ tục mà thực thể đầu cuối yêu cầu cấp

chứng thực khóa

60

2. Khởi tạo (Initialization): Khởi tạo tại các thực thể đầu cuối có nhu cầu xin

cấp phát chứng thực số.Tạo ra cặp khóa Public/Private

3. Chứng thực (Certification):RA tạo chứng thực khóa cho thực thể đầu

cuối, ứng với khóa công khai vừa được tạo ra ở giai đọan khởi tạo hoặc do thực thể

đầu cuối cung cấp.

4. Phục hồi khóa (Key Pair Recovery): Cho phép phục hồi một khóa cũ.Để

khôi phục dữ liệu đã bị mã hoá, cần phải có thủ tục này để lấy lại khoá.

5. Cập nhật khóa (Key PairUpdate): Sau khoảng thời gian hiệu lực, chứng

thực khóa sẽ bị thu hồi (Revoke). Thủ tục Key PairUpdate có tác dụng gia hạn hiệu

lực của chứng thực khóa, cho phép một chứng thực khóa tiếp tục tồn tại sau khi đã

hết thời gian hiệu lực.

6. Yêu cầu thu hồi chứng thực khóa (Revocation request): Các trường hợp

khi khóa riêng bị lộ, hoặcvì một lý do nào đó, người sử dụng đầu cuối yêu cầu thu

hồi chứng thực khóa. Thủ tục này cho phép một thực thể đầu cuối yêu cầu thu hồi

một chứng thực khóa chưa hết hiệu lực.

3.3 Các quy trình xác thực hệ thống thông tin hành chính công

3.3.1 Quy trình cấp và quản lý chứng thực khóa

Quy trình này quy định các thủ tục các tổ chức, doanh nghiệp, công ty, cá

nhân… trước khi tham gia vào các giao dịch hành chính công, cần phải làm thủ tục

đăng ký và được cấp thẻ “chứng thực khóa”. Quá trình này cũng tương tự như các

doanh nghiệp trước khi hoạt động cần phải đăng ký con dấu, chữ ký cho cơ quan có

thẩm quyền để xác nhận con dấu và chữ ký là hợp pháp. Và con dấu, chữ ký phải

được lưu trữ trong các tàng thư.

Các bước đăng ký và cấp thẻ “Chứng thực khóa” trong môi trường cơ sở hạ

tầng khóa công khai PKI như sau:

1. Thực thể A yêu cầu được cấp thẻ “Chứng thực khóa”

• Các phần mềm hỗ trợ: ü Mật mã khóa đối xứng (DES, AES, TDES,..)

ü Mật mã khóa bất đối xứng (RSA)

ü Hàm băm bảo mật H = {MD5 hoặc SHA}

• Thực thể A tạo cặp khóa công khai PUA và khóa riêng (bí mật) PRA bằng

thuật toán RSA

61

• Tạo chữ ký số:DSA = E[H(IDA + Thông tin cá nhân)]

• Truy nhập vào Server RA để nhận khóa công khai Trung tâm PUCA

• Tạo bản tin yêu cầu CA cấp thẻ “Chứng thực khóa”: A →RA: E([IDA + Thông tin cá nhân + PUA + DS A), PUCA)] 2. Máy chủ RA (Trung tâm hệ thống): • Tạo khóa công khai PUCA và khóa bí mật PRCA bằng thuật toán RSA • Nhận từ A: E([IDA + Thông tin CN + PUA + DS A), PUCA)] • Giải mã: D[E([IDA + Thông tin CN + PUA + DS A), PUCA)], PRCA] • Thông tin sau giải mã:IDA + Thông tin CN + PUA + DSA • Tạo chữ ký số của Trung tâm cấp thẻ CA sẽ ký trong thẻ “Chứng thực

khóa” của A:DSCAA = E[H(IDA + PUA + TA ), PRCA]

• Tạo thẻ “Chứng thực khóa”: CA = (IDA + PUA + TA + DSA + DSCA-A).

Trong đó TA là thời gian hiệu lực của thẻ “Chứng thực khóa”

• Server RA cấp thẻ cho thực thể A: RA → A: E[(IDA + PUA + TA + DSA+ DSCA-A), PUA] • Thẻ “Chứng thực khóa” và thông tin của A lưu trữ trên Server AS • RA → CA:(IDA + Thông tin CN + PUA + TA + DSA+ DSCA-A). 3. Thực thể A nhận thẻ “Chứng thực khóa” • Nhận từ RA:E[(IDA + PUA + TA + DSA+ DSCA-A), PUA] • Giải mã:D[E[(IDA + PUA + TA + DSA+ DSCA-A), PUU], PRA] • “Chứng thực khóa” của A: CA = (IDA + PUA + TA + DSA+ DSCA-A) • Thực thể A có thể kiểm chứng các chữ ký: DSA và DSCA-A ü D[DSA, PUA] = H(IDA + Thông tin các nhân) là giá trị băm khi nhận, so

sánh với giá trị băm H(IDA + Thông tin các nhân) nguyên gốc

ü D[DSCA-A, PUCA] = H(IDA + PUA + TA ) là giá trị băm khi nhận, so sánh với với giá trị bămH(IDA + PUA + TA), trong đóIDA+ PUA là và TAlà thời gian hiệu lực của thể được CA cấp

ü Nếu một trong 2 kiểm chứng trên cho kết quả sai, thực thể A yêu cầu

Server CA cấp lại thẻ “Chứng thực khóa”

Trung tâm chứng thực CA tạo ra chứng thực khóa công khai cho các thực thể sử dụng đầu cuối, bằng cách mã hoá khối thông tin bao gồm: Mã nhận dạng của thực thể IDA, thông tin các nhân của thực thể và khoá công khai PU của thực thể, thời điểm hiệu lực của chứng thực, là thời gian bắt đầu và kết thúc. Khối thông tin này được mã hóa bởi khóa công khai người dùng

62

Như vậy, các thực thể đã được cấp các thẻ “Chứng thực khóa”. Bắt đầu từ lúc này, các thực thể có thể trao đổi khóa công khai cho nhau và được Trung tâm xác thực kiểm tra tính hợp pháp và thời hạn hiệu lực chứng thực.

Để tránh các tình huống giả mạo CA, các thực thể đầu cuối phải gửi các yêu cầu cấp phát chứng thực đến CA bằng một kênh bảo mật, trên đó có áp dụng các cơ chế xác thực chặt chẽ

Hình 3.1: Mô hình tổng quát cấp chứng thực khóa

Quy trình quản lý chứng thực khóa:

1) Thủ tục người sử dụng yêu cầu Trung tâm cấp chứng thực khóa a) Thủ tục yêu cầu:E([IDA + Thông tin cá nhân + PUA + DS A), PUCA)] b) Thẻ chứng thựckhóa:E[(IDA + PUA + TA + DSA+ DSCA-A), PUA] 2) Thủ tục cấp phát và quản lý chứng thực khóa Trung tâm chứng thực (IDA + Thông tin CN + PUA + TA + DSA+ DSCA-A). Trong đó: IDA: Định danh của tổ chức, doanh nghiệp, cá nhân,.. Thông tin cá nhân: Tên, địa chỉ, định danh yêu cầu, ngày,..của tổ chức,

doanh nghiệp, cá nhân

63

PUA: Khóa công khaicủa tổ chức, doanh nghiệp, cá nhân DSA: Chữ ký số của tổ chức, doanh nghiệp, cá nhân TA : Thời gian hiệu lực của chứng thực số PUCA : Khóa công khai củaTrung tân chứng thưc

DSCA-A: Chữ ký số củaTrung tân chứng thưc khóa ký vào thẻ chứng thực khóa của người dùng

Máy chủ AS

CA = (IDA + PUA + TA + DSA+ DSCA-A)

(IDA + Thông tin CN + PUA + TA + DSA+ DSCA-A)

Máy chủ RA

Người sử dụng (User)

E[(IDA + PUA + TA + DSA+ DSCA-A), PUA]

Hình 3.2: Quy trình khởi tạo chứng thực khóa cho người sử dụng 3.3.2 Quy trình xác thực thông tin Giả sử một tổ chức, doanh nghiệp, công ty..., ký hiệu là thực thể A gửi một tài liệu M cho một thực thể B. Tài liệu M có thể là một giấy phép nhập khẩu xuất bản phẩm không kinh doanh, xuất bản phẩm nhập khẩu không kinh doanh…, quy trình xác thực như sau:

1. Trên thực thể người sử dụng A: • A truy nhập vào Server RA tìm khóa công khai của B:PUB • Mã hóa tài liệu M bằng thuật toán mật mã đối xứng với khóa bí mật là

KABchung của thực thể A và B: MK = E(M, KAB)

• A gửi thông tin sang B bằng bản mã khóa riêng của B: E[(MK+KAB+CA] = E[MK +K+ (IDA +PUA +TA + DSA+ DSCA-A), PUB] 2. Trên thực thể B: • B nhận: E[(MK+KAB+CA] = E[MK+ K+(IDA+ PUA+ TA + DSA+ DSCA-A), PUB]

64

• Giải mã:D[E[MK+KAB+(IDA + PUA+ TA+ DSA+DSCA-A), PUB], PRB] • Kết quả giải mã:MK + KAB + (IDA + PUA + TA + DSA+ DSCA-A) • Giả mã bằng khóa chung KABnhận được bản rõ:D(MK , K) =M • Thực thể B yêu cầu Server RA xác minh thẻ “Chứng thực khóa”A: E[(IDA

+ PUA + TA + DSA+ DSCA-A), PUCA-B]

3. Máy chủ RA xác minh chữ ký số và thẻ “Chứng thực khóa” của A: • Giải mã:D[E[(IDA + PUA + TA + DSA+ DSCA-A), PUCA-B], PUCA-B] • Thông tin sau giải mã: IDA + PUA + TA + DSA+ DSCA-A • Xác minh: ü Mã định danh IDA là của A ü Chữ ký sốDSA là của A ü Chữ ký sốDSCA-A là của CA ü Thời gian TA có còn hiệu lực • Server RA trả lời cho thực thể B kết quả xác minh Để bắt đầu trao đổi thông tin với nhau, các thực thể sử dụng mật mã bất đối

xứng. Hai thực thể A và B trao đổi chứng thực khóa cho nhau để thực thể này nhận

được khoá công khai của thực thể kia.

Nhờ thực thể tin cậy thứ 3 làm trung gian để tạo ra chứng thực khóa, khoá

công khai có thể được phân phối một cách an toàn mà không bị giả mạo.

3.3.3 Một số nhận xét

Mô hình xác thực thông tin trong môi trường cơ sở hạ tầng khóa công khai

PKI, sử dụng chữ ký số ký qua bên thứ 3 tin cậy, có tính pháp lý. Quy trình đảm

bảo được

− Thông tin trao đổi giữa các thực thể là đảm bảo bí mật và toàn vẹn trên hai

khía cạnh nội dung và nguồn gốc thông tin

− Xác minh được nguồn gốc nơi phát sinh và nơi nhận thông tin − Các thực thể tham gia không thể phủ nhận được tính pháp lý của giao

dịch. Không thể chối cãi được nguồn gốc thông tin đã gửi hoặc nhận.

− Mỗi thực thể đều có thể đọc các chứng thực khóa để biết được khóa công

khai cũng như nhận diện chủ sở hữu của khóa đó.

− Mỗi thực thể đều có thể xác thực thông tin trong chứng thực khóa là chính

xác nhờ vào chữ ký của một thực thể được tin cậy thứ 3.

65

− Chỉ có người chứng thực (Certificate Authority hay CA) mới có quyền tạo

ra và cập nhật các chứng thực khóa.

− Mô hình xác thực thông tin trong môi trường PKI sử dụng hai máy chủ tại

Trung tâm xác thực:

ü Server CA có chức năng chỉ lưu trữ thẻ “Chứng thực khóa” và thông tin

các nhân của các thực thể đầu cuối. Nó hoạt động hoàn toàn độc lập với môi trường

mạng. Vì vậy, không thể có bất kỳ người sử dụng đầu cuối hợp lệ hay không hợp lệ

nào lại có thể truy xuất trực tiếp vào nó, mà phải thông qua máy chủ trung gian RA

của Trung tâm. Vì vậy dữ liệu trên máy chủ CA là hoàn toàn tuyệt mật, đảm bảo

tuyệt đối an toàn thông tin cho hệ thống.

ü Server RA là máy chủ trung gian, có chức năng giao tiếp trực tiếp giữa

người sử dụng với hệ thống. Tiếp nhận, xử lý các yêu cầu truy nhập của các thực

thể đầu cuối. Có chức năng kiểm tra, giám sát các hoạt động hệ thống. Nó chỉ kết

nối với máy chủ CA khi kết nối an toàn. Nó làm việc trên bản sao chứng thực khóa,

thường xuyên cập nhật cho máy chủ CA

Tóm lại mô hình xác thực thông tin trong môi trường cơ sở hạ tầng khóa

công khai PKI, đảm bảo an toàn, bí mật cho các giao dịch điện tử

3.4 Triển khai thử nghiệm

Ứng dụng java mô phỏng quá trình ký và xác thực chữ ký

Hình 3.3: Giao diện chương trình demo chữ ký số

66

Trình tạo khóa tạo ra cặp khóa 1024 bit. Nội dung thông điệp là tập tin được

nạp vào và sử dụng khóa bí mật tạo ra hàm băm SHA1 đầu vào sau đó tạo thành

chữ ký. Việc này tương ứng với cặp mã bí mật công khai được tạo ra trong các USB

token, trong đó khóa bí mật được lưu trữ trên USB token, khóa công khai được lưu

trữ tại máy chủ Root-CA.

Quá trình giải mã dựa vào chữ ký được tạo ra trong quá trình ký nội dung văn

bản, đối chiếu với hàm băm SHA1 và khóa công khai để kiểm tra xem văn bản có

toàn vẹn hay không, đã bị sửa chữa hay chưa, đồng thời kiểm tra xác thực người ký

văn bản với cặp mã công khai và bí mật.

Hình 3.4: Giao diện kiểm tra chuỗi toàn vẹn

3.5 Kết quả thử nghiệm

- Chữ ký số mã hóa RSA/SHA1 đảm bảo tính bảo mật cao. Ứng dụng hoạt

động chính xác, kiểm tra chính xác văn bản, tệp tin không bị thay đổi. Nếu có thay

đổi bất kỳ hệ thống sẽ báo file đã bị thay đổi.

- Xác định chính xác định danh của khóa công khai do cặp khóa bí mật, công

khai là duy nhất. Khi thay đổi khóa công khai hoặc khóa bí mật bị thay đổi trước

khi mã hóa tệp tin thì thông xác nhận được tệp tin được ký chính xác.

Đánh giá kết quả 100 lần thử nghiệm với các thao tác: Thay đổi khóa bí mật,

thay đổi khóa công khai, thay đổi file gốc khi file gốc là ảnh, thay đổi file gốc khi

file gốc là text. Kết quả thử nghiệm được ghi chép trong bảng 3.2.

67

Bảng 3.1 Kết quả thử nghiệm

STT Nội dung

Thay đổi khóa bí mật Số lần thử nghiệm 100 Kết quả nhận dạng đúng 100 Tỷ lệ nhận dạng 100% 1

Thay đổi khóa công khai 100 100 100% 2

Thay đổi input file ảnh 100 100 100% 3

Thay đổi input file text 100 100 100% 4

- Chữ ký số mã hóa RSA/SHA1 đảm bảo tính bảo mật cao. Ứng dụng hoạt

động chính xác, kiểm tra chính xác văn bản, tệp tin không bị thay đổi. Nếu có thay

đổi bất kỳ hệ thống sẽ báo file đã bị thay đổi.

- Xác định chính xác định danh của khóa công khai do cặp khóa bí mật, công

khai là duy nhất. Khi thay đổi khóa công khai hoặc khóa bí mật bị thay đổi trước

khi mã hóa tệp tin thì thông xác nhận được tệp tin được ký chính xác.

68

KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN

Những kết quả nghiên cứu lý thuyết an toàn và xác thực thông tin:

Xác thực là một cơ chế cơ bản nhất có vai trò bảo đảm an toàn cho các thực

thể khi trao đổi thông tin giữa các hệ thống. Kỹ thuật mật mã chỉ bảo vệ được tính

bí mật và tính toàn vẹn của thông tin.

Kỹ thuật mật mã hiện đại được chia thành hai loại: Mật mã khóa đối xứng

(Symmetric Key Encryption) còn được gọi là mật mã khóa bí mật và mật mã khóa

bất đối xứng (Asymmetric Key Encryption) hay gọi là mật mã khóa công khai.

Mật mã khóa đối xứng sử dụng một khóa duy nhất cho việc mã hóa và giải

mã. Yêu cầu phải giữ tuyệt đối bí mật trong việc trao đổi thông tin giữa các thực thể

tham gia giao dịch. Nó rất thích hợp với việc thực thi trên phần cứng, tốc độ mã hoá

cao, dung lượng thông tin lớn. Các thuật toán mật mã khóa đối xứng phổ biến bao

gồm DES, Blowfish, IDEA, AES …

Mật mã khóa bất đối xứng sử dụng hai khóa khác nhau cho quá trình mã hóa

và giải mã. Một trong hai khóa là khóa công khai (Public Key) được phổ biến công

khai cho bất kỳ thực thể nào cũng có thể truy xuất được và khóa còn lại là khóa

riêng (Private Key) còn gọi là khóa bí mật, được giữ bí mật, chỉ có chủ thể của khóa

đó biết. Mã hóa khóa công khai được xây dựng dựa chủ yếu trên các hàm toán học,

do đó rất thích hợp với thực thi bằng phần mềm và tốc độ mã hoá thấp, phù hợp với

tài liệu dung lượng nhỏ. RSA là thuật toán mật mã khóa bất đối xứng phổ biến nhất

hiện nay.

Mật mã khóa bất đối xứng có nhiều ứng dụng khác nhau như: mật mã thông

tin, tạo chữ ký số, trao đổi khóa bí mật của mật mã khóa đối xứng …

Hàm băm bảo mật (Secure Hash Function) là cơ chế dùng trong việc xác

thực thông tin (Message Authentication). Nguyên tắc của hàm băm là biến đổi khối

thông tin gốc thành một giá trị kiểm tra có kích thước cố định gọi là giá trị băm (mã

băm), giá trị này được gửi đính kèm với thông tin gốc. Khi nhận, thông tin nhận

cũng được đưa vào hàm băm để tạo ra giá trị kiểm tra. Nếu hai giá trị băm bên gửi

và bên nhận trùng nhau, thông tin được xem là xác thực. Nếu giá trị băm được mã

hóa bằng khóa công khai của mật mã bất đối xứng, tạo thành chữ ký số là thành

69

phần của một số thuật toán mật mã dùng trong các thuật toán xác thực thông tin

(Message Authentication),

Chữ ký số (digital signature) là kỹ thuật nhận dạng một thực thể thông tin

cùng với thông tin do thực thể này tạo ra. Ứng dụng cơ bản nhất của chữ ký số là

chứng thực và đảm bảo tính không thể phủ nhận (Non Repudiation) của thông tin.

Có thể chữ ký số ký trực tiếp và ký thông qua trọng tài. Chuẩn chữ ký số RSA sử

dụng thuật toán RSA, tạo ra chữ ký số dựa trên các hàm băm bảo mật (MD5, SHA)

và kỹ thuật mật mã khóa bất đối xứng (RSA).

Mật mã khóa công khai chỉ có ưu điểm khi nó có một cơ chế phân phối khóa

công khai một cách an toàn và hiệu quả cho các thực thể trong hệ thống. Chứng

thực khóa công khai (Certificate) mà một cơ chế hiệu quả để thực hiện vấn đề này.

Mỗi chứng thực khóa bao gồm nhận dạng thực thể đầu cuối, khóa công khai của

thực thể đầu cuối và xác nhận (bằng chữ ký số) của một thực thể thứ 3. Một hệ

thống cung cấp cơ chế tạo ra và quản lý chứng thực khóa được gọi là cơ sở hạ tầng

khóa công khai PKI.

Về ứng dụng thực tế, em đề xuất các mô hình xác thực cho hệ thống thông

tin về các dịch vụ hành chính công theo mô hình phân tán. Yêu cầu phải quản lý các

thực thể truy xuất thông tin sao cho phải đảm bảo tuyệt đối an toàn cho hệ thống và

cho các thực thể tham gia các hoạt động giao dịch trong hệ thống. Các mô hình

được xây dựng theo mô hình xác thực người sử dụng tham gia các giao dịch truy

xuất thông tin. Nghĩa là các thực thể muốn có quyền truy xuất thông tin trên hệ

thống, trước tiên các thực thể đó phải đăng ký và phải được hệ thống cấp phép. Và

khi được quyền truy xuất các thực thể phải được hệ thống kiểm soát bằng mô hình

xác thực sử dụng các dịch vụ thông tin của hệ thống

Với những kết quả đạt được và trong xu thế phát triển mạnh của ngành an

toàn và bảo mật dữ liệu, em nhận thấy rằng các kỹ thuật xác thực cần tiếp tục

nghiên cứu, cải tiến và áp dụng rộng rãi hơn nữa trong thực tế.

Trong quá trình thực hiện luận văn, vì điều kiện thời gian cũng như kiến thức

còn hạn chế, luận văn không thể tránh khỏi những sai sót, em rất mong được sự

tham gia góp ý của quý thầy cô và các bạn để bản luận văn hoàn chỉnh hơn.

70

TÀI LIỆU THAM KHẢO

Tiếng Việt:

[1] Phan Đình Diệu, Lý thuyết mật mã và an toàn thông tin, NXB Đại học Quốc

Gia Hà Nội, 2002.

[2] Nguyễn Linh Giang, An toàn và An ninh thông tin mạng, Đại học Bách khoa

Hà Nội, 2015.

[3] Trịnh Nhật Tiến, An toàn dữ liệu, NXB Đại học Quốc Gia Hà Nội, 2008.

Tiếng Anh:

[4] Jin Li, Kui Ren, Kwangjo Kim, Accountable Attribute Based Encyption for

Abuse Free Access Control, Cryptology ePrint Archive, Report 2009/118,

2009 http://eprint.iacr.org

[5] William Stallings, Cryptography and Network Security Principles and

Practices, Fourth Edition, 2005.

[6] Svetlin Nakov How, Digital Signatures Work: Digitally Signing Message,

2005.

[7] Carlisle Adams vµ Steve Lloyd, Understanding PKI: Concepts, Standards and

Deployment Considerations, Addison-Wesley, 2003.

[8] Federal Information, Processing Standards Publication 180 (1995), Secure

Hash Standard (SHA).