Mật mã và cách chính để mã hóa thông tin.

Sergey Panasenko.,
Trưởng phòng phát triển phần mềm của Ankad,
[Email được bảo vệ]

Các khái niệm cơ bản

Quá trình chuyển đổi dữ liệu mở thành được mã hóa và ngược lại được gọi là mã hóa và hai thành phần của quy trình này được gọi là mã hóa và giải mã cho phù hợp. Về mặt toán học, việc chuyển đổi dường như là những phụ thuộc sau đây mô tả các hoạt động với thông tin nguồn:

C \u003d ek1 (m)

M "\u003d dk2 (c),

trong đó m (tin nhắn) là thông tin mở (trong tài liệu bảo vệ thông tin thường được gọi là "văn bản nguồn");
C (văn bản mật mã) - bản mã (hoặc mật mã) thu được do kết quả của mã hóa;
E (Mã hóa) - Chức năng mã hóa thực hiện các phép biến đổi mã hóa phía trên văn bản nguồn;
K1 (phím) - Chức năng e tham số, được gọi là Khóa mã hóa;
M "- thông tin thu được là kết quả của việc giải mã;
D (Giải mã) - Chức năng giải mã thực hiện các phép biến đổi mã hóa mã hóa ngược qua bản mã;
K2 - Chìa khóa mà giải mã thông tin được thực thi.

Khái niệm về "khóa" theo GOST 28147-89 (Thuật toán mã hóa đối xứng) được xác định như sau: "Trạng thái bí mật cụ thể của một số tham số của thuật toán biến đổi mật mã, cung cấp sự lựa chọn của một chuyển đổi từ tập hợp các loại Đối với thuật toán biến đổi này. Nói cách khác, khóa là một yếu tố duy nhất mà bạn có thể thay đổi kết quả của thuật toán mã hóa: cùng một văn bản nguồn khi sử dụng nhiều phím khác nhau sẽ được mã hóa khác nhau.

Để kết quả giải mã với thông báo ban đầu (I.E., đến M "\u003d m), đồng thời thực hiện hai điều kiện. Đầu tiên, hàm giải mã D phải khớp với các chức năng mã hóa của E. Thứ hai, khóa giải mã K2 phải khớp với khóa mã hóa phím .

Nếu thuật toán mã hóa kháng tiền điện tử được sử dụng để mã hóa, thì trong trường hợp không có khóa chính xác K2, không thể có được M "\u003d M. Cryptostility là đặc điểm chính của thuật toán mã hóa và chỉ ra mức độ phức tạp của việc có được Mã nguồn từ khóa được mã hóa của K2.

Thuật toán mã hóa có thể được chia thành hai loại: Mã hóa đối xứng và không đối xứng. Đối với lần đầu tiên, tỷ lệ khóa mã hóa và giải mã được định nghĩa là K1 \u003d K2 \u003d K (I.E. Các hàm E và D sử dụng cùng một khóa mã hóa). Với mã hóa bất đối xứng, khóa mã hóa K1 được tính bằng phím K2 theo cách mà phép chuyển đổi nghịch đảo là không thể, ví dụ, theo công thức K1 \u003d AK2 MOD P (A và P - các tham số của thuật toán được sử dụng).

Mã hóa đối xứng

Câu chuyện về các thuật toán mã hóa đối xứng của anh được thực hiện với thời cổ đại: theo cách này là anh chàng hoàng đế La Mã Julius Caesar trong thế kỷ thứ nhất BC được sử dụng bởi thông tin về thông tin che giấu. er, và thuật toán đã phát minh ra chúng được gọi là hệ thống mật mã caesar.

Hiện tại, thuật toán nổi tiếng nhất cho mã hóa đối xứng DES (Tiêu chuẩn mã hóa dữ liệu), được phát triển vào năm 1977, cho đến gần đây, ông là "tiêu chuẩn Hoa Kỳ", vì chính phủ của quốc gia này đề nghị áp dụng nó để thực hiện các hệ thống mã hóa dữ liệu khác nhau. Mặc dù thực tế là ban đầu des đã được lên kế hoạch sử dụng không quá 10-15 năm, cố gắng thay thế nó vào năm 1997.

Chúng tôi sẽ không xem xét chi tiết des (trong hầu hết tất cả các cuốn sách từ danh sách các tài liệu bổ sung có mô tả chi tiết hơn) và tham khảo nhiều thuật toán mã hóa hiện đại hơn. Chỉ cần lưu ý rằng lý do chính để thay đổi tiêu chuẩn mã hóa là loại mật mã tương đối yếu, nguyên nhân là độ dài phím DES chỉ có 56 bit có nghĩa. Được biết, bất kỳ thuật toán nào kháng tiền điện tử có thể bị hack bằng cách áp đảo tất cả các tùy chọn có thể cho các khóa mã hóa (phương thức vũ lực được gọi là tấn công vũ phu - tấn công vũ phu). Thật dễ dàng để tính toán rằng một cụm 1 triệu bộ xử lý, mỗi bộ xử lý 1 triệu khóa mỗi giây, kiểm tra 256 tùy chọn cho các phím DES trong gần 20 giờ. Và kể từ khi đạt tiêu chuẩn hiện tại, công suất tính toán đó là khá thực, Rõ ràng là phím 56 bit quá ngắn và thuật toán des phải được thay thế bằng nhiều "mạnh" hơn.

Ngày nay, hai thuật toán mã hóa điện tử hiện đại đang ngày càng được sử dụng: Tiêu chuẩn trong nước GOST 28147-89 và Cryptostandart mới của Hoa Kỳ (Tiêu chuẩn mã hóa nâng cao).

Tiêu chuẩn GOST 28147-89.

Thuật toán được xác định bởi GOST 28147-89 (Hình 1) có độ dài của khóa mã hóa là 256 bit. Nó mã hóa thông tin theo các khối 64 bit (các thuật toán như vậy được gọi là khối), sau đó được chia thành hai khóa 32 bit (N1 và N2). Subblock N1 được xử lý theo một cách nhất định, sau đó giá trị của nó được gấp lại với giá trị của subbok N2 (bổ sung được thực hiện theo mô-đun 2, IE, thao tác logic XOR được sử dụng - "Không bao gồm hoặc"), và sau đó là Các khối phụ được thay đổi ở những nơi. Sự chuyển đổi này được thực hiện một số lần nhất định ("Vòng"): 16 hoặc 32, tùy thuộc vào chế độ hoạt động của thuật toán. Trong mỗi vòng, hai hoạt động được thực hiện.

Đầu tiên là áp đặt của chìa khóa. Nội dung của các nếp gấp ổ đĩa phụ N1 trong mô-đun 2 với phần 32 bit của phím KX. Một khóa mã hóa hoàn chỉnh được biểu diễn dưới dạng kết nối 32 bit kết nối: K0, K1, K2, K3, K4, K5, K6, K7. Trong quá trình mã hóa, một trong những phích cắm này được sử dụng - tùy thuộc vào số vòng và chế độ hoạt động của thuật toán.

Hoạt động thứ hai - Thay ghim. Sau khi áp dụng khóa, Subblock N1 được chia thành 8 phần gồm 4 bit, mỗi tệp được thay thế theo bảng thay thế cho phần này của khóa con này. Sau đó, sự thay đổi chu kỳ bitwise của tài liệu phụ còn lại thành 11 bit được thực hiện.

Thay thế bảngHộp thay thế - S-BOX) thường được sử dụng trong các thuật toán mã hóa hiện đại, vì vậy nó đáng để giải thích cách thức hoạt động như vậy được tổ chức. Các giá trị đầu ra bảng được ghi trong bảng. Khối dữ liệu của một kích thước cụ thể (trong trường hợp của chúng tôi - 4 bit) có biểu diễn số riêng của nó, xác định số lượng giá trị đầu ra. Ví dụ: nếu hộp S có biểu mẫu 4, 11, 2, 14, 15, 0, 8, 13, 3, 12, 9, 7, 5, 10, 6, 1 và đầu vào đã đến 4 bit Chặn "0100" (giá trị 4), sau đó, theo bảng, giá trị đầu ra sẽ bằng 15, tức là "1111" (0 A 4, 1 A 11, 2 A 2 ...).

Thuật toán, được xác định bởi GOST 28147-89, cung cấp bốn chế độ hoạt động: một sự thay thế đơn giản, giáng sinh, phản hồi Gamming và tạo Imithods. Họ sử dụng cùng một chuyển đổi mã hóa được mô tả ở trên, nhưng vì mục đích của các chế độ là khác nhau, việc chuyển đổi này được thực hiện trong mỗi trong số chúng theo những cách khác nhau.

Trong chế độ thay thế đơn giảnĐể mã hóa từng khối thông tin 64 bit, 32 vòng được mô tả ở trên được thực hiện. Đồng thời, phích cắm 32 bit được sử dụng theo trình tự sau:

K0, K1, K2, K3, K4, K5, K6, K7, K0, K1, v.v. - Trong các vòng từ ngày 1 đến 24;

K7, K6, K6, K4, K3, K2, K1, K0 - trong vòng từ 25 đến 32.

Việc giải mã trong chế độ này được thực hiện theo cùng một cách, nhưng với một chuỗi ứng dụng kết nối khác nhau:

K0, K1, K2, K3, K4, K5, K6, K7 - trong vòng từ ngày 1 đến 8;

K7, K6, K6, K5, K4, K3, K2, K1, K0, K7, K6, v.v. - Trong các vòng từ thứ 9 đến 32.

Tất cả các khối được mã hóa độc lập với nhau, I.E. Kết quả của việc mã hóa của mỗi khối chỉ phụ thuộc vào nội dung của nó (khối văn bản nguồn tương ứng). Nếu có một số khối giống hệt nhau của văn bản gốc (mở), các khối bản mã tương ứng cũng sẽ giống nhau, cung cấp thêm thông tin hữu ích để cố gắng mở Cloga của CryptoanalItics. Do đó, chế độ này được sử dụng chủ yếu để mã hóa khóa mã hóa (nhiều sơ đồ được thực hiện rất thường được triển khai, trong đó các phím được mã hóa trên nhau). Để mã hóa thông tin, hai chế độ hoạt động khác - Văn bằng và phản hồi Gamming được dự định.

TRONG chế độ Haming. Mỗi đơn vị văn bản mở bị chặn bởi mô-đun 2 với khối gamma mật mã 64 bit. Gamma mật mã là một chuỗi đặc biệt dẫn đến các thao tác nhất định với các thanh ghi N1 và N2 (xem hình 1).

1. Trong sổ đăng ký N1 và N2, việc điền ban đầu của chúng được ghi lại - 64 bit giá trị được gọi là Syncopionel.

2. Nó được mã hóa với nội dung của các thanh ghi N1 và N2 (trong trường hợp này - Syncropters) trong chế độ thay thế đơn giản.

3. Nội dung của Sổ đăng ký N1 bao gồm trong mô-đun (232 - 1) với hằng số C1 \u003d 224 + 216 + 28 + 24 và kết quả của việc bổ sung được ghi trong sổ đăng ký N1.

4. Nội dung của thanh ghi N2 được hình thành bởi mô-đun 232 với hằng số C2 \u003d 224 + 216 + 28 + 1 và kết quả của việc bổ sung được ghi vào thanh ghi N2.

5. Nội dung của các thanh ghi N1 và N2 được đưa vào đầu ra dưới dạng khối gamma mật mã 64 bit (trong trường hợp này, N1 và N2 tạo thành khối đầu tiên của gamma).

Nếu khối gamma tiếp theo được yêu cầu (tức là, cần tiếp tục mã hóa hoặc giải mã), trả về hoạt động 2.

Để giải mã Gamma được tạo ra theo cách tương tự, và sau đó thao tác XOR một lần nữa được áp dụng cho các bit của văn bản được mã hóa và gamma. Vì hoạt động này có thể đảo ngược, trong trường hợp gamma được tạo đúng cách, văn bản nguồn (bảng) thu được.

Mã hóa và giải mã ở chế độ Gamming

Để tìm ra mật mã của người dùng, cùng một phím, cùng một phím và cùng giá trị của đồng bộ hóa, được sử dụng khi mã hóa thông tin, nên là cùng một phím. Nếu không, sẽ không thể có được văn bản nguồn từ mã được mã hóa.

Trong hầu hết các triển khai của thuật toán GOST 28147-89, SYNCOPIER không phải là bí mật, nhưng có các hệ thống mà Syncopier là cùng một yếu tố bí mật với khóa mã hóa. Đối với các hệ thống như vậy, độ dài hiệu quả của khóa của thuật toán (256 bit) tăng thêm 64 bit đồng bộ bí mật khác, cũng có thể được coi là một yếu tố chính.

Trong chế độ phản hồi Gamming để điền vào các thanh ghi N1 và N2, bắt đầu từ khối thứ 2, không phải là khối trước đó của gamma, mà là kết quả của mã hóa của khối trước của văn bản mở (Hình 2). Khối đầu tiên trong chế độ này được tạo bởi lần trước đó tương tự như trước đó.

Quả sung. 2. Phát triển mật mã gamma trong chế độ phản hồi Gamming.

Xem xét chế độ thế hệ của Imithods., Nó nên được xác định bởi khái niệm về việc tạo thế hệ. Imitrobristening là một tổng kiểm tra mã hóa được tính toán bằng khóa mã hóa và nhằm mục đích kiểm tra tính toàn vẹn của tin nhắn. Khi tạo Imithod, các thao tác sau được thực hiện: Đơn vị 64 bit đầu tiên của mảng thông tin mà đơn giản được tính toán, được ghi vào sổ đăng ký N1 và N2 và được mã hóa trong chế độ viết tắt của thay thế đơn giản (16 vòng đầu tiên của 32 được thực hiện). Kết quả thu được được tổng hợp bởi mô-đun 2 với khối thông tin sau trong khi duy trì kết quả trong N1 và N2.

Chu kỳ được lặp lại cho đến khối thông tin cuối cùng. Do kết quả của các biến đổi này, nội dung 64 bit của các thanh ghi N1 và N2 hoặc một phần của nó và được gọi là đơn giản. Kích thước của đơn giản được chọn, dựa trên độ tin cậy cần thiết của các thông báo: Với độ dài của Simpstab, bit R bit là khả năng thay đổi trong tin nhắn sẽ không được chú ý, bằng 2-r. 32 bit của Simpristening được sử dụng, nghĩa là một nửa nội dung của thanh ghi. Điều này là đủ, vì bất kỳ tổng kiểm tra nào, Imiton được thiết kế chủ yếu để bảo vệ chống lại các biến dạng thông tin ngẫu nhiên. Để bảo vệ dữ liệu tương tự với sửa đổi dữ liệu có chủ ý, các phương thức mật mã khác được sử dụng - chủ yếu là chữ ký số điện tử.

Khi trao đổi thông tin, Simpristenger là một loại phương tiện kiểm soát bổ sung. Nó được tính cho văn bản mở khi được mã hóa bất kỳ thông tin nào và được gửi cùng với bản mã. Sau khi giải mã, một giá trị bắt chước mới được tính toán, được so sánh với đã gửi. Nếu các giá trị không khớp - điều đó có nghĩa là bản mã bị biến dạng trong quá trình truyền hoặc khi giải mã được sử dụng các phím không chính xác. Đơn giản là đặc biệt hữu ích để xác minh việc giải mã chính xác thông tin chính khi sử dụng nhiều lược đồ.

Thuật toán GOST 28147-89 được coi là một thuật toán rất mạnh - hiện tại không có phương pháp nào hiệu quả hơn đã được đề xuất cho việc tiết lộ của nó so với "lực thô nêu trên. Điện trở cao của nó đạt được chủ yếu do chiều dài phím lớn - 256 bit. Khi sử dụng Syncopyer Secret, độ dài khóa hiệu quả tăng lên 320 bit và việc tạo ra bảng thay thế thêm các bit bổ sung. Ngoài ra, khả năng kháng Cryptost phụ thuộc vào số lượng vòng chuyển đổi, theo GOST 28147-89 phải là 32 (hiệu ứng hoàn toàn phân tán dữ liệu đầu vào đạt được sau 8 vòng).

AES tiêu chuẩn.

Không giống như thuật toán của GOST 28147-89, trong một thời gian dài vẫn là bí mật, tiêu chuẩn mã hóa AES của Mỹ, được thiết kế để thay thế des, được chọn trong một cuộc thi mở, nơi tất cả các tổ chức và cá nhân quan tâm có thể học và nhận xét về các ứng viên thuật toán .

Cuộc thi thay thế DES được công bố vào năm 1997 bởi Viện Tiêu chuẩn và Công nghệ Quốc gia Hoa Kỳ (NISn - Viện Tiêu chuẩn và Công nghệ Quốc gia). Cuộc thi đã được trình bày 15 thuật toán ứng cử học được phát triển như trong lĩnh vực tổ chức mật mã (Security RSA, Countpane, v.v.) và các cá nhân. Kết quả của cuộc thi đã được tóm tắt vào tháng 10 năm 2000: Người chiến thắng đã được tuyên bố là thuật toán Rijndael được phát triển bởi hai mật mã từ Bỉ, Vincent Rijman (Vincent Rijmen) và Joan daemen.

Thuật toán RijnDael không giống như hầu hết các thuật toán mã hóa đối xứng nổi tiếng, cấu trúc được gọi là "Mạng Faiterel" và tương tự như GOST của Nga 28147-89. Đặc thù của mạng Faistel là giá trị đầu vào được chia thành hai hoặc nhiều ổ đĩa phụ, một số trong đó được xử lý trong mỗi vòng dọc theo một luật cụ thể, sau đó nó được đặt chồng lên trên các tàu ngầm không được kiểm tra (xem hình 1).

Ngược lại với tiêu chuẩn mã hóa trong nước, thuật toán RijnDael đại diện cho một khối dữ liệu dưới dạng một mảng byte hai chiều là kích thước 4x4, 4x6 hoặc 4x8 (được phép sử dụng một số kích thước cố định của khối thông tin được mã hóa). Tất cả các thao tác được thực hiện với các byte riêng biệt của mảng, cũng như các cột và dòng độc lập.

Thuật toán Rijndael thực hiện bốn biến đổi: BS (ByteSub) - Thay thế bảng của từng massif byte (Hình 3); SR (shiftrow) là một dòng của mảng (Hình 4). Với thao tác này, dòng đầu tiên vẫn không thay đổi và theo chu kỳ còn lại di chuyển sang trái sang số byte cố định, tùy thuộc vào kích thước của mảng. Ví dụ: đối với một mảng kích thước 4x4 của các hàng 2, 3 và 4, nó được thay đổi theo tỷ lệ tương ứng 1, 2 và 3 byte. Tiếp theo MC (MixColumn) - một thao tác trên cột độc lập của mảng (Hình 5), khi mỗi cột theo một quy tắc cụ thể được nhân với một ma trận cố định C (X). Và cuối cùng, AK (AddRoundKey) - Thêm khóa. Mỗi bit của mảng được hình thành bởi mô-đun 2 với một bit tương ứng của phím tròn, lần lượt, được xác định theo một cách nhất định, được tính từ khóa mã hóa (Hình 6).


Quả sung. 3. Hoạt động BS.

Quả sung. 4. Hoạt động SR.

Quả sung. 5. Hoạt động MC.

Số lượng vòng mã hóa (R) trong biến Thuật toán RijnDael (10, 12 hoặc 14 vòng) và phụ thuộc vào kích thước của khối và khóa mã hóa (một số kích thước cố định cũng được cung cấp cho khóa).

Giải mã được thực hiện bằng cách sử dụng các hoạt động ngược sau đây. Một bảng và một thay thế bảng trên bảng nghịch đảo (tương đối được sử dụng khi được mã hóa) được thực hiện. Hoạt động ngược thành SR là một chuỗi theo chu kỳ sang phải, không trái. Hoạt động ngược cho MC - Phép nhân theo các quy tắc tương tự trên một ma trận khác d (x), điều kiện thỏa mãn: c (x) * d (x) \u003d 1. Thêm phím AK là ngược lại, bởi vì nó chỉ sử dụng thao tác XOR . Các thao tác nghịch đảo này được áp dụng khi giải mã theo trình tự, nghịch đảo của một thứ được sử dụng khi được mã hóa.

Rijndael đã trở thành một tiêu chuẩn mới mã hóa dữ liệu nhờ một số ưu điểm so với các thuật toán khác. Trước hết, nó cung cấp tốc độ mã hóa cao trên tất cả các nền tảng: cả trong phần mềm và triển khai phần cứng. Nó được phân biệt không thể hiểu được những khả năng tốt nhất của các tính toán song song so với các thuật toán khác được trình bày cho cuộc thi. Ngoài ra, các yêu cầu đối với các nguồn lực cho công việc của nó là tối thiểu, điều này rất quan trọng khi sử dụng nó trong các thiết bị có khả năng tính toán hạn chế.

Nhược điểm của thuật toán chỉ có thể được xem xét bởi đặc điểm sơ đồ phi truyền thống. Thực tế là các thuộc tính của các thuật toán dựa trên mạng Faiterel được điều tra tốt và Rijndael, không giống như chúng, có thể chứa các lỗ hổng ẩn chỉ có thể được phát hiện sau một thời gian kể từ khi bắt đầu rộng rãi.

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

Thuật toán mã hóa bất đối xứng, như đã lưu ý, sử dụng hai phím: K1 là khóa mã hóa hoặc mở và K2 là khóa giải mã hoặc bí mật. Khóa công khai được tính từ bí mật: K1 \u003d F (K2).

Thuật toán mã hóa bất đối xứng được dựa trên việc sử dụng các chức năng đơn hướng. Theo định nghĩa, chức năng Y \u003d f (x) là đơn hướng, nếu: rất dễ tính toán cho tất cả các tùy chọn có thể x và đối với hầu hết các giá trị có thể của y, khá khó tính toán giá trị X như Y \u003d F (x).

Một ví dụ về chức năng đơn hướng có thể là phép nhân của hai số lượng lớn: n \u003d p * q. Chính nó, phép nhân như vậy là một thao tác đơn giản. Tuy nhiên, hàm nghịch đảo (phân hủy n thành hai hệ số nhân lớn), được gọi là hệ số hóa, theo ước tính tạm thời hiện đại là một nhiệm vụ toán học khá phức tạp. Ví dụ: mở rộng trên bội số n chiều 664 bit tại p? Q sẽ yêu cầu thực thi khoảng 1023 thao tác và để tính toán ngược x cho y \u003d ax mod p với A, P và Y đã biết (có cùng chiều A và P), khoảng 1026 thao tác cần được thực hiện. Sau đó, các ví dụ trên được gọi là - "Vấn đề logarit rời rạc" (DLP - Vấn đề logarit riêng lẻ) và loại chức năng này thường được sử dụng trong các thuật toán mã hóa bất đối xứng, cũng như trong các thuật toán được sử dụng để tạo chữ ký số điện tử.

Một loại chức năng quan trọng khác được sử dụng trong mã hóa bất đối xứng là các chức năng đơn hướng với một khóa học bí mật. Định nghĩa của chúng nói rằng chức năng này là đơn hướng với một khóa học bí mật nếu nó là đơn hướng và có thể tính toán hiệu quả chức năng đảo ngược x \u003d f-1 (y), tức là nếu "di chuyển bí mật" được biết đến (một số bí mật nhất định, Trong việc áp dụng cho các thuật toán mã hóa bất đối xứng - giá trị của khóa bí mật).

Các chức năng đơn hướng với một lối đi bí mật được sử dụng trong thuật toán rộng rãi cho mã hóa RSA không đối xứng.

Thuật toán RSA.

Được thiết kế vào năm 1978 bởi ba tác giả (Rivest, Shamir, Adleman), anh ta đã nhận được tên của mình theo các chữ cái đầu tiên của tên của các nhà phát triển. Độ tin cậy của thuật toán được dựa trên độ phức tạp của hệ số hóa của các số lượng lớn và tính toán logarit rời rạc. Tham số chính của thuật toán RSA là mô-đun hệ thống N, theo đó tất cả các tính toán được thực hiện trong hệ thống và n \u003d p * q (P và Q - Secret ngẫu nhiên các số lớn đơn giản, thường là cùng một chiều).

Khóa bí mật của K2 được chọn ngẫu nhiên và phải tuân thủ các điều kiện sau:

1

nút của nút là bộ chia phổ biến lớn nhất, nghĩa là K1 phải đơn giản lẫn nhau với giá trị của hàm Euler F (N) và sau bằng với lượng số nguyên dương trong phạm vi từ 1 đến N, đơn giản hơn với n, và được tính là F (n) \u003d (p - 1) * (Q - 1).

Khóa mở K1 được tính từ tỷ lệ (K2 * K1) \u003d 1 mod f (n)Và đối với điều này, thuật toán Euclide tổng quát được sử dụng (Thuật toán để tính toán ước số chung lớn nhất). Mã hóa khối dữ liệu M theo thuật toán RSA như sau: C \u003d M. [đến độ K1] mod n.. Lưu ý rằng, vì trong hệ thống mật mã thực bằng RSA, số lượng K1 rất lớn (hiện tại kích thước của nó có thể đạt tới 2048 bit), tính toán trực tiếp m [đến độ K1] không thực tế. Để có được nó, sự kết hợp của nhiều M xây dựng vào một hình vuông có tính nhân hóa kết quả được áp dụng.

Sự hấp dẫn của chức năng này dưới các kích thước lớn là không thể thực hiện được; Nói cách khác, không thể tìm thấy m theo C, N và K1 đã biết. Tuy nhiên, có một phím bí mật của K2, sử dụng các biến đổi đơn giản, bạn có thể tính M \u003d CK2 MOD N. Rõ ràng là, ngoài chính khóa bí mật, cần phải đảm bảo bí mật của các tham số P và Q. Nếu Kẻ tấn công thêm các giá trị của họ, nó sẽ có thể tính toán khóa bí mật của K2.

Mã hóa nào tốt hơn?

Nhược điểm chính của mã hóa đối xứng là cần chuyển các phím từ tay sang tay. Việc thiếu điều này rất nghiêm trọng, bởi vì nó khiến nó không thể sử dụng mã hóa đối xứng trong các hệ thống với số lượng người tham gia không giới hạn. Tuy nhiên, trong phần còn lại, mã hóa đối xứng có một số lợi thế có thể nhìn thấy rõ ràng dựa trên nền của các khiếm khuyết nghiêm trọng của mã hóa bất đối xứng.

Cái đầu tiên là tốc độ hoạt động mã hóa và giải mã thấp, do tính khả dụng của các hoạt động chuyên sâu về tài nguyên. Một nhược điểm khác của "lý thuyết" - Cryptoscope toán học về thuật toán đối với mã hóa bất đối xứng không được chứng minh. Điều này chủ yếu là do nhiệm vụ của một logarit rời rạc - cho đến khi có thể chứng minh rằng quyết định của nó là không thể cho một thời gian chấp nhận được. Khó khăn im lặng tạo ra và cần phải bảo vệ các phím mở khỏi sự thay thế - bằng cách thay đổi khóa công khai của người dùng hợp pháp, kẻ tấn công sẽ có thể mã hóa một thông báo quan trọng trên khóa mở và sau đó dễ dàng giải mã nó với khóa bí mật của nó.

Tuy nhiên, những thiếu sót này không ngăn chặn việc sử dụng rộng rãi các thuật toán mã hóa bất đối xứng. Ngày nay có các hệ thống mật mã hỗ trợ chứng nhận các khóa mở, cũng như kết hợp các thuật toán mã hóa đối xứng và không đối xứng. Nhưng đây là chủ đề cho một bài viết riêng.

Nguồn thông tin bổ sung

Độc giả rằng những người độc lập quan tâm đến mã hóa, tác giả khuyên bạn nên mở rộng đường chân trời với sự trợ giúp của những cuốn sách sau.

  1. Brassar J. "Mật mã hiện đại".
  2. Petrov A. A. "Bảo mật máy tính: Phương pháp phòng thủ mật mã".
  3. Romanets Yu. V., Timofeev P. A., Shagin V. F. "Bảo vệ thông tin trong các hệ thống máy tính hiện đại."
  4. Sokolov A. V., Shagin V. F. "Bảo vệ thông tin trong các mạng và hệ thống công ty phân tán."

Một mô tả đầy đủ về thuật toán mã hóa có thể được tìm thấy trong các tài liệu sau:

  1. GOST 28147-89. Hệ thống xử lý thông tin. Bảo vệ mật mã. Thuật toán để biến đổi mã hóa. - M .: Gosstandart của USSR, 1989.
  2. AES Thuật toán: http://www.nist.gov/ae.
  3. Thuật toán RSA: http://www.rsasecurity.com/rsalabs/pkcs/pkcs-1.

Lần cuối bạn gặp những người trong nước tuyệt vời và khủng khiếp. Đó là một bài học rất khó khăn, bởi vì các hệ thống mật mã này được bảo vệ bởi những bí mật của nhà nước. Bạn sẽ nói, nó quá nhiều mây? Và đây, xin vui lòng! Trên thực tế, bạn không nên sợ, lần này chúng ta sẽ không lặn sâu vào toán học và xem xét các chế độ mã hóa - các nguyên tắc của họ đã học được (tốt, hoặc không tốt). Chúng ta hãy đi qua các ciphers nước ngoài hàng đầu nhất và xem cách chúng được áp dụng trong thực tế.

Lộ trình

Đây là bài học thứ tư từ chu kỳ "ngâm trong Crypt". Tất cả các bài học chu kỳ theo thứ tự thời gian:

  • Khái niệm cơ bản và bộ mã hóa lịch sử. Cách làm việc (và phân tích) Shift Ciffers, thay thế, Richard Zorge, Máy mật mã và mã hóa Vernama
  • Nó là gì, cách phân phối các phím và cách chọn tiền điện tử-
  • Mạng lưới Faiterel là gì và các ciphers khối trong nước được sử dụng trong các giao thức hiện đại là gì, - GOST 28147-89, "Grasshopper"
  • Bài học 4. Ciphers hiện đại ở nước ngoài. Sự khác biệt giữa các 3des, AES, Cáng, Ý tưởng, bafish từ 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ử khi chúng hoạt động và cách sử dụng chúng
  • Bài 6. Mật mã lượng tử. Đó là nơi được sử dụng và cách nó giúp phân phối các phím bí mật, tạo ra số ngẫu nhiên và chữ ký điện tử

3Des.

Vì vậy, lần đầu tiên trong một số mật mã nước ngoài sẽ xem xét các 3Des hoặc thay vào đó là tương đối gần nhất, DES (tiêu chuẩn mã hóa dữ liệu), đã không được sử dụng như vậy, nhưng là một tổ tiên 3Des.

DES được phát triển bởi đội ngũ toán học khoa học IBM, đã quen thuộc với chúng tôi. Phiên bản đầu tiên của mật mã đã nhận được tên "Lucifer", nhưng sau đó nó đã được sửa đổi và kết quả là được áp dụng như một thuật toán mã hóa dữ liệu chính thức (DEA). Trong hơn hai mươi năm, ông vẫn là một tiêu chuẩn toàn cầu trước khi anh ta thay đổi Triple des.

Xem xét cách các thuật toán mã hóa DES hoạt động. Để làm điều này, bạn cần nhớ công việc của mạng Faistel. DES là một mạng lưới của Faiterel từ 16 vòng với các phím mã hóa đối xứng. Độ dài của khối văn bản là 64 bit, độ dài của phím tròn là 48 bit. Vì vậy, chúng tôi sẽ vượt qua các giai đoạn chính của mã hóa des, hạ thấp phía toán học khắc nghiệt:

  1. Văn bản, như với bất kỳ mã hóa nào khác, được chia thành các khối 64 bit.
  2. Trong số các phím 56 bit tạo 16 phím tròn 48 bit.
  3. Mỗi khối chịu hoán vị, nghĩa là tất cả các bit của khối đầu vào được trộn theo một bảng cụ thể.
  4. Khối chia tách trên một nửa và vào mạng quen thuộc của Faiterel, nơi 16 vòng được cuộn.
  5. Kết nối một nửa.
  6. Và thêm một hoán vị.

Các hoán vị ban đầu và hữu hạn không có ý nghĩa đối với mật mã trong des. Cả hai hoán vị đều không có phím, và các bảng được đưa ra trước. Lý do tại sao chúng được bao gồm trong des là không rõ ràng, và các nhà thiết kế des không nói gì về nó. Có thể giả định rằng thuật toán được lên kế hoạch được 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à gây khó khăn cho việc lập trình cơ chế mã hóa.

Trên thực tế, mọi thứ bạn cần biết về công việc của thuật toán des. Nếu bạn đi sâu vào cách chức năng được chỉ định trong mạng Faistel hoạt động, mọi thứ đều ổn trong đó. Nó thực hiện và sắp xếp lại và thay thế (S-BOX, làm thế nào bạn có thể nhớ từ bài viết trước đó) và bổ sung với phím vòng.

Nhưng trở lại Triple des, hoặc Triple des. Nó có nhu cầu, vì chìa khóa 56 bit của DES dễ bị thương bởi những người BRUTHFORS và với sức mạnh tính toán tăng lên, vấn đề này đã trở nên sắc nét hơn. Sử dụng công nghệ có sẵn ngày hôm nay, bạn có thể kiểm tra một triệu khóa mỗi giây. Điều này có nghĩa là sẽ mất hơn hai nghìn năm để là vũ lực để giải mã des bằng máy tính chỉ có một bộ xử lý.

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

Để giải quyết vấn đề tìm kiếm khóa nhanh, mã hóa nước ngoài thông minh được cung cấp để sử dụng hai phím và áp dụng des hai lần. Tuy nhiên, đôi des hóa ra là dễ bị tấn công "cuộc họp ở giữa". Để thực hiện cuộc tấn công này, kẻ tấn công phải có một văn bản được mã hóa mở và tương ứng. Kẻ tấn công mã hóa văn bản mở trên tất cả các khóa có thể, viết kết quả trong Bảng 1. Sau đó giải mã văn bản được mã hóa với tất cả các khóa có thể và ghi kết quả trong Bảng 2. Kẻ tấn công đang tìm kiếm thêm trong các bảng 1 và 2 của sự trùng hợp.

Cuộc tấn công của loại này nằm trong các phím ở bên cạnh văn bản được mã hóa và mở và yêu cầu tính toán hơn gấp bốn lần so với khóa tiện ích mở rộng, và khá nhiều bộ nhớ để lưu trữ kết quả trung gian. Tuy nhiên, trong thực tế, cuộc tấn công là khả thi, điều này làm cho thuật toán Double des không phù hợp.

Đó là những thứ rất khác nhau để Triple des. Việc sử dụng ba phím và việc sử dụng các thuật toán trong chuỗi được chỉ định trên sơ đồ mở rộng trong vài năm nữa.


Tuyệt vời des.

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

Nó đã được chứng minh rằng des có tất cả các dấu hiệu của tài sản này.

Mặc dù khối chặn hai nguồn không trùng khớp với bit ngoài cùng bên phải, các khối của văn bản được mã hóa khác nhau 29 bit. Điều này có nghĩa là sự thay đổi khoảng 1,5% văn bản nguồn gây ra sự thay đổi của văn bản được mã hóa khoảng 45%.

Tác dụng của tính đầy đủ là mỗi bit văn bản được mã hóa sẽ phụ thuộc vào nhiều bit của văn bản nguồn. Như chúng ta đã phát hiện ra, nó cũng được áp dụng và sắp xếp lại và thay thế - tất cả các phép biến đều thiết lập sự phụ thuộc của từng bit CodtdyTex từ một số bit của văn bản nguồn.

Des áp dụng ở đâu? Có, hầu như mọi nơi, việc triển khai của nó có mặt trong hầu hết các thư viện phần mềm. Tuy nhiên, ai biết những des đáng khinh như thế nào trong thời đại chúng ta? Mặc dù IBM lập luận rằng công việc của thuật toán là kết quả của 17 năm mã hóa chuyên sâu, một số người lo sợ, NSA đã chèn vào thuật toán Lazeki, cho phép cơ quan dễ dàng giải mã các tin nhắn bị chặn. Ủy ban Thượng viện Hoa Kỳ đã nghiên cứu kỹ vấn đề này và, tất nhiên, không tìm thấy bất cứ điều gì, các khoản phí với NSA đã bị xóa, kết quả nghiên cứu vẫn chưa được dệt may. Trong một từ, ở Mỹ, những tin đồn và phỏng đoán đã bị xoắn trong một thời gian dài, nó đáng để tin tưởng des hay không. Nhưng, như tôi nghĩ, tình huống ở đây được mô tả bởi câu nó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 nó không thể giao phó IBM một nhiệm vụ quan trọng như vậy và thực hiện một số điều chỉnh như nhiệm vụ của S-BOX.

Tất cả sự tồn tại của des anh là một mục tiêu cho các phương pháp Cryptoanal phân tích khác nhau. CryptoanalItic không ngừng đo lường các máy để mở des - thời gian nào có thể trang trí văn bản. Về vấn đề này, một số lượng không thể đếm được các sửa đổi khác nhau của thuật toán này xuất hiện và 3DES là xa tinh vi nhất trong số chúng.

Chú thích: Trong bài giảng này, một số mục tiêu đã được giao. Hiển thị sự khác biệt giữa các cipher truyền thống và hiện đại với một phím đối xứng. Tạo các ciphers khối hiện đại và thảo luận về đặc điểm của chúng. Giải thích tại sao các ciphers khối hiện đại nên được thiết kế như một ciphers thay thế. Nhập các thành phần của Ciphers chặn khối, chẳng hạn như các khối P và các khối S. Thảo luận và thể hiện sự khác biệt giữa hai lớp của Ciffers: Ciphers FireloL và Ciphers không phải là FireLL. Thảo luận về hai loại tấn công đặc biệt nhằm mục đích tiết lộ các ciphers khối hiện đại: phân biệt mật mã vi sai và tuyến tính. Nhập khái niệm về "Ciffers for Stream" và hiển thị sự khác biệt giữa Ciphers đồng bộ và không hợp nhất. Thảo luận về một phản hồi tuyến tính và phi tuyến tính của các thanh ghi ca để thực hiện các ciphers dòng chảy.

Ciphers truyền thống S. phím đối xứngRằng chúng tôi đã nghiên cứu cho đến nay, tập trung vào các biểu tượng. Với sự ra đời của một máy tính, một ciphers định hướng bit cần thiết. Bởi vì thông tin phải được mã hóa không phải lúc nào cũng là văn bản; Nó cũng có thể bao gồm các số, biểu đồ, dữ liệu âm thanh và video. Thật thuận tiện để chuyển đổi các loại dữ liệu này sang luồng bit để mã hóa luồng này, sau đó chuyển luồng được mã hóa. Ngoài ra, khi văn bản được xử lý ở mức xả, mỗi biểu tượng được thay thế bằng 8 (hoặc 16) bit, và điều này có nghĩa là số lượng ký tự trở thành 8 (hoặc 16) lần nữa. Trộn số lượng lớn hơn các ký tự tăng sự an toàn.

Chương này cung cấp nền tảng cần thiết cho nghiên cứu về khối hiện đại và ciphers suối, được thảo luận trong ba chương sau. Hầu hết các chương này được dành để thảo luận về các ý tưởng chung của các ciphers khối hiện đại, và chỉ một phần nhỏ - các nguyên tắc của các cipher dòng chảy hiện đại.

7.1. Ciphers khối hiện đại

Mật mã khối hiện đại với các phím đối xứng được mã hóa bởi khối N -bit của văn bản nguồn hoặc giải mã khối N -Bite của văn bản được mã hóa. Thuật toán mã hóa hoặc giải mã được sử dụng bởi K -bit Key. Thuật toán giải mã phải là đảo ngược thuật toán mã hóa và cả trong công việc đều sử dụng cùng một phím Seacake để Bob có thể khôi phục tin nhắn được truyền bởi Alice. Hình 7.1 cho thấy toàn bộ ý tưởng về mã hóa và giải mã trong một mật mã khối hiện đại.


Quả sung. 7.1.

Nếu thông báo có kích thước nhỏ hơn n bit, bạn cần thêm điền để tạo khối n n này; Nếu thông báo có nhiều hơn n bit, nó phải được chia thành các khối n hiển thị và nếu cần, thêm điền vào khối cuối cùng vào khối cuối cùng. Các giá trị chung cho N thường là 64, 128, 256 hoặc 512 bit.

Ví dụ 7.1.

Có bao nhiêu bit bổ sung cần thêm vào tin nhắn 100 ký tự nếu ASCII được sử dụng để mã hóa 8 bit và khối mật mã chấp nhận khối 64 bit?

Phán quyết

Mã 100 ký tự sử dụng ASCII 8 bit. Thông báo này chứa 800 bit. Văn bản nguồn phải được chia mà không có số dư cho 64. Nếu |. M |. và |. Pad | - Độ dài của tin nhắn và độ dài của điền, sau đó

| M |. + |. Pad | \u003d\u003d 0 MOD 64 -\u003e | Pad | \u003d -800 mod 64-\u003e 32 mod 64

Điều này có nghĩa là thông báo cần thêm 32 bit điền (ví dụ: Zeros). Các văn bản sau đó sẽ bao gồm 832 bit hoặc mười ba khối 64 chữ số. Lưu ý rằng chỉ có khối cuối cùng chứa điền. Bộ mã hóa sử dụng thuật toán mã hóa mười ba lần để tạo mười ba khối văn bản được mã hóa.

Thay thế, hoặc chuyển vị

Mật mã khối hiện đại có thể được thiết kế để hoạt động như một mật mã thay thế hoặc như một mật mã chuyển vị. Đây là ý tưởng tương tự cũng được sử dụng trong các ciphers truyền thống, ngoại trừ các ký tự sẽ được thay thế hoặc di chuyển chứa các bit thay vì ký tự.

Nếu mật mã được thiết kế như sự thay thế mã hóa, Bit 1 hoặc 0 giá trị trong văn bản nguồn có thể được thay thế bằng 0 hoặc 1. Điều này có nghĩa là văn bản nguồn và văn bản được mã hóa có thể có một số đơn vị khác nhau. Khối văn bản nguồn thêm 64 bit, chứa 12 số không và 52 đơn vị, có thể được biểu thị trong văn bản được mã hóa 34 số không và 30 đơn vị. Nếu mật mã được thiết kế như sắp xếp lại mã hóa (Transpition), Bits chỉ thay đổi thứ tự sau (di chuyển), trong khi duy trì cùng số lượng ký tự trong các văn bản gốc và được mã hóa. Trong mọi trường hợp, số lượng văn bản nguồn N -Bite có thể hoặc các văn bản được mã hóa là 2 N, vì mỗi bit được sử dụng trong khối có thể có một trong hai giá trị - 0 hoặc 1 .2 64 bit 64 bit để tìm một trong Điều đó có ý nghĩa. Nếu Eve có thể thử 1 tỷ khối mỗi giây, và sau đó sẽ mất hàng trăm năm trước khi công việc này có thể mang lại thành công.

b. Trong trường hợp thứ hai (sắp xếp lại), EVA biết rằng trong văn bản nguồn có chính xác 10 đơn vị, vì sự chuyển vị không thay đổi số lượng đơn vị (hoặc số không) trong văn bản được mã hóa. Eva có thể bắt đầu một cuộc tấn công tìm kiếm toàn diện chỉ sử dụng các khối 64 miếng có chính xác 10 đơn vị. Chỉ có. (64!) / [(10!) (54!)] = 151 473 214 816 Trong số 2 64 từ 64 bit, có chính xác 10 đơn vị. Eva có thể kiểm tra tất cả chúng trong vòng chưa đầy 3 phút nếu nó có thể dành 1 tỷ bài kiểm tra mỗi giây.

Khả năng chống lại một cuộc tấn công tìm kiếm toàn diện, mật mã khối hiện đại nên được thiết kế như một mật mã thay thế.

Trong thế kỷ XXI, mật mã học đóng một vai trò nghiêm túc trong cuộc sống kỹ thuật số của những người hiện đại. 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 loại máy tính

Nhiều khả năng, bạn đã bắt gặp mật mã đơn giản nhất và có lẽ, biết một số phương thức mã hóa. Ví dụ, mật mã Caesar thường được sử dụng trong việc phát triển các trò chơi của trẻ em.

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

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

Hôm nay chúng ta đang 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ệ. Làm thế nào để truyền thông tin cá nhân và tài chính an toàn khi chúng tôi mua hàng trên Internet hoặc xem tài khoản ngân hàng? Làm cách nào an toàn để lưu trữ dữ liệu để không ai có thể mở máy tính, kéo đĩa cứng và có quyền truy cập đầy đủ vào tất cả thông tin trên đó? Trả lời những câu hỏi này và các câu hỏi khác trong bài viết này.

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

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

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

Tính toàn vẹn thông tin. - Tự tin là thông tin 100% sẽ vẫn không bị ảnh hưởng và sẽ không bị thay đổi bởi kẻ tấn công.

Có sẵn thông tin - Nhận quyền truy cập vào dữ liệu khi cần thiết.

Cũng trong bài viết xem xét các hình thức mã hóa kỹ thuật số khác nhau và cách họ có thể giúp đạt được các mục tiêu được liệt kê ở trên.

Phương thức mã hóa cơ bản:
  • Đối xứng
  • Không đối xứng.
  • Haming.
  • Chữ ký số

Mã hóa đối xứng

Trước khi chúng ta bắt đầu hiểu chủ đề này, tôi sẽ trả lời một câu hỏi đơn giản: Ý nghĩa của "mã hóa" là gì? Mã hóa là việc chuyển đổi thông tin để che giấu những người không được ủy quyền, nhưng đồng thời với việc cung cấp quyền truy cập của người dùng được ủy quyền.

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

Ruby.

yêu cầu "OpenSSL" yêu cầu "Pry" data_to_encrypt \u003d "Bây giờ bạn có thể đọc tôi!" Mật mã \u003d \u200b\u200bOpenSSL :: Mật bản.NEW ("AES256") CODO.Ent.Random_Key IV \u003d CODS.RANDOM_IV DATA_TO_ENCRYPT \u003d MUSPUDATE (DATA_TO_ENCRYPT) + MuDing.

yêu cầu "openssl"

yêu cầu "PRY"

mật mã \u003d \u200b\u200bOpenSSL :: mật mã. Mới ("AES256")

mật mã. Mã hóa.

kEY \u003d mật mã. Ngẫu nhiên _ Phím

iv \u003d mật mã. Ngẫu nhiên _ IV.

data_to_encrypt \u003d mật mã. Cập nhật (data_to_encrypt) + mật mã. Sau cùng

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

thật.

Đây là những gì chương trình sẽ rút tiền:

Lưu ý rằng biến data_to_encrypt.Ban đầu là một chuỗi "Bây giờ bạn có thể đọc tôi!", bây giờ là một loạt các nhân vật khó hiểu. Đảo ngược quá trình bằng cách sử dụng khóa được lưu ban đầu trong một biến chìa khóa..

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

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

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

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

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

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

Nhưng làm thế nào để hiểu rằng khóa công khai 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à loại được sử dụng trên internet) là việc sử dụng cơ sở hạ tầng khóa mở (PKI). Trong trường hợp của các trang web, có một cơ quan chứng nhận có danh mục của tất cả các trang web đã phát hành chứng chỉ và khóa mở. Khi kết nối với trang web, khóa công khai của nó được cơ quan chứng nhận kiểm tra lần đầu tiên.

Tạo một cặp khóa mở và đóng:

Ruby.

yêu cầu "OpenSSL" yêu cầu "Pry" data_to_encrypt \u003d "Bây giờ bạn có thể đọc tôi!" KEY \u003d OpenSSL :: PKEY :: RSA.NEW (2048) BINDING.PRY TRUE

yêu cầu "openssl"

yêu cầu "PRY"

data_to_encrypt \u003d "Bây giờ bạn có thể đọc tôi!"

kEY \u003d OpenSSL :: PKEY :: RSA. Mới (2048)

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

thật.

Hóa ra:

Xin lưu ý rằng khóa riêng và khóa chung là các đối tượng 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 khóa đóng và sử dụng #public_decrypt. - Giải mã tin nhắn:

Thông tin băm.

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

Hàm như đầu vào chấp nhận một số thông tin và hiển thị, nó có vẻ là chuỗi ngẫu nhiên sẽ luôn có cùng độ dài. Chức năng lý tưởng của băm tạo ra các giá trị duy nhất cho các đầu vào khác nhau. Đầu vào tương tự sẽ luôn tạo ra cùng một băm. Do đó, bạn có thể sử dụng băm để xác minh tính toàn vẹn của dữ liệu.

09.07.2003

Mã hóa là gì?

Mã hóa được sử dụng bởi loài người từ cùng một lúc, vì thông tin bí mật đầu tiên xuất hiện, nghĩa là, quyền truy cập này sẽ được giới hạn. Đó là một thời gian dài trước đây - vì vậy, một trong những phương pháp mã hóa nổi tiếng nhất là tên của Caesar, người, nếu anh ta không tự phát minh ra nó, họ đã sử dụng tích cực (xem chèn).

Mật mã cung cấp sự che giấu ý nghĩa của tin nhắn và tiết lộ để giải mã với các thuật toán và chìa khóa đặc biệt. Chìa khóa được chúng tôi hiểu là một trạng thái bí mật cụ thể của các tham số của các thuật toán mã hóa và giải mã. Từ khóa: Khóa cho phép đọc tin nhắn bí mật. Tuy nhiên, như bạn sẽ thấy bên dưới, không phải lúc nào cũng là chìa khóa không phải lúc nào cũng được đảm bảo rằng thông báo sẽ không thể đọc được người tồn tại.

Quá trình mở mật mã mà không có kiến \u200b\u200bthức chính được gọi là Cryptoanalysis. Thời gian cần thiết để hack mật mã được xác định bởi khả năng kháng khó hiểu của nó. Hơn nữa, nhiều thuật toán mã hóa "mạnh hơn". Thậm chí tốt hơn, nếu ban đầu không thể tìm ra nếu đạt được kết quả hack.

Phương pháp mã hóa hiện đại cơ bản

Trong số các phương thức mã hóa đa dạng, các phương thức chính sau có thể được phân biệt:

  • Các thuật toán thay thế hoặc thay thế là các biểu tượng của văn bản nguồn được thay thế bằng các ký tự của bảng chữ cái khác (hoặc cùng) theo bảng chữ cái theo sơ đồ được xác định trước, đó sẽ là chìa khóa của mật mã này. Một cách riêng biệt, phương pháp này trong các hệ thống mật mã hiện đại thực tế không được sử dụng do khả năng kháng khó hiểu cực thấp.
  • Các thuật toán cho hoán vị - các biểu tượng của văn bản gốc đang thay đổi ở những nơi trên một nguyên tắc nhất định là một phím bí mật. Thuật toán của bản thân hoán vị có khả năng kháng khó hiểu thấp, nhưng vào phần tử trong rất nhiều hệ thống mật mã hiện đại.
  • Thuật toán Humming - Các biểu tượng của văn bản nguồn được gấp lại với các biểu tượng của một chuỗi ngẫu nhiên nhất định. Ví dụ phổ biến nhất là mã hóa các tệp "người dùng.pwl", trong đó hệ điều hành Microsoft Windows 95 lưu mật khẩu vào tài nguyên mạng của người dùng này (mật khẩu khi nhập NT Servers, Mật khẩu để truy cập quay số vào Internet, v.v. ).

Khi người dùng nhập mật khẩu của mình khi nhập Windows 95, một gamma (luôn luôn là một và cùng một) được sử dụng để mã hóa mật khẩu mạng được tạo bởi thuật toán mã hóa RC4. Sự đơn giản của việc lựa chọn mật khẩu được xác định trong trường hợp này bởi thực tế là các cửa sổ luôn thích cùng một gam.

  • Thuật toán dựa trên các phép chuyển đổi toán học phức tạp của văn bản nguồn theo một số công thức. Nhiều người trong số họ sử dụng các nhiệm vụ toán học chưa được giải quyết. Ví dụ: thuật toán thuật toán mã hóa RSA dựa trên các thuộc tính của số nguyên tố.

Hệ thống mật mã đối xứng và không đối xứng

Trước khi chuyển sang các thuật toán cá nhân, hãy xem xét ngắn gọn khái niệm về các hệ thống mật mã đối xứng và không đối xứng. Tạo một khóa bí mật và mã hóa chúng một tin nhắn - nó vẫn còn một nửa. Nhưng làm thế nào để gửi chìa khóa như vậy cho người nên giải mã tin nhắn nguồn với nó? Việc truyền khóa mã hóa được coi là một trong những vấn đề chính của mật mã.

Ở trong khuôn khổ của một hệ thống đối xứng (vì vậy nó được đặt tên vì cùng một khóa phù hợp để mã hóa và giải mã), bạn phải có một kênh liên lạc đáng tin cậy để chuyển khóa bí mật. Nhưng một kênh như vậy không phải lúc nào cũng có sẵn, và do đó các nhà toán học người Mỹ khác biệt, Hellman và Merkel đã phát triển vào năm 1976. Khái niệm về một khóa mở và mã hóa bất đối xứng. Trong các hệ thống mật mã như vậy, chỉ có khóa cho quá trình mã hóa có sẵn công khai và quy trình giải mã chỉ được biết đến người chiến thắng của khóa bí mật.

Ví dụ, khi tôi muốn gửi cho tôi một tin nhắn, sau đó tạo các phím ngoài trời và bí mật. Mở Gửi cho bạn, bạn mã hóa chúng một tin nhắn và gửi cho tôi. Tôi chỉ có thể giải mã tin nhắn, vì tôi đã không chuyển bất cứ ai một khóa bí mật. Tất nhiên, cả hai phím đều được liên kết với một cách đặc biệt (trong mỗi hệ thống mật mã theo những cách khác nhau) và phân phối phím mở không phá hủy mật mã của hệ thống.

Yêu cầu sau đây phải được thỏa mãn trong các hệ thống bất đối xứng: Không có thuật toán như vậy (hoặc vẫn chưa biết), sẽ lấy được văn bản nguồn từ Cryptotext và khóa chung. Một ví dụ về một hệ thống như vậy là một hệ thống mật mã RSA được biết đến rộng rãi.

Thuật toán RSA.

Thuật toán RSA (chữ cái đầu tiên Tên của những người tạo ra Rivest-Shamir-Adleman) dựa trên các thuộc tính của số nguyên tố (và rất lớn). Các biểu mô được gọi là những con số như vậy không có phân phối, ngoại trừ bản thân và đơn vị. Và đơn giản lẫn nhau được gọi là các số không có phân chia chung, ngoại trừ 1.

Để bắt đầu, hãy chọn hai số đơn giản rất lớn (cần số nguồn lớn để xây dựng các phím chịu điện tử lớn. Ví dụ, chương trình SSH-KeyGen Unix tạo các phím lên 1024 bit dài).

Xác định tham số n.là kết quả của phép nhân p.q.. Chọn một số ngẫu nhiên lớn và gọi nó d., và nó phải đơn giản lẫn nhau với kết quả của phép nhân (P -1) * (Q -1).

Đặt một số e như tỷ lệ là đúng

Mod (e * d) mod ((p -1) * (Q -1)) \u003d 1

(mod.- dư lượng từ Sư đoàn, I.E. Nếu e nhân với D, chia cho ((P -1) * (Q -1)), sau đó trong phần còn lại chúng ta nhận được 1).

Một phím mở là một cặp số e và n.và đóng cửa - d và n..

Khi được mã hóa, văn bản nguồn được coi là một hàng số và chúng tôi thực hiện thao tác trên mỗi số

C (i) \u003d (m (i) e) mod n.

Kết quả là một chuỗi C (i)đó sẽ là Cryptotext. Giải mã thông tin xảy ra bởi công thức

M (i) \u003d (c (i) d) mod n.

Như bạn có thể thấy, việc giải mã liên quan đến việc biết khóa bí mật.

Hãy thử những số nhỏ.

Cài đặt p \u003d 3, q \u200b\u200b\u003d 7. Sau đó n \u003d p * q \u003d 21. Chọn d.làm thế nào 5. Công thức. (E * 5) mod 12 \u003d 1 Tính toán e \u003d 17.. Mở phím 17, 21 bí mật - 5, 21 .

Mã hóa trình tự "12345":

C (1) \u003d 1 17 mod 21 \u003d 1

C (2) \u003d 2 17 mod 21 \u003d 11

C (3) \u003d 3 17 mod 21 \u003d 12

C (4) \u003d 4 17 mod 21 \u003d 16

C (5) \u003d 5 17 mod 21 \u003d 17

Cryptotext - 1 11 12 16 17.

Kiểm tra giải mã:

M (1) \u003d 1 5 mod 21 \u003d 1

M (2) \u003d 11 5 mod 21 \u003d 2

M (3) \u003d 12 5 mod 21 \u003d 3

M (4) \u003d 16 5 mod 21 \u003d 4

M (5) \u003d 17 5 mod 21 \u003d 5

Như bạn có thể thấy, kết quả trùng khớp.

Hệ thống mật mã RSA được áp dụng rộng rãi trên Internet. Khi bạn kết nối với máy chủ SSL an toàn, bạn cài đặt chứng chỉ WebMoney vào PC hoặc kết nối với máy chủ từ xa bằng cách sử dụng Open SSH hoặc SecureShell, sau đó tất cả các chương trình này đều sử dụng mã hóa khóa mở bằng các ý tưởng về thuật toán RSA. Hệ thống này có đáng tin cậy như vậy không?

Các cuộc thi để hack RSA

Kể từ khi thành lập, RSA liên tục bị tấn công bởi cuộc tấn công vũ phu (tấn công theo phương pháp của lực lượng thô, tức là Bust). Năm 1978, các tác giả của thuật toán đã xuất bản một bài viết nơi họ đã dẫn dắt chuỗi được mã hóa bởi phương pháp được phát minh bởi họ. Người đầu tiên giải mã tin nhắn đã được gán tiền thù lao 100 đô la, nhưng đối với điều này, cần phải phân tách một số 129 chữ số thành hai chúng sinh. Đó là cuộc thi đầu tiên tại RSA. Nhiệm vụ đã được giải quyết chỉ 17 năm sau khi xuất bản bài viết.

Cryptopostility dựa trên giả định rằng nó cực kỳ khó khăn nếu nó thường thực tế để xác định khóa đóng từ việc mở. Để kết thúc này, cần phải giải quyết vấn đề về sự tồn tại của vách ngăn của một số nguyên lớn. Cho đến bây giờ, không ai đã quyết định bởi các phương pháp phân tích và thuật toán RSA chỉ có thể bị hack bằng cách dập tắt. Nói đúng, khẳng định rằng nhiệm vụ phân hủy bội số là phức tạp và việc hack hệ thống RSA là khó khăn, cũng không được chứng minh.

Số nhận được là kết quả của việc xử lý tin nhắn văn bản, số này được mã hóa bởi thuật toán RSA trên khóa đã đóng của người dùng và được gửi đến người nhận cùng với chữ cái và một thể hiện khóa mở. Điểm đến với khóa chung của người gửi thực hiện cùng một hàm băm phía trên tin nhắn. Nếu cả hai số bằng nhau, điều đó có nghĩa là thông báo là chính hãng và nếu ít nhất một ký tự được thay đổi, thì các số không khớp.

Một trong những khách hàng phổ biến nhất ở Nga, chương trình BAT !, có các tính năng tích hợp để thêm chữ ký số vào chữ cái (chú ý đến mục menu riêng tư khi chỉnh sửa chữ cái). Đọc thêm về kỹ thuật này trong bài viết (xem "Mir PC", số 3/02).

Quả sung. 3.

Cryptography.

Mật mã học là một khoa học về các nguyên tắc, phương tiện và phương pháp để chuyển đổi thông tin để bảo vệ nó khỏi sự truy cập và biến dạng trái phép. Gần đây, nó phát triển rất và rất dữ dội. Đây là một cuộc đua hấp dẫn vô hạn, đòi hỏi rất nhiều thời gian và công sức: các thuật toán Hack CryptoAnalysts gần đây đã được sử dụng và sử dụng ở mọi nơi. Nhân tiện, toán học của Dan Goldstone (Hoa Kỳ) và bởi người Iildirim (Thổ Nhĩ Kỳ) đã chứng minh mô hình đầu tiên trong việc phân phối số nguyên tố (cho đến nay các luật đó đã không nhận thấy). Các số đơn giản được đặt trên trục số bởi một số cụm, giúp nó dễ dàng tìm kiếm hơn.

Các nghiên cứu toán học trên thế giới liên tục dẫn đến những khám phá mới và mới. Như bạn đã biết, chúng ta có thể nằm trong ngưỡng của hack thuật toán RSA hoặc các hệ thống mật mã khác dựa trên các nhiệm vụ toán học chưa được giải quyết.

Oleg Bunin. - Chuyên gia phát triển phần mềm cho các dự án Internet lớn, Rambler nhân viên, http: //www..htm.).

  • Giới thiệu về mật mã / ed. V.v. Yashchenko. M .: mcsnmo, 2000.
  • NoSov V. A. Tiểu luận lịch sử ngắn gọn về sự phát triển của mật mã // Tài liệu của Hội nghị "Đại học Moscow và phát triển mật mã ở Nga", Đại học bang Moscow, tháng 10-18 tháng 10 năm 2002
  • Salomaa A. Mật mã với một phím mở. M., 1996.
  • Zimmerman F. PGP - Mã khóa mở cho tất cả.
  • Hệ thống mã hóa Caesar

    Một ví dụ về thuật toán thay thế là hệ thống mã hóa Caesar. Phương pháp này dựa trên việc thay thế từng chữ tin nhắn cho một chữ cái khác bằng phần bù từ nguồn đến số lượng ký tự cố định. Cố gắng giải mã các khu vực Omar Khayama (thời gian thực hiện - 10 phút).

    Osayiz Zhusjz Zhizhluz, Bzhyshl Zhuszzhz Zhizhzz, Eyshchuzhfo isshovzhevyzhevyzhv eshez zhyshshshchev: LF Emrasy Yasezeschg, Ryuyu Rlz Izlizza Yukla, ở Emirsu Bme Zevzh, Ryuu Syuyulya đến Douchez.

    Có thời gian? Tôi đưa ra một "đoán":

    Để cuộc sống khôn ngoan để sống, cần phải biết khá nhiều

    Hai quy định quan trọng của nhớ cho người mới bắt đầu:

    Bạn tốt hơn là đói hơn những gì tôi có,

    Và nó tốt hơn với một người mà nó rơi xuống.

    Chìa khóa để giải mã: Chúng tôi di chuyển trên bảy ký tự (mất thứ bảy) còn lại theo thứ tự abc. Bảng chữ cái sợ hãi. Thanh ghi biểu tượng không được tính đến.

    Windows và mật khẩu

    Làm thế nào để Windows mã hóa mật khẩu?

    Hệ thống lấy mật khẩu, chuyển đổi nó thành chữ hoa, cắt lên đến 14 ký tự, sau đó chia chúng thành hai nửa của 7, mã hóa từng nửa, mã hóa riêng biệt và nó lưu lại rằng nó đơn giản hóa việc hack. Nhân tiện, khi bạn đưa ra một mật khẩu, hãy nhớ rằng sự kết hợp dài hơn 14 ký tự có ít ý nghĩa.

    Cuộc thi AES (Tiêu chuẩn mã hóa nâng cao)

    Trong những năm 80. Ở Hoa Kỳ đã áp dụng một tiêu chuẩn mã hóa đối xứng để sử dụng nội bộ - des ((tiêu chuẩn mã hóa dữ liệu, một tiêu chuẩn như vậy là ở Nga). Nhưng vào năm 1997, khi nói rõ rằng khóa 56 bit của des là không đủ cho một Hệ thống mật mã đáng tin cậy, Viện Tiêu chuẩn Hoa Kỳ đã công bố sự cạnh tranh cho một thuật toán tiêu chuẩn mới. Trong số 15 lựa chọn, người giỏi nhất đã được chọn: Thuật toán của Bỉ Rijndael (tên của nó được tạo thành từ tên của các tác giả - Rijmen và daemen, đọc như Raindal. Thuật toán này đã được xây dựng thành các quỹ mật mã khác nhau được cung cấp cho thị trường). Các cuộc thi Mars, RC6, Serpent, Serpent, Twofish. Tất cả các thuật toán này được công nhận bởi khá dai dẳng và phản đối thành công tất cả các phương pháp Cryptoanalysis nổi tiếng.

    Chức năng băm mật mã

    Các hàm băm mật mã chuyển đổi dữ liệu đầu vào của bất kỳ kích thước nào trong chuỗi kích thước cố định. Nó là vô cùng khó khăn để họ tìm thấy:

    • hai bộ dữ liệu khác nhau có cùng kết quả của việc chuyển đổi (khả năng chống va chạm); Ví dụ: số lượng các phép toán số học cần thiết để tìm một khối dữ liệu, cũng có một thông báo ngắn gọn cho hàm băm MD5, là khoảng 2,64;
    • giá trị đầu vào cho một kết quả đã biết của băm (không thể đảo ngược); Đối với MD5, số lượng hoạt động ước tính cần thiết để tính toán thông báo nguồn là 2 128.