Bài học mật mã. Mật mã khối hiện đại. Chế độ thay thế đơn giản với sự tham gia. Các phương pháp mã hóa cơ bản

Nhu cầu mã hóa thư từ nảy sinh từ thế giới cổ đại và mật mã thay thế đơn giản xuất hiện. Những thông điệp được mã hóa đã quyết định số phận của nhiều trận chiến và ảnh hưởng đến tiến trình lịch sử. Theo thời gian, con người ngày càng phát minh ra nhiều phương pháp mã hóa tiên tiến hơn.

Nhân tiện, mã và mật mã là những khái niệm khác nhau. Đầu tiên có nghĩa là thay thế mọi từ trong tin nhắn bằng một từ mã. Thứ hai là mã hóa từng ký hiệu thông tin bằng một thuật toán cụ thể.

Sau khi toán học bắt đầu mã hóa thông tin và lý thuyết về mật mã được phát triển, các nhà khoa học đã khám phá ra nhiều tính chất hữu ích khoa học ứng dụng này. Ví dụ, thuật toán giải mã đã giúp giải quyết ngôn ngữ chết, chẳng hạn như tiếng Ai Cập cổ đại hoặc tiếng Latin.

Mật mã

Steganography cũ hơn mã hóa và mã hóa. Nghệ thuật này đã xuất hiện từ lâu. Nó có nghĩa đen là “văn bản ẩn” hoặc “văn bản bí mật”. Mặc dù kỹ thuật giấu tin không hoàn toàn tương ứng với định nghĩa của mật mã hoặc mật mã, nhưng nó nhằm mục đích che giấu thông tin khỏi những con mắt tò mò.

Steganography là mật mã đơn giản nhất. Ví dụ điển hình là những tờ tiền bị nuốt phủ bằng sáp, hoặc một thông điệp trên đầu cạo trọc ẩn dưới lớp lông mọc. Ví dụ rõ ràng nhất về kỹ thuật giấu tin là phương pháp được mô tả trong nhiều cuốn sách trinh thám bằng tiếng Anh (và không chỉ), khi các tin nhắn được truyền qua một tờ báo nơi các chữ cái được đánh dấu kín đáo.

Nhược điểm chính của kỹ thuật giấu tin là một người ngoài cuộc chú ý có thể nhận ra nó. Vì vậy, để ngăn chặn việc đọc tin nhắn bí mật một cách dễ dàng, các phương pháp mã hóa và mã hóa được sử dụng kết hợp với steganography.

Mật mã ROT1 và Caesar

Tên của mật mã này là ROTate 1 chữ cái về phía trước và được nhiều học sinh biết đến. Nó là một mật mã thay thế đơn giản. Bản chất của nó là mỗi chữ cái được mã hóa bằng cách dịch chuyển bảng chữ cái về phía trước 1 chữ cái. A -> B, B -> B, ..., I -> A. Ví dụ: hãy mã hóa cụm từ “Nastya của chúng tôi đang khóc rất to” và nhận được “obshb Obtua dspnlp rmbsheu”.

Mật mã ROT1 có thể được khái quát hóa thành một số độ lệch tùy ý, sau đó nó được gọi là ROTN, trong đó N là số mà mã hóa các chữ cái sẽ được bù. Ở dạng này, mật mã đã được biết đến từ thời cổ đại và được gọi là “mật mã Caesar”.

Mật mã Caesar rất đơn giản và nhanh chóng, nhưng nó là một mật mã hoán vị đơn giản và do đó rất dễ bị giải mã. Đang có nhược điểm tương tự, nó chỉ thích hợp cho những trò đùa của trẻ em.

Mật mã hoán vị hoặc hoán vị

Những loại mật mã hoán vị đơn giản này nghiêm trọng hơn và đã được sử dụng tích cực cách đây không lâu. Trong Nội chiến Hoa Kỳ và Thế chiến thứ nhất, nó được sử dụng để truyền tải thông điệp. Thuật toán của nó là sắp xếp lại các chữ cái - viết tin nhắn vào thứ tự ngược lại hoặc sắp xếp lại các chữ cái theo cặp. Ví dụ: hãy mã hóa cụm từ “Mã Morse cũng là mật mã” -> “Akubza ezrom - ezhot rfish”.

Với một thuật toán tốt có thể xác định các hoán vị tùy ý cho từng ký tự hoặc nhóm trong số chúng, mật mã trở nên có khả năng chống lại hack đơn giản. Nhưng! Chỉ trong thời gian thích hợp. Vì mật mã có thể dễ dàng bị bẻ khóa bằng cách sử dụng vũ lực đơn giản hoặc so khớp từ điển nên ngày nay bất kỳ điện thoại thông minh nào cũng có thể giải mã được nó. Vì vậy, với sự ra đời của máy tính, mật mã này cũng trở thành mật mã dành cho trẻ em.

mã Morse

Bảng chữ cái là phương tiện trao đổi thông tin và nhiệm vụ chính của nó là làm cho thông điệp trở nên đơn giản và dễ hiểu hơn khi truyền tải. Mặc dù điều này trái ngược với mục đích mã hóa. Tuy nhiên, nó hoạt động giống như những mật mã đơn giản nhất. Trong hệ thống Morse, mỗi chữ cái, số và dấu chấm câu đều có mã riêng, được tạo thành từ một nhóm dấu gạch ngang và dấu chấm. Khi truyền tin nhắn bằng điện báo, dấu gạch ngang và dấu chấm biểu thị độ dài và tín hiệu ngắn.

Máy điện báo và bảng chữ cái là những thứ đầu tiên được cấp bằng sáng chế cho phát minh “của ông” vào năm 1840, mặc dù các thiết bị tương tự đã được phát minh trước ông ở cả Nga và Anh. Nhưng bây giờ ai quan tâm đến chuyện này nữa... Điện báo và mã Morse đã có một ảnh hưởng rất lớn. ảnh hưởng lớnđến thế giới, cho phép các thông điệp được truyền gần như ngay lập tức qua khoảng cách lục địa.

Thay thế đơn chữ cái

Mã ROTN và Morse được mô tả ở trên là đại diện của phông chữ thay thế dùng một bảng chữ cái. Tiền tố "mono" có nghĩa là trong quá trình mã hóa, mỗi chữ cái của tin nhắn gốc được thay thế bằng một chữ cái hoặc mã khác từ một bảng chữ cái mã hóa duy nhất.

Việc giải mã các mật mã thay thế đơn giản không khó và đây là nhược điểm chính. Chúng có thể được giải quyết bằng cách đơn giản là tìm kiếm hoặc Ví dụ: người ta biết rằng các chữ cái được sử dụng nhiều nhất trong tiếng Nga là “o”, “a”, “i”. Vì vậy, chúng ta có thể giả định rằng trong bản mã, các chữ cái xuất hiện thường có nghĩa là “o”, “a” hoặc “i”. Dựa trên những cân nhắc này, tin nhắn có thể được giải mã ngay cả khi không cần tìm kiếm trên máy tính.

Mary I, Nữ hoàng Scotland từ năm 1561 đến 1567, được biết là đã sử dụng mật mã thay thế dùng một bảng chữ cái rất phức tạp với nhiều tổ hợp. Tuy nhiên, kẻ thù của cô đã có thể giải mã được các tin nhắn và thông tin đó đủ để kết án tử hình nữ hoàng.

Mật mã Gronsfeld hoặc sự thay thế đa bảng chữ cái

Mật mã đơn giản được coi là vô dụng bởi mật mã. Vì vậy, nhiều trong số chúng đã được sửa đổi. Mật mã Gronsfeld là một bản sửa đổi của mật mã Caesar. Phương pháp này có khả năng chống hack cao hơn nhiều và bao gồm thực tế là mỗi ký tự của thông tin được mã hóa được mã hóa bằng một trong các bảng chữ cái khác nhau, được lặp lại theo chu kỳ. Có thể nói đây là ứng dụng đa chiều của mật mã thay thế đơn giản nhất. Trên thực tế, mật mã Gronsfeld rất giống với mật mã được thảo luận dưới đây.

Thuật toán mã hóa ADFGX

Đây là mật mã nổi tiếng nhất trong Thế chiến thứ nhất được người Đức sử dụng. Mật mã có tên như vậy vì nó quy giản tất cả các mật mã thành việc xen kẽ các chữ cái này. Bản thân việc lựa chọn các chữ cái được xác định bởi sự thuận tiện của chúng khi được truyền qua đường dây điện báo. Mỗi chữ cái trong mật mã được biểu thị bằng hai. Chúng ta hãy xem một phiên bản thú vị hơn của hình vuông ADFGX bao gồm các số và được gọi là ADFGVX.

MỘT D F G V. X
MỘT J Q MỘT 5 H D
D 2 E R V. 9 Z
F 8 Y TÔI N K V.
G bạn P B F 6
V. 4 G X S 3 T
X W L Q 7 C 0

Thuật toán tạo hình vuông ADFGX như sau:

  1. Chúng tôi lấy n chữ cái ngẫu nhiên để biểu thị các cột và hàng.
  2. Chúng tôi xây dựng một ma trận N x N.
  3. Chúng ta nhập bảng chữ cái, số, ký hiệu vào ma trận, ngẫu nhiên rải rác khắp các tế bào.

Hãy tạo một hình vuông tương tự cho tiếng Nga. Ví dụ: hãy tạo hình vuông ABCD:

MỘT B TRONG G D
MỘT CÔ ẤY N b/b MỘT Tôi/Y
B H V/F H/C Z D
TRONG Sh/Sch B L X TÔI
G R M VỀ YU P
D T C Y bạn

Ma trận này trông có vẻ lạ vì một số ô chứa hai chữ cái. Điều này có thể chấp nhận được, ý nghĩa của thông điệp không bị mất đi. Nó có thể được khôi phục dễ dàng. Hãy mã hóa cụm từ “Mật mã nhỏ gọn” bằng bảng này:

1 2 3 4 5 6 7 8 9 10 11 12 13 14
cụm từ ĐẾN VỀ M P MỘT ĐẾN T N Y Y Sh F R
mật mã bv lính canh GB gd Ah bv db bụng dg địa ngục va địa ngục bb ha

Do đó, tin nhắn được mã hóa cuối cùng trông như thế này: “bvgvgbgdagbvdbabdgvdvaadbbga”. Tất nhiên, người Đức đã thực hiện một đường lối tương tự thông qua nhiều mật mã khác. Và kết quả là một tin nhắn được mã hóa có khả năng chống hack rất cao.

Mật mã Vigenère

Mật mã này có khả năng chống bẻ khóa cao hơn so với mật mã dùng một bảng chữ cái, mặc dù nó là một mật mã thay thế văn bản đơn giản. Tuy nhiên, nhờ thuật toán mạnh mẽ trong một khoảng thời gian dàiđược coi là không thể hack được. Những đề cập đầu tiên của nó có từ thế kỷ 16. Vigenère (một nhà ngoại giao người Pháp) bị nhầm lẫn là người phát minh ra nó. Để hiểu rõ hơn những gì Chúng ta đang nói về, hãy xem xét bảng Vigenère (hình vuông Vigenère, tabula orta) cho tiếng Nga.

Hãy bắt đầu mã hóa cụm từ “Kasperovich cười”. Nhưng để mã hóa thành công, bạn cần có từ khóa - hãy đặt nó là “mật khẩu”. Bây giờ hãy bắt đầu mã hóa. Để làm điều này, chúng tôi viết ra khóa nhiều lần đến mức số lượng ký tự trong đó tương ứng với số ký tự trong cụm từ được mã hóa, bằng cách lặp lại khóa hoặc cắt nó đi:

Bây giờ, bằng cách sử dụng mặt phẳng tọa độ, chúng ta tìm kiếm một ô là giao điểm của các cặp chữ cái và chúng ta nhận được: K + P = b, A + A = B, C + P = B, v.v.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
Mật mã: Kommersant B TRONG YU VỚI N YU G SCH E Y X G MỘT L

Chúng tôi hiểu rằng “Kasperovich cười” = “abvyusnyugshch eykhzhgal.”

Việc giải mã Vigenère rất khó vì phân tích tần số đòi hỏi phải biết độ dài từ khóa. Do đó, việc hack liên quan đến việc đưa ngẫu nhiên độ dài của một từ khóa và cố gắng bẻ khóa thông điệp bí mật.

Cũng cần đề cập thêm rằng ngoài khóa hoàn toàn ngẫu nhiên, còn có thể sử dụng khóa hoàn toàn ngẫu nhiên bảng khác nhau Vigenère. Trong trường hợp này, hình vuông Vigenère bao gồm bảng chữ cái tiếng Nga được viết từng dòng với độ lệch là một. Điều này đưa chúng ta đến mật mã ROT1. Và cũng giống như trong mật mã Caesar, phần bù có thể là bất cứ thứ gì. Hơn nữa, thứ tự của các chữ cái không nhất thiết phải theo thứ tự bảng chữ cái. Trong trường hợp này, bản thân bảng có thể là một khóa mà không biết khóa nào thì sẽ không thể đọc được tin nhắn dù biết khóa đó.

Mã thực bao gồm các kết quả khớp cho mỗi từ mã riêng. Để làm việc với chúng, bạn cần có cái gọi là sách mã. Trên thực tế, đây là cùng một từ điển, chỉ chứa các bản dịch từ thành mã. Một ví dụ điển hình và đơn giản về mã là bảng ASCII- mật mã quốc tế của các ký tự đơn giản.

Ưu điểm chính của mật mã là chúng rất khó giải mã. Phân tích tần số hầu như không có tác dụng khi hack chúng. Trên thực tế, điểm yếu của các mã nằm ở chính những cuốn sách. Thứ nhất, việc chuẩn bị của họ là một quá trình phức tạp và tốn kém. Thứ hai, đối với kẻ thù, chúng biến thành đối tượng mong muốn và việc chặn ngay cả một phần của cuốn sách buộc chúng phải thay đổi hoàn toàn tất cả các mã.

Vào thế kỷ 20, nhiều bang đã sử dụng mật mã để truyền dữ liệu bí mật, thay đổi sổ mã theo thời gian. Thời kỳ nhất định. Và họ tích cực săn lùng sách của hàng xóm và đối thủ.

"Bí ẩn"

Mọi người đều biết rằng Enigma là cỗ máy mã hóa chính của Đức Quốc xã trong Thế chiến thứ hai. Cấu trúc Enigma bao gồm sự kết hợp của các mạch điện và cơ khí. Mật mã diễn ra như thế nào tùy thuộc vào cấu hình ban đầu của Enigma. Đồng thời, Enigma tự động thay đổi cấu hình trong quá trình hoạt động, mã hóa một tin nhắn theo nhiều cách trong toàn bộ chiều dài của nó.

Ngược lại với hầu hết mật mã đơn giản Enigma cung cấp hàng nghìn tỷ kết hợp có thể xảy ra, khiến việc phá vỡ thông tin được mã hóa gần như không thể. Đổi lại, Đức Quốc xã đã chuẩn bị sẵn một tổ hợp cụ thể cho mỗi ngày và sử dụng tổ hợp này vào một ngày cụ thể để truyền tải thông điệp. Vì vậy, ngay cả khi Enigma rơi vào tay kẻ thù, nó cũng không góp phần giải mã tin nhắn nếu không nhập cấu hình cần thiết hàng ngày.

Họ tích cực tìm cách giải mã Enigma trong suốt chiến dịch quân sự của Hitler. Ở Anh vào năm 1936, một trong những thiết bị điện toán đầu tiên (máy Turing) đã được chế tạo cho mục đích này, nó trở thành nguyên mẫu của máy tính trong tương lai. Nhiệm vụ của anh là mô phỏng hoạt động của hàng chục Enigma cùng lúc và chạy các thông điệp bị chặn của Đức Quốc xã thông qua chúng. Nhưng ngay cả máy Turing đôi khi cũng chỉ có thể bẻ khóa được một tin nhắn.

Mã hóa khóa công khai

Thuật toán mã hóa phổ biến nhất, được sử dụng ở mọi nơi trong công nghệ và hệ thống máy tính. Bản chất của nó, như một quy luật, nằm ở sự hiện diện của hai khóa, một trong số đó được truyền công khai và khóa thứ hai là bí mật (riêng tư). Khóa chung được sử dụng để mã hóa tin nhắn và khóa bí mật được sử dụng để giải mã nó.

Trong vai trò khóa công khai thường hành động rất con số lớn, chỉ có hai ước, không tính một và chính số đó. Cùng với nhau, hai ước số này tạo thành khóa bí mật.

Hãy xem xét một ví dụ đơn giản. Giả sử khóa chung là 905. Các ước của nó là các số 1, 5, 181 và 905. Khi đó khóa bí mật sẽ là số 5*181. Bạn có nói nó quá đơn giản không? Nếu số công khai là một số có 60 chữ số thì sao? Về mặt toán học, việc tính toán các ước số của một số lớn là rất khó khăn.

Để có một ví dụ thực tế hơn, hãy tưởng tượng rằng bạn đang rút tiền từ máy ATM. Khi thẻ được đọc, dữ liệu cá nhân sẽ được mã hóa bằng một khóa chung nhất định và về phía ngân hàng, thông tin sẽ được giải mã bằng khóa bí mật. Và khóa công khai này có thể được thay đổi cho mỗi thao tác. Nhưng không có cách nào để nhanh chóng tìm ra các bộ chia khóa khi chặn nó.

Độ bền phông chữ

Sức mạnh mật mã của thuật toán mã hóa là khả năng chống hack. Thông số này là điều quan trọng nhất đối với bất kỳ mã hóa nào. Rõ ràng là một mật mã thay thế đơn giản mà bất cứ ai cũng có thể giải mã được thiết bị điện tử, là một trong những nơi không ổn định nhất.

Ngày nay không tồn tại tiêu chuẩn chung, qua đó có thể đánh giá độ mạnh của mật mã. Đây là một quá trình tốn nhiều công sức và lâu dài. Tuy nhiên, có một số ủy ban đã đưa ra các tiêu chuẩn trong lĩnh vực này. Ví dụ, Yêu cầu tối thiểu theo Tiêu chuẩn mã hóa nâng cao hoặc thuật toán mã hóa AES, được phát triển bởi NIST USA.

Để tham khảo: mật mã Vernam được công nhận là mật mã có khả năng chống bẻ khóa cao nhất. Đồng thời, ưu điểm của nó là theo thuật toán của nó, đây là mật mã đơn giản nhất.

Trong thế kỷ 21, mật mã đóng một vai trò quan trọng trong cuộc sống số người hiện đại. Chúng ta hãy xem xét ngắn gọn các cách để mã hóa thông tin.

Mật mã không chỉ là một thứ gì đó trên máy tính

Rất có thể bạn đã gặp phải mật mã cơ bản và có thể biết một số phương pháp mã hóa. Ví dụ, Mật mã Caesar thường được sử dụng trong các trò chơi giáo dục dành cho trẻ em.

ROT13 là một loại mã hóa tin nhắn phổ biến khác. Trong đó, mỗi chữ cái trong bảng chữ cái được dịch chuyển 13 vị trí, như thể hiện trong hình:

Như bạn có thể thấy, mật mã này không thực sự cung cấp bảo vệ đáng tin cậy thông tin: nó đơn giản và ví dụ rõ ràng toàn bộ ý tưởng về mật mã.

Ngày nay chúng ta nói về mật mã thường xuyên nhất trong bối cảnh của một số công nghệ. Thông tin cá nhân và tài chính được truyền đi một cách an toàn như thế nào khi chúng tôi mua hàng trực tuyến hoặc xem tài khoản ngân hàng? Làm cách nào để lưu trữ dữ liệu một cách an toàn để không ai có thể chỉ cần mở máy tính, rút ​​ổ cứng ra và có toàn quyền truy cập với tất cả thông tin về nó? Chúng tôi sẽ trả lời những câu hỏi này và những câu hỏi khác trong bài viết này.

Định nghĩa và hướng dẫn nhanh về an ninh mạng

Trong an ninh mạng, có một số điều khiến người dùng lo lắng khi liên quan đến bất kỳ dữ liệu nào. Chúng bao gồm tính bảo mật, tính toàn vẹn và tính sẵn có của thông tin.

Bảo mật– dữ liệu không thể được nhận hoặc đọc bởi người dùng trái phép.

Tính toàn vẹn thông tin– tin tưởng rằng thông tin sẽ còn nguyên vẹn 100% và sẽ không bị kẻ tấn công thay đổi.

Sự sẵn có của thông tin– có quyền truy cập vào dữ liệu khi cần thiết.

Bài viết này cũng sẽ xem xét các dạng mật mã kỹ thuật số khác nhau và cách chúng có thể giúp đạt được các mục tiêu được liệt kê ở trên.

Các phương pháp mã hóa cơ bản:
  • đối xứng
  • không đối xứng
  • Băm
  • Chữ ký số

Mã hóa đối xứng

Trước khi đi sâu vào chủ đề, chúng ta hãy trả lời một câu hỏi đơn giản: “mã hóa” chính xác nghĩa là gì? Mã hóa là việc chuyển đổi thông tin để che giấu nó khỏi những người không được ủy quyền, đồng thời cho phép người dùng được ủy quyền truy cập vào nó.

Để mã hóa và giải mã dữ liệu đúng cách, bạn cần hai thứ: dữ liệu và khóa giải mã. Khi sử dụng mã hóa đối xứng, khóa để mã hóa và giải mã dữ liệu là như nhau. Hãy lấy một chuỗi và mã hóa nó bằng Ruby và OpenSSL:

hồng ngọc

require "openssl" require "pry" data_to_encrypt = "bây giờ bạn có thể đọc được thông tin của tôi!" cipher = OpenSSL::Cipher.new("aes256") khóa cipher.encrypt = cipher.random_key iv = cipher.random_iv data_to_encrypt = cipher.update(data_to_encrypt) + cipher.final bind.pry true

yêu cầu "openssl"

yêu cầu "cọc"

mật mã = ​​OpenSSL::Cipher. mới("aes256")

mật mã mã hóa

khóa = mật mã. ngẫu nhiên_key

iv = mật mã. ngẫu nhiên_iv

data_to_encrypt = mật mã. cập nhật (data_to_encrypt) + mật mã. cuối cùng

ràng buộc. nâng lên

ĐÚNG VẬY

Đây là những gì chương trình sẽ xuất ra:

Xin lưu ý rằng biến dữ liệu_to_encrypt, ban đầu là dòng “bây giờ bạn có thể đọc được tôi!” giờ là một loạt các ký tự khó hiểu. Hãy đảo ngược quá trình bằng cách sử dụng khóa ban đầu được lưu trữ trong một biến chìa khóa.

Sau khi sử dụng cùng khóa mà chúng tôi đã đặt để mã hóa, chúng tôi giải mã tin nhắn và nhận được chuỗi gốc.

Hãy xem xét các phương pháp mã hóa khác.

MỘT mã hóa đối xứng

Vấn đề với mã hóa đối xứng là: giả sử bạn cần gửi một số dữ liệu qua Internet. Nếu cần có cùng một khóa để mã hóa và giải mã dữ liệu thì hóa ra khóa đó phải được gửi trước. Điều này có nghĩa là khóa sẽ cần được gửi qua kết nối không an toàn. Nhưng bằng cách này, khóa có thể bị bên thứ ba chặn và sử dụng. Để tránh kết quả này, mã hóa bất đối xứng đã được phát minh.

Để sử dụng mã hóa bất đối xứng, bạn cần tạo hai khóa có liên quan về mặt toán học. Một là khóa riêng mà chỉ bạn mới có quyền truy cập. Thứ hai là mở, có sẵn công khai.

Hãy xem một ví dụ về giao tiếp sử dụng mã hóa bất đối xứng. Trong đó, máy chủ và người dùng sẽ gửi tin nhắn cho nhau. Mỗi người trong số họ có hai khóa: riêng tư và công khai. Người ta đã nói trước đó rằng các phím được kết nối. Những thứ kia. Một tin nhắn được mã hóa bằng khóa riêng chỉ có thể được giải mã bằng khóa chung liền kề. Do đó, để bắt đầu liên lạc, bạn cần trao đổi khóa chung.

Nhưng làm thế nào để bạn hiểu rằng khóa chung của máy chủ thuộc về máy chủ cụ thể này? Có một số cách để giải quyết vấn đề này. Phương pháp phổ biến nhất (và phương pháp được sử dụng trên Internet) là sử dụng cơ sở hạ tầng khóa công khai (PKI). Trong trường hợp các trang web, có Cơ quan cấp chứng chỉ, có một thư mục gồm tất cả các trang web đã cấp chứng chỉ và khóa công khai. Khi bạn kết nối với một trang web, khóa công khai của trang web đó trước tiên sẽ được cơ quan cấp chứng chỉ xác minh.

Hãy tạo một cặp khóa chung và khóa riêng:

hồng ngọc

require "openssl" require "pry" data_to_encrypt = "bây giờ bạn có thể đọc được thông tin của tôi!" key = OpenSSL::PKey::RSA.new(2048) bind.pry true

yêu cầu "openssl"

yêu cầu "cọc"

data_to_encrypt = "bây giờ bạn có thể đọc được tôi!"

khóa = OpenSSL::PKey::RSA. mới (2048)

ràng buộc. nâng lên

ĐÚNG VẬY

Nó sẽ bật ra:

Xin lưu ý rằng khóa riêng và khóa chung là đồ vật riêng biệt với các định danh khác nhau. sử dụng #private_encrypt, bạn có thể mã hóa chuỗi bằng cách sử dụng khóa riêng, và sử dụng #public_decrypt– Giải mã tin nhắn:

Băm thông tin

Băm, không giống như mã hóa đối xứng và bất đối xứng, là hàm một chiều. Có thể tạo hàm băm từ một số dữ liệu, nhưng không có cách nào đảo ngược quá trình. Điều này làm cho việc băm không phải là một cách thuận tiện để lưu trữ dữ liệu, nhưng nó phù hợp để kiểm tra tính toàn vẹn của một số dữ liệu.

Hàm lấy một số thông tin làm đầu vào và xuất ra một chuỗi dường như ngẫu nhiên và luôn có cùng độ dài. Hàm băm lý tưởng tạo ra các giá trị duy nhất cho đầu vào khác nhau. Đầu vào giống nhau sẽ luôn tạo ra cùng một hàm băm. Do đó, băm có thể được sử dụng để xác minh tính toàn vẹn dữ liệu.

Giới thiệu

Vấn đề bảo vệ thông tin bằng cách biến đổi nó để không thể đọc được bởi một người ngoài cuộcđã kích thích tâm trí con người từ thời cổ đại. Lịch sử của mật mã gắn liền với lịch sử ngôn ngữ của loài người. Hơn nữa, bản thân chữ viết ban đầu là một hệ thống mật mã, vì trong các xã hội cổ đại chỉ một số ít người có thể làm chủ được nó.

Những cuốn sách thiêng liêng của Ai Cập cổ đại và Ấn Độ cổ đại là những ví dụ về điều này.

Với việc sử dụng rộng rãi chữ viết, mật mã học bắt đầu nổi lên như một môn khoa học độc lập. Các hệ thống mật mã đầu tiên đã được tìm thấy vào đầu kỷ nguyên của chúng ta. Vì vậy, Caesar trong thư từ của mình đã sử dụng một mật mã ít nhiều có hệ thống, mang tên ông.

Phát triển nhanh chóng hệ thống mật mã nhận được trong Thế chiến thứ nhất và thứ hai. Từ thời kỳ hậu chiến tranh cho đến ngày nay, sự ra đời của máy tính đã thúc đẩy sự phát triển và cải tiến của phương pháp mật mã.

Tại sao việc sử dụng các phương pháp mật mã trong hệ thông thông tin(IS) đã trở thành Hiện nayđặc biệt có liên quan?

Một mặt, việc sử dụng đã mở rộng mạng máy tính, đặc biệt mạng lưới toàn cầu Internet, qua đó một khối lượng lớn thông tin có tính chất nhà nước, quân sự, thương mại và tư nhân được truyền đi, ngăn chặn những người không được phép truy cập vào nó.

Mặt khác, sự xuất hiện của mới máy tính mạnh mẽ, công nghệ mạng và điện toán thần kinh đã giúp làm mất uy tín của các hệ thống mật mã mà cho đến gần đây vẫn được coi là thực tế không thể phá vỡ được.

Trong chương đầu tiên của tác phẩm này, bạn có thể làm quen với các khái niệm cơ bản của mật mã hiện đại, các yêu cầu đối với chúng và khả năng ứng dụng thực tế của nó.

Trong chương thứ hai làm việc với các giao thức phân phối khóa mật mã, khái niệm về chữ ký điện tử và giao thức chữ ký điện tử..

Chương thứ ba của tác phẩm này nói về các hàm băm và (các phương pháp) thuật toán để xây dựng chúng.

Chương thứ tư sẽ nói về sự hiện đại hóa của chữ ký điện tử El Gamal và bài toán logarit rời rạc.

Chương 1. Những khái niệm cơ bản của mật mã hiện đại

Mật mã học (kryptos - bí mật, logo - khoa học) giải quyết vấn đề bảo vệ thông tin bằng cách chuyển đổi nó. Mật mã học được chia thành hai lĩnh vực - mật mã và phân tích mật mã. Mục tiêu của những hướng này hoàn toàn trái ngược nhau.

Mật mã học liên quan đến tìm kiếm và khám phá phương pháp toán học sự biến đổi của thông tin.

Lĩnh vực quan tâm của phân tích mật mã là nghiên cứu khả năng giải mã thông tin mà không cần biết chìa khóa.

Công việc này sẽ tập trung vào các phương pháp mật mã.

Mật mã hiện đại bao gồm bốn phần chính:

Các hệ thống mật mã đối xứng

Các hệ mật mã khóa công khai.

Hệ thống chữ ký điện tử.

Quản lý chìa khóa.

Các lĩnh vực chính của việc sử dụng các phương pháp mã hóa là truyền thông tin bí mật qua các kênh liên lạc (ví dụ: email), xác thực tin nhắn được truyền đi, lưu trữ thông tin (tài liệu, cơ sở dữ liệu) trên phương tiện dưới dạng mã hóa.

Mật mã học cho phép chuyển đổi thông tin theo cách mà chỉ có thể đọc (khôi phục) thông tin đó nếu biết khóa.

Các văn bản dựa trên một bảng chữ cái nhất định sẽ được coi là thông tin được mã hóa và giải mã. Những thuật ngữ này có nghĩa như sau.

Bảng chữ cái là một tập hợp hữu hạn các ký hiệu dùng để mã hóa thông tin.

Văn bản là một tập hợp các phần tử được sắp xếp theo thứ tự bảng chữ cái.

Sau đây là ví dụ về bảng chữ cái được sử dụng trong hệ thống thông tin hiện đại:

bảng chữ cái Z33 - 32 chữ cái trong bảng chữ cái tiếng Nga và một khoảng trắng;

bảng chữ cái Z256 - các ký hiệu có trong tiêu chuẩn mã ASCII và KOI-8;

bảng chữ cái nhị phân - Z2 = (0,1);

bảng chữ cái bát phân hoặc bảng chữ cái thập lục phân;

Mã hóa là một quá trình chuyển đổi: văn bản gốc, còn được gọi là văn bản gốc, được thay thế bằng văn bản mã hóa.

Giải mã là quá trình mã hóa ngược lại. Dựa vào khóa, bản mã được chuyển đổi thành bản gốc.

Chìa khóa là thông tin cần thiết để mã hóa và giải mã văn bản một cách trơn tru.

Một hệ thống mật mã là một họ các phép biến đổi bản rõ T. Các thành viên của họ này được đánh chỉ mục hoặc được chỉ định bằng ký hiệu k; tham số k là chìa khóa. Không gian khóa K là tập hợp các giá trị khóa có thể có. Thông thường, khóa là một chuỗi các chữ cái trong bảng chữ cái.

Các hệ thống mật mã được chia thành khóa đối xứng và khóa chung.

Trong các hệ mật mã đối xứng, cùng một khóa được sử dụng cho cả quá trình mã hóa và giải mã.

Hệ thống khóa công khai sử dụng hai khóa, khóa chung và khóa riêng, có liên quan về mặt toán học với nhau. Thông tin được mã hóa bằng khóa chung, khóa này có sẵn cho mọi người và được giải mã bằng khóa riêng, chỉ người nhận tin nhắn mới biết. Thuật ngữ phân phối khóa và quản lý khóa đề cập đến các quy trình của hệ thống xử lý thông tin, nội dung của hệ thống này là việc biên soạn và phân phối khóa giữa những người dùng.

Chữ ký điện tử (kỹ thuật số) là một chuyển đổi mật mã được gắn vào văn bản, cho phép, khi người dùng khác nhận được văn bản, xác minh quyền tác giả và tính xác thực của tin nhắn.

Độ mạnh mật mã là một đặc tính của mật mã xác định khả năng chống lại việc giải mã mà không cần biết khóa (tức là phân tích mật mã). Có một số chỉ số về sức mạnh mật mã, bao gồm:

số lượng tất cả các khóa có thể có;

thời gian trung bình cần thiết để phân tích mật mã.

Phép biến đổi Tk được xác định bằng thuật toán tương ứng và giá trị của tham số k. Hiệu quả của việc mã hóa để bảo vệ thông tin phụ thuộc vào việc duy trì tính bí mật của khóa và độ mạnh mật mã của mật mã.

Quá trình đóng dữ liệu mật mã có thể được thực hiện bằng phần mềm hoặc phần cứng. Việc triển khai phần cứng đắt hơn đáng kể nhưng nó cũng có những ưu điểm: hiệu suất cao, đơn giản, bảo mật, v.v. Triển khai phần mềm thiết thực hơn, cho phép linh hoạt nhất định trong sử dụng.

Các yêu cầu được chấp nhận chung sau đây được xây dựng cho các hệ thống bảo mật thông tin mật mã hiện đại:

tin nhắn được mã hóa chỉ có thể đọc được nếu có khóa;

số lượng thao tác cần thiết để xác định khóa mã hóa được sử dụng từ một đoạn tin nhắn được mã hóa và bản rõ tương ứng phải ít nhất Tổng số các phím có thể có;

số lượng thao tác cần thiết để giải mã thông tin bằng cách thử tất cả các khóa có thể phải có giới hạn dưới nghiêm ngặt và vượt quá giới hạn khả năng máy tính hiện đại(có tính đến khả năng sử dụng điện toán mạng);

kiến thức về thuật toán mã hóa sẽ không ảnh hưởng đến độ tin cậy của việc bảo vệ;

một thay đổi nhỏ về khóa sẽ dẫn đến thay đổi đáng kể về hình thức của tin nhắn được mã hóa, ngay cả khi sử dụng cùng một khóa;

các thành phần cấu trúc của thuật toán mã hóa phải không thay đổi;

các bit bổ sung được đưa vào thông điệp trong quá trình mã hóa phải được ẩn hoàn toàn và an toàn trong bản mã;

độ dài của bản mã phải là bằng chiều dài văn bản nguồn;

không được có sự phụ thuộc đơn giản và dễ dàng thiết lập giữa các khóa được sử dụng tuần tự trong quá trình mã hóa;

bất kỳ khóa nào trong số nhiều khóa có thể phải cung cấp khả năng bảo vệ thông tin đáng tin cậy;

thuật toán phải cho phép triển khai cả phần mềm và phần cứng, đồng thời việc thay đổi độ dài khóa không được dẫn đến sự suy giảm chất lượng của thuật toán mã hóa.

Chương 2. Giao thức phân phối khóa mật mã và giao thức chữ ký điện tử.

Cho dù các hệ thống mật mã phức tạp và đáng tin cậy đến đâu, chúng điểm yếu Tại triển khai thực tế- vấn đề phân phối khóa. Để có thể trao đổi thông tin bí mật giữa hai chủ thể IP, khóa phải được tạo ra bởi một trong số họ và sau đó bằng cách nào đó, lại được chuyển một cách bí mật cho đối tượng kia. Những thứ kia. V. trường hợp chung việc truyền lại khóa yêu cầu sử dụng một số loại hệ thống mật mã.

Để giải quyết vấn đề này, các hệ thống khóa công khai đã được đề xuất dựa trên kết quả thu được từ đại số cổ điển và đại số hiện đại.

Bản chất của chúng là mỗi người nhận địa chỉ IP tạo ra hai khóa được kết nối với nhau theo một quy tắc nhất định. Một khóa được khai báo công khai và khóa còn lại được khai báo riêng tư. Khóa công khai được công bố và có sẵn cho bất kỳ ai muốn gửi tin nhắn đến người nhận. Khóa bí mật được giữ bí mật.

Văn bản gốc được mã hóa bằng khóa chung của người nhận và được truyền tới người đó. Về nguyên tắc, văn bản được mã hóa không thể được giải mã bằng cùng một văn bản thuần túy.


chìa khóa. Việc giải mã tin nhắn chỉ có thể thực hiện được bằng cách sử dụng khóa riêng mà chỉ người nhận mới biết.

Các hệ thống mật mã khóa công khai sử dụng cái gọi là hàm không thể đảo ngược hoặc hàm một chiều, có đặc tính sau: khi đặt giá trị x thì việc tính giá trị của f(x) là tương đối dễ dàng, nhưng nếu y=f(x) thì không cách dễ dàngđể tính giá trị của x.

Tập hợp các lớp chức năng không thể đảo ngược tạo nên sự đa dạng của các hệ thống khóa công khai. Tuy nhiên, không phải mọi chức năng không thể đảo ngược đều phù hợp để sử dụng trong IC thực.

Lần trước bạn đã làm quen với những mật mã nội địa hay và khủng khiếp. Đây là một bài học rất khó vì các hệ thống mật mã này bảo vệ bí mật quốc gia. Bạn có thể cho tôi biết điều gì phức tạp hơn không? Nhưng ở đây, làm ơn! Trên thực tế, bạn không nên sợ hãi, lần này chúng ta sẽ không đi sâu vào toán học và xem xét các chế độ mã hóa - bạn đã học được nguyên tắc của chúng (hoặc chưa). Hãy điểm qua những mật mã hàng đầu của nước ngoài và xem chúng được sử dụng như thế nào trong thực tế.

Lộ trình

Đây là bài học thứ tư trong loạt bài “Đi sâu vào tiền điện tử”. Tất cả các bài học trong bộ theo thứ tự thời gian:

  • Các nguyên tắc cơ bản và lập trình lịch sử. Cách thay đổi, thay thế, Richard Sorge, Vernam và máy mã hóa
  • Nó là gì, việc phân phối khóa được thực hiện như thế nào và cách chọn khóa mạnh
  • Mạng Feistel là gì và mạng nội địa là gì? khối mật mã, được sử dụng trong các giao thức hiện đại - GOST 28147-89, “Grasshopper”
  • Bài 4. Mật mã nước ngoài hiện đại. Sự khác biệt giữa 3DES, AES, Blowfish, IDEA, Threefish của Bruce Schneier và cách chúng hoạt động (bạn có ở đây không)
  • Các loại chữ ký điện tử cách chúng hoạt động và cách sử dụng chúng
  • Bài 6. Mật mã lượng tử. Nó là gì, được sử dụng ở đâu và nó giúp ích như thế nào trong việc phân phối, tạo khóa bí mật Số ngẫu nhiên và chữ ký điện tử

3DES

Vì vậy, trước tiên trong loạt mật mã nước ngoài, chúng ta hãy xem xét 3DES, hay đúng hơn là DES họ hàng gần nhất của nó (Dữ liệu Tiêu chuẩn mã hóa), mặc dù không còn được sử dụng nữa nhưng là tổ tiên của 3DES.

DES được phát triển bởi một nhóm các nhà toán học tại Phòng thí nghiệm Nghiên cứu IBM, trong đó có Feistel vốn đã quen thuộc. Phiên bản đầu tiên của mật mã được đặt tên là "Lucifer", nhưng sau đó nó đã được sửa đổi và cuối cùng được sử dụng làm Thuật toán mã hóa dữ liệu chính thức (DEA). Nó vẫn là tiêu chuẩn thế giới trong hơn 20 năm trước khi được thay thế bởi Triple DES.

Hãy xem thuật toán mã hóa DES hoạt động như thế nào. Để làm được điều này, bạn cần nhớ hoạt động của mạng Feistel. DES là mạng Feistel 16 vòng với các khóa mã hóa đối xứng. Độ dài của khối văn bản là 64 bit, độ dài của khóa tròn là 48 bit. Vì vậy, chúng ta hãy thực hiện các bước chính của mã hóa DES, bỏ qua khía cạnh toán học khắc nghiệt:

  1. Văn bản, giống như bất kỳ mã hóa nào khác, được chia thành các khối 64 bit.
  2. Từ khóa 56 bit sẽ tạo ra 16 khóa tròn 48 bit.
  3. Mỗi khối trải qua hoán vị, nghĩa là tất cả các bit của khối đầu vào được xáo trộn theo một bảng nhất định.
  4. Khối được chia thành hai nửa và đi vào mạng Feistel quen thuộc, nơi cuộn 16 vòng.
  5. Chúng tôi kết nối các nửa.
  6. Và một sự thay đổi nữa.

Hoán vị bắt đầu và kết thúc không có ý nghĩa gì đối với mật mã trong DES. Cả hai hoán vị đều không có khóa và bảng cho chúng được xác định trước. Lý do chúng được đưa vào DES vẫn chưa rõ ràng và các nhà thiết kế DES cũng chưa nói gì về điều đó. Có thể giả định rằng thuật toán đã được lên kế hoạch triển khai trong phần cứng (trên chip) và hai hoán vị phức tạp này được cho là sẽ gây khó khăn cho việc thực hiện thuật toán này. mô hình hóa phần mềm cơ chế mã hóa.

Trên thực tế, đây là tất cả những gì bạn cần biết về hoạt động của thuật toán DES. Nếu chúng ta nghiên cứu sâu hơn về cách hoạt động của chức năng được xác định trong mạng Feistel thì mọi thứ về nó đều ổn. Nó thực hiện cả hoán vị và thay thế (hộp S, như bạn có thể nhớ từ bài viết trước) và phép cộng bằng phím tròn.

Nhưng hãy quay trở lại với bộ ba DES, hay bộ ba DES. Nó trở nên cần thiết vì khóa DES 56-bit rất dễ bị tấn công và với sự phát triển khả năng tính toán vấn đề này ngày càng trở nên gay gắt hơn. Sử dụng công nghệ hiện có, một triệu khóa có thể được xác minh mỗi giây. Điều này có nghĩa là sẽ mất hơn hai nghìn năm để giải mã DES bằng cách sử dụng một máy tính chỉ có một bộ xử lý.

Nhưng nếu chúng ta lấy một máy tính có một triệu lõi xử lý sẽ xử lý các khóa song song, chúng ta có thể kiểm tra toàn bộ bộ khóa trong khoảng 20 giờ. Khi DES được giới thiệu, giá của một chiếc máy tính như vậy là vài triệu đô la, nhưng nó nhanh chóng giảm xuống. Máy tính đặc biệtđược tạo ra vào năm 1998 - và tìm thấy chìa khóa sau 112 giờ.

Để giải quyết vấn đề tìm kiếm nhanh key, các nhà mật mã thông minh nước ngoài đã đề xuất sử dụng hai khóa và sử dụng DES hai lần. Tuy nhiên, DES kép rất dễ bị tấn công giữa chừng. Để thực hiện cuộc tấn công này, kẻ tấn công cần có bản rõ và bản mã tương ứng. Kẻ tấn công mã hóa bản rõ bằng tất cả các khóa có thể, ghi kết quả vào Bảng 1. Sau đó giải mã bản mã bằng tất cả các khóa có thể và ghi kết quả vào Bảng 2. Sau đó, kẻ tấn công tìm kiếm Bảng 1 và 2 để tìm kết quả trùng khớp.

Tấn công thuộc loại này bao gồm các khóa liệt kê ở phía bản mã và bản rõ và yêu cầu tính toán nhiều hơn khoảng bốn lần so với phép liệt kê thông thường khóa DES và khá nhiều bộ nhớ lưu trữ kết quả trung gian. Tuy nhiên, trên thực tế, cuộc tấn công này có thể thực hiện được nên Double DES không thể sử dụng được.

Mọi thứ hoàn toàn khác với Triple DES. Việc sử dụng ba khóa và áp dụng các thuật toán theo trình tự được chỉ ra trong sơ đồ đã kéo dài tuổi thọ của DES thêm vài năm nữa.


DES tuyệt vời

Vậy DES có gì tuyệt vời? Thuật toán mã hóa này đã được phân tích sâu rộng. DES có hai rất những phẩm chất quan trọng mật mã khối - tuyết lở và đầy đủ. Đã đến lúc mở rộng vốn từ vựng về mật mã của bạn!
Hiệu ứng tuyết lở có nghĩa là những thay đổi nhỏ trong văn bản gốc (hoặc khóa) có thể gây ra những thay đổi lớn trong văn bản mã hóa.

DES đã được chứng minh là có tất cả các đặc điểm nổi bật của đặc tính này.

Mặc dù hai khối văn bản gốc chỉ khác nhau ở bit ngoài cùng bên phải, nhưng các khối văn bản mã hóa khác nhau 29 bit. Điều này có nghĩa là sự thay đổi khoảng 1,5% bản rõ sẽ gây ra sự thay đổi khoảng 45% bản mã.

Hiệu ứng đầy đủ là mỗi bit của bản mã phải phụ thuộc vào nhiều bit của bản rõ. Như chúng ta đã biết, DES sử dụng cả hoán vị và thay thế - tất cả các phép biến đổi đều thiết lập sự phụ thuộc của từng bit bản mã vào một số bit của văn bản gốc.

DES được sử dụng ở đâu? Có, hầu hết mọi nơi, việc triển khai nó đều có mặt ở phần lớn thư viện phần mềm. Tuy nhiên, ai biết được mức độ an toàn khi sử dụng DES ngày nay? Mặc dù IBM tuyên bố rằng thuật toán này là kết quả của 17 năm phân tích mật mã chuyên sâu, một số người lo ngại rằng NSA đã chèn một lỗ hổng vào thuật toán cho phép cơ quan này dễ dàng giải mã các tin nhắn bị chặn. Ủy ban Tình báo Thượng viện Hoa Kỳ đã nghiên cứu kỹ lưỡng vấn đề này và tất nhiên không tìm thấy gì, các cáo buộc chống lại NSA đã được bãi bỏ và kết quả của nghiên cứu vẫn được phân loại. Nói một cách dễ hiểu, những tin đồn và suy đoán đã lan truyền ở Mỹ từ lâu về việc liệu DES có đáng tin cậy hay không. Nhưng, theo tôi tin, tình huống ở đây được mô tả bằng câu nói “Người thông minh sẽ không nói, kẻ ngốc sẽ không hiểu”. Cuối cùng, NSA thừa nhận rằng họ không thể tin tưởng IBM giao một nhiệm vụ quan trọng như vậy và đã thực hiện một số điều chỉnh, chẳng hạn như chỉ định các hộp S.

Trong suốt sự tồn tại của DES, anh ta đã là mục tiêu của Các phương pháp khác nhau phân tích mật mã. Các nhà phân tích mật mã không bao giờ ngừng thử nghiệm các máy phá DES để xem sẽ mất bao lâu để giải mã một văn bản. Về vấn đề này, vô số sửa đổi khác nhau của thuật toán này đã xuất hiện và 3DES không phải là sửa đổi phức tạp nhất trong số đó.

Mã hóa dữ liệu là cực kỳ quan trọng để bảo vệ sự riêng tư. Trong bài viết này tôi sẽ nói về nhiều loại khác nhau và các phương pháp mã hóa được sử dụng để bảo vệ dữ liệu ngày nay.

Bạn có biết không?
Trở lại thời La Mã, mã hóa đã được Julius Caesar sử dụng để làm cho kẻ thù không thể đọc được các bức thư và tin nhắn. Nó đóng một vai trò quan trọng như một chiến thuật quân sự, đặc biệt là trong chiến tranh.

Khi khả năng của Internet tiếp tục phát triển, ngày càng có nhiều hoạt động kinh doanh của chúng ta được tiến hành trực tuyến. Trong số này, quan trọng nhất là ngân hàng Internet, thanh toán trực tuyến, email, trao đổi riêng tư và tin nhắn chính thức v.v., liên quan đến việc trao đổi dữ liệu và thông tin bí mật. Nếu dữ liệu này rơi vào tay kẻ xấu, nó có thể gây hại không chỉ người dùng cá nhân, nhưng cũng có tất cả hệ thống trực tuyến việc kinh doanh.

Để ngăn chặn điều này xảy ra, một số biện pháp mạng bảo mật để bảo vệ việc truyền dữ liệu cá nhân. Đứng đầu trong số này là các quá trình mã hóa và giải mã dữ liệu, được gọi là mật mã. Có ba phương pháp mã hóa chính được sử dụng trong hầu hết các hệ thống hiện nay: mã hóa băm, mã hóa đối xứng và bất đối xứng. Trong những dòng tiếp theo, tôi sẽ nói chi tiết hơn về từng loại mã hóa này.

Các loại mã hóa

Mã hóa đối xứng

Trong mã hóa đối xứng, dữ liệu thông thường có thể đọc được, được gọi là văn bản thuần túy, được mã hóa để trở nên không thể đọc được. Việc xáo trộn dữ liệu này được thực hiện bằng cách sử dụng một phím. Sau khi dữ liệu được mã hóa, nó có thể được gửi an toàn đến người nhận. Tại người nhận, dữ liệu được mã hóa sẽ được giải mã bằng chính khóa đã được sử dụng để mã hóa.

Vì vậy, rõ ràng rằng chìa khóa là quan trọng nhất phần quan trọng mã hóa đối xứng. Nó phải được ẩn khỏi người ngoài vì bất kỳ ai có quyền truy cập vào nó đều có thể giải mã dữ liệu riêng tư. Đây là lý do tại sao loại mã hóa này còn được gọi là "khóa bí mật".

TRONG hệ thống hiện đạià, khóa thường là một chuỗi dữ liệu đến từ một mật khẩu mạnh hoặc từ một nguồn hoàn toàn ngẫu nhiên. Nó được đưa vào phần mềm mã hóa đối xứng, sử dụng nó để giữ bí mật dữ liệu đầu vào. Việc xáo trộn dữ liệu được thực hiện bằng thuật toán mã hóa đối xứng, chẳng hạn như Tiêu chuẩn mã hóa dữ liệu (DES), Tiêu chuẩn mã hóa nâng cao (AES) hoặc Thuật toán mã hóa dữ liệu quốc tế (IDEA).

Những hạn chế

Liên kết yếu nhất trong loại mã hóa này là tính bảo mật của khóa, cả về mặt lưu trữ và truyền tải đến người dùng được xác thực. Nếu hacker lấy được khóa này, hắn có thể dễ dàng giải mã dữ liệu được mã hóa, làm mất đi toàn bộ mục đích mã hóa.

Một nhược điểm nữa là do phần mềm, quá trình xử lý dữ liệu không thể hoạt động với dữ liệu được mã hóa. Vì vậy, để có thể sử dụng được phần mềm này thì trước tiên dữ liệu phải được giải mã. Nếu bản thân phần mềm bị xâm phạm thì kẻ tấn công có thể dễ dàng lấy được dữ liệu.

Mã hóa bất đối xứng

Mã hóa khóa bất đối xứng hoạt động tương tự khóa đối xứng, trong đó nó sử dụng một khóa để mã hóa các tin nhắn được truyền đi. Tuy nhiên, thay vì sử dụng cùng một khóa, anh ta sử dụng một khóa hoàn toàn khác để giải mã tin nhắn này.

Khóa được sử dụng để mã hóa có sẵn cho bất kỳ và tất cả người dùng mạng. Vì vậy nó được gọi là khóa "công khai". Mặt khác, khóa dùng để giải mã được giữ bí mật và chỉ dành cho mục đích sử dụng riêng tư của người dùng. Do đó, nó được gọi là khóa "riêng tư". Mã hóa bất đối xứng còn được gọi là mã hóa khóa công khai.

Vì với phương pháp này, khóa bí mật cần thiết để giải mã tin nhắn không cần phải được truyền đi mọi lúc và nó thường chỉ có người dùng (người nhận) biết nên khả năng tin tặc có thể giải mã được tin nhắn là rất lớn. thấp hơn.

Diffie-Hellman và RSA là những ví dụ về thuật toán sử dụng mã hóa khóa chung.

Những hạn chế

Nhiều hacker sử dụng man-in-the-middle như một hình thức tấn công để vượt qua kiểu mã hóa này. TRONG mã hóa bất đối xứng, bạn sẽ được cấp một khóa công khai được sử dụng để trao đổi dữ liệu một cách an toàn với người hoặc dịch vụ khác. Tuy nhiên, tin tặc sử dụng thủ thuật lừa đảo trên mạng để lừa bạn liên lạc với chúng trong khi khiến bạn tin rằng mình đang sử dụng đường dây an toàn.

Để hiểu rõ hơn về kiểu hack này, hãy xem xét hai bên tương tác, Sasha và Natasha, và một hacker, Sergei, với mục đích chặn cuộc trò chuyện của họ. Đầu tiên, Sasha gửi một tin nhắn qua mạng dành cho Natasha, yêu cầu cô cung cấp khóa công khai. Sergei chặn tin nhắn này và lấy được khóa chung liên quan đến cô ấy rồi sử dụng nó để mã hóa và gửi một tin nhắn sai cho Natasha chứa khóa chung của anh ấy thay vì của Sasha.

Natasha nghĩ rằng tin nhắn này đến từ Sasha nên mã hóa nó bằng khóa chung của Sergei và gửi lại. Tin nhắn này một lần nữa bị Sergei chặn lại, giải mã, sửa đổi (nếu muốn), mã hóa lại bằng khóa chung mà Sasha đã gửi ban đầu và gửi lại cho Sasha.

Vì vậy, khi Sasha nhận được tin nhắn này, anh ta đã tin rằng nó đến từ Natasha và không hề hay biết về hành vi chơi xấu.

Băm

Kỹ thuật băm sử dụng thuật toán được gọi là hàm băm để tạo ra một chuỗi đặc biệt từ dữ liệu đã cho, được gọi là hàm băm. Hàm băm này có các thuộc tính sau:

  • cùng một dữ liệu luôn tạo ra cùng một hàm băm.
  • Không thể tạo dữ liệu thô chỉ từ hàm băm.
  • Nó không đáng để thử sự kết hợp khác nhau dữ liệu đầu vào để cố gắng tạo ra cùng một hàm băm.

Do đó, điểm khác biệt chính giữa băm và hai hình thức mã hóa dữ liệu còn lại là khi dữ liệu được mã hóa (băm), nó không thể được truy xuất trở lại dạng ban đầu (được giải mã). Thực tế này đảm bảo rằng ngay cả khi tin tặc có được mã băm thì nó cũng sẽ vô ích đối với anh ta vì anh ta sẽ không thể giải mã nội dung của tin nhắn.

Thông báo tóm tắt 5 (MD5) và Thuật toán băm an toàn (SHA) là hai thuật toán băm được sử dụng rộng rãi.

Những hạn chế

Như đã đề cập trước đó, gần như không thể giải mã dữ liệu từ một hàm băm nhất định. Tuy nhiên, điều này chỉ đúng nếu việc băm mạnh được thực hiện. Trong trường hợp triển khai kỹ thuật băm yếu, sử dụng đủ tài nguyên và tấn công lực lượng vũ phu, một hacker kiên trì có thể tìm thấy dữ liệu khớp với hàm băm.

Kết hợp các phương pháp mã hóa

Như đã thảo luận ở trên, mỗi phương pháp mã hóa trong số ba phương pháp mã hóa này đều có một số nhược điểm. Tuy nhiên, khi sử dụng kết hợp các phương pháp này, chúng sẽ tạo thành một phương pháp đáng tin cậy và có tính hệ thống hiệu quả mã hóa.

Thông thường, các kỹ thuật khóa riêng và khóa chung được kết hợp và sử dụng cùng nhau. Phương pháp chìa khoá bí mật cho phép giải mã nhanh hơn, trong khi phương pháp khóa chung cung cấp cách truyền khóa riêng an toàn và thuận tiện hơn. Sự kết hợp các phương pháp này được gọi là "phong bì kỹ thuật số". Chương trình mã hóa E-mail PGP dựa trên kỹ thuật "phong bì kỹ thuật số".

Băm được sử dụng như một phương tiện để kiểm tra độ mạnh của mật khẩu. Nếu hệ thống lưu trữ hàm băm của mật khẩu thay vì chính mật khẩu thì nó sẽ an toàn hơn, vì ngay cả khi tin tặc có được hàm băm này, anh ta cũng sẽ không thể hiểu (đọc) nó. Trong quá trình xác minh, hệ thống sẽ kiểm tra hàm băm của mật khẩu đến và xem kết quả có khớp với những gì được lưu trữ hay không. Bằng cách này, mật khẩu thực tế sẽ chỉ hiển thị trong những khoảnh khắc ngắn ngủi khi nó cần được thay đổi hoặc xác minh, giúp giảm đáng kể khả năng nó rơi vào tay kẻ xấu.

Băm cũng được sử dụng để xác thực dữ liệu bằng khóa bí mật. Một hàm băm được tạo bằng cách sử dụng dữ liệu và khóa này. Do đó, chỉ có dữ liệu và hàm băm được hiển thị và bản thân khóa không được truyền đi. Bằng cách này, nếu những thay đổi được thực hiện đối với dữ liệu hoặc hàm băm, chúng sẽ dễ dàng được phát hiện.

Tóm lại, những kỹ thuật này có thể được sử dụng để mã hóa dữ liệu một cách hiệu quả thành định dạng không thể đọc được để đảm bảo dữ liệu được an toàn. Hầu hết các hệ thống hiện đại thường sử dụng kết hợp các phương pháp mã hóa này cùng với triển khai mạnh mẽ các thuật toán để cải thiện tính bảo mật. Ngoài bảo mật, các hệ thống này còn cung cấp nhiều lợi ích bổ sung, chẳng hạn như xác minh danh tính người dùng và đảm bảo rằng dữ liệu nhận được không thể bị giả mạo.