Thuật toán mã hóa IDEA. Thuật toán mã hóa Threefish. Chế độ OFB, giống như CFB, dựa trên luồng, nghĩa là hàm được gọi trong thuật toán trước khi tính tổng với một phần văn bản gốc. Nhưng lần này đầu vào không phải là bản mã từ lần lặp trước mà là về

Gửi công việc tốt của bạn trong cơ sở kiến ​​thức thật đơn giản. Sử dụng mẫu dưới đây

Làm tốt lắm vào trang web">

Các sinh viên, nghiên cứu sinh, các nhà khoa học trẻ sử dụng nền tảng kiến ​​thức trong học tập và công việc sẽ rất biết ơn các bạn.

Đăng trên http://www.allbest.ru/

GIỚI THIỆU

1. PHẦN PHÂN TÍCH

1.1 Thuật toán IDEA

1.2.1 Thuật toán DES

1.2.2 Thuật toán RC6

1.2.3 Thuật toán GOST 28147-89

1.2.4 Ưu điểm của IDEA so với các sản phẩm tương tự

1.4.1 Sổ Mã Điện Tử – Sổ Mã Điện Tử

1.4.2 Cipher Feed Back - tải ngược bản mã

1.4.3 Output Feed Back - tải ngược dữ liệu đầu ra

1.4.4 Bộ đếm - mã hóa bằng bộ đếm

1.4.5 Ưu điểm của Chuỗi khối mật mã so với các chuỗi tương tự

2. PHẦN THIẾT KẾ

2.3 Triển khai phần mềm

3. THỬ NGHIỆM

PHẦN KẾT LUẬN

THƯ MỤC

GIỚI THIỆU

Hệ thống mật mã đối xứng (cũng là mã hóa đối xứng, mật mã đối xứng) là một phương pháp mã hóa trong đó cùng một dữ liệu được sử dụng để mã hóa và giải mã. khóa mật mã. Trước khi phát minh ra mạch a mã hóa đối xứng phương pháp duy nhất tồn tại là mã hóa đối xứng. Khóa thuật toán phải được cả hai bên giữ bí mật. Khóa thuật toán được các bên chọn trước khi bắt đầu trao đổi tin nhắn.

Các thuật toán mã hóa và giải mã dữ liệu được sử dụng rộng rãi trong công nghệ máy tính trong các hệ thống che giấu bí mật và thông tin thương mại khỏi việc sử dụng có mục đích xấu các bên thứ ba. Nguyên tắc chính trong chúng là điều kiện là người phát và người nhận biết trước thuật toán mã hóa, cũng như khóa của tin nhắn, nếu không có thuật toán đó thì thông tin chỉ là một tập hợp các ký hiệu không có ý nghĩa.

Một ví dụ kinh điển về các thuật toán như vậy là các thuật toán mã hóa đối xứng được liệt kê dưới đây: - thay thế đơn giản;

- hoán vị đơn theo khóa;

- hoán vị kép;

- hoán vị "Hình vuông ma thuật";

- một sự sắp xếp lại đơn giản.

Mất hoàn toàn tất cả các mẫu thống kê tin nhắn gốcyêu cầu quan trọng thành mật mã đối xứng. Để làm được điều này, mật mã phải có “hiệu ứng tuyết lở”, tức là. Cần có sự thay đổi mạnh mẽ trong khối mã hóa với sự thay đổi 1 bit trong dữ liệu đầu vào (lý tưởng nhất là giá trị 1/2 bit của khối mã hóa nên thay đổi).

Hiện nay, mật mã đối xứng là:

· khối mật mã. Xử lý thông tin theo khối có độ dài nhất định (thường là 64, 128 bit), áp dụng khóa cho khối trong theo cách 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 mở và đượ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.

Có nhiều thuật toán mật mã đối xứng, các tham số cơ bản là:

· Độ bền;

· độ dài khóa;

· số vòng;

chiều dài của khối được xử lý;

· sự phức tạp của việc triển khai phần cứng/phần mềm;

· độ phức tạp của chuyển đổi.

1. PHẦN PHÂN TÍCH

1.1 Thuật toán IDEA

IDEA (tiếng Anh: International Data Encryption Algorithm, thuật toán mã hóa dữ liệu quốc tế) - đối xứng thuật toán khối mã hóa dữ liệu được cấp bằng sáng chế bởi công ty Ascom của Thụy Sĩ. Đây là thuật toán mã hóa khối đối xứng được đề xuất để thay thế tiêu chuẩn DES. Phiên bản đầu tiên Thuật toán IDEA xuất hiện vào năm 1990. Các nhà phát triển thuật toán, Xuejia Lai và James Massey từ Viện ETH Zurich của Thụy Sĩ, đã đặt cho nó cái tên PES (Đề xuất Tiêu chuẩn mã hóa-tiêu chuẩn mã hóa được đề xuất).

Vì IDEA sử dụng khóa 128 bit và kích thước khối 64 bit, văn bản thôđược chia thành các khối 64 bit. Nếu không thể phân vùng như vậy, khối cuối cùng bổ sung những cách khác một trình tự nhất định chút. Để tránh rò rỉ thông tin về từng khối riêng lẻ, nhiều chế độ khác nhau mã hóa. Mỗi khối 64 bit không được mã hóa ban đầu được chia thành bốn khối con, mỗi khối 16 bit, vì tất cả các phép toán đại số được sử dụng trong quá trình mã hóa đều được thực hiện trên các số 16 bit. IDEA sử dụng cùng một thuật toán để mã hóa và giải mã.

IDEA sử dụng các phép toán sau:

? phép cộng bitwise modulo 2 (phép toán OR độc quyền);

? phép cộng các số nguyên không dấu modulo 2 16 ;

? nhân các số nguyên không dấu theo modulo (2 16 +1), với khối 16 số 0 được coi là 2 16 ;

Một bất lợi đáng kể là IDEA đã được cấp bằng sáng chế, vì điều này ngăn cản việc phân phối miễn phí nó. IDEA không cung cấp khả năng tăng độ dài khóa. Một nhược điểm khác có thể coi là không phải tất cả các công trình về giải mã đều được xuất bản, tức là rất có thể mật mã đã bị phá, hoặc sẽ bị phá trong tương lai.

Cấu trúc của thuật toán IDEA được trình bày bên dưới (Hình 1).

Cơm. 1. Thuật toán mã hóa IDEA

· Chế độ sổ mã điện tử (ECB - Sổ mã điện tử)

· Chế độ xâu chuỗi khối (CBC - Cipher Block Chaining)

· cách thức nhận xét bằng bản mã (CFB - Phản hồi về mật mã)

· Chế độ phản hồi đầu ra (OFB -- Output Feed Back).

Trong này khóa họcđang được xem xét triển khai phần mềm Thuật toán mã hóa IDEA (Chế độ Cipher Feed Back).

1.2 So sánh các điểm tương tự của thuật toán IDEA

1.2.1 Thuật toán DES

DES (Tiêu chuẩn mã hóa dữ liệu) - Thuật toán mã hóa đối xứng trong đó một khóa được sử dụng để mã hóa và giải mã dữ liệu. DES có các khối 64 bit và cấu trúc mạng Feistel 16 chu kỳ; nó sử dụng khóa 56 bit để mã hóa.

Thuật toán sử dụng kết hợp các phép biến đổi phi tuyến (hộp S) và tuyến tính (hoán vị E, IP, IP-1).

Do DES hoạt động trong các khối 64 bit và sử dụng khóa 56 bit, độ dài khóa này tương ứng với 256 kết hợp, cho đến gần đây đã cung cấp đủ mức bảo mật (8 bit chẵn của khóa 64 bit đầy đủ không được sử dụng, các bit chẵn lẻ là các byte khóa bit có trọng số thấp nhất). Khối dữ liệu đầu vào, bao gồm 64 bit, được chuyển đổi thành khối đầu ra có độ dài giống hệt nhau.

Do sử dụng khóa mã hóa 56 bit, thuật toán DES có thể bị bẻ khóa bằng vũ lực trên bất kỳ hệ thống máy tính hiện đại nào trong khung thời gian rất thực tế - vài ngày.

DES hệ thống mật mã đối xứng, được định nghĩa là mật mã Feistel 16 vòng, ban đầu được dùng để triển khai phần cứng. Khi DES được sử dụng để truyền thông tin, để mã hóa và giải mã tin nhắn hoặc để tạo và xác minh mã xác thực tin nhắn (MAC), người gửi và người nhận phải biết khóa bí mật.

Quá trình mã hóa của thuật toán DES bao gồm hoán vị ban đầu các bit của khối 64 bit, mười sáu chu kỳ mã hóa và cuối cùng là hoán vị bit ngược (Hình 2).

Hình 2. Thuật toán mã hóa DES

1.2.2 Thuật toán RC6

Thuật toán RC6 là một thuật toán mã hóa khối đối xứng có nguồn gốc từ thuật toán RC5.

Mật mã RC6 tham gia cuộc thi AES hỗ trợ độ dài khối 128 bit và độ dài khóa 128-, 192- và 256-bit, nhưng bản thân thuật toán có thể được cấu hình để hỗ trợ phạm vi rộng hơn của cả độ dài khối và khóa (từ 0 đến 2040 bit).

Là người vào chung kết AES và sử dụng hầu hết mọi thứ công nghệ hiện có, được sử dụng trong các thuật toán mã hóa, tuy nhiên, một trong những hoạt động nguyên thủy là hoạt động nhân, thực hiện chậm trên một số thiết bị và gây khó khăn cho việc triển khai mật mã trên một số nền tảng phần cứng và điều này hóa ra lại gây bất ngờ cho các tác giả, trên các hệ thống với Kiến trúc Intel IA-64 cũng được triển khai khá kém. TRONG trong trường hợp này thuật toán mất đi một trong những ưu điểm chính của nó -- tốc độ cao thực hiện, điều này đã trở thành lý do bị chỉ trích và là một trong những trở ngại cho việc được chọn làm tiêu chuẩn mới.

Cơm. 3. Thuật toán mã hóa RC6

Cấu trúc mã hóa của thuật toán RC6 được thể hiện trong Hình 3. Mô tả ngắn gọn về thuật toán: thuật toán sử dụng 20 vòng biến đổi, trước đó thực hiện làm trắng một phần đầu vào:

o B = B + K 0 mod 2 32

o D = D + K 1 mod 2 32 ,

trong đó A, B, C, D là giá trị hiện tại của các khối con 32 bit đã được xử lý và K 0 ...K 43 là các đoạn của khóa mở rộng.

Tẩy trắng từng phần được thực hiện theo cách tương tự:

o A = A + K 42 mod 2 32

o C = C + K 43 mod 2 32 .

Trong mỗi vòng của thuật toán, các hành động sau được thực hiện:

o t 1 = f(B)<<< 5,

o t 2 = f(D)<<< 5,

o A = ((A E t 1)<<< t 2) + K 2i mod 2 32 ,

o C = ((C E t 2)<<< t 1) + K 2i+1 mod 2 32 ,

trong đó t 1 và t 2 là các biến tạm thời, số bit quay trên mỗi biến số bit được xác định bằng giá trị của 5 bit có trọng số nhỏ nhất của tham số (t 1 hoặc t 2), hàm f() thực hiện như sau phép biến đổi bậc hai:

f(x) = x * (2x + 1) mod 2 32 .

Vào cuối mỗi vòng, các khối con được dịch chuyển.

Ưu điểm của thuật toán:

· Cấu trúc đơn giản của thuật toán tạo điều kiện thuận lợi cho việc phân tích.

· Thuật toán cuối cùng nhanh nhất của AES trên nền tảng 32-bit.

· Mã hóa và giải mã trong thuật toán RC6 gần như giống hệt nhau. Nhược điểm của thuật toán:

· Tốc độ mã hóa phần mềm phụ thuộc nhiều vào việc nền tảng có hỗ trợ phép nhân 32 bit và xoay bit biến đổi hay không.

· RC6 khó triển khai về phần cứng và trong điều kiện nguồn lực hạn chế.

· Khá khó để bảo vệ chống lại các cuộc tấn công về thời gian thực hiện và mức tiêu thụ điện năng.

· Không hỗ trợ đầy đủ việc mở rộng khóa nhanh chóng.

· Song song hóa các phép tính khi mã hóa bằng thuật toán RC6 là khả thi nhưng có hạn chế.

1.2.3 Thuật toán GOST 28147-89

GOST 28147-89 là tiêu chuẩn mã hóa đối xứng của Liên Xô và Nga được giới thiệu vào năm 1990, cũng là tiêu chuẩn CIS. Tên đầy đủ - Hệ thống xử lý thông tin GOST 28147-89. Bảo vệ mật mã. Thuật toán chuyển đổi mật mã".

Cấu trúc của thuật toán được trình bày dưới đây (Hình 4).

Cơm. 4. Thuật toán mã hóa GOST 28147-89

Thuật toán mã hóa khối. Khi sử dụng phương pháp mã hóa gamma, nó có thể thực hiện các chức năng của thuật toán mã hóa dòng. GOST 28147-89 - mật mã khối có khóa 256 bit và 32 chu kỳ chuyển đổi, hoạt động trên khối 64 bit. Cơ sở của thuật toán mã hóa là mạng Feistel. Có bốn chế độ hoạt động theo GOST 28147-89: thay thế đơn giản, chơi trò chơi, chơi trò chơi có phản hồi và chế độ tạo mô phỏng chèn.

Ưu điểm của thuật toán: sự vô ích của một cuộc tấn công vũ lực, hiệu quả thực hiện và theo đó, hiệu suất cao trên các máy tính hiện đại, sự hiện diện của tính năng bảo vệ chống lại việc áp đặt dữ liệu sai (tạo ra chèn bắt chước) và cùng một chu trình mã hóa trong tất cả bốn thuật toán GOST, khóa lớn hơn so với thuật toán DESX.

Nhược điểm của thuật toán: Các vấn đề chính của GOST liên quan đến tính chưa hoàn thiện của tiêu chuẩn về việc tạo khóa và bảng thay thế. Người ta tin rằng GOST có các khóa và bảng thay thế “yếu”, nhưng tiêu chuẩn không mô tả các tiêu chí để lựa chọn và loại bỏ các khóa “yếu”. Ngoài ra, tiêu chuẩn không chỉ định thuật toán tạo bảng thay thế (hộp S). Một mặt, đây có thể là thông tin bí mật bổ sung (ngoài khóa), mặt khác, nó đặt ra một số vấn đề: không thể xác định độ mạnh mật mã của thuật toán nếu không biết trước bảng thay thế ; việc triển khai thuật toán từ các nhà sản xuất khác nhau có thể sử dụng các bảng thay thế khác nhau và có thể không tương thích với nhau; khả năng các cơ quan cấp phép của Liên bang Nga cố tình cung cấp các bảng thay thế yếu.

1.2.4 Ưu điểm Ý TƯỞNG đi trước các chất tương tự

Trong việc triển khai phần mềm trên Intel486SX nhanh gấp đôi so với DES IDEA, đây là một sự gia tăng đáng kể về tốc độ; độ dài khóa của IDEA là 128 bit, so với 56 bit của DES, đây là một cải tiến tốt so với các phím mạnh. Xác suất sử dụng khóa yếu là rất nhỏ và lên tới 1/2 64 . IDEA nhanh hơn thuật toán GOST 28147-89 (trong triển khai phần mềm trên Intel486SX). Sử dụng IDEA ở chế độ mã hóa song song trên bộ xử lý Pentium III và Pentium MMX cho phép đạt được tốc độ cao. So với các sản phẩm lọt vào vòng chung kết AES, IDEA 4 chiều chỉ chậm hơn RC6 và Rijndael trên Pentium II một chút, nhưng nhanh hơn Twofish và MARS. Trên Pentium III IDEA 4 chiều thậm chí còn nhanh hơn RC6 và Rijndael. Một ưu điểm khác là nó được nghiên cứu kỹ lưỡng và có khả năng chống lại các công cụ phân tích mật mã nổi tiếng.

1.3 Chế độ Cipher Block Chaining - xâu chuỗi các khối bằng bản mã

Trong chế độ mã hóa CBC, tất cả các khối tin nhắn được “nối” bằng văn bản mã hóa.

Trong thuật toán mã hóa, hàm đầu vào mỗi lần nhận được kết quả của phép tính tổng modulo 2 của dữ liệu mở của khối thông báo tiếp theo và hàm đầu ra của khối trước đó. Vì dữ liệu đầu ra của hàm cho khối tiếp theo đi thẳng đến đầu ra của thuật toán CBC, tức là nó là bản mã của khối này, đồng thời đi đến đầu vào của cùng một hàm để mã hóa khối tiếp theo, họ nói rằng các khối được xâu chuỗi bằng cách sử dụng bản mã. Khối dữ liệu mở đầu tiên được tóm tắt bằng cái gọi là. vectơ khởi tạo.

Vectơ khởi tạo này được cả người gửi và người nhận biết ngay khi bắt đầu phiên giao tiếp (do đó, nó thường được gọi đơn giản là tin nhắn đồng bộ hóa). Theo đó, quá trình giải mã diễn ra theo thứ tự ngược lại - đầu tiên, một hàm được áp dụng cho văn bản mã hóa, sau đó được tính tổng với khối văn bản mã hóa trước đó để thu được khối văn bản gốc tiếp theo ở đầu ra của thuật toán. Khối bản rõ đầu tiên một lần nữa được xây dựng lại bằng cách sử dụng vectơ khởi tạo.

Vì vậy, với mọi i = 1...n, khối bản mã C(i) được định nghĩa như sau:

C(i) = IDEA(M(i) xor C(i-1)),

Việc giải mã được thực hiện như sau:

M(i) = C(i-1) xor IDEA-1(C(i)),

Khối M(i) chỉ là hàm của C(i-1) và C(i). Vì vậy, một lỗi truyền tải sẽ dẫn đến việc chỉ mất đi hai khối văn bản nguồn.

1.4 So sánh các điểm tương tự của chế độ mã hóa CBC

Khi sử dụng mật mã khối, các sơ đồ mã hóa khác nhau sẽ được sử dụng, được gọi là chế độ vận hành mã hóa cho mật mã khối. Rõ ràng là việc sử dụng chế độ mã hóa này hoặc chế độ mã hóa khác sẽ không ảnh hưởng tiêu cực đến hiệu quả và đặc biệt là độ mạnh mật mã của mật mã khối. Chế độ mã hóa cho phép bạn triển khai các chức năng bổ sung còn thiếu trong thiết kế mật mã khối ban đầu.

1.4.1 Sổ mã điện tử - Sổ mã điện tử

Chế độ này là một dạng điện tử tương tự của chế độ được các tác nhân sử dụng để gửi lại các tin nhắn được mã hóa ngay từ đầu. Thế kỷ XX. Đặc vụ nhận được một cuốn sổ, mỗi trang trong đó chứa một chuỗi duy nhất - một mã dùng để mã hóa tin nhắn. Sau khi sử dụng, trang đó đã bị xé ra khỏi sổ và bị tiêu hủy. Nếu cần, thông báo đã được bổ sung để không còn mã nào chưa sử dụng trên các trang bị xé ra. Bên nhận đã có một bản sao của sổ ghi chú, do đó, với điều kiện các trang được sử dụng đồng bộ, chế độ mã hóa này cung cấp cả chức năng mã hóa và giải mã tin nhắn. Trong ECB, việc sử dụng một trang của sổ mã khi mã hóa tương ứng với việc áp dụng phép chuyển đổi cho dữ liệu đầu vào bằng hàm CIPH k và khi giải mã - CIPH -1 k. Để đồng bộ, chỉ cần hai bên đồng ý về giá trị của khóa bí mật K là đủ.

Như có thể thấy trong hình, toàn bộ thuật toán ECB bao gồm các hàm áp dụng trực tiếp cho cả thông báo và bản mã để mã hóa và giải mã, tương ứng, cũng có thể được biểu thị dưới dạng phương trình: Mã hóa ECB:

C j = CIPH K (P j),

trong đó j=1…n

Giải mã ECB:

Pj = CIPH K (Cj),

trong đó j=1…n

Do đó, mã hóa xảy ra theo các khối tương ứng với kích thước của dữ liệu đầu vào/đầu ra cho các chức năng và. Các khối được mã hóa riêng biệt và độc lập với nhau, cho phép việc này được thực hiện song song. Ưu điểm này của chế độ ECB và tính đơn giản của nó bị che lấp bởi hai nhược điểm đáng kể. Đầu tiên là độ dài của tin nhắn phải là bội số của độ dài khối dữ liệu đầu vào của mật mã khối, nghĩa là toàn bộ tin nhắn có thể được chia thành một số nguyên của các khối đó hoặc cần phải bằng cách nào đó bổ sung khối cuối cùng với dữ liệu không mang thông tin. Hạn chế thứ hai thậm chí còn đáng kể hơn.

Vì trong quá trình mã hóa, khối bản mã tiếp theo chỉ được xác định hoàn toàn bởi khối bản rõ tương ứng và giá trị của khóa bí mật K, nên các khối bản rõ giống hệt nhau sẽ được chuyển đổi ở chế độ này thành các khối bản mã giống hệt nhau. Và điều này đôi khi là điều không mong muốn, vì nó có thể là chìa khóa để phân tích nội dung của tin nhắn. Ví dụ: nếu dữ liệu trên ổ cứng được mã hóa, thì khoảng trống sẽ được lấp đầy bằng các byte tương tự còn lại khi định dạng đĩa. Điều này có nghĩa là từ bản mã có thể đoán được kích thước của thông tin hữu ích trên đĩa. Trong những trường hợp như vậy, bạn cần sử dụng các chế độ mã hóa khác.

1.4.2 Phản hồi về mật mã

Phản hồi bằng mật mã Chế độ phản hồi của văn bản mã hóa là một trong những sơ đồ mã hóa đối xứng trong đó khối văn bản được mã hóa là phép cộng theo bit của khối văn bản gốc với kết quả được mã hóa của khối văn bản trước đó. Nó có một sửa đổi cho phép bạn mã hóa dữ liệu có kích thước nhỏ hơn kích thước của khối mật mã, giúp mã hóa luồng dữ liệu mà không cần đợi số bit cần thiết đến đầu vào.

Trong chế độ này, kích thước khối có thể khác với 64. Tệp nguồn M được đọc theo các khối t-bit liên tiếp (t<= 64): M = M(1)M(2)...M(n) (остаток дописывается нулями или пробелами).

Thanh ghi dịch chuyển 64 bit (khối đầu vào) trước tiên chứa IV căn phải. Đối với mỗi phiên mã hóa, một vectơ khởi tạo mới được sử dụng.

Với mọi i = 1...n, khối bản mã C(i) được định nghĩa như sau:

C(i) = M(i) xor P(i-1),

trong đó P(i-1) là t bit quan trọng nhất của phép toán IDEA(C(i-1)) và C(0) = IV.

Thanh ghi dịch được cập nhật bằng cách loại bỏ các bit t cao nhất và thêm C(i) vào bên phải.

Việc khôi phục dữ liệu được mã hóa cũng dễ dàng: P(i-1) và C(i) được tính theo cách tương tự và M(i) = C(i) xor P(i-1).

1.4.3 Phản hồi đầu ra

Chế độ OFB, giống như CFB, là chế độ nội tuyến, nghĩa là chức năng được gọi trong thuật toán trước khi tính tổng với một phần bản rõ. Nhưng lần này đầu vào không phải là bản mã từ lần lặp trước mà chỉ đơn giản là dữ liệu đầu ra của nó. Đó là, các vòng lặp chức năng.

Trong tình huống như vậy, điều quan trọng là phải sử dụng vectơ khởi tạo một lần. Giả sử hai tin nhắn khác nhau được mã hóa ở chế độ OFB bằng cách sử dụng cùng một vectơ khởi tạo. Sau đó, nếu kẻ tấn công biết được bất kỳ khối văn bản gốc thứ j nào của tin nhắn đầu tiên, thì khi có khối văn bản mã hóa thứ j, anh ta có thể dễ dàng tính toán Oj - dữ liệu đầu ra và vì chúng chỉ phụ thuộc vào vectơ khởi tạo, mà cả hai tin nhắn đều giống nhau thì có thể nói rằng ở tin nhắn thứ hai sẽ có cùng một Oj, do đó, có khối bản mã thứ j của tin nhắn thứ hai, kẻ địch sẽ ngay lập tức nhận được bản rõ của khối thứ j của tin nhắn thứ hai.

Do đó, trong thuật toán OFB, cần tránh không chỉ việc lặp lại các vectơ khởi tạo mà còn tránh việc bất kỳ khối dữ liệu đầu vào hàm thứ j nào cho một bản tin không được sử dụng làm vectơ khởi tạo cho một bản tin khác. Dưới đây là các phương trình mã hóa OFB: Mã hóa OFB:

I j = O j -1 , j = 1,2, … n

C j = P j + O j , j = 1,2,… n-1

Cn = Pn + MSB t(On)

Giải mã OFB:

I j = O j - 1 , j = 2, … n

O j = CIPH K (I j), j = 1,2, … n

P j = C j + O j , j = 1,2, … n-1

Pn = Cn + MSB t(On) ,

trong đó "+" là thao tác xor.

Vấn đề hoàn thành thông báo cho OFB được giải quyết một cách đơn giản: đối với khối thông báo cuối cùng, có thể không đầy đủ, chính xác bằng số bit của dữ liệu đầu ra hàm được sử dụng bằng số bit trong khối này. Do đó, ở chế độ này, không giống như các chế độ trước, độ dài của tin nhắn không thay đổi trong quá trình mã hóa và quan trọng nhất là trong quá trình truyền.

1.4.4 Quầy tính tiền - mã hóa với bộ đếm

Trong chế độ mã hóa luồng có bộ đếm ở mỗi lần lặp của thuật toán mã hóa ở đầu vào hàm một giá trị ngẫu nhiên T được cung cấp. Đầu vào này phải khác nhau đối với tất cả các lần lặp của thuật toán trong đó mật mã khối sử dụng cùng một khóa mã hóa, do đó, bộ tạo các giá trị như vậy đôi khi được gọi là bộ đếm (cung cấp cách đơn giản nhất để tạo giá trị T duy nhất).

Trong thực tế, yêu cầu về tính duy nhất của dữ liệu đầu vào của hàm ở một giá trị K nhất định sẽ được thỏa mãn trong trường hợp sử dụng PRC (trình tạo mã giả ngẫu nhiên), nhưng sau đó cần có vectơ khởi tạo ban đầu cho PRC trên phần này. của người gửi và người nhận tin nhắn.

Do đó, bản mã trong thuật toán chế độ CTR thu được bằng cách tính tổng modulo 2 của khối bản rõ tiếp theo với dữ liệu đầu ra của hàm. Giá trị tiếp theo Tj của bộ đếm khối thông báo được cung cấp cho đầu vào hàm. Việc giải mã cũng xảy ra bằng cách tính tổng modulo 2 của khối bản mã tiếp theo và kết quả của phép biến đổi theo hàm của giá trị tiếp theo của bộ đếm Tj. Cả hoạt động mã hóa và giải mã ở chế độ CTR đều có thể được thực hiện song song và độc lập cho tất cả các khối. Ngoài ra, chế độ này cũng không gặp vấn đề về khối cuối cùng. Mã hóa CTR:

Giải mã TLB:

Chế độ CTR có tất cả các ưu điểm của chế độ ECB (thực thi song song, tính đơn giản và khả năng mã hóa trực tiếp bất kỳ khối tin nhắn nào một cách riêng biệt và độc lập với các khối khác). Nhưng ngoài ra, chế độ CTR còn khắc phục tất cả những thiếu sót của mã hóa ở chế độ sổ mã điện tử: các khối văn bản gốc giống hệt nhau sẽ không còn được chuyển đổi thành các khối văn bản mã hóa giống hệt nhau; Không cần phải đệm khối văn bản mã hóa cuối cùng. Ngoài ra, ở chế độ này (như ở bất kỳ chế độ truyền phát nào) chỉ sử dụng chức năng mã hóa và đối với một số mật mã khối (ví dụ: đối với AES - tiêu chuẩn mật mã khối mới của Mỹ), điều này mang lại một số hiệu suất. Đây là lý do tại sao chế độ này thường hiệu quả nhất.

1.4.5 Ưu điểm của Chuỗi khối mật mã so với các chuỗi tương tự

Vì vậy, chúng ta có thể kết luận rằng chế độ mã hóa đối xứng CBC có lợi thế rõ ràng trong số những phương pháp được xem xét ở trên, đó là: ở chế độ giải mã, khi toàn bộ bản mã đã được nhận, các chức năng có thể được thực thi song song và độc lập cho tất cả các khối thông báo. Điều này mang lại một mức tăng thời gian đáng kể.

Ở chế độ này, cần tập trung vào một chi tiết khác. Thực tế là khối bản mã cuối cùng, thu được ở đầu ra của thuật toán chế độ CBC, phụ thuộc cả vào khóa mật mã khối và vectơ khởi tạo, và (quan trọng hơn trong trường hợp này) vào tất cả các bit của bản rõ của thông điệp. Điều này có nghĩa là khối văn bản mã hóa cuối cùng này có thể được sử dụng như một loại mã định danh thông điệp. Mã định danh như vậy không cung cấp cho người quan sát bên ngoài bất kỳ thông tin nào về toàn bộ nội dung của toàn bộ tin nhắn, đồng thời, gần như xác định rõ ràng nó (tin nhắn). Hơn nữa, việc giả mạo mã định danh này nếu không biết khóa mã hóa K cũng khó như việc đoán chính xác khóa đó.

2. PHẦN THIẾT KẾ

2.1 Mô hình chức năng

Dựa trên các yêu cầu của phần mềm, các chức năng sau được xác định:

· Đăng ký người dùng với các trường:

· Mã hóa văn bản nguồn;

· Giải mã văn bản được mã hóa;

· Hiển thị cho người dùng các giai đoạn mã hóa và giải mã cuối cùng sau khi ủy quyền thành công.

2.2 Thiết kế thuật toán

Thuật toán mã hóa IDEA tổng quát được hiển thị bên dưới (Hình 5).

Sau khi khởi động chương trình, người dùng phải nhập cặp: login + pass vào mẫu ủy quyền, hoặc điền vào mẫu đăng ký. Sau khi nhập các ký tự vào biểu mẫu, chức năng mã hóa sẽ bắt đầu hoạt động khi bạn nhấp vào nút “Đăng nhập” hoặc “Đăng ký” tương ứng.

Khối dữ liệu 64 bit được đọc từ tệp và được chia thành bốn khối con 16 bit. Bốn khối con này trở thành đầu vào cho vòng lặp đầu tiên của thuật toán. Trong hình, các khối con này được ký hiệu là D 1, D 2, D 3, D 4. Mỗi vòng sử dụng các khóa con riêng theo bảng khóa con (Hình 6). Các hoạt động được mô tả trước đó và được trình bày trong sơ đồ thuật toán được thực hiện trên các khối con 16 bit và các khối con văn bản gốc.

Vào cuối mỗi vòng mã hóa, có bốn khối con 16 bit, sau đó được sử dụng làm khối con đầu vào cho vòng mã hóa tiếp theo. Biến đổi đầu ra là một vòng rút ngắn, cụ thể là bốn khối con 16 bit ở đầu ra của vòng thứ tám và bốn khối con tương ứng phải chịu các hoạt động được mô tả.

Sau đó, khối văn bản gốc 64 bit tiếp theo được lấy và thuật toán mã hóa được lặp lại. Điều này tiếp tục cho đến khi tất cả các khối 64 bit của văn bản nguồn được mã hóa.

Người dùng sẽ thấy tin nhắn được mã hóa sau khi ủy quyền thành công.

Phương pháp tính toán được sử dụng để giải mã văn bản về cơ bản giống như phương pháp được sử dụng để mã hóa nó. Sự khác biệt duy nhất là các khóa con khác nhau được sử dụng để giải mã. Trong quá trình giải mã, các khóa con phải được sử dụng theo thứ tự ngược lại. Khóa con thứ nhất và thứ tư của vòng giải mã thứ i được lấy từ khóa con thứ nhất và thứ tư của vòng mã hóa (10-i) bằng cách đảo ngược phép nhân. Đối với vòng 1 và vòng 9, khóa con giải mã thứ hai và thứ ba được lấy từ khóa con thứ hai và thứ ba của vòng mã hóa thứ 9 và 1 bằng cách đảo ngược phụ gia. Đối với vòng 2 đến vòng 8, khóa con giải mã thứ hai và thứ ba được lấy từ khóa con thứ ba và thứ hai của vòng 8 đến vòng 2 của mã hóa đảo ngược phụ gia. Hai khóa con cuối cùng của vòng giải mã thứ i bằng với hai khóa con cuối cùng của vòng mã hóa thứ (9-i).

Người dùng sẽ thấy thông báo được giải mã sau khi điền thành công vào biểu mẫu ủy quyền, với thông tin đăng nhập và mật khẩu chính xác đã được nhập.

Cơm. 5. Cấu trúc thuật toán IDEA

Cơm. 6. Kết nối thuật toán mã hóa và giải mã IDEA

2.3 Triển khai phần mềm

Khóa học được triển khai trong môi trường lập trình Microsoft Visual Studio 2012. Ngôn ngữ lập trình được sử dụng để viết tác phẩm là C#.

Danh sách các thủ tục chính - trình xử lý chứa chức năng của chương trình đang được phát triển:

· Hàm public static int idea_hash_cbc (char *s, int len, int k, int iv) để tính hàm băm CBC. Trong hàm này, chúng ta lấy giá trị hiện tại cho XOR (iv), tạo một con trỏ tới một mảng dữ liệu đã băm, chia kích thước của mảng cho 8 (chúng tôi kiểm tra bội số của 8), mã hóa bằng công thức: C(i ) = IDEA(C(i- 1) ^ S(i), KEY) và trả về giá trị băm thu được.

· Chuỗi tĩnh riêng ShiftByteLeft(string s) dịch chuyển 25 bit theo chu kỳ sang trái

· Chuỗi tĩnh riêng ShiftbyteRight(chuỗi s) dịch chuyển 25 bit theo chu kỳ sang phải

· Chuỗi tĩnh riêng Sum(chuỗi a1, chuỗi a2) tổng modulo 2^16

· Chuỗi tĩnh riêng Multi(chuỗi a1, chuỗi a2) phép nhân modulo 2^16+1 chuỗi tĩnh riêng XOR(chuỗi a1, chuỗi a2) độc quyền HOẶC

· Chức năng cài đặt bit T setBit (T v, int nBitNumber) nội tuyến. Các bit được tính từ 0, đánh số từ trái sang phải.

· Hàm bool getBit (T v, int nBitNumber) nội tuyến để nhận giá trị bit (đúng/sai).

· bản đồ *> key_archive; một kho lưu trữ các bảng của các khóa "tròn", để không tạo ra các khóa mới mỗi lần (chức năng bao gồm: hoán vị khóa ban đầu, hoán vị khóa cuối cùng, dịch chuyển, bảng thay thế). void ý tưởng riêng tư_Encryption (chuỗi st1, chuỗi st2) Thuật toán IDEA. Đầu vào - 2 dòng: 1) tập hợp các bit của khối đọc (độ dài 64). 2) một tập hợp các bit của khóa của chúng tôi (độ dài 128). Đầu ra - hàm giải mã chuỗi công khai khối mã hóa (64 ký tự) idea_Decryption (chuỗi st1, chuỗi st2) bằng thuật toán IDEA.

· Hàm bool CheckLogin(int hash) đọc thông tin đăng nhập, nếu hàm băm của các đối số bằng thông tin đăng nhập đã đọc, nó sẽ đóng tệp và cho kết quả dương tính. Nếu không sẽ hiển thị thông báo “Đăng nhập không hợp lệ”

· Hàm bool CheckPass(int login_hash, int pass_hash) đọc thông tin đăng nhập và mật khẩu, nếu thông tin đăng nhập bằng thông tin được yêu cầu nhưng mật khẩu không khớp thì đóng file và hiển thị thông báo “Mật khẩu không hợp lệ”. Nếu thông tin đăng nhập và mật khẩu khớp nhau, hàm sẽ trả về “true”.

Chương trình bao gồm ba biểu mẫu: biểu mẫu đăng ký (Hình 7), biểu mẫu ủy quyền (Hình 8.) và biểu mẫu có đầu ra là văn bản được mã hóa và giải mã (Hình 9.). Những hình thức này được trình bày dưới đây.

xác thực mã hóa khối phần mềm

Hình.8. Mẫu đăng ký

Hình.9. Mẫu xuất thông tin

3. THỬ NGHIỆM

Kiểm tra 1. Kiểm tra sự hiện diện của thông tin đăng nhập của người dùng

Dữ liệu đầu vào:

· Nhấp vào nút Đăng nhập mà không cần nhập thông tin đăng nhập

Kết quả:

· Thông báo lỗi. Vui lòng nhập thông tin đăng nhập của bạn

Kiểm tra 2. Kiểm tra xác minh mật khẩu người dùng đã nhập

Dữ liệu đầu vào:

· Bấm vào nút Đăng nhập mà không cần nhập mật khẩu

Kết quả:

· Thông báo lỗi. Vui lòng nhập mật khẩu của bạn

Kết luận: chức năng xác minh hoạt động chính xác.

Kiểm tra 3. Kiểm tra chức năng mã hóa với độ dài văn bản không quá 50 ký tự.

Dữ liệu đầu vào:

· Tên đầy đủ: Một số văn bản

Kiểm tra 4. Kiểm tra chức năng mã hóa khi độ dài văn bản lớn hơn 50 ký tự.

Dữ liệu đầu vào:

· Họ và tên: Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labe et dolore magna aliqua.

Kết luận: Chức năng mã hóa hoạt động chính xác.

Kiểm tra 4: Thêm ký tự vào đầu hàm băm được mã hóa.

Kiểm tra 5: Thêm một ký tự vào giữa hàm băm được mã hóa.

Kết luận: một phần văn bản sẽ không được giải mã.

PHẦN KẾT LUẬN

Trong quá trình thực hiện khóa học, trong phần phân tích, các thuật toán mã hóa khối đối xứng khác nhau đã được phân tích và trình bày những ưu và nhược điểm của thuật toán IDEA. Ngoài ra, các nhiệm vụ, yêu cầu đối với chương trình đã xây dựng cũng được đặt ra và được triển khai đầy đủ.

Trong phần thiết kế, các hàm chính cũng như các tham số đầu vào và đầu ra của các hàm thuật toán IDEA đã được xác định và thảo luận chi tiết. Môi trường phát triển phần mềm và ngôn ngữ lập trình đã được lựa chọn.

Ở phần thử nghiệm, phần mềm được thử nghiệm với 5 bài test. Không tìm thấy lỗi nào trong quá trình triển khai thuật toán hoặc vận hành phần mềm.

THƯ MỤC

1. Wikipedia. Thuật toán IDEA [Tài nguyên điện tử]. - Chế độ truy cập: - http://ru.wikipedia.org/wiki/IDEA.

2. MSDN [Tài nguyên điện tử]. - Chế độ truy cập: - http://msdn.microsoft.com/ru-ru/.

3. Wikipedia. Chế độ ghép nối các khối văn bản mã hóa [Tài nguyên điện tử]. - Chế độ truy cập: - https://ru.wikipedia.org/wiki/Mode_concatenation_of_ciphertext_blocks.

4. [Tài nguyên điện tử] - Oleg Zenzin - Chế độ mã hóa, phần Tích lũy lỗi ở các chế độ mã hóa khác nhau - Chế độ truy cập: - http://citforum.ru/security/cryptography/rejim_shifrov/

5. [Tài nguyên điện tử] - Đánh giá so sánh các thuật toán PGP - Chế độ truy cập: - https://www.pgpru.com/biblioteka/statji/sravniteljnyjjobzoralgoritmovpgp

Đăng trên Allbest.ru

Tài liệu tương tự

    Thực hiện thuật toán DES và các chế độ mã hóa cho bất kỳ độ dài tin nhắn và bất kỳ độ dài khóa nào. Mã hóa tin nhắn có độ dài và khóa khác nhau, đo thời gian và tốc độ mã hóa. Thực hiện thuật toán RSA. Lưu một tập tin được mã hóa vào đĩa.

    bài tập khóa học, được thêm vào ngày 26/01/2010

    Phát triển ứng dụng mã hóa dữ liệu bằng thuật toán DES5: quá trình mã hóa, giải mã, lấy khóa. Đặc tả chương trình, thủ tục và chức năng; mô tả giao diện người dùng. Thực hiện nhiệm vụ trong môi trường lập trình DELPHI.

    bài tập khóa học, được thêm vào ngày 27/03/2012

    Lịch sử xuất hiện của các thuật toán mã hóa đối xứng. Vai trò của khóa đối xứng trong việc đảm bảo mức độ bí mật của thông điệp. Khuếch tán và nhầm lẫn là phương pháp chuyển đổi bit dữ liệu. Thuật toán mã hóa DES và IDEA, ưu điểm và nhược điểm chính của chúng.

    công việc trong phòng thí nghiệm, thêm 18/03/2013

    Hệ thống mật mã đối xứng; các thuật toán mã hóa và giải mã dữ liệu, ứng dụng của chúng trong công nghệ máy tính trong các hệ thống bảo vệ thông tin bí mật và thương mại. Các chế độ hoạt động cơ bản của thuật toán DES, phát triển phần mềm triển khai khóa.

    bài tập khóa học, được thêm vào ngày 17/02/2011

    Lịch sử xuất hiện của thuật toán mã hóa đối xứng, các điều kiện và tính năng ứng dụng của nó ở giai đoạn hiện nay. Nguyên tắc và chức năng của công nghệ đang nghiên cứu. Phân tích những ưu điểm và nhược điểm chính của việc sử dụng thuật toán, đánh giá tính dễ bị tổn thương của nó.

    bài tập khóa học, được thêm vào ngày 29/10/2017

    Nghiên cứu hệ thống phân phối khóa dựa trên các phép biến đổi tuyến tính. Mô tả các thành phần mạng truyền thông bí mật. Đặc điểm của thuật toán mã hóa dữ liệu trong nước. Xem xét kết quả tính toán độ mạnh mật mã của thuật toán mã hóa.

    kiểm tra, thêm 26/09/2012

    Phát triển chương trình thực hiện các thủ tục mã hóa và giải mã văn bản theo tiêu chuẩn DES (Tiêu chuẩn mã hóa dữ liệu). Cấu trúc của thuật toán mã hóa, sơ đồ phát triển các phần tử chính. Sử dụng phần mềm mật mã.

    bài tập khóa học, được thêm vào ngày 15/06/2013

    Phát triển thuật toán mã hóa cho chương trình mã hóa thủ công sử dụng bảng Vigenère. Phát triển một chương trình thực hiện mã hóa và giải mã. Đặc điểm của việc sử dụng bản rõ làm khóa. Các thuật toán giải các bài toán “nghịch đảo”.

    bài tập khóa học, được thêm vào ngày 13/11/2009

    Hệ thống mật mã đối xứng là một 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ã. Phân tích và thực hiện thuật toán mã hóa: hoán vị đơn giản và hoán vị kép, hoán vị bình phương ma thuật.

    bài tập khóa học, được thêm vào ngày 11/03/2013

    Mã hóa đối xứng là phương pháp mã hóa sử dụng cùng một khóa mật mã. Chức năng của hộp thoại tiêu chuẩn để mở và lưu tệp. Một sơ đồ hành động điển hình khi tạo chữ ký. Chữ ký số của tập tin.

thuật toán đối xứng mã hóa được phát triển bởi Xuejia Lai và James Massey thuộc Viện Công nghệ Liên bang Thụy Sĩ. Phiên bản gốc được xuất bản vào năm 1990. Phiên bản sửa đổi của thuật toán, được tăng cường khả năng bảo vệ chống lại các cuộc tấn công mật mã vi sai, được giới thiệu vào năm 1991 và được mô tả chi tiết vào năm 1992.

IDEA là một trong một số thuật toán mã hóa đối xứng ban đầu được dự định thay thế DES.

Nguyên tắc thiết kế

IDEA là một thuật toán khối sử dụng 128-bit khóa mã hóa dữ liệu theo khối 64 bit.

Mục tiêu của việc phát triển IDEA là tạo ra một thuật toán mã hóa tương đối mạnh với cách triển khai khá đơn giản.

Sức mạnh mật mã

Các đặc điểm sau của IDEA mô tả sức mạnh mật mã của nó:

  1. Chiều dài khối: Độ dài khối phải đủ để ẩn tất cả các đặc điểm thống kê của tin nhắn gốc. Mặt khác, độ phức tạp của việc thực hiện chức năng mật mã tăng theo cấp số nhân với kích thước khối. Sử dụng kích thước khối 64 bit vào những năm 90 có nghĩa là rất nhiều năng lượng. Hơn nữa, việc sử dụng chế độ mã hóa CBC cho thấy việc tăng cường hơn nữa khía cạnh này của thuật toán.
  2. Độ dài khóa: Độ dài khóa phải đủ dài để ngăn chặn việc khóa bị ép buộc một cách đơn giản. Với độ dài khóa 128 bit, IDEA được coi là khá an toàn.
  3. Lú lẫn: Bản mã phải phụ thuộc vào khóa một cách phức tạp và phức tạp.
  4. Khuếch tán: Mỗi bit của bản rõ phải ảnh hưởng đến mọi bit của bản mã. Việc trải rộng một bit bản rõ lên nhiều bit được mã hóa sẽ che giấu cấu trúc thống kê của bản rõ. Việc xác định các đặc tính thống kê của bản mã phụ thuộc như thế nào vào các đặc điểm thống kê của bản rõ hẳn là rất khó khăn. IDEA từ quan điểm này là rất thuật toán hiệu quả.

Trong IDEA, hai điểm cuối cùng được thực hiện bằng ba thao tác. Điều này phân biệt nó với DES, nơi mọi thứ được xây dựng xung quanh việc sử dụng thao tác XOR và các hộp S phi tuyến nhỏ.

Mỗi thao tác được thực hiện trên hai đầu vào 16 bit và tạo ra một đầu ra 16 bit. Những hoạt động này là:

Ba hoạt động này không tương thích theo nghĩa:

Việc sử dụng kết hợp ba thao tác này sẽ tạo ra một phép biến đổi phức tạp của đầu vào, khiến việc phân tích mật mã trở nên khó khăn hơn so với thuật toán như DES, vốn chỉ dựa trên hàm XOR.

Mã hóa

Chúng ta hãy xem sơ đồ mã hóa IDEA chung. Giống như bất kỳ thuật toán mã hóa nào, có hai đầu vào: khối văn bản gốc và khóa. Trong trường hợp này, khối không được mã hóa dài 64 bit, khóa dài 128 bit.

Bao gồm tám vòng tiếp theo là một sự biến đổi cuối cùng. Thuật toán chia khối thành bốn khối con 16 bit. Mỗi vòng lấy bốn khối con 16 bit làm đầu vào và tạo ra bốn khối con đầu ra 16 bit. Phép biến đổi cuối cùng cũng lấy bốn khối con 16 bit làm đầu vào và tạo ra bốn khối con 16 bit. Mỗi vòng sử dụng sáu khóa 16 bit, phép biến đổi cuối cùng sử dụng bốn khóa con, tức là Tổng cộng, thuật toán sử dụng 52 khóa con.


Cơm. 3.1.
Trình tự các phép biến đổi của một vòng

Hãy xem xét trình tự các phép biến đổi của một vòng riêng biệt.

Một trong những thành phần chính của thuật toán cung cấp sự khuếch tán là cấu trúc được gọi là MA (nhân/cộng):


Cơm. 3.2.

Đầu vào của cấu trúc này là hai giá trị 16 bit và hai khóa con 16 bit, đầu ra là hai giá trị 16 bit. Kiểm tra máy tính toàn diện cho thấy rằng mỗi bit đầu ra của cấu trúc này phụ thuộc vào từng bit đầu vào của khối văn bản gốc và từng bit khóa con của nó. Cấu trúc này được lặp lại tám lần trong thuật toán, mang lại hiệu quả khuếch tán cao.

Một vòng bắt đầu bằng một phép biến đổi kết hợp bốn khối con đầu vào với bốn khối con bằng cách sử dụng các phép toán cộng và nhân. Bốn khối đầu ra của phép biến đổi này được kết hợp bằng cách sử dụng thao tác XORđể tạo thành hai khối 16 bit, là đầu vào của cấu trúc MA. Ngoài ra, cấu trúc MA còn có thêm hai đầu nối ở đầu vào và tạo ra hai đầu ra 16 bit.


Cơm. 3.3.

Cuối cùng, bốn khối con đầu ra của phép biến đổi đầu tiên được kết hợp với hai khối con đầu ra của cấu trúc MA bằng cách sử dụng XORđể tạo bốn khối con đầu ra của một lần lặp nhất định. Lưu ý rằng hai đầu ra được tạo một phần bởi đầu vào thứ hai và thứ ba (X 2 và X 3 ) được hoán đổi để tạo ra đầu ra thứ hai và thứ ba (W 12 và W 13 ). Điều này làm tăng sự xáo trộn bit và làm cho thuật toán có khả năng chống lại giải mã vi phân.

Hãy xem xét vòng thứ chín của thuật toán, được chỉ định là phép biến đổi cuối cùng. Đây là cấu trúc tương tự như được mô tả ở trên. Sự khác biệt duy nhất là đầu vào thứ hai và thứ ba được hoán đổi cho nhau. Điều này được thực hiện để đảm bảo rằng việc giải mã có cấu trúc giống như mã hóa. Lưu ý rằng giai đoạn thứ chín chỉ yêu cầu bốn đầu vào

GIỚI THIỆU

PHẦN PHÂN TÍCH

1 thuật toán IDEA

2 So sánh các điểm tương tự của thuật toán IDEA

2.1 Thuật toán DES

2.2 Thuật toán RC6

2.3 Thuật toán GOST 28147-89

2.4 Ưu điểm của IDEA so với các sản phẩm tương tự

3 Chế độ Xâu chuỗi Khối Mật mã - xâu chuỗi các khối bằng văn bản mã hóa

4 So sánh các điểm tương tự của chế độ mã hóa CBC

4.1 Sổ Mã Điện Tử – Sổ Mã Điện Tử

4.2 Cipher Feed Back - tải ngược bản mã

4.3 Output Feed Back - tải ngược dữ liệu đầu ra

4.4 Bộ đếm - mã hóa bằng bộ đếm

4.5 Ưu điểm của Chuỗi khối mật mã so với các chuỗi tương tự

PHẦN THIẾT KẾ

1 Mô hình chức năng

2 Thiết kế thuật toán

3 Triển khai phần mềm

PHẦN THỰC NGHIỆM

PHẦN KẾT LUẬN

THƯ MỤC

GIỚI THIỆU

Hệ thống mật mã đối xứng (cũng là mã hóa đối xứng, mật mã đối xứng) là một 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ã. Trước khi phát minh ra mạch điện mã hóa bất đối xứng phương pháp duy nhất tồn tại là mã hóa đối xứng. Khóa thuật toán phải được cả hai bên giữ bí mật. Khóa thuật toán được các bên chọn trước khi bắt đầu trao đổi tin nhắn.

Các thuật toán mã hóa và giải mã dữ liệu được sử dụng rộng rãi trong công nghệ máy tính trong các hệ thống nhằm che giấu thông tin bí mật và thương mại khỏi việc sử dụng độc hại của bên thứ ba. Nguyên tắc chính trong chúng là điều kiện là người phát và người nhận biết trước thuật toán mã hóa, cũng như khóa của tin nhắn, nếu không có thuật toán đó thì thông tin chỉ là một tập hợp các ký hiệu không có ý nghĩa.

Một ví dụ kinh điển về các thuật toán như vậy là các thuật toán mã hóa đối xứng được liệt kê dưới đây: - thay thế đơn giản;

hoán vị đơn theo khóa;

hoán vị kép;

hoán vị "Hình vuông ma thuật";

sắp xếp lại đơn giản.

Việc mất hoàn toàn tất cả các mẫu thống kê của thông điệp gốc là một yêu cầu quan trọng đối với mật mã đối xứng. Để làm được điều này, mật mã phải có “hiệu ứng tuyết lở”, tức là. Cần có sự thay đổi mạnh mẽ trong khối mã hóa với sự thay đổi 1 bit trong dữ liệu đầu vào (lý tưởng nhất là giá trị 1/2 bit của khối mã hóa nên thay đổi).

Hiện nay, mật mã đối xứng là:

· khối mật mã. Chúng xử lý thông tin theo các khối có độ dài nhất định (thường là 64, 128 bit), á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à các 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 mở và đượ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.

Có nhiều thuật toán mã hóa đối xứng, các tham số cơ bản của chúng là:

· Độ bền;

· độ dài khóa;

· số vòng;

· chiều dài của khối được xử lý;

· sự phức tạp của việc triển khai phần cứng/phần mềm;

· sự phức tạp của chuyển đổi.

1.PHẦN PHÂN TÍCH

1Thuật toán IDEA

IDEA (tiếng Anh: International Data Encryption Algorithm, thuật toán mã hóa dữ liệu quốc tế) là thuật toán mã hóa dữ liệu khối đối xứng được cấp bằng sáng chế bởi công ty Ascom của Thụy Sĩ. Đây là thuật toán mã hóa khối đối xứng được đề xuất để thay thế tiêu chuẩn DES. Phiên bản đầu tiên của thuật toán IDEA xuất hiện vào năm 1990. Các nhà phát triển thuật toán, Xuejia Lai và James Massey của Viện Thụy Sĩ ETH Zurich, đã đặt cho nó cái tên PES (Tiêu chuẩn mã hóa được đề xuất).

Vì IDEA sử dụng khóa 128 bit và kích thước khối 64 bit nên bản rõ được chia thành các khối 64 bit. Nếu không thể phân vùng như vậy, khối cuối cùng sẽ được bổ sung theo nhiều cách khác nhau với một chuỗi bit nhất định. Để tránh rò rỉ thông tin về từng khối riêng lẻ, nhiều chế độ mã hóa khác nhau được sử dụng. Mỗi khối 64 bit không được mã hóa ban đầu được chia thành bốn khối con, mỗi khối 16 bit, vì tất cả các phép toán đại số được sử dụng trong quá trình mã hóa đều được thực hiện trên các số 16 bit. IDEA sử dụng cùng một thuật toán để mã hóa và giải mã.

IDEA sử dụng các phép toán sau:

 phép cộng bitwise modulo 2 (hoạt động "OR độc quyền");

 phép cộng các số nguyên không dấu modulo 2 16;

 nhân các số nguyên không dấu modulo (2 16+1), với khối gồm 16 số 0 được coi là 2 16;

Một bất lợi đáng kể là IDEA đã được cấp bằng sáng chế, vì điều này ngăn cản việc phân phối miễn phí nó. IDEA không cung cấp khả năng tăng độ dài khóa. Một nhược điểm khác có thể coi là không phải tất cả các công trình về giải mã đều được xuất bản, tức là rất có thể mật mã đã bị phá, hoặc sẽ bị phá trong tương lai.

Cấu trúc của thuật toán IDEA được trình bày bên dưới (Hình 1).

Cơm. 1. Thuật toán mã hóa IDEA

· chế độ sổ mã điện tử (ECB - Electronic Code Book)

· chế độ chuỗi khối (CBC - Cipher Block Chaining)

· chế độ phản hồi mật mã (CFB - Cipher Feed Back)

· chế độ phản hồi đầu ra (OFB - Output Feed Back).

Khóa học này xem xét việc triển khai phần mềm thuật toán mã hóa IDEA (Chế độ phản hồi mã hóa).

1.2So sánh các điểm tương tự của thuật toán IDEA

1.2.1thuật toán DES

DES (Tiêu chuẩn mã hóa dữ liệu) - Thuật toán mã hóa đối xứng trong đó một khóa được sử dụng cho cả mã hóa và giải mã dữ liệu. DES có các khối 64 bit và cấu trúc mạng Feistel 16 chu kỳ; nó sử dụng khóa 56 bit để mã hóa.

Thuật toán sử dụng kết hợp các phép biến đổi phi tuyến (hộp S) và tuyến tính (hoán vị E, IP, IP-1).

Do DES hoạt động trong các khối 64 bit và sử dụng khóa 56 bit, độ dài khóa này tương ứng với 256 kết hợp, cho đến gần đây đã cung cấp đủ mức bảo mật (8 bit chẵn của khóa 64 bit đầy đủ không được sử dụng, các bit chẵn lẻ là các byte khóa bit có trọng số thấp nhất). Khối dữ liệu đầu vào, bao gồm 64 bit, được chuyển đổi thành khối đầu ra có độ dài giống hệt nhau.

Do sử dụng khóa mã hóa 56 bit, thuật toán DES có thể bị bẻ khóa bằng vũ lực trên bất kỳ thiết bị hiện đại nào. hệ thống máy tính trong một khung thời gian rất thực tế - vài ngày. Hệ thống mật mã đối xứng, được định nghĩa là mật mã Feistel 16 vòng, ban đầu được dự định để triển khai phần cứng. Khi DES được sử dụng để truyền thông tin, để mã hóa và giải mã tin nhắn hoặc để tạo và xác minh mã xác thực tin nhắn (MAC), người gửi và người nhận phải biết khóa bí mật.

Quá trình mã hóa của thuật toán DES bao gồm hoán vị ban đầu các bit của khối 64 bit, mười sáu chu kỳ mã hóa và cuối cùng là hoán vị bit ngược (Hình 2).

Hình 2. Thuật toán mã hóa DES

1.2.2Thuật toán RC6

Mật mã RC6 được tham gia cuộc thi AES hỗ trợ các khối 128 bit và các khóa 128-, 192- và 256-bit, nhưng bản thân thuật toán có thể được cấu hình để hỗ trợ nhiều hơn. phạm vi rộngđộ dài của cả khối và khóa (từ 0 đến 2040 bit).

Nó lọt vào vòng chung kết của AES và sử dụng hầu hết tất cả các công nghệ hiện có được sử dụng trong thuật toán mã hóa, tuy nhiên, một trong những hoạt động nguyên thủy là hoạt động nhân, thực hiện chậm trên một số thiết bị và gây khó khăn cho việc triển khai mật mã trên một số phần cứng. nền tảng và điều này gây ngạc nhiên cho các tác giả là trên các hệ thống có kiến ​​trúc Intel IA-64 cũng được triển khai khá kém. Trong trường hợp này, thuật toán mất đi một trong những lợi thế chính của nó - tốc độ thực thi cao, điều này đã trở thành lý do bị chỉ trích và là một trong những trở ngại cho việc được chọn làm tiêu chuẩn mới.

Cơm. 3. Thuật toán mã hóa RC6

Cấu trúc mã hóa của thuật toán RC6 được thể hiện trong Hình 3. Mô tả ngắn thuật toán: thuật toán sử dụng 20 vòng biến đổi, trước khi thực hiện làm trắng một phần đầu vào:

B = B + K 0mod 2 32

D=D+K 1mod 2 32,

trong đó A, B, C, D là giá trị hiện tại của các khối con 32 bit đang được xử lý và K 0...K 43- các đoạn của khóa mở rộng.

Tẩy trắng từng phần được thực hiện theo cách tương tự:

A = A + K 42mod 2 32

C=C+K 43mod 2 32.

Trong mỗi vòng của thuật toán, các hành động sau được thực hiện:

t 1=f(B)<<< 5,

t 2=f(D)<<< 5,

A = ((A Å t 1) <<< t2) + K 2i mod 2 32,

C = ((C Å t 2) <<< t1) + K 2i+1 mod 2 32,

ở đâu 1và t 2- các biến tạm thời, số bit quay trên mỗi biến số bit được xác định bằng giá trị của 5 bit có ý nghĩa nhỏ nhất của tham số (t 1hoặc t 2), hàm f() thực hiện phép biến đổi bậc hai sau:

(x) = x * (2x + 1) mod 2 32.

Vào cuối mỗi vòng, các khối con được dịch chuyển.

Ưu điểm của thuật toán:

· Cấu trúc đơn giản của thuật toán giúp phân tích dễ dàng hơn.

· Thuật toán cuối cùng nhanh nhất của AES trên nền tảng 32-bit.

· Mã hóa và giải mã trong thuật toán RC6 gần như giống hệt nhau. Nhược điểm của thuật toán:

· Tốc độ mã hóa trong phần mềm phụ thuộc rất nhiều vào việc nền tảng có hỗ trợ phép nhân 32 bit và xoay bit biến đổi hay không.

· RC6 khó triển khai về phần cứng và trong điều kiện nguồn lực hạn chế.

· Khá khó để bảo vệ khỏi các cuộc tấn công về thời gian thực hiện và mức tiêu thụ điện năng.

· Không hỗ trợ đầy đủ việc mở rộng khóa nhanh chóng.

· Việc song song hóa các phép tính khi mã hóa bằng thuật toán RC6 là khả thi với những hạn chế.

1.2.3Thuật toán GOST 28147-89

GOST 28147-89 là tiêu chuẩn mã hóa đối xứng của Liên Xô và Nga được giới thiệu vào năm 1990, cũng là tiêu chuẩn CIS. Tên đầy đủ - Hệ thống xử lý thông tin GOST 28147-89. Bảo vệ mật mã. Thuật toán chuyển đổi mật mã".

Cơm. 4. Thuật toán mã hóa GOST 28147-89

Thuật toán mã hóa khối. Khi sử dụng phương pháp mã hóa gamma, nó có thể thực hiện các chức năng của thuật toán mã hóa dòng. GOST 28147-89 là mật mã khối có khóa 256 bit và 32 chu kỳ chuyển đổi, hoạt động trên khối 64 bit. Cơ sở của thuật toán mã hóa là mạng Feistel. Có bốn chế độ hoạt động theo GOST 28147-89: thay thế đơn giản, chơi trò chơi, chơi trò chơi có phản hồi và chế độ tạo mô phỏng chèn.

Ưu điểm của thuật toán: sự vô ích của một cuộc tấn công vũ lực, hiệu quả thực hiện và theo đó, hiệu suất cao trên các máy tính hiện đại, sự hiện diện của tính năng bảo vệ chống lại việc áp đặt dữ liệu sai (tạo ra chèn bắt chước) và cùng một chu trình mã hóa trong tất cả bốn thuật toán GOST, khóa lớn hơn so với thuật toán DESX.

Nhược điểm của thuật toán: Các vấn đề chính của GOST liên quan đến tính chưa hoàn thiện của tiêu chuẩn về việc tạo khóa và bảng thay thế. Người ta tin rằng GOST có các khóa và bảng thay thế “yếu”, nhưng tiêu chuẩn không mô tả các tiêu chí để lựa chọn và loại bỏ các khóa “yếu”. Ngoài ra, tiêu chuẩn không chỉ định thuật toán tạo bảng thay thế (hộp S). Một mặt, đây có thể là thông tin bí mật bổ sung (ngoài khóa), mặt khác, nó đặt ra một số vấn đề: không thể xác định độ mạnh mật mã của thuật toán nếu không biết trước bảng thay thế ; việc triển khai thuật toán từ các nhà sản xuất khác nhau có thể sử dụng các bảng thay thế khác nhau và có thể không tương thích với nhau; khả năng các cơ quan cấp phép của Liên bang Nga cố tình cung cấp các bảng thay thế yếu.

1.2.4Ưu điểm của IDEA so với các chất tương tự

Trong triển khai phần mềm trên Intel486SX so với DES IDEA nhanh gấp đôi, tức là tốc độ tăng lên đáng kể, độ dài khóa của IDEA là 128 bit, so với 56 bit của DES, đây là một cải tiến tốt chống lại lực lượng vũ phu. Xác suất sử dụng phím yếu là rất nhỏ và là 1/264. IDEA nhanh hơn thuật toán GOST 28147-89 (khi triển khai phần mềm trên Intel486SX ). Sử dụng IDEA ở chế độ mã hóa song song trên bộ xử lý Pentium III và Pentium MMX cho phép bạn đạt được tốc độ cao. So với lọt vào chung kết AES, IDEA 4 chiều chỉ chậm hơn RC6 một chút và Rijndael trên Pentium II , nhưng nhanh hơn Twofish và MARS . Trên Pentium III IDEA 4 chiều thậm chí còn nhanh hơn RC6 và Rijndael . Một ưu điểm khác là nó được nghiên cứu kỹ lưỡng và có khả năng chống lại các công cụ phân tích mật mã nổi tiếng.

1.3Chế độ Chuỗi khối mật mã - chuỗi khối bằng văn bản mã hóa

Trong chế độ mã hóa CBC, tất cả các khối tin nhắn được “nối” bằng văn bản mã hóa.

Trong thuật toán mã hóa, hàm đầu vào mỗi lần nhận được kết quả của phép tính tổng modulo 2 của dữ liệu mở của khối thông báo tiếp theo và hàm đầu ra của khối trước đó. Vì dữ liệu đầu ra của hàm cho khối tiếp theo đi thẳng đến đầu ra của thuật toán CBC, tức là nó là bản mã của khối này, đồng thời đi đến đầu vào của cùng một hàm để mã hóa khối tiếp theo, họ nói rằng các khối được xâu chuỗi bằng cách sử dụng bản mã. Khối dữ liệu mở đầu tiên được tóm tắt bằng cái gọi là. vectơ khởi tạo.

Vectơ khởi tạo này được cả người gửi và người nhận biết ngay khi bắt đầu phiên giao tiếp (do đó, nó thường được gọi đơn giản là tin nhắn đồng bộ hóa). Theo đó, quá trình giải mã diễn ra theo thứ tự ngược lại - đầu tiên, một hàm được áp dụng cho văn bản mã hóa, sau đó được tính tổng với khối văn bản mã hóa trước đó để thu được khối văn bản gốc tiếp theo ở đầu ra của thuật toán. Khối bản rõ đầu tiên một lần nữa được xây dựng lại bằng cách sử dụng vectơ khởi tạo.

Vì vậy, với mọi i = 1...n, khối bản mã C(i) được định nghĩa như sau:

C(i) = IDEA(M(i) xor C(i-1)),

Việc giải mã được thực hiện như sau:

M(i) = C(i-1) xor IDEA-1(C(i)),

Khối M(i) chỉ là hàm của C(i-1) và C(i). Vì vậy, một lỗi truyền tải sẽ dẫn đến việc chỉ mất đi hai khối văn bản nguồn.

1.4So sánh các chất tương tự của chế độ mã hóa CBC

Khi sử dụng mật mã khối, các sơ đồ mã hóa khác nhau sẽ được sử dụng, được gọi là chế độ vận hành mã hóa cho mật mã khối. Rõ ràng là việc sử dụng chế độ mã hóa này hoặc chế độ mã hóa khác sẽ không ảnh hưởng tiêu cực đến hiệu quả và đặc biệt là độ mạnh mật mã của mật mã khối. Chế độ mã hóa cho phép bạn triển khai các chức năng bổ sung còn thiếu trong thiết kế mật mã khối ban đầu.

1.4.1 Sổ Mã Điện Tử – Sổ Mã Điện Tử

Chế độ này là một dạng điện tử tương tự của chế độ được các đặc vụ sử dụng để gửi tin nhắn được mã hóa vào đầu thế kỷ 20. Đặc vụ nhận được một cuốn sổ, mỗi trang trong đó chứa một chuỗi duy nhất - một mã dùng để mã hóa tin nhắn. Sau khi sử dụng, trang đó đã bị xé ra khỏi sổ và bị tiêu hủy. Nếu cần, thông báo đã được bổ sung để không còn mã nào chưa sử dụng trên các trang bị xé ra. Bên nhận đã có một bản sao của sổ ghi chú, do đó, với điều kiện các trang được sử dụng đồng bộ, chế độ mã hóa này cung cấp cả chức năng mã hóa và giải mã tin nhắn. Trong ECB, việc sử dụng một trang của sổ mã trong quá trình mã hóa tương ứng với việc áp dụng phép biến đổi dữ liệu đầu vào bằng hàm CIPH k và khi được giải mã - CIPH -1k . Để đồng bộ, chỉ cần hai bên đồng ý về giá trị của khóa bí mật K là đủ.

Như có thể thấy trong hình, toàn bộ thuật toán ECB bao gồm các hàm áp dụng trực tiếp cho cả thông báo và bản mã để mã hóa và giải mã, tương ứng, cũng có thể được biểu thị dưới dạng phương trình: Mã hóa ECB:

VỚI j = CIPH K (P j ) ,

Giải mã ECB:

P j = CIPH K (C j ),

Do đó, mã hóa xảy ra theo các khối tương ứng với kích thước của dữ liệu đầu vào/đầu ra cho các chức năng và. Các khối được mã hóa riêng biệt và độc lập với nhau, cho phép việc này được thực hiện song song. Ưu điểm này của chế độ ECB và tính đơn giản của nó bị che lấp bởi hai nhược điểm đáng kể. Đầu tiên là độ dài của tin nhắn phải là bội số của độ dài khối dữ liệu đầu vào của mật mã khối, nghĩa là toàn bộ tin nhắn có thể được chia thành một số nguyên của các khối đó hoặc cần phải bằng cách nào đó bổ sung khối cuối cùng với dữ liệu không mang thông tin. Hạn chế thứ hai thậm chí còn đáng kể hơn.

Vì trong quá trình mã hóa, khối bản mã tiếp theo chỉ được xác định hoàn toàn bởi khối bản rõ tương ứng và giá trị của khóa bí mật K, nên các khối bản rõ giống hệt nhau sẽ được chuyển đổi ở chế độ này thành các khối bản mã giống hệt nhau. Và điều này đôi khi là điều không mong muốn, vì nó có thể là chìa khóa để phân tích nội dung của tin nhắn. Ví dụ: nếu dữ liệu trên ổ cứng được mã hóa, thì khoảng trống sẽ được lấp đầy bằng các byte tương tự còn lại khi định dạng đĩa. Điều này có nghĩa là từ bản mã có thể đoán được kích thước của thông tin hữu ích trên đĩa. Trong những trường hợp như vậy, bạn cần sử dụng các chế độ mã hóa khác.

1.4.2 Cipher Feed Back - tải ngược bản mã

Phản hồi bằng mật mã Chế độ phản hồi của văn bản mã hóa là một trong những sơ đồ mã hóa đối xứng trong đó khối văn bản được mã hóa là phép cộng theo bit của khối văn bản gốc với kết quả được mã hóa của khối văn bản trước đó. Nó có một sửa đổi cho phép bạn mã hóa dữ liệu có kích thước nhỏ hơn kích thước của khối mật mã, giúp mã hóa luồng dữ liệu mà không cần đợi số bit cần thiết đến đầu vào.

Trong chế độ này, kích thước khối có thể khác với 64. Tệp nguồn M được đọc theo các khối t-bit liên tiếp (t<= 64): M = M(1)M(2)...M(n) (остаток дописывается нулями или пробелами).

Thanh ghi dịch bit (khối đầu vào) trước tiên chứa vectơ khởi tạo căn phải IV. Đối với mỗi phiên mã hóa, một vectơ khởi tạo mới được sử dụng.

Với mọi i = 1...n, khối bản mã C(i) được định nghĩa như sau:

(i) = M(i) xor P(i-1),

trong đó P(i-1) là t bit quan trọng nhất của phép toán IDEA(C(i-1)) và C(0) = IV.

Thanh ghi dịch được cập nhật bằng cách loại bỏ các bit t cao nhất và thêm C(i) vào bên phải.

Việc khôi phục dữ liệu được mã hóa cũng dễ dàng: P(i-1) và C(i) được tính theo cách tương tự và M(i) = C(i) xor P(i-1).

1.4.3 Output Feed Back - tải ngược dữ liệu đầu ra

Chế độ OFB, giống như CFB, dựa trên luồng, nghĩa là hàm được gọi trong thuật toán trước khi tính tổng với một phần văn bản gốc. Nhưng lần này đầu vào không phải là bản mã từ lần lặp trước mà chỉ đơn giản là dữ liệu đầu ra của nó. Đó là, các vòng lặp chức năng.

Do đó, trong thuật toán OFB, cần tránh không chỉ việc lặp lại các vectơ khởi tạo mà còn tránh việc bất kỳ khối dữ liệu đầu vào hàm thứ j nào cho một bản tin không được sử dụng làm vectơ khởi tạo cho một bản tin khác. Dưới đây là các phương trình mã hóa OFB: Mã hóa OFB:

TÔI 1= IV

TÔI j = Ô j-1 , j = 1,2,…n

j = CIPH K (TÔI j ), j = 1,2,…n

C j =P j + Ô j , j = 1,2,… n-1 N =P N +MSB t N )

Giải mã OFB:

TÔI 1= IV j = Ô j -1, j = 2,… n j = CIPH K (TÔI j ), j = 1,2,…n j =C j + Ô j , j = 1,2,… n-1 N =C N +MSB t N ) ,

trong đó "+" là thao tác xor.

Vấn đề hoàn thành thông báo cho OFB được giải quyết một cách đơn giản: đối với khối thông báo cuối cùng, có thể không đầy đủ, chính xác bằng số bit của dữ liệu đầu ra hàm được sử dụng bằng số bit trong khối này. Do đó, ở chế độ này, không giống như các chế độ trước, độ dài của tin nhắn không thay đổi trong quá trình mã hóa và quan trọng nhất là trong quá trình truyền.

1.4.4 Bộ đếm - mã hóa bằng bộ đếm

Trong chế độ mã hóa luồng có bộ đếm, tại mỗi lần lặp của thuật toán mã hóa, một giá trị ngẫu nhiên T nhất định được cung cấp cho đầu vào hàm. Các dữ liệu đầu vào này phải khác nhau đối với tất cả các lần lặp của thuật toán trong đó mật mã khối sử dụng cùng một khóa mã hóa , do đó, trình tạo các giá trị như vậy đôi khi được gọi là bộ đếm (cung cấp cách đơn giản nhất để tạo các giá trị T duy nhất).

Trong thực tế, yêu cầu về tính duy nhất của dữ liệu đầu vào của hàm ở một giá trị K nhất định sẽ được thỏa mãn trong trường hợp sử dụng PRC (trình tạo mã giả ngẫu nhiên), nhưng sau đó cần có vectơ khởi tạo ban đầu cho PRC trên phần này. của người gửi và người nhận tin nhắn.

Do đó, bản mã trong thuật toán chế độ CTR thu được bằng cách tính tổng modulo 2 của khối bản rõ tiếp theo với dữ liệu đầu ra của hàm. Giá trị tiếp theo Tj của bộ đếm khối thông báo được cung cấp cho đầu vào hàm. Việc giải mã cũng xảy ra bằng cách tính tổng modulo 2 của khối bản mã tiếp theo và kết quả của phép biến đổi theo hàm của giá trị tiếp theo của bộ đếm Tj. Cả hoạt động mã hóa và giải mã ở chế độ CTR đều có thể được thực hiện song song và độc lập cho tất cả các khối. Ngoài ra, chế độ này cũng không gặp vấn đề về khối cuối cùng. Mã hóa CTR:

giải mã:

Chế độ CTR có tất cả các ưu điểm của chế độ ECB (thực thi song song, tính đơn giản và khả năng mã hóa trực tiếp bất kỳ khối tin nhắn nào một cách riêng biệt và độc lập với các khối khác). Nhưng ngoài ra, chế độ CTR còn khắc phục tất cả những thiếu sót của mã hóa ở chế độ sổ mã điện tử: các khối văn bản gốc giống hệt nhau sẽ không còn được chuyển đổi thành các khối văn bản mã hóa giống hệt nhau; Không cần phải đệm khối văn bản mã hóa cuối cùng. Ngoài ra, ở chế độ này (như ở bất kỳ chế độ truyền phát nào) chỉ sử dụng chức năng mã hóa và đối với một số mật mã khối (ví dụ: đối với AES - tiêu chuẩn mật mã khối mới của Mỹ), điều này mang lại một số hiệu suất. Đây là lý do tại sao chế độ này thường hiệu quả nhất.

1.4.5 Ưu điểm của Chuỗi khối mật mã so với các chuỗi tương tự

Vì vậy, chúng ta có thể kết luận rằng chế độ mã hóa đối xứng CBC có lợi thế rõ ràng so với các chế độ được xem xét ở trên, đó là: ở chế độ giải mã, khi toàn bộ bản mã đã được nhận, các chức năng có thể được thực thi song song và độc lập cho tất cả các khối thông báo. Điều này mang lại một mức tăng thời gian đáng kể.

Ở chế độ này, cần tập trung vào một chi tiết khác. Thực tế là khối bản mã cuối cùng, thu được ở đầu ra của thuật toán chế độ CBC, phụ thuộc cả vào khóa mật mã khối và vectơ khởi tạo, và (quan trọng hơn trong trường hợp này) vào tất cả các bit của bản rõ của thông điệp. Điều này có nghĩa là khối văn bản mã hóa cuối cùng này có thể được sử dụng như một loại mã định danh thông điệp. Mã định danh như vậy không cung cấp cho người quan sát bên ngoài bất kỳ thông tin nào về toàn bộ nội dung của toàn bộ tin nhắn, đồng thời, gần như xác định rõ ràng nó (tin nhắn). Hơn nữa, việc giả mạo mã định danh này nếu không biết khóa mã hóa K cũng khó như việc đoán chính xác khóa đó.

2. PHẦN THIẾT KẾ

1 Mô hình chức năng

Dựa trên các yêu cầu của phần mềm, các chức năng sau được xác định:

· Đăng ký người dùng với các trường:

đăng nhập,

mật khẩu,

HỌ VÀ TÊN,

Ngày sinh,

· Ủy quyền người dùng với các trường:

đăng nhập,

mật khẩu;

· Mã hóa văn bản nguồn;

· Giải mã bản mã;

· Hiển thị các giai đoạn mã hóa và giải mã cuối cùng cho người dùng sau khi ủy quyền thành công.

2 Thiết kế thuật toán

Thuật toán mã hóa IDEA tổng quát được hiển thị bên dưới (Hình 5).

Sau khi khởi động chương trình, người dùng phải nhập cặp: login + pass vào mẫu ủy quyền, hoặc điền vào mẫu đăng ký. Sau khi nhập các ký tự vào biểu mẫu, chức năng mã hóa sẽ bắt đầu hoạt động khi bạn nhấp vào nút “Đăng nhập” hoặc “Đăng ký” tương ứng.

Khối dữ liệu 64 bit được đọc từ tệp và được chia thành bốn khối con 16 bit. Bốn khối con này trở thành đầu vào cho vòng lặp đầu tiên của thuật toán. Trong hình các khối con này được ký hiệu là D 1, D 2, D 3, D 4Mỗi vòng sử dụng các khóa con riêng theo bảng khóa con (Hình 6). Các hoạt động được mô tả trước đó và được trình bày trong sơ đồ thuật toán được thực hiện trên các khối con 16 bit và các khối con văn bản gốc.

Thuật toán IDEA (Thuật toán mã hóa dữ liệu quốc tế) thuộc nhóm mã hóa đối xứng. Thuật toán này được phát triển vào năm 1990 để thay thế cho thuật toán DES (Tiêu chuẩn mã hóa dữ liệu). Thuật toán dựa trên ý tưởng về một phép biến đổi hỗn hợp, phân bổ đều văn bản gốc một cách ngẫu nhiên trong không gian văn bản mã hóa.

Các phép biến đổi hỗn hợp được thực hiện bằng cách sử dụng các chuỗi thay thế xen kẽ và các phép toán hoán vị đơn giản.
Việc chuyển đổi dữ liệu được thực hiện theo khối có kích thước là 64 bit. Độ dài khóa trong thuật toán IDEA là 128 bit.

Mỗi khối 64 bit được coi là bốn khối con 16 bit, được chuyển đổi bằng các phép toán số nguyên sau.
1. Phép cộng bit theo modulo 2 (XOR) của hai toán hạng 16 bit, chúng ta sẽ ký hiệu là ..
2. Phép cộng hai toán hạng số nguyên 16 bit modulo 216, ký hiệu là .
3. Nhân hai số không dấu theo modulo. Kết quả của phép nhân được cắt ngắn thành độ dài 16 bit. Khi tính toán thao tác này, có một ngoại lệ đối với mã có tất cả các số 0, được coi là số khi nhân. Chúng tôi sẽ biểu thị hoạt động này là .
Quy trình mã hóa bao gồm tám vòng giống hệt nhau và vòng đầu ra thứ 9 bổ sung (Hình 8, MỘT).


Cơm. số 8 . Thuật toán IDEA:
a – sơ đồ quy trình mã hóa; b – cấu trúc nhân-cộng
Ở đầu ra của vòng thứ 9, nội dung của 4 khối con 16 bit được hình thành, tạo thành khối văn bản mã hóa.
Phần chính của mỗi vòng là cấu trúc nhân-cộng (Hình 8, b).

Đây F 1i F 2 Các giá trị 16 bit lấy từ văn bản gốc,
Z 5i Z Khóa con 6 – 16 bit.

Tất cả các toán hạng liên quan đến thủ tục mã hóa đều có kích thước 16 bit.
Trong bộ lễ phục. Hình 9 thể hiện sơ đồ thực hiện vòng đầu tiên của thuật toán IDEA.


Cơm. 9. Vòng mã hóa IDEA đầu tiên
Dữ liệu đầu ra Tôi vòng mã hóa thứ, được đưa vào đầu vào ( Tôi+1) vòng thứ. Đầu vào vòng 1 là bốn
Khối con 16-bit ( X 1, X 2, X 3, X 4) Khối văn bản nguồn 64-bit.

Sơ đồ thực hiện vòng mã hóa thứ 9 được hiển thị trong Hình 2. 10.


Cơm. 10 . Vòng mã hóa IDEA thứ chín
Cần lưu ý rằng khối con thứ hai và thứ ba có giá trị trung gian Wđược hoán đổi sau mỗi vòng mã hóa ngoại trừ vòng thứ tám.

Mỗi vòng trong số chín vòng sử dụng các giá trị khóa lặp 16 bit Tử, có được bằng cách chuyển đổi khóa 128 bit gốc K.

8 phím lặp đầu tiên Z 1…Z 8 được lấy làm tám phần liên tiếp của khóa 128 bit. Để có được tám khóa lặp tiếp theo, giá trị khóa 128 bit K dịch chuyển theo chu kỳ 25 bit sang trái và các phím Z 9…Z Số 16 lại được coi là 8 phần liên tiếp của nó. Quá trình này được lặp lại cho đến khi thu được tất cả 52 khóa lặp.

Quy trình giải mã bao gồm chín vòng giống nhau nhưng chỉ được thực hiện bằng cách sử dụng các giá trị khóa lặp khác nhau. Các khóa giải mã lặp được lấy từ các khóa mã hóa lặp dựa trên bảng tương ứng (Bảng 3).

bàn số 3
Các giá trị chính được sử dụng trong thuật toán IDEA
để giải mã

Trong trường hợp này, các mối quan hệ sau được thỏa mãn:
(9)
(10)
Vì vậy đối với chìa khóa Zj giá trị được ký hiệu là - Zj, là modulo nghịch đảo cộng tính và giá trị được ký hiệu là
– modulo nghịch đảo nhân +1.

Thứ tự sử dụng các khóa lặp để mã hóa được thể hiện trong Hình 2. mười một.


Cơm. mười một . Thứ tự sử dụng các khóa lặp của thuật toán IDEA

Khi thực hiện giải mã, các vòng của thuật toán được thực hiện theo cùng thứ tự. Đầu vào của vòng đầu tiên là bốn khối con 16 bit của khối văn bản mã hóa 64 bit. Các giá trị thu được sau khi thực hiện vòng đầu ra là các khối con của khối nguồn 64 bit. Sự khác biệt so với quy trình mã hóa là thay vì khóa Z 1...Z 52 phím được sử dụng bạn 1...bạn 52.

GIỚI THIỆU

Hệ thống mật mã đối xứng (cũng là mã hóa đối xứng, mật mã đối xứng) là một 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ã. Trước khi phát minh ra sơ đồ mã hóa bất đối xứng, phương pháp duy nhất tồn tại là mã hóa đối xứng. Khóa thuật toán phải được cả hai bên giữ bí mật. Khóa thuật toán được các bên chọn trước khi bắt đầu trao đổi tin nhắn.

Các thuật toán mã hóa và giải mã dữ liệu được sử dụng rộng rãi trong công nghệ máy tính trong các hệ thống nhằm che giấu thông tin bí mật và thương mại khỏi việc sử dụng độc hại của bên thứ ba. Nguyên tắc chính trong chúng là điều kiện là người phát và người nhận biết trước thuật toán mã hóa, cũng như khóa của tin nhắn, nếu không có thuật toán đó thì thông tin chỉ là một tập hợp các ký hiệu không có ý nghĩa.

Một ví dụ kinh điển về các thuật toán như vậy là các thuật toán mã hóa đối xứng được liệt kê dưới đây: - thay thế đơn giản;

Hoán vị đơn theo khóa;

Hoán vị kép;

Hoán vị "Hình vuông ma thuật";

Sắp xếp lại đơn giản.

Việc mất hoàn toàn tất cả các mẫu thống kê của thông điệp gốc là một yêu cầu quan trọng đối với mật mã đối xứng. Để làm được điều này, mật mã phải có “hiệu ứng tuyết lở”, tức là. Cần có sự thay đổi mạnh mẽ trong khối mã hóa với sự thay đổi 1 bit trong dữ liệu đầu vào (lý tưởng nhất là giá trị 1/2 bit của khối mã hóa nên thay đổi).

Hiện nay, mật mã đối xứng là:

· chặn mật mã. Chúng xử lý thông tin theo các khối có độ dài nhất định (thường là 64, 128 bit), á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à các 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 mở và đượ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.

Có nhiều thuật toán mã hóa đối xứng, các tham số cơ bản của chúng là:

· Độ bền;

· độ dài khóa;

· số vòng;

chiều dài của khối được xử lý;

· sự phức tạp của việc triển khai phần cứng/phần mềm;

· độ phức tạp của chuyển đổi.

PHẦN PHÂN TÍCH

Thuật toán IDEA

IDEA (tiếng Anh: International Data Encryption Algorithm, thuật toán mã hóa dữ liệu quốc tế) là thuật toán mã hóa dữ liệu khối đối xứng được cấp bằng sáng chế bởi công ty Ascom của Thụy Sĩ. Đây là thuật toán mã hóa khối đối xứng được đề xuất để thay thế tiêu chuẩn DES. Phiên bản đầu tiên của thuật toán IDEA xuất hiện vào năm 1990. Các nhà phát triển thuật toán, Xuejia Lai và James Massey của Viện Thụy Sĩ ETH Zurich, đã đặt cho nó cái tên PES (Tiêu chuẩn mã hóa được đề xuất).

Vì IDEA sử dụng khóa 128 bit và kích thước khối 64 bit nên bản rõ được chia thành các khối 64 bit. Nếu không thể phân vùng như vậy, khối cuối cùng sẽ được bổ sung theo nhiều cách khác nhau với một chuỗi bit nhất định. Để tránh rò rỉ thông tin về từng khối riêng lẻ, nhiều chế độ mã hóa khác nhau được sử dụng. Mỗi khối 64 bit không được mã hóa ban đầu được chia thành bốn khối con, mỗi khối 16 bit, vì tất cả các phép toán đại số được sử dụng trong quá trình mã hóa đều được thực hiện trên các số 16 bit. IDEA sử dụng cùng một thuật toán để mã hóa và giải mã.

IDEA sử dụng các phép toán sau:

Phép cộng bit theo modulo 2 (phép toán OR độc quyền);

Cộng các số nguyên không dấu modulo 2 16 ;

Nhân các số nguyên không dấu modulo (2 16 +1), với khối 16 số 0 được coi là 2 16 ;

Một bất lợi đáng kể là IDEA đã được cấp bằng sáng chế, vì điều này ngăn cản việc phân phối miễn phí nó. IDEA không cung cấp khả năng tăng độ dài khóa. Một nhược điểm khác có thể coi là không phải tất cả các công trình về giải mã đều được xuất bản, tức là rất có thể mật mã đã bị phá, hoặc sẽ bị phá trong tương lai.

Cấu trúc của thuật toán IDEA được trình bày bên dưới (Hình 1).

· Chế độ sổ mã điện tử (ECB - Sổ mã điện tử)

· Chế độ xâu chuỗi khối (CBC - Cipher Block Chaining)

· Chế độ phản hồi bản mã (CFB - Cipher Feed Back)

· Chế độ phản hồi đầu ra (OFB -- Output Feed Back).

Khóa học này xem xét việc triển khai phần mềm thuật toán mã hóa IDEA (Chế độ phản hồi mã hóa).