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

Báo cáo mô hình các hệ mã hóa cơ bản và hệ mã hóa rsa

86 0 0
Tài liệu được quét OCR, nội dung có thể không chính xác
Tài liệu đã được kiểm tra trùng lặp

Đ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

Tiêu đề Báo Cáo Mô Hình Các Hệ Mã Hóa Cơ Bản Và Hệ Mã Hóa RSA
Tác giả Lờ Việt Quang, Trần Văn Sơn, Nguyễn Phỳ Chiến, Tơ Quang Linh
Người hướng dẫn Giảng Viờn: Trịnh Viết Cường
Trường học Trường Đại Học Hồng Đức
Chuyên ngành Lý Thuyết Mật Mã
Thể loại báo cáo
Định dạng
Số trang 86
Dung lượng 4,83 MB

Nội dung

Mật mã là một lĩnh vực khoa học chuyên nghiên cứu về các phương pháp và kỹ thuật đảm bảo an toàn và bảo mật trong truyền tin liên lạc với giả thiết sự tồn tại của các thế lực thù địch, n

Trang 1

TRƯỜNG ĐẠI HỌC HỎNG ĐỨC

KHOA CNTT&TT Lớp: K24A - ĐH CNTT

1 Lê Việt Quang

Trang 2

Mục Lục Mục Lục

Lời Nĩi Đầu

Chương I: GIỚI THIỆU LÝ THUYẾT MAT MA

1 Khái Niệm Về Lý Thuyết Mật Mã se 5c sccscseecsersereessrsseserserse

2 Mật Mã Học - Một Số Thuật Ngữ Cơ Bản Trong Cryptography

3 Mục Tiêu Của Mật Mã Học Là Gì ? ng ng ng ng

4, Cac Loai encryption (ma hoa)

4.1 Symmetric Encryption (ma hoa đối XỨTĐ) Quà hp 4,2, Asymmetric Encryption (ma hoa bắt đối bì: An" anh 4.3 Cryptographic hash function (Ham bam mật mã học) -

5 Một Số Lưu Ý Khi Ứng Dụng Crypfographiyy ác ác HH Y ve Š.l, CrypfoØraph HT ng KH 1 008 8 0 00 8 08 5.2 Hash function

6 Kết Luận Về Mật Mã Học s5 5-5 sccesEsetseExstseEEsEssererersrrerrrrerre Chương II : MƠ HÌNH CÁC HỆ MÃ HĨA CƠ BẢN VÀ HỆ MÃ HĨA RSA Âm.) hố ẽ

2 Nguyên Lý Hoạt Động Của Mã Hĩa Cơ Bản Và Hệ Mã Hĩa RSA

3 Các Thành Phần Chính Của Hệ Thống

4 Ưu Điểm Và Nhược Điển - o5 se rsExsExeEEsEEsersErsersrrsersrrereereree

Trang 3

5 Ứng Dụng Của Các Hệ Mã

8 ‹(c ai na o-:

7 Tài Liệu Tham Khảo

§ Giới Thiệu Mã Nguồn Băng Ngôn Ngữ C# -cscsoeceeeeeerrsrerreree 8.1 Hệ Mã Chuyển Dich (caesar)

8.2 Hé MA Thay Thé ( substitution) .ccccscccssscsessssssssssssesscssssssscscsssstssescssseceseans

Trang 4

Lời Nói Đầu Trong mọi thời đại xã hội loài người, van dé bao mat thông tin luôn được quan tâm lớn Từ xa xưa, con người đã sáng tạo ra các hệ mật mã cô điển đề đáp ứng nhu cầu bảo mật thông tin Mật mã học là một ngành có lịch sử từ hàng nghìn năm nay Trong phần

lớn thời gian phát triển của mình (ngoại trừ vài thập kỷ trở lại đây), lịch sử mật mã

học chính là lịch sử của những phương pháp mật mã cô điền - các phương pháp mật mã hóa với bút và giấy, đôi khi có hỗ trợ từ những dụng cụ cơ khí đơn giản

Vào đầu thế ký 20, sự xuất hiện của các cơ cầu cơ khí và điện cơ, chăng hạn như máy Enigma, đã cung cấp những cơ chế phức tạp và hiệu quả hơn cho việc mật mã hóa Sự ra đời và phát triển mạnh mẽ của ngành điện tử và máy tính trong nhimg thap ky gan day da tạo điều kiện để mật mã học phát triển nhảy vọt lên một tầm cao mới Rất nhiều hệ mật

mã hiện đại đã lần lượt ra đời dựa trên cơ sở đại số Modulo và các thuật toán logarithm roirac Nam 1975, IBM công bố Hệ mật DES, khởi đầu cho các hệ mật mã hiện dai

Tiếp theo do la sy ra doi cla cac hé mat mé AES, RSA, DSA, Elgamal Hé mat Elgamal được đề xuất vào năm 1984 trên cơ sở của bài toàn Logarit roi rac, la mot hé mat

Trang 5

Chương I: GIỚI THIỆU LÝ THUYẾT MẬT MÃ

1 Khái niệm về lý thuyết mật mã

Mật mã là một lĩnh vực khoa học chuyên nghiên cứu về các phương pháp và kỹ thuật đảm bảo an toàn và bảo mật trong truyền tin liên lạc với giả thiết sự tồn tại của các thế lực thù địch, những kẻ muốn ăn cắp thông tin đề lợi dụng và phá hoại Tên gọi trong tiếng Anh, Cryptology được dẫn giải nguồn gốc từ tiếng Hy lạp, trong đó kryptos nghĩa là

“che đấu”, logos nghĩa là “từ ngữ”

Cụ thê hơn, các nhà nghiên cửu lĩnh vực này quan tâm xây dựng hoặc phân tích (để chỉ ra điểm yếu) các giao thức mật mã (cryptographic protocols), tức là các phương thức giao địch có đảm bảo mục tiêu an toàn cho các bên tham gia (với giả thiết môi trường có

Trang 6

một thê thông nhất là ngành khoa học mật mã (cryptology) Tuy nhiên, do lĩnh vực thứ hai (cryptanalysis) it được phô biến quảng đại nén dan dan, cach hiệu chung hiện 2 nay là đánh đồng hai thuật ngữ cryptography và cryptology Theo thói quen chung này, hai thuật ngữ này có thê dùng thay thế nhau Thậm chí cryptography là thuật ngữ ưa dùng, phô biến trong mọi sách vở phô biến khoa học, còn cryptology thì xuất hiện trong một phạm

vi hẹp của các nhà nghiên cứu học thuật thuần túy

Mặc dù trước đây hầu như mật mã và ứng dụng của nó chỉ phố biến trong giới hẹp, nhưng với sự phát triển vũ bão của công nghệ thông tin và đặc biệt là sự phô biến của

mạng Internet, các giao dịch có sử dụng mật mã đã trở nên rất pho biến Chăng hạn, ví dụ

điển hình là các giao dịch ngân hàng trực tuyến hầu hết đều được thực hiện qua mật mã Ngày nay, kiến thức ngành mật mã là cần thiết cho các cơ quan chính phủ, các khối doanh nghiệp và cả cho cá nhân Một cách khái quát, ta có thê thấy mật mã có các ứng

dụng như sau:

¢ Với các chính phủ: bảo vệ truyền tin mật trong quân sự và ngoại giao, bảo vệ

thông tin các lĩnh vực tầm cỡ lợi ích quốc gia

¢ Trong cac hoat déng kinh tế: bảo vệ các thông tin nhạy cảm trong giao dịch như

hồ sơ pháp lý hay y tế, các giao dịch tài chính hay các đánh giá tin dung

© - Với các cá nhân: bảo vệ các thông tin nhạy cảm, riêng tư trong liên lạc với thé giới qua các giao dịch sử dụng máy tính và/hoặc kết nối mạng

2 Mật Mã Học - Một Số Thuật Ngữ Cơ Bản Trong Cryptography

Một số thuật ngữ cơ bản của Cryptography bao gồm:

Trang 7

Plaintext (Bản rõ): là thông tin ban đầu chưa được che giấu Nó có thê ở đạng văn

bản, hình anh, video hoặc bất kỳ định dạng khác Plaintext có thê đễ dàng đọc và hiểu bởi

bat ky ai có quyền truy cập vào nó nên nó cần được che dầu va bảo vệ

Ciphertext (Bản mã): Là kết quả của quá trình mã hoá plaintext, là dạng đữ liệu đã được che giấu Ciphertext là vô nghĩa với các bên khác, ngoại trừ các bên trao đôi thông tin với nhau

Key (Khoá): Còn gọi là cryptographic key (khoá mật mã), là một mâu thông tin đưới dạng chuỗi số hoặc chữ cái, được sử dụng trong quá trình mã hoá và giải mã Key là thành phần tối quan trọng, cần được giữ kín Nếu key bị lộ, bat kỳ ai có được key cũng có

thể biết được nội dung của plaintext

Cipher: Là thuật toán dùng để má hoá và giải mã đữ liệu

Decipher (Phá mã): Là thuật toán đùng đề tân công vào ciphertext với mục tiêu tiếp cận đến plaintext mà không cân tới key

Encryption: La qua trinh mã hoá thông tin từ plaimtext thành ciphertext sử dung cipher

Về cơ bản, mục tiêu chính của cryptography bao gồm:

Confidentiality (Tinh bao mat): Chi co cac bén liên quan trong quá trình trao đổi, chủ

sở hữu hoặc người có thâm quyên mới có quyền truy cập vào các thông tin liên quan Integrity (Tính toàn vẹn): Dữ liệu trong quá trình lưu trữ và trao đôi không được thay

đôi hoặc bị mật

Trang 8

Authentication (Tính xác thực): Người nhận phải biết được thông điệp mà họ nhận

được đến từ aI, và xác thực được danh tính người gửi

Non-repudiation (Tính chống chối bỏ): Người gửi không thể chối bỏ được thông điệp

mà họ đã gửi Người gửi sẽ phải chịu toàn bộ trách nhiệm với thông tin mà họ đã gửi

Chúng ta có nhiều loại mã hoá, mỗi loại có mục tiêu khác nhau nên không phải bat cur loại mã hoá nào cũng có thể đảm bảo được toàn bộ cả bốn tính chất trên Cho nên, chúng

ta thường sử dụng kết hợp các loại mã hoá khác nhau nhằm đưa hệ thông đạt ngưỡng an toàn tốt nhất Ví dụ, mã hoá bất đối xứng được sử dụng trong quá trình trao đối secret key của mã hoá đối xứng

4, Cac Loai encryption (ma hoa) -

4.1 Symmetric Encryptfion (mã hoá đôi xứng)

có một cách đề chia sẻ và thông nhất khoá an toản

Một số ứng dụng của mã hoá đối xứng bao gồm:

Trang 9

© - Che giấu dữ liệu: mã hoá đối xứng được dùng đề che giấu các thông tin nhạy cảm,

vi dụ nhu email, file

¢ Chia sẻ tap tin: mã hoá đối xứng sử dụng như một cách che giấu thông tin an toàn khi chỉa sẻ trên mạng máy tính

Ưu điểm lớn nhất của mã hoá đôi xứng là tốc độ Mã hoá đối xứng có tốc độ mã hoá

và giải mã tốt hơn rất nhiều so với mã hoá bắt đối xứng, nên nó thường được sử đụng đề

mã hoá file

Nhược điểm lớn nhất của mã hoá đối xứng là cách chia sẻ key Hai bên cần thống nhất sử dụng chung một key duy nhất một cách an toàn, điều này có thê gây ra một số rủi

ro và có một số khó khăn nhất định

Một số loại mã hoá đối xứng phố biến hiện nay bao gồm :

® - Data Encryption Standard (DES): DES là một mật mã khối sử dụng khóa 56 bit

Nó được phát hành lần đầu tiên vào năm 1977 và hiện không còn được col là an

toàn vì bị phá vỡ bởi thuật toán vét cạn (cxhautive search), mà lý do khoá tương

đối ngắn (56 bit) Hiện nay đã bị thay thế bằng AES

¢ Triple DES (3DES): 3DES 1a mét biến thể của DES sử dụng ba khóa 3DES có độ

dai khoa 112 bit hoặc 168 bit, do đó, nó an toàn hơn DES Nó an toàn hơn DES

nhưng cũng chậm hơn Nhỉn chung, 3DES là một thuật toán mã hóa an toàn và hiệu quả, nhưng nó không còn được coi là lựa chọn tốt nhất cho các ứng dụng bảo mật hiện đại

e Advanced Encryption Standard (AES): AES la mét mat ma khéi sir dụng khóa 128

bit, 192 bit hodc 256 bit, được coi là thuật toán mã hoá đối xứng an toàn nhất hiện

có Nó được phát trién béi National Institute of Standards and Technology (NIST),

và được sử dụng phô biến trên toàn thế giới hiện nay

4.2 Asymmetric Encryption (ma hoa bắt đối xứng)

Asymmetric Encryption, hay c6 tén khac la public-key encryption (mã hoá công khan)

là một loại kỹ thuật mã hoá sử dụng 2 key cho ca quá trình mã hoá và giải mã

Trang 10

Hai key này đi thành cặp, bao gồm private key và public key Private key sẽ được giữ

bí mật, dùng đề giải mã dữ liệu Public key sẽ được chia sẻ với tat cả mọi người, dùng để

dùng đê mã hoá dữ liệu

'Tuỳ thuộc vào cách sử dụng key, ta có hai chức năng chính như sau:

® - Khi muốn trao đổi thông tin an toàn, sender sẽ sử dụng public key của receiver đề encrypt thong tin và gửi đi Sau do, receiver sé lay private key cua minh dé decrypt thông tin, khi đó, thông tin đã được trao đổi thành công và an toàn

Trang 11

© _ Trường hợp ngược lại sử dụng secret key dé encrypt va public key dé decrypt, ta gọi nó là ky s6 (sign), và thông điệp sau khi bi sign goi la chit ky s6 (digital signature) được đính kèm vào văn bản công khai mà bên gửi đã gửi cho các bên liên quan

Ý nghĩa chính của digital signature là chỉ có người sở hữu secret key mới có thé sign được signature trên văn bản công khai, do đó, danh tinh của sender được đảm bao

Trang 12

\ z / Hello Alice K ——{ b Ver ——— t ae e \ ;

Ưu điểm lớn nhất của mã hoá bất đối xứng là cách thức trao đôi khoá rất an toàn Hai bên chỉ cần gửi public key cho nhau đề trao đổi mà không cân lo ngại về cách thức trao đôi khoá Public key dù có bị các bên khác lấy được cũng không thé str dung

Nhược điểm chính của mã hoá bắt đối xứng là tốc độ Mã hoá bất đối xứng chạy chậm nên chỉ phù hợp mã hoá các thông tin có kích thước nhỏ và không phù hợp để sử

dụng trên các văn bản lớn

Một số mã hoá bắt đối xứng phố biến hiện nay:

¢ RSA: RSA là từ viết tắt của Rivest-Shamir-Adleman, tên của ba nhà khoa học

máy tính đã phát triển nó vào năm 1978 RSA dựa trên độ khó của việc phân tích

12

Trang 13

các số nguyên tổ lớn Mặc dù có tuổi đời rất lâu, RSA vẫn được coi là một trong

những thuật toán mã hoá tốt nhất hiện nay

e© - ElGamal: ElGamal là một thuật toán mã hóa bất đối xứng được phát triển bởi Taher Elgamal vào năm 1985 Nó dựa trên bài toán logarit rời rạc, một bài toán

toán học phức tạp vẫn chưa có giải pháp hiệu quả ElGamail được coi là an toàn

như RSA, nhưng có hiệu suất tốt hơn

e Diffie-Hellman: Diffie-Hellman la một thuật toán chia sẻ bí mật được phát triển

boi Whitfield Diffie va Martin Hellman vao năm 1976 Nó được sử dụng dé tao ra một khóa chung giữa hai bên mà không cân chia sẻ khóa đó trước đây Giống với

ElGamal, Difiie-Hellman là một thuật toán an toàn dựa trên bài toán logarit rời

rạc

4.3 Cryptographic hash function (Hàm băm mật mã học)

Hash function (ham băm) là một hàm toán học cho phép chuyên một chuỗi ký tự có

độ dài bất kỳ thành một chuỗi có độ dài có định

Cryptographic hash function (hàm băm băm mật mã học) là một hàm băm nhưng

có thê một số tính chất phù hợp hơn với mật mã học

Trong nhiều tài liệu, các tác giả cũng rút gọn crytographic hash function thành hash function Bài viết này cũng sẽ rút gọn khái niệm trên thành hash function đề tránh xung đột

Chuỗi sau khi biến đôi gọi là hashed value (giá trị băm) Vì tính chất đặc thù này,

chúng ta sẽ chỉ có một số lượng hữu hạn các hashed value và có thể xảy ra hiện tượng hai input trùng một hashed value

Cac dac tinh ctia hash function bao gom :

® - Uniformity (Tính đồng nhất): Một hashing function tốt cho phép mọi giá trị băm được tạo ra có xác suất giống nhau Ngoài ra, uniformity còn có thê tính toán và

đo lường được thông qua Chi-squared test

Trang 14

Efficiency (Tính hiệu quả): Hashing function nên dễ tính toán, tốc độ xử lý một chuỗi đầu vào cần có thời gian phù hợp

Determinism (Tính xác định): Luôn trả về một kết quả nếu input không đổi Non-reversibility (Tính một chiều): Sẽ rất khó có thê đáo ngược từ hashed value sang input

Weak collision resistance (Tinh khang va cham yéu): Gia str co gia tri input x, kho

có thé tim ra mét y |= x voi H(y) = H(x)

Strong collision resistance (Tinh khang va cham manh): Kho co thé tim được một cap x, y bat ky sao cho H(x) = H(y)

Mot số ung dung cua hash function bao gồm:

Verifying the integrity (Dam bao tinh toàn ven đữ liệu): Người ta thường sử dụng một mã hashed khi gửi kèm với đữ liệu gốc đề đảm bảo rằng thông tin của sender toàn vẹn trong quá trình trao đôi

Signature generation and verification (Tao, xac minh chit ky): Khi str dung signature, ngudi ta khong str dung toan bộ thông tin để ký mà chỉ sử dung hashed value cua thong tin do

Password verification (Chứng thực mật khẩu): Mật khẩu trong cơ sở đữ liệu sẽ không bao giờ được lưu trữ ở plamtext, mà buộc phải thông qua cac hashing function đề lưu trữ

Một số hash function phố biến bao gồm:

MD5: MD5 được Ronald Rivest thiết kế vào năm 1991 dé thay thế hàm băm MD4 trước đó Nó tạo ra hashed value có 128 bít Hiện đã bị phá nên không còn được

ưu tiên sử dụng

SHA0: Là phiên ban đầu tiên của nhóm thuật toán SHA, được công khai năm

1991 Tuy nhiên sau đó bị rút lại do một lỗi bảo mật nghiêm trọng không được

công bó, và được thay thế bằng SHAI

Trang 15

¢ SHAI: Duoc thiét ké boi United States National Security Agency, SHA1 co thé

tao ra hashed value cé 160 bit Diém yếu của SHAI đã được công bé, vi thé, sau năm 2010 đã ít được sử dụng, các tiêu chuẩn cũng loại bỏ SHAI

e - SHA2: Là phiên bản nâng cấp của SHAI SHA2 có thê tạo ra nhiều giá trị đầu ra, bao gồm: SHA2-224, SHA2-256, SHA2-384, SHA2-512, SHA2-512/224, SHA2- 512/256 SHA2 vẫn còn sử dụng tốt cho đến ngày hôm nay

s SHA3: Là phiên bản tốt nhất của nhóm thuật toán SHA Mặc dù cùng nhóm với SHA, tuy nhiên cấu trúc bên trông SHA3 rất khác so với các thuật toán mã hoá trước đó, nó có phan giéng voi MDS

Giống SHA2, SHA3 cũng cung cấp nhiều giá trị đầu vào, bao gồm: SHA3-224, SHA3-256, SHA3-384, SHA3-512, SHA3-512/224, va SHA3-512/256

¢ SHAKE: Mot bién thé cha SHA-3, SHAKE cho phép tao ra cac ham bam có độ dài đầu ra tùy ý SHAKE có hai biến thể: SHAKE-128 va SHAKE-256, cho phép

tạo ra các hàm băm có độ dài đầu ra là 128 bit và 256 bit tương ứng

® cSHAKE: Một biến thê của SHAKE cho phép thêm một số tùy chọn tùy chỉnh,

chăng hạn như độ dài của đầu ra, giá trị nonce và số vòng lặp cSŠHAKE cũng là một biến thể của SHA3

® TupleHash: Một hàm băm mật mã được thiết kế để băm các mảng của các chuỗi TupleHash là một phiên bản khác của SHA3

Cac hash function SHAKE, cSHAKE va TupleHash déu dure phat trién boi NIST (National Institute of Standards and Technology) va déu duoc m6 ta trong FIPS 202: SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions

5 Mot Số Lưu Ý Khi Ứng Dung Cryptography

5.1 Cryptography

Cryptography gan nhu khéng co diém yéu nao néu str dung ding cach Nhung

trong qua trinh str dung, ching ta co thé mac một số lỗi cơ bản sau:

Trang 16

® Sử dụng key quá yếu: Việc sử đụng một key quá yếu sẽ tạo điều kiện cho attacker có thê đoán, thậm trí địch ngược được thông tin đã được encrypt

¢ - Sử dụng cryptography đã lỗi thời: Tránh việc sử dụng các cryptography đã cũ

vi chúng không còn đủ khả năng bảo vệ

¢ Bao quan secret key kém: Viéc dé 16, lam mat secret key la việc tôi ky Cần có cac chinh sach bao quan cac secret key that tot

¢ Khong cap nhat key: Mot secret key chi đủ dé bảo vệ thông tin trong một khoảng thời gian nhất định, do đó chúng ta cần thay thế các key cũ trong quá trình trao đổi thông tin

5.2 Hash function

Cũng giống như cryptography, hash function gần như không có điểm yếu nếu

sử dụng đúng cách Tuy nhiên, ta cần lưu ý một số trường hợp cụ thé sau:

® Sử dung hashed value để lưu trữ mật khẩu: Dù không thé bi dich ngược, nhưng attacker van co thé tan céng bang ky thuat dictionary attack, thậm trí brute-force attack nhằm tiếp cận password

® - Sử dung hashed value lam ID: Việc định danh dữ liệu bằng hashed value tiềm ân rủi ro xung đột (collision) vì hai đữ liệu trùng mot hashed value la hoàn toàn có

thê xảy ra Chúng ta có thê cải thiện hiệu suất tìm kiếm bằng hashed value,

nhưng không nên sử dụng nó như một định danh

6 Kết Luận Về Mật Mã Học

Các hàm mã hoá rất mạnh mẽ, dễ sử dụng và đáng tin cậy Nếu sử dụng đúng cách, hệ thông của chúng ta sẽ có một lớp phòng thủ vững chắc, hoàn toàn có thể

chống lại sự xâm phạm của kẻ tấn công

Tuy nhiên, nếu sử dụng không đúng chuẩn, sai cách sử dụng sẽ đề lại lỗ hồng bảo mật cực lớn đến hệ thong, dữ liệu, thậm trí máy chủ của chúng ta đều có thê bị đánh

cắp, chiếm đoạt hoặc phá hoại

Ngoài ra, chúng ta cần thường xuyên cập nhật các phần mềm, tránh trường hợp các giao thức, thậm trí các hàm mã hoá mà chúng ta sử dụng không còn hiệu quả

Trang 17

Trong chiến tranh thê giới thứ hai, cỗ máy Enigma được coi là bất khả chiến bại thời bấy giờ, đã bị cỗ máy Bombe do Alan Turing phát minh giải mã thành công, giúp một phần không nhỏ cho quân Đồng Minh chiến thắng Phát xít Đức

và duoc tin dung

Trang 18

Chương II : MÔ HÌNH CÁC HỆ MÃ HÓA CƠ BẢN VÀ HỆ MÃ RSA

1 Giới Thiệu

Trong thé ký 21, việc bảo vệ thông tin trở thành một van dé cap bach, dac

biệt là khi dữ liệu truyền qua các kênh công cộng như internet Các hệ mã hóa dong vai tro quan trọng trong việc bảo vệ thông tin khỏi sự truy cập trái phép Dựa trên những kiến thức tìm hiểu được về , nhóm em sẽ triển khai bốn hệ mã

hóa pho bién: Vigeneére, hé ma thay thế, hệ mã hoán vị và hệ mã dịch chuyên và

mô phỏng các hệ mat ma trén nén tang cua phan mem Visual

Giao dién m6 phong :

Permutation Cipher Vigenére cipher Substitution Cipher Alphabet

~ Key: 0 $

Enter plain text

Enter cipher text

Trang 19

2.1 Vigenere

Hệ mã hóa Vigenere Là một phương pháp mã hóa cô điển sử dụng một bảng chữ cái dạng lưới và một từ khóa để mã hóa thông điệp Quá trình mã hóa diễn ra bằng cách di chuyền từ khóa theo từng ký tự trong thông điệp và thực hiện các phép toán mod đề tạo ra văn bán mã hóa

2.2 Hệ Mã Thay Thế

Trong hệ mã thay thế, mỗi ký tự trong thông điệp được thay thê bằng một

ký tự khác dựa trên một quy tắc xác định Quy tắc này thường được biéu dién thông qua một bảng ánh xạ, thay đổi từng ký tự thành một ký tự tương ứng 2.3 Hệ Mã Hoán Vị

Trong hệ mã hoán vi, cac ky ty trong thông điệp được hoán đổi vị trí theo một quy tắc cụ thể, thường dựa trên một khóa hoán vị Quá trình này tạo ra một

văn bản mã hóa mà không thay đôi các ký tự mà chỉ hoán đổi vị trí của chúng

2.4 Hệ Mã Dịch Chuyển

Hệ mã dịch chuyên là một phương pháp mã hóa dựa trên việc dịch chuyển

các ký tự của thông điệp theo một số bước cô định Các bước địch chuyển này

có thê được thực hiện theo chiều ngang, chiều dọc hoặc theo các hướng khác nhau

3 Các Thành Phần Chính Của Hệ Thống

Mỗi hệ mã hóa có các thành phần chính như khóa, quy tắc mã hóa và quy tắc giải mã Khóa định nghĩa cách thức ánh xạ thông điệp gốc thành thông điệp mã hóa và ngược lại Quy tắc mã hóa và giải mã là quy trình cụ thê đề thực hiện việc chuyển đổi thông

điệp

Trang 20

4 Ưu Điểm Và Nhược Điểm

Mỗi hệ mã hóa có ưu điểm và nhược điểm riêng Ví dụ, Vigenére có thể bảo mật tốt

nếu khóa đủ đài, nhưng dễ bi phá vỡ nếu khóa quá ngắn Hệ mã thay thế có thể đễ dàng bị phá vỡ bằng phương pháp phân tích tần suất, trong khi hệ mã hoán vị có thê

bảo mật tốt hơn đối với các thông điệp dài

5 Ứng Dụng Của Các Hệ Mật Mã

Các hệ mã hóa đã được áp dụng rộng rãi trong nhiều lĩnh vực như truyền thông an

toàn, bảo mật đữ liệu và mã hóa tin nhắn trong các ứng dụng di động và web

6 Kết Luận

Các hệ mã hóa là công cụ quan trọng trong bảo mật thông tin, đóng vai trò quan trọng trong việc báo vệ dữ liệu quan trọng khỏi sự truy cập trái phép Tuy nhiên, việc

chọn lựa và triển khai hệ mã hóa phù hợp là rất quan trọng đề đảm bảo tính bảo mật

và hiệu suất của hệ thống

7 Tài Liệu Tham Khảo

8 Giới thiệu mã nguồn bằng ngôn ngữ C#

8.1 Hệ mã chuyển dich (caesar)

public string shiftCipher(int key, string input)

{

Trang 21

//Lay ra chudi alphabet

string alphabet = "ABCDEFGHIJKLMNOPORSTUVWXYZ";

//Lay d6 dai cia chudi

int alphabetLength = alphabet.Length;

//Khởi tạo chuỗi kết quả cho việc mã hóa và dung LinQ dé lặp qua từng phần tử trong chuỗi input

string result = new String(input.Select(c =>

{

/IKiểm tra c là ký tự hay chữ số

if (char.IsLetterOrDigit(c))

{

//Kiém tra xem néu c là chữ in hoa thi gan base char 14 A ngugc lai

char baseChar = char.IsUpper(c) ? 'A': 'a';

Ep kiểu về char , khi này các kí tự sẽ là giá trị trơng đương trên bang ASCII

//Ap dung thuat toan dich chuyén shift cipher

return (char)((c + key - baseChar + alphabetLength) %

Trang 22

Hệ mã Caesar

Hàm shift cipher bạn cung cấp sử dụng thuật toán mã hóa Caesar, _còn được gọi là

mã dịch chuyền Thuật toán này là một hệ mã đơn giản thay thế mỗi ký tự trong văn bản bằng một ký tự khác cách nó một số vị trí nhất định trong bảng chữ cái

Duyệt qua từng ký tự c trong văn bản

Kiểm tra c là chữ cái hay chữ só

Nếu là chữ cái hoặc chữ số:

Xác định ký tự cơ bản Basechar dựa trên việc c là chữ hoa hay chữ thường (A cho chữ hoa,

a cho chữ thường)

Chuyển đổi c sang giá tri ASCII

Áp dụng công thức (c + key - baseChaz + aiphabeLtrength) $ alphabetLength + baseChar dé tinh toan vị trí mới của ký fự sau khi dịch chuyên

Chuyển đổi giá tri ASCII mới sang ký tự tương ứng

Nếu không phải chữ cái hoặc chữ số: Giữ nguyên ký tự c

Kết hợp kết quả: Ghép các ký tự đã mã hóa hoặc giữ nguyên để tạo thành chuỗi kết quả

Hạn chế:

Thuật toán Caesar khá đơn giản và dễ bị giải mã

Phương pháp này không thay đổi tần suất xuất hiện của các ký tự trong văn bản, dẫn đến việc dễ dàng đoán được nội dung

Ứng dụng:

Hệ mã Caesar thường được sử dụng trong các trò chơi giải trí, giáo dục hoặc các

trường hợp cân bảo mật thông tin đơn giản

8.2 Hệ mã thay thế ( substitution)

public string EncryptSubstitution(string text, int key)

Trang 23

foreach (char c in text ToUpper())

{

if (char.IsLetter(c))

{

int index =c -'A';

index = (index + key) % 26;

encryptedText += (char)('A’ + index);

Trang 24

index = (index - key + 26) % 26;

decryptedText += (char)('A' + index);

else

decryptedText += c;

}

return decryptedText;

Cách thức hoạt động của hệ thống mã hóa thay thế đơn giản:

1 Chuyển đổi văn bản:

Toàn bộ văn bản được chuyền đổi thành chữ hoa để đảm bảo tính nhất quán trong quá trình

mã hóa

2 Mã hóa từng ký tự:

Duyệt qua từng ký tự c trong văn bản

Kiểm tra œ là chữ cái hay không

Nếu là chữ cái:

Xác định vị trí của c trong bảng chữ cái (ví dụ: 'A' là vị trí 0, 'B' là vị trí 1, Vv.V.)

Trang 25

ma key va lay theo modulo 26 ((index + key) % 26)

Lấy ký tự tại vị trí mới trong bảng chữ cái

Nếu không phải chữ cái:

Bảo mật thông tin:

Mã hóa email: Hệ mã thay thế có thể được sử dụng để mã hóa email, đảm bảo chỉ người nhận

có khóa giải mã mới có thê đọc được nội dung

Bảo vệ dữ liệu cá nhân: Hệ mã thay thế có thể được sử dụng để mã hóa dữ liệu cá nhân như

tên, địa chỉ, sô điện thoại, v.v., giúp bảo vệ thông tin khỏi bị đánh cắp

Lưu trữ mật khẩu: Hệ mã thay thế có thể được sử dụng đề lưu trữ mật khẩu một cách an

toàn, giúp giảm nguy cơ bị hacker tân công

Xác thực danh tính:

Chữ ký điện tử: Hệ mã thay thế có thể được sử dụng để tạo chữ ký điện tử, giúp xác thực

danh tính của người gửi email hoặc tài liệu điện tử

Xác thực người dùng: Hệ mã thay thế có thể được sử dụng để xác thực người dùng trong các hệ thống đăng nhập, giúp đảm bảo chỉ người dùng hợp lệ mới có thể truy cập hệ thống

Giáo dục và giải trí:

Trò chơi giải đố: Hệ mã thay thế thường được sử dụng trong các trò chơi giải đố, giúp tăng tính thử thách và thú vị cho trò chơi

Dạy học: Hệ mã thay thế có thể được sử dụng đề dạy học sinh về các khái niệm mã hóa và

bảo mật thông tin

Ngoài ra, hệ mã thay thế còn có thể được ứng dụng trong nhiều lĩnh vực khác như

quân sự, ngoại giao, y tê, v.v

Ưu điểm của hệ mã thay thế:

Trang 26

Dễ dàng triển khai: Hệ mã thay thế có thể được triển khai dễ dàng với các công cụ và kiến

thức cơ bản

Hiệu quả: Hệ mã thay thế có thể cung cắp mức độ bảo mật cao cho thông tin

Linh hoạt: Hệ mã thay thế có thể được sử dụng cho nhiều mục đích khác nhau

Nhược điểm của hệ mã thay thế:

Khả năng bảo mật: Hệ mã thay thế có thể bị phá vỡ nếu kẻ tấn công có đủ thời gian và nguồn

Trang 27

{

int plainCharindex = c - ‘A’;

int keyCharlndex = key[keylndex] - 'A';

int encryptedCharlndex = (plainCharlndex + keyCharlndex) % 26;

char encryptedChar = (char)(A' + encryptedCharlndex); encryptedText += encryptedChar;

Trang 28

key = key ToUpper();

int cipherCharIndex = c - ‘A’;

int keyCharlndex = key[keylndex] - 'A';

int decryptedCharlndex = (cipherCharlndex - keyCharlndex) % 26; char decryptedChar = (char)(A' + decryptedCharlndex);

Trang 29

}

EncryptVigenere() la ham ma hóa hệ mật mã vigenere

DecryptVigenere() la ham giai ma hé mat ma vigenere

Giải thích mã hóa Vigenère:

Mã Vigenère bạn cung cấp thực hiện mã hóa và giải mã văn bản bằng phương pháp

mã hóa thay thế đa chữ cái Thay vì sử dụng một khóa duy nhất như mã Caesar, Vigenére sử dụng một chuôồi khóa lặp lại đê mã hóa từng ký tự trong văn bản

Hàm EncryptVigenere:

Tham số:

plainText: Văn bản cần mã hóa (kiểu s+z: no)

xey: Khóa mã hóa (kiểu s+ +: nọ)

Hoạt động:

1 Khởi tạo biến eaczyptedTrext để lưu trữ văn bản đã mã hóa (kiểu s+ +: nọ)

2 Chuyển đổi cả văn bản o' 2 ¡ "rext: và khóa ‹ey thành chữ hoa

3 Khởi tạo biến keyIndex để theo dõi vị trí trong khóa

4 Duyệt qua từng ký tự c trong p1ainText

Nếu là chữ cái:

Tính toán chỉ số ký tự trong bảng chữ cái (c1 2: schazTne+x) và chỉ số khóa tương ứng

(keyCharTndex)

Tính toán chỉ số ký tự mã hóa mới (e:cryptedCha+zTndex) bằng cách

c6ng plainCharIndex Va keyCharIndex theo modulo 26

Chuyén déi encryptedcharIndex thanh ky ty chi? cai twong tng va thém vao encryptedText TAng keyIndex va đặt lại về 0 nếu vượt quá độ dài khóa

Nếu không phải chữ cái:

Giữ nguyên ký tự c và thêm vào encrypcedText

5 Trả về encrzyoredText chứa văn bản đã mã hóa

Hàm DecryptVigenere:

Trang 30

Tham số:

cipherText: Van ban d& ma héa (kiéu string)

key: Khéa ma hoa (kiéu st ring)

Hoạt động:sz

1 Khởi tạo biến decryptedTrex: để lưu trữ văn bản đã giải mã (kiểu s+ + nọ)

2 Chuyển đổi cả văn bản c¡ ohezText+ và khóa xey thành chữ hoa

3 Khởi tạo biến keyIndex để theo dõi vị trí trong khóa

4 Duyệt qua từng ký tw c trong cipherText

Nếu là chữ cái:

Tính toán chỉ số ký tự trong bảng chữ cái (c¡ phezCharTndex) và chỉ số khóa tương ứng

(keyCharTndex)

Tính toán chỉ số ký tự giải mã mới (dscryptedCharTndex) bằng cách

try keyCharIndex tlv cipherCharIndex theo modulo 26

Chuyén déi decryptedcharIndex thanh ky tu chi cai twong ứng và thêm vào decryptedText TAng keyIndex va đặt lại về 0 nếu vượt quá độ dài khóa

Nếu không phải chữ cái:

Giữ nguyên ký tự c va thém vao decryptedText

5 Trả về decrypredText chứa văn bản đã giải mã

8.4 Hé Hoan vi (permutation)

public string permutationCipher(string plaintext, string key)

{

int blockSize = key.Length;

int blockCount = (int)Math.Ceiling((double)plaintext.Length / blockSize);

char[,] matrix = new char[blockCount, blockSize];

int plaintextIndex = 0;

Trang 31

int[] order = GetOrder(key);

char[,] sortedMatrix = new char[blockCount, blockSize];

for (int i = 0; i < blockCount; i++)

{

for (int j = 0; j < blockSize; j++)

{

Trang 32

//LAy ra thứ tự của các phần tử trong khóa key

private int[] GetOrder(string key)

{

/¡ Sắp xếp key và lấy thứ tự của các ký tự

char[] keyArray = key ToCharArray(); Array.Sort(keyArray);

inf[] order = new int[key.Length];

for (int i = 0; i < key.Length; i++)

Trang 33

for (int | = 0; j < key.Length; j++)

Giải thích mã hóa hoán vi (permutation cipher):

Đoạn mã C# bạn cung cấp thực hiện mã hóa văn bản bằng phương pháp hoán vị Thay vì thay thê các ký tự, phương pháp này sắp xếp lại vị trí của các ký tự trong văn bản dựa trên một khóa nhât định

Ham permutationCipher:

Tham số:

plaintext: Van ban can ma héa (kiéu string)

key: Khéa ma hoa (kiéu st ring)

Hoạt động:

1 Xác định kích thước khối dựa trên độ dài khóa (s1ecl-s: ze)

2 Tính toán số lượng khối cần dùng để chứa toàn bộ văn bản (»1ock:Count)

Trang 34

7

8

Duyét qua tlrng ky tu trong plaintext va dién vao ma tran

Xác định thứ tự sắp xếp các cột dựa trên khóa (ozdez)

Tao ma trận méi sortedMatrix bằng cách sắp xếp các cột của ma +: > theo thứ

Sắp xếp các ký tự trong key theo tht tw bang chi? cai

Tao mang order dé Iu the ty cla cdc ky ty trong key

Duyệt qua từng ký tự trong «ey va xac dinh vi tri của nó trong mảng đã sắp xếp

Trả về mang order

Mô tả thuật toán:

1 Văn bản được chia thành các khối có kích thước bằng độ dài khóa

2 Cac ky ty trong mỗi khối được sắp xếp lại theo thứ tự của các ký tự trong khóa

3 Các khối đã được sắp xếp được xáo trộn theo một cách nào đó để tăng độ phức tạp Lưu ý:

« _ Phương pháp hoán vị đơn giản này dễ bị giải mã nếu biết khóa mã hóa

« _ Có thể tăng độ bảo mật bằng cách kết hợp hoán vị với các phương pháp mã hóa khác,

ví dụ nhự mã hóa thay thê

Trang 35

Mã Hóa Và Giải MÃ Hệ Mã Hóa RSA

RSA_Math math = new RSA _Math();

public string Encrypt_RSA(string filenguon, string filedich, BigInteger pk, BigInteger N, int bitlength)

StringBuilder bit = new StringBuilder();

FileStream fdich = new FileStream(filenguon, FileMode.Open); //Đọc file nhị phân

Trang 36

long dich = fdich.Length;

while (dau < dich)

bit.Append(Convert.ToString(fdich.ReadByte(), 2).PadLeft(8, 'fi')); //Đọc hết file chuyển về nhị phân lưu vào string bit

dau++;

}

fdich.Close();

dich = bit.Length / sobitcat; //Tính số lần lặp

string bitthuong = bit.ToString(); //Chuyển về string thường mục đích để sử dụng lệnh substring

StringBuilder bitghi = new StringBuilder();

int i;

BigInteger tam, ghi;

for (i = fi; i < dich; i++) //Ma héa

tam = math.BinaryToNumber(bitthuong.Substring(sobitcat * i, sobitcat)); //Chuyén từ nhị phân thành số

ghi = math.Fast_Exponent(tam, pk, N); //Thực hiện mã hóa

bitghi.Append(math.BigIntegertoBinary(ghi).PadLeft(bitlength, 'fi')); //Mã hóa xong chuyển số thành lại nhị phân

FileStream ghif = new FileStream(filedich, FileMode.Create);

string bitghiv = bitghi.ToString(Q);

for (i = fi; ¡ < bitghiv.Length / 8; i++) //Mã hóa xong, ghi vào file

FileStream fnguon = new FileStream(filenguon, FileMode.Open);

StringBuilder dich = new StringBuilder();

long dem = fi, len = fnguon.Length;

while (dem < len) //Néu chua doc hét file

dem++;

dich.Append(Convert.ToString(fnguon.ReadByte(), 2).PadLeft(8, 'fi')); //Chuyển hết

về dạng nhị phân, đọc được bao nhiêu chuyển về dạng nhị phân

Trang 37

string bitdoc = dich.ToString();

BigInteger ma, ro;

StringBuilder bitro = new StringBuilder();

StringBuilder bithientai = new StringBuilder();

for (int i = fi; i < bitdoc.Length / bitlength; i++)

{

Ma = math.BinaryToNumber(bitdoc.Substring(bitlength * i, bitlength)); //Chuyén vé

ro = math.Fast_Exponent(ma, sk, n); //Giải mã

bithientai.Clear(); //Lam rong mang

bithientai Append(math.BigIintegertoBinary(ro)); //Thém vao string builder while (bithientai.Length % 8 != fi) bithientai.Insert(fi, 'fi'); //Nếu bit không chia hết cho 8 thêm các số fï ở đầu

bitro.Append(bithientai);

FileStream filedi = new FileStream(filedich, FileMode.Create); //Đọc file nhị phân

string bitroghi = bitro.ToString();

for (int i = fi; i < bitroghi.Length / 8; i++)

filedi.WriteByte(Convert.ToByte(bitroghi.Substring(8 * ¡, 8), 2)); //Ghi lại bản rõ vào

file

}

filedi.Close(); //DOng file

return "Decrypt Successfully";

Trang 38

if (@ == 1) return true; // a = 1 la s6 nguyên tố cùng nhau

else return false; // khéng phai

}

public BigInteger randombit(int size) //Là hàm random các số nguyên lớn {

//Khai báo thư viện Random

Random random = new Random();

BitArray bits; //Tao 1 mang bitarray

byte[] byteArray = new byte[size / 8]; //Tiến hành random

random.NextBytes(byteArray); //Random

bits = new BitArray(byteArray); //Copy vao bit array

/Ni khi random byte sé cé 2 trường hợp xảy ra

bits.Set(size - 1, false); //Tiến hành set bit

bits.CopyTo(byteArray, fi); //Copy vao mang byte

BigInteger k = new BigInteger(byteArray); //Covert vé hé 1fi

//Chuyén thap phan sang nhi phan

public string BigIntegertoBinary(Biginteger a)

Trang 39

{

//res là biến kết quả

BigInteger res = fi;

phan

foreach (char c in value)

res <<= 1; //Tương đương với res = res * 2; -

res += c == '1'?1:fi; /Nếu c bằng 1 thi cộng 1, nếu sai cộng fi

res = (res * res) % mod;

if (b[i] == '1') res = (res * a) % mod;

//Kiém tra tinh nguyén té Miller rabin

if (num == 2 || num == 3) return true; //2 va 3 la snt

if (num < 2 || num % 2 == fi) return false; //Cac s6 bé hon fi va s6 chan không phải là snt BigInteger tempnum = num - 1;

Trang 40

Biglnteger x = Fast_Exponent(a, d, num); //Tính a^d mod nuum

if ((x == 1) || (x == (num - 1))) continue; //Nếu bằng 1 hoặc num-1 thì nghỉ ngờ là snt, chuyển qua bước lặp khác

for (j = fi; | < s; j++)

{

x = Fast_Exponent(x, 2, num);

if (x == (num - 1)) break; //nghi ngờ là snt

else return false;

}

if (| == s) return false; //Nếu j == s -> Không phải là snt

return true;

Giai thich chi tiét ma C# vé RSA

Cau truc ma:

o Decrypt_RSA(string filenguon, string filedich, BigInteger sk,

BigInteger n, int bitlength): Giai ma RSA

Chức năng:

‹ _ Lớp RSA_Crypto cung cấp các phương thức mã hóa và giải mã file bằng

thuật toán RSA

« - Nó sử dụng các hàm toán học từ lớp RSA_Math để hỗ trợ các phép tính cần thiết cho RSA

Cách thức hoạt động:

1 Mã hóa RSA (phương thức Encrypt_RSA):

* Đọc file nguồn: Mở file nguồn ở chế độ đọc nhị phân và đọc nội dung

thành chuỗi nhị phân

Ngày đăng: 03/12/2024, 16:27

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

TÀI LIỆU LIÊN QUAN

w