1. Trang chủ
  2. » Luận Văn - Báo Cáo

mã hóa khóa công khai rsa và giao thức thõa thuận khóa diffie - hellman

30 1,4K 7

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 30
Dung lượng 879,25 KB

Nội dung

mã hóa khóa công khai rsa và giao thức thõa thuận khóa diffie - hellman

Trang 1

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 !

Trang 2

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

6 - 12 Tích cực

nghiên cứu hoàn thành tốt nhiệm vụ

2 1021010251 Lưu Doãn Bắc Tìm hiểu thuật

toán mã hóa khóa công khai RSA (CIII)

13-24 Tích cực

nghiên cứu hoàn thành tốt nhiệm vụ

MỤC LỤC

Trang 3

DANH MỤC HÌNH VẼ

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

1 1 Khái niệm

Trang 4

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

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:

Trang 5

– 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 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

Trang 6

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

Trang 7

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

Trang 8

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ủa Receiver trên một Server

chịu trách nhiệm quản lý khoá công khai

- 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ông khai Đó 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

Trang 9

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

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 được mã hóa, người đó cũng không có cách nào giải mã được mẫu tin ban đầu, trừ khi người đó biết được “ secret key

Trong ứng dụng mã hóa bất đối xứng ( ví dụ giải thuật RSA )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ốn truyề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

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)

Trang 10

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.

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

Trang 11

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.

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 1977Trướ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ý

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.

Trang 12

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ã

Trang 13

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:

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

q

p

2. Tính tích của nó

q p

Trang 14

5. Tính giá trị e thỏa mãn điều kiện:ed = 1 mod(ϕ( )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:

Trang 15

(mod q m

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)

Khóa công khai là cặp (e, n) Khóa bí mật là d Hàm mã hóa là:

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

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

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

Trang 16

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

Để 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

Ngày đăng: 28/10/2015, 14:49

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w