bài tập lớn an ninh mạng
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)
và
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