Mật mã học. Mật mã, loại và tính chất của chúng. Phương pháp mã hóa truyền thống

Serge Panasenko,
Trưởng phòng phát triển phần mềm tại 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 dữ liệu được mã hóa và ngược lại thường được gọi là mã hóa và hai thành phần của quá trình này lần lượt được gọi là mã hóa và giải mã. Về mặt toán học, phép biến đổi này được thể hiện bằng các phụ thuộc sau đây mô tả các hành động với thông tin ban đầu:

C = Ek1(M)

M" = Dk2(C),

trong đó M (tin nhắn) là thông tin mở (trong tài liệu về bảo mật thông tin, nó thường được gọi là “văn bản nguồn”);
C (văn bản mật mã) - văn bản mã hóa (hoặc mật mã) thu được do 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ật mã trên văn bản nguồn;
k1 (key) - tham số của hàm E, gọi là khóa mã hóa;
M" - thông tin thu được do 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ật mã nghịch đảo trên bản mã;
k2 là khóa dùng để giải mã thông tin.

Khái niệm “khóa” trong tiêu chuẩn GOST 28147-89 (thuật toán mã hóa đối xứng) được định nghĩa như sau: “trạng thái bí mật cụ thể của một số tham số của thuật toán chuyển đổi mật mã, đảm bảo chọn một phép biến đổi từ một tập hợp các phép biến đổi có thể có cho một thuật toán nhất định.” Nói cách khác, khóa là một phần 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 sẽ được mã hóa khác nhau khi sử dụng các khóa khác nhau.

Để kết quả giải mã khớp với thông điệp gốc (tức là với M" = M), phải đáp ứng đồng thời hai điều kiện. Đầu tiên, hàm giải mã D phải khớp với hàm mã hóa E. Thứ hai, khóa giải mã k2 phải khớp với mã hóa phím k1.

Nếu thuật toán mã hóa mạnh về mặt mật mã được sử dụng để mã hóa thì nếu không có khóa k2 chính xác thì không thể lấy được M" = M. Độ mạnh của mật mã là đặc điểm chính của thuật toán mã hóa và chủ yếu biểu thị mức độ phức tạp của việc lấy bản gốc văn bản từ văn bản được mã hóa không có khóa k2.

Các thuật toán mã hóa có thể được chia thành hai loại: mã hóa đối xứng và bất đối xứng. Đối với trường hợp trước, tỷ lệ khóa mã hóa và khóa giải mã được xác định là k1 = k2 = k (tức là 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 từ khóa k2 sao cho không thể chuyển đổi ngược lại, ví dụ: sử dụng công thức k1 = ak2 mod p (a và p là các tham số của thuật toán được sử dụng).

Mã hóa đối xứng

Các thuật toán mã hóa đối xứng có từ thời cổ đại: phương pháp che giấu thông tin này đã được hoàng đế La Mã Gaius Julius Caesar sử dụng vào thế kỷ 1 trước Công nguyên. e., và thuật toán do ông phát minh ra được gọi là “hệ thống mật mã Caesar”.

Hiện tại, thuật toán mã hóa đối xứng được biết đến nhiều nhất là 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, nó là “tiêu chuẩn Hoa Kỳ”, vì chính phủ nước này khuyến nghị sử dụng thuật toán này để triển khai các hệ thống mã hóa dữ liệu khác nhau. Mặc dù thực tế là DES ban đầu được lên kế hoạch sử dụng không quá 10-15 năm, những nỗ lực thay thế nó chỉ bắt đầu vào năm 1997.

Chúng tôi sẽ không xem xét chi tiết về DES (hầu hết tất cả các sách trong danh sách tài liệu bổ sung đều có mô tả chi tiết về nó), mà sẽ chuyển sang các thuật toán mã hóa hiện đại hơn. Điều đáng lưu ý là lý do chính cho việc thay đổi tiêu chuẩn mã hóa là do độ mạnh mật mã tương đối yếu của nó, lý do là độ dài khóa DES chỉ có 56 bit đáng kể. Được biết, bất kỳ thuật toán mã hóa mạnh nào cũng có thể bị bẻ khóa bằng cách thử tất cả các khóa mã hóa có thể (cái gọi là tấn công vũ phu). Thật dễ dàng để tính toán rằng một cụm gồm 1 triệu bộ xử lý, mỗi bộ xử lý 1 triệu khóa mỗi giây, sẽ kiểm tra 256 biến thể của khóa DES trong gần 20 giờ. rằng khóa 56 bit quá ngắn và thuật toán DES cần được thay thế bằng thuật toán mạnh hơn.

Ngày nay, hai thuật toán mã hóa mạnh hiện đại đang được sử dụng ngày càng nhiều: tiêu chuẩn nội địa GOST 28147-89 và tiêu chuẩn mật mã mới của Hoa Kỳ - AES (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 khóa mã hóa là 256 bit. Nó mã hóa thông tin theo khối 64 bit (thuật toán như vậy được gọi là thuật toán khối), sau đó được chia thành hai khối con 32 bit (N1 và N2). Khối con N1 được xử lý theo một cách nhất định, sau đó giá trị của nó được cộng với giá trị của khối con N2 (phép cộng được thực hiện theo modulo 2, tức là thao tác XOR logic được áp dụng - “độc quyền hoặc”), và sau đó các khối con được hoán đổi. Phép biế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ế độ vận hành của thuật toán. Trong mỗi vòng, hai thao tác được thực hiện.

Đầu tiên là gõ phím. Nội dung của khối con N1 được thêm modulo 2 với phần 32 bit của khóa Kx. Khóa mã hóa đầy đủ được biểu diễn dưới dạng ghép các khóa con 32 bit: K0, K1, K2, K3, K4, K5, K6, K7. Trong quá trình mã hóa, một trong các khóa con này sẽ đượ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 là thay thế bảng. Sau khi khóa, khối con N1 được chia thành 8 phần, mỗi phần 4 bit, giá trị của mỗi phần được thay thế theo bảng thay thế cho phần này của khối con. Khối con sau đó được quay bit sang trái 11 bit.

Thay thế bảng(Hộ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 cần giải thích cách tổ chức hoạt động đó. Giá trị đầu ra của các khối được ghi vào bảng. Khối dữ liệu có kích thước nhất định (trong trường hợp của chúng tôi là 4 bit) có biểu diễn số riêng, xác định số lượng của giá trị đầu ra. Ví dụ: nếu hộp S trông giống như 4, 11, 2, 14, 15, 0, 8, 13, 3, 12, 9, 7, 5, 10, 6, 1 và khối 4 bit “0100” đến đầu vào (giá trị 4), thì theo bảng, giá trị đầu ra sẽ là 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: thay thế đơn giản, gamma, gamma với phản hồi và tạo các tệp đính kèm giả. Chúng 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 nên việc chuyển đổi này được thực hiện khác nhau ở mỗi chế độ.

Đang ở chế độ thay thế dễ dàngĐể mã hóa từng khối thông tin 64-bit, 32 vòng mô tả ở trên được thực hiện. Trong trường hợp này, khóa con 32 bit được sử dụng theo trình tự sau:

K0, K1, K2, K3, K4, K5, K6, K7, K0, K1, v.v. - ở các vòng 1 đến 24;

K7, K6, K5, K4, K3, K2, K1, K0 - ở các vòng 25 đến 32.

Việc giải mã ở chế độ này được thực hiện theo cách tương tự, nhưng với trình tự sử dụng khóa con hơi khác một chút:

K0, K1, K2, K3, K4, K5, K6, K7 - ở các vòng 1 đến 8;

K7, K6, K5, K4, K3, K2, K1, K0, K7, K6, v.v. - ở các vòng 9 đến 32.

Tất cả các khối được mã hóa độc lập với nhau, tức là kết quả mã hóa của mỗi khối chỉ phụ thuộc vào nội dung của nó (khối tương ứng của văn bản gốc). Nếu có một số khối văn bản gốc (thuần túy) giống hệt nhau thì các khối văn bản mã hóa tương ứng cũng sẽ giống hệt nhau, điều này cung cấp thêm thông tin hữu ích cho nhà giải mã đang cố gắng giải mã. Do đó, chế độ này được sử dụng chủ yếu để mã hóa các khóa mã hóa (sơ đồ nhiều khóa thường được triển khai, trong đó, vì một số lý do, các khóa được mã hóa lẫn nhau). Hai chế độ hoạt động khác nhằm mục đích mã hóa thông tin - gamma và gamma có phản hồi.

TRONG chế độ gamma Mỗi khối văn bản gốc được thêm từng bit theo modulo 2 vào khối gamma mật mã 64 bit. Mật mã gamma là một chuỗi đặc biệt thu được nhờ một số thao tác nhất định với các thanh ghi N1 và N2 (xem Hình 1).

1. Việc điền ban đầu của chúng được ghi vào các thanh ghi N1 và N2 - giá trị 64 bit được gọi là thông báo đồng bộ hóa.

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

3. Nội dung của thanh ghi N1 được cộng modulo (232 - 1) với hằng số C1 = 224 + 216 + 28 + 24 và kết quả của phép cộng được ghi vào thanh ghi N1.

4. Nội dung của thanh ghi N2 được cộng modulo 232 với hằng số C2 = 224 + 216 + 28 + 1 và kết quả của phép cộng được ghi vào thanh ghi N2.

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

Nếu cần khối gamma tiếp theo (tức là cần tiếp tục mã hóa hoặc giải mã), nó sẽ quay lại bước 2.

Để giải mã, gamma được tạo ra theo cách tương tự, sau đó văn bản mã hóa và bit gamma lại được XOR. Vì thao tác này có thể đảo ngược nên trong trường hợp thang đo được phát triển chính xác, sẽ thu được văn bản gốc (bảng).

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

Để phát triển mật mã cần thiết để giải mã gamma, người dùng giải mã mật mã phải có cùng khóa và cùng giá trị của thông báo đồng bộ hóa đã được sử dụng khi mã hóa thông tin. Nếu không, sẽ không thể lấy được văn bản gốc từ văn bản được mã hóa.

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

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

Cơm. 2. Phát triển gamma mật mã ở chế độ gamma có phản hồi.

Xét về chế độ tạo tiền tố bắt chước, cần xác định khái niệm chủ thể sinh sản. Tiền tố là tổng kiểm tra mật mã được tính toán bằng khóa mã hóa và được thiết kế để xác minh tính toàn vẹn của tin nhắn. Khi tạo tiền tố giả, các thao tác sau được thực hiện: khối 64 bit đầu tiên của mảng thông tin mà tiền tố giả được tính toán, được ghi vào các thanh ghi N1 và N2 và được mã hóa ở chế độ thay thế đơn giản rút gọn ( 16 vòng đầu tiên trong số 32 vòng được thực hiện). Kết quả thu được được tính tổng modulo 2 với khối thông tin tiếp theo và kết quả được lưu trong N1 và N2.

Chu kỳ lặp lại cho đến khối thông tin cuối cùng. Nội dung 64-bit thu được của các thanh ghi N1 và N2 hoặc một phần của chúng là kết quả của các phép biến đổi này được gọi là tiền tố mô phỏng. Kích thước của tiền tố giả được chọn dựa trên độ tin cậy yêu cầu của tin nhắn: với độ dài của tiền tố giả r bit, xác suất để một thay đổi trong tin nhắn sẽ không được chú ý là bằng 2-r. Tiền tố giả 32 bit được sử dụng, tức là một nửa nội dung của các thanh ghi. Điều này là đủ, vì giống như bất kỳ tổng kiểm tra nào, tệp đính kèm giả chủ yếu nhằm mục đích bảo vệ khỏi sự biến dạng thông tin do vô tình. Để bảo vệ khỏi việc cố ý sửa đổi dữ liệu, các phương pháp mã hóa khác được sử dụng - chủ yếu là chữ ký số điện tử.

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

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 để tiết lộ nó ngoài phương pháp “bạo lực” đã đề cập ở trên. Tính bảo mật cao của nó đạt được chủ yếu nhờ độ dài khóa lớn - 256 bit. Khi sử dụng thông báo đồng bộ bí mật, độ dài khóa hiệu dụng sẽ tăng lên 320 bit và việc mã hóa bảng thay thế sẽ bổ sung thêm các bit. Ngoài ra, cường độ mật mã phụ thuộc vào số vòng chuyển đổi, theo GOST 28147-89 phải là 32 (toàn bộ hiệu ứng phân tán dữ liệu đầu vào đạt được sau 8 vòng).

Tiêu chuẩn AES

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

Một cuộc cạnh tranh nhằm thay thế DES được Viện Tiêu chuẩn và Công nghệ Quốc gia Hoa Kỳ (NIST - National Institute of Standards and Technology) công bố vào năm 1997. 15 thuật toán ứng cử viên đã được gửi tham gia cuộc thi, được phát triển bởi cả các tổ chức nổi tiếng trong lĩnh vực mật mã (RSA Security, Counterpane, v.v.) và các cá nhân. Kết quả của cuộc thi được công bố vào tháng 10 năm 2000: người chiến thắng là thuật toán Rijndael, được phát triển bởi hai nhà mật mã người Bỉ, Vincent Rijmen và Joan Daemen.

Thuật toán Rijndael không giống với hầu hết các thuật toán mã hóa đối xứng đã biết, cấu trúc của nó được gọi là “mạng Feistel” và tương tự như GOST 28147-89 của Nga. Điểm đặc biệt của mạng Feistel là giá trị đầu vào được chia thành hai hoặc nhiều khối con, một phần trong đó trong mỗi vòng được xử lý theo một luật nhất định, sau đó nó được xếp chồng lên các khối con chưa được xử lý (xem Hình 1).

Không giống như tiêu chuẩn mã hóa trong nước, thuật toán Rijndael biểu thị một khối dữ liệu dưới dạng mảng byte hai chiều có kích thước 4X4, 4X6 hoặc 4X8 (cho 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 trên các byte riêng lẻ của mảng cũng như trên các cột và hàng độc lập.

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


Cơm. 3. Hoạt động BS.

Cơm. 4. Chiến dịch SR.

Cơm. 5. Chiến dịch MC.

Số vòng mã hóa (R) trong thuật toán Rijndael có thể thay đổi (10, 12 hoặc 14 vòng) và phụ thuộc vào kích thước khối và khóa mã hóa (cũng có một số kích thước cố định cho khóa).

Việc giải mã được thực hiện bằng các thao tác ngược sau. Việc đảo ngược bảng và thay thế bảng được thực hiện trên bảng nghịch đảo (so với bảng được sử dụng trong quá trình mã hóa). Hoạt động ngược lại với SR là xoay các hàng sang phải thay vì sang trái. Phép toán nghịch đảo của MC là phép nhân sử dụng các quy tắc tương tự với một ma trận d(x) khác thỏa mãn điều kiện: c(x) * d(x) = 1. Việc cộng khóa AK là nghịch đảo của chính nó, vì nó chỉ sử dụng XOR hoạt động. Các thao tác ngược này được áp dụng trong quá trình giải mã theo trình tự ngược lại với chuỗi được sử dụng trong quá trình mã hóa.

Rijndael đã trở thành tiêu chuẩn mới cho việc mã hóa dữ liệu do có 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: triển khai cả phần mềm và phần cứng. Nó được phân biệt bởi khả năng tính toán song song tốt hơn rất nhiều so với các thuật toán khác được gửi đến cuộc thi. Ngoài ra, yêu cầu tài nguyên cho hoạt động của nó là tối thiểu, điều này rất quan trọng khi được sử dụng trong các thiết bị có khả năng tính toán hạn chế.

Nhược điểm duy nhất của thuật toán có thể được coi là sơ đồ độc đáo vốn có của nó. Thực tế là các thuộc tính của thuật toán dựa trên mạng Feistel đã được nghiên cứu kỹ lưỡng và ngược lại, Rijndael 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 nó bắt đầu được sử dụng rộng rãi.

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

Các thuật toán mã hóa bất đối xứng, như đã lưu ý, sử dụng hai khóa: k1 - khóa mã hóa hoặc công khai và k2 - khóa giải mã hoặc bí mật. Khóa công khai được tính từ bí mật: k1 = f(k2).

Các thuật toán mã hóa bất đối xứng dựa trên việc sử dụng các hàm một chiều. Theo định nghĩa, hàm y = f(x) là một chiều nếu: dễ dàng tính được tất cả các giá trị có thể có của x và đối với hầu hết các giá trị có thể có của y thì khá khó tính được một giá trị của x sao cho y = f(x).

Một ví dụ về hàm một chiều là phép nhân hai số lớn: N = P*Q. Bản thân phép nhân như vậy là một phép toán đơn giản. Tuy nhiên, hàm nghịch đảo (phân tích N thành hai thừa số lớn), được gọi là nhân tử hóa, theo ước tính thời hiện đại, là một bài toán khá phức tạp. Ví dụ: phân tích nhân tử N với kích thước 664 bit tại P ? Q sẽ yêu cầu khoảng 1023 thao tác và để tính nghịch đảo x cho số mũ mô đun y = ax mod p với a, p và y đã biết (có cùng kích thước a và p), bạn cần thực hiện khoảng 1026 thao tác. Ví dụ cuối cùng được đưa ra có tên là Bài toán logarit rời rạc (DLP) và loại hàm 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 lớp hàm quan trọng khác được sử dụng trong mã hóa bất đối xứng là hàm cửa sau một chiều. Định nghĩa của họ nói rằng một hàm là một chiều với một cửa sau nếu nó là một chiều và có thể tính toán một cách hiệu quả hàm nghịch đảo x = f-1(y), tức là nếu "cửa sau" (một số bí mật nào đó, được áp dụng cho mã hóa bất đối xứng) thuật toán - giá trị của khóa bí mật).

Các chức năng cửa sau một chiều được sử dụng trong thuật toán mã hóa bất đối xứng RSA được sử dụng rộng rãi.

Thuật toán RSA

Được phát triển vào năm 1978 bởi ba tác giả (Rivest, Shamir, Adleman), nó có tên từ những chữ cái đầu tiên trong họ của các nhà phát triển. Độ tin cậy của thuật toán dựa trên độ khó của việc phân tích các số lớn và tính logarit rời rạc. Tham số chính của thuật toán RSA là mô-đun hệ thống N, được sử dụng để thực hiện tất cả các phép tính trong hệ thống và N = P*Q (P và Q là các số lớn nguyên tố ngẫu nhiên bí mật, thường có cùng thứ nguyên).

Khóa bí mật k2 được chọn ngẫu nhiên và phải đáp ứng các điều kiện sau:

1

trong đó GCD là ước số chung lớn nhất, tức là k1 phải nguyên tố cùng với giá trị của hàm Euler F(N), giá trị sau bằng số số nguyên dương trong khoảng từ 1 đến N cùng nguyên tố đến N và được tính như sau F(N) = (P - 1)*(Q - 1).

Khóa công khai k1 được tính từ mối quan hệ (k2*k1) = 1 mod F(N) và vì mục đích này, thuật toán Euclide tổng quát (thuật toán tính ước số chung lớn nhất) được sử dụng. Việc mã hóa khối dữ liệu M bằng thuật toán RSA được thực hiện như sau: C=M [đến lũy thừa k1] mod N. Lưu ý rằng vì trong hệ thống mật mã thực sử dụng RSA, số 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 lũy thừa k1] không có thật. Để có được nó, người ta sử dụng sự kết hợp của bình phương lặp lại của M và nhân các kết quả.

Đảo ngược chức năng này cho kích thước lớn là không khả thi; nói cách khác, không thể tìm được M với C, N và k1 đã biết. Tuy nhiên, với khóa bí mật k2, sử dụng các phép biến đổi đơn giản, người ta có thể tính được M = Ck2 mod N. Rõ ràng, ngoài chính khóa bí mật, cần phải đảm bảo tính bí mật của các tham số P và Q. Nếu kẻ tấn công lấy được các giá trị của chúng , anh ta sẽ có thể tính được khóa bí mật 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à phải chuyển khóa “từ tay này sang tay khác”. Hạn chế này rất nghiêm trọng vì nó khiến không thể sử dụng mã hóa đối xứng trong các hệ thống có số lượng người tham gia không giới hạn. Tuy nhiên, mặt khác, mã hóa đối xứng có một số ưu điểm có thể thấy rõ so với những nhược điểm nghiêm trọng của mã hóa bất đối xứng.

Đầu tiên trong số đó là tốc độ hoạt động mã hóa và giải mã thấp do thực hiện các hoạt động sử dụng nhiều tài nguyên. Một nhược điểm “lý thuyết” khác là sức mạnh mật mã của thuật toán mã hóa bất đối xứng chưa được chứng minh về mặt toán học. Điều này chủ yếu là do vấn đề logarit rời rạc - người ta vẫn chưa chứng minh được rằng giải pháp của nó trong thời gian chấp nhận được là không thể. Những khó khăn không cần thiết cũng được tạo ra do nhu cầu bảo vệ khóa chung khỏi bị thay thế - bằng cách thay thế khóa chung của người dùng hợp pháp, kẻ tấn công sẽ có thể mã hóa một tin nhắn quan trọng bằng khóa chung của mình và sau đó dễ dàng giải mã nó bằng khóa riêng của mình.

Tuy nhiên, những thiếu sót này không ngăn cả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 khóa công khai, cũng như kết hợp các thuật toán mã hóa đối xứng và bất đối xứng. Nhưng đây là một chủ đề cho một bài viết riêng biệt.

Nguồn thông tin bổ sung

Đối với những độc giả quan tâm nghiêm túc đến mã hóa, tác giả khuyên nên mở rộng tầm nhìn của họ với sự trợ giúp của những cuốn sách sau.

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

Bạn có thể tìm thấy mô tả đầy đủ về các thuật toán mã hóa 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 chuyển đổi mật mã. - M.: Tiêu chuẩn Nhà nước Liên Xô, 1989.
  2. Thuật toán AES: http://www.nist.gov/ae.
  3. Thuật toán RSA: http://www.rsasecurity.com/rsalabs/pkcs/pkcs-1.

Trong một số nguồn, steganography, mã hóa và nén thông tin có liên quan đến các nhánh kiến ​​thức liền kề với mật mã, nhưng không nằm trong đó.

Các phương pháp mã hóa truyền thống (cổ điển) bao gồm mật mã hoán vị, mật mã thay thế đơn giản và phức tạp, cũng như một số sửa đổi và kết hợp của chúng. Sự kết hợp của mật mã hoán vị và mật mã thay thế tạo thành toàn bộ các loại mật mã đối xứng được sử dụng trong thực tế.

Mật mã hoán vị. Trong mã hóa hoán vị, các ký tự của văn bản mã hóa được sắp xếp lại theo một quy luật nhất định trong một khối văn bản này. Mật mã hoán vị là loại mật mã đơn giản nhất và có lẽ là lâu đời nhất.

Các bảng mã hóa. Các khóa sau được sử dụng trong bảng mã hóa: kích thước của bảng, một từ hoặc cụm từ chỉ định hoán vị và các đặc điểm của cấu trúc bảng.

Một trong những mật mã hoán vị bảng nguyên thủy nhất là hoán vị đơn giản, trong đó khóa là kích thước của bảng. Đương nhiên, người gửi và người nhận tin nhắn phải đồng ý trước về khóa dùng chung dưới dạng kích thước bảng. Cần lưu ý rằng việc ghép các chữ cái mã hóa thành nhóm 8 chữ cái không có trong khóa mật mã và được thực hiện để thuận tiện cho việc viết văn bản vô nghĩa. Khi giải mã, các bước được thực hiện theo thứ tự ngược lại.


Một phương pháp mã hóa được gọi là hoán vị khóa đơn có khả năng chống tiết lộ cao hơn. Phương pháp này khác với phương pháp trước ở chỗ các cột trong bảng được sắp xếp lại theo từ khóa, cụm từ hoặc tập hợp số theo độ dài của hàng trong bảng.

Để cung cấp thêm quyền riêng tư, bạn có thể mã hóa lại tin nhắn đã được mã hóa. Phương pháp mã hóa này được gọi là hoán vị kép. Trong trường hợp hoán vị kép của cột và hàng, các hoán vị của bảng được xác định riêng cho cột và cho hàng. Đầu tiên, văn bản của tin nhắn được viết vào bảng theo cột, sau đó các cột được sắp xếp lại từng cột một, sau đó là các hàng.

Số lượng tùy chọn hoán vị kép tăng nhanh khi kích thước bảng tăng lên: đối với bảng 3x3 - 36 tùy chọn, đối với bảng 4x4 - 576 tùy chọn, đối với bảng 5x5 - 14400 tùy chọn. Tuy nhiên, hoán vị kép không có độ an toàn cao và tương đối dễ bị “bẻ khóa” đối với mọi kích thước của bảng mã hóa.

Mật mã thay thế đơn giản. Khi mã hóa bằng thay thế (substitution), các ký tự của văn bản mã hóa được thay thế bằng các ký tự cùng bảng chữ cái hoặc bảng chữ cái khác với quy tắc thay thế được thiết lập sẵn. Trong mật mã thay thế đơn giản, mỗi ký tự của văn bản gốc được thay thế bằng các ký tự của cùng một bảng chữ cái bằng cách sử dụng cùng một quy tắc trong toàn bộ văn bản. Mật mã thay thế đơn giản thường được gọi là mật mã thay thế dùng một bảng chữ cái.

Hệ thống mật mã Caesar . Mật mã Caesar là trường hợp đặc biệt của mật mã thay thế đơn giản (thay thế một bảng chữ cái). Mật mã này được đặt tên theo tên của hoàng đế La Mã Gaius Julius Caesar, người đã sử dụng mật mã này trong thư từ.

Khi mã hóa văn bản nguồn, mỗi chữ cái được thay thế bằng một chữ cái khác cùng bảng chữ cái theo quy tắc sau. Chữ cái thay thế được xác định bằng cách dịch chuyển bảng chữ cái tôi từ bức thư gốc đến k bức thư Khi đạt đến phần cuối của bảng chữ cái, quá trình chuyển đổi theo chu kỳ được thực hiện về phần đầu của bảng chữ cái. Caesar đã sử dụng bảng chữ cái Latinh tôi= 26 và mật mã thay thế offset k= 3. Mật mã thay thế như vậy có thể được xác định bằng bảng thay thế chứa các cặp chữ cái trong bản rõ và bản mã tương ứng. Tập hợp các khả năng thay thế có thể cho k= 3 được thể hiện trong Bảng 6.1.

Bảng 6.1 - Sự thay thế bằng một chữ cái (k = 3, m = 26)

Hệ thống mã hóa Caesar về cơ bản tạo thành một họ các thay thế bằng một chữ cái cho các giá trị khóa có thể lựa chọn k và 0 £ k < tôi. Ưu điểm của hệ thống mã hóa Caesar là dễ dàng mã hóa và giải mã.

Những nhược điểm của hệ thống của Caesar bao gồm:

Việc thay thế được thực hiện theo hệ thống Caesar không che giấu tần suất xuất hiện của các chữ cái khác nhau trong bản rõ gốc;

Thứ tự bảng chữ cái trong chuỗi các chữ cái thay thế được duy trì; khi giá trị k thay đổi thì chỉ có các vị trí ban đầu của dãy đó thay đổi;

Số lượng khóa có thể k nhỏ;

Mật mã Caesar có thể dễ dàng bị phá bằng cách phân tích tần suất xuất hiện của các chữ cái trong văn bản mật mã.

Một cuộc tấn công phân tích mật mã chống lại hệ thống thay thế bảng chữ cái đơn bắt đầu bằng việc đếm tần số của các ký hiệu: số lần mỗi chữ cái xuất hiện trong văn bản mã hóa được xác định. Sau đó, sự phân bố tần số của các chữ cái trong bản mã sẽ được so sánh với sự phân bố tần số của các chữ cái trong bảng chữ cái của tin nhắn gốc. Chữ cái có tần suất xuất hiện cao nhất trong bản mã được thay thế bằng chữ cái có tần suất xuất hiện cao nhất trong bảng chữ cái, v.v. Xác suất phá thành công hệ thống mã hóa tăng lên khi độ dài của bản mã tăng lên. Đồng thời, những ý tưởng được đưa vào hệ thống mã hóa của Caesar hóa ra lại rất hiệu quả, bằng chứng là chúng có nhiều sửa đổi.

Hệ thống thay thế affine của Caesar. Trong phép biến đổi này, chữ cái tương ứng với số t, được thay thế bằng chữ cái tương ứng với giá trị số ( Tại + b) modulo tôi. Phép biến đổi như vậy là ánh xạ một-một trên bảng chữ cái khi và chỉ khi gcd ( Một, tôi) - ước chung lớn nhất của các số a và m bằng một, tức là nếu a và m là các số nguyên tố cùng nhau.

Ưu điểm của hệ thống affine là quản lý khóa thuận tiện: các khóa mã hóa và giải mã được biểu diễn dưới dạng thu gọn dưới dạng một cặp số ( Một, b). Nhược điểm của hệ thống affine tương tự như hệ thống mã hóa Caesar. Trong thực tế, hệ thống affine đã được sử dụng từ nhiều thế kỷ trước.

Mật mã thay thế phức tạp . Mật mã thay thế phức tạp được gọi là đa chữ cái vì một mật mã thay thế đơn giản khác được sử dụng để mã hóa từng ký tự của tin nhắn gốc. Thay thế nhiều bảng chữ cái một cách tuần tự và theo chu kỳ thay đổi các bảng chữ cái được sử dụng. Tại r-ký hiệu thay thế theo bảng chữ cái x Số 0 của tin nhắn gốc được thay thế bằng ký hiệu y 0 từ bảng chữ cái B 0 , ký tự x 1 - biểu tượng y 1 từ bảng chữ cái B 1, v.v.; biểu tượng xr-1 được thay thế bằng ký hiệu năm năm-1 từ bảng chữ cái B r-1 , ký tự xrđược thay thế bằng ký hiệu năm năm một lần nữa từ bảng chữ cái B 0, v.v.

Hiệu quả của việc sử dụng thay thế nhiều bảng chữ cái là nó cung cấp khả năng che dấu các số liệu thống kê tự nhiên của ngôn ngữ nguồn, vì một ký tự cụ thể là từ bảng chữ cái nguồn. MỘT có thể được chuyển đổi thành một số ký tự bảng chữ cái mật mã khác nhau B j. Mức độ bảo vệ được cung cấp về mặt lý thuyết tỷ lệ thuận với độ dài của thời gian r theo thứ tự bảng chữ cái được sử dụng B j.

Hệ thống Mã hóa Viginère . Hệ thống Viginère tương tự như hệ thống mã hóa Caesar trong đó khóa thay thế thay đổi từ chữ cái này sang chữ cái khác. Mật mã thay thế đa bảng chữ cái này có thể được mô tả bằng bảng mã hóa gọi là bảng Viginère (hình vuông). Bảng Viginère được sử dụng cho cả việc mã hóa và giải mã.

Nó có hai đầu vào:

Dòng trên cùng của các ký tự được gạch chân dùng để đọc chữ cái tiếp theo của bản rõ gốc;

Cột ngoài cùng bên trái của khóa.

Chuỗi khóa thường được bắt nguồn từ các giá trị số của các chữ cái trong từ khóa. Khi mã hóa tin nhắn gốc, nó được viết thành một dòng và một từ khóa (hoặc cụm từ) được viết bên dưới nó.

Nếu khóa ngắn hơn tin nhắn, nó sẽ được lặp lại theo chu kỳ. Trong quá trình mã hóa, chữ cái tiếp theo của văn bản nguồn được tìm thấy ở hàng trên cùng của bảng và giá trị khóa tiếp theo được tìm thấy ở cột bên trái. Chữ cái mã hóa tiếp theo nằm ở giao điểm của cột được xác định bởi chữ cái được mã hóa và hàng được xác định bởi giá trị số của khóa.

Mật mã một lần. Hầu hết tất cả các mật mã được sử dụng trong thực tế đều được đặc trưng là an toàn có điều kiện, vì về nguyên tắc, chúng có thể bị phá vỡ với khả năng tính toán không giới hạn. Những mật mã mạnh tuyệt đối không thể bị phá vỡ ngay cả với sức mạnh tính toán vô hạn. Mật mã duy nhất được sử dụng trong thực tế là hệ thống mã hóa một lần. Một tính năng đặc trưng của hệ thống mã hóa một lần là việc sử dụng chuỗi khóa một lần.

Mật mã này tuyệt đối an toàn nếu bộ khóa K tôi thực sự ngẫu nhiên và không thể đoán trước. Nếu một nhà giải mã cố gắng sử dụng tất cả các bộ khóa có thể có cho một văn bản mã hóa nhất định và khôi phục tất cả các phiên bản có thể có của văn bản gốc thì tất cả chúng đều có khả năng xảy ra như nhau. Không có cách nào để chọn văn bản gốc đã thực sự được gửi. Về mặt lý thuyết, người ta đã chứng minh rằng hệ thống một lần là hệ thống không thể giải mã được vì bản mã của chúng không chứa đủ thông tin để khôi phục bản rõ.

Khả năng sử dụng hệ thống dùng một lần bị hạn chế bởi các khía cạnh thực tế thuần túy. Một điểm quan trọng là yêu cầu sử dụng một lần chuỗi khóa ngẫu nhiên. Một chuỗi khóa có độ dài không nhỏ hơn độ dài của tin nhắn phải được truyền trước đến người nhận tin nhắn hoặc truyền riêng qua một kênh bí mật nào đó. Yêu cầu như vậy trên thực tế khó thực hiện đối với các hệ thống xử lý thông tin hiện đại, nơi cần mã hóa hàng triệu ký tự, tuy nhiên, trong những trường hợp chính đáng, xây dựng hệ thống bằng mật mã một lần là phù hợp nhất.

Trong lịch sử, các bộ mã hóa có thang đo bên ngoài và bên trong đã được phân biệt. Bộ mã hóa gamma bên ngoài sử dụng chuỗi ngẫu nhiên một lần làm khóa, độ dài của chuỗi này bằng với độ dài của tin nhắn được mã hóa. Trong các bộ mã hóa có gamma bên trong, một chuỗi ngẫu nhiên có thể tái sử dụng có độ dài nhỏ hơn nhiều so với độ dài của văn bản được mã hóa được sử dụng làm khóa, trên cơ sở đó gamma của mật mã được hình thành. Các bộ mã hóa có phạm vi bên trong, tức là có đặc tính kháng thực tế, hiện đang chiếm ưu thế trong việc xây dựng các hệ thống truyền thông được mã hóa. Ưu điểm chính của chúng là dễ dàng quản lý khóa, tức là chuẩn bị, phân phối, vận chuyển và tiêu hủy. Ưu điểm này giúp có thể tạo ra các hệ thống liên lạc được mã hóa ở hầu hết mọi quy mô dựa trên bộ mã hóa với phạm vi nội bộ mà không giới hạn địa lý và số lượng người đăng ký.

Sự phát triển hiện đại của công nghệ thông tin cho phép tập trung một lượng thông tin đáng kể vào các phương tiện vật lý nhỏ, điều này cũng quyết định khả năng ứng dụng thực tế của phương pháp này.

Vấn đề xây dựng một hệ thống liên lạc được mã hóa dựa trên bộ mã hóa có gamma bên ngoài có thể có một số cách tiếp cận giải pháp. Ví dụ: dựa trên giá trị giới hạn đã thiết lập của khối lượng tài liệu chính, số lượng người đăng ký hệ thống tối ưu và tải cho phép được xác định. Mặt khác, có thể dựa trên số lượng người đăng ký được yêu cầu và tải trọng của họ để tính toán dung lượng cần thiết của tài liệu chính.

Phương pháp mã hóa cờ bạc . Gamma được hiểu là quá trình áp dụng mật mã vào dữ liệu mở theo một quy luật gamma nhất định. Mật mã gamma là một chuỗi giả ngẫu nhiên được tạo theo thuật toán nhất định để mã hóa dữ liệu mở và giải mã dữ liệu nhận được.

Quá trình mã hóa bao gồm việc tạo ra gamma mật mã và áp dụng gamma thu được vào bản rõ gốc theo cách có thể đảo ngược, ví dụ, sử dụng phép cộng modulo-2.

Trước khi mã hóa, bản rõ được chia thành các khối có độ dài bằng nhau, thường là 64 bit. Gamma mật mã được tạo ra dưới dạng một chuỗi có độ dài tương tự. Quá trình giải mã bao gồm việc tạo lại gamma mật mã và áp dụng gamma này cho dữ liệu nhận được.

Bản mã thu được bằng phương pháp này khá khó để bẻ khóa vì khóa hiện có thể thay đổi. Về cơ bản, gamma mật mã phải thay đổi ngẫu nhiên đối với mỗi khối được mã hóa. Nếu chu kỳ gamma vượt quá độ dài của toàn bộ văn bản được mã hóa và kẻ tấn công không biết bất kỳ phần nào của văn bản nguồn thì mật mã đó chỉ có thể bị bẻ khóa bằng cách tìm kiếm trực tiếp qua tất cả các biến thể của khóa. Trong trường hợp này, độ mạnh mật mã của mật mã được xác định bởi độ dài của khóa.

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

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

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

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

Các loại mã hóa

Mã hóa đối xứng

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

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

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

Những hạn chế

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

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

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

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

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

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

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

Những hạn chế

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

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

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

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

Băm

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

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

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

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

Những hạn chế

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

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

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

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

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

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

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

Vào ngày này, Cơ quan Mật mã Nga kỷ niệm ngày lễ chuyên nghiệp của mình.

"Mật mã học" từ phương tiện Hy Lạp cổ đại “văn bản bí mật”.

Trước đây bạn đã giấu lời như thế nào?

Một phương pháp đặc biệt để truyền một bức thư bí mật đã tồn tại dưới triều đại của các pharaoh Ai Cập:

họ đã chọn một nô lệ. Họ cạo trọc đầu ông và sơn thông điệp lên đó bằng sơn thực vật không thấm nước. Khi tóc mọc trở lại, nó sẽ được gửi đến người nhận.

mật mã- đây là một loại hệ thống chuyển đổi văn bản có (khóa) bí mật để đảm bảo bí mật của thông tin được truyền đi.

AiF.ru đã lựa chọn các sự thật thú vị từ lịch sử mã hóa.

Mọi văn bản bí mật đều có hệ thống

1. Chữ viết tắt- một văn bản có ý nghĩa (từ, cụm từ hoặc câu), được tạo thành từ các chữ cái đầu của mỗi dòng bài thơ.

Ví dụ, đây là một bài thơ đố với câu trả lời ở những chữ cái đầu tiên:

D Tôi được biết đến một cách lỏng lẻo bằng tên của mình;
R Kẻ lừa đảo và người vô tội thề với anh ta,
bạn Tôi còn hơn cả một kỹ thuật viên trong thảm họa,
Cuộc sống ngọt ngào hơn với tôi và trong những điều tốt đẹp nhất.
B Tôi chỉ có thể phục vụ sự hòa hợp của những tâm hồn trong sáng,
MỘT giữa những kẻ phản diện - tôi không được tạo ra.
Yury Neledinsky-Meletsky
Sergei Yesenin, Anna Akhmatova, Valentin Zagoryansky thường sử dụng nghệ thuật châm biếm.

2. Tiểu tiện- một loại văn bản được mã hóa được sử dụng trong văn học viết tay cổ của Nga. Nó có thể đơn giản và khôn ngoan. Một cách đơn giản được gọi là cách viết vô nghĩa, nó bao gồm những bước sau: xếp các chữ cái phụ âm thành hai hàng theo thứ tự:

họ sử dụng chữ in hoa thay vì chữ thường và ngược lại, các nguyên âm không thay đổi; Ví dụ, tokepot = mèo con và như thế.

bệnh tiểu đường khôn ngoan bao gồm các quy tắc thay thế phức tạp hơn.

3. "ROT1"- mật mã dành cho trẻ em à?

Bạn có thể đã sử dụng nó khi còn nhỏ. Chìa khóa của mật mã rất đơn giản: mỗi chữ cái trong bảng chữ cái được thay thế bằng chữ cái tiếp theo.

A được thay thế bằng B, B được thay thế bằng C, v.v. "ROT1" theo nghĩa đen có nghĩa là "xoay chuyển tiếp 1 chữ cái trong bảng chữ cái". cụm từ "Tôi yêu borscht" sẽ biến thành một cụm từ bí mật “Ôi trời ơi”. Mật mã này nhằm mục đích thú vị, dễ hiểu và giải mã ngay cả khi khóa được sử dụng ngược lại.

4. Từ việc sắp xếp lại các điều khoản...

Trong Thế chiến thứ nhất, các tin nhắn bí mật được gửi bằng cách sử dụng cái gọi là phông chữ hoán vị. Trong đó, các chữ cái được sắp xếp lại bằng cách sử dụng một số quy tắc hoặc phím nhất định.

Ví dụ, các từ có thể được viết ngược lại để cụm từ “Mẹ rửa khung” biến thành một cụm từ "amam alym umar". Một phím hoán vị khác là sắp xếp lại từng cặp chữ cái sao cho thông báo trước đó trở thành “tôi là y ar ừm”.

Có vẻ như các quy tắc hoán vị phức tạp có thể làm cho những mật mã này trở nên rất khó khăn. Tuy nhiên, nhiều tin nhắn được mã hóa có thể được giải mã bằng cách sử dụng phép đảo chữ hoặc thuật toán máy tính hiện đại.

5. Mật mã trượt của Caesar

Nó bao gồm 33 mật mã khác nhau, một mật mã cho mỗi chữ cái trong bảng chữ cái (số lượng mật mã thay đổi tùy theo bảng chữ cái của ngôn ngữ được sử dụng). Người đó phải biết nên sử dụng mật mã Julius Caesar nào để giải mã thông điệp. Ví dụ: nếu mật mã E được sử dụng thì A trở thành E, B trở thành F, C trở thành Z, v.v. theo thứ tự bảng chữ cái. Nếu sử dụng mật mã Y thì A trở thành Y, B trở thành Z, B trở thành A, v.v. Thuật toán này là cơ sở cho nhiều mật mã phức tạp hơn, nhưng bản thân nó không cung cấp sự bảo vệ đáng tin cậy cho tính bí mật của tin nhắn, vì việc kiểm tra 33 khóa mật mã khác nhau sẽ mất một thời gian tương đối ngắn.

Không ai có thể. Thử nó

Các tin nhắn công khai được mã hóa trêu chọc chúng ta bằng âm mưu của chúng. Một số trong số đó vẫn chưa được giải quyết. Họ đây rồi:

tiền điện tử. Một tác phẩm điêu khắc do nghệ sĩ Jim Sanborn tạo ra, đặt trước trụ sở Cơ quan Tình báo Trung ương ở Langley, Virginia. Tác phẩm điêu khắc chứa bốn mật mã, mật mã thứ tư vẫn chưa được giải mã. Năm 2010, người ta tiết lộ rằng các ký tự 64-69 NYPVTT trong Phần 4 có nghĩa là từ BERLIN.

Bây giờ bạn đã đọc bài viết, có thể bạn sẽ giải được ba mật mã đơn giản.

Để lại lựa chọn của bạn trong phần bình luận cho bài viết này. Đáp án sẽ có vào 13h ngày 13/5/2014.

Trả lời:

1) Chiếc đĩa

2) Chú voi con mệt mỏi với mọi thứ

3) Thời tiết tốt

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

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

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

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

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

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

Định nghĩa về an ninh mạng và hướng dẫn bắt đầu nhanh

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

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

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

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

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

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

Mã hóa đối xứng

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

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

hồng ngọc

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

yêu cầu "openssl"

yêu cầu "cọc"

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

mật mã mã hóa

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

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

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

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

ĐÚNG VẬY

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

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

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

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

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

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

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

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

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

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

hồng ngọc

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

yêu cầu "openssl"

yêu cầu "cọc"

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

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

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

ĐÚNG VẬY

Nó sẽ bật ra:

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

Băm thông tin

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

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