Sự khác biệt giữa các phương pháp mã hóa bất đối xứng và đối xứng? Các thuật toán mật mã dùng để đảm bảo an toàn thông tin khi tương tác trên Internet

TERENIN Alexey Alekseevich, Ứng viên Khoa học Kỹ thuật

Các thuật toán mật mã dùng để đảm bảo an toàn thông tin khi tương tác trên INTERNET

Tổng quan ngắn gọn về các thuật toán mã hóa phổ biến nhất hiện nay, mô tả của chúng cũng như các vấn đề gặp phải trong quá trình triển khai và các khía cạnh quan trọng trong sử dụng thực tế được trình bày.

Bảo vệ thông tin bằng các phương pháp chuyển đổi mật mã bao gồm việc thay đổi các thành phần của nó (từ, chữ cái, âm tiết, số) bằng các thuật toán đặc biệt hoặc giải pháp phần cứng và mã khóa, nghĩa là đưa thông tin về dạng ẩn. Để làm quen với thông tin được mã hóa, quy trình ngược lại được sử dụng: giải mã (giải mã). Việc sử dụng mật mã là một trong những phương pháp phổ biến giúp tăng cường đáng kể tính bảo mật khi truyền dữ liệu trong mạng máy tính, dữ liệu được lưu trữ trong các thiết bị bộ nhớ từ xa, cũng như khi trao đổi thông tin giữa các đối tượng ở xa.

Để chuyển đổi (mã hóa), một số thuật toán hoặc thiết bị thường được sử dụng để thực hiện một thuật toán nhất định mà nhiều người có thể biết đến. Quá trình mã hóa được kiểm soát bằng cách sử dụng mã khóa thay đổi định kỳ, đảm bảo thông tin được thể hiện nguyên bản mỗi lần khi sử dụng cùng một thuật toán hoặc thiết bị. Biết khóa cho phép bạn giải mã văn bản một cách đơn giản và đáng tin cậy. Tuy nhiên, nếu không biết khóa, quy trình này thực tế có thể không thực hiện được ngay cả với thuật toán mã hóa đã biết.

Ngay cả việc chuyển đổi thông tin đơn giản cũng là một phương tiện rất hiệu quả để che giấu ý nghĩa của nó đối với hầu hết những người vi phạm không có kỹ năng.

Tổng quan lịch sử ngắn gọn về sự phát triển của mã hóa

Nguồn gốc của mật mã bắt nguồn từ chữ tượng hình Ai Cập. Kể từ thời cổ đại, khi Ai Cập và Ba Tư phát triển mạnh mẽ, các sứ giả đã được sử dụng cho các nhiệm vụ quân sự và nhà nước quan trọng nhất, mang nội dung của thông điệp trên giấy da hoặc trong đầu để truyền tải bằng lời nói, phương pháp sau được ưa chuộng hơn. Ngay cả khi đó, ít nhiều đã xuất hiện những cách thành công để bảo vệ thông tin được truyền đi khỏi các cuộc tấn công của kẻ đánh chặn. Hãy để chúng tôi trích dẫn một truyền thuyết nổi tiếng từ thế giới Cổ đại. Một vị vua nào đó, bị bắt, đã xăm một hình xăm lên đầu một nô lệ - một thông điệp gửi đến đồng minh. Khi tóc mọc lại, người nô lệ di chuyển đến người nhận tin và nhà vua được trả tự do. Nguyên mẫu của kỹ thuật giấu tin hiện đại.

Người Hy Lạp cổ đại đã sử dụng những que tròn có cùng đường kính, trên đó quấn các dải giấy da. Dòng chữ được thực hiện dọc theo chiều dài của thanh. Chỉ có thể gấp văn bản thành văn bản có thể đọc được nếu bạn có một cây gậy có cùng đường kính.

Ở La Mã cổ đại, khoa học về mật mã, được dịch từ tiếng Latin là văn bản bí mật, rõ ràng đã bắt đầu hình thành. Mật mã Caesar xuất hiện khi mỗi chữ cái được thay thế bằng một chữ cái đứng thứ ba trong bảng chữ cái.

Ở châu Âu và Trung Á hấp dẫn thời Trung cổ, đã có sự phát triển nhanh chóng về mật mã và giải mã - các phương pháp phá vỡ văn bản mật mã. Công trình có hệ thống đầu tiên về mật mã được coi là cuốn sách của kiến ​​trúc sư Leon Battisti Alberti (1404 - 1472). Một trong những nhà giải mã đầu tiên là François Viète (1540 - 1603), tại triều đình vua Henry IV của Pháp. Đồng thời, các cố vấn từ gia đình Adgenti, những người còn có thể được gọi là các nhà giải mã, đã phục vụ tại triều đình của Giáo hoàng. Toàn bộ thời kỳ cho đến giữa thế kỷ 17. đầy đủ các công trình về mật mã và phân tích mật mã.

Vào thế kỷ 19 và nửa đầu thế kỷ 20. Đối với thư từ ngoại giao bí mật, nhiều quốc gia, bao gồm cả Nga, sử dụng các phương pháp mã hóa, khóa được biên soạn từ các đoạn trích của một số văn bản nhất định trong sách thông thường (sách mật mã).

Kể từ đầu thế kỷ XX. - từ Thế chiến thứ nhất - các máy mã hóa đặc biệt bắt đầu được sử dụng.

Máy Enigma của Đức, mật mã do người Anh tiết lộ, đã được biết đến rộng rãi. Để không tiết lộ sự thật về việc tiết lộ mật mã của Đức, chính phủ Anh đã hy sinh rất nhiều cho dân thường mà không cảnh báo người dân của hai thành phố lớn về vụ đánh bom sắp xảy ra. Nhưng điều này sau đó đã giúp giành được lợi thế đáng kể trong các trận hải chiến phía bắc với Đức, khi các tàu ngầm và tàu tuần dương bất khả chiến bại của Đức bị tiêu diệt.

Sau Thế chiến II, máy tính tiếp quản mật mã. Trong một thời gian dài, đây là miền của những siêu máy tính mạnh nhất thời bấy giờ.

Các ấn phẩm về chủ đề này được phân loại nghiêm ngặt và việc sử dụng nghiên cứu khoa học trong lĩnh vực này là đặc quyền trong nước. Chỉ có tác phẩm sách giáo khoa của Von Neumann vào những năm 40 được công bố rộng rãi, trong đó mô tả, ngoài các nguyên tắc xây dựng hệ thống máy tính, một số phương pháp gây ảnh hưởng độc hại khác có thể có nhằm phá vỡ quy trình tính toán “hợp pháp”, cũng như tác phẩm kinh điển của Shannon, trong đó đặt nền móng cho mật mã máy tính.

Từ những năm 70 công bố mở xuất hiện: Haffey-Dilman năm 1976. Năm 1970, có một phát minh bí mật của James Ellis (Anh) trong lĩnh vực mật mã. Thuật toán mật mã bất đối xứng nổi tiếng nhất là RSA, được phát triển bởi Ronald Rivest, Eddie Shamir và Len Edleman vào năm 1977. Thuật toán RSA có tầm quan trọng rất lớn bởi vì. có thể được sử dụng cho cả mã hóa khóa công khai và tạo chữ ký số điện tử.

Đây là một thời kỳ mang tính cách mạng trong sự phát triển của khoa học mật mã. Các phương pháp mới để phân phối bí mật thông tin quan trọng trong các hệ thống máy tính mở đã xuất hiện và mật mã bất đối xứng ra đời.

Nhưng ngay cả sau đó, trong một thời gian dài, đặc quyền sử dụng mật mã trong bảo vệ dữ liệu vẫn thuộc về các dịch vụ của chính phủ và các tập đoàn lớn. Công nghệ điện toán thời đó, với sức mạnh cần thiết cho việc chuyển đổi mật mã, rất đắt tiền.

Vào thời điểm đó, các tiêu chuẩn chính của nhà nước về thuật toán mã hóa đã xuất hiện (Hoa Kỳ và một số nước Châu Âu), việc sử dụng chúng được quy định khi làm việc với thông tin được phân loại là bí mật nhà nước.

Bức màn bí mật xung quanh các công nghệ này thậm chí còn dẫn đến thực tế là ở Hoa Kỳ, thuật toán mật mã được coi là vũ khí và lệnh cấm xuất khẩu phần cứng và phần mềm mã hóa đã được đưa ra. Sau đó, các hạn chế xuất khẩu được đưa ra đối với độ dài của khóa được sử dụng trong các thuật toán mã hóa bên ngoài Hoa Kỳ, cho phép các cơ quan tình báo Mỹ giải mã các tin nhắn bằng sức mạnh tính toán sẵn có mà không cần biết khóa rút gọn. Vào ngày 1 tháng 3 năm 2001, các hạn chế xuất khẩu đã được dỡ bỏ. Do sự kiện xảy ra vào ngày 11 tháng 9 cùng năm, sự kiểm soát của chính phủ đã được thắt chặt. Chính phủ Hoa Kỳ đang xem xét các phương án để áp dụng lại các biện pháp kiểm soát xuất khẩu đối với các công cụ mã hóa.

Hãy quay trở lại những năm 70. Kể từ thời điểm đó, cả nghiên cứu khoa học lẫn việc phát triển các công cụ máy tính đều không dừng lại. Sức mạnh tính toán của siêu máy tính tăng lên vài năm một lần. Một máy tính cá nhân xuất hiện. Sức mạnh của máy tính cá nhân gần bằng sức mạnh của siêu máy tính cách đây 10 năm. Bây giờ máy tính cá nhân thậm chí còn trở nên mạnh mẽ hơn.

Từ những năm 80 Người dùng thông thường có cơ hội sử dụng các công cụ mật mã trên máy tính của mình, điều này bị các cơ quan chính phủ ngăn chặn kịch liệt; việc giám sát hoạt động của công dân nước này trở nên khó khăn hơn, bao gồm cả các phần tử tội phạm.

Việc phát hành chương trình PGP (Pretty Good Privacy) của Phil Zimmermann (phiên bản 1.0 được phát hành vào năm 1991) và việc cung cấp quyền sử dụng mở và miễn phí đã mang lại những cơ hội tuyệt vời cho người dùng máy tính thông thường. Phil Zimmermann thậm chí còn bị tuyên bố là kẻ thù của nhà nước và bị kết án tù.

Sức mạnh tính toán ngày càng tăng buộc phải sử dụng các thuật toán chuyển đổi mật mã ngày càng phức tạp hoặc tăng độ dài của khóa được sử dụng trong mã hóa.

Các tiêu chuẩn cho thuật toán mã hóa đã trở nên lỗi thời và không đáng tin cậy. Thông tin được khóa bằng một khóa nhất định không còn có thể được giữ bí mật đủ lâu - miễn là theo yêu cầu của các quy định của chính phủ. Ví dụ, việc lưu trữ thông tin hoàn toàn bí mật ở dạng mã hóa trong 5 năm có nghĩa là kẻ thù, sở hữu phương tiện tính toán mạnh nhất, liên tục tìm kiếm các khóa có thể, rất có thể sẽ không tìm thấy khóa cần thiết để giải mã thông tin được lưu trữ trong thời gian này.

Các cuộc thi bắt đầu được tổ chức để tiết lộ một số thông tin được mã hóa bằng thuật toán của một trong các tiêu chuẩn. Người chiến thắng sẽ được trao giải thưởng tiền mặt đáng kể cũng như danh tiếng trên toàn thế giới trong cộng đồng thông tin. Bằng cách hợp nhất các máy tính thông thường trong một mạng máy tính để hoạt động song song nhằm giải quyết một vấn đề nhất định, người dùng đã tập hợp thành nhóm và cùng nhau chọn một khóa.

Độ dài khóa 48 bit có nghĩa là cần phải thực hiện 248 lần tìm kiếm. Chẳng hạn, việc tăng độ dài khóa chỉ thêm 16 bit có nghĩa là cần phải liệt kê 2 gấp 16 lần.

Nhưng ngay cả kích thước khóa này cũng có thể giải quyết được vấn đề phá mật mã cho các nhóm thống nhất trong nhiều ngày và thậm chí hàng giờ làm việc song song. Sau đó, cần phải chuyển sang các phím dài hơn vài lần so với những phím đã đề cập. Nhưng đây chỉ là biện pháp tạm thời và các tiêu chuẩn mới cho thuật toán chuyển đổi mật mã (AES ở Hoa Kỳ) gần đây đã được áp dụng.

Hiện nay, trên báo chí đã xuất hiện nhiều ấn phẩm dành riêng cho vấn đề này. Nhiều cuốn sách được xuất bản, cả được dịch và của các tác giả Nga. Vấn đề bảo vệ thông tin khỏi bị tiết lộ và sửa đổi có thể được giải quyết bằng mật mã. Sự phức tạp của bộ máy toán học của mật mã hiện đại vượt xa bộ máy được sử dụng để phát triển vũ khí hạt nhân và hệ thống không gian.

Mật mã hiện đại được chia thành đối xứng và bất đối xứng. Đối xứng - dành cho mật mã dòng, khối và hỗn hợp. Mật mã bất đối xứng tốn nhiều tài nguyên hơn và trong mật mã đối xứng có vấn đề về phân phối khóa hiệu quả. Các hệ thống trao đổi an toàn hiện đại dựa trên việc sử dụng mật mã hỗn hợp. Khi bắt đầu phiên trao đổi, các bên gửi cho nhau các khóa phiên bí mật thông qua mật mã bất đối xứng, sau đó các khóa này được sử dụng để mã hóa đối xứng dữ liệu đã gửi. Hệ thống mật mã bất đối xứng cho phép các khóa được phân phối trong các hệ thống mã hóa đối xứng.

Các hệ thống viễn thông của chính phủ và quân sự chỉ sử dụng mã hóa đối xứng (thường sử dụng khóa một lần). Điều này là do tính bảo mật của hệ thống khóa công khai chưa được chứng minh một cách chặt chẽ về mặt toán học và điều ngược lại cũng chưa được chứng minh.

Mã hóa thông tin không nên được chấp nhận như một liều thuốc chữa bách bệnh cho mọi mối đe dọa thông tin. Nó cần được coi là một trong những biện pháp bảo vệ thông tin bắt buộc như một phần của hệ thống bảo mật thông tin toàn diện. Việc sử dụng mã hóa nên được kết hợp với các biện pháp lập pháp, tổ chức và các biện pháp bảo vệ khác.

Thuật toán mã hóa đối xứng

Các thuật toán mã hóa được thiết kế để giải quyết vấn đề đảm bảo bí mật thông tin. Hiện nay, các phương pháp mã hóa được sử dụng rộng rãi để che giấu thông tin. Từ xa xưa, mã hóa đã và vẫn là hình thức bảo vệ hiệu quả nhất.

Mã hóa được định nghĩa là sự chuyển đổi qua lại của thông tin không được bảo vệ (mở) thành dạng được mã hóa (đóng) - văn bản mã hóa, trong đó kẻ tấn công không thể truy cập hoàn toàn được. Mã hóa sử dụng khóa, sự hiện diện của khóa có nghĩa là khả năng mã hóa và/hoặc giải mã thông tin. Điều quan trọng cần lưu ý là bản thân phương thức mã hóa không cần phải giữ bí mật, vì chỉ biết nó sẽ không cho phép bạn giải mã được bản mã.

Các hệ thống mật mã hiện đại có thể được phân chia rõ ràng theo phương pháp sử dụng khóa thành hệ thống mật mã có khóa bí mật (đối xứng) và có khóa chung (bất đối xứng). Nếu sử dụng cùng một khóa để mã hóa và giải mã thì hệ thống mật mã được gọi là đối xứng.

Các hệ thống mật mã đối xứng bao gồm DES, AES, GOST 28147-89, v.v. Một hướng mới trong mật mã là việc phát minh ra các hệ thống mật mã khóa công khai bất đối xứng, chẳng hạn như RSA, DSA hoặc El-Gamal.

Trong các hệ thống mật mã bất đối xứng, các khóa khác nhau mà trên thực tế có thể suy ra được từ nhau được sử dụng để mã hóa và giải mã, một trong số đó (khóa giải mã) được giữ bí mật và khóa còn lại (khóa mã hóa) được công khai. Điều này cho phép truyền các thông điệp bí mật qua một kênh không an toàn mà không cần truyền khóa bí mật trước. Chính mật mã khóa công khai đã phá vỡ vòng luẩn quẩn của mật mã đối xứng, khi để tổ chức trao đổi thông tin bí mật, trước tiên cần phải phân phối khóa bí mật.

Hệ thống mật mã khóa công khai sẽ được thảo luận chi tiết sau, nhưng bây giờ chúng ta hãy quay lại hệ thống mật mã đối xứng (KS).

Thành phần quan trọng nhất của CS là mật mã hoặc thủ tục chuyển đổi nghịch đảo bản rõ M thành bản mã M":

M' = E(M),
M = D(M'),

trong đó E là hàm mã hóa và D là hàm giải mã.

Cách tiếp cận được chấp nhận rộng rãi trong mật mã là xây dựng một mật mã sao cho độ bí mật của nó chỉ được xác định bởi độ bí mật của khóa K S (quy tắc Kerkoff). Do đó, mật mã phải có khả năng chống bẻ khóa, ngay cả khi nhà giải mã tiềm năng biết toàn bộ thuật toán mã hóa ngoại trừ giá trị của khóa được sử dụng và có toàn bộ văn bản của mật mã bị chặn.

Thực tiễn đã chỉ ra rằng thuật toán càng nổi tiếng thì càng có nhiều người làm việc với nó, thuật toán đó càng được chứng minh và do đó đáng tin cậy hơn. Do đó, các thuật toán được công chúng biết đến hiện nay đã đứng vững trước thử thách của thời gian, nhưng các mật mã bí mật của chính phủ lại bộc lộ nhiều sai sót và thiếu sót, vì không thể tính đến mọi thứ.

Sơ đồ được chấp nhận chung để xây dựng các hệ thống mật mã đối xứng là hoán vị tuần hoàn và thay thế các bit trong một khối có độ dài cố định, thuật toán của khối này được xác định bằng khóa bí mật.


Một thuật toán mã hóa được coi là mạnh nếu có dữ liệu riêng tư và biết khóa bí mật thì không thể lấy được thông tin về dữ liệu mở. Người ta đã chứng minh một cách chặt chẽ rằng không thể xây dựng một mật mã mạnh tuyệt đối, ngoại trừ trường hợp khi kích thước của khóa bí mật bằng (hoặc lớn hơn) kích thước của dữ liệu được mã hóa. Trường hợp này khó thực hiện trong thực tế vì Các công cụ bảo vệ mật mã thực sự được sử dụng và có sẵn trên thị trường sử dụng mật mã mà nhiệm vụ khôi phục bản rõ từ văn bản đã đóng rất khó tính toán, nghĩa là nó đòi hỏi nhiều tài nguyên đến mức cuộc tấn công trở nên không thực tế về mặt kinh tế.

Trong số các mật mã đối xứng, phổ biến nhất và được sử dụng thường xuyên nhất là mật mã sau (kích thước khối tính bằng bit được ký hiệu là b, số chu kỳ là r và độ dài khóa là l):

DES- Tiêu chuẩn chính phủ Mỹ (b=64, r=16, l=56). Hiện tại, DES đã được chứng minh là không đủ mạnh để chống lại các cuộc tấn công bạo lực.
Ba DES và DESX(b = 64, r = 16, l = 168;112) - ứng dụng tuần tự thuật toán DES với các khóa khác nhau, mang lại khả năng chống hack đáng kể.
Ý TƯỞNG- (b = 64, r = 8, l = 128) . Nghiên cứu tích cực về sức mạnh của nó đã tiết lộ một số điểm yếu trong đó, nhưng khả năng sử dụng chúng là không đáng kể.
RC5- một mật mã được tham số hóa với kích thước khối thay đổi (b I), số chu kỳ (r Ј 255) và số bit khóa (l Ј 2040). Các nghiên cứu về sức mạnh của nó đã chỉ ra rằng tại b = 64, nó không thể tiếp cận được để phân tích vi phân ở r = 12 và phân tích tuyến tính ở r = 7.
GOST 28147-89- Chuẩn mã hóa dữ liệu của Nga (b=64, r=32, l=256). Nhiều khóa yếu đã được tìm thấy cho GOST, làm giảm đáng kể sức mạnh hiệu quả của nó trong các chế độ mã hóa đơn giản. Việc đánh giá sức mạnh mật mã của GOST cũng phức tạp bởi thực tế là phần quan trọng nhất của thuật toán - các nút thay thế hoặc hộp S theo thuật ngữ của mật mã DES - không được mô tả trong tiêu chuẩn và các quy luật tạo ra nó vẫn chưa được biết. Đồng thời, người ta đã chứng minh rằng có khả năng cao thu được các nút thay thế yếu giúp đơn giản hóa việc phân tích mật mã của một mật mã nhất định.
Cá nóc là mật mã khối 64 bit được phát triển bởi Schneier vào năm 1993, được thực hiện thông qua các hoán vị và thay thế phụ thuộc khóa. Tất cả các hoạt động đều dựa trên XOR và bổ sung trên các từ 32 bit. Khóa có độ dài thay đổi (tối đa 448 bit) và được sử dụng để tạo một số mảng khóa con. Mật mã được tạo riêng cho máy 32 bit và nhanh hơn đáng kể so với DES.

Hoa Kỳ hiện đã áp dụng một tiêu chuẩn mã hóa mới, AES. Một cuộc thi đã được tổ chức giữa các thuật toán mã hóa, thuật toán nào đã giành chiến thắng và hình thành nên nền tảng của AES - Rijndael. Rijndael là mật mã khối lặp có độ dài khối thay đổi và độ dài khóa khác nhau. Mô tả chi tiết hơn về thuật toán này và kết quả của cuộc thi được đưa ra trong.

Một số lượng khá lớn các thuật toán đối xứng đã được phát triển, công bố và nghiên cứu trên thế giới (Bảng 1), trong đó chỉ có DES và bản sửa đổi Triple DES được thử nghiệm đầy đủ theo thời gian. Bảng này không bao gồm các thuật toán ít được biết đến và được nghiên cứu kém, chẳng hạn như An toàn hơn, v.v.

Bảng 1. Tổng quan về các phương pháp mã hóa đối xứng

Độ dài khóa, bit

Kích thước khối, bit

Chi phí lựa chọn khóa, MIPS x năm

Ghi chú

DES Được IBM phát triển vào năm 1977 cho chính phủ Hoa Kỳ. Trong 20 năm, người ta không tìm ra cách nào để bẻ khóa mật mã, ngoài việc tìm kiếm toàn diện trung bình 25% tất cả các khóa, nhưng với khả năng hiện đại, nó cho phép bạn đạt được thành công
Ba DES Lặp lại thuật toán DES ba lần với các khóa khác nhau. Độ dài khóa hiệu dụng là 112 bit.
Ý TƯỞNG Được phát triển vào năm 1992 bởi Lai và Massey. Chưa bị hack cho đến nay
GOST 28147-89

không có dữ liệu

Là tiêu chuẩn nhà nước ở Nga
RC5

10 3 trở lên

Khóa 40 bit đã bị bẻ khóa bằng vũ lực vào năm 1997 trong 3,5 giờ, khóa 48 bit trong 313 giờ
Cá nóc

không có dữ liệu

Được phát triển bởi Schneier vào năm 1993.
Mật mã Feistel này được tạo riêng cho máy 32 bit và nhanh hơn đáng kể so với DES
AES (Rijndael) Độ dài khóa và độ dài khối có thể là 128, 192 hoặc 256 bit, độc lập với nhau Được đề xuất bởi các nhà giải mã Joan Daemen và Vincent Rijmen.
Thuật toán không có điểm yếu bảo mật nào được biết đến (theo NIST).

Hiện tại, các thuật toán đối xứng có độ dài khóa lớn hơn 100 bit (Triple DES và IDEA, v.v.) không phải là không thể phá vỡ được. Thuật toán GOST trong nước, so với chúng, có đặc điểm là độ phức tạp tăng lên cả khi tạo các nút thay thế và khi tạo khóa. Ngoài ra, đối với thuật toán GOST, có khả năng cao tạo ra khóa không ổn định, điều này trong một số chế độ mã hóa sẽ làm giảm độ dài khóa hiệu quả của nó từ 2.256 xuống 2.62.

Triple DES là một thuật toán đã được chứng minh tốt hơn IDEA và cung cấp hiệu suất chấp nhận được. Thuật toán Triple DES là việc áp dụng thuật toán DES ba lần cho cùng một dữ liệu nhưng với các khóa khác nhau.

DES đã thâm nhập vào Nga và được sử dụng khá rộng rãi trong thực tế như một phần không thể thiếu của nhiều phần mềm và phần cứng khác nhau, trong đó được biết đến rộng rãi nhất là hệ thống S.W.I.F.T, mô-đun VISA và EUROPAY bí mật, mô-đun bí mật của ATM và thiết bị đầu cuối giao dịch, và cuối cùng là , nhưng chiêc thẻ thông minh. Các cuộc thảo luận đặc biệt căng thẳng xung quanh thuật toán mã hóa dữ liệu đều do thẻ thông minh gây ra. Đồng thời, có những lý do nghiêm túc để tin rằng độ tin cậy của các hệ thống mật mã trong nước có nguồn gốc chuyển đổi sẽ vượt trội hơn so với các hệ thống mật mã nước ngoài.

Tuy nhiên, luật pháp Nga cũng như luật pháp của nhiều quốc gia khác chỉ cho phép sử dụng các tiêu chuẩn mã hóa quốc gia.

Thuật toán GOST 28147-89 được xây dựng dựa trên nguyên tắc giống như DES; đây là thuật toán mã hóa khối cổ điển có khóa bí mật, nhưng khác với DES ở độ dài khóa lớn hơn, số vòng lớn hơn và sơ đồ xây dựng vòng đơn giản hơn. chúng tôi. Trong bảng Hình 2 hiển thị các tham số chính của nó, để thuận tiện - so sánh với các tham số của DES.

Bảng 2. So sánh tham số của mật mã DES và GOST

Nếu thông tin bí mật cần được trao đổi giữa những người tin tưởng lẫn nhau, tức là. các thành viên của cùng một tổ chức có thể sử dụng mật mã đối xứng. Tất nhiên, cả hai (hoặc nhiều) bên phải có sẵn khóa mã hóa để tương tác.

Để mô tả ngắn gọn kịch bản trao đổi thông tin, nó như sau:

  • một tập tin hiện có chứa thông tin bí mật được tạo hoặc sử dụng;
  • tệp được mã hóa bằng khóa mà cả hai bên đều biết, được xác định bằng thuật toán mã hóa;
  • tập tin mã hóa được chuyển đến người đăng ký, phương tiện lưu trữ không quá quan trọng, nó có thể là đĩa mềm, e-mail, tin nhắn trên mạng hoặc kết nối modem, cũng rất thuận tiện để giảm thiểu rủi ro; lưu trữ tất cả các tập tin chứa thông tin bí mật ở dạng mã hóa. Khi đó, nếu máy tính, máy tính xách tay của nhân viên đi công tác hoặc ổ cứng rơi vào tay kẻ tấn công, các tập tin bị khóa bằng chìa khóa sẽ không thể đọc trực tiếp được. Ngày nay thế giới sử dụng các hệ thống tự động mã hóa tất cả thông tin được lưu trữ trong máy tính xách tay; họ cũng cung cấp chế độ đăng nhập bắt buộc; nếu nhân viên buộc phải khởi động máy tính xách tay thì bằng cách nhập mật khẩu đặc biệt thay vì mật khẩu thông thường, tất cả thông tin có thể bị hủy. ; tất nhiên, chế độ khôi phục được cung cấp sau hành động này. Ổ cứng có thể được tháo ra khỏi máy tính một cách đơn giản; việc tháo nó ra khỏi khu vực được bảo vệ không quá khó khăn (so với toàn bộ máy tính);
  • về phía bên nhận, người nhận hợp pháp, sở hữu khóa, sẽ mở các tệp được mã hóa để sử dụng tiếp.

Nhiều phương pháp biến đổi bảo vệ hiện đại có thể được phân thành bốn nhóm lớn: hoán vị, thay thế (thay thế), phương pháp cộng và kết hợp. Các phương pháp hoán vị và thay thế thường được đặc trưng bởi độ dài khóa ngắn và độ tin cậy của khả năng bảo vệ của chúng được xác định bởi độ phức tạp của thuật toán chuyển đổi. Các phương pháp bổ sung được đặc trưng bởi các thuật toán chuyển đổi đơn giản và sức mạnh mật mã của chúng dựa trên việc tăng độ dài khóa.

Phá vỡ mật mã

Có một cách để phá mật mã bằng cách thử tất cả các tùy chọn chính. Tiêu chí cho tính đúng đắn của một biến thể là sự hiện diện của một “từ có thể xảy ra” trong văn bản.

Tập hợp tất cả các khóa có thể được liệt kê và bản mã được giải mã bằng từng khóa. Trong văn bản “giả mở” thu được, một từ có thể xảy ra sẽ được tìm kiếm. Nếu không có từ đó, văn bản hiện tại sẽ bị từ chối và việc chuyển sang phím tiếp theo được thực hiện. Nếu tìm thấy một từ như vậy, một biến thể của phím sẽ được hiển thị trên màn hình. Sau đó, việc tìm kiếm chìa khóa tiếp tục cho đến khi hết toàn bộ bộ tùy chọn. Có thể phát hiện một số khóa trong đó có một từ có thể xảy ra trong “bản rõ giả”.

Sau khi tìm kiếm hoàn tất, cần giải mã văn bản bằng các khóa tìm thấy. “Văn bản gốc” được hiển thị trên màn hình để kiểm soát trực quan. Nếu người vận hành nhận ra văn bản là mở thì tác vụ mở đầu sẽ kết thúc. Nếu không, tùy chọn khóa này sẽ bị từ chối và quá trình chuyển đổi sang khóa tiếp theo sẽ được thực hiện.

Phương pháp vũ phu có thể được chống lại bằng cách tăng độ dài của khóa mã hóa được sử dụng. Hơn nữa, việc tăng chiều dài của nó lên chỉ 8 bit sẽ tăng số lượng tùy chọn tìm kiếm lên tương ứng là 2,8 lần, lên 64 bit – lên 2,64 lần.

Trong số các vấn đề cố hữu trong việc sử dụng thuật toán mã hóa mật mã, cần nêu bật vấn đề phân phối khóa. Trước khi các bên giao tiếp có thể gửi tin nhắn được mã hóa cho nhau, họ phải trao đổi khóa mã hóa qua một số kênh bí mật. Ngoài ra, một số lượng lớn các khóa phải được cập nhật trong hệ thống trao đổi thông tin.

Các thuật toán mã hóa mật mã không thể thiết lập tính toàn vẹn của tin nhắn nhận được (tức là để đảm bảo rằng tin nhắn không bị sửa đổi trong quá trình truyền). Quyền tác giả chỉ có thể được xác nhận bằng cách sở hữu một khóa cụ thể, vì vậy bất kỳ ai trở thành chủ sở hữu khóa của người khác sẽ có thể chuyển tin nhắn của họ dưới dạng tin nhắn được gửi từ người dùng khác.

Vấn đề phân phối khóa bí mật qua kênh liên lạc công cộng có thể được giải quyết bằng thuật toán Diffie-Hellman. Nhưng thuật toán này thuộc về thuật toán mã hóa bất đối xứng. Họ sử dụng hai khóa: công khai và riêng tư.

Các thuật toán mật mã bất đối xứng nhận được sự phát triển nhanh chóng vào những năm 70. thế kỷ trước. Các thuật toán như vậy cũng có thể giải quyết các vấn đề về xác nhận quyền tác giả và tính xác thực, giúp tổ chức trao đổi thông tin được mã hóa giữa các bên không tin tưởng lẫn nhau. Ngoài ra, việc sử dụng các thuật toán bất đối xứng sẽ làm giảm số lượng khóa phải được phân phối giữa các bên tương tác theo một bậc độ lớn. Các hệ thống mã hóa bất đối xứng bao gồm một cơ sở dữ liệu công khai về các khóa công khai có thể được phân phối qua các kênh liên lạc mở và việc tiết lộ chúng sẽ không dẫn đến sự xâm phạm hệ thống, đó là lý do tại sao chúng được gọi là mở.

Thuật toán mã hóa bất đối xứng

Các hệ thống mật mã khóa công khai thường được xây dựng trên cơ sở một bài toán phức tạp để tính một hàm nghịch đảo của một hàm đã cho. Các hàm như vậy được gọi là một chiều, tức là sự đảo ngược của họ là một nhiệm vụ gần như không thể. Bản chất của phương pháp mã hóa là chức năng của tin nhắn được mã hóa được tính theo hướng chuyển tiếp bằng cách sử dụng khóa chung của thuê bao nhận và khi giải mã (tính hàm nghịch đảo) khóa bí mật của nó được sử dụng. Như người ta có thể mong đợi, người ta biết rất ít về các vấn đề toán học thỏa mãn các yêu cầu đã liệt kê và chỉ một số ít trong số chúng được sử dụng để xây dựng các mật mã dùng trong thực tế. Hãy xem xét một số hệ thống mật mã khóa công khai nổi tiếng nhất.

  • RSA. Bài toán phân tích nhân tử (tính thừa số nguyên tố) của một số nguyên lớn được sử dụng. Được xây dựng dựa trên phép nhân hai số nguyên tố có chữ số lớn. Được sử dụng rộng rãi trong các giao thức xác thực và bảo mật mật mã.
  • El-Gamal. Dựa trên bài toán logarit rời rạc trong trường hữu hạn. Được sử dụng trong các tiêu chuẩn chữ ký số điện tử (EDS) DSS, GOST R34.10-94, v.v.
  • Đường cong elip. Dựa trên bài toán logarit rời rạc trên đường cong elip trong trường hữu hạn.

Các bài toán nghịch đảo của nhân tử hóa và logarit rời rạc được giải bằng các phương pháp gần với tìm kiếm vét cạn, khi số lớn thì khó tính toán.
Hệ thống mật mã khóa công khai được sử dụng chủ yếu theo ba cách:

  • đóng thông tin;
  • xác thực bằng chữ ký số;
  • phân phối khóa công khai được bảo vệ chống chặn (hệ thống mật mã Diffie-Hellman).

Những ưu điểm và nhược điểm của hệ thống mật mã bất đối xứng sẽ được thảo luận chi tiết hơn trong phần này.

Hàm băm

Các giao thức bảo vệ tính toàn vẹn và tính xác thực khi tạo mô phỏng và chữ ký số sử dụng hàm băm “nén” mật mã để có thể thu được giá trị với số bit cố định từ khối dữ liệu có độ dài tùy ý.
Để giảm khối lượng chữ ký số và giảm thời gian tạo và xác minh, nó được áp dụng cho các giá trị băm, thường ngắn hơn nhiều so với tin nhắn gốc. Một số yêu cầu được đặt ra đối với các hàm băm mật mã nhằm mục đích gây khó khăn cho việc giả mạo chữ ký số bằng cách tìm ra sự sửa đổi khối dữ liệu trong đó giá trị của hàm băm và do đó, chữ ký số không thay đổi.
Các hàm băm được sử dụng rộng rãi nhất dựa trên hệ thống hoán vị và thay thế lặp lại theo chu kỳ (độ dài của giá trị băm được tạo ra tính bằng bit được biểu thị trong ngoặc đơn):

  • MD5 (128);
  • SHA-1 (160);
  • GOST (256).

Bảng 1. Danh sách và tham số của hàm băm

Hàm băm

Độ dài giá trị, bit

Kích thước khối, bit

Hiệu suất, Mb/giây

Ghi chú

không có dữ liệu

Được phát triển bởi Ron Rivest vào năm 1989.
Va chạm được phát hiện trong chức năng nén đơn giản hóa

Được phát triển bởi Ron Rivest vào năm 1990.
Đã phát hiện va chạm

Được phát triển bởi Ron Rivest vào năm 1991.
Va chạm được phát hiện trong chức năng nén

Được phát triển vào năm 1995 trong dự án RIPE của Châu Âu

Được phát triển vào năm 1995 bởi NIST

GOST của Nga

Trong bảng 1 không hiển thị các hàm băm hiếm khi được sử dụng và kỳ lạ, cũng như các hàm băm được xây dựng trên mật mã khối đối xứng theo sơ đồ Meyer–Matyas và Davies–Price.
Các hàm băm được đề cập sẽ được mô tả chi tiết hơn trong.
Mặc dù bảo vệ mật mã khóa công khai hoặc hệ thống mật mã bất đối xứng đã được sử dụng đặc biệt rộng rãi kể từ cuối những năm 70. , chúng có một nhược điểm rất nghiêm trọng - hiệu suất cực kỳ thấp. Về vấn đề này, trong thực tế, sơ đồ bảo vệ mật mã kết hợp thường được sử dụng. Khi thiết lập kết nối và xác thực các bên, mật mã “khóa công khai” được sử dụng, sau đó khóa phiên được tạo để mã hóa đối xứng, khóa này sẽ đóng tất cả lưu lượng truy cập giữa những người đăng ký. Khóa phiên cũng được phân phối bằng khóa chung.



Cơm. 2. Sơ đồ thuật toán hệ mật mã bất đối xứng

Bảng 2. Hệ thống mật mã bất đối xứng

Tên phương thức

Phương pháp hack
(mat. vấn đề)

Sức mạnh mật mã, MIPS

Ghi chú

2.7 1028 cho khóa 1300 bit

Được phát triển vào năm 1977 bởi Ron Rivest, Adi Shamir và Leonard Eidelman.
Bao gồm nhiều tiêu chuẩn

phân tích số nguyên tố lớn

El-Gamal
(El Gamal)

tìm logarit rời rạc trong trường hữu hạn

với cùng độ dài khóa, độ mạnh mật mã bằng RSA

Được thiết kế bởi ElGamal. Được sử dụng trong thuật toán chữ ký số của DSS tiêu chuẩn DSA

phương trình eliptic

giải phương trình eliptic

sức mạnh và tốc độ mật mã cao hơn RSA

Hướng hiện đại. Được phát triển bởi nhiều nhà toán học hàng đầu

Phương pháp RSA hiện là tiêu chuẩn thực tế trong các hệ thống bảo mật thông tin và được CCITT (Ủy ban tư vấn về điện báo và điện thoại quốc tế) khuyến nghị trong tiêu chuẩn X.509. RSA được sử dụng trong nhiều tiêu chuẩn quốc tế (S-HTTP, PEM, S-MIME, S/WAN, STT, SSL, PCT, SWIFT, ANSI X.9.31, v.v.), trong các hệ thống xử lý thẻ tín dụng, trong các hệ điều hành để bảo vệ của các giao thức mạng.
Một lượng lớn nghiên cứu khoa học đã được thực hiện trên các phương pháp RSA và El-Gamal, một số lượng lớn các phương pháp phân tích mật mã và bảo vệ chống lại các cuộc tấn công đã được nghiên cứu và độ mạnh mật mã đã được tính toán chi tiết tùy thuộc vào độ dài khóa và các yếu tố khác. thông số. Cả hai phương pháp đều có cùng độ mạnh mật mã (có cùng độ dài khóa) và tốc độ gần như nhau. Xét rằng phương pháp đường cong elip đang được thử nghiệm và chưa bị tấn công nhiều như phương pháp RSA và El-Gamal, việc sử dụng hai phương pháp sau trong các hệ thống mã hóa có vẻ thích hợp hơn.
Một mô tả chi tiết về các thuật toán này được đưa ra trong.

Chữ ký số điện tử

Nếu thông tin được trao đổi giữa các bên không tin tưởng lẫn nhau hoặc muốn thực hiện các hành động chống lại nhau (ngân hàng và khách hàng, cửa hàng và người mua), thì cần phải sử dụng các phương pháp mã hóa bất đối xứng, cũng như phương pháp chữ ký số.
Cần phải đảm bảo không chỉ tính bảo mật mà còn cả tính toàn vẹn của tin nhắn (không có khả năng thay thế tin nhắn hoặc thay đổi bất cứ điều gì trong đó), cũng như quyền tác giả. Ngoài ra, cần đề phòng tác giả tin nhắn từ chối gửi tin nhắn đã ký.
Chữ ký điện tử của tài liệu cho phép bạn thiết lập tính xác thực của nó. Ngoài ra, các biện pháp mật mã còn cung cấp khả năng bảo vệ chống lại các hành động độc hại sau:

  • từ chối (từ chối) - thuê bao A tuyên bố rằng anh ta không gửi tin nhắn cho B, mặc dù thực tế là anh ta đã làm vậy;
  • sửa đổi (thay đổi) – thuê bao B thay đổi tài liệu và tuyên bố rằng mình đã nhận được tài liệu này (đã sửa đổi) từ thuê bao A;
  • thay thế - thuê bao B tạo một tài liệu (mới) và nói rằng anh ta đã nhận được nó từ thuê bao A;
  • chặn chủ động - kẻ xâm nhập (được kết nối với mạng) chặn tài liệu (tệp) và thay đổi chúng;
  • “giả trang” – thuê bao B gửi tài liệu thay mặt cho thuê bao A;
  • lặp lại – thuê bao B lặp lại tài liệu đã truyền trước đó mà thuê bao A đã gửi cho thuê bao B.

Tất cả các loại hành động ác ý nêu trên đều gây ra thiệt hại đáng kể. Ngoài ra, khả năng xảy ra các hành vi độc hại làm suy yếu niềm tin vào công nghệ máy tính. Vấn đề xác thực có thể được giải quyết dựa trên phương pháp mã hóa bằng cách phát triển các thuật toán và chương trình đặc biệt.
Khi chọn thuật toán và công nghệ xác thực, cần cung cấp khả năng bảo vệ đáng tin cậy chống lại tất cả các loại hành động (mối đe dọa) độc hại nêu trên. Tuy nhiên, trong khuôn khổ mật mã cổ điển (khóa đơn), rất khó để bảo vệ khỏi tất cả các loại mối đe dọa trên, vì về cơ bản có khả năng xảy ra các hành động nguy hiểm bởi một trong các bên sở hữu khóa bí mật.
Chẳng hạn, không ai có thể ngăn cản người đăng ký tạo bất kỳ tài liệu nào, mã hóa nó bằng khóa chung hiện có của khách hàng và ngân hàng, sau đó tuyên bố rằng anh ta đã nhận được tài liệu này từ một người truyền hợp pháp.
Sẽ hiệu quả hơn khi sử dụng các sơ đồ dựa trên mật mã hai khóa. Trong trường hợp này, mỗi thuê bao truyền có khóa chữ ký bí mật riêng và tất cả các thuê bao đều có khóa chung không bí mật của thuê bao truyền.
Các khóa công khai này có thể được hiểu là một tập hợp các quan hệ xác minh cho phép người ta đánh giá tính xác thực của chữ ký của thuê bao truyền, nhưng không cho phép người ta khôi phục khóa chữ ký bí mật. Người đăng ký truyền hoàn toàn chịu trách nhiệm về khóa riêng của mình. Không ai ngoài anh ta có thể tạo ra chữ ký chính xác. Khóa bí mật của thuê bao truyền có thể được coi là con dấu cá nhân và chủ sở hữu phải bằng mọi cách có thể hạn chế quyền truy cập vào nó của những người không được phép. .
Để triển khai ý tưởng mã hóa mở trên thực tế, cần tìm câu trả lời cụ thể và mang tính xây dựng cho các câu hỏi sau:

  • Làm thế nào để “trộn” khóa riêng của người dùng với nội dung của tài liệu để chúng trở nên không thể tách rời?
  • Làm cách nào để kiểm tra xem nội dung của tài liệu được ký và khóa cá nhân của người dùng có xác thực hay không mà không cần biết trước cái này hay cái kia?
  • Làm thế nào để đảm bảo rằng tác giả có thể sử dụng nhiều lần cùng một khóa riêng lẻ để ký điện tử cho một số lượng lớn tài liệu điện tử?
  • Làm cách nào chúng tôi có thể đảm bảo rằng không thể khôi phục khóa cá nhân của người dùng bằng bất kỳ số lượng tài liệu điện tử nào được ký với nó?
  • Làm thế nào để đảm bảo tính xác thực của việc xác minh chữ ký số và nội dung của tài liệu điện tử?
  • Làm thế nào để đảm bảo giá trị pháp lý của một tài liệu điện tử có chữ ký số tồn tại mà không có bản sao giấy hoặc hình thức thay thế khác?

Phải mất khoảng 20 năm để trả lời tất cả những câu hỏi này kể từ khi ý tưởng này được đưa ra lần đầu tiên vào năm 1976 trong một bài báo của Whitfield Diffie và Martin Hellman. Bây giờ chúng ta có thể nói chắc chắn rằng tất cả những vấn đề này đã được giải quyết: có đầy đủ các phương tiện kỹ thuật để cấp phép cho các tài liệu điện tử, được gọi là chữ ký số. Các nguyên tắc hiện đại để xây dựng hệ thống chữ ký số rất đơn giản và tinh tế:

  • phương pháp tính toán và xác minh chữ ký số của tất cả người dùng hệ thống đều giống nhau và dựa trên các bài toán phổ biến;
  • phương pháp tính khóa xác thực chữ ký số và khóa tạo chữ ký số riêng lẻ cũng giống nhau đối với mọi người và được nhiều người biết đến;
  • các khóa riêng lẻ để tạo chữ ký số được người dùng tự chọn theo luật ngẫu nhiên từ một tập hợp lớn tất cả các khóa có thể có;
  • Với một thuật toán chữ ký số cụ thể, sức mạnh của nó có thể được đánh giá mà không liên quan đến bất kỳ thông tin “bí mật” nào chỉ dựa trên các kết quả toán học đã biết và các giả định hợp lý về sức mạnh tính toán của kẻ tấn công tiềm năng.

Bảo vệ bằng mật mã có nghĩa là đảm bảo tính xác thực và xác thực của thông tin, bên cạnh việc giải quyết vấn đề duy trì tính bảo mật của thông tin. Các chức năng này được thực hiện bằng công nghệ chữ ký số.
Sơ đồ hoạt động của chữ ký số được thể hiện trong hình. 3.



Cơm. 3. Thuật toán chữ ký số điện tử

Đầu vào của thuật toán là một tệp, không nhất thiết phải là văn bản, yêu cầu chính đối với tham số đầu vào của chữ ký số là độ dài cố định, để làm điều này, hàm băm được sử dụng.
Về mặt lý thuyết, việc sử dụng các phương tiện mã hóa khác nhau hứa hẹn triển vọng tươi sáng cho tất cả các công ty sử dụng Internet trong hoạt động của họ, nhưng ở đây nảy sinh một vấn đề mới - tìm ra sự thỏa hiệp với nhà nước và luật pháp của nhà nước, vấn đề này sẽ được đề cập chi tiết.
Theo Luật Liên bang “Về chữ ký điện tử số” số 1-F3 ngày 10 tháng 1 năm 2002, chữ ký số điện tử trên văn bản điện tử được công nhận tương đương với chữ ký viết tay trên văn bản giấy. Quy định pháp lý cũng được cung cấp cho việc tổ chức quản lý tài liệu điện tử, phân phối khóa công khai và khóa riêng, xây dựng trung tâm chứng nhận và xác định trách nhiệm của các bên.
Việc thông qua luật này, mặc dù có một số điểm không chắc chắn, đã giúp điều chỉnh việc sử dụng các phương tiện mã hóa bất đối xứng, trong trường hợp này là chữ ký số, để bảo vệ dữ liệu trên Internet.

Văn học

  1. Shannon C.E. Lý thuyết truyền thông của hệ thống bí mật. Tạp chí Kỹ thuật Hệ thống Bell số 28, 1949, tr. 656 - 715.
  2. Ấn bản Tiêu chuẩn Xử lý Thông tin Liên bang 46-2. Tiêu chuẩn mã hóa dữ liệu (DES). NIST, Bộ Thương mại Hoa Kỳ, Washington D.C., 1993.
  3. GOST 28147-89. Các hệ thống xử lý thông tin. Bảo vệ mật mã. Thuật toán chuyển đổi mật mã.
  4. Bruce Schneier, Mật mã ứng dụng: Giao thức, thuật toán và mã nguồn trong C. John Willey & Sons, 1994.
  5. Nechvatal James. Mật mã khóa công khai. NIST, Gaithersburg, 1990.
  6. Weiner M. Tìm kiếm khóa DES hiệu quả: Báo cáo kỹ thuật TR-244, Trường Khoa học Máy tính, Đại học Carleton, 1994.
  7. Odlyzko A.M. Tương lai của hệ số nguyên. Cryptobytes, Phòng thí nghiệm RSA.- tập. 1, N 2, 1995, tr. 5 - 12.
  8. Rogaway P. Tính bảo mật của DESX. Cryptobytes, Phòng thí nghiệm RSA, tập. 2, N 2, 1996, tr. 8 - 11.
  9. Kaliski B., Robshaw M. Mã hóa đa dạng: cân nhắc tính bảo mật và hiệu suất. //Tiến sĩ Tạp chí của Dobb, tháng 1 năm 1996, tr. 123 - 127.
  10. Rivest R.L. Thuật toán mã hóa RC5. Cryptobytes, Phòng thí nghiệm RSA, tập. 1, N 1, 1995, tr. 9 - 11.
  11. Kaliski B., Yiqun Lisa Yin. Về tính bảo mật của thuật toán RC5. Cryptobytes, Phòng thí nghiệm RSA, tập. 1, N 2, 1995, tr. 12.
  12. Oleinik V. Xoay vòng trong thuật toán chuyển đổi dữ liệu mật mã GOST 28147-89. http://www.dekart.ru
  13. Andrei Vinokurov. Thuật toán mã hóa GOST 28147-89, cách sử dụng và triển khai nó cho máy tính nền tảng Intel x86.
  14. Cá nóc là gì? http://www.halyava.ru/aaalexey/CryptFAQ.html.
  15. Linn J. Nâng cao quyền riêng tư cho thư điện tử trên Internet: Phần I: Quy trình xác thực và mã hóa thư. RFC 1421, 1993.
  16. Evtushenko Vladimir. Ba DES. Tiêu chuẩn mới? http://www.bgs.ru/russian/security05.html.
  17. GOST28147-89 là gì? http://www.halyava.ru/aaalexey/GOST.html.
  18. Andrew Jelly. /Tiêu chuẩn mật mã trong thiên niên kỷ mới/, http://www.baltics.ru/~andrew/AES_Crypto.html.
  19. Thuật toán mã hóa Rijndael. http://www.stophack.ru/spec/rijndael.shtml.

Để trao đổi tin nhắn và ẩn nội dung với bên thứ ba, mã hóa được sử dụng. Nó được sử dụng khi cần tăng mức độ bảo vệ. Có hai sơ đồ mã hóa: đối xứng và bất đối xứng.

Mã hóa là gì

Mã hóa sẽ hữu ích khi bạn cần ẩn một số thông tin khỏi những người không được ủy quyền và cung cấp dữ liệu nhạy cảm cho người dùng được ủy quyền.

Một tính năng của kiểu truyền dữ liệu này là việc sử dụng khóa.

Có ba trạng thái bảo mật:

  • che giấu thông tin với người lạ;
  • ngăn chặn sự thay đổi;
  • duy trì tính toàn vẹn của thông tin;
  • nhận dạng người gửi.

Để đọc thông tin khác ngoài khóa, cần có bộ giải mã. Đây là điều đảm bảo rằng kẻ tấn công không thể lấy được dữ liệu, vì nếu chúng chặn dữ liệu nhưng không có chìa khóa thì không thể đọc được.

Có hai loại mã hóa: đối xứng và bất đối xứng.

Mục đích chính của mã hóa là lưu trữ thông tin. Điều này cho phép bạn làm việc với một số dữ liệu từ các nguồn không đáng tin cậy và truyền tin nhắn qua các kênh không an toàn. Việc gửi thông tin diễn ra như thế này:

  • người gửi mã hóa dữ liệu;
  • người nhận giải mã.

Mỗi phép biến đổi được thực hiện bằng các thuật toán sử dụng khóa để giải chúng. Các phương pháp mã hóa đối xứng và bất đối xứng được phân biệt bởi độ mạnh mật mã của chúng.

Sức mạnh mật mã

Các hệ thống mã hóa đối xứng và bất đối xứng có một đặc điểm khiến việc truy cập trái phép trở nên khó khăn.

Có 2 loại sức mạnh mật mã chính của hệ thống mã hóa.

  1. Một hệ thống có khả năng kháng cự tuyệt đối không thể bị phá vỡ, ngay cả với nguồn tài nguyên máy tính vô cùng lớn. Nó được đặc trưng bởi thực tế là đối với mỗi tin nhắn, khóa riêng của nó được tạo. Độ dài của nó bằng hoặc lớn hơn độ dài tin nhắn.
  2. Các hệ thống đủ mạnh được sử dụng trong các hệ thống mật mã cho mục đích dân sự. Một thuật toán như vậy rất khó giải mã, nhưng với các tài nguyên thích hợp, điều đó sẽ trở nên khả thi.

So sánh độ mạnh mật mã của một số hệ thống mã hóa

Kích thước khóa RSA tối đa là 4096 bit.

Nó được sử dụng để mã hóa và ký tên. Độ mạnh mật mã có thể được mô tả là 2.7.1028 cho khóa 1300 Bit. Lược đồ này được sử dụng trong nhiều tiêu chuẩn; nguyên tắc mã hóa RSA là một trong những thuật toán bất đối xứng đầu tiên.

Kích thước khóa của sơ đồ ElGamal bằng RSA - 4096 Bits. Nó được sử dụng cho cả mã hóa và chữ ký số. Độ mạnh mật mã của hệ thống này không khác gì RSA có cùng kích thước khóa.

Phương pháp DSA sử dụng khóa nhỏ hơn nhiều - 1024 bit. Nó được sử dụng riêng cho chữ ký số.

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

Hai loại mã hóa này khác nhau về số lượng khóa và mức độ chống hack.

Nếu một khóa được sử dụng để mã hóa và giải mã thì mã hóa là đối xứng. Mã hóa bất đối xứng liên quan đến việc sử dụng một khóa cho mỗi thuật toán.

  1. Khóa chung mã hóa một mã nhất định đại diện cho một thông báo cụ thể. Cả hai bên đều biết khóa này, nó được truyền qua một kênh không bảo mật và có thể bị chặn. Nhiệm vụ quan trọng nhất của việc lưu trữ thông tin là bảo vệ khóa khỏi bị chặn.
  2. Cái riêng được sử dụng để giải mã. Chỉ được một bên biết đến. Nó không thể bị chặn vì nó luôn ở bên một người đối thoại.

Mục đích của việc mã hóa xác định phương pháp duy trì tính bảo mật. Một trong những giải pháp đầu tiên là mã hóa đối xứng; mã hóa bất đối xứng được phát minh sau này để mang lại sự bảo mật cao hơn.

Đặc điểm của mã hóa đối xứng

Hệ thống bảo vệ đối xứng có những ưu điểm sau.


Những nhược điểm bao gồm:

  • sự phức tạp của việc quản lý khóa trong một mạng lớn;
  • sự phức tạp của việc trao đổi khóa;
  • nhu cầu tìm một kênh đáng tin cậy để truyền chìa khóa cho các bên;
  • không thể sử dụng chữ ký số và chứng chỉ số.

Để bù đắp những thiếu sót, một sơ đồ kết hợp được sử dụng, trong đó khóa dùng để giải mã được truyền bằng mã hóa bất đối xứng. Nó được truyền đi bằng cách sử dụng mã hóa đối xứng.

Đặc điểm của mã hóa bất đối xứng

Sử dụng cặp khóa công khai có thể được sử dụng như:

  • phương tiện bảo mật thông tin độc lập;
  • cơ sở phân phối chính;
  • phương tiện xác thực người dùng.

Có những ưu điểm sau:

  • lưu trữ khóa bí mật ở nơi an toàn, thay vào đó khóa mở được truyền qua kênh mở;
  • khóa giải mã chỉ được biết bởi một bên;
  • trong một hệ thống bất đối xứng lớn, sử dụng ít khóa hơn trong hệ thống đối xứng.

Rất khó để thực hiện bất kỳ thay đổi nào trong các thuật toán như vậy. Một hệ thống như vậy có các phím dài. Nếu khóa đối xứng là 128 Bit thì khóa RSA là 2304 Bit. Do đó, tốc độ giải mã bị ảnh hưởng - chậm hơn 2-3 lần. Việc giải mã đòi hỏi tài nguyên tính toán lớn.

Có rất nhiều ví dụ về hệ thống mã hóa đối xứng và bất đối xứng.

Mã hóa đối xứng - nó trông như thế nào?

Dưới đây là một ví dụ về mã hóa đối xứng và sơ đồ triển khai.

  1. Có hai người đối thoại dự định trao đổi thông tin bí mật.
  2. Người đối thoại đầu tiên tạo khóa d, thuật toán mã hóa E và giải mã D. Sau đó, anh ta gửi thông tin này cho người đối thoại thứ hai.
  3. Tin nhắn được giải mã bằng khóa d.

Nhược điểm chính là không có khả năng thiết lập tính xác thực của văn bản. Nếu khóa bị chặn, kẻ tấn công sẽ giải mã thông tin bí mật.

Có những phương pháp cổ điển.

  1. Hoán vị đơn giản và kép.
  2. Hình vuông ma thuật.
  3. Hoán vị đơn.

Phương pháp đầu tiên là một trong những phương pháp đơn giản nhất, sơ đồ không sử dụng khóa. Người gửi và người nhận đồng ý về một số khóa, được biểu thị dưới dạng kích thước bảng. Tin nhắn được truyền đi được ghi vào các cột của bảng nhưng được đọc theo hàng. Biết kích thước của bảng, người nhận sẽ giải mã tin nhắn.

Để đảm bảo tính bí mật cao hơn, việc sắp xếp lại kép được sử dụng. Bằng cách này, văn bản được mã hóa trước đó sẽ được mã hóa. Để làm được điều này, các bảng phải khác nhau về số hàng và số cột. Chúng được lấp đầy theo chiều dọc, chiều ngang, hình con rắn, hình xoắn ốc. Phương pháp này không tăng cường khả năng mã hóa nhưng quá trình hack sẽ kéo dài hơn.

“Hình vuông ma thuật” là một cấu trúc phức tạp hơn, là một ma trận. Các số tự nhiên được nhập vào các ô sao cho tổng các số ở mỗi cột, hàng và đường chéo bằng nhau. Mỗi số tương ứng với một chữ cái của tin nhắn. Văn bản kết quả được viết thành một dòng, phù hợp với số và ký hiệu.

Ví dụ về mã hóa bất đối xứng

Trong trường hợp này, khóa chung được gửi qua một kênh mở và về mặt lý thuyết có thể bị kẻ tấn công chặn lại.

Không giống như khóa đối xứng, khóa mã hóa bất đối xứng có sự khác biệt. Khóa chung được sử dụng để mã hóa và khóa riêng được sử dụng để giải mã tin nhắn. Việc sử dụng hai khóa sẽ giải quyết được vấn đề nghe lén tồn tại trong phương pháp đối xứng. Nó được thực hiện như thế này.

  1. Người đối thoại đầu tiên chọn thuật toán mã hóa và giải mã cũng như một cặp khóa. Khóa công khai được gửi đến người đối thoại thứ hai.
  2. Người đối thoại thứ hai mã hóa thông tin bằng khóa nhận được. Gửi thông tin đến người đối thoại đầu tiên, người sẽ giải mã tin nhắn bằng khóa riêng.

Có những phương pháp mã hóa không đồng bộ cơ bản như vậy.

  1. Mật mã ElGamal.

RSA

RSA là thuật toán mã hóa đầu tiên được sử dụng cho cả mã hóa và chữ ký số.

Nó được mô tả như thế này.

  1. Hai số nguyên tố được chọn, ví dụ: 3 và 7.
  2. Mô-đun n được tính toán - tích của hai số. Hóa ra là 21.
  3. Hàm Euler φ=(p-1)×(q-1)=2×6=12 được tính toán.
  4. Bất kỳ số nguyên tố e nào nhỏ hơn φ và số nguyên tố có φ đều được tính toán. Các lựa chọn có sẵn: 5, 7, 11.

Cặp số e, n (5, 21) là khóa công khai. Bây giờ số d và n của khóa riêng đã được tính. Số d thỏa mãn điều kiện (d×e) mod φ=1 và bằng 17. Do đó, cặp số thứ hai 17 và 21 là khóa riêng. Việc mã hóa được thực hiện như sau: tin nhắn được nâng lên lũy thừa e, lấy phần dư của phép chia cho n và kết quả phải nhỏ hơn số n. Hóa ra 10 - đây sẽ là dữ liệu được mã hóa. Để giải mã, e được nâng lên lũy thừa d và tính phần dư của phép chia cho n.

DSA

DSA (không giống RSA) chỉ được sử dụng để ký kỹ thuật số chứ không phải mã hóa. Một chữ ký nhất định có thể được xác minh công khai. Có hai thuật toán để tạo và xác minh chữ ký. Đó là thông điệp băm đại diện cho văn bản ở dạng kỹ thuật số được mã hóa. Do đó, hàm băm phức tạp được chọn để tránh xung đột. Xây dựng chữ ký số bao gồm các bước sau.

  1. Chọn hàm băm mật mã H(x).
  2. Kích thước bit của số nguyên tố q phải bằng giá trị hàm băm H(x).
  3. Chọn số nguyên tố p sao cho p-1 chia hết cho q không có số dư.
  4. Tính số g = h(p-1)/q mod p. h phải là một số tùy ý trong khoảng từ 1 đến p-1.
  5. Một số ngẫu nhiên k từ 0 đến q được chọn.
  6. Tính r = (g k mod p) mod q.
  7. Khi đó s = k-1(H(m) + xr)) mod q .
  8. Nếu r=0 hoặc s=0 thì số k khác được chọn.

Sơ đồ El Gamal

Mã hóa ElGamal được sử dụng cho chữ ký số. Nó là sự tiếp nối của thuật toán Diffie-Hellman.

Khi làm việc theo sơ đồ này, điều quan trọng là phải tính đến tính năng sau. Mã hóa ElGamal không phải là thuật toán chữ ký số dựa trên sơ đồ cùng tên. Khi mã hóa, văn bản được chuyển thành mật mã có độ dài gấp 2 lần so với tin nhắn gốc.

Việc tạo khóa xảy ra như sau.

  1. Một số nguyên tố ngẫu nhiên p được chọn.
  2. Số g phải là gốc nguyên thủy của p.
  3. Số x phải lớn hơn 1 và nhỏ hơn p-1. Đây sẽ là khóa riêng.
  4. Sau đó, khóa chung y được tính bằng công thức g^x mod p .

Khi mã hóa văn bản M, khóa hệ thống K được chọn. Nó lớn hơn một và nhỏ hơn p-1. Sau đó, các số a và b được tính toán, là văn bản mã hóa, a = g^k mod p và b = y^k M mod p .

Mật mã cổ điển hoặc mật mã khóa đơn dựa vào việc sử dụng thuật toán mã hóa đối xứng, trong đó mã hóa và giải mã chỉ khác nhau về thứ tự thực hiện và hướng của một số bước. Các thuật toán này sử dụng cùng một phần tử bí mật (khóa) và hành động thứ hai (giải mã) là sự đảo ngược đơn giản của hành động đầu tiên (mã hóa). Do đó, thông thường mỗi người tham gia trao đổi có thể mã hóa và giải mã tin nhắn. Cấu trúc sơ đồ của một hệ thống như vậy được thể hiện trong hình. 2.1.


Cơm. 2.1.

Ở phía gửi có nguồn tin nhắn và nguồn khóa. Nguồn khóa chọn một khóa K cụ thể trong số tất cả các khóa có thể có của một hệ thống nhất định. Khóa K này được truyền theo cách nào đó đến bên nhận và người ta cho rằng nó không thể bị chặn, ví dụ, khóa được truyền bởi một người chuyển phát nhanh đặc biệt (do đó mã hóa đối xứng còn được gọi là mã hóa với khóa riêng). Nguồn tin nhắn tạo ra một số tin nhắn M, sau đó được mã hóa bằng khóa đã chọn. Kết quả của thủ tục mã hóa là thu được một thông điệp mã hóa E (còn gọi là mật mã). Tiếp theo, mật mã E được truyền qua kênh liên lạc. Vì kênh liên lạc mở, không được bảo vệ, chẳng hạn như kênh vô tuyến hoặc mạng máy tính, nên tin nhắn được truyền đi có thể bị kẻ thù chặn lại. Ở bên nhận, mật mã E được giải mã bằng khóa và nhận được tin nhắn gốc M.

Nếu M là một thông điệp, K là một khóa và E là một thông điệp được mã hóa thì chúng ta có thể viết

nghĩa là, tin nhắn được mã hóa E là một chức năng nào đó của tin nhắn gốc M và khóa K. Phương thức mã hóa hoặc thuật toán được sử dụng trong hệ thống mật mã xác định hàm f trong công thức trên.

Do sự dư thừa lớn của ngôn ngữ tự nhiên nên việc thực hiện một thay đổi có ý nghĩa trực tiếp thành tin nhắn được mã hóa là vô cùng khó khăn, vì vậy mật mã cổ điển cũng cung cấp sự bảo vệ chống lại việc áp đặt dữ liệu sai lệch. Nếu độ dư thừa tự nhiên không đủ để bảo vệ tin nhắn khỏi bị sửa đổi một cách đáng tin cậy thì độ dư thừa có thể được tăng lên một cách giả tạo bằng cách thêm một tổ hợp điều khiển đặc biệt vào tin nhắn, được gọi là chèn giả.

Có nhiều phương pháp mã hóa khác nhau bằng khóa riêng (Hình 2). 2.2. Trong thực tế, các thuật toán hoán vị và thay thế cũng như các phương pháp kết hợp thường được sử dụng.


Cơm. 2.2.

Trong các phương pháp hoán vị, các ký tự trong văn bản nguồn được hoán đổi cho nhau theo một quy tắc nhất định. Trong các phương pháp thay thế (hoặc thay thế), các ký tự văn bản gốc được thay thế bằng một số văn bản mã hóa tương đương. Để cải thiện tính bảo mật của mã hóa, văn bản được mã hóa bằng một phương pháp có thể được mã hóa lại bằng phương pháp khác. Trong trường hợp này, thu được một mật mã kết hợp hoặc tổng hợp. Mật mã đối xứng khối hoặc dòng hiện đang được sử dụng trong thực tế cũng được phân loại là mật mã kết hợp vì chúng sử dụng một số thao tác để mã hóa tin nhắn. “Nguyên tắc xây dựng mật mã khối bằng khóa riêng”, “Thuật toán mã hóa DES và AES”, “Thuật toán chuyển đổi dữ liệu mật mã GOST 28147-89” và bài giảng này thảo luận về các mật mã thay thế và hoán vị được con người sử dụng từ xa xưa. Chúng ta nên làm quen với các mật mã này vì phép thay thế và hoán vị được sử dụng như các phép toán phức hợp trong mật mã khối hiện đại.

Chúng tôi đã phát hành một cuốn sách mới, Tiếp thị nội dung trên mạng xã hội: Cách thu hút người theo dõi và khiến họ yêu thích thương hiệu của bạn.

Đặt mua

HTTP là thứ cho phép truyền dữ liệu. Ban đầu, nó được tạo ra để gửi và nhận tài liệu có chứa các liên kết bên trong nhằm thực hiện chuyển đổi sang tài nguyên của bên thứ ba.

Chữ viết tắt có nghĩa là “Giao thức truyền siêu văn bản”, được dịch có nghĩa là “giao thức truyền tải”. HTTP thuộc nhóm lớp ứng dụng dựa trên các chi tiết cụ thể được OSI sử dụng.

Để hiểu rõ hơn ý nghĩa của HTTP, chúng ta hãy xem xét một sự tương tự đơn giản. Hãy tưởng tượng rằng bạn đang giao tiếp với một người nước ngoài trên mạng xã hội. Anh ấy gửi cho bạn một tin nhắn bằng tiếng Anh, bạn nhận được nó. Nhưng bạn không thể hiểu được nội dung vì bạn nói ngôn ngữ không tốt. Để giải mã thông điệp, hãy sử dụng từ điển. Đã hiểu bản chất, bạn trả lời người nước ngoài bằng tiếng Nga và gửi câu trả lời. Người nước ngoài nhận được câu trả lời và với sự trợ giúp của người phiên dịch, sẽ giải mã được thông điệp. Để đơn giản hóa toàn bộ cơ chế, các giao thức Internet HTTP thực hiện chức năng của một trình dịch. Với sự trợ giúp của họ, trình duyệt có thể dịch nội dung được mã hóa của các trang web và hiển thị nội dung của chúng.

HTTP để làm gì?

Giao thức HTTP được sử dụng để trao đổi thông tin bằng mô hình máy khách-máy chủ. Máy khách soạn và truyền yêu cầu đến máy chủ, sau đó máy chủ xử lý và phân tích yêu cầu đó, sau đó phản hồi sẽ được tạo và gửi cho người dùng. Khi kết thúc quá trình này, máy khách sẽ đưa ra một lệnh mới và mọi thứ sẽ lặp lại.

Do đó, giao thức HTTP cho phép bạn trao đổi thông tin giữa các ứng dụng người dùng khác nhau và các máy chủ web đặc biệt, cũng như kết nối với các tài nguyên web (thường là trình duyệt). Ngày nay, giao thức được mô tả đảm bảo hoạt động của toàn bộ mạng. Giao thức truyền dữ liệu HTTP cũng được sử dụng để truyền thông tin qua các giao thức cấp thấp hơn khác, ví dụ: WebDAV hoặc SOAP. Trong trường hợp này, giao thức là một phương tiện vận chuyển. Nhiều chương trình cũng dựa vào HTTP làm công cụ chính để trao đổi thông tin. Dữ liệu được trình bày ở nhiều định dạng khác nhau, ví dụ: JSON hoặc XML.

HTTP là một giao thức trao đổi thông tin qua kết nối IP/TCP. Thông thường, máy chủ sử dụng cổng TCP 80 cho mục đích này. Nếu cổng không được chỉ định, phần mềm máy khách sẽ sử dụng cổng loại TCP 80 theo mặc định. Trong một số trường hợp, các cổng khác có thể được sử dụng.

Giao thức HTTP sử dụng sơ đồ mã hóa đối xứng và sử dụng các hệ thống mật mã đối xứng. Hệ thống mật mã đối xứng liên quan đến việc sử dụng cùng một khóa để mã hóa và giải mã thông tin.

Sự khác biệt giữa HTTP và HTTPS là gì

Sự khác biệt có thể được phát hiện ngay cả từ việc giải mã các chữ viết tắt. HTTPS là viết tắt của Bảo mật giao thức truyền siêu văn bản. Do đó, HTTP là một giao thức độc lập và HTTPS là phần mở rộng để bảo vệ nó. HTTP truyền thông tin không được bảo vệ, trong khi HTTPS cung cấp bảo vệ bằng mật mã. Điều này đặc biệt đúng đối với các tài nguyên được ủy quyền có trách nhiệm. Đây có thể là mạng xã hội hoặc trang web hệ thống thanh toán.

Sự nguy hiểm của việc truyền dữ liệu không được bảo vệ là gì? Một chương trình đánh chặn có thể chuyển chúng cho kẻ tấn công bất cứ lúc nào. HTTPS có một tổ chức kỹ thuật phức tạp cho phép bạn bảo vệ thông tin một cách đáng tin cậy và loại bỏ khả năng truy cập trái phép vào thông tin đó. Sự khác biệt nằm ở các cổng. HTTPS thường hoạt động trên cổng 443.

Do đó, HTTP được sử dụng để truyền dữ liệu và HTTPS cho phép truyền dữ liệu an toàn bằng cách sử dụng mã hóa và ủy quyền trên các tài nguyên có mức độ bảo mật cao.

Chức năng bổ sung

HTTP rất giàu chức năng và tương thích với nhiều tiện ích mở rộng khác nhau. Thông số kỹ thuật 1.1 được sử dụng ngày nay cho phép tiêu đề Nâng cấp được sử dụng để chuyển đổi và hoạt động thông qua các giao thức khác khi trao đổi dữ liệu. Để thực hiện việc này, người dùng phải gửi yêu cầu đến máy chủ có tiêu đề này. Nếu máy chủ cần chuyển sang một sàn giao dịch cụ thể bằng giao thức khác, nó sẽ trả về một yêu cầu cho máy khách, hiển thị trạng thái “Yêu cầu nâng cấp 426”.

Tính năng này đặc biệt phù hợp để trao đổi thông tin qua WebSocket (có đặc tả RFC 6455, cho phép bạn trao đổi dữ liệu bất kỳ lúc nào mà không cần các yêu cầu HTTP không cần thiết). Để di chuyển sang WebSocket, một người dùng sẽ gửi yêu cầu có tiêu đề Nâng cấp và giá trị “websocket”. Tiếp theo, máy chủ phản hồi với “101 Giao thức chuyển mạch”. Sau thời điểm này, quá trình truyền thông tin qua WebSocket bắt đầu.

Rất ít người biết chính xác cách thức hoạt động của mã hóa bất đối xứng. Ví dụ: có những người không coi giao thức https là biện pháp bảo vệ thích hợp cho dữ liệu được truyền. Và theo quy định, khi cố gắng thuyết phục họ bằng cách khác, họ sẽ phản hồi bằng một câu gì đó như “nếu chúng tôi truyền dữ liệu được mã hóa thì chúng tôi phải nói cách giải mã nó và thông tin này có thể bị chặn và do đó, dữ liệu có thể bị xâm phạm.” đã được giải mã.” Và đối với những lập luận cho rằng điều này không phải như vậy và mã hóa bất đối xứng là cơ sở, câu trả lời là “Vậy thì sao?”

Được rồi, tôi hiểu rằng không phải ai cũng cần biết tất cả những điều phức tạp khi triển khai mã hóa bất đối xứng. Nhưng tôi nghĩ tất cả những ai liên quan đến máy tính đều nên biết nguyên lý hoạt động chung.

Tôi muốn tóm tắt nội dung của bài đăng này trong chú thích này: Hãy nhớ rằng, mã hóa bất đối xứng được an toàn, tất nhiên, nếu tất cả các điều kiện được đáp ứng. Và để chứng minh điều này, tôi sẽ cố gắng mô tả thuật toán bằng ngôn ngữ dễ hiểu để mọi người có thể hiểu rằng nó an toàn. Gặp Alice, Bob và Eve và việc truyền tải thông điệp bí mật của họ dưới phần cắt.

Nhân tiện, tại sao lại là Alice và Bob? Có một bài viết ngắn về điều này trên Wikipedia: Alice, Bob và Eve. Để làm rõ hơn, Alice và Bob muốn trao đổi tin nhắn và Eve đang cố gắng chặn và đọc những tin nhắn này.

Một ít lịch sử

Mật mã của các thế kỷ trước có một vấn đề lớn - vấn đề chuyển khóa. Vào thời điểm đó, chỉ có cái gọi là mật mã “đối xứng” - mật mã trong đó dữ liệu được mã hóa và giải mã bằng cùng một khóa.

Ví dụ: Alice đã mã hóa một số tin nhắn và muốn gửi nó cho Bob. Đương nhiên, để Bob có thể đọc được nó, anh ta cần có chìa khóa để mã hóa tin nhắn. Và vấn đề đặt ra là làm thế nào để chuyển chìa khóa để không ai có thể chặn được. Những người tò mò sẽ đưa ra lời đề nghị - hãy để họ trực tiếp đưa ra lời đề nghị và sau đó trao đổi bao nhiêu tùy thích. Vâng, tôi không tranh luận, đó là một lối thoát. Bây giờ hãy tưởng tượng trong giây lát rằng thư Internet của bạn, trước khi bạn đăng nhập vào nó, sẽ yêu cầu bạn di chuyển đến vị trí thực tế của máy chủ thư. Thoải mái? Có lẽ không nhiều lắm.

Tất nhiên, chìa khóa có thể được truyền qua một kênh liên lạc khác. Nhưng mật mã coi tất cả các kênh liên lạc không an toàn là không an toàn. Nghĩa là, chẳng hạn, việc chuyển chìa khóa cho Bob qua điện thoại được coi là không an toàn, cũng như không có gì ngăn cản Eve nghe điện thoại.

Cho đến những năm 70, vấn đề này đã trở nên phổ biến đến mức nó được coi là một tiên đề rằng để truyền một thông điệp, bạn cần truyền khóa mà thông điệp được mã hóa (và một số người vẫn nghĩ theo cách này). Nhưng vào năm 1976, Diffie và Hellman đã đề xuất “phương pháp trao đổi khóa theo cấp số nhân” của họ. Kể từ những năm này, sự phát triển của hệ thống mật mã bất đối xứng đã bắt đầu.

Một chút cuộc sống thực tế

Trước khi nghiên cứu bất kỳ thuật toán nào, bạn cần hình dung cách thức hoạt động của nó. Và cách dễ nhất là so sánh nó với cách thức hoạt động của một thứ gì đó trong thực tế.

Hãy tưởng tượng Alice và Bob sống ở một đất nước mà toàn bộ hệ thống bưu chính hoàn toàn vô đạo đức và nhân viên bưu điện đọc tất cả thư không bảo mật. Alice, một cô gái không ngốc nghếch, trước khi gửi tin nhắn cho Bob, đã lấy một chiếc hộp sắt, nhét bức thư vào bên trong và dùng khóa đóng lại rồi gửi chiếc hộp này cho Bob.

Đương nhiên, bưu điện không thể đọc được bức thư này, nhưng bản thân Bob cũng không thể đọc được nó, vì anh ấy không có chìa khóa để đóng ổ khóa. Tất nhiên, Alice có thể lấy một chiếc hộp sắt khác, nhét chìa khóa của chiếc trước đó vào đó và gửi cho Bob, nhưng Bob cũng sẽ không mở được nó...

Cách duy nhất là tạo một khóa trùng lặp và đích thân đưa nó cho Bob...

Và do đó, có vẻ như việc trao đổi khóa là một phần không thể tránh khỏi của quá trình mã hóa - hay không phải vậy?

Hãy tưởng tượng một bức tranh khác. Tôi sẽ viết nó ra từng bước:

  1. Alice đặt bức thư của mình vào một chiếc hộp sắt và khóa nó lại rồi gửi cho Bob.
  2. Khi Bob nhận được chiếc hộp, (chú ý!) Anh ấy lấy ổ khóa của mình và khóa chiếc hộp lại rồi gửi lại.
  3. Alice đã nhận được chiếc hộp có hai ổ khóa (để tôi nhắc bạn, ổ khóa đầu tiên của Alice, cô ấy có chìa khóa và ổ khóa thứ hai của Bob, chỉ Bob mới có chìa khóa).
  4. Alice mở khóa và gửi lại chiếc hộp cho Bob
  5. Bob nhận được một chiếc hộp có ổ khóa mà anh ấy có chìa khóa
  6. Bob mở ổ khóa còn lại bằng chìa khóa của mình và đọc tin nhắn

Ý nghĩa của truyện ngắn này là rất lớn. Nó cho thấy hai người có thể truyền một thông điệp bí mật mà không cần trao đổi khóa. Hãy nghĩ về nó! Câu chuyện này thực sự đã phá hủy tất cả các tiên đề mà mật mã thời đó đã được xây dựng trên đó. Đúng, chúng tôi gặp phải một số rắc rối trong quy trình (hộp phải được gửi ba lần), nhưng kết quả...

Hãy quay lại với mật mã

Có vẻ như một giải pháp đã được tìm thấy. Người gửi và người nhận mã hóa tin nhắn của họ, sau đó người đối thoại thay phiên nhau giải mã tin nhắn của họ.


Nhưng vấn đề là không có mật mã nào cho phép người ta loại bỏ mật mã này khỏi mật mã khác. Nghĩa là, giai đoạn Alice loại bỏ mật mã của mình là không thể:


Thật không may, tất cả các thuật toán hiện tại vẫn yêu cầu loại bỏ các mật mã trong hàng đợi mà chúng được áp dụng. Tôi ngại gọi đây là một tiên đề (vì lịch sử đã biết có những trường hợp những tiên đề như vậy bị đập tan thành từng mảnh), nhưng trường hợp này vẫn xảy ra.

Hãy quay lại với toán học

Ý tưởng về chiếc hộp mà tôi mô tả ở trên đã truyền cảm hứng cho Diffie và Hellman tìm cách truyền tải thông điệp. Cuối cùng họ đã sử dụng hàm một chiều.

Hàm một chiều là gì? Ví dụ: có một hàm nhân đôi, tức là gấp đôi(4)=8, nó có hai mặt, bởi vì từ kết quả 8, dễ dàng thu được giá trị ban đầu 4. Hàm một chiều là một hàm sau khi áp dụng thì gần như không thể thu được giá trị ban đầu. Ví dụ, trộn sơn màu vàng và màu xanh là một ví dụ về chức năng một chiều. Trộn chúng lên một cách dễ dàng, nhưng để lấy lại các thành phần ban đầu - không thể nào. Một hàm như vậy trong toán học là tính toán modulo.

Để làm cơ sở cho thuật toán, Hellman đã đề xuất hàm Y x (mod P). Phép biến đổi nghịch đảo cho một hàm như vậy là rất khó và chúng ta có thể nói rằng, về bản chất, nó bao gồm một bảng liệt kê đầy đủ các giá trị ban đầu.

Ví dụ, bạn được bảo rằng 5 x (mod 7) = 2, cố gắng tìm x, MỘT? Tìm thấy nó? Bây giờ hãy tưởng tượng rằng các số có thứ tự 10.300 được lấy là Y và P.

Nhân tiện, để tăng độ bền, số lượng P phải là số nguyên tố và Y- là một modulo gốc nguyên thủy P. Nhưng vì chúng ta vẫn đang cố gắng tìm hiểu lý thuyết nên tôi không thấy có ích gì khi bận tâm đến vấn đề này.

Thuật toán Diffie-Hellman

Và rồi một ngày nọ, Hellman chợt nhận ra và anh ấy đã có thể phát triển một thuật toán trao đổi khóa hoạt động được. Thuật toán này yêu cầu các bước ở cả hai bên để hoạt động, vì vậy tôi sẽ đặt nó vào một bảng:

Alice hạt đậu
Giai đoạn 1 Cả hai người tham gia đều đồng ý về ý nghĩa YP cho hàm một chiều tổng quát. Thông tin này không phải là bí mật. Giả sử các giá trị đã được chọn 7 11 . Chức năng chung sẽ trông như thế này: 7 x (mod 11)
Giai đoạn 2 Alice chọn một số ngẫu nhiên, ví dụ 3 MỘT Bob chọn một số ngẫu nhiên chẳng hạn 6 , giữ bí mật, hãy biểu thị nó dưới dạng số B
Giai đoạn 3 Alice thay thế số MỘT 7 3 (mod 11)= 343 (mod 11) = 2 Một Bob cắm số B vào hàm tổng quát và tính kết quả 7 6 (mod 11)= 117649 (mod 11) = 4 , biểu thị kết quả của phép tính này dưới dạng một số b
Giai đoạn 4 Alice chuyển số Một Bob Bob chuyển số b Alice
Giai đoạn 5 Alice được b từ Bob và tính giá trị b A (mod 11)= 4 3 (mod 11) = 64 (mod 11) = 9 Bob được Một từ Alice và tính giá trị một B (mod 11)= 2 6 (mod 11) = 64 (mod 11) = 9
Giai đoạn 6 Cả hai người tham gia đều kết thúc bằng một con số 9 . Đây sẽ là chìa khóa.

Ảo thuật? Tôi không tranh luận, thoạt nhìn thì không rõ ràng. Nhưng sau khi đọc và suy nghĩ về bảng này, bạn sẽ thấy rõ nó hoạt động như thế nào. Tuy nhiên, nếu vẫn chưa rõ thì hãy kéo đến cuối chương, nơi tôi đã đăng một video giải thích.

Hơn nữa, xin lưu ý rằng để có được chìa khóa trong công thức cuối cùng, bất kỳ người nào cũng cần phải có ba giá trị:

  • Giá trị MộtP, và số bí mật của Bob B
  • hoặc ý nghĩa bP, và số bí mật của Alice MỘT

Nhưng những con số bí mật không được truyền qua kênh! Eve sẽ không thể lấy lại chìa khóa nếu không có số bí mật của ai đó. Tại sao - tôi đã viết ở trên, chức năng này là một chiều. Hãy thử giải phương trình 4 x (mod 11) = 2 y (mod 11)Đã tìm thấy xy.

Để làm rõ hơn cách thức hoạt động của sơ đồ Hellman, hãy tưởng tượng một mật mã bằng cách nào đó sử dụng màu sắc làm khóa:

Trước tiên, hãy giả sử rằng tất cả mọi người, kể cả Alice, Bob và Eve, đều có một lọ ba lít đổ vào một lít sơn màu vàng. Nếu Alice và Bob muốn thống nhất về một chìa khóa bí mật, mỗi người sẽ thêm một lít sơn bí mật của riêng mình vào lọ của mình.

Alice có thể thêm màu tím và Bob có thể thêm màu đỏ thẫm. Sau đó, mỗi người gửi bình đựng hỗn hợp của mình cho người kia.

Cuối cùng, Alice lấy hỗn hợp của Bob và thêm một lít sơn bí mật của cô ấy vào đó, còn Bob lấy hỗn hợp của Alice và thêm một lít sơn bí mật của anh ấy vào đó. Sơn trong cả hai lon bây giờ sẽ có cùng màu, vì mỗi lon chứa một lít sơn màu vàng, tím và đỏ thẫm.

Chính màu này, thu được bằng cách thêm hai lần vào lọ sơn, sẽ được dùng làm chìa khóa. Alice không biết Bob đã thêm loại sơn nào, và Bob cũng không biết Alice đổ loại sơn nào, nhưng cả hai đều đạt được kết quả như nhau.

Trong khi đó, Eva rất tức giận. Ngay cả khi cô ấy có thể chặn được các lọ chứa sản phẩm trung gian, cô ấy cũng sẽ không thể xác định được màu cuối cùng, đó sẽ là chìa khóa đã thỏa thuận. Eve có thể nhìn thấy màu sơn thu được bằng cách trộn sơn màu vàng và sơn bí mật của Alice trong chiếc lọ gửi cho Bob, và cô ấy có thể nhìn thấy màu sơn thu được bằng cách trộn sơn màu vàng và sơn bí mật của Bob trong chiếc lọ gửi cho Alice. , nhưng để tìm ra chìa khóa, trên thực tế, cô ấy cần phải biết màu sơn bí mật ban đầu của Alice và Bob. Tuy nhiên, khi nhìn vào lọ sơn hỗn hợp, Eve sẽ không thể xác định được màu sắc bí mật của Alice và Bob. Ngay cả khi cô ấy lấy mẫu của một trong các màu đã trộn, cô ấy sẽ không thể tách nó thành các màu ban đầu để tìm ra màu bí mật, vì việc trộn sơn là chức năng một chiều.

Vẫn chưa rõ ràng? Sau đó xem video:

Chà, tôi hy vọng bạn hiểu rằng có một cách rất thực tế để trao đổi khóa một cách an toàn. Nhưng xin lưu ý rằng vẫn chưa thể gọi thuật toán này là mật mã bất đối xứng, vì về bản chất nó chỉ là một thuật toán trao đổi khóa.

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

Thuật toán bất đối xứng giả định sự hiện diện của hai khóa - công khai và riêng tư. Nghĩa là, tin nhắn được mã hóa bằng khóa chung và được giải mã bằng khóa riêng và không có gì khác. Trên thực tế, chính khái niệm này đã được Diffie hình thành.

Nhìn chung, bản chất của thuật toán này là bên nhận, trước khi nhận được tin nhắn, sẽ tạo ra một cặp khóa dựa trên thuật toán số học mô-đun (nguyên tắc giống như trong thuật toán Diffie-Hellman), khóa riêng tư và công khai thực tế. chìa khóa. Trước khi gửi, người gửi nhận được một khóa chung và mã hóa tin nhắn bằng khóa này, sau đó tin nhắn này chỉ có thể được giải mã bằng khóa riêng, được bên nhận giữ bí mật.


Nếu chúng ta quay trở lại sự tương tự với các ổ khóa, thì mã hóa khóa công khai có thể được coi như sau:

Bất kỳ ai cũng có thể khóa ổ khóa bằng cách nhấp vào ổ khóa đó cho đến khi nó đóng lại, nhưng chỉ người có chìa khóa mới có thể mở khóa được. Việc khóa ổ khóa (mã hóa) rất dễ dàng, hầu như ai cũng làm được nhưng chỉ có chủ nhân của chìa khóa mới có thể mở được (giải mã). Hiểu cách chốt ổ khóa để nó đóng lại sẽ không cho bạn biết cách mở khóa.

Một sự tương tự sâu sắc hơn có thể được rút ra.

Hãy tưởng tượng Alice đang thiết kế một chiếc ổ khóa và chìa khóa. Cô cảnh giác bảo vệ chìa khóa nhưng đồng thời tạo ra hàng nghìn ổ khóa trùng lặp và gửi chúng đến các bưu điện trên khắp thế giới. Nếu Bob muốn gửi một tin nhắn, anh ta sẽ bỏ nó vào một chiếc hộp, đến bưu điện địa phương, yêu cầu "khóa Alice" và khóa chiếc hộp đó lại. Bây giờ anh ấy sẽ không thể mở chiếc hộp được nữa nhưng khi Alice nhận được chiếc hộp, cô ấy sẽ có thể mở nó bằng chiếc chìa khóa duy nhất của mình.

Đặt một ổ khóa và nhấp vào nó để đóng tương đương với một khóa dùng chung để mã hóa, vì mọi người đều có quyền truy cập vào ổ khóa và mọi người đều có thể sử dụng ổ khóa để khóa tin nhắn trong hộp. Chìa khóa của ổ khóa tương đương với chìa khóa giải mã bí mật vì chỉ có Alice mới có nó, chỉ cô ấy mới có thể mở được ổ khóa và chỉ có cô ấy mới có thể truy cập được thông điệp trong hộp.

Có một số thuật toán thực hiện mã hóa bất đối xứng. Nổi tiếng nhất trong số đó là RSA. Tôi không hiểu mục đích của việc mô tả nó là gì, vì tôi vẫn chưa thể hiểu ngay cách thức hoạt động của nó và tôi vẫn không thể viết nó hay hơn những gì được viết trên Wikipedia.

Phần kết luận

Chà, tôi hy vọng rằng một khi bạn hiểu cách mã hóa bất đối xứng hoạt động từ bên trong, bạn sẽ tin tưởng nó hơn và do đó, hãy sử dụng SSL thường xuyên hơn =)

Tài liệu được sử dụng từ cuốn sách Singh Simon - Book of Codes. Nhân tiện, đây là cuốn sách hay nhất dành cho những ai muốn hiểu ít nhất một chút về mật mã. Tôi khuyên mọi người nên đọc nó.

  1. TV

    Việc chọn key như vậy sẽ khiến bạn mất rất nhiều thời gian. Nhiều hơn một chút so với sự tồn tại của vũ trụ. Ngay cả trên các máy tính rất mạnh.

  2. Igor

    Điều vô nghĩa này với các khóa công khai là gì? Những cái đối xứng thì đáng tin cậy hơn.
    Chào buổi chiều
    Trang web tốt, tài liệu được trình bày rõ ràng, cảm ơn tác giả rất nhiều. Tôi đến đây một cách tình cờ vào tháng 9, khi tôi đang tìm kiếm thông tin về mã hóa thực tế.
    Tôi viết thư này vì muốn hỏi: Có ai muốn biết cách tìm số để mã hóa đối xứng không? Tôi có thể dạy bạn cách kiểm tra nhanh tính nguyên tố của số P (không cần tìm số g) - nhưng điều này có thể không thú vị. Thú vị nhất:
    Tìm số P có độ dài bất kỳ và số g ứng với nó. Tôi không sử dụng bất kỳ số 2 nào với lũy thừa của n cộng một (hoặc trừ một). Đương nhiên, nó miễn phí. Thậm chí còn có một trang web nơi tôi đăng tác phẩm của mình.

  • Uasya Petrovich

    Tôi hiểu rằng thời gian đã trôi qua rất nhiều nhưng tôi vẫn sẽ trả lời cho những độc giả mới như tôi.

    Điều này sẽ không hiệu quả vì... sau hành động 2 và 3, chúng ta thấy sự khác biệt trong đó số lượng của mỗi khối đã thay đổi, do đó số bí mật của Bob trở nên rõ ràng đối với chúng ta và chúng ta chỉ có thể chặn tin nhắn sau hành động thứ 4 (tức là không có mật mã của Alice) và sử dụng những gì được chúng tôi đã biết số của Bob.

  • Eugene

    Cảm ơn bạn rất nhiều vì bài viết!
    Sau khi đọc, hầu hết mọi thứ đều rơi vào vị trí trên kệ riêng của nó và có được cấu trúc dễ dàng mở rộng.
    Có cấu trúc như vậy, thật dễ dàng để tạo ra các câu hỏi phù hợp (Kệ tấn công MiTM, đặc biệt cảm ơn Mikhail :)).

    Từ quan điểm sư phạm, bạn đã làm mọi thứ một cách hoàn hảo. Tôi nghĩ bạn đã đúng khi không thêm các cuộc tấn công MiTM vào bài viết này, nếu không sẽ xảy ra tình trạng quá tải thông tin.

    Video rất đáng yêu, đặc biệt là khi xem xét độ tuổi của nó.

    Tái bút: thực sự rất khó để đánh giá quá cao việc sử dụng phép ẩn dụ để giải thích các hệ thống “phức tạp”. Cảm ơn một lần nữa!

  • dbzix

    Từ bài viết này, tôi đã không nắm bắt được thời điểm chuyển đổi từ thuật toán Diffie-Hellman, trong đó hai người đăng ký trao đổi dữ liệu công khai và kết quả tính toán trung gian để lấy khóa bí mật (trong ví dụ có tới 6 giai đoạn) sang giai đoạn mà một khóa chung nhất định được sử dụng để mã hóa, sau đó được giải mã bằng khóa riêng (tôi tính ở đây chỉ có 2 giai đoạn truyền dữ liệu - gửi khóa chung và gửi tin nhắn được mã hóa bằng khóa này).
    Những thứ kia. Tôi hiểu rằng ở đâu đó giữa hai cách giải thích này có lẽ có rất nhiều điều toán học ẩn giấu, và cuối cùng lời giải thích tóm lại là “đây là cách nó hoạt động, hãy tin tôi đi”. Nhưng có lẽ sẽ dễ hiểu hơn sự chuyển đổi đột ngột này nếu sự tương tự với sơn được mở rộng để giải thích bản chất của mã hóa bằng khóa chung, sau đó là giải mã bằng khóa riêng. Trong khi đó, hóa ra “B hoạt động vì A” trong khi giữa A và B không có mối liên hệ rõ ràng nào. Ít nhất là đối với tôi.
    Tác giả thân mến, bạn vui lòng giải thích cho tôi bước nhảy huyền bí từ A đến B này được không? :) Cảm ơn!

  • Eugene

    Chào buổi chiều,

    Cho trước: tồn tại công thức Y^x (mod P).
    ví dụ trong bài viết dựa trên công thức 7^x (mod 11)

    Tôi lấy 4^x (mod 7) làm ví dụ của mình
    và tôi không thể tìm ra một chìa khóa chung.
    Câu hỏi: tại sao thuật toán trong ví dụ hoạt động với 7^x (mod 11) mà không hoạt động với 4^x (mod 7)?

  • Jessi Jane
  • Andrey

    Cảm ơn bạn, bài viết tuyệt vời!
    Đến bây giờ tôi gần như đã tìm ra thuật toán, cách tính toán thông qua module.
    Bạn có thể cho tôi biết cách tính số B nếu số A nhỏ hơn mô đun không?
    Vâng, ví dụ:
    3(mod 13) = ?

    Tôi biết rằng, ví dụ, nếu bạn cần tính 625(mod 13), bạn cần 625/13, sau đó nhân ước số nguyên lớn nhất có thể (48) với mô đun (ở đây sẽ bằng 624), và cuối cùng 625-624 = 1
    Các số 625 và 1 có thể so sánh được theo modulo 13, vì 624 chia hết cho 13.
    Đây là những gì tôi hiểu. Nhưng nếu mô-đun lớn hơn số a thì sao?

  • Kinh dị màu vàng

    1. Tấn công trung gian là một vấn đề nghiêm trọng. Theo như tôi có thể nói, chỉ trong khuôn khổ mật mã, vấn đề này không thể được giải quyết về nguyên tắc: nếu chúng ta chấp nhận rằng Eve có khả năng chặn và thay thế TẤT CẢ dữ liệu đến Alice hoặc phát ra từ cô ấy qua BẤT KỲ kênh liên lạc nào một cách dễ dàng, không có mã hóa sẽ giúp. Alice phải lấy được ít nhất một chứng chỉ từ một nguồn hoàn toàn đáng tin cậy. Nhưng nếu kẻ tấn công chỉ có thể nghe kênh liên lạc và không thay đổi dữ liệu trong đó thì mã hóa bất đối xứng khá đáng tin cậy.
    2. Về khả năng loại bỏ một “lớp mật mã” khỏi lớp khác, hàm XOR tầm thường, được sử dụng rộng rãi trong mật mã từ thời cổ đại cho đến ngày nay, có đặc tính này. Tôi không nghĩ nó có thể được cấp bằng sáng chế :(

    1. Dmitry Amirov Tác giả

      Vâng, bạn nói đúng, cuộc tấn công mitm ngày nay không thể giải quyết được bằng bất kỳ cách nào nếu bạn hoàn toàn hoang tưởng. Nếu không, thì việc loay hoay với các chứng chỉ và chữ ký sẽ mang lại sự bảo vệ “cần và đủ”.

      Còn hàm XOR khó có thể gọi là mật mã vì về bản chất nó không phải là một.

      1. Kinh dị màu vàng

        Cố lên? Google Mật mã Vernam. Đây là một hệ thống nhắn tin với tuyệt đối kháng tiền điện tử. Và nó dựa chính xác vào XOR. Bỏ qua một số khó khăn về mặt tổ chức (tạo các khóa thực sự ngẫu nhiên với sự phân bổ đồng đều, duy trì tính bí mật của bảng mã hóa trong một môi trường không thân thiện và phá hủy các khóa đã sử dụng một cách an toàn), nhân loại vẫn chưa nghĩ ra điều gì đơn giản và đáng tin cậy hơn.

      2. Kinh dị màu vàng

        Mặc dù, sau khi suy nghĩ hợp lý, tôi nhận ra rằng phương thức mã hóa đảo ngược kép không hoạt động nếu kẻ tấn công biết thuật toán mã hóa. Hãy xem ý tưởng của Mikhail làm ví dụ:

        1. Chúng tôi chia thông tin được mã hóa thành các khối. Mỗi khối được đại diện bởi một số. Kích thước khối (số bit) xác định số lượng giá trị khối có thể có và (theo đó?) độ mạnh của mã hóa.
        2. Để mã hóa tin nhắn, Alice chọn một số bí mật (cô ấy không gửi cho bất kỳ ai), số này thêm vào mỗi số trong các khối và gửi tin nhắn được mã hóa theo cách này cho Bob.

        Mọi chuyện vẫn ổn: Eve không thể đọc được tin nhắn của Alice vì... không biết số chìa khóa. Nếu các khối đủ lớn thì rất khó để khôi phục tin nhắn của Alice, nhưng nếu khối dài hơn tin nhắn và khóa không có lỗ hổng thì không thể. Nhưng Eve có thể và đã sao chép được mật mã của Alice.

        3. Bob nhận được tin nhắn được mã hóa, chọn số bí mật của mình (anh ấy cũng không gửi cho ai), thêm số này vào từng số trong khối tin nhắn do Alice mã hóa và gửi tin nhắn được mã hóa kép này cho Alice .

        Và ở đây vấn đề bắt đầu: Eve vẫn không thể đọc được tin nhắn của Alice, nhưng nhờ có bản sao của mật mã mà Bob nhận được và mã hóa kép do anh ấy gửi, cô ấy có thể dễ dàng khôi phục chìa khóa Boba.

        4. Alice trừ số bí mật của mình khỏi mỗi số trong các khối của tin nhắn được mã hóa kép này và gửi tin nhắn kết quả cho Bob.

        Alice đã loại bỏ “lớp” mật mã của mình và bây giờ gửi cho Bob lá thư của cô, chỉ được mã hóa bằng khóa của Bob. Eva đã có rồi! Eve giải mã và đọc bức thư, đồng thời, để đề phòng, có thể khôi phục chìa khóa của Alice bằng cách sử dụng văn bản được giải mã của bức thư và mật mã đầu tiên mà cô ấy chặn được.

  • Dmitry

    Xin chào. Bài viết hay, nhưng tôi cũng không hiểu một số điểm được mô tả ở trên.
    Đó là sự chuyển đổi từ thuật toán lấy khóa bí mật của cả hai người đối thoại (Alice và Bob) (mà không đưa họ vào quyền truy cập công khai) sang mã hóa bất đối xứng.
    Bạn viết rằng tin nhắn được mã hóa từ phía Alice bằng khóa chung nhận được từ Bob. Nhưng nếu chúng ta mã hóa bằng khóa chung thì Eve có thể dễ dàng lấy nó và tự giải mã, phải không?
    Tôi vẫn chưa rõ làm thế nào bạn có thể mã hóa bằng khóa chung và giải mã chỉ một bí mật về phía Bob. Tức là họ đã mã hóa nó bằng từ “Trang chủ” và giải mã nó bằng từ “Thế giới”. Đối với tôi đây là một loại vô nghĩa.
    Dựa trên những khoảng trống rõ ràng này (của bạn hoặc của tôi), tôi kết luận rằng mạch điện ở đây chắc hẳn phức tạp hơn trong hình. Rất có thể, mũi tên từ khóa công khai của Bob tới Alice có ý nghĩa khác, cụ thể là toàn bộ chuỗi hành động để thu được “Y” và “P”, thu được kết quả trung gian, v.v. Nói cách khác, tôi nghĩ rằng khi tin nhắn ban đầu được mã hóa bằng khóa công khai được cho là, nó thực sự được mã hóa không phải bằng khóa chung mà bằng khóa bí mật, được tính riêng cho mỗi bên.

    Tôi cũng có câu hỏi về việc giải mã tin nhắn được mã hóa kép. Ví dụ: nếu chúng ta lấy mật mã Caesar, trong đó mỗi chữ cái được mã hóa bằng một chữ cái khác, sẽ có thêm 3 vị trí nữa. Nếu Alice mã hóa chữ cái A trong tin nhắn bằng chữ cái B, và sau đó Bob mã hóa chữ cái B này bằng chữ cái G, thì sẽ dễ dàng lấy được chữ cái A từ G và theo bất kỳ thứ tự nào. Đúng, điều này rất có thể sẽ chỉ hoạt động trong trường hợp cả hai đều biết loại mã hóa của người đối thoại và với các loại mã hóa khá đơn giản (một bảng chữ cái/đa bảng chữ cái). Tôi cũng chưa quen với mật mã, vì vậy đây là ý kiến ​​​​của tôi;)

    1. Dmitry

      Tôi quên hỏi.
      Sự khác biệt giữa các phương pháp đối xứng và bất đối xứng là gì?

      1. Dmitry

        Tôi đọc nó, ít nhiều bằng cách nào đó đã nhóm lại mọi thứ trong đầu tôi.
        Tôi sẽ trả lời những câu hỏi tôi đã viết, có lẽ từ đó giúp ích được cho những độc giả khác.
        1. Về

        Bạn viết rằng tin nhắn được mã hóa từ phía Alice bằng khóa chung nhận được từ Bob. Nhưng nếu chúng ta mã hóa bằng khóa chung thì Eve có thể dễ dàng lấy nó và tự giải mã, phải không?
        Tôi cũng vẫn chưa rõ làm thế nào có thể mã hóa bằng khóa chung và giải mã chỉ bằng khóa bí mật từ phía Bob. Tức là họ đã mã hóa nó bằng từ “Trang chủ” và giải mã nó bằng từ “Thế giới”. Đối với tôi đây là một loại vô nghĩa.

        Bài viết này đề cập đến thuật toán RSA. Thuật toán mã hóa đối xứng. Nó thực sự sử dụng thuật toán sau:
        1) Dựa trên một hàm mã hóa một chiều nào đó (một hàm dễ tính theo hướng này nhưng rất khó tính theo hướng khác. A) chúng ta tạo một cặp trên người nhận (khóa chung; khóa riêng). Cặp này là duy nhất, nghĩa là mỗi khóa chung tương ứng với một khóa riêng duy nhất cho chức năng một chiều này.

        3) Người gửi mã hóa tin nhắn
        4) Chuyển khoản cho người nhận

        Như bạn có thể thấy, người gửi không biết khóa riêng và anh ta không thể giải mã tin nhắn được mã hóa của chính mình. Đó là lý do tại sao nó được gọi là bất đối xứng, bởi vì một cái có tất cả các khóa và cái kia chỉ có phần cần thiết để mã hóa.

        Sự khác biệt giữa các phương pháp đối xứng và bất đối xứng là gì?
        Nếu tôi sử dụng thuật toán Diffie và Hellman để truyền khóa bí mật và sau đó có thể truyền tin nhắn được mã hóa một cách an toàn thì phương pháp này có đối xứng không?

        Thuật toán Daffy-Hellman, phục vụ cho việc trao đổi khóa và mã hóa đối xứng hơn nữa. Nghĩa là, bản chất của nó là trước tiên cả hai đều nhận được khóa đầy đủ để mã hóa và giải mã, sau đó bắt đầu mã hóa đối xứng phổ biến nhất.

        Phương pháp bất đối xứng - một nút có tất cả thông tin để mã hóa/giải mã và nút còn lại, theo quy tắc, chỉ dành cho mã hóa

        Đối xứng - cả hai nút đều biết tất cả thông tin để mã hóa/giải mã.

        Tôi hy vọng tôi đã giúp được ai đó;3

        1. Dmitry

          Bài viết này đề cập đến thuật toán RSA. Thuật toán mã hóa bất đối xứng Tôi đã niêm phong nó.

        2. Dmitry Amirov Tác giả

          Hmm...bây giờ mới để ý tới nhận xét của bạn. Lời xin lỗi của tôi.

          Mọi thứ có vẻ đúng. Có một điều về đoạn cuối cùng của bạn, cụ thể là các điều khoản:

          • Thuật toán Daffy-Hellman- là một thuật toán cho phép bạn lấy một khóa bí mật chung và không có gì hơn thế
          • Mã hóa bất đối xứng/đối xứng- nói chung mọi thứ đều đúng với bạn
          • RSA- một thuật toán là sự kết hợp của những thứ này. Trên ngón tay của bạn: sử dụng mã hóa bất đối xứng bằng giao thức Deffie-Helman, một khóa bí mật được thiết lập với sự trợ giúp trong đó các tin nhắn giữa những người đối thoại được mã hóa bằng phương pháp mã hóa đối xứng.
        3. Dmitry

          Tôi vẫn chưa hiểu câu nói:
          2) Khóa công khai được chuyển cho người gửi.
          3) Người gửi mã hóa tin nhắn
          4) Chuyển khoản cho người nhận
          5) Người nhận giải mã bằng khóa riêng. Tin nhắn này không thể được giải mã bằng khóa chung.

          Hóa ra là bạn đã có ý định này ngay từ đầu. Chúng tôi mã hóa bằng từ Trang chủ và giải mã bằng từ Thế giới. Điều này có nghĩa là có một thuật toán khác kết nối Thế giới và Ngôi nhà với nhau?

  • Robert

    Cảm ơn rất nhiều!!!

  • Cuốn tiểu thuyết

    Cảm ơn. Cuối cùng tôi quyết định tìm hiểu cách thức hoạt động của nó và học được từ bài viết này. Tôi tin rằng chỉ có điều nếu các đồng phạm biết nhau và có thể trao đổi khóa công khai một cách an toàn thì điều đó là đáng làm. Để loại bỏ tác động bất lợi của việc có thể xuất hiện một người ở giữa khi trao đổi chìa khóa, người này sẽ giả làm A là B và B là A, thay chìa khóa bằng chìa khóa của họ và cuối cùng xem tất cả thông tin.

    Và trong video, tôi nghĩ việc họ sử dụng 3^(24*54) này là vô ích, bởi vì Không rõ nó đến từ đâu, hoặc họ sẽ giải thích rằng nó có điều kiện.

  • RinswinD

    Cảm ơn bạn cho bài viết. Mọi thứ đều được giải thích rất rõ ràng.

  • sự buồn bã

    Chà, việc mù chữ này khiến mọi người khó chịu - “một chiều”, “áp dụng”, “dài”, như thể đang học lớp 5. Và vì vậy, không tệ khi hiểu những điều cơ bản.

  • sự buồn bã

    Đôi khi câu hỏi rất đơn giản. Virus ransomware sử dụng khóa riêng. Có file gốc, có file mã hóa. Nhiệm vụ: tìm một thuật toán, có thể nói, tìm kiếm thuật toán chuyển đổi tệp đầu tiên thành tệp thứ hai...

  • Allexys

    Cảm ơn bạn vì bài viết rõ ràng và thú vị! Cuối cùng tôi đã hiểu được những điều cơ bản :).

  • Yaroslav

    Thật không may, tất cả các thuật toán hiện tại vẫn yêu cầu loại bỏ các mật mã trong hàng đợi mà chúng được áp dụng.

    Điều này không hoàn toàn đúng. Tôi sẽ cho bạn một ví dụ:
    - giả sử rằng mỗi chữ cái tương ứng với một mã số A = 1, B = 2, C = 3, v.v.;
    — giả sử Alice gửi cho Bob một lá thư chỉ có một chữ cái A (để đơn giản hóa ví dụ);

    Alice: đặt mật mã của mình A + 2 = B

    Bob: đặt mật mã B + 3 = E
    Bob: gửi thư cho Alice
    Alice: xóa mật mã của cô ấy E - 2 = G
    Alice: gửi thư cho Bob
    Bob: xóa mật mã của mình G - 3 = A

    Ở đây số 2 là khóa bí mật của Alice, số 3 là khóa bí mật của Bob. Hơn nữa, nó có thể không phải là một ký tự. Về nguyên tắc, chiều dài của nó là không giới hạn.

  • Dmitry

    Trong một thời gian dài, tôi đã tránh né nền tảng lý thuyết của mã hóa bất đối xứng. Tôi biết một cách hời hợt - có một khóa chung để mã hóa dữ liệu và có một khóa riêng để giải mã dữ liệu. Nhưng ý nghĩ thực hiện mã hóa như vậy luôn làm tôi khó chịu.
    Bài viết của bạn đã giúp ích rất nhiều, cảm ơn bạn rất nhiều vì điều đó!
    Mãi đến cuối phim tôi mới thấy điều vô nghĩa này một lần nữa - “được mã hóa bằng khóa chung”. Nói đúng ra, tin nhắn được mã hóa không phải bằng khóa chung mà bằng khóa thu được dựa trên khóa riêng của người gửi và khóa chung của người nhận (do đó, khóa này được tạo dựa trên khóa riêng của người nhận). Thật vậy, trong bảng về Alice và Bob - họ và chỉ họ mới có thể lấy được cùng một khóa “9” - nó được sử dụng để mã hóa và giải mã tin nhắn. Nhưng khóa này chỉ có thể lấy được dựa trên cặp khóa - bí mật (Alice/Bob) và công khai (Bob/Alice).
    Nói một cách hình tượng - vâng, tin nhắn luôn được mã hóa bằng khóa bí mật của người gửi (nói một cách đại khái là không đổi) và khóa chung của người nhận (nó phụ thuộc vào người nhận cụ thể), do đó, trong phần mô tả, mã hóa bằng khóa “bí mật” bị bỏ qua - và sự thiếu sót này phá vỡ toàn bộ trật tự lý luận.

  • Clarkson

    Tôi đọc bài viết và không hiểu rõ lắm, mặc dù nó hay hơn trên wiki. Nhưng chỉ có một điều tôi không hiểu. Bạn nào trả lời đúng thì giúp mình nhé.

    nếu tôi gửi cho mọi người câu hỏi “2+2 bằng bao nhiêu?”, tôi sẽ nói với họ cách mã hóa câu trả lời cho tôi (tôi cho mọi người biết khóa chung) và mọi người sẽ gửi cho tôi câu trả lời cho câu hỏi, làm cách nào để tìm thấy chính xác thì tôi đang chờ câu trả lời từ ai, tức là tôi thực sự muốn tạo mối liên hệ với ai?

    1. Dmitry Amirov Tác giả

      Ở đây bạn đang đặt câu hỏi một chút sai.

      Nếu bạn cần thiết lập kết nối với ai đó, thì bạn cần phải đi theo hướng ngược lại. Bạn kết nối với người đối thoại của mình và đã anh ấy sẽ nói với bạn cung cấp khóa công khai của bạn chứ không phải bạn.

      CẬP NHẬT:đã viết một bài báo về, tôi nghĩ đây sẽ là câu trả lời chính xác cho câu hỏi của bạn.

      1. Clarkson

        Tôi sẽ phải chiến đấu với sự ngu ngốc của mình. chủ đề được thảo luận trong phần bình luận và trong bài viết của bạn, có vẻ như mọi thứ đã được giải thích.

        chưa. Tại sao tôi cần công bố chìa khóa của anh ấy? hãy cho tôi biết nếu tôi không hiểu chính xác.
        Tôi là người khởi xướng (tôi cần câu trả lời, trong ví dụ tôi là bên nhận), nghĩa là tôi tạo một cặp. chính anh ấy là người trả lời (người gửi trong ví dụ của bạn), người cần công khai của tôi

        Trước khi gửi, người gửi nhận được một khóa chung và mã hóa tin nhắn bằng khóa này, sau đó tin nhắn này chỉ có thể được giải mã bằng khóa riêng, được bên nhận giữ bí mật.

  • Bị bắn

    Tôi đã đọc lại bài viết này và những bài viết khác về chủ đề này nhiều lần, nhưng thuật toán sử dụng chữ ký điện tử trong email vẫn chưa rõ ràng. các tài liệu Nếu nó giống như thế này ở đây: https://ru.wikipedia.org/wiki/Electronic_signature thì sẽ phát sinh sự khác biệt. Vậy chúng ta vẫn mã hóa bằng khóa riêng hay khóa chung?

    1. Dmitry Amirov Tác giả

      Nếu chúng tôi ký một cái gì đó, chúng tôi sẽ tạo chữ ký dựa trên khóa riêng của chúng tôi. Và người nhận phải có khóa chung của chúng tôi, với sự trợ giúp của nó, anh ta sẽ có thể giải mã được chữ ký này.

      Nếu chữ ký được “giải mã” thì khóa chung tương ứng với khóa riêng và vì tiên nghiệm, chỉ người gửi mới có khóa riêng, có nghĩa là chính người gửi đã ký tài liệu.

      1. Bị bắn

        Dmitry, bài viết của bạn đã giúp tôi rất nhiều, bạn có phong cách tốt. Nhưng có một điểm khó hiểu: bạn cho rằng thuật toán bất đối xứng giả định sự hiện diện của hai khóa - chung và riêng. Nghĩa là, tin nhắn được mã hóa bằng khóa chung và được giải mã bằng khóa riêng và không có gì khác.

        Đó có thể là vấn đề của nhiệm vụ ban đầu, ví dụ như người nhận cần xác thực người đưa tin.
        Vậy thì tôi không thể tưởng tượng được kế hoạch này có thể giúp ích như thế nào?

        1. Dmitry Amirov Tác giả

          Nghĩa là, tin nhắn được mã hóa bằng khóa chung và được giải mã bằng khóa riêng và không có gì khác.

          Không hoàn toàn đúng. Tin nhắn được mã hóa bằng một khóa và được giải mã bằng khóa khác. Những thứ kia. Hoàn toàn có thể mã hóa nó một cách riêng tư và giải mã nó một cách công khai.

          Hãy xem một ví dụ. Bạn muốn gửi tin nhắn cho tôi, tôi muốn chắc chắn rằng chính bạn là người đã gửi nó cho tôi. Từng bước một:
          1) Bạn mã hóa tin nhắn bằng khóa riêng
          2) Gửi cho tôi
          3) Tôi liên hệ với bạn và nhận khóa công khai từ bạn
          4) Tôi giải mã tin nhắn nhận được bằng khóa chung của bạn
          5) Nếu tin nhắn được giải mã nghĩa là bạn là người gửi nó

          Không ai khác có thể gửi tin nhắn này giả vờ là bạn vì chỉ có bạn mới có khóa riêng.

          1. Bị bắn

            Được rồi, nhưng nếu bạn cần giấu tin nhắn khỏi những con mắt tò mò thì sao?

  • Anya

    Chào buổi chiều Tôi thích bài viết, nhưng tôi vẫn còn thắc mắc (thậm chí có một số câu hỏi tương tự trong phần bình luận nhưng không có câu trả lời).
    Nếu trong phần thứ hai của bài viết chúng ta chuyển sang ví dụ tương tự với Alice và Bob, cụ thể là các số A, B, a, b, P và số 9 thu được trong ví dụ, số nào trong số chúng sẽ là khóa riêng và đâu sẽ là khóa công khai? Chân thành cám ơn vì câu trả lời của bạn!

    1. Anya

      Không rõ bình luận của tôi có được đăng hay không :(

    2. Dmitry Amirov Tác giả

      Sẽ đúng hơn nếu nói rằng trong quá trình trao đổi dữ liệu, Alice và Bob nhận được một khóa chung 9 , sau này có thể được sử dụng để mã hóa tin nhắn của họ. Trên thực tế, trong bài viết, tôi không mô tả bản thân mã hóa bất đối xứng mà là giao thức trao đổi khóa, giao thức này đã thúc đẩy sự phát triển của mã hóa bất đối xứng.
      Thuật toán tạo cặp khóa riêng/chung thực sự phức tạp hơn một chút, mặc dù nó tương tự như thuật toán đã nêu ở trên, nhưng có lẽ vẫn xứng đáng có một bài viết riêng. Tôi sẽ không viết điều này ngay trong phần bình luận, vì tôi có thể nhầm lẫn nhiều thứ.

  • Gregory