Hệ thống mật mã đối xứng. Bảo vệ thông tin mật mã của Alexander Prokhorov

Bảo vệ thông tin mật mã

Alexandra Prokhorova

Đoạn trích từ cuốn sách “Internet: How it Works” của Alexander Prokhorov, thông tin về cuốn sách có thể tìm thấy tại Địa chỉ .

Hãy xem xét một ví dụ cụ thể. Để giám đốc công ty A gửi một tài liệu quan trọng cho giám đốc công ty B qua e-mail (Hình 1). Những vấn đề phát sinh về mặt an ninh truyền thông?

Khi nhận được thư, giám đốc công ty B đặt ra những câu hỏi như sau. Liệu tài liệu này có thực sự được gửi bởi Giám đốc A hay không (nhận dạng người gửi). Rốt cuộc, có khả năng bức thư đến từ một người khác tự xưng là giám đốc công ty A. Tài liệu có bị chặn và thay đổi trên đường gửi (xác thực tin nhắn). Liệu tài liệu có được đọc bởi ai khác ngoài người nhận hay không (bí mật)

Có thể dễ dàng đọc email và các tệp đính kèm tại các điểm trung gian trong hành trình của nó trên Internet, chẳng hạn như trên máy chủ của nhà cung cấp

Được biết, việc duy trì bí mật (bảo mật tin nhắn) có thể đạt được bằng cách mã hóa dữ liệu. Hóa ra cả ba vấn đề này đều có thể được giải quyết bằng cách sử dụng mã hóa và mật mã sẽ giải quyết những vấn đề này.

Mật mã học (từ tiếng Hy Lạp "cryptos" - bí mật) là khoa học và công nghệ mã hóa thông tin quan trọng để bảo vệ nó khỏi những thay đổi và truy cập trái phép. Mật mã không chỉ phục vụ việc chuyển đổi văn bản thành dạng mã hóa không thể đọc được mà còn cho phép bạn giải quyết các vấn đề về xác thực và nhận dạng người dùng khi họ làm việc trên Internet.

Mật mã học là cơ sở của truyền thông an toàn. Trong bộ lễ phục. 1 chúng tôi đã đưa ra một ví dụ về sự tương ứng giữa hai phóng viên. Cần lưu ý rằng trên Internet, chúng ta không chỉ giao tiếp với mọi người mà còn với các dịch vụ khác nhau. Ví dụ: khi chúng tôi tải xuống một chương trình từ máy chủ, điều quan trọng là chúng tôi phải biết rằng máy chủ này thuộc về công ty phát triển chứ không phải thuộc về công ty vi phạm bản quyền phân phối trái phép phần mềm vi phạm bản quyền.

Mã hóa bằng khóa

Quá trình mã hóa bằng khóa bao gồm việc kết hợp bản rõ với một chuỗi số (khóa) theo quy tắc của một số thuật toán (thuật toán mật mã) để thu được thông điệp được mã hóa.

Giả sử rằng chúng ta muốn mã hóa văn bản gốc "Xin chào Vasya" bằng thuật toán đơn giản nhất - thay thế các chữ cái bằng số của chúng trong bảng chữ cái. Kết quả là chúng ta sẽ nhận được một văn bản được mã hóa có dạng: 17 18 10 3 6 20 3 1 19 33. Rõ ràng, nếu người ngoài biết được thuật toán mã hóa thì sau này không thể sử dụng được.

Hạn chế này có thể tránh được bằng cách sử dụng mã hóa khóa. Để giải thích bản chất của quá trình mã hóa bằng khóa, chúng tôi đưa ra một ví dụ đơn giản (Hình 3).

Chúng ta hãy viết ra các chữ cái của văn bản và viết số của chúng vào bảng chữ cái bên dưới chúng. Trên dòng thứ ba, chúng ta viết các chữ cái của phím, lặp lại từ này trong toàn bộ dòng. Dưới các chữ cái của khóa, chúng ta sẽ viết số của chúng theo bảng chữ cái, và ở dòng thứ tư, chúng ta sẽ viết số tiền, đây sẽ là tin nhắn được mã hóa: 20 19 29 36, v.v.

Biết được khóa và thuật toán, có thể dễ dàng giải mã được thông điệp: 20 - 3 = 17, và chữ cái thứ mười bảy trong bảng chữ cái là “P”, v.v. Ngay cả khi kẻ tấn công biết thuật toán nhưng không biết khóa thì cũng không thể đọc được tin nhắn nếu không có quy trình chọn khóa dài dòng. Như vậy, một thuật toán có thể sử dụng nhiều khóa cho các kênh liên lạc khác nhau, gán một khóa riêng cho mỗi đối tác.

Rõ ràng, khóa mật mã càng dài thì càng cần phải thử nhiều cách kết hợp khác nhau khi giải mã và tương ứng là việc giải mã tin nhắn càng khó khăn hơn. Mật mã có khóa dài hơn 128 bit được gọi là mật mã mạnh.

Nguyên tắc mã hóa bằng khóa bí mật

Mã hóa khóa đối xứng

Hãy xem xét một ví dụ cụ thể: để phóng viên A và B viết thư cho nhau (Hình 4). Mỗi cái có khóa bí mật riêng (một mã bí mật cụ thể) có thể được sử dụng để mã hóa dữ liệu trước khi gửi lên Internet. Để mô tả rõ hơn sơ đồ mã hóa, chúng tôi sẽ sử dụng chữ tượng hình (Hình 2), nghĩa là mô tả khóa ở dạng khóa thông thường và tin nhắn được mã hóa ở dạng tài liệu được niêm phong trong một phong bì. Khi đó quá trình mã hóa và giải mã có thể được biểu diễn dưới dạng Hình 2. 3.

Sơ đồ mã hóa bằng khóa bí mật (đối xứng)

Người dùng A mã hóa tin nhắn bằng khóa bí mật của mình, gửi tin nhắn qua Internet và người nhận B (sử dụng cùng khóa bí mật) sẽ giải mã tin nhắn. Nếu nhìn vào hình vẽ dễ dàng nhận thấy mạch điện có tính chất đối xứng. Người dùng bên trái và bên phải sử dụng cùng một khóa (đối xứng) nên kiểu mã hóa này được gọi là mã hóa khóa đối xứng.

Vấn đề mã hóa khóa bí mật có những nhược điểm nhất định. Trước hết, mã hóa đối xứng không giải quyết được vấn đề xác thực. Ví dụ: A có thể viết thư cho bên thứ ba C nào đó và cho rằng B đã làm việc đó.

Khóa đối xứng phải được cài đặt trên máy tính của người gửi và người nhận trước khi trao đổi tin nhắn bí mật. Tức là bạn cần biết trước hai máy tính nào sẽ “nói chuyện” với nhau. Rõ ràng, mã hóa để liên lạc an toàn trên Internet có ý nghĩa khi các phóng viên không cần gặp mặt trực tiếp. Sự cố xảy ra khi truyền khóa riêng. Thật sự. Nếu A đưa cho B khóa bí mật ở dạng không được mã hóa thì nó có thể bị chặn. Nếu khóa được gửi ở dạng mã hóa thì B sẽ không thể nhận được. Để trao đổi thư từ với nhiều người tương ứng, bạn cần có một chìa khóa cho mỗi người tương ứng, điều này thật bất tiện. Để giải quyết các vấn đề trên, sơ đồ mã hóa bất đối xứng (mã hóa khóa công khai) đã được đề xuất.

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

Mã hóa khóa công khai dựa trên việc sử dụng cặp khóa: khóa riêng (riêng tư) và khóa chung (công khai).

Tin nhắn có thể được mã hóa bằng cả khóa riêng và khóa chung và chỉ được giải mã bằng khóa thứ hai của cặp. Nghĩa là, 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 và ngược lại. Khóa riêng chỉ được chủ sở hữu biết và không thể chia sẻ với bất kỳ ai, trong khi khóa chung được phân phối công khai cho tất cả các đối tác.

Một cặp khóa - riêng tư và công khai - có thể được sử dụng cho cả hai vấn đề xác thực (Hình 4) và bí mật (bảo mật) (Hình 6).

Theo sơ đồ đầu tiên (Hình 4): người dùng A gửi trước khóa chung cho người tương ứng B và C, sau đó gửi cho họ một tin nhắn được mã hóa bằng khóa riêng của anh ta.

Tin nhắn chỉ có thể được gửi bởi A (chỉ anh ta mới có khóa riêng), tức là vấn đề xác thực được đảm bảo. Nhưng ví dụ B không chắc chắn rằng bức thư đó cũng không được C đọc. Như vậy, vấn đề bảo mật không được đảm bảo.

Sơ đồ đảm bảo bí mật (bảo mật) được thể hiện trong hình. 6.

Tin nhắn chỉ có thể được đọc bởi A, vì chỉ anh ta mới có khóa riêng tiết lộ tin nhắn, tức là vấn đề bảo mật đã được giải quyết. Nhưng A không thể chắc chắn rằng tin nhắn không phải do B giả vờ là C gửi. Như vậy, vấn đề xác thực không được giải quyết.

Để đảm bảo việc trao đổi tin nhắn bí mật trong thư từ giữa hai người, cần phải có hai cặp khóa (Hình 5).

Để đảm bảo việc trao đổi tin nhắn bí mật trong thư từ giữa hai người cần phải có hai cặp khóa.

Khi mã hóa bằng cặp khóa, bạn không cần gửi khóa chung của mình cho tất cả các đối tác. Sẽ thuận tiện hơn nhiều khi đăng khóa này lên Internet trên một số máy chủ có quyền truy cập mở. Sau đó, mọi người có thể tải xuống khóa này và gửi cho bạn một tin nhắn bí mật mà không ai ngoại trừ bạn sẽ đọc được.

Hệ thống mật mã đối xứng được hiểu là hệ thống trong đó cùng một khóa được sử dụng để mã hóa và giải mã thông điệp (Hình 9.1).

Toàn bộ sự đa dạng của các hệ thống đối xứng đều dựa trên các lớp cơ bản sau:

Thay thế đơn và đa chữ cái;

Sắp xếp lại;

Khối mật mã;

Kẹo cao su.

Thay người

Trong thay thế trực tiếp, mỗi ký tự trong văn bản nguồn được thay thế bằng một hoặc nhiều ký tự. Một trong những lớp con quan trọng của sự thay thế trực tiếp là sự thay thế bằng một bảng chữ cái, trong đó sự tương ứng một-một được thiết lập giữa ký tự e i của bảng chữ cái gốc và ký tự tương ứng cj của bản mã. Tất cả các phương pháp thay thế bằng một bảng chữ cái có thể được biểu diễn dưới dạng biến đổi số của các chữ cái trong văn bản nguồn, được coi là số, sử dụng công thức sau:

c ≡ (a*e +s) mod K , (5.1)

trong đó a là hệ số thập phân; s - hệ số dịch chuyển; e – mã chữ cái văn bản nguồn; c – mã chữ cái mã hóa; K - độ dài bảng chữ cái; mod là phép tính phần dư của phép chia biểu thức trong ngoặc cho mô đun K.

Ví dụ. Mật mã Caesar

Hãy xem xét việc mã hóa trong một bảng chữ cái gồm 26 chữ cái Latinh và một ký tự khoảng trắng (khoảng trắng sẽ được biểu thị bằng dấu #). Ta gán mã 0 cho dấu #, mã 1 cho chữ A, mã 2 cho chữ B, mã 26 cho chữ Z.

Cho các tham số sau: a = 1 s = 2 K = 27

Công thức mã hóa sẽ có dạng

c ≡ (e + 2) mod 27 (5.2)

Bảng chữ cái đầu vào:

# A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Bảng chữ cái đầu ra

B C D E F G H I J K L M N O P Q R S T U V W X Y Z # A

(Các chữ cái được dịch chuyển theo hai vị trí: A-C B-D, v.v.)

Khi đó tin nhắn gốc ở dạng được mã hóa sẽ trông như thế này:

Để giải mã (trong trường hợp a=1), công thức sau được sử dụng

e ≡ (K+ c - s) mod K (5.3)

Sự thay thế đa chữ cái đơn giản thay đổi tuần tự và theo chu kỳ các bảng chữ cái được sử dụng (trong trường hợp trước, một bảng chữ cái được sử dụng để mã hóa). Với sự thay thế chữ cái m, ký hiệu a 1 từ tin nhắn ban đầu được thay thế bằng ký hiệu từ bảng chữ cái B 1, ký hiệu a 2 - bằng ký hiệu từ bảng chữ cái B 2, ... ký hiệu a m - bằng ký hiệu từ bảng chữ cái B m, ký hiệu a m +1 - với ký hiệu từ bảng chữ cái B 1, v.v. .d. 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 thống kê tần số của ngôn ngữ nguồn, do một ký tự cụ thể từ bảng chữ cái A được chuyển đổi thành một số ký tự khác nhau từ bảng chữ cái mật mã B.

Ví dụ

Tin nhắn gốc: WE#NEED#SNOW

Từ khóa: BẢO MẬTSECU

Từ AN NINH được chọn làm khóa. Từ được viết dưới tin nhắn gốc, khi đã hết chữ của phím, chúng ta bắt đầu lặp lại từ đó cho đến khi hết chữ của tin nhắn gốc. Mỗi chữ cái của khóa (chính xác hơn là mã của nó) sẽ chỉ định một sự dịch chuyển trong bảng chữ cái nguồn để thu được ký tự được mã hóa. Chúng tôi sử dụng các chữ cái Latinh và dấu # thay vì dấu cách như bảng chữ cái.

Mật mã khóa ban đầu

(W + S) mod 27 = (23 + 19) mod 27 = 15→O

(E + E) mod 27 = (5 + 5) mod 27 = 10 → J

(# + C) mod 27 = (0 + 3) mod 27 = 3 → C

Bài tập

Chúng tôi đề xuất như một bài tập để soạn thảo mã hóa đến cùng.

Sắp xếp lại

Các ký tự trong văn bản nguồn có thể được sắp xếp lại theo một quy tắc nhất định.

Ví dụ 1. Hoán vị tuyến tính

Giả sử bạn cần mã hóa văn bản sau:

TẢI#CAM#THÙNG

Hãy chia văn bản thành các nhóm có độ dài, ví dụ 4 ký tự:

GRUZ ITe# APEL BSIN Y#BO CHKAH

Chúng ta hãy đặt quy tắc hoán vị sau: “sắp xếp lại các nhóm bốn chữ cái theo thứ tự 1-2-3-4 thành thứ tự 3-1-4-2”.

Chúng ta nhận được bản mã sau:

UGRZ EI#T EALP INS BYO# ACHK

Bình luận

Nếu độ dài tin nhắn không phải là bội số của độ dài nhóm thì nhóm cuối cùng sẽ được bổ sung các ký hiệu (ví dụ: dấu cách) theo độ dài yêu cầu.

Việc ghi lại văn bản gốc và đọc văn bản mã hóa sau đó có thể được thực hiện dọc theo các đường dẫn khác nhau của một số hình hình học, ví dụ như hình vuông hoặc hình chữ nhật.

Ví dụ 2. Mạng Cardano

Lưới Cardano là một thẻ hình chữ nhật có lỗ, thường là hình vuông, khi đặt trên một tờ giấy chỉ để lại một số phần của nó. Số hàng và số cột là số chẵn. Thẻ được làm theo cách mà khi xoay nó một cách tuần tự, mỗi ô của trang tính bên dưới nó sẽ được chiếm giữ. Nếu lưới là hình vuông thì bạn có thể xoay nó liên tục quanh tâm hình vuông một góc 90°.

Mã hóa:

VAVOCHS MUNOTI MYZHROE UXOY MDOSTO YASNTV

Giải mã tin nhắn bằng cách xoay cách tử 90° theo chiều kim đồng hồ. Viết tin nhắn của bạn vào ô vuông, từng dòng một.

Chỉ riêng phương pháp thay thế và hoán vị không cung cấp sức mạnh mật mã cần thiết. Do đó, chúng được sử dụng cùng nhau, cũng như sử dụng phương pháp phụ gia. Trong mã hóa phụ gia, văn bản gốc trước tiên được mã hóa bằng phương pháp thay thế, chuyển đổi từng chữ cái thành một số và sau đó một gamma bí mật (xem bên dưới) được thêm vào mỗi số - một chuỗi số giả ngẫu nhiên.

Khối mật mã

Mật mã khối là một họ các phép biến đổi có thể đảo ngược của các khối (các phần có độ dài cố định) của văn bản nguồn.

Khối N-bit có nghĩa là một chuỗi số 0 và số 1 có độ dài N:

x = (x 0 , x 1 , …x N -1) . (5.5)

x trong Z 2, N có thể được hiểu là một vectơ và là biểu diễn nhị phân của một số nguyên

(5.6)

Theo mật mã khối, chúng tôi muốn nói đến phần tử

Trong đó x = (x 0 , x 1 , …x N -1), y = (y 0 , y 1 , …y N -1)

Mặc dù mật mã khối là trường hợp đặc biệt của sự thay thế, nhưng chúng cần được xem xét đặc biệt bởi vì, thứ nhất, hầu hết các mật mã đối xứng được sử dụng trong hệ thống truyền dữ liệu đều là mật mã khối và thứ hai, mật mã khối được mô tả thuận tiện hơn ở dạng thuật toán thay vì dạng thay thế thông thường. .

Luồng mật mã

Mật mã dòng là một loại gamma và chuyển đổi văn bản gốc thành văn bản được mã hóa từng bit một. Bộ tạo chuỗi khóa, đôi khi được gọi là bộ tạo khóa đang chạy, tạo ra một chuỗi các bit k 1 , k 2 , … k N . Chuỗi khóa này được thêm modulo 2 (“độc quyền hoặc”) với chuỗi bit của văn bản nguồn e 1, e 2, ..., e N:

Ở bên nhận, bản mã được thêm modulo 2 với dãy khóa giống hệt nhau để có được văn bản gốc:

Tính ổn định của hệ thống phụ thuộc hoàn toàn vào cấu trúc bên trong của bộ tạo chuỗi khóa. Nếu bộ tạo tạo ra một chuỗi có chu kỳ ngắn thì độ ổn định của hệ thống thấp. Ngược lại, nếu bộ tạo tạo ra một chuỗi vô hạn các bit thực sự ngẫu nhiên thì chúng ta sẽ có được một miếng đệm dùng một lần với độ bền lý tưởng.

Mật mã dòng phù hợp nhất để mã hóa các luồng dữ liệu liên tục, ví dụ như trong mạng dữ liệu.

Toàn bộ bộ thuật toán được chia thành hai nhóm lớn: khốinội tuyến. Sự khác biệt giữa chúng là các thuật toán của nhóm đầu tiên chấp nhận văn bản nguồn theo khối nhiều ký tự, trong khi các thuật toán của nhóm thứ hai chuyển đổi tuần tự luồng văn bản nguồn theo từng ký tự hoặc thậm chí từng bit. Sử dụng mật mã khối có nghĩa là văn bản gốc được chia thành các khối có độ dài nhất định và tất cả các phép biến đổi được thực hiện riêng biệt trên mỗi khối. Đôi khi các phép biến đổi trên một khối có thể phụ thuộc vào kết quả của các phép biến đổi trên các khối trước đó.

Với mã hóa luồng, mỗi ký tự của văn bản nguồn có thể được biểu diễn dưới dạng bit, nghĩa là ở dạng nhị phân. Tiếp theo, mỗi bit của chuỗi kết quả có thể được chuyển đổi theo một quy tắc nhất định. Theo quy tắc chuyển đổi như vậy, việc thêm văn bản nguồn theo bit với một số chuỗi bit bí mật thường được sử dụng. Chuỗi bit bí mật đóng vai trò là khóa mã hóa trong mật mã dòng đối xứng. Bản thân phép toán cộng bitwise, còn được gọi là phép toán cộng modulo hai, phép toán “OR độc quyền”, hay đơn giản là XOR, rất đơn giản. Khi cộng, mỗi bit được thay thế theo quy tắc:

0 + 0 = 0

0 + 1 = 1

1 + 0 = 1

1 + 1 = 0

Để giải mã, bạn cần thực hiện quy trình ngược lại. Chuyển đổi mật mã sang dạng nhị phân và thêm nó từng chút một với cùng một chuỗi bí mật đã được sử dụng để mã hóa.

Cơ sở của hầu hết các mật mã dòng là một số loại trình tạo chuỗi giả ngẫu nhiên. Công việc của bộ tạo như vậy là tạo ra một chuỗi bit theo từng bit, đôi khi còn được gọi là thang khóa của mật mã. Gamma này được sử dụng trong phép cộng bitwise với văn bản nguồn. Khóa mã hóa thực tế trong trường hợp này là trạng thái ban đầu (và có thể là cấu trúc của trình tạo). Rõ ràng, bất kỳ ai biết thuật toán tạo chuỗi và dữ liệu đầu vào ban đầu cho thuật toán sẽ có thể tạo ra toàn bộ gam màu. Đặc điểm chính của mật mã dòng như vậy là độ mạnh mật mã của trình tạo chuỗi giả ngẫu nhiên. Trình tạo phải cung cấp các thuộc tính quan trọng sau:

- tạo ra các chuỗi bit gần với các chuỗi ngẫu nhiên về đặc điểm thống kê của chúng;

- đảm bảo sản xuất đủ trình tự dài, không lặp lại;

- có đủ tốc độ để làm việc trong thời gian thực.

Thuộc tính đầu tiên trong số này là cần thiết để ngăn kẻ tấn công đoán được gam màu chính của mật mã. Thuộc tính thứ hai đảm bảo rằng phương thức mã hóa có khả năng chống lại các cuộc tấn công khác nhau. Thuộc tính thứ hai cho phép sử dụng thực tế các mật mã dòng trong thời gian thực.

Hoạt động sự thay thế (chuyển đổi), đôi khi còn được gọi là thao tác sự thay thế , bao gồm việc thay thế một số ký tự trong văn bản nguồn bằng các ký tự khác. Các ký tự của văn bản nguồn và các ký tự được thay thế có thể thuộc cùng một bảng chữ cái (ví dụ: tiếng Nga) hoặc chúng có thể khác nhau.

Hoạt động hoán vị bao gồm việc sắp xếp lại các ký tự của văn bản nguồn theo một quy tắc nhất định.

Mật mã thay thế và hoán vị là một trong những phương pháp mã hóa lâu đời nhất được biết đến. Các phương pháp tương tự đã được biết đến từ thời cổ đại. Theo thời gian, các quy tắc sắp xếp lại và thay thế trở nên phức tạp hơn. Cơ sở lý thuyết để xây dựng mật mã mạnh được phát triển vào giữa thế kỷ trước bởi nhà khoa học nổi tiếng người Mỹ Claude Elwood Shannon (1916-2001), người cũng nổi tiếng với những công trình cơ bản trong lĩnh vực lý thuyết thông tin. Với sự ra đời của tác phẩm “Lý thuyết giao tiếp trong các hệ thống bí mật”, mật mã đã trở thành một ngành khoa học nghiêm ngặt. Một bộ máy toán học để xây dựng mật mã mạnh đã được đề xuất và các nguyên tắc cơ bản đã được xây dựng sự phân tánkhuấy động.


Khuếch tán – san bằng mức độ ảnh hưởng của các thuộc tính thống kê của bản rõ lên mật mã. Sự tán xạ lan truyền ảnh hưởng của một ký tự văn bản gốc lên một số lượng lớn các ký tự mật mã. Sự tán xạ thường đạt được bằng cách sử dụng các kỹ thuật hoán vị.

Trộn – làm phức tạp việc khôi phục mối quan hệ giữa các thuộc tính thống kê của bản rõ và mật mã, cũng như giữa khóa và mật mã. Trộn tương ứng với việc sử dụng các phương pháp thay thế [Alf2001].

Sử dụng những nguyên tắc này, một kiến ​​trúc để xây dựng mật mã khối đối xứng đã được đề xuất vào nửa sau của thế kỷ trước. Kiến trúc được đặt tên Mạng lưới Feisthal(Mạng Feistal), được đặt theo tên của Horst Feistal, một nhân viên của IBM. Kiến trúc này trong một thời gian dài đã xác định hướng phát triển chính của các tiêu chuẩn trong lĩnh vực mã hóa dữ liệu.

Trong mạng Feistal, khối dữ liệu gốc được chuyển đổi. Đầu ra của mạng là một khối dữ liệu được chuyển đổi. Khối ban đầu được chia thành hai phần X1 và X2. Khối dữ liệu đầu ra cũng bao gồm hai phần Y1 và Y2. Phần Y1 là giá trị trực tiếp của X2. Giá trị của Y2 là kết quả của việc thêm phần X1 và kết quả chức năng mã hóa F. Hàm mã hóa ở đây được hiểu là hàm của hai đối số: khối dữ liệu đầu vào và khóa bí mật. Bản thân hàm này thể hiện một số chuyển đổi không xác định đối với dữ liệu. Trong mạng Feistal, các đối số của hàm mã hóa F là khối dữ liệu đầu vào X2 và khóa mã hóa bí mật K.

Các công thức phân tích cho các phép biến đổi được mô tả như sau:

Y1 = X2

Y2 = X1  F(X2, K)

Một đặc tính quan trọng của mạng Feistal là các phép biến đổi được thực hiện với sự trợ giúp của nó đều có thể đảo ngược được. Các phép biến đổi có thể đảo ngược ngay cả khi hàm mã hóa F không thể đảo ngược. Nghĩa là luôn có thể lấy được khối dữ liệu gốc X từ khối dữ liệu Y

X1 = Y2  F(Y1, K)

X2 = Y1

Các tiêu chuẩn mã hóa dữ liệu mở hiện đại là mật mã khối đối xứng sử dụng các phép biến đổi phức hợp (thay thế, hoán vị, v.v.) để mã hóa dữ liệu. Những tiêu chuẩn như vậy được khuyến nghị để bảo vệ thông tin thương mại và thông tin không mật. Khuyến nghị sử dụng tiêu chuẩn này để bảo vệ thông tin thương mại và thông tin chưa được phân loại có nghĩa là không nên sử dụng tiêu chuẩn này để mã hóa thông tin là bí mật nhà nước hoặc yêu cầu giấy phép đặc biệt. Tuy nhiên, điều này không có nghĩa là thuật toán không ổn định hoặc chưa được kiểm tra. Trong phần lớn các trường hợp, độ mạnh của thuật toán đủ để ngăn chặn các đối thủ cạnh tranh hoặc những kẻ xấu hack nó trong thời gian có thể chấp nhận được. Hack trong trường hợp này có nghĩa là giải mã các mật mã, tức là. lộ nội dung gốc của tin nhắn mà không biết khóa bí mật. Khả năng xảy ra một vụ hack như vậy phụ thuộc rất nhiều vào nguồn lực của những kẻ tấn công (tài chính, máy tính, trí tuệ và những thứ khác). Từ quan điểm này, các quốc gia dẫn đầu có tổng nguồn lực vượt xa đáng kể tiềm năng của các tập đoàn thương mại lớn nhất. Vì lý do này, để bảo vệ bí mật nhà nước, nên sử dụng các thuật toán bền bỉ hơn và chưa được công bố. Ngoài ra, các thuật toán mạnh hơn thường đòi hỏi nhiều tài nguyên hơn và hoạt động chậm hơn. Đồng thời, trong các hệ thống dân dụng và thương mại, tốc độ vận hành thường là một trong những tiêu chí quan trọng nhất. Cuối cùng, việc sử dụng các thuật toán cực mạnh có thể trở nên không hiệu quả về mặt chi phí khi mã hóa thông tin với thời gian tồn tại rất ngắn. Có rất ít lý do để sử dụng một mật mã sẽ mất nhiều năm để bẻ khóa hoặc để bảo vệ những thông điệp sẽ trở nên vô giá trị sau vài ngày hoặc vài giờ. Vì những lý do nêu trên, các tiêu chuẩn mã hóa chính thức được chính phủ công bố có sự thỏa hiệp nhất định giữa một số tiêu chí, chẳng hạn như: sức mạnh, tốc độ, tính dễ thực hiện, chi phí và các tiêu chí khác.

DES- tiêu chuẩn mã hóa liên bang cũ của Hoa Kỳ;

GOST 28147-89- chuẩn mã hóa dữ liệu trong nước;

AES- tiêu chuẩn mã hóa liên bang mới của Hoa Kỳ.

Việc trình bày được trình bày theo thứ tự thời gian xuất hiện của các tiêu chuẩn này. Hoạt động của các thuật toán mã hóa đối xứng có thể được coi là chức năng của “hộp đen”. Đầu vào là văn bản gốc và khóa mã hóa có kích thước cố định. Đầu ra là một mật mã. Cấu trúc bên trong của các thuật toán như vậy được các nhà phát triển và các nhà phân tích mật mã quan tâm. Người dùng chủ yếu quan tâm đến các đặc điểm so sánh của thuật toán, kết quả phân tích khả năng kháng cự và phạm vi ứng dụng của chúng.

Tiêu chuẩn mã hóa kỹ thuật số (DES) đã đóng vai trò là tiêu chuẩn mã hóa liên bang ở Hoa Kỳ trong hơn 20 năm. Thuật toán là Thuật toán cơ bản của tiêu chuẩn được phát triển vào năm 1974 tại IBM. Năm 1977, tiêu chuẩn này được Cục Tiêu chuẩn Quốc gia Hoa Kỳ (NBS) công bố. Sau đó, nó đã được Viện Tiêu chuẩn và Công nghệ Quốc gia Hoa Kỳ (NIST) phê duyệt vào năm 1980 để bảo vệ thông tin thương mại và thông tin chưa được phân loại. Từ năm 1986, nó đã trở thành một tiêu chuẩn quốc tế được ISO áp dụng dưới tên DEA-1.

Thuật toán cơ bản của DES thuộc nhóm mật mã khối đối xứng. Độ dài khóa là 64 bit. Trong đó mỗi bit thứ tám được sử dụng để kiểm tra tính chẵn lẻ. Theo đó, khóa chỉ chứa 56 bit bí mật. Khối dữ liệu đầu vào cũng là 64 bit.

Thuật toán dựa trên kiến ​​trúc mạng Feistal. Bản chất của nó là thực hiện các phép biến đổi trong mạng này nhiều lần liên tiếp. Khối dữ liệu đầu ra sau một lần chuyển đổi là khối đầu vào cho lần chuyển đổi tiếp theo. Mỗi phép biến đổi như vậy được gọi là vòng mã hóa. Đôi khi DES và các thuật toán tương tự khác còn được gọi là mật mã khối lặp, trong đó một lần lặp có nghĩa là thực hiện chuyển đổi trong mạng Feistal. DES có tổng cộng 16 vòng mã hóa.

Số vòng mã hóa là một đặc tính quan trọng của mật mã lặp như vậy. Sức mạnh của mật mã so với các phương pháp giải mã hiện đại, chẳng hạn như giải mã vi phân và tuyến tính, phụ thuộc vào giá trị này. Như đã lưu ý trong [Var98], việc sử dụng các phương pháp này mang lại kết quả tốt nhất trong lĩnh vực phân tích các hệ thống mã hóa khối. Sự hiện diện của mười sáu vòng mã hóa là yêu cầu tối thiểu để đảm bảo rằng các phương pháp phân tích mật mã ở trên không dễ dàng hơn việc tìm kiếm toàn diện tất cả các khóa có thể. Cần phải nói rằng các phương pháp giải mã vi phân và tuyến tính đã được công bố trong các tài liệu mở tương đối gần đây. Đồng thời, DES được phát triển và phân tích từ những năm 70 của thế kỷ trước. Điều này cho thấy khả năng của các phương pháp phá mật mã như vậy đã được các cơ quan đặc biệt biết đến từ khá lâu.

Mỗi vòng mã hóa trong mạng Feistal sử dụng một khóa mã hóa để chuyển nó đến đầu vào của chức năng mã hóa. Những khóa như vậy được gọi là phím tròn. Tổng cộng có 16 phím tròn khác nhau được sử dụng. Mỗi khóa tròn như vậy được lấy từ khóa gốc. Một phương pháp tạo khóa như vậy được công bố trong mô tả DES.

Bản thân chức năng mã hóa không phức tạp. Nó dựa trên quy tắc chuyển đổi khối dữ liệu đầu vào. Phép biến đổi này bao gồm việc thêm khối dữ liệu đầu vào bằng một phím tròn và sau đó chuyển đổi kết quả thu được thành cái gọi là S-box. Hộp S trong DES là một ma trận gồm 4 hàng và 16 cột. Mỗi ô của ma trận chứa một số từ 0 đến 15. Tổng cộng có 8 ma trận như vậy được công bố và sử dụng trong tiêu chuẩn.

Trong suốt quá trình tồn tại của mình, DES đã trở thành một thuật toán mã hóa rất phổ biến, được triển khai trong nhiều hệ thống và ứng dụng. Tuy nhiên, ngày nay nó đã là một thuật toán lỗi thời nên không thể cung cấp độ bền cần thiết. Điều này chủ yếu là do độ dài của khóa mã hóa 56 bit được áp dụng trong tiêu chuẩn không đủ. Vào cuối những năm 90 của thế kỷ trước, công ty RSA Security đã tổ chức hàng loạt cuộc thi hack mở rộng. Nhiệm vụ của cuộc thi là giải mã một mật mã được công bố trên trang web của công ty. Tất cả các tùy chọn đã được giải quyết bằng cách sử dụng một cuộc tấn công vũ phu, nghĩa là bằng cách tìm kiếm thành công tất cả các tùy chọn chính có thể. Dưới đây là bảng trình bày các vụ hack DES trong các cuộc thi mở do RSA Security thực hiện:

ngày

Thời gian hack

Quyền lực

18.06.1997

96 ngày

7 tỷ phím/giây.

23.02.1998

39 ngày

34 tỷ phím/giây.

17.07.1998

3 ngày

88 tỷ phím/giây.

19.01.1999

22 giờ 15 phút

245 tỷ phím/giây.

Như bạn có thể thấy trong bảng bên dưới, trong cuộc thi gần đây nhất, DES đã bị bẻ khóa trong vòng chưa đầy một ngày. Sau đó, RSA Security đã ngừng tổ chức các cuộc thi hack DES. Vụ hack mới nhất là nỗ lực chung giữa hai tổ chức phi lợi nhuận: Electronic Frontier Foundation (www.eff.org) và Distributed Computing Technologies, Inc. (www.distributed.net) Việc lựa chọn các tùy chọn chính có thể được thực hiện bằng một máy tính đặc biệt có tên Deep Cracker, có giá 250.000 USD. Ngoài ra, trong quá trình xử lý khóa, sức mạnh của máy tính kết nối Internet đã được sử dụng.

Kết quả đạt được đã chứng minh một cách hùng hồn sự cần thiết phải áp dụng một tiêu chuẩn mới trong lĩnh vực mã hóa dữ liệu và giảm bớt các hạn chế xuất khẩu đối với các sản phẩm mật mã tồn tại vào thời điểm đó ở Hoa Kỳ. Tiêu chuẩn mới được thông qua vào năm 2001 và được gọi là Tiêu chuẩn mã hóa nâng cao (AES). Tiêu chuẩn này và thuật toán cơ bản sẽ được thảo luận dưới đây. Kể từ cuối những năm 90 của thế kỷ trước, để tăng cường tiêu chuẩn hiện có, bản sửa đổi của nó, được gọi là “Triple-DES” (Triple-DES), đã được sử dụng.

Thuật toán GOST 28147-89 là mật mã khối đối xứng và dựa trên kiến ​​trúc mạng Feistal. Độ dài khóa là 256 bit. Khối dữ liệu đầu vào là 64 bit. Thuật toán sử dụng 32 vòng mã hóa. Mỗi vòng mã hóa sử dụng một khóa tròn, các giá trị của khóa này được lấy từ khóa mã hóa bí mật ban đầu.

Các chức năng mã hóa của thuật toán GOST 28147-89, được sử dụng trong mỗi vòng mã hóa, có cấu trúc đơn giản và bao gồm các hoạt động thay thế và dịch chuyển theo chu kỳ đơn giản. Việc thay thế được thực hiện trong khối S trong một ma trận đặc biệt. Đối với thuật toán GOST 28147-89, loại ma trận thay thế cụ thể không được chỉ định. Mỗi nhà phát triển và nhà sản xuất có thể tạo ma trận của riêng họ hoặc đưa ra yêu cầu đối với các dịch vụ đặc biệt có thể giúp chuẩn bị ma trận mật mã. Nếu muốn, bạn có thể thay đổi ma trận thay thế theo thời gian. Do ma trận không được chỉ định nên đôi khi nó còn được gọi là yếu tố quan trọng có thể thay thế. Ma trận có tám hàng, mười sáu cột và mỗi ô lưu trữ bốn bit thông tin. Kích thước ma trận là 512 bit. Nếu chúng ta thêm vào kích thước của khóa mã hóa thì tổng kích thước của thông tin bí mật sẽ là 768 bit. Điều này mang lại con số khổng lồ là 2.768 tùy chọn khả thi để thử tất cả các giá trị thông tin bí mật. Việc liệt kê một số lựa chọn như vậy thậm chí còn vượt xa sức mạnh dự đoán của công nghệ máy tính và hoàn toàn nằm ngoài tầm với trong tương lai gần. Tuy nhiên, công bằng mà nói thì chỉ có khóa mã hóa 256 bit mới thực sự là thông tin bí mật. Cấu trúc của các ma trận thậm chí chưa được công bố về mặt lý thuyết có thể được xác định bằng cách phân tích hoạt động của phần mềm hoặc phần cứng. Cũng có thể cố gắng truy cập trái phép vào tài liệu kỹ thuật về việc triển khai thuật toán GOST 28147-89. Nhưng ngay cả trong trường hợp này, để liệt kê đầy đủ tất cả các khóa có thể, cần phải thực hiện 2256 lần thử. Số lượng tùy chọn này vẫn còn rất lớn và đảm bảo rằng thuật toán có khả năng chống lại các cuộc tấn công vũ phu tuyệt đối.

Trong các ấn phẩm mở, chưa một phương pháp hack thành công nào vào tiêu chuẩn mã hóa dữ liệu trong nước vẫn chưa được xem xét. Tuy nhiên, bài báo [Mol02] lập luận ủng hộ việc thay thế tiêu chuẩn hiện tại bằng một thuật toán mới. Theo các tác giả, tiêu chuẩn hiện tại, do kiến ​​trúc của nó, không thể đáp ứng các yêu cầu hiện đại về tốc độ chuyển đổi dữ liệu (trên 2 Gbit/s). Ngoài ra, cần lưu ý rằng trong một số công trình trong vài năm qua, nhiều cuộc tấn công tiềm ẩn khác nhau liên quan đến thuật toán GOST 28147-89 đã được mô tả.

Đối với tiêu chuẩn GOST 28147-89, bốn chế độ hoạt động sau được xác định:

Thay thế dễ dàng. Đây là chế độ hoạt động chính và đơn giản nhất của thuật toán. Được sử dụng để mã hóa thông tin quan trọng.

kẹo cao su . Ở chế độ này, có thể tạo gamma giả ngẫu nhiên với các đặc tính thống kê rất tốt. Trên thực tế, sử dụng chế độ này cho phép bạn thu được mật mã luồng từ mật mã khối. Được sử dụng để mã hóa dữ liệu.

Chơi game có phản hồi . Chế độ này khác với chế độ trước ở chỗ nó tạo ra gamma. Phần tử gamma tiếp theo được tạo ra do chuyển đổi khối dữ liệu được mã hóa trước đó. Chế độ này đôi khi còn được gọi là chế độ gamma với các khối lồng vào nhau [Dom2000]. Mỗi khối mật mã phụ thuộc vào tất cả các khối văn bản gốc trước đó. Chế độ gamma có thể xử lý các khối dữ liệu đầu vào nhỏ hơn 8 byte. Thuộc tính này được sử dụng để mã hóa mảng dữ liệu có kích thước tùy ý.

Chế độ tạo mô phỏng chèn . Việc chèn mô phỏng là một giá trị được tính toán bằng cách sử dụng dữ liệu gốc và khóa bí mật. Bằng cách sử dụng chức năng chèn mô phỏng, bạn có thể xác định xem thông tin có được thay đổi trong quá trình truyền hay không. Chế độ này được sử dụng để phát hiện các biến dạng trong mảng dữ liệu được mã hóa với xác suất được chỉ định.

Tiêu chuẩn mã hóa nâng cao (AES) đã được lựa chọn thông qua một cuộc thi quốc tế mở do NIST Hoa Kỳ thực hiện. Ngày bắt đầu cuộc thi được công bố vào ngày 2 tháng 1 năm 1997. Kết quả của việc lựa chọn ban đầu vào tháng 8 năm 1998 là 15 thuật toán ứng cử viên đã được chọn. Sau đó một năm, vào tháng 8 năm 1999, năm thuật toán được xác định là lọt vào vòng chung kết của cuộc thi. Cuộc thi kết thúc vào tháng 10 năm 2000. Người chiến thắng là thuật toán RIJNDAEL của Bỉ do Vincent Rijmen và Joan Daemen phát triển. Thuật toán này được chọn làm tiêu chuẩn AES. Phiên bản cuối cùng của tiêu chuẩn được xuất bản vào tháng 11 năm 2001. Thuật toán đã được phê duyệt là tiêu chuẩn mã hóa liên bang mới ở Hoa Kỳ theo mã FIPS-197 và nhằm mục đích xử lý thông tin thương mại cũng như thông tin không chứa bí mật nhà nước. Tiêu chuẩn này có hiệu lực vào ngày 26 tháng 5 năm 2002 [Zen2002].

Tiêu chuẩn AES dựa trên kiến ​​trúc khác với mạng Feisthal. Các tác giả của thuật toán gọi kiến ​​trúc mới này là “Square”. Bản chất của nó nằm ở chỗ khối dữ liệu gốc được ghi từng byte vào ma trận. Bản thân quá trình mã hóa bao gồm việc thực hiện nhiều lần các phép biến đổi khác nhau với các phần tử của ma trận đó, cũng như với các hàng và cột của nó. Kiến trúc đề xuất có đặc tính tán xạ và trộn Shannon tốt.

Tiêu chuẩn AES cung cấp ba chế độ hoạt động tùy thuộc vào độ dài của khóa được sử dụng. Độ dài khóa có thể là 128, 192 và 256 bit. Số vòng mã hóa phụ thuộc vào độ dài khóa được sử dụng; lần lượt là 10, 12 hoặc 14 vòng. Kích thước của khối dữ liệu nguồn đầu vào và khối văn bản mã hóa đầu ra giống nhau và luôn là 128 bit.

Trong quá trình phân tích thuật toán như một phần của cuộc thi đang diễn ra, không tìm thấy điểm yếu nào trong đó. Công bằng mà nói, cần phải nói rằng điều này áp dụng cho tất cả các thuật toán đã lọt vào vòng chung kết của cuộc thi. Tất cả đều là những thuật toán mạnh mẽ. Tuy nhiên, dựa trên các đặc điểm kết hợp về hiệu suất, tính dễ thực hiện, cường độ tài nguyên và các đặc điểm khác, RIJNDAEL hóa ra lại là tiêu chuẩn mã hóa phổ quát được ưa chuộng nhất.

Những lợi ích của tiêu chuẩn AES bao gồm:

- hiệu quả triển khai cao trên mọi nền tảng;

- độ bền cao;

- yêu cầu bộ nhớ thấp;

- khả năng triển khai trên thẻ thông minh;

- thủ tục tạo khóa nhanh;

- khả năng song song của hoạt động.


Dưới đây là bảng tóm tắt các đặc điểm của các tiêu chuẩn mã hóa dữ liệu được xem xét [Vin2001].

DES

GOST 28147-89

AES

Kích thước khối dữ liệu (bit)

Kích thước phím
(chút)

128, 192, 256

Ngành kiến ​​​​trúc

Mạng Feistal

Mạng Feistal

"Quảng trường"

Số vòng

10, 12, 14

Cấu trúc tròn

Đơn giản

Đơn giản

Tổ hợp

Các thao tác được sử dụng

Các phép tính cộng, thay thế, hoán vị, dịch chuyển

Hoạt động bổ sung, thay thế, thay đổi

Các phép toán trên trường hữu hạn

Để liệt kê tất cả các khóa có thể có cho thuật toán DES, bạn cần chạy khoảng 7,2x1016 tùy chọn. Kích thước khóa tối thiểu trong thuật toán AES là 128 bit. Để liệt kê tất cả các khóa có thể có trong trường hợp này, bạn sẽ phải kiểm tra khoảng 3,4x1038 tùy chọn. Con số này gấp khoảng 1021 lần so với trường hợp của DES. Để liệt kê tất cả các khóa dài 256 bit, bạn sẽ cần kiểm tra số lượng tùy chọn rất lớn - khoảng 1,1x1077 khóa. Sức mạnh của tiêu chuẩn mã hóa AES mới chống lại các cuộc tấn công vũ phu giờ đây chỉ ngang bằng với tiêu chuẩn nội địa GOST 28147-89.

Thuật toán GOST 28147-89 giúp tạo các khóa mã hóa vòng cực kỳ dễ dàng. Chúng được coi là thành phần của khóa mã hóa bí mật ban đầu. Đồng thời, DES và AES sử dụng các thuật toán phức tạp hơn nhiều để tính toán các phím tròn.

So với DES, thuật toán GOST 28147-89 nhanh hơn. Ví dụ: trên bộ xử lý Intel x86, việc triển khai GOST 28147-89 nhanh hơn gấp đôi so với việc triển khai DES. Trên bộ xử lý Pention Pro-200 MHz, giới hạn hiệu suất của thuật toán GOST 28147-89 là 8 MB/giây. Bảng dưới đây thể hiện các chỉ số hiệu suất so sánh của tiêu chuẩn GOST 28147-89 và AES

GOST 28147-89

AES

Pentium 166 MHz

2,04 MB/giây

2,46 MB/giây

Pentium III 433 MHz

8,30 MB/giây

9,36 MB/giây

Thuật toán GOST 28147-89 thuận tiện hơn cho việc triển khai phần cứng và phần mềm so với DES, nhưng kém thuận tiện hơn AES. Các tiêu chuẩn GOST 28147-89 và AES có các giá trị tương đương về các đặc điểm chính.

Đối với các thuật toán mã hóa đối xứng khối (AS), một số chế độ sử dụng chính của chúng được xác định. Các chế độ này ban đầu được dành riêng cho việc sử dụng thuật toán DES, nhưng trên thực tế có thể được áp dụng cho bất kỳ thuật toán khối nào. Ví dụ: một số chế độ này tương tự các chế độ vận hành được xác định cho thuật toán GOST 28147-89. Chế độ được chọn sẽ xác định phạm vi ứng dụng của thuật toán mã hóa khối. Mỗi chế độ hoạt động đều có những ưu điểm và nhược điểm riêng.

Chế độ sổ mã điện tử .

Sổ mã điện tử (ECB)

Văn bản nguồn được chia thành các khối. Ở chế độ này, mỗi khối được đưa vào thuật toán mã hóa và được chuyển đổi độc lập với nhau. Mỗi khối cũng được giải mã độc lập.

Thuận lợi:

- dễ thực hiện;

- khả năng mã hóa nhiều tin nhắn bằng một khóa mà không làm giảm tính bảo mật;

- khả năng song song.

Sai sót:

- sự tương ứng một-một giữa các khối văn bản gốc và mật mã;

- khả năng lặp lại các khối và thay thế các khối trong gói thông tin;

- lan truyền lỗi bản mã.


Khu vực ứng dụng:

- mã hóa các khóa khác và thông tin nói chung là ngẫu nhiên;

- mã hóa kho lưu trữ dữ liệu truy cập ngẫu nhiên.

Chế độ xâu chuỗi khối văn bản mã hóa .

Chuỗi khối mật mã (CBC)

Văn bản nguồn được chia thành các khối. Cái gọi là vectơ khởi tạo- một chuỗi bit ngẫu nhiên và không bí mật, có độ dài bằng một khối dữ liệu đến. Khối dữ liệu ban đầu đầu tiên được thêm vào vectơ khởi tạo. Kết quả của phép cộng là đầu vào của thuật toán mã hóa. Mật mã thu được sẽ được thêm vào khối văn bản nguồn tiếp theo. Kết quả của phép cộng được đưa vào đầu vào của thuật toán mã hóa, v.v.


Thuận lợi:

- khó thao tác với bản rõ (thay thế và thay thế);

- Bạn có thể mã hóa nhiều tin nhắn bằng một khóa;

- việc giải mã có thể được thực hiện song song.

Sai sót:

- bản mã dài hơn bản rõ một khối;

- lỗi đồng bộ hóa nghiêm trọng;

- lan truyền lỗi bản mã;

- mã hóa không thể được thực hiện song song.

Khu vực ứng dụng:

- mã hóa tập tin và tin nhắn.


Chế độ phản hồi bản mã.

Phản hồi mật mã (CFB)

Ngay từ đầu, vectơ khởi tạo được đưa trực tiếp vào đầu vào của thuật toán mã hóa. Văn bản nguồn bao gồm các khối k bit và k N, Ở đâu N- chiều dài của khối dữ liệu đầu vào. Mỗi khối văn bản nguồn được thêm vào một phần của chuỗi độ dài k bit thu được làm đầu ra của thuật toán mã hóa. Kết quả của phép cộng là một khối bản mã. Giá trị của chuỗi thu được ở đầu ra của thuật toán mã hóa được dịch chuyển k bit sang trái. Đúng nhất k các bit của chuỗi bị chiếm giữ bởi các bit của mật mã. Chuỗi dữ liệu đầu vào mới được hình thành sẽ được đưa vào đầu vào của thuật toán mã hóa, v.v.


Thuận lợi:

- kích thước khối dữ liệu có thể khác với kích thước tiêu chuẩn;

- rất khó để thao tác với bản rõ;

- khả năng mã hóa nhiều tin nhắn bằng một khóa.

Sai sót:

- tính duy nhất bắt buộc (nhưng không bí mật) của vectơ khởi tạo;

- sự lan truyền nhanh chóng của các lỗi mã hóa.

Khu vực ứng dụng:

- mã hóa từng ký tự của luồng dữ liệu (truyền dữ liệu giữa máy chủ và máy khách trong quá trình xác thực).


Chế độ phản hồi đầu ra .

Phản hồi đầu ra (OFB)

Chế độ này khác với chế độ trước ở chỗ phần của chuỗi đầu vào mới được tạo được lấp đầy k các bit không phải của mật mã mà là của chuỗi đầu ra thu được ở bước trước. Sự khác biệt này cho phép bạn hình thành trước đầy đủ phạm vi mật mã. Gamma này sau đó có thể được sử dụng để mã hóa văn bản gốc, ví dụ như xảy ra trong mật mã dòng.


Thuận lợi:

- lỗi bản mã không được truyền bá;

- khả năng chuẩn bị sơ bộ thang đo;

- Kích thước khối dữ liệu có thể khác với kích thước tiêu chuẩn.

Sai sót:

- lỗi đồng bộ hóa nghiêm trọng;

- dễ dàng thao tác với bản rõ;

- tính duy nhất bắt buộc (nhưng không bí mật) của vectơ khởi tạo.

Khu vực ứng dụng:

- hệ thống đồng bộ tốc độ cao (thông tin vệ tinh);

- nói chung, trong các hệ thống hoạt động trong môi trường có khả năng xảy ra lỗi cao trong quá trình truyền thông tin.


Các chế độ mã hóa bổ sung

Ngoài ra còn có một số chế độ mã hóa bổ sung:

· Chế độ Chuỗi khối lan truyền (PCBC).

· Chuỗi khối văn bản mã hóa với chế độ tổng kiểm tra (CBCC).

· Đầu ra chế độ phản hồi phi tuyến (OFBNLF).

· Chuỗi khối văn bản gốc (PBC).

· Chế độ phản hồi bản rõ (PFB).

· Xâu chuỗi các khối văn bản theo sự khác biệt của bản rõ (CBCPD).

Khái niệm mã hóa

Mã hóa ¾ là một phương pháp chuyển đổi thông tin được sử dụng để lưu trữ thông tin quan trọng trong các nguồn không đáng tin cậy hoặc truyền thông tin đó qua các kênh liên lạc không an toàn. Theo GOST 28147-89, mã hóa là quá trình mã hóa hoặc giải mã.

Khóa mã hóa là thông tin bí mật được thuật toán mã hóa sử dụng khi mã hóa/giải mã tin nhắn. Khi sử dụng cùng một thuật toán, kết quả mã hóa sẽ phụ thuộc vào khóa. Độ dài khóa là đặc điểm chính của độ mạnh mật mã và được đo bằng bit.

Tùy thuộc vào cấu trúc của khóa được sử dụng, phương pháp mã hóa được chia thành các loại sau:

· mã hóa đối xứng: cùng một khóa được sử dụng để mã hóa và giải mã;

· Mã hóa bất đối xứng: một khóa (công khai) được sử dụng để mã hóa và một khóa khác (riêng tư, bí mật) được sử dụng để giải mã. Kiểu mã hóa này còn được gọi là mã hóa khóa công khai.

Các loại mã hóa khác nhau có độ mạnh mã hóa khác nhau.

Mã hóa đối xứng là phương pháp mã hóa trong đó cùng một khóa mật mã được sử dụng để mã hóa và giải mã. Khóa thuật toán phải được giữ bí mật bởi cả người gửi và người nhận tin nhắn. Khóa thuật toán được các bên chọn trước khi bắt đầu trao đổi tin nhắn.

Mật mã đối xứng có các loại sau:

· chặn mật mã. Chúng xử lý thông tin theo các khối có độ dài nhất định (64, 128 bit, v.v.), áp dụng khóa cho khối theo thứ tự quy định, thường thông qua một số chu kỳ xáo trộn và thay thế, được gọi là vòng. Kết quả của các vòng lặp lại là hiệu ứng tuyết lở - sự mất mát tương ứng bit ngày càng tăng giữa các khối dữ liệu đơn giản và dữ liệu được mã hóa.

· Mật mã dòng, trong đó mã hóa được thực hiện trên từng bit hoặc byte của văn bản gốc (thuần túy) bằng gamma. Có thể dễ dàng tạo mật mã luồng dựa trên mật mã khối (ví dụ: GOST 28147-89 ở chế độ gamma), được khởi chạy ở chế độ đặc biệt. Gamma là quá trình "áp đặt" một chuỗi nhất định (chuỗi gamma) lên bản rõ. Ví dụ: đây có thể là thao tác "OR độc quyền". Khi giải mã, thao tác được lặp lại, thu được bản rõ.

Các thông số của thuật toán mã hóa: cường độ, độ dài khóa, số vòng, độ dài khối được xử lý, độ phức tạp của việc triển khai phần cứng/phần mềm.

Ví dụ về thuật toán đối xứng: DES (Tiêu chuẩn mã hóa dữ liệu, tiêu chuẩn mã hóa dữ liệu), GOST 28147-89.

So sánh với mã hóa bất đối xứng:



Thuận lợi:

· tốc độ (theo Mật mã ứng dụng - cao hơn 3 bậc);

· Dễ thực hiện (do thao tác đơn giản hơn);

· Độ dài khóa yêu cầu nhỏ hơn để có độ bền tương đương;

· Kiến thức (do tuổi lớn hơn).

Sai sót:

· Sự phức tạp của việc quản lý khóa trong một mạng lớn. Nó có nghĩa là sự gia tăng bậc hai về số lượng cặp khóa phải được tạo, truyền, lưu trữ và hủy trên mạng. Đối với mạng 10 thuê bao thì cần có 45 khóa, đối với 100 là 4950, đối với 1000 - 499500, v.v.;

· Sự phức tạp của việc trao đổi khóa. Để sử dụng nó, cần phải giải quyết vấn đề chuyển khóa đáng tin cậy cho từng thuê bao, vì cần có một kênh bí mật để chuyển từng khóa cho cả hai bên.

Để bù đắp cho những thiếu sót của mã hóa đối xứng, sơ đồ mật mã kết hợp (lai) hiện đang được sử dụng rộng rãi, trong đó dữ liệu được truyền bằng mã hóa bất đối xứng. khóa phiên, được các bên sử dụng để trao đổi dữ liệu bằng mã hóa đối xứng.

Một đặc tính quan trọng của mật mã đối xứng là chúng không thể được sử dụng để xác nhận quyền tác giả vì mỗi bên đều biết khóa.

Phần này giải quyết các vấn đề sau:

  • Các loại mật mã
  • Mật mã thay thế
  • Mật mã hoán vị
  • Phương pháp mã hóa
  • Thuật toán đối xứng và bất đối xứng
  • Mật mã đối xứng
  • Mật mã bất đối xứng
  • Chặn và truyền mật mã
  • Các vectơ khởi tạo
  • Phương pháp mã hóa lai
Mật mã đối xứng được chia thành hai loại chính: thay thế và hoán vị. Mật mã thay thế thay thế các bit, ký hiệu hoặc khối bằng các bit, ký hiệu hoặc khối khác. Mật mã hoán vị không thay đổi văn bản nguồn, thay vào đó chúng di chuyển ý nghĩa ban đầu trong văn bản nguồn - chúng sắp xếp lại các bit, ký tự hoặc khối ký tự để ẩn ý nghĩa ban đầu.

Mật mã thay thế sử dụng một khóa chỉ định cách thực hiện việc thay thế. TRONG mật mã của Caesar mỗi ký tự được thay thế bằng ký tự cách nó ba vị trí xa hơn trong bảng chữ cái. Thuật toán là bảng chữ cái và chìa khóa là hướng dẫn “dịch chuyển theo ba ký tự”.

Phép thay thế được sử dụng bởi các thuật toán đối xứng hiện đại, nhưng rất khó để so sánh với một phương pháp đơn giản như mật mã Caesar. Tuy nhiên, mật mã Caesar là một ví dụ đơn giản và rõ ràng về khái niệm hoạt động của mật mã thay thế.

Trong mật mã hoán vị, các giá trị được xáo trộn hoặc đặt theo thứ tự khác. Phím này chỉ định vị trí mà giá trị sẽ được di chuyển tới đó, như trong Hình 6-6.

Hình 6-6. Mật mã hoán vị


Đây là ví dụ đơn giản nhất về mật mã hoán vị, nó chỉ cho thấy cách thực hiện hoán vị. Nếu có liên quan đến các hàm toán học phức tạp, hoán vị có thể trở nên khá khó bẻ khóa. Các thuật toán đối xứng hiện đại đồng thời sử dụng các chuỗi dài các thay thế và hoán vị phức tạp của các ký hiệu của tin nhắn được mã hóa. Thuật toán chứa khả thi phương pháp thay thế và hoán vị (thể hiện bằng công thức toán học). Điều quan trọng là các hướng dẫn cho thuật toán, xác định chính xác cách thực hiện phải quá trình xử lý xảy ra và theo trình tự nào. Để hiểu mối quan hệ giữa thuật toán và khóa, hãy xem Hình 6-7. Nói một cách hình tượng, thuật toán tạo ra nhiều hộp khác nhau, mỗi hộp có bộ công thức toán học riêng (khác với các hộp khác) chỉ ra các bước thay thế và hoán vị phải được thực hiện trên các bit rơi vào hộp này. Để mã hóa một tin nhắn, giá trị của mỗi bit phải đi qua các hộp khác nhau. Tuy nhiên, nếu mỗi thư của chúng ta đi qua cùng một bộ hộp thư theo cùng một trình tự, kẻ tấn công có thể dễ dàng đảo ngược quy trình này, bẻ khóa mật mã và lấy được bản rõ của thư của chúng ta.

Hình 6-7. Mối quan hệ giữa khóa và thuật toán


Để ngăn chặn kẻ tấn công, một khóa được sử dụng, đây là một tập hợp các giá trị cho biết nên sử dụng hộp nào, theo trình tự nào và với những giá trị nào. Vì vậy, nếu tin nhắn A được mã hóa bằng khóa 1 thì khóa yêu cầu tin nhắn phải đi qua các ô 1, 6, 4 và 5. Khi cần mã hóa tin nhắn B, chúng ta sử dụng khóa 2, tức là tin nhắn phải đi qua các ô 8. , 3, 2 và 9. Khóa bổ sung tính ngẫu nhiên và bí mật cho quá trình mã hóa.

Các mật mã thay thế và hoán vị đơn giản dễ bị tấn công phân tích tần số (phân tích tần số). Trong mọi ngôn ngữ, một số từ và mẫu được sử dụng thường xuyên hơn những từ và mẫu khác. Ví dụ, trong văn bản tiếng Anh chữ “e” thường được sử dụng thường xuyên hơn. Khi thực hiện phân tích tần số của tin nhắn, kẻ tấn công tìm kiếm các mẫu 8 bit được lặp lại thường xuyên nhất (tạo nên ký tự). Ví dụ: nếu anh ta tìm thấy 12 mẫu 8 bit trong một tin nhắn ngắn, anh ta có thể kết luận rằng rất có thể đó là chữ cái "e" - chữ cái được sử dụng phổ biến nhất trong ngôn ngữ. Bây giờ kẻ tấn công có thể thay thế các bit này bằng chữ "e". Điều này sẽ giúp anh ta thuận lợi hơn trong quá trình cho phép anh ta thiết kế ngược và khôi phục tin nhắn ban đầu.

Các thuật toán đối xứng hiện đại sử dụng các kỹ thuật thay thế và hoán vị trong quá trình mã hóa, nhưng chúng sử dụng (nên sử dụng) toán học quá phức tạp để cho phép một cuộc tấn công phân tích tần số đơn giản như vậy thành công.

Chức năng tạo khóa.Để tạo các khóa phức tạp, khóa chính thường được tạo trước tiên, từ đó các khóa đối xứng được tạo. Ví dụ: nếu một ứng dụng chịu trách nhiệm tạo khóa phiên cho mỗi thực thể truy cập vào nó thì ứng dụng đó không nên chỉ cung cấp các bản sao của cùng một khóa. Các thực thể khác nhau yêu cầu các khóa đối xứng khác nhau trên mỗi kết nối để giảm thiểu khoảng thời gian sử dụng chúng. Ngay cả khi kẻ tấn công chặn lưu lượng và bẻ khóa, hắn sẽ chỉ có thể xem thông tin được truyền trong phiên tương ứng. Phiên mới sẽ sử dụng một khóa khác. Nếu hai hoặc nhiều khóa được tạo từ một khóa chính thì chúng được gọi là khóa con (khóa con).

Các hàm tạo khóa (KDF – hàm dẫn xuất khóa) được sử dụng để tạo các khóa bao gồm các giá trị ngẫu nhiên. Các giá trị khác nhau có thể được sử dụng độc lập hoặc cùng nhau làm vật liệu khóa ngẫu nhiên. Các thuật toán được tạo ra sử dụng hàm băm, mật khẩu và/hoặc muối cụ thể được truyền qua các hàm toán học được thuật toán chỉ định nhiều lần. Vật liệu quan trọng này đi qua các chức năng này càng nhiều lần thì mức độ tin cậy và bảo mật mà toàn bộ hệ thống mật mã có thể cung cấp càng cao.


GHI CHÚ. Hãy nhớ rằng thuật toán vẫn tĩnh. Tính ngẫu nhiên của quá trình mã hóa được đảm bảo chủ yếu bằng vật liệu chính.


Mặc dù có nhiều phần trong quá trình mã hóa nhưng có hai phần chính: thuật toán và khóa. Như đã nêu trước đó, các thuật toán được sử dụng trong hệ thống máy tính là các công thức toán học phức tạp đưa ra các quy tắc chuyển đổi văn bản gốc thành văn bản mã hóa. Khóa là một chuỗi các bit ngẫu nhiên được thuật toán sử dụng để thêm tính ngẫu nhiên vào quá trình mã hóa. Để hai thực thể giao tiếp bằng mã hóa, chúng phải sử dụng cùng một thuật toán và trong một số trường hợp, cùng một khóa. Trong một số công nghệ mã hóa, người nhận và người gửi sử dụng cùng một khóa, trong khi ở các công nghệ khác, họ phải sử dụng các khóa khác nhau nhưng có liên quan để mã hóa và giải mã thông tin. Các phần sau đây giải thích sự khác biệt giữa hai loại phương pháp mã hóa này.

Các thuật toán mật mã được chia thành thuật toán đối xứng sử dụng khóa đối xứng (còn gọi là khóa bí mật) và thuật toán bất đối xứng , sử dụng khóa bất đối xứng (còn gọi là khóa chung và khóa riêng).

Trong hệ thống mật mã sử dụng mật mã đối xứng, người gửi và người nhận sử dụng hai bản sao của cùng một khóa để mã hóa và giải mã thông tin, như trong Hình 6-8. Do đó, khóa có chức năng kép và được sử dụng trong cả quá trình mã hóa và giải mã. Khóa đối xứng còn được gọi là chìa khóa bí mật, bởi vì Kiểu mã hóa này yêu cầu mỗi người dùng phải giữ bí mật khóa và bảo vệ nó một cách thích hợp. Nếu kẻ tấn công lấy được khóa này, hắn có thể sử dụng nó để giải mã bất kỳ tin nhắn nào được mã hóa trên đó bị chặn.

Hình 6-8. Khi sử dụng thuật toán đối xứng, người gửi và người nhận sử dụng cùng một khóa để mã hóa và giải mã dữ liệu


Mỗi cặp người dùng yêu cầu hai bản sao của cùng một khóa để trao đổi dữ liệu một cách an toàn bằng cách sử dụng mật mã đối xứng. Ví dụ: nếu Dan và Irina cần trao đổi dữ liệu, cả hai đều cần có một bản sao của cùng một khóa. Nếu Dan cũng muốn tương tác với Norm và Dave bằng mật mã đối xứng, anh ấy cần có ba khóa riêng biệt - một khóa cho mỗi người bạn. Đây không phải là vấn đề lớn cho đến khi Dan cần tương tác với hàng trăm người khác trong vài tháng và ghi lại lịch sử các cuộc trò chuyện của mình. Rốt cuộc, điều này sẽ yêu cầu sử dụng khóa thích hợp để trao đổi thư từ với từng người nhận cụ thể. Trong trường hợp này, nó có thể trở thành một nhiệm vụ khó khăn. Nếu mười người cần liên lạc an toàn với nhau bằng mật mã đối xứng, họ sẽ cần 45 khóa. Nếu một trăm người cần tương tác, họ sẽ cần 4950 phím. Công thức tính số lượng khóa đối xứng cần thiết như sau:

Số lượng khóa = N(N – 1)/2, trong đó N là số lượng người đăng ký


Khi sử dụng thuật toán đối xứng, người gửi và người nhận sử dụng cùng một khóa cho quá trình mã hóa và giải mã thông tin. Tính bảo mật của các thuật toán như vậy phụ thuộc hoàn toàn vào mức độ người dùng bảo vệ khóa. Trong trường hợp này, an ninh phụ thuộc hoàn toàn vào nhân viên, họ phải giữ bí mật chìa khóa của mình. Nếu một khóa bị xâm phạm, tất cả các tin nhắn được mã hóa bằng khóa đó có thể bị kẻ tấn công giải mã và đọc. Trên thực tế, nó càng trở nên phức tạp hơn vì các khóa cần được phân phối và cập nhật một cách an toàn khi cần thiết. Nếu Den cần tương tác với Norm lần đầu tiên, Den phải quyết định cách đưa chìa khóa cho Norm một cách an toàn. Nếu anh ta thực hiện việc này theo cách không an toàn, chẳng hạn như chỉ gửi khóa qua email, thì khóa đó có thể dễ dàng bị kẻ tấn công chặn và sử dụng. Vì vậy, Dan phải trao chìa khóa cho Norm một cách khác thường. Ví dụ: Dan có thể ghi chìa khóa vào ổ đĩa flash và đặt nó trên bàn của Norm hoặc gửi nó cho Norm thông qua một người chuyển phát nhanh đáng tin cậy. Quá trình phân phối khóa đối xứng có thể là một nhiệm vụ rất phức tạp và cồng kềnh.

Vì cả hai người dùng đều sử dụng cùng một khóa để mã hóa và giải mã tin nhắn nên hệ thống mật mã đối xứng có thể cung cấp tính bảo mật nhưng không cung cấp tính xác thực hoặc chống chối bỏ. Thuật toán mã hóa như vậy sẽ không cho phép bạn chứng minh ai thực sự đã gửi tin nhắn, bởi vì cả hai người dùng đều sử dụng cùng một khóa.

Nhưng nếu các hệ thống mật mã đối xứng có quá nhiều thiếu sót và vấn đề thì tại sao chúng lại được sử dụng ở hầu hết mọi nơi? Bởi vì chúng cung cấp tốc độ xử lý rất cao và rất khó hack. Các thuật toán đối xứng nhanh hơn nhiều so với các thuật toán bất đối xứng. Họ có thể mã hóa và giải mã lượng lớn dữ liệu tương đối nhanh chóng. Ngoài ra, dữ liệu được mã hóa bằng thuật toán đối xứng sử dụng khóa dài rất khó bị bẻ khóa.

Danh sách sau đây mô tả điểm mạnh và điểm yếu của hệ thống mật mã khóa đối xứng:

Điểm mạnh:

  • Nhanh hơn nhiều so với các hệ thống bất đối xứng
  • Khó hack khi sử dụng phím dài
Các mặt yếu:
  • Yêu cầu cơ chế chuyển khóa an toàn
  • Mỗi cặp người dùng cần một khóa duy nhất; Khi số lượng người dùng tăng lên, số lượng khóa ngày càng tăng có thể khiến việc quản lý chúng trở nên không thực tế.
  • Cung cấp tính bảo mật nhưng không cung cấp tính xác thực hoặc chống chối bỏ
Dưới đây là một số ví dụ về thuật toán đối xứng, sẽ được thảo luận chi tiết sau trong phần Mật mã khối và luồng.
  • RC4, RC5 và RC6
Liên kết liên quan:
  • Bảo mật trong các hệ thống mở, Nút 208, “Mật mã khóa đối xứng,” của Paul Markovitz, Ấn bản đặc biệt 800-7 của NIST (tháng 7 năm 1994)
Trong mật mã khóa đối xứng, cùng một khóa bí mật được sử dụng để mã hóa và giải mã, trong khi ở các hệ thống khóa chung, các khóa khác nhau được sử dụng cho các mục đích này. không đối xứng ) phím. Trong trường hợp này, hai khóa bất đối xứng khác nhau có liên quan về mặt toán học. Nếu tin nhắn được mã hóa bằng một khóa thì cần có một khóa khác để giải mã nó.

Trong các hệ thống khóa công khai, một cặp khóa được tạo ra, một khóa là riêng tư và khóa kia là khóa công khai. Khóa công khai(khóa công khai) có thể được mọi người biết đến và khóa riêng(khóa riêng) chỉ có chủ nhân của nó mới biết. Thông thường, khóa công khai được lưu trữ trong các thư mục và cơ sở dữ liệu về địa chỉ email được cung cấp công khai cho bất kỳ ai muốn sử dụng các khóa đó để mã hóa và giải mã dữ liệu khi tương tác với các cá nhân. Hình 6-9 minh họa việc sử dụng các phím bất đối xứng khác nhau.
Khóa chung và khóa riêng của hệ thống mật mã bất đối xứng có liên quan về mặt toán học, nhưng nếu ai đó có khóa chung của người khác thì không thể biết khóa riêng tương ứng của họ. Do đó, nếu kẻ tấn công lấy được bản sao khóa chung của Bob, điều này không có nghĩa là bằng phép thuật toán học nào đó hắn sẽ có thể lấy được khóa riêng tương ứng của Bob. Tuy nhiên, nếu ai đó nắm giữ được khóa riêng của Bob thì sẽ xảy ra vấn đề lớn. Do đó, không ai khác ngoài chủ sở hữu có quyền truy cập vào khóa riêng.

Hình 6-9. Hệ thống mật mã bất đối xứng


Nếu Bob mã hóa dữ liệu bằng khóa riêng của mình thì người nhận sẽ cần khóa chung của Bob để giải mã dữ liệu đó. Người nhận không chỉ có thể giải mã tin nhắn của Bob mà còn có thể trả lời Bob bằng một tin nhắn được mã hóa. Để làm điều này, anh ta cần mã hóa câu trả lời của mình bằng khóa chung của Bob, sau đó Bob có thể giải mã câu trả lời này bằng khóa riêng của mình. Khi sử dụng thuật toán bất đối xứng, không thể mã hóa và giải mã tin nhắn bằng cùng một khóa; các khóa này, mặc dù có liên quan về mặt toán học nhưng không giống nhau (không giống như các thuật toán đối xứng). Bob có thể mã hóa dữ liệu bằng khóa riêng của mình, sau đó người nhận có thể giải mã dữ liệu bằng khóa chung của Bob. Bằng cách giải mã tin nhắn bằng khóa chung của Bob, người nhận có thể chắc chắn rằng tin nhắn thực sự đến từ Bob, vì tin nhắn chỉ có thể được giải mã bằng khóa chung của Bob nếu nó được mã hóa bằng khóa riêng tương ứng của Bob. Điều này cung cấp khả năng xác thực vì Bob (có lẽ) là người duy nhất có khóa riêng này. Nếu người nhận muốn chắc chắn rằng người duy nhất có thể đọc được phản hồi của mình sẽ là Bob thì anh ta phải mã hóa tin nhắn của mình gửi cho Bob bằng khóa chung của Bob. Khi đó chỉ Bob mới có thể giải mã được tin nhắn này vì chỉ anh ấy mới có khóa riêng cần thiết để làm việc đó.

Ngoài ra, người nhận có thể chọn mã hóa dữ liệu bằng khóa riêng của họ thay vì khóa chung của Bob. Điều này sẽ mang lại cho anh ta những gì? Xác thực. Bob sẽ biết rằng tin nhắn đó là của anh ấy chứ không phải của ai khác. Nếu anh ta mã hóa dữ liệu bằng khóa chung của Bob, điều này sẽ không cung cấp xác thực vì bất kỳ ai cũng có thể lấy được khóa công khai của Bob. Nếu anh ta sử dụng khóa riêng của mình để mã hóa dữ liệu thì Bob có thể chắc chắn rằng tin nhắn đó đến từ anh ta. Khóa đối xứng không cung cấp xác thực vì cả hai bên đều sử dụng cùng một khóa, điều này không thể đảm bảo rằng tin nhắn đến từ một người cụ thể.

Nếu người gửi quan tâm nhiều hơn đến tính bảo mật của thông tin được truyền đi thì anh ta nên mã hóa tin nhắn của mình bằng khóa chung của người nhận. Nó được gọi là định dạng tin nhắn an toàn (định dạng tin nhắn an toàn), vì chỉ người có khóa riêng tương ứng mới có thể giải mã tin nhắn này.

Nếu việc xác thực quan trọng hơn đối với người gửi, anh ta nên mã hóa dữ liệu được truyền bằng khóa riêng của mình. Điều này sẽ cho phép người nhận chắc chắn rằng người mã hóa dữ liệu là người có khóa riêng tương ứng. Nếu người gửi mã hóa dữ liệu bằng khóa chung của người nhận thì điều này không cung cấp xác thực vì khóa công khai có sẵn cho tất cả mọi người.

Mã hóa dữ liệu bằng khóa riêng của người gửi được gọi là mở định dạng tin nhắn (định dạng tin nhắn mở), bởi vì bất kỳ ai cũng có thể giải mã dữ liệu này bằng khóa chung của người gửi. Tính bảo mật không được đảm bảo.

Cả khóa riêng và khóa chung đều có thể được sử dụng để mã hóa và giải mã dữ liệu. Đừng nghĩ rằng khóa chung chỉ cần để mã hóa và khóa riêng chỉ cần để giải mã. Cần hiểu rằng nếu dữ liệu được mã hóa bằng khóa riêng thì không thể giải mã được bằng khóa đó. Dữ liệu được mã hóa bằng khóa riêng có thể được giải mã bằng khóa chung tương ứng. Và ngược lại.

Thuật toán bất đối xứng chậm hơn thuật toán đối xứng vì Các thuật toán đối xứng thực hiện các hàm toán học tương đối đơn giản trên các bit trong quá trình mã hóa và giải mã. Chúng thay thế và xáo trộn (di chuyển) các bit xung quanh, việc này không phức tạp lắm và không sử dụng nhiều CPU. Sở dĩ chúng có khả năng chống hack là vì chúng thực hiện các chức năng này nhiều lần. Do đó, trong các thuật toán đối xứng, một tập hợp các bit trải qua một chuỗi thay thế và hoán vị dài hơn.

Thuật toán bất đối xứng chậm hơn thuật toán đối xứng vì họ sử dụng toán học phức tạp hơn nhiều để thực hiện các chức năng của mình, việc này đòi hỏi nhiều thời gian CPU hơn. Tuy nhiên, các thuật toán bất đối xứng có thể cung cấp khả năng xác thực và chống chối bỏ tùy thuộc vào thuật toán được sử dụng. Ngoài ra, các hệ thống bất đối xứng cho phép quy trình phân phối khóa đơn giản và dễ quản lý hơn các hệ thống đối xứng và không gặp phải các vấn đề về khả năng mở rộng mà các hệ thống đối xứng gặp phải. Lý do cho những khác biệt này là với các hệ thống bất đối xứng, bạn có thể gửi khóa chung của mình cho tất cả những người bạn muốn tương tác, thay vì sử dụng khóa riêng cho từng người trong số họ. Tiếp theo, trong phần Phương pháp mã hóa kết hợp của Miền này, chúng ta sẽ xem xét cách sử dụng hai hệ thống này cùng nhau để đạt được kết quả tốt nhất.

GHI CHÚ. Mật mã khóa công khai là mật mã bất đối xứng. Những thuật ngữ này được sử dụng thay thế cho nhau.

Sau đây là những điểm mạnh và điểm yếu của thuật toán khóa bất đối xứng:

Điểm mạnh

  • Quá trình phân phối khóa tốt hơn hệ thống đối xứng
  • Khả năng mở rộng tốt hơn các hệ thống đối xứng
  • Có thể cung cấp xác thực và chống chối bỏ
Mặt yếu
  • Hoạt động chậm hơn nhiều so với hệ thống đối xứng
  • Thực hiện các phép biến đổi toán học phức tạp
Dưới đây là ví dụ về các thuật toán có khóa bất đối xứng.
  • Hệ thống mật mã đường cong Elliptic (ECC)
  • Thuật toán Diffie-Hellman
  • El Gamal
  • Thuật toán chữ ký số (DSA – Digital Signature Algorithm)
  • ba lô
Chúng tôi sẽ xem xét kỹ hơn các thuật toán này trong Miền này, trong phần “Các loại hệ thống bất đối xứng”.

Bảng 6-1 cung cấp một bản tóm tắt ngắn gọn về những khác biệt chính giữa hệ thống đối xứng và bất đối xứng.

Bảng 6-1. Sự khác biệt giữa hệ thống đối xứng và bất đối xứng


GHI CHÚ. Chữ ký số sẽ được thảo luận sau trong phần Chữ ký số.
Liên kết liên quan:
  • Bảo mật trong các hệ thống mở, Nút 210, “Mật mã khóa bất đối xứng,” của Paul Markovitz, Ấn bản đặc biệt 800-7 của NIST (tháng 7 năm 1994)
  • Các câu hỏi thường gặp về Mật mã ngày nay, Phiên bản 4.1, Phần 2.1.4.5, “Chế độ phản hồi đầu ra là gì?” bởi Phòng thí nghiệm RSA
Có hai loại thuật toán đối xứng chính: mật mã khối, hoạt động trên các khối bit và mật mã dòng, hoạt động trên từng bit một.

Nếu bạn sử dụng để mã hóa và giải mã dữ liệu khóa mật mã , thông điệp được chia thành các khối bit. Các khối này sau đó được chuyển đến các hàm toán học để xử lý, mỗi lần một khối. Hãy tưởng tượng bạn cần mã hóa tin nhắn gửi cho mẹ mình bằng mật mã khối hoạt động theo khối 64 bit. Tin nhắn của bạn dài 640 bit nên được chia thành 10 khối 64 bit riêng biệt. Mỗi khối được truyền tuần tự đến đầu vào của hàm toán học. Quá trình này tiếp tục cho đến khi mỗi khối được chuyển thành bản mã. Sau đó, bạn gửi một tin nhắn được mã hóa cho mẹ bạn. Nó sử dụng cùng một mật mã khối và cùng một khóa. 10 khối bản mã này được đưa vào thuật toán theo thứ tự ngược lại cho đến khi thu được bản rõ gốc.


Để đảm bảo độ mạnh của mật mã, nó phải sử dụng đầy đủ hai phương pháp cơ bản: nhầm lẫn và khuếch tán. Trộn thường được thực hiện bằng cách sử dụng thay thế, trong khi khuếch tán - sử dụng sắp xếp lại. Để một mật mã thực sự mạnh, nó phải sử dụng cả hai phương pháp này để khiến kỹ thuật đảo ngược gần như không thể thực hiện được. Mức độ trộn và phân tán được biểu thị bằng tính ngẫu nhiên của giá trị khóa và độ phức tạp của các hàm toán học được sử dụng.

Trong các thuật toán, sự tán xạ có thể xảy ra ở cả cấp độ của các bit riêng lẻ trong khối và ở cấp độ của chính các khối đó. Việc xáo trộn được thực hiện bằng cách sử dụng các hàm thay thế phức tạp để ngăn kẻ tấn công hiểu cách các giá trị ban đầu được thay thế và lấy được bản rõ gốc. Hãy tưởng tượng rằng tôi có 500 khối gỗ, mỗi khối có một chữ cái trên đó. Tôi xếp chúng thành một tin nhắn (văn bản thuần túy) từ chúng. Sau đó tôi thay thế 300 khối này bằng các khối từ một bộ khác (xáo trộn bằng cách thay thế). Sau đó, tôi sắp xếp lại tất cả các khối này (phân tán bằng cách xáo trộn) và để lại đống này. Để bạn có thể xây dựng lại câu gốc của tôi, bạn cần thay thế các khối bằng các khối đúng và đặt chúng theo đúng trình tự. Chúc may mắn!

Việc xáo trộn được thực hiện để tạo mối quan hệ giữa khóa và bản mã thu được. Mối quan hệ này phải phức tạp nhất có thể để không thể mở khóa dựa trên phân tích bản mã. Mỗi giá trị trong bản mã phải phụ thuộc vào một số phần của khóa, nhưng đối với người quan sát mối quan hệ này giữa các giá trị khóa và giá trị bản mã phải xuất hiện hoàn toàn ngẫu nhiên.

Mặt khác, tán xạ có nghĩa là một bit của bản rõ ảnh hưởng đến nhiều bit của bản mã. Việc thay thế một giá trị trong bản rõ sẽ dẫn đến việc thay thế nhiều giá trị trong bản mã chứ không chỉ một giá trị. Trên thực tế, trong một mật mã khối thực sự mạnh, khi một bit trong bản rõ bị thay đổi thì khoảng 50% số bit trong bản mã sẽ thay đổi. Những thứ kia. Nếu bạn chỉ thay đổi một bit trong bản rõ thì khoảng một nửa bản mã sẽ thay đổi.

Mật mã khối sử dụng cả xáo trộn và phân tán trong phương thức hoạt động của chúng. Hình 6-10 thể hiện một ví dụ khái niệm về mật mã khối đơn giản. Nó được cung cấp bốn khối, mỗi khối bốn bit để xử lý. Thuật toán khối đang được xem xét có hai mức hộp thay thế bốn bit, được gọi là hộp S. Mỗi hộp S chứa các bảng tra cứu được thuật toán sử dụng làm hướng dẫn mã hóa các bit.

Hình 6-10. Thông báo được chia thành các khối bit trên đó các chức năng thay thế và phân tán được thực hiện


Khóa chỉ định (xem Hình 6-10) hộp S nào sẽ được sử dụng trong quá trình xáo trộn thông báo gốc từ bản rõ có thể đọc được sang bản mã không thể đọc được. Mỗi hộp S chứa các phương pháp thay thế và hoán vị khác nhau có thể được thực hiện trên mỗi khối. Đây là một ví dụ rất đơn giản. Trong thực tế, hầu hết các mật mã khối đều hoạt động với các khối 32, 64 hoặc 128 bit và có thể sử dụng nhiều hộp S hơn.

Như đã nêu trước đó, mật mã khối thực hiện các hàm toán học trên các khối bit. Không giống như họ, dòng mật mã (mật mã luồng) không chia thông điệp thành các khối. Chúng xử lý tin nhắn dưới dạng một luồng bit và thực hiện các hàm toán học trên từng bit riêng biệt.

Khi sử dụng mật mã dòng, quá trình mã hóa sẽ chuyển đổi từng bit của văn bản gốc thành một chút văn bản mã hóa. Mật mã dòng sử dụng bộ tạo dòng khóa tạo ra dòng bit được XOR với các bit văn bản gốc để tạo ra văn bản mã hóa. Điều này được thể hiện trong Hình 6-11.

Hình 6-11. Trong mật mã dòng, các bit được tạo bởi bộ tạo dòng khóa được XOR với các bit văn bản gốc của thông báo

GHI CHÚ. Quá trình này rất giống với việc sử dụng các miếng đệm mã hóa một lần được mô tả trước đó. Các bit riêng lẻ trong bảng đệm một lần được sử dụng để mã hóa các bit riêng lẻ của tin nhắn bằng thao tác XOR và trong thuật toán luồng, các bit riêng lẻ được tạo bởi trình tạo luồng khóa cũng được sử dụng để mã hóa các bit của tin nhắn bằng cách sử dụng Hoạt động XOR.

Nếu một hệ thống mật mã chỉ phụ thuộc vào thuật toán dòng đối xứng, kẻ tấn công có thể lấy được một bản sao của bản rõ và bản mã thu được, XOR chúng cùng nhau và tạo ra một dòng khóa đã sử dụng mà sau này hắn có thể sử dụng để giải mã các tin nhắn khác. Vì vậy, những người thông minh đã quyết định nhét chìa khóa vào luồng này.

Trong mật mã khối, khóa xác định chức năng nào được áp dụng cho bản rõ và theo thứ tự nào. Khóa đảm bảo tính ngẫu nhiên của quá trình mã hóa. Như đã nêu trước đó, hầu hết các thuật toán mã hóa đều là nguồn mở nên mọi người biết chúng hoạt động như thế nào. Bí mật duy nhất là chìa khóa. Trong mật mã dòng, tính ngẫu nhiên cũng đạt được thông qua khóa, làm cho dòng bit mà bản rõ được kết hợp ngẫu nhiên nhất có thể. Khái niệm này được minh họa trong Hình 6-12. Như bạn có thể thấy trong hình này, cả người gửi và người nhận đều phải có cùng một khóa để tạo cùng một luồng khóa để có thể mã hóa và giải mã thông tin một cách chính xác.

Hình 6-12. Người gửi và người nhận phải có cùng một khóa để tạo cùng một luồng khóa



Các vectơ khởi tạo (IV) là các giá trị ngẫu nhiên được thuật toán sử dụng để đảm bảo rằng không có mẫu nào trong quá trình mã hóa. Chúng được chia sẻ bằng khóa và không cần mã hóa khi gửi đến người nhận. Nếu không sử dụng vectơ khởi tạo thì hai bản rõ giống hệt nhau được mã hóa bằng cùng một khóa sẽ tạo ra cùng một bản mã. Mẫu như vậy sẽ đơn giản hóa đáng kể nhiệm vụ của kẻ tấn công là phá phương thức mã hóa và tiết lộ khóa. Nếu tin nhắn của bạn có một phần lặp lại (một cụm từ hoặc một từ), bạn cần đảm bảo rằng khi bạn mã hóa từng phần lặp lại của văn bản gốc của tin nhắn, một văn bản mã hóa khác sẽ được tạo, tức là. sẽ không có mẫu nào được tạo. Để đảm bảo tính ngẫu nhiên cao hơn trong quá trình mã hóa, vectơ khởi tạo được sử dụng cùng với khóa.

Mật mã dòng mạnh và hiệu quả có các đặc điểm sau:

  • Các mẫu không lặp lại trong thời gian dài trong các giá trị luồng chính. Các bit được tạo bởi dòng khóa phải là ngẫu nhiên.
  • Luồng khóa không thể đoán trước về mặt thống kê. Các bit được tạo ra ở đầu ra của bộ tạo dòng khóa sẽ không thể đoán trước được.
  • Luồng khóa không có mối quan hệ tuyến tính với khóa. Nếu ai đó đã lấy được các giá trị của luồng khóa thì điều này sẽ không dẫn đến việc họ nhận được giá trị khóa.
  • Luồng khóa thống nhất về mặt thống kê (số lượng số 0 và số 1 gần bằng nhau). Luồng khóa không được bị chi phối bởi số 0 hoặc số 1.
Mật mã dòng yêu cầu tính ngẫu nhiên và mã hóa từng bit một. Điều này đòi hỏi nhiều tài nguyên CPU hơn mật mã khối, do đó, mật mã dòng phù hợp hơn để triển khai trong phần cứng. Và mật mã khối, vì chúng không yêu cầu nhiều tài nguyên bộ xử lý nên dễ thực hiện hơn ở cấp độ phần mềm.
GHI CHÚ. Tất nhiên, có cả mật mã khối, được triển khai ở cấp độ phần cứng và mật mã dòng, hoạt động ở cấp độ phần mềm. Tuyên bố trên chỉ đơn giản là hướng dẫn thiết kế và triển khai "cách thực hành tốt nhất".


Truyền mật mã và miếng đệm một lần. Mật mã dòng cung cấp cùng loại bảo mật như các miếng đệm một lần, vì vậy chúng hoạt động theo cách tương tự. Mật mã dòng thực sự không thể cung cấp mức độ bảo mật giống như các miếng đệm một lần vì chúng được thực hiện dưới dạng phần mềm và công cụ tự động. Tuy nhiên, điều này làm cho mật mã dòng trở nên thực tế hơn.


Trước đây, chúng ta đã xem xét các thuật toán đối xứng và bất đối xứng và lưu ý rằng thuật toán đối xứng nhanh nhưng có một số nhược điểm (khả năng mở rộng kém, quản lý khóa phức tạp, chỉ cung cấp tính bảo mật), trong khi thuật toán bất đối xứng không có những nhược điểm này nhưng chúng rất chậm. Bây giờ chúng ta hãy xem xét các hệ thống lai sử dụng cả phương pháp mã hóa đối xứng và bất đối xứng.

Sử dụng kết hợp các thuật toán bất đối xứng và đối xứng


Mật mã khóa công khai sử dụng hai khóa (công khai và riêng tư) được tạo bởi thuật toán bất đối xứng, nó được sử dụng để bảo vệ các khóa mã hóa và phân phối chúng. Khóa bí mật được tạo bằng thuật toán đối xứng và được sử dụng cho quá trình mã hóa chính. Đây là sự sử dụng kết hợp của hai thuật toán khác nhau: đối xứng và bất đối xứng. Mỗi thuật toán đều có những ưu điểm và nhược điểm riêng và việc sử dụng chúng cùng nhau cho phép bạn tận dụng tối đa từng thuật toán.

Trong phương pháp kết hợp, hai công nghệ này bổ sung cho nhau, mỗi công nghệ thực hiện các chức năng riêng của mình. Thuật toán đối xứng tạo ra các khóa dùng để mã hóa phần lớn dữ liệu, trong khi thuật toán bất đối xứng tạo ra các khóa dùng để tự động phân phối khóa đối xứng.

Khóa đối xứng được sử dụng để mã hóa tin nhắn bạn gửi. Khi bạn của bạn nhận được tin nhắn mà bạn đã mã hóa, anh ta cần giải mã nó, việc này yêu cầu khóa đối xứng mà tin nhắn của bạn được mã hóa. Nhưng bạn không muốn gửi khóa này một cách không an toàn vì... tin nhắn có thể bị chặn và kẻ tấn công có thể lấy khóa không được bảo vệ từ tin nhắn đó để sử dụng sau này nhằm giải mã và đọc tin nhắn của bạn. Bạn không nên sử dụng khóa đối xứng để mã hóa tin nhắn trừ khi nó được bảo vệ đúng cách. Để bảo mật khóa đối xứng, có thể sử dụng thuật toán bất đối xứng để mã hóa nó (xem Hình 6-13). Nhưng tại sao chúng ta lại sử dụng khóa đối xứng để mã hóa tin nhắn và khóa bất đối xứng để mã hóa khóa đối xứng? Như đã đề cập trước đó, thuật toán bất đối xứng chậm vì nó sử dụng toán học phức tạp hơn. Và vì tin nhắn của bạn rất có thể sẽ dài hơn khóa, nên sử dụng thuật toán nhanh hơn (đối xứng) để mã hóa nó và thuật toán chậm hơn (không đối xứng) cung cấp các dịch vụ bảo mật bổ sung sẽ phù hợp để mã hóa khóa.

Hình 6-13. Trong hệ thống lai, khóa bất đối xứng được sử dụng để mã hóa khóa đối xứng và khóa đối xứng được sử dụng để mã hóa tin nhắn


Điều này hoạt động như thế nào trong thực tế? Giả sử Bill gửi cho Paul một tin nhắn và chỉ muốn Paul có thể đọc được nó. Bill mã hóa tin nhắn bằng khóa bí mật, bây giờ nó có bản mã và khóa đối xứng. Khóa phải được bảo vệ nên Bill mã hóa khóa đối xứng bằng khóa bất đối xứng. Thuật toán bất đối xứng sử dụng khóa riêng và khóa chung, vì vậy Bill mã hóa khóa đối xứng bằng khóa chung của Paul. Bây giờ Bill có bản mã tin nhắn và bản mã khóa đối xứng. Tại sao Bill mã hóa khóa đối xứng bằng khóa chung của Paul mà không phải bằng khóa riêng của anh ấy? Nếu Bill mã hóa nó bằng khóa riêng của mình thì bất kỳ ai cũng có thể giải mã nó bằng khóa chung của Bill và nhận được khóa đối xứng. Tuy nhiên, Bill không muốn bất kỳ ai có khóa công khai của mình có thể đọc được tin nhắn của mình gửi cho Paul. Bill chỉ muốn Paul có cơ hội này. Vì vậy Bill đã mã hóa khóa đối xứng bằng khóa chung của Paul. Nếu Paul bảo vệ tốt khóa riêng của mình thì chỉ có anh ấy mới có thể đọc được tin nhắn của Bill.

Paul nhận được tin nhắn của Bill và sử dụng khóa riêng của anh ấy để giải mã khóa đối xứng. Sau đó Paul sử dụng khóa đối xứng để giải mã tin nhắn. Bây giờ Paul có thể đọc được một tin nhắn quan trọng và bí mật từ Bill.

Khi chúng tôi nói rằng Bill sử dụng một khóa để mã hóa tin nhắn và Paul sử dụng cùng một khóa để giải mã nó, điều này không có nghĩa là họ thực hiện tất cả các thao tác này một cách thủ công. Phần mềm hiện đại thực hiện tất cả những điều này cho chúng ta mà không yêu cầu chúng ta phải có kiến ​​thức đặc biệt để sử dụng nó.

Mọi thứ ở đây khá đơn giản, bạn cần nhớ các khía cạnh sau:

  • Thuật toán bất đối xứng thực hiện mã hóa và giải mã bằng cách sử dụng khóa riêng và khóa chung có liên quan về mặt toán học.
  • Thuật toán đối xứng thực hiện mã hóa và giải mã bằng khóa bí mật chung.
  • Khóa đối xứng (bí mật) được sử dụng để mã hóa tin nhắn thực.
  • Khóa chung được sử dụng để mã hóa khóa đối xứng để truyền an toàn.
  • Khóa bí mật giống như khóa đối xứng.
  • Khóa bất đối xứng có thể là riêng tư hoặc công khai.
Vì vậy, khi sử dụng hệ thống kết hợp, thuật toán đối xứng sẽ tạo một khóa bí mật dùng để mã hóa dữ liệu hoặc tin nhắn và khóa bất đối xứng sẽ mã hóa khóa bí mật.

Khóa phiên (khóa phiên) là khóa đối xứng được sử dụng để mã hóa tin nhắn trao đổi giữa hai người dùng. Khóa phiên không khác gì khóa đối xứng được mô tả trước đó nhưng nó chỉ hợp lệ cho một phiên giao tiếp giữa những người dùng.

Nếu Tanya có một khóa đối xứng mà cô ấy thường xuyên sử dụng để mã hóa tin nhắn giữa cô ấy và Lance thì khóa đối xứng đó không cần phải được tạo lại hoặc thay đổi. Họ chỉ cần sử dụng cùng một khóa mỗi khi tương tác bằng mã hóa. Tuy nhiên, việc sử dụng lại cùng một khóa trong thời gian dài sẽ làm tăng khả năng bị chặn và xâm phạm thông tin liên lạc an toàn. Để tránh điều này, bạn nên tạo một khóa đối xứng mới mỗi lần Tanya và Lance cần liên lạc và chỉ sử dụng nó cho một phiên giao tiếp, sau đó hủy nó (xem Hình 6-14). Ngay cả khi họ cần tương tác lại chỉ sau một giờ, khóa phiên mới sẽ được tạo.

Hình 6-14. Khóa phiên được tạo cho mỗi phiên tương tác của người dùng và chỉ có hiệu lực trong phiên đó


Phong bì kỹ thuật số. Khi mọi người lần đầu tiên làm quen với mật mã, việc sử dụng các thuật toán đối xứng và bất đối xứng cùng nhau có thể gây nhầm lẫn. Tuy nhiên, những khái niệm này rất quan trọng để hiểu vì chúng thực sự là những khái niệm cơ bản, cốt lõi của mật mã. Quá trình này không chỉ được sử dụng trong ứng dụng email hoặc trong một số sản phẩm, nó còn xác định thứ tự xử lý dữ liệu và khóa đối xứng khi truyền đi.
Việc sử dụng kết hợp hai công nghệ này được gọi là phương pháp kết hợp, nhưng nó cũng có tên tổng quát hơn - phong bì kỹ thuật số (phong bì kỹ thuật số).




Khóa phiên cung cấp mức độ bảo vệ cao hơn so với khóa đối xứng tĩnh, bởi vì nó chỉ có giá trị trong một phiên giao tiếp giữa hai máy tính. Nếu kẻ tấn công có thể chặn khóa phiên, hắn sẽ có thể sử dụng nó để truy cập trái phép vào thông tin được truyền chỉ trong một khoảng thời gian ngắn.

Nếu hai máy tính cần giao tiếp bằng mã hóa, trước tiên chúng phải trải qua quy trình “bắt tay”, trong đó chúng đồng ý về thuật toán mã hóa sẽ được sử dụng để truyền khóa phiên nhằm mã hóa thêm dữ liệu khi máy tính giao tiếp. Về cơ bản, hai máy tính thiết lập kết nối ảo với nhau, gọi là phiên. Sau khi phiên kết thúc, mỗi máy tính sẽ hủy mọi cấu trúc dữ liệu được tạo cho phiên đó, giải phóng tài nguyên và hủy khóa phiên đã sử dụng. Hệ điều hành và các ứng dụng thực hiện những việc này ở chế độ nền và người dùng không cần phải lo lắng về điều đó. Tuy nhiên, chuyên gia bảo mật phải hiểu sự khác biệt giữa các loại khóa và các vấn đề liên quan đến chúng.


GHI CHÚ. Khóa riêng và khóa đối xứng không được lưu trữ và/hoặc truyền dưới dạng bản rõ. Mặc dù điều này có vẻ hiển nhiên nhưng nhiều sản phẩm phần mềm đã bị xâm phạm vì lý do này.

Vấn đề bảo mật không dây. Chúng tôi đã xem xét các tiêu chuẩn 802.11 khác nhau và giao thức WEP trong Miền 05. Trong số danh sách rộng lớn các vấn đề với WEP, có một vấn đề liên quan đến mã hóa dữ liệu. Nếu chỉ sử dụng WEP để mã hóa lưu lượng không dây thì hầu hết các triển khai chỉ sử dụng một khóa đối xứng thống kê để mã hóa các gói. Một trong những thay đổi và ưu điểm của chuẩn 802.11i là nó đảm bảo rằng mỗi gói được mã hóa bằng một khóa phiên duy nhất.