bài tập lớn an ninh mạng

46
LỜI NÓI ĐẦU Trao đổi thông tin luôn là nhu cầu cần thiết của con người, đặc biệt là trong cuộc sống hiện đại ngày nay khi mà mạng máy tính và Internet phát triển một cách mạnh mẽ và giữ vai trò quan trọng trong mọi lĩnh vực của đời sống xã hội như: chính trị, quân sự, học tập, mua sắm, kinh doanh, … Tất cả những thông tin liên quan đến những công việc này đều được máy vi tính quản lý và truyền đi trên hệ thống mạng. Đối với những thông tin bình thường thì không ai chú ý đến, nhưng đối với những thông tin mang tính chất sống còn đối với một cá nhân hay một tổ chức thì vấn đề bảo mật thông tin là rất quan trọng và được đặt lên hàng đầu. Chính vì vậy nên rất nhiều tổ chức, cá nhân đã nghiên cứu, tìm kiếm và đưa ra rất nhiều giải pháp bảo mật thông tin. Trong đó mã hóa khóa công khai đang tỏ ra rất thích hợp rất trong truyền thông tin dữ liệu và có tính bảo mật khá cao. Báo cáo này do nhóm biên soạn dựa trên những kiến thức lĩnh hội được từ thầy giáo Th.S. Nguyễn Chiến Trinh, và thông qua sự tìm hiểu, nghiên cứu tích cực của các thành viên trong nhóm. Báo cáo của nhóm đi sâu vào trình bày mã hóa khóa công khai RSA và giao thức thỏa thuận khóa Diffie - Hellman với nội dung gồm 4 chương được chia thành các chủ đề khác nhau, từ việc giới thiệu sơ bộ, trình bày khái niệm, cách thiết lập, sơ đồ và các ví dụ minh họa cụ thể về giao thức thỏa thuận khóa. Mặc dù nhóm đã rất cố gắng song vẫn

Upload: independent

Post on 21-Jan-2023

0 views

Category:

Documents


0 download

TRANSCRIPT

LỜI NÓI ĐẦU Trao đổi thông tin luôn là nhu cầu cần thiết của con

người, đặc biệt là trong cuộc sống hiện đại ngày nay khi

mà mạng máy tính và Internet phát triển một cách mạnh mẽ

và giữ vai trò quan trọng trong mọi lĩnh vực của đời sống

xã hội như: chính trị, quân sự, học tập, mua sắm, kinh

doanh, … Tất cả những thông tin liên quan đến những công

việc này đều được máy vi tính quản lý và truyền đi trên

hệ thống mạng. Đối với những thông tin bình thường thì

không ai chú ý đến, nhưng đối với những thông tin mang

tính chất sống còn đối với một cá nhân hay một tổ chức

thì vấn đề bảo mật thông tin là rất quan trọng và được

đặt lên hàng đầu. Chính vì vậy nên rất nhiều tổ chức, cá

nhân đã nghiên cứu, tìm kiếm và đưa ra rất nhiều giải

pháp bảo mật thông tin. Trong đó mã hóa khóa công khai

đang tỏ ra rất thích hợp rất trong truyền thông tin dữ

liệu và có tính bảo mật khá cao. Báo cáo này do nhóm biên

soạn dựa trên những kiến thức lĩnh hội được từ thầy giáo

Th.S. Nguyễn Chiến Trinh, và thông qua sự tìm hiểu,

nghiên cứu tích cực của các thành viên trong nhóm. Báo

cáo của nhóm đi sâu vào trình bày mã hóa khóa công khai

RSA và giao thức thỏa thuận khóa Diffie - Hellman với

nội dung gồm 4 chương được chia thành các chủ đề khác

nhau, từ việc giới thiệu sơ bộ, trình bày khái niệm, cách

thiết lập, sơ đồ và các ví dụ minh họa cụ thể về giao

thức thỏa thuận khóa. Mặc dù nhóm đã rất cố gắng song vẫn

không tránh khỏi một số thiếu sót mong thầy cô và bạn bè

đóng góp ý kiến để nhóm hoàn thiện hơn báo cáo này.

Thay mặt nhóm em xin chân thành cảm ơn !

PHÂN CÔNG CÔNG CÔNG VIỆC

STT Mã Sinh

Viên

Tên Sinh

Viên

Nội dung Tran

g-

tran

g

Nhận

xét

1 102101026

2

Phan Lạc

Dương

Tìm hiểu về

chung về mã

hóa + mã hóa

khóa công

khai ( CI +

CII )

6 -

12

Tích cực

nghiên

cứu hoàn

thành

tốt

nhiệm vụ2 102101025 Lưu Doãn Bắc Tìm hiểu 13- Tích cực

1 thuật toán mã

hóa khóa công

khai RSA

(CIII)

24 nghiên

cứu hoàn

thành

tốt

nhiệm vụ3 082101019

5

Nguyễn Xuân

Hiệp

Tìm hiểu giao

thức thỏa

thuận khóa

Diffie -

Hellman

25-

34

Tích cực

nghiên

cứu hoàn

thành

tốt

nhiệm vụ

MỤC LỤCLỜI NÓI ĐẦU..............................................1

PHÂN CÔNG CÔNG VIỆC......................................2

MỤC LỤC..................................................3

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

CHƯƠNG 1: TÌM HIỂU CHUNG VỀ MÃ HÓA.......................61.1. Khái niệm...................................................................................................61.2. Các yêu cầu đối với mã hóa.....................................................................61.3. Phân loại mã hóa......................................................................................71.4. Tại sao cần phải phân loại mã hóa ?......................................................7

CHƯƠNG 2: MÃ HÓA KHÓA CÔNG KHAI..........................92.1. Giới thiệu.................................................................................................... 92.2.Tại sao mã hóa khóa công khai ra đời..................................................102.3. Nguyên tắc cấu tạo của hệ mã hóa công khai....................................102.4. Các đặc điểm của hệ mã hóa công khai..............................................112.5. Phân biệt mã hóa công khai với mã hóa đối xứng.............................112.6. Ứng dụng của hệ mã hóa công khai....................................................12

CHƯƠNG 3: THUẬT TOÁN MÃ HÓA KHÓA CÔNG KHAI RSA..........133.1. Giới thiệu về RSA.....................................................................................133.2. Mô tả hoạt động của RSA......................................................................143.2.1. Quá trình tạo khóa cho hệ mật RSA..........153.2.2. Quá trình mã hóa...........................163.2.3. Quá trình giải mã..........................163.2.4. Ví dụ......................................163.2.5. Chuyển đổi văn bản rõ......................183.2.6.Tạo chữ ký vào văn bản......................19

3.3. Các vấn đề của RSA.................................................................................203.4. Ứng dụng thực tế của RSA.....................................................................213.2.1. Chữ ký điện tử ( Digital Signature ).......213.2.2. SSL........................................21

CHƯƠNG 4: GIAO THỨC THỎA THUẬN KHÓA DIFFIE - HELLMAN.........................................................24

4.1. Giới thiệu chương...................................................................................244.2. Giao thức thỏa thuận khóa Difie - Hellman.........................................264.2.1. Khái niệm thỏa thuận khóa..................264.2.2. Giao thức thỏa thuận khóa Diffie -

Hellman..............................................284.2.3. Các đặc điểm đặc trưng của giao thức

thỏa thuận khóa Diffie - Hellman.....................29

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

DANH MỤC HÌNH VẼHình 2.1. Cách thức mã hóa công khai.....................9Hình 3.1: Các tác giả Ronal Rivest, Adi Shamir và Leonard

Adleman tại Học Viện Công Nghệ Masachusetts (MIT) vào năm 1977.............................................................13

Hình 3.2: Sơ đồ biểu diễn thuật toán mã RSA.............15Hình 3.3: Mô hình chung của chữ ký điện tử..............21Hình 4.1: Giáo sư Martin Hellman (giữa) cùng đồng nghiệp là

Whitfield Defie (phải) đã khám phá ra mật mã khóa công khai Difie- Hellman...................................................24

Hình 4.2: Sơ đồ giao thức thỏa thuận khóa Difie - Hellman28

6

CHƯƠNG I. TÌM HIỂU CHUNG VỀ MÃ HÓA

1. 1. Khái niệm

Nói đến mã hóa tức là nói đến việc che dấu thông tin bằng

cách sử dụng thuật toán. Che dấu ở đây không phải là làm cho

thông tin biến mất mà là cách thức chuyển từ dạng “có thể

đọc hiểu được” thành dạng “đọc nhưng không thể hiểu được”.

Một thuật toán là một tập hợp của các câu lệnh mà theo đó

chương trình sẽ biết phải làm thể nào để xáo trộn hay phục

hồi lại dữ liệu.

Chẳng hạn tôi có một thuật toán rất đơn giản mã hóa thông

điệp cần gửi đi như sau :

Bước 1 : Thay thế toàn bộ chữ cái “e” thành chữ số “3”.

Bước 2 : Thay thế toàn bộ chữ cái “a” thành chữ số “4”.

Bước 3 : Đảo ngược thông điệp.

7

Trên đây chỉ là một ví dụ rất đơn giản mô phỏng cách thức

làm việc của mã hóa ( Cryptography ) . Trong thực tế đây là

một quá trình cực kì phức tạp và rất khó để diễn tả.

1.2. Các yêu cầu đối với mã hóa.

Confidentiality (Tính bí mật) : Đảm bảo cho dữ liệu được

truyền đi một cách an toàn và không thể bị lộ thông tin nếu

như có ai đó cố tình muốn có được nội dung của dữ liệu gốc

ban đầu. Chỉ những người được chỉ định mới có khả năng đọc

được nội dung thông tin ban đầu.

Authentication (Tính xác thực) : Giúp cho người nhận dữ liệu

xác định được chắn chắn dữ liệu mà họ nhận là dữ liệu gốc

ban đầu.Kẻ giả mạo không thể có khả năng để giả dạng như là

một người khác hay nói cách khác là không thể mạo danh để

gửi dữ liệu. Người nhận có khả năng kiểm tra nguồn gốc thông

tin mà họ nhận được.

Integrity (Tính toàn vẹn): Giúp cho người nhận dữ liệu kiểm

tra được rằng dữ liệu không bị thay đổi trong quá trình

truyền đi. Kẻ giả mạo không thể có khả năng thay thế dữ liệu

ban đầu bằng dữ liệu giả mạo.

Non-repudation (Tính không thể chối bỏ): Người gửi hay người

nhận không thể chối bỏ sau khi đã gửi hoặc nhận thông tin.

1.3. Phân loại mã hóa.

Phân loại theo các phương pháp:

        – Mã hóa cổ điển (Classical cryptography)

8

        – Mã hóa đối xứng (Symmetric cryptography).

        – Mã hóa bất đổi xứng (Asymmetric cryptography).

        – Hàm băm một chiều (Hash function)

Phân lọai theo số lượng khóa:

        – Mã hóa khóa bí mật (Private-key Cryptography)

        – Mã hóa khóa công khai (Public-key Cryptography

1.4. Tại sao cần phải mã hóa ?

Ngày nay, khi mạng Internet đã kết nối các máy tính ở

khắp nơi trên thế giới lại với nhau, thì vấn đề bảo vệ máy

tính khỏi sự thâm nhập phá hoại từ bên ngoài là một điều cần

thiết. Thông qua mạng Internet, các hacker có thể truy cập

vào các máy tính trong một tổ chức (dùng telnet chẳng hạn),

lấy trộm các dữ liệu quan trọng như mật khẩu, thẻ tín dụng,

tài liệu… Hoặc đơn giản chỉ là phá hoại, gây trục trặc hệ

thống mà tổ chức đó phải tốn nhiều chi phí để khôi phục lại

tình trạng hoạt động bình thường.

Đây là một phương pháp hỗ trợ rất tốt trong việc chống

lại những truy cập bất hợp pháp tới các thông tin được

truyền đi trên mạng, áp dụng mã hóa sẽ khiến cho nội dung

thông tin được truyền đi dưới dạng không thể đọc được đối

với bất kỳ ai cố tình muốn lấy thông tin đó.

Tất nhiên không phải ai cũng phải dùng mã hóa. Nhu cầu

về sử dụng mã hóa xuất hiện khi các bên giao tiếp muốn bảo

vệ các tài liệu quan trọng hay truyền chúng một cách an

9

toàn. Các tài liệu quan trọng có thể là: tài liệu quân sự,

tài chính, kinh doanh hoặc đơn giản là một thông tin nào đó

mà mang tính riêng tư.

Như các bạn cũng đã biết, Internet hình thành và ra đời

từ yêu cầu của chính phủ Mĩ nhằm phục vụ cho mục đích quân

sự. Khi chúng ta tham gia trao đổi thông tin, chat, gửi mail

v..v.. Internet là một môi trường không an toàn, đầy rủi ro

và nguy hiểm, không có gì đảm bảo rằng thông tin mà chúng ta

truyền đi không bị đọc trộm trên đường truyền. Từ đó mã hóa

được áp dụng như một biện pháp nhằm giúp chúng ta tự bảo vệ

chính mình cũng như những thông tin mà chúng ta gửi đi.

10

CHƯƠNG II. MÃ HÓA KHÓA CÔNG KHAI2.1. Giới thiệu

Mã hóa khóa công khai (Public Key Cryptography) được thiết

kế sao cho khóa sử dụng trong quá trình mã hóa khác biệt với

khóa được sử dụng trong quá trình giải mã. Hơn thế nữa, khóa

dùng trong quá trình giải mã không thể được tính toán hay

suy luận từ khóa dùng để mã hóa và ngược lại, tức là hai

khóa này có quan hệ với nhau về mặt toán học nhưng không thể

suy diễn được ra nhau. Thuật toán này được gọi là Public-

Key bởi vì khóa dùng cho việc mã hóa được công khai cho tất

cả mọi người.Một người hòan toàn xa lạ có thể dùng khóa này

để mã

11

Hình 2.1: Cách thức mã hóa công khai

hóa dữ liệu nhưng chỉ duy nhất người mà có khóa giải mã

tương ứng mới có thể đọc được dữ liệu mà thôi.

2.2. Tại sao mã hóa công khai ra đời

Mã hóa đối xứng dù rằng đã phát triển từ cổ điển đến hiện

đại, vẫn tồn tại hai điểm yếu sau:

Vấn đề trao đổi khóa giữa người gửi và người nhận: Cần phải

có một kênh an toàn để trao đổi khóa sao cho khóa phải được

giữ bí mật chỉ có người gửi và người nhận biết. Điều này tỏ

ra không hợp lý khi mà ngày nay, khối lượng thông tin luân

12

chuyển trên khắp thế giới là rất lớn. Việc thiết lập một

kênh an toàn như vậy sẽ tốn kém về mặt chi phí và chậm trễ

về mặt thời gian.

Tính bí mật của khóa: không có cơ sở quy trách nhiệm nếu

khóa bị tiết lộ. Vào năm 1976 Whitfield Diffie và Martin

Hellman đã tìm ra một phương pháp mã hóa khác mà có thể giải

quyết được hai vấn đề trên, đó là mã hóa khóa công khai

(public key cryptography) hay còn gọi là mã hóa công khai

(asymetric cryptography). Đây có thể xem là một bước đột phá

quan trọng nhất trong lĩnh vực mã hóa.

2.3. Nguyên tắc cấu tạo của hệ mã hóa công khai.

Mã hóa khóa công khai ra đời đã giải quyết được vấn đề mà mã

hóa riêng thiếu xót. Trong hệ thống mã hóa này thì mỗi một

người sử dụng khi tham gia vào đều được cấp 2 khóa :

- Một khóa dùng cho việc mã hóa dữ liệu (Public key)

- Và một khóa dùng cho việc giải mã dữ liệu (Private

key),

Trong đó Public key được đưa ra cho tất cả mọi người cùng

biết, còn Private keyphải được giữ kín một cách tuyệt

đối.Giả sử hai phía muốn truyền tin cho nhau thì quá trình

truyền sử dụng mã hóa khóa công khai được thực hiện như

sau :

-  Sender yêu cầu cung cấp hoặc tự tìm khoá công khai củaReceiver trên một Server chịu trách nhiệm quản lý khoá côngkhai. 

13

- Sau đó hai phía thống nhất thuật toán dùng để mã hóa dữ

liệu, Sender sử dụng khóa công khai của Receiver cùng với

thuật toán đã thống nhất để mã hóa thông tin bí mật. 

- Thông tin sau khi mã hóa được gửi tới Receiver, lúc này

chính Sender cũng không thể nào giải mã được thông tin mà

anh ta đã mã hóa (khác với mã hóa khóa riêng). 

- Khi nhận được thông tin đã mã hóa, Receiver sẽ sử dụng

khóa bí mật của mình để giải mã và lấy ra thông tin ban đầu.

Có nhiều phương pháp mã hóa thuộc loại mã hóa khóa côngkhai. Đó là các phương pháp Knapsack, RSA, Elgaman, vàphương pháp đường cong elliptic ECC…. Mỗi phương pháp cócách thức ứng dụng hàm một chiều khác nhau.2.4. Các đặc điểm của hệ mã hóa công khai

Thông thường, các kỹ thuật mật mã hóa khóa công khai đòi

hỏi khối lượng tính toán nhiều hơn các kỹ thuật mã hóa khóa

đối xứng nhưng những lợi điểm mà chúng mang lại khiến cho

chúng được áp dụng trong nhiều ứng dụng. Vậy là với sự ra

đời của Mã hóa khóa công khai thì khóa được quản lý một cách

linh hoạt và hiệu quả hơn. Người sử dụng chỉ cần bảo vệ khóa

Private key.

 Hệ thống này an toàn hơn nhiều so với mã hóa khóa

riêng, người mã hóa không thể giải mã được dữ liệu đã mã hóa

bằng khóa công khai của người khác. Tuy nhiên nhược điểm của

mã hóa khóa công khai nằm ở tốc độ thực hiện, nó chậm hơn mã

hóa khóa riêng cỡ ~1000 lần

14

2.5. Phân biệt mã hóa công khai với mã hóa đối xứng

Điều kiện cần của những giải thuật này là:1. Khi một người nào đó có được một hay nhiều chuỗi bít đượcmã hóa, người đó cũng không có cách nào giải mã được mẫu tinban đầu, trừ khi người đó biết được “ secret key ’’ dùng chomã hóa.2. Secret key phải trao đổi một cách an toàn giữa hai partytham gia vào quá trình mã hóa.

Mã hóa bất đối xứng là những giải thuật mã hóa sử dụng 2khóa : public key và private-key. Hai khóa này có một mốiliên hệ toán học với nhau. Mã hóa bằng khóa này thì chỉ cóthể giải mã bằng khóa kia. Có hai ứng dụng của loại mã hóanày : Mã hóa bất đối xứng và chữ ký điện tử ( digitalsignature ).

Trong ứng dụng mã hóa bất đối xứng ( ví dụ giải thuậtRSA )mỗi bên A, B sẽ có một public key (PU) private key (PR)riêng mình. A tạo ra PUA và PRA.B tạo ra PUB và PRB. PUA sẽđược A gửi cho B và khi B muốn truyền dữ liệu cho A thì B sẽmã hóa bằng PUA. A sẽ giải mã bằng PRA. Ngược lại nếu A muốntruyền cho B thì A sẽ mã hóa bằng PUB và B giải mã bằng PRB.PRA và PRB không bao giờ được truyền đi và chỉ được giữriêng cho mỗi bên . 

Trong ứng dụng chữ ký điện tử thì A sẽ mã hóa mẫu tin

bằng PRA. Bởi vì chỉ có A là biết được PRA nên khi một party

nào đó nhận được mẫu tin này , party đó có thể biết được mẫu

tin đó xuất phát từ A chứ không phải một ai khác. Đương

nhiên để giải mã , party đó cần có PUA. 

15

2.6. Ứng dụng của hệ mã hóa công khai

Mã hóa Email hoặc xác thực người gửi Email

(OpenPGP or S/MIME).

Mã hóa hoặc nhận thực văn bản (Các tiêu chuẩn Chữ ký

XML * hoặc mã hóa XML * khi văn bản được thể hiện dưới

dạng XML).

Xác thực người dùng ứng dụng (Đăng nhập bằng thẻ thông minh,

nhận thực người dùng trong SSL).

Các giao thức truyền thông an toàn dùng kỹ

thuật Bootstrapping (IKE, SSL): trao đổi khóa bằng khóa bất

đối xứng, còn mã hóa bằng khóa đối xứng.

16

CHƯƠNG III. THUẬT TOÁN MÃ HÓA KHÓA CÔNG KHAI RSA3.1. Giới thiệu về RSA.

Tiêu chuẩn Rivest-Shamir-Adleman (RSA) - Giải thuật mã

hóa khóa công khai RSA là một tiêu chuẩn được các tác giả

Ronal Rivest, Adi Shamir và Leonard Adleman phát triển tại

Học Viện Công nghệ Masachusetts (MIT) vào năm 1977, tên tiêu

chuẩn được lấy từ 3 chữ cái đầu của tên 3 tác giả, hiện tiêu

chuẩn được các tổ chức Viện Tiêu chuẩn Quốc gia Hoa Kỳ

(American National Standards Institute – ANSI), Viện Kỹ nghệ

Điện và Điện tử (Institute of Electrical and Electronics

Engineers – IEEE) và Phòng thí nghiệm RSA công nhận (RSA

Laboratories là một bộ phận của Tập đoàn EMC). Đây là thuật

toán đầu tiên phù hợp với việc tạo ra chữ ký điện tử đồng

thời với việc mã hóa. Nó đánh dấu một sự tiến bộ vượt bậc

của lĩnh vực mật mã học trong việc sử dụng khóa công cộng.

RSA đang được sử dụng phổ biến trong thương mại điện tử và

được cho là đảm bảo an toàn với điều kiện độ dài khóa đủ

lớn.

17

Hình 3.1. Các tác giả Ronal Rivest, Adi Shamir và Leonard

Adleman tại Học Viện Công nghệ Masachusetts (MIT) vào năm

1977

Trước đó vài năm, Clifford Cox, một chuyên gia mã hóa

người Anh đã phát triển riêng một biến thể của RSA. Tuy

nhiên, Chính phủ Anh xem đây là vấn đề mật và đã không công

bố. Khi Rivest, Shamir và Adleman công bố RSA trong ấn phẩm

Scientific American tháng 9/1977, Cơ quan An ninh quốc gia

Hoa Kỳ (NSA) không đồng ý về việc phổ biến rộng rãi RSA và

ra lệnh cấm, tuy nhiên lệnh cấm này không có cơ sở pháp lý.

Thuật toán RSA được MIT đăng ký bằng sáng chế tại Hoa Kỳ

vào năm 1983 (Số đăng ký 4,405,829). Bằng sáng chế này hết

hạn vào ngày 21 tháng 9 năm 2000. Tuy nhiên, do thuật toán

đã được công bố trước khi có đăng ký bảo hộ nên sự bảo hộ

hầu như không có giá trị bên ngoài Hoa Kỳ. Ngoài ra, nếu như

công trình của Clifford Cocks đã được công bố trước đó thì

bằng sáng chế RSA đã không thể được đăng ký.

18

Năm 1978, các tác giả đã công bố thuật toán trên Tạp chí

của Hiệp hội Kỹ thuật Tính toán Hoa Kỳ (Communications of

the Association for Computing Machinery – ACM). Hiện nay, có

thể tham khảo đặc tả của RSA trên trang thông tin của Tập

đoàn EMC.

3.2. Mô tả hoạt động của RSA.

Định lý cơ sở:

Định lý nhỏ của Fermat: Với p là một số nguyên tố khác 2 thì chia một số a

lũy thừa p cho p sẽ có số dư chính bằng a:

Mở rộng ta có:

Với là số nguyên tố cùng nhau với m và nhỏ hơn m

- Thuật toán RSA có 2 khóa:

Khóa công khai (Public Key)

Khóa bí mật (Private Key)

- Mỗi khóa là những số cố định sử dụng trong quá trình mã

hóa và giải mã.

- Khóa công khai được công bố rộng rãi cho mọi người và

được dùng để mã hóa.

- Khóa bí mật được cá nhân giữ kín và dùng để giải mã

Ví dụ:

Bod muốn gửi cho Alice một thông tin mật M mà Bod muốn

duy nhất Alice có thể đọc được.

19

Bod

Alice ( Mã hóa M bằng Public Key của A đc C) (Giải mã C bằng Private Key của A đc

M )

Hình 3.2: Sơ đồ biểu diễn thuật toán mã RSA

3.2.1. Quá trình tạo khóa cho hệ mật RSA.

Giả sử Alice và Bob cần trao đổi thông tin bí mật thông

qua một kênh không an toàn (ví dụ như Internet). Với thuật

toán RSA, Alice đầu tiên cần tạo ra cho mình cặp khóa gồm

khóa công khai và khóa bí mật theo 5 bước sau:

20

1. Chọn 2 số nguyên tố lớn khác nhau p, q thỏa mãn điều

kiện |p|≈|q|2. Tính tích của nó n=p⋅q

3. Tính giá trị hàm Phi Euler của n: ϕ (n )=(p−1) (q−1) .

4. Chọn số nguyên d, sao cho d<ϕ (n) và gcd(d, ϕ(n) )=1.

5. Tính giá trị e thỏa mãn điều kiện: ed=1mod (ϕ (n) ) .

Khóa công khai bao gồm: n và e. Khóa mật: d còn p,q và ϕ(n)

thường là xóa sau khi tính toán khóa.

3.2.2. Quá trình mã hóa:

Giả sử Bob muốn gửi đoạn thông tin M cho Alice. Đầu tiên

Bob chuyển M thành một số m < n theo một hàm có thể đảo

ngược (từ m có thể xác định lại M) được thỏa thuận trước.

Quá trình này được mô tả ở phần Chuyển đổi văn bản rõ.

Lúc này Bob có m và biết n cũng như e do Alice gửi. Bob

sẽ tính c là bản mã hóa của m theo công thức:

c=me (modn)

Hàm trên có thể tính dễ dàng sử dụng phương pháp tính

hàm mũ (môđun) bằng phương pháp bình phương. Cuối cùng Bob

gửi C cho Alice

3.2.3. Quá trình giải mã:

21

Alice nhận c từ Bob và khóa bí mật d. Alice có thể tìm

được m từ c theo công thức sau:

m=cd(modn)

Biết m, Alice tìm lại M theo phương pháp đã thỏa thuận

trước. Quá trình giải mã hoạt động vì ta có:

cd≡(me )d≡med(modn)

Do ed ≡ 1 (mod p-1) và ed ≡ 1 (mod q-1), theo Định lý

Fermat nhỏ nên:

med≡m(modp)

med≡m(modq)

Do p và q là hai số nguyên tố cùng nhau, áp dụng định lý

phần dư trung hoa, chúng ta có:

med≡m(modpq )

Hay

cd≡m(modn)

3.2.4. Ví dụ:

Sau đây là một ví dụ với những số cụ thể. Ở đây chúng ta sử

dụng những số nhỏ để tiện tính toán còn trong thực tế phải

dùng các số có giá trị đủ lớn.

22

Lấy:

p = 61— số nguyên tố thứ nhất (giữ bí mật hoặc hủy

sau khi tạo khóa)

q = 53— số nguyên tố thứ hai (giữ bí mật hoặc hủy

sau khi tạo khóa)

n = pq = 3233— môđun (công bố công khai)

e = 17 — số mũ công khai

d = 2753 — số mũ bí mậtKhóa công khai là cặp (e, n). Khóa bí mật là d. Hàm mã hóa

là:

encrypt(m) = me mod n = m17 mod 3233

với m là văn bản rõ. Hàm giải mã là:

decrypt(c) = cd mod n = c2753 mod 3233

với c là văn bản mã.

Để mã hóa văn bản có giá trị 123, ta thực hiện phép tính:

encrypt(123) = 12317 mod 3233 = 855

Để giải mã văn bản có giá trị 855, ta thực hiện phép tính:

decrypt(855) = 8552753 mod 3233 = 123

Cả hai phép tính trên đều có thê được thực hiện hiệu quả nhờ

giải thuật bình phương và nhân

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

23

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

đề sau :

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ị me cũng nhận giá trị nhỏ (so với

n). Như vậy phép môđun 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

môđun).

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 kẻ tấn công có thể thực hiện 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ã, kẻ tấn công sử

dụng bảng tra để tìm ra bản rõ tương ứng.

Trên thực tế, ta 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ã.

24

Để 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 của

phương pháp 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ã tùy thuộc vào cách chuyển đổi).

Một số tiêu chuẩn, chẳng hạ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ổ xung thêm bit 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

đặc ứng (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 choén

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 dối xứng tối ưu

như (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ổ xung 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).

3.2.6. Tạo chữ ký vào văn bản.

25

Thuật toán RSA còn được dùng để tạo chữ ký số cho văn

bản.

Giả sử Alice muốn gửi cho Bob một văn bản có chữ ký của

mình. Để làm việc này, Alice tạo ra một giá trị băm (hask

value) của văn bản cần ký và tính giá trị mũ d mod n của nó

(giống như khi Alice thực hiện giải mã). Giá trị cuối cùng

chính là chữ ký điện tử của văn bản đang xét.

Khi Bob nhận được văn bản cùng với chữ ký điện tử, anh

ta tính giá trị mũ e mod n của chữ ký đồng thời với việc

tính giá trị băm của văn bản. Nếu 2 giá trị này như nhau thì

Bob biết rằng người tạo ra chữ ký biết khóa bí mật của Alice

và văn bản đã không bị thay đổi sau khi ký.

Cần chú ý rằng các phương pháp chuyển đổi bản rõ ( như

RSA-PSS) giữ vai trò quan trọng đối với quá trình mã hóa

cũng như chữ ký điện tử và không được dùng chung cho đồng

thời cho cả hai mục đích trên.

3.3. Các vấn đề của RSA.

Sau đây ta sẽ xem xét một số các tấn công phương pháp RSA.

Vét cạn khóa: cách tấn công này thử tất cả các khóa d có

thể có để tìm ra bản giải mã có ý nghĩa, tương tự như

cách thử khóa K của mã hóa đối xứng. Với N lớn, việc tấn

công là bất khả thi.

Phân tích N thành thừa số nguyên tố N = pq: Chúng ta đã

nói rằng việc phân tích phải là bất khả thi thì mới là hàm

26

một chiều, là nguyên tắc hoạt động của RSA. Tuy nhiên,

nhiều thuật toán phân tích mới đã được đề xuất, cùng với

tốc độ xử lý của máy tính ngày càng nhanh, đã làm cho việc

phân tích N không còn quá khó khăn như trước đây. Năm

1977, các tác giả của RSA đã treo giải thưởng cho ai phá

được RSA có kích thước của N vào khoảng 428 bít, tức 129

chữ số. Các tác giả này ước đoán phải mất 40 nghìn triệu

triệu năm mới có thể giải được. Tuy nhiên vào năm 1994,

câu đố này đã được giải chỉ trong vòng 8 tháng. Bảng sau

liệt kê kích thước N của các RSA đã phá mã được cho đến

hiện nay.

Số chữ số của

N

Số bit Năm phá mã Thuật toán

100 322 1991 Quadratic

sieve110 365 1992 Quadratic

sieve120 398 1993 Quadratic

sieve129 428 1994 Quadratic

sieve130 431 1996 GNFS140 465 1999 GNFS155 512 1999 GNFS

27

160 530 2003 Lattice sieve174 576 2003 Lattice sieve200 633 2005 Lattice sieve

Dĩ nhiên là việc phá mã trên chỉ được thực hiện trong

phòng thí nghiệm. Tuy nhiên người ta cho rằng kích thước của

N phải khoảng 1024 bít (309 chữ số) thì mới bảo đảm an toàn

thật sự.

Đo thời gian: Đây là một phương pháp phá mã không dựa vào

mặt toán học của thuật toán RSA, mà dựa vào một “hiệu ứng

lề” sinh ra bởi quá trình giải mã RSA. Hiệu ứng lề đó là

thời gian thực hiện giải mã. Giả sử người phá mã có thể

đo được thời giải mã dùng thuật toán bình phương liên

tiếp. Trong thuật toán bình phương liên tiếp, nếu một bít

của d là 1 thì xảy ra hai phép modulo, nếu bít đó là 0 thì

chỉ có một phép modulo, do đó thời gian thực hiện giải mã

là khác nhau. Bằng một số phép thử chosen-plaintext, người

phá mã có thể biết được các bít của d là 0 hay 1 và từ đó

biết được d.

3.4. Ứng dụng thực tế của RSA.

Tiêu chuẩn RSA được ứng dụng rộng rãi trong nhiều lĩnh vực

như chữ ký số, thương mại điện tử, bảo mật, xác thực…

Trong Thông tư số 01/2011/TT-BTTTT ngày 04/01/2011 của Bộ

trưởng Bộ Thông tin và Truyền thông Công bố Danh mục tiêu

28

chuẩn kỹ thuật về ứng dụng công nghệ thông tin trong cơ quan

nhà nước quy định Khuyến nghị áp dụng tiêu chuẩn RSA, là một

trong những giải thuật mã hóa và được xếp vào nhóm Tiêu

chuẩn về an toàn thông tin.

3.4.1. Chữ ký điện tử (Digital Signature).

Chữ ký điện tử là chữ ký được tạo lập dưới dạng từ, chữ số,

ký hiệu, âm thanh hoặc các hình thức khác bằng phương tiện

điện tử, gắn liền hoặc kết hợp một cách logic với thông điệp

dữ liệu. Chữ ký điện tử có giá trị xác nhận người ký thông

điệp dữ liệu và xác nhận sự chấp thuận của người đó đối với

nội dung thông điệp dữ liệu được ký.

Chữ ký điện tử là thông tin đi kèm theo dữ liệu (văn bản,

hình ảnh , video ….) nhằm mục đích xác định người chủ của dữ

liệu đó.

Chữ ký điện tử được tạo ra bằng cách áp dụng thuật toán băm

một chiều trên văn bản gốc để tạo ra bản phân tích văn bản

(mesage digest) hay còn gọi là fingerprint, sau đó mã hóa

bằng private key tạo ra chữ ký số đính kèm với văn bản gốc

được tính lại fingerprint để so sánh với fingerprint cũ

cũng được phục hồi từ việc giải mã chữ ký số.

Mô hình chung của chữ kí điện tử :

29

Hình 3.3: Mô hình chung của chữ ký điện tử

Đặc điểm của chữ ký điện tử rất đa dạng, có thể là một tên

hoặc hình ảnh cá nhân kèm theo dữ liệu điện tử, một mã khóa

bí mật, hay một dữ liệu sinh trắc học ( chẳng hạn như hình

ảnh mặt, dấu vân tay, hình ảnh mống mắt … ) có khả năng xác

thực người gửi. Độ an toàn của từng dạng là khác nhau.

Quy trình thực hiện chữ ký điện tử :

Các bước mã hóa   :

1. Dùng giải thuật băm để thay đổi thông điệp cần truyền đi,

kết quả là ta được một message digest, dùng giải thuật md5

(message digest 5) ta được digest có chiều dài 128 bit, dùng

giải thuật sha ( secure hash algorithm ) ta có chiều dài 160

bit.

2. Sử dụng khóa private key của người gửi để mã hóa mesage

digest thu được ở bước 1. Thông thường ở bước này ta dùng

giải thuật rsa. Kết quả thu được gọi là digital signature

của mesage ban đầu.

30

3. Gộp digital signature vào message ban đầu, công việc này

gọi là ‘’ ký nhận ’’ vào message. Sau khi đã ký nhận vào

message, mọi sự thay đổi trên message sẽ bị phát hiện trong

giai đoạn kiểm tra. Ngoài ra, việc ký nhận này đảm bảo người

nhận tin tưởng message này xuất phát từ người gửi chứ không

phải là ai khác.

Các bước kiểm tra   :

1. Dùng public key của người gửi (khóa này được thông báo

đến mọi người) để giải mã chữ ký số của message.

2. Dùng giải thuật (md5 hoặc sha) hàm băm message đính kèm.

3. So sánh kết quả thu được ở bước 1 và 2. Nếu trùng nhau,

ta kết luận message này không bị thay đổi trong quá trình

truyền và message này là của người gửi.

Mỗi cá nhân khi tham gia vào hệ thống chữ ký điện tử cần

phải được cung cấp một bộ khóa (Public key, Private key)

dùng để định danh cá nhân đó bởi một tổ chức cơ quan có thẩm

quyền và được công nhận trong phạm vi sự dụng.

3.4.2. SSL (Secure Socket Layer)

SSL là giao thức đa mục đích được thiết kế nhằm mã hóa

toàn bộ thông tin đến/ đi giữa hai chương trình ứng dụng một

cổng định trước (socket 443). Giao thức SSL được hình thành

và phát triển đầu tiên năm 1994 bởi nhóm nghiên cứu Netscape

và ngay nay trở thành chuẩn bảo mật thực hành trên mạng

Internet.

31

Phiên bản hiện nay là SSL 3.0 và đang tiếp tục được bổ

xung hoàn thiện.

CHƯƠNG VI: GIAO THỨC THỎA THUẬN KHÓA DIFFIEHELLMAN

4.1. Giới thiệu.

Hình 4.1. Giáo sư Martin Hellman (giữa) cùng đồng nghiệp là Whitfield Diffie(phải) đã khám phá ra mật mã khóa công khai Diffie-Hellman.

32

Năm 1976, một sự đột phá đã thay đổi nền tảng cơ bản

trong cách làm việc của các hệ thống mật mã hóa. Đó chính

là việc công bố của bài viết phương hướng mới trong mật mã

học (New Directions in Cryptography) của Whitfield Diffie và

Martin Hellman. Bài viết giới thiệu một phương pháp hoàn

toàn mới về cách thức phân phối các khóa mật mã. Là hệ

thống đầu tiên sử dụng "public-key" hoặc các khóa mật mã

"không đối xứng", và nó được gọi là trao đổi khóa Diffie-

Hellman (Diffie-Hellman key exchange). Bài viết còn kích

thích sự phát triển gần nhất tức thời của một lớp các thuật

toán mật mã hóa mới, các thuật toán chìa khóa bất đối xứng

(asymmetric key algorithms).

Trao đổi khóa Diffie-Hellman bị cáo buộc rằng nó đã đưuc

phát minh ra một cách độc lập một vài năm trước đó trong Trụ

sở Truyền Thông Chính phủ Anh (GCHQ) bởi Malcolm

J .Williamson). Vào năm 2002, Hellman đã đưa ra thuật toán

được gọi chung là trao đổi khóa Diffie–Hellman–Merkle công

nhận sự đóng góp của cả Ralph Merkle, người đã phát minh ra

thuật toán mã hóa công khai.

Trước thời kỳ này, hầu hết các thuật toán mật mã hóa

hiện đại đều là những thuật toán khó đối xứng (symmetric

key gorithms), trong đó cả người gửi và người nhận phải

dùng chung một khóa, tức khóa dùng trong thuật toán mật mã,

và cả hai người đều phải giữ bí mật về khóa này. Tất cả các

33

máy điện cơ dùng trong thế chiến II, kể cả mã Caesar và mã

Atbash, và về bản chất mà nói, kể cả hầu hết các hệ thống mã

được dùng trong suốt quá trình lịch sử nữa đều thuộc về loại

này. Đương nhiên, khóa của một mã chính là sách mã

(codebook), và là cái cũng phải được phân phối và giữ gìn

một cách bí mật tương tự.

Do nhu cầu an ninh, khóa cho mỗi một hệ thống như vậy

nhất thiết phải đựợc trao đổi giữa các bên giao thông liên

lạc bằng một phương thức an toàn nào đấy, trước khi họ sử

dụng hệ thống (thuật ngữ thường được dùng là 'thông qua một

kênh an toàn'), ví dụ như bằng việc sử dụng một người đưa

thư đáng tin cậy với một cặp tài liệu được khóa vào cổ tay

bằng một cặp khóa tay, hoặc bằng cuộc gặp gỡ mặt đối mặt,

hay bằng một con chim bồ câu đưa thư trung thành …Vấn đề này

chưa bao giờ được xem là dễ thực hiện, và nó nhanh chóng trở

nên một việc gần như không thể quản lý được khi số lượng

người tham gia tăng lên, hay khi người ta không còn các kênh

an toàn để trao đổi khóa nữa, hoặc lúc họ phải liên tục thay

đổi các chìa khóa-một thói quen nên thực hiện trong khi làm

việc với mật mã. Cụ thể là mỗi một cặp truyền thông cần phải

có một khóa riêng nếu, theo như thiết kế của hệ thống mật

mã, không một người thứ ba nào, kể cả khi người ấy là một

người dùng, được phép giải mã các thông điệp. Một hệ thống

thuộc loại này được gọi là một hệ thống dùng chìa khóa mật,

34

hoặc một hệ thống mật mã hóa dùng khóa đối xứng. Hệ thống

trao đổi khóa Diffie-Hellman (cùng những phiên bản được nâng

cấp kế tiếp hay các biến thể của nó) tạo điều kiện cho các

hoạt động này trong các hệ thống trở nên dễ dàng hơn rất

nhiều, đồng thời cũng an toàn hơn, hơn tất cả những gì có

thể làm trước đây.

Mặc dù, bản thân thuật toán là một giao thức chọn khóa

nặc danh (không cần thông qua xác thực) nhưng nó đã cung cấp

ra một cơ sở cho các giao thức xác thực khác nhau khá hoàn

hảo.

Phương thức tiếp nối ngay sau Diffie – Hellman là RSA,

một thể hiện của mã khóa công khai sử dụng thuật toán bất

đối xứng.

4.2. Giao thức thỏa thuận khóa Diffie – Hellman

4.2.1. Khái niệm thỏa thuận khóa.

Thoả thuận khoá: việc trao đổi khoá giữa các chủ thể trong

một cộng đồng nào đó có thể được thiết lập một cách tự do

giữa bất cứ hai người nào khi có nhu cầu trao đổi thông tin.

4.2.2. Giao thức thỏa thuận khóa Diffie - Hellman.

- Trao đổi khóa Diffie – Hellman là thiết lập một khóa chia

sẻ bí mật được sử dụng cho thông tin liên lạc bí mật bằng

cách trao đổi dữ liệu thông qua mạng công cộng. Đây mà một

trong số nhiều phương thức dùng để trao đổi khóa trong ngành

mật mã học.

35

- Phương pháp này không cần có sự can thiệp của một TA ( cơ

quan ủy thác) làm nhiệm vụ điều hành hoặc phân phối khóa.

- Phương pháp này cho phép những người sử dụng có thể cùng

nhau tạo ra một khóa bí mật thông qua một kênh truyền thống

không đảm bảo về độ bảo mật. Khóa bí mật này sẽ được dùng để

ngƣời sử dụng tr o đổi thông tin với nhau.

4.2.2.1. Cách thiết lập giao thức thỏa thuận khóa Diffie -

Hellman.

Tình huống:

+ Alice và Bob muốn chia sẻ thông tin bảo mật cho nhau nhưng

phương tiện truyền thông duy nhất của họ là không an toàn.

Tất cả các thông tin mà họ trao đổi được quan sát bởi Eve kẻ

thù của họ.

+ Làm thế nào để Alice và Bob chia sẻ thông tin bảo mật cho

nhau mà không làm cho Eve biết được?

+ Thoạt nhìn ta thấy Alice và Bob phải đối mặt với một nhiệm

vụ không thể.

Giải quyết tình huống trên:

+ Alice và Bob đồng ý dùng chung về một nhóm cyclic hữu hạn

G và một yếu tố tạo ra g trong G. (Điều này thường được

thực hiện rất lâu trước khi phần còn lại của giao thức, g

được giả định là được biết đến bởi tất cả các kẻ tấn công)

+ Khi Alice và Bob muốn truyền thông tin bảo mật cho nhau có

thể cùng thực hiện theo giao thức sau để trao đổi:

36

1. Alice chon ngẫu nhiên số aA (0 ≤ aA ≤ p-2) bí mật, tính

và gửi bA cho Bob

2. Tương tự, Bob chọn ngẫu nhiên số aB (0 ≤ aB ≤ p-2) bí mật,

tính và gửi bB cho Alice.

3. Alice tính được khóa:

4. Bob tính được khóa:

+ Bây giờ Alice và Bob có cùng khóa chung là:

+ Mô tả giao thức Diffie – Hellman bằng bảng sau:

Chú ý là chỉ có aA, aB và KA, KB là được giữ bí mật. Tất

cả các giá trị còn lại như p, g, bA, bB, đều công khai.

Một khi Alice và Bob tính được khóa bí mật dùng chung,

họ có thể dùng nó làm khóa mã hóa chỉ họ biết để gửi

các thông điệp qua cùng kênh giao tiếp mở. Đương nhiên,

để đảm bảo an toàn, các giá trị aA, aB và p cần được lấy

lớn, g không cần lấy giá trị quá lớn. Thực tế thì g

thường lấy giá trị 2 hoặc 5.

37

4.2.2.2. Sơ đồ giao thức thỏa thuận khóa Diffie - Hellman.

Hình 4.2: Sơ đồ giao thức thỏa thuận khóa Diffie –

Hellman

Sơ đồ dưới đây minh họa phần nào ý tưởng chung. Đầu

tiên, Alice và Bob đã thống nhất về màu sơn chung (màu

vàng), Alice và Bob trao đổi màu sắc đã đƣợc trộn của họ.

Cuối cùng, điều này tạo ra một màu bí mật giống hệt nhau mà

kẻ khác không có khả năng tạo được ra giống vậy. Kể từ đây,

Alice và Bob sẽ trao đổi bằng cách mã hóa và giải mã sử dụng

khóa bí mật đó (thể hiện bằng màu sơn bí mật cuối cùng).

4.2.2.3. Ví dụ bằng số minh họa.

38

1. Alice và Bob thống nhất với nhau chọn số nguyên tố p =

37 và g = 5.

2. Alice chọn một giá trị ngẫu nhiên bất kỳ aA = 7 và bí

mật aA.

Alice tính bA = 57 mod 37 = 18.

Sau đó Alice gửi bA = 18 cho Bob.

3. Bob chọn một giá trị ngẫu nhiên bất kỳ aB = 5 và bí mật

aB

Bob tính bB = 55 mod 37 = 17.

Sau đó Bob gửi bB = 17 cho Alice.

4. Bob nhận được bA = 18 và tính khóa chung: KB = 184 mod

37=15, và bí mật KB

5. Alice nhận được bB =17 và tính khóa chung: KA = 177 mod

37=15, và bí mật KA

4.2.3. Các đặc điểm đặc trưng của giao thức thảo thuận khóa

Diffie - Hellman.

4.2.3.1. Giao thức là an toàn đối với việc tấn công thụ

động.

Giao thức là an toàn đối với việc t n c ng thụ động, nghĩa

là một người thứ b dù biết bA và bB sẽ khó mà biết được KA,B.

39

Xét ví dụ:

1. Alice và Bob thống nhất với nhau chọn số nguyên tố p =

17 và g = 2.

2. Alice chọn một giá trị ngẫu nhiên bất kỳ aA = 6 và bí

mật aA.

Alice tính bA = 26 mod 17 = 13.

Sau đó A ice gửi bA = 13 cho Bob.

3. Bob chọn một giá trị ngẫu nhiên bất kỳ aB = 9 và bí mật

aB

Bob tính bB = 29 mod 17 = 2.

Sau đó Bob gửi bB = 2 cho Alice.

40

4. Bob nhận được bA = 13 và tính khóa chung: KB = 139 mod

17=13, và bí mật KB

5. Alice nhận được bB = 2 và tính khóa chung: KA = 26 mod

17=13, và bí mật KA

Eve là một kẻ nghe trộm – cô ta theo dõi những gì Alice

và Bob gửi cho nhau

nhưng không thể thay đổi nội dung các cuộc liên lạc.

Eve muốn tái thiết lại những thông tin bảo mật mà Alice và

Bob chia sẻ cho nhau.

Eve sẽ phải đối mặt với một nhiệm vụ thực sự khó

khăn.

Dưới đây là các biểu đồ giúp xác định ai biết được giá trị

nào. (Eve là một kẻ nghe trộm.)

41

Ta thấy Eve rơi vào tình thế tiến thoái lưỡng nam. Cô ấy

biết được giá trị của bA, bB vì vậy cô ấy biết được , .

42

Cô ấy cũng biết những giá trị của g và p, nhưng lại không

biết được các giá trị của aA, aB và KA,B

Đây chính là bài toán Diffie - Hellman mà khi

biết bA, bB tìm KA,B, bài toán này tương đương với bài toán

phá mã ElGammal. Bây giờ ta đi chứng minh điều này.

- Phép mật mã ElGammal với khoá K = (p, g, a, β), trong đó β

= ga mod p cho t từ một bản rõ x và một số ngẫu nhiên k ∈

Zp-1 lập được mật mã eK(x, k) = (y1, y2) với y1 = gk mod p,

y2 = xβk mod p. Và phép giải mã được cho bởi y1 = gk mod p.

Giả sử ta có thuật toán A giải bài toán Diffie-Hellman. Ta

sẽ dùng A để phá mã ElGammal như sau:

Cho mật mã (y1, y2). Trước tiên, dùng A cho y1 = gk mod

p và β = ga mod p ta được A(y1,B) = gka = βk mod p. Sau

đó, ta thu được bản rõ x từ βk và y2 như sau:

x = y2(βk)-1 mod p.

Ngược lại, giả sử có một thuật toán khác là B dùng để

phá mã EllGamml , tức là

.Áp dụng B cho β = bA, y1 = bB, y2=1, ta được

mod p tức giải được bài

toán Diffie – Hellman.

Trên thực tế các giá trị của p, aA, aB là rất lớn. Nếu p là

số nguyên tố có ít nhất 300 chữ số, aA và aB có ít nhất 100

chữ số thì thậm chí ngay cả thuật toán tốt nhất được biết

43

đến hiện nay cũng không thể giải đưuợc nếu chỉ biết g, p,

bA, bB kể cả khi sử dụng tất cả khả năng tính toán của nhân

loại. Bài toán này còn được biết đến với tên gọi bài toán

logarit rời rạc. Bài toán logarit rời rạc vẫn còn đang gây

rất nhiều tranh cãi và chưa có thuật giải cụ thể nào.

4.2.3.2. Giao thức là không an toàn đối với việc tấn công

chủ động.

Giao thức là không an toàn đối với việc tấn công chủ động

bằng cách đánh tráo giữa đường. Nghĩa là một người thứ ba

Eve có thể đánh tráo các thông tin trao đổi giữa Alice và

Bob.

Chẳng hạn, Eve thay mà Alice định gửi cho Bob bởi

và thay mà Bob định gửi cho Alice bởi . Như vậy,

sau khi thực hiện giao thức trao đổi khoá, Alice đã lập

một khoá chung với Eve mà vẫn tưởng là với Bob; đồng

thời Bob cũng lập một khoá chung với Eve mà vẫn tưởng

là với Alice. Eve có thể giải mã mọi thông báo mà Alice

tưởng nhầm là mình gửi đến Bob cũng như mọi thông báo mà

Bob tưởng nhầm là mình gửi đến Alice.

Một cách khắc phục kiểu tấn công này là làm sao để Alice

và Bob có kiểm thử để xác nhận tính đúng đắn của các khoá

công khai bA và bB. Người ta đưa vào giao thức trao đổi

khoá Diffie-Hellman thêm vai trò điều phối của một TA để

được một hệ phân phối khoá Diffie-Hellman như một cách44

khắc phục nhược điểm này. Trong hệ phân phối khoá Diffie-

Hellman, sự can thiệp của TA là rất yếu, thực ra TA chỉ

làm mỗi việc là cấp chứng chỉ xác nhận khoá công khai cho

từng người dùng chứ không đòi hỏi biết thêm bất cứ một bí

mật nào của người dùng. Tuy nhiên, nếu chưa thoả mãn với

vai trò hạn chế đó của TA thì có thể cho TA một vai trò

xác nhận yếu hơn, không liên quan gì đến khoá, chẳng hạn

như xác nhận thuật toán kiểm thử chữ ký của người dùng,

còn bản thân các thông tin về khoá (cả bí mật lẫn công

khai) thì do các người dùng trao đổi trực tiếp với nhau.

TÀI LIỆU THAM KHẢOTài liệu tiếng Việt

[1]. Bài giảng An ninh mạng viễn thông. TS. Nguyễn Phạm Anh

Dũng – Học viện công nghệ BCVT.

[2]. Cơ sở lý thuyết mật mã. PGS. TS. Nguyễn Bình, TS. Trần

Đình Sự. Học viện kỹ thuật mật mã. 2006

[3]. Thuật toán mã hóa và ứng dụng. TS. Dương Anh Đức, ThS.

Trần Minh Triết. Đại học Khoa học tự nhiên – Đại học Quốc

gia TP. HCM. 2005

[4]. Bài giảng An ninh mạng (Network security) . Học viện kỹ

thuật mật mã. Phan Đình Diệu, Giáo trình lý thuyết mật mã và

an toàn thông tin, Nhà xuất bản Đại học Quốc gia Hà Nội,

1999.

45

Tài liệu Tiếng Anh

[5]. RSA Cryptography Standard, October 27, 2012.

Địa chỉ trên mạng INTERNET

http://aita.gov.vn

http://tiasang.com.vn/

http://antoanthongtin.vn/

http://www.pcworld.com.vn/

http://123doc.vn/

http://www.wattpad.com/

46