1. Trang chủ
  2. » Công Nghệ Thông Tin

Viết chương trình mã hóa file trong aes, gửi và nhận tệp tin giữa hai máy sử dụng ngôn ngữ javascript

58 5 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 58
Dung lượng 3,21 MB

Cấu trúc

  • CHƯƠNG 1. TỔNG QUAN (15)
    • 1.1 Giới thiệu chung (15)
    • 1.2 Giới thiệu về AES (15)
      • 1.2.1 Ưu điểm (16)
      • 1.2.2 Nhược điểm (17)
    • 1.3 CTR MODE (17)
      • 1.3.1 Ưu điểm (18)
      • 1.3.2 Nhược điểm (18)
    • 1.4 Môi trường (19)
      • 1.4.1 Môi trường NodeJs (19)
      • 1.4.2 Ngôn ngữ sử dụng Javascript (21)
    • 1.5 Xây dựng thuật toán (22)
      • 1.5.1 Mô tả bài toán (22)
      • 1.5.2 Trạng thái(State) (23)
      • 1.5.3 Xây dựng bảng S-box (24)
      • 1.5.4 Giải thuật sinh khóa phụ (KeyExpansion) (26)
      • 1.5.5 Quy định thuật toán (31)
    • 1.6 Phân công công việc (31)
      • 2.1.1 Phương thức AddRoundKey (34)
      • 2.1.2 Phương thức SubBytes (35)
      • 2.1.3 Phương thức ShiftRow (37)
      • 2.1.4 Phương thức MixColumns (39)
  • CHƯƠNG 3. QUÁ TRÌNH GIẢI MÃ (41)
    • 3.1 Tổng quan về giải mã (41)
    • 3.2 Phương thức (43)
      • 3.2.1 Phương thức AddRoundKey (43)
      • 3.2.2 Phương thức InvSubBytes (43)
      • 3.2.3 Phương thức InvShiftRow (45)
      • 3.2.4 Phương thức InvMixColumns (46)
  • CHƯƠNG 4. THỰC NGHIỆM (48)
    • 4.1 Viết chương trình mã hóa và giải mã bằng Javascript (48)
      • 4.1.1 Hàm mã hóa Encrypt AES (48)
      • 4.1.2 Hàm giải mã Decrypt AES (49)
      • 4.1.3 Form chương trình (50)
    • 4.2 Kết quả thực nghiệm (50)
      • 4.2.1 Câu lệnh và ghi chú (50)
      • 4.2.2 Kết quả (51)
    • 4.3 Các dạng tấn công AES và cách phòng tránh (52)
      • 4.3.1 Các dạng tấn công (52)
      • 4.3.2 Cách phòng tránh (54)
  • KẾT LUẬN (55)
  • TÀI LIỆU THAM KHẢO (57)
  • PHỤ LỤC (58)

Nội dung

BÀI TẬP MÔN HỌC CƠ SỞ AN TOÀN VÀ BẢO MẬT THÔNG TIN VIẾT CHƯƠNG TRÌNH MÃ HÓA FILE TRONG AES, GỬI VÀ NHẬN TỆP TIN GIỮA HAI MÁY SỬ DỤNG NGÔN NGỮ JAVASCRIPT Thuật toán AES thực hiện việc xử lý rất nhanh. Mã chương trình ngắn gọn, thao tác xử lý sử dụng ít bộ nhớ. Tất cả các bước xử lý của việc mã hóa và giải mã đều được thiết kế thích hợp với cơ chế xử lý song song

TỔNG QUAN

Giới thiệu chung

Trong thời đại toàn cầu hóa hiện nay, vấn để bảo mật an toàn thông tin internet trở nên hết sức cấp thiết Có nhiều thuật toán được đưa ra nhằm bảo đảm an toàn thông tin trao đổi trên mạng internet Tuy nhiên theo thời gian các thuật toán này dễ dàng bị các đối tượng xấu khám phá và có thể vô hiệu hóa với các mục đích khác nhau Do đó, cần phải bảo vệ dữ liệu khỏi các cuộc tấn công nguy hiểm Mật mã học là khoa học về các mã bí mật, cho phép bảo mật thông tin liên lạc thông qua một kênh không an toàn. Bảo vệ chống lại các biên trái phép bằng cách ngăn chặn việc thay đổi việc sử dụng trái phép Nói chung, nó sử dụng một hệ thống mật mã để chuyển một bản rõ thành một văn bản mật mã, sử dụng hầu hết thời gian là một khóa

Tiêu chuẩn mã hóa nâng cao (AES), còn được gọi là Rijndael, là một tiêu chuẩn mã hóa được sử dụng để bảo mật thông tin AES là một thuật toán mật mã khối đã được phân tích rộng rãi và hiện đang được sử dụng rộng rãi Khác với DES sử dụng mạng Feistel Rijndael sử dụng mạng thay thế- hoán vị AES có thể dễ dàng thực hiện với tốc độ cao bằng phần mềm hoặc phần cứng và không đòi hỏi nhiều bộ nhớ Do AES là một tiêu chuẩn mã hóa mới nó đang được triển khai sử dụng đại trà.

Giới thiệu về AES

Trong mật mã học, AES (viết tắt của từ tiếng Anh: Advanced EncryptionStandard, hay Tiêu chuẩn mã hóa tiên tiến) là một thuật toán mã hóa khối được chính phủ Hoa kỳ áp dụng làm tiêu chuẩn mã hóa Giống như tiêu chuẩn tiền nhiệm DES, AES được kỳ vọng áp dụng trên phạm vi thế giới và đã được nghiên cứu rất kỹ lưỡng AES được chấp thuận làm tiêu chuẩn liên bang bởi Viện công nghệ và tiêu chuẩn quốc gia Hoa Kỳ (NIST) sau một quá trình tiêu chuẩn hóa kéo dài 5 năm

Thuật toán được thiết kế bởi hai nhà mật mã học người Bỉ: Joan Daemen và Vincent Rijmen Thuật toán được đặt tên là "Rijndael" khi tham gia cuộc thi thiết kế AES Rijndael được phát âm là "Rhine dahl" theo phiên âm quốc tế.

AES làm việc với các khối dữ liệu 128bit và độ dài khóa 128bit, 192bit hoặc 256bit Các khóa mở rộng sử dụng trong chu trình được tạo ra bởi thủ tục sinh khóa Rijndael.

Hầu hết các phép toán trong thuật toán AES đều thực hiện trong một trường hữu hạn của các byte Mỗi khối dữ liệu đầu vào 128bit được chia thành 16byte, có thể xếp thành 4 cột, mỗi cột 4 phần tử hay một ma trận 4x4 của các byte, nó gọi là ma trận trạng thái.

Tùy thuộc vào độ dài của khóa khi sử dụng 128bit, 192bit hay 256bit mà thuật toán được thực hiện với số lần lặp khác nhau.

Thuật toán AES thực hiện việc xử lý rất nhanh.

Mã chương trình ngắn gọn, thao tác xử lý sử dụng ít bộ nhớ.

Tất cả các bước xử lý của việc mã hóa và giải mã đều được thiết kế thích hợp với cơ chế xử lý song song

Yêu cầu đơn giản trong việc thiết kế cùng tính linh hoạt trong xử l{ luôn được đặt ra và đã được đáp ứng. Độ lớn của khối dữ liệu cũng như của mã khóa chính có thể tùy biến linh hoạt từ 128 đến 256-bit với điều kiện là chia hết cho 32 Số lượng chu kz có thể được thay đổi tùy thuộc vào yêu cầu riêng được đặt ra cho từng ứng dụng và hệ thống cụ thể.

Mã chương trình cũng như thời gian xử lý của việc giải mã tương đối lớn hơn việc mã hóa Không thể tận dụng lại toàn bộ đoạn chương trình mã hóa cũng như các bảng tra cứu cho việc giải mã.

Không thể tận dụng lại toàn bộ đoạn chương trình mã hóa cũng như các bảng tra cứu cho việc giải mã.

Khi cài đặt trên phần cứng, thì việc giải mã chỉ sử dụng lại một phần các mạch điện tử sử dụng trong việc mã hóa và với trình tự sử dụng cũng khác nhau.

Mô tả toán học khá là đơn giản.

CTR MODE

CTR là chế độ mã hóa sử dụng một tập các khối ngõ vào, gọi là các counter, để sinh ra một tập các giá trị ngõ ra thông qua một thuật toán mã hóa Sau đó, giá trị ngõ ra sẽ được XOR với plaintext để tạo ra ciphertext trong quá trình mã hóa, hoặc XOR với ciphertext để tạo ra plaintext trong quá trình giải mã.

Hình 1 1 Chế độ mã hóa, giải mã CTR

Chế độ CTR có những đặc điểm cần chú ý như sau:

 Thuật toán mã hóa không áp dụng trực tiếp trên plaintext mà dùng để biển đổi một khối dữ liệu sinh ra từ các bộ đếm (counter).

 Quá trình mã hóa/giải mã của mỗi khối dữ liệu là độc lập.

 Khả năng bảo mật cao hơn ECB Tuy quá trình mã hóa/giải mã của mỗi khối dữ liệu là độc lập nhưng mỗi plaintext có thể ảnh xạ đến nhiều ciphertext tùy vào giá trị bộ đếm của các lần mã hóa

 Có thể mã hóa/giải mã song song nhiều khối dữ liệu.

 Phần cứng cần thiết kế thêm các bộ đếm counter hoặc giải thuật tạo các giá trị counter không lặp lại.

Môi trường

NodeJS là một nền tảng được xây dựng trên “V8 Javascript engine” được viết bằng C++ và Javascript Nền tảng này được phát triển bởi Ryan Lienhart Dahl vào năm 2009 Nodejs được thiết kế để xây dựng các ứng dụng lớn hay nhỏ và có thể mở rộng nhanh và ít tốn kém nhất, tạo ra được các ứng dụng có tốc độ xử lý nhanh, realtime thời gian thực Nodejs áp dụng cho các sản phẩm có lượng truy cập lớn, cần mở rộng nhanh, cần đổi mới công nghệ, hoặc tạo ra các dự án Startup nhanh nhất có thể.

Hình 1 2 Node JS a) Đặc điểm

 Không đồng bộ: Đặc điểm đầu tiên của Nodejs là tính bất đồng bộ.

Node.js không cần đợi API trả dữ liệu về, vậy nên mọi APIs nằm trong thư viện Node.js đều không được đồng bộ, hiểu đơn giản là chúng không hề blocking (khóa) Server có cơ chế riêng để gửi thông báo và nhận phản hồi về các hoạt động của Node.js và API đã gọi.

 Tốc độ nhanh: Với phần core phía dưới lập trình gần như toàn bộ bằng ngôn ngữ C++, kết hợp với V8 Javascript Engine mà Google Chrome cung cấp, tốc độ vận hành, thực hiện code của thư viện Node.js diễn ra rất nhanh.

 Đơn giản - Hiệu quả: Tiến trình vận hành của Node.js đơn giản song lại mang đến hiệu năng cao nhờ ứng dụng mô hình single thread và các sự kiện lặp Một loạt cơ chế sự kiện cho phép server trả về phản hồi bằng cách không block, đồng thời tăng hiệu quả sử dụng Các luồng đơn cung cấp dịch vụ cho nhiều request hơn hẳn Server truyền thống.

 Không đệm: Nền tảng Node.js không có vùng đệm, tức không cung cấp khả năng lưu trữ dữ liệu buffer.

 Có giấy phép: NodeJS đã được cấp giấy phép bởi MIT License. b) Ưu nhược điểm

 Có tốc độ xử lý nhanh nhờ cơ chế xử lý bất đồng bộ (non- blocking) Bạn có thể dễ dàng xử lý hàng ngàn kết nối trong khoảng thời gian ngắn nhất.

 Giúp bạn dễ dàng mở rộng khi có nhu cầu phát triển website.

 Nhận và xử lý nhiều kết nối chỉ với một single-thread Nhờ đó, hệ thống xử lý sẽ sử dụng ít lượng RAM nhất và giúp quá trình xử Nodejs lý nhanh hơn rất nhiều.

 Có khả năng xử lý nhiều Request/s cùng một lúc trong thời gian ngắn nhất.

 Có khả năng xử lý hàng ngàn Process cho hiệu suất đạt mức tối ưu nhất.

 Phù hợp để xây dựng những ứng dụng thời gian thực như các ứng dụng chat, mạng xã hội …

 Nhược điểm Ứng dụng nặng tốn tài nguyên NodeJS được viết bằng C++ & Javascript, nên phải thông qua thêm 1 trình biên dịch của NodeJS sẽ lâu hơn 1 chút c) Cài đặt NodeJs Để cài đặt NodeJs trên Window, truy cập vào website chính thức của NodeJS, tải bản cài đặt mới nhất về máy tính, thực hiện setup: https://nodejs.org

Kiểm tra cài đặt : node -v

1.4.2 Ngôn ngữ sử dụng Javascript

JavaScript là ngôn ngữ lập trình phổ biến nhất trên thế giới trong suốt 20 năm qua Nó cũng là một trong số 3 ngôn ngữ chính của lập trình web giúp cải thiện hoạt động của trang web

 JavaScript là ngôn ngữ dễ học;

 Nó được phát triển bởi Netscape, và đang được dùng trên 92% webstie;

 JS có thể được gắn vào một element của trang web hoặc sự kiện của trang web như cú click chuột;

 Hoạt động trên đa trình duyệt và đa thiết bị;

 Nhanh và nhẹ hơn các ngôn ngữ lập trình khác;

 Có thể ít an toàn hơn vì độ phổ biến của nó;

 Bạn có thể thêm JavaScript trực tiếp vào HTML hoặc bạn có thể lưu nó trên files riêng biệt và gọi lên khi cần.

Xây dựng thuật toán

Trong phạm vi bài tập, chúng em sẽ Viết chương trình mã hóa file trong AES, gửi và nhận tệp tin giữa hai máy sử dụng ngôn ngữ Js với dữ liệu đầu vào là

128 bit và sử dụng khóa 128bit, 192 và 256bit

 Với văn bản cho trước x, khởi tạo Trạng thái (State) là x và thực hiện phép toán ADDROUNDKEY để tiến hành XOR khóa (ROUNDKEY) với trạng thái.

 Với mỗi vòng lặp trong Nr – 1 vòng đầu tiên, thực hiện lần lượt các phép toán sau:

 Phép toán thay thế SUBBYTES đối với trạng thái bằng cách sử dụng một Sbox.

 Phép hoán vị SHIFTROWS đối với trạng thái.

 Phép toán MIXCOLUMNS đối với trạng thái.

 Thực hiện các phép toán SUBBYTES, SHIFTROWS và

ADDROUNDKEY Định nghĩa văn bản mã y là một trạng thái.

Hình 1 4 Mô hình mã hóa và giải mã bằng thuật toán AES

- Các phép toán bên trong của Rijndael đều được thực hiện trên một mảng byte 2 chiều gọi là trạng thái Mỗi trạng thái bao gồm 4 dòng byte Mỗi dòng chứa Nb byte với Nb là độ dài chuỗi nhập đã chia cho 32.

- Trong mảng trạng thái (kí hiệu là s), mỗi byte có 2 chỉ số: chỉ số dòng r (nằm trong khoảng 0 < 4 < r) và chỉ số cột c (nằm trong khoảng 0 < c

Ngày đăng: 16/03/2024, 00:37

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w