1. Trang chủ
  2. » Luận Văn - Báo Cáo

Thuật toán Stream Cipher Chacha20 Poly1305 và cài đặt thực thi mô phỏng ngôn ngữ lập trình C

79 155 3

Đ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 79
Dung lượng 1,26 MB
File đính kèm Source code.zip (56 KB)

Cấu trúc

  • MỤC LỤC

    • 1.1.3. Một số mã xác thực thông báo phổ biến hiện nay

  • CHƯƠNG 3 XÂY DỰNG ỨNG DỤNG PHẦN MỀM MÃ HÓA DỮ LIỆU VỚI CHACHA20-POLY1305

    • 3.3. Đánh giá hiệu năng chương trình

  • PHỤ LỤC

Nội dung

Đồ án thực hiện nghiên cứu về thuật toán mã dòng có xác thực là CHACHA20 trên cơ chế xác thực là POLY1305 như về kiến trúc, thành phần, nguyên lý hoạt động. Đánh giá độ an toàn của thuật toán và thực thi cài đặt mô phỏng với ngôn ngữ C với giao diện đồ họa.

TỔNG QUAN MÃ DÒNG VÀ MÃ XÁC THỰC THÔNG BÁO

Tổng quan mã dòng

Thuật toán mã hóa dòng (stream ciphers) là một loại mã hóa đối xứng, trong đó dữ liệu được mã hóa từng bit một So với các thuật toán khối, thuật toán dòng có tốc độ nhanh hơn và thường được sử dụng khi khối lượng dữ liệu cần mã hóa chưa được xác định, chẳng hạn như trong các kết nối không dây Có thể xem thuật toán dòng như một phiên bản của thuật toán khối với kích thước mỗi khối là 1 bit Một số thuật toán dòng phổ biến bao gồm RC4, A5/1, A5/2 và Chameleon.

Mã dòng có các đặc tính sau:

 Kích thước một đơn vị mã hóa: gồm k bít Bản rõ được chia thành các đơn vị mã hóa: P  … (: k bit)

 Một bộ sinh dãy số ngẫu nhiên: dùng một khóa K ban đầu để sinh ra các số ngẫu nhiên có kích thước bằng kích thước đơn vị mã hóa:

 Mỗi số ngẫu nhiên được XOR với đơn vị mã hóa của bản rõ để được bản mã

Quá trình giải mã được thực hiện bằng cách XOR bản mã C với dãy số ngẫu nhiên S để khôi phục bản rõ ban đầu Đối với mã dòng, các số được sinh ra cần phải đảm bảo độ ngẫu nhiên cao với chu kỳ tuần hoàn dài.

Hình 1.1: Sơ đồ mã hóa mật mã dòng

Mã hóa dòng tương tự như mã hóa Vigenere và One-Time Pad, với điểm mấu chốt là bộ sinh số ngẫu nhiên Việc chọn khóa ngắn như mã hóa Vigenere không đảm bảo an toàn, trong khi khóa dài như One-Time Pad lại không thực tế Bộ sinh số của mã dòng tạo ra sự cân bằng giữa hai yếu tố này, cho phép sử dụng khóa ngắn nhưng vẫn đảm bảo độ ngẫu nhiên cần thiết như khóa của One-Time Pad, mặc dù không hoàn toàn ngẫu nhiên.

1.1.2 Đặc trưng mã dòng và ứng dụng trong bảo mật thông tin

Mật mã dòng là một loại mật mã khóa đối xứng, mang đầy đủ các đặc trưng của phương pháp này Điểm mạnh của mã hóa đối xứng là tốc độ mã hóa và giải mã nhanh chóng Hiện nay, nhiều phần mềm thương mại hỗ trợ thuật toán mã hóa đối xứng hiệu quả và phổ biến.

Hình 1.2: Mô hình mật mã khóa đối xứng

Nhược điểm lớn nhất của thuật toán mã hóa đối xứng là vấn đề chuyển giao khóa bí mật giữa các đối tác trong môi trường mở Khi Alice gửi thông điệp mã hóa cho Bob, Bob cần có chìa khóa mã của Alice để giải mã Tuy nhiên, nếu Alice gửi khóa cùng với thông điệp, tính bảo mật sẽ bị ảnh hưởng Do đó, Alice phải tìm cách chuyển giao khóa giải mã cho Bob trước khi gửi thông điệp, nhưng bất kể phương thức nào như gửi thư, email hay gọi điện thoại, vẫn tồn tại nguy cơ bị người thứ ba nắm bắt khóa mã.

Xét trường hợp giao dịch của 2 đối tác Alice và Bob Giả sử Alice và Bob

Trong một mối quan hệ an toàn, việc "hoàn toàn tin tưởng vào nhau" là điều cần thiết Hai bên cần trao đổi mã khóa đối xứng thông qua một phương pháp đáng tin cậy, như trao tay trực tiếp hoặc sử dụng một phương pháp thay thế có giá trị tương đương Sau khi nhận được mã khóa, cả hai có thể truyền tải các thông điệp mã hóa cho nhau một cách an toàn.

- Sử dụng mã đối xứng (trong các điều kiện nói trên) đảm bảo được nguyên lý bí mật/riêng tư vì thông tin không thể bị lộ

Để đảm bảo tính xác thực, không chối bỏ và tính nhận dạng trong giao tiếp mã hóa, việc chuyển giao khóa bí mật K giữa Alice và Bob là rất quan trọng Khi Alice và Bob trực tiếp trao đổi khóa này và tin tưởng lẫn nhau, họ có thể xác định rằng thông điệp mã hóa bằng K là do đối tác gửi Nếu Bob nhận được thông điệp mã hóa từ Alice, Alice không thể chối bỏ việc phát hành thông điệp đó, vì chỉ có họ mới biết khóa K Tuy nhiên, nếu Bob phủ nhận việc nhận thông điệp, điều này phụ thuộc vào "tính tin tưởng" giữa hai bên, không chỉ dựa vào khóa K.

Mã hóa đối xứng không đảm bảo tính toàn vẹn dữ liệu, dẫn đến việc thông điệp của Alice gửi cho Bob có thể bị can thiệp bởi Oscar Dù Oscar không hiểu nội dung thư, nhưng hắn có thể thay đổi hoặc thêm bớt dữ liệu, khiến thông điệp bị sai lệch Khi nhận được, Bob không thể phát hiện sự can thiệp này và vẫn tin rằng thông điệp là nguyên vẹn từ Alice, điều này có thể khiến Bob hiểu sai hoặc không thể giải mã thông điệp.

Hình 1 3: Thông tin Alice gửi Bob bị Oscar bắt được và phát lại

Các thuật toán mã hóa đối xứng là giải pháp lý tưởng cho người dùng cá nhân hoặc tổ chức đơn lẻ nhằm bảo vệ dữ liệu khỏi sự xâm nhập của kẻ xấu Không chỉ những bí mật an ninh quốc phòng mà cả thông tin trong công nghệ và thương mại cũng có thể bị tấn công bởi gián điệp công nghệ và kinh tế thông qua các phương pháp như cài đặt phần mềm độc hại Do đó, cá nhân và tổ chức nên mã hóa dữ liệu quan trọng bằng khóa tự tạo và giữ bí mật khóa Tuy nhiên, mã hóa đối xứng gặp khó khăn khi cần chia sẻ thông tin với bên thứ hai, vì việc chuyển giao chìa khóa trong môi trường mở có thể dẫn đến rủi ro lộ thông tin, làm cho việc mã hóa trở nên vô nghĩa.

Mã đối xứng chỉ có thể được sử dụng cho nhiều đối tác trong điều kiện có thể gặp mặt trực tiếp để chuyển giao khóa mã trong môi trường tin cậy Nếu không có biện pháp chuyển giao khóa an toàn, mã đối xứng sẽ không đảm bảo được các nguyên lý bảo mật thông tin cơ bản như bí mật, toàn vẹn, xác thực và chống chối bỏ.

1.1.3 Một số mã xác thực thông báo phổ biến hiện nay

A5/1 là thuật toán bảo mật dữ liệu trong mạng điện thoại GSM, đảm bảo an toàn cho thông tin liên lạc giữa điện thoại và trạm thu phát sóng Đơn vị mã hóa của A5/1 là một bít, với bộ sinh số tạo ra bít 0 hoặc bít 1 để thực hiện phép XOR Để dễ hiểu hơn, chúng ta sẽ xem xét mô hình thu nhỏ của A5/1, được gọi là TinyA5/1.

Bộ sinh số TinyA5/1 hoạt động dựa trên ba thanh ghi X, Y, Z, trong đó thanh ghi X có 6 bit (x0 đến x5), thanh ghi Y có 8 bit (y0 đến y7), và thanh ghi Z lưu 9 bit (z0 đến z8) Khóa K ban đầu dài 23 bit và được phân bố vào các thanh ghi theo thứ tự K  XYZ Các thanh ghi X, Y, Z được biến đổi theo ba quy tắc khác nhau.

Quay X gồm các thao tác:

Ví dụ: giả sử X là 100101, dẫn đến t = 0 ⊕ 0 ⊕ 1 = 1, vậy sau khi quay giá trị của X là 110010.

Quay Y tương tự quay X, quay Y là như sau:

Hàm maj(x, y, z) được định nghĩa là hàm "chiếm đa số" cho ba bít x, y, z Nếu trong ba bít này có từ hai bít 0 trở lên, hàm sẽ trả về giá trị 0 Ngược lại, nếu không, hàm sẽ trả về giá trị 1.

Tại bước sinh số thứ i, các phép tính sau được thực hiện: m = maj(x1, y3, z3) if x1 = m then thực hiện quay X if y3 = m then thực hiện quay Y if z3 = m then thực hiện quay Z

Và bit được sinh ra là: si = x5 ⊕ y7 ⊕ z8

Thực hiện mã hóa bản rõ: ci = pi ⊕ si

Trong mã hóa bằng quy tắc mã dòng, bít thứ i trong bản rõ được XOR với bít thứ i trong khóa để tạo ra bít thứ i trong bản mã Ví dụ, khi mã hóa ký tự P1 (chữ h) với khóa K, quy trình này sẽ được áp dụng để đảm bảo tính bảo mật của dữ liệu.

Ban đầu giá trị của các thanh ghi X, Y, Z là:

Z = 001001100 Vậy bản mã là C = 111 ⊕ 100 = 011 (chữ D)

Về nguyên tắc bộ sinh số A5/1 hoạt động giống như TinyA5/1 Kích thước thanh ghi X, Y, Z lần lượt là 19, 22, 23 bit Các bước quay X, Y, Z cụ thể như sau:

Hàm maj được tính trên 3 bít x8, y10, z10 Sau khi quay xong bít sinh ra là: si = x18 ⊕ y21 ⊕ z22

Hình 1 4: Quá trình sinh dãy A5/1

Mã hóa A5/1 là một phương pháp dễ dàng thực hiện bằng thiết bị phần cứng với tốc độ nhanh, từng được áp dụng để mã hóa dữ liệu real-time như âm thanh Hiện nay, A5/1 chủ yếu được sử dụng để bảo mật dữ liệu cuộc gọi trong mạng điện thoại GSM.

Tổng quan mã xác thực thông báo

1.2.1 Khái niệm mã xác thực thông báo

Mã xác thực thông báo (Message Authentication Code - MAC) là một thông tin ngắn gọn, tương tự như chữ ký, được sử dụng trong mật mã học để cung cấp bằng chứng xác thực cho dữ liệu.

Mã chứng thực thông điệp (MAC) có thể coi là một dạng checksum của mã hóa, được tính theo công thức MAC = C(M, K), trong đó:

- M là thông điệp cần tính MAC.

- K là khóa bí mật được chia sẻ giữa người gửi và người nhận.

MAC sử dụng khóa K bí mật để đảm bảo rằng chỉ người gửi và người nhận có thể tính toán giá trị MAC tương ứng, từ đó xác thực thông điệp Mô hình ứng dụng MAC giúp bảo vệ tính toàn vẹn và xác thực của dữ liệu trong quá trình truyền tải.

Để hỗ trợ các nhà phát triển ứng dụng trong việc tích hợp mã xác thực bằng MAC vào sản phẩm, Viện Tiêu chuẩn và Công nghệ Quốc gia của Mỹ (NIST) đã đưa ra hai tiêu chuẩn về hàm MAC.

Tiêu chuẩn đầu tiên là Mã xác thực thông báo sử dụng hàm một chiều có khóa - HMAC (Keyed-Hash Message Authentication Code) Chuẩn này mô tả phương pháp an toàn để chuyển đổi hàm một chiều kháng va chạm mã băm thành mã MAC HMAC ban đầu được khuyến nghị sử dụng với SHA-1, nhưng cũng có thể áp dụng cho các thuật toán băm khác Các chứng minh hiện tại cho thấy rằng kháng va chạm không cần thiết cho sự an toàn của NMAC (Nested MAC), từ đó HMAC được phát triển.

 M là thông điệp cần trao đổi

 K là một khóa bí mật chỉ được biết bởi bên gửi và bên nhận

 opad = 0x36, lặp lại nếu cần thiết

 ipad = 0x5C, lặp lại nếu cần thiết

 || là phép toán nối chuỗi

Lược đồ băm có thể được nhìn thấy như bên dưới:

Hình 1 6: Lược đồ tạo mã xác thự băm HMAC

Chuẩn thứ hai của NIST là Mã xác thực thông báo mã hóa (CMAC), sử dụng mã khối để thực hiện chức năng MAC, phù hợp cho các ứng dụng bộ nhớ hạn chế CMAC dựa trên chế độ mã CBC ba khóa (three-key cipher block chaining MAC), trong đó người gửi chọn khóa độc lập với khóa mã và sử dụng mã theo chế độ CBC Người gửi chỉ quan tâm đến bản mã cuối cùng là thẻ MAC, bỏ qua các bản mã giữa Khi khóa dùng cho CBC-MAC không trùng với khóa mã của bản rõ, MAC sẽ đảm bảo an toàn.

Hình 1 7: Lược đồ tạo mã xác thực CMAC

Mã dòng xác thực và ứng dụng

Mã hóa xác thực (Authenticated Encryption - AE) là phương pháp mã hóa đồng thời đảm bảo cả tính bảo mật và tính xác thực cho dữ liệu Một giao diện lập trình điển hình để triển khai mã hóa xác thực thường cung cấp các chức năng cần thiết cho việc này.

 Input: bản rõ, khóa, một header tùy chọn trong bản rõ sẽ không được mã hóa nhưng vẫn được bảo vệ bởi tính xác thực.

 Output: bản mã và thẻ xác thực (MAC).

 Input: bản mã, thẻ xác thực và header (nếu có dùng trong mã hóa).

 Output: bản rõ hoặc lỗi nếu thẻ xác thực không khớp với bản mã hoặc header đã được cung cấp.

Một số mã hóa xác thực phổ biến:

Cấu trúc AES-GCM kết hợp mã khối AES với chế độ đếm Galois (GCM), mang lại hiệu suất cao cho mã hóa dữ liệu trên các thiết bị phần cứng hạn chế Thuật toán này không chỉ đảm bảo tính bảo mật mà còn cung cấp tính xác thực và tính toàn vẹn cho dữ liệu GCM được thiết kế cho các thuật toán mã khối với kích thước 128 bit, trong khi mã xác thực tin nhắn Galois (GMAC) là phiên bản chỉ dành cho xác thực Cả GCM và GMAC đều hỗ trợ vectơ khởi tạo có độ dài tùy ý AES-GCM yêu cầu bốn đầu vào: khóa AES, vectơ khởi tạo (IV), nội dung văn bản gốc và dữ liệu xác thực bổ sung (AAD), và tạo ra hai đầu ra: bản mã và mã xác thực.

Trong chế độ GCM, các khối được đánh số liên tục và kết hợp với một vectơ khởi tạo (IV) trước khi được mã hóa bằng AES Kết quả mã hóa này được XOR với bản rõ để tạo ra bản mã Đặc biệt, để đảm bảo tính bảo mật, mỗi dòng được mã hóa cần sử dụng một IV khác nhau.

Các khối bản mã đóng vai trò là hệ số của đa thức và được đánh giá tại điểm khóa H thông qua số học trường hữu hạn Kết quả này được mã hóa để tạo ra một thẻ xác thực, giúp xác minh tính toàn vẹn của dữ liệu Văn bản mã hóa bao gồm IV, bản mã và thẻ xác thực.

AES-CCM là chế độ mã hóa xác thực sử dụng mật mã AES với khối 128 bit, kết hợp giữa chế độ CBC-MAC và Counter Nó yêu cầu bốn đầu vào: khóa AES, nonce, nội dung văn bản gốc và dữ liệu xác thực bổ sung (AAD) AES-CCM tạo ra hai đầu ra: bản mã và mã xác thực, trong đó nonce cần phải duy nhất và không được tái sử dụng với cùng một khóa Khác với AES-GCM, CCM không phải là một AEAD "trực tuyến", do đó độ dài của tin nhắn phải được biết trước Chuỗi khối mật mã sử dụng vectơ khởi tạo (IV) với chiều dài cố định, và việc giải mã một khối bản mã phụ thuộc vào tất cả các khối trước đó Điều này có nghĩa là tính hợp lệ của các khối trước được chứa trong khối bản mã ngay trước đó, và một lỗi bit đơn trong khối bản mã sẽ ảnh hưởng đến việc giải mã tất cả các khối tiếp theo Trong chuỗi khối mật mã, mỗi khối bản rõ được XOR với khối bản mã trước đó trước khi được mã hóa.

Ngày nay, mã dòng xác thực đóng vai trò quan trọng trong các ứng dụng yêu cầu xử lý thời gian thực như hội nghị truyền hình, VoIP và live stream Các mã dòng phổ biến như A5, RC4 và RC5 chỉ đảm bảo hiệu năng mà không có yếu tố xác thực Mặc dù AES-GCM là mã dòng xác thực, nhưng nó không phù hợp với các thiết bị IoT có tài nguyên hạn chế Mã dòng xác thực ChaCha20-Poly1305 được giới thiệu như một giải pháp thay thế hiệu quả, đáp ứng yêu cầu về hiệu suất, bảo mật và tính xác thực Đồ án sẽ nghiên cứu chi tiết mã dòng xác thực này trong chương 2.

Tổng kết chương 1

Chương này trình bày tổng quan về khái niệm và nguyên lý hoạt động của mật mã dòng, đồng thời phân tích các đặc điểm và đặc trưng của mã dòng trong bảo mật thông tin Ngoài ra, chương cũng giới thiệu sơ đồ và phương thức hoạt động của một số mã dòng phổ biến như A5/1 và RC4.

Cuối chương, bài viết đề cập đến một số thuật toán mã hóa xác thực phổ biến như AES-GCM và AES-CCM Tuy nhiên, những thuật toán này không thích hợp cho các thiết bị IoT có tài nguyên phần cứng hạn chế, đặc biệt là trong việc sử dụng mã dòng xác thực.

ChaCha20-Poly1305 được giới thiệu và khuyến nghị như một lựa chọn thay thế hiệu quả Trong chương 2, bài viết sẽ tiến hành nghiên cứu chi tiết về thuật toán mã hóa này.

MÃ DÒNG XÁC THỰC CHACHA20-POLY1305

Mã dòng ChaCha20

ChaCha20 là mật mã dòng được Daniel Bernstein phát triển dựa trên mật mã dòng Salsa20 trước đó ChaCha hoạt động với các từ 32 bit đầu vào, 256 bit khóa

K =(k0, k1, k2, k3, k4, k5, k6, k7) và bộ đếm 32 bit C = (c0) và tạo ra một chuỗi các khối khóa 512 bit Ma trận đầu vào 16 từ của ChaCha được hình thành như sau:

 4 word đầu tiên là hằng số: 0x61707865, 0x3320646e, 0x79622d32, 0x6b206574.

 8 word tiếp theo lấy 256 bit khóa, đọc byte theo thứ tự Little Endian (theo đoạn 4 byte)

 1 word của bộ đếm khối 32 bit (được tăng lên sau mỗi 20 vòng)

 3 word cuối là nonce (cần được quản lý bên ngoài ChaCha20)

Trạng thái của hàm khối được biểu diễn trên ma trận 4 × 4 sau:

Thực hiện 20 vòng luân phiên giữa dịch vòng cột và dịch vòng chéo, mỗi vòng bao gồm 4 phép quarter round Trong đó, có 2 vòng luân phiên giữa dịch vòng cột và dịch vòng chéo.

QUARTERROUND( x0, x4, x8,x12)QUARTERROUND( x1, x5, x9,x13)QUARTERROUND( x2, x6,x10,x14)QUARTERROUND( x3, x7,x11,x15)QUARTERROUND( x0, x5,x10,x15)QUARTERROUND( x1, x6,x11,x12)

4 phép đầu là dịch vòng cột và 4 phép cuối là dịch vòng chéo. Mỗi phép quarter round được mô tả như sau:

Hình 2.1: Lược đồ hoạt động hàm Quarter Round a = a + b; d = d ⊕ a; d = (d)setText(fct2); free(pt); free(ct); free(ad);

Thử nghiệm chương trình

To generate encryption parameters, input the length of Authenticated Data in the "Input Length of Authenticated Data" field and click "Generate Parameters." The program will randomly produce a secret key, nonce value, and Authenticated Data The rand() function in C (section 3.1) is utilized to create these pseudo-random parameters.

Hình 3 1: Thực hiện sinh tham số 3.2.2 Mã hóa và giải mã dữ liệu

Sử dụng Test Vector của mã hóa ChaCha20-Poly1305 trong tài liệu RFC

7539 Dùng phần mềm HxD lần lượt tạo các tệp txt bao gồm: Plain text, Key,Nonce và AD (hình 3.3 đến 3.6) với giá trị như trong mẫu (hình 3.2).

Hình 3 2: Test Vector của RFC 7539

Hình 3 3: Tạo tệp plain text

Hình 3 4: Tạo tệp secret key

To create an Authenticated Data file, open the four previously created files by clicking the "Open file" button Then, press the "Encrypt" button to begin the data encryption process The program will encrypt the plaintext and generate an encrypted file named file.txt.enc, along with a corresponding authentication tag.

Hình 3 7: Tiến hành mã hóa

Mở file mã hóa trên và so sánh khớp với bản mã trong tài liệu RFC 7539, ta thấy chương trình đã mã hóa chính xác:

Hình 3 8: Tệp bản mã sau khi mã hóa thành công

Hình 3 9: Bản mã trong RFC 7539

Tiếp theo, chúng ta sẽ giải mã tệp tin đã mã hóa Tương tự như các bước trước, sau khi mở các tệp và dán thẻ xác thực, hãy nhấn nút Decrypt/Verify để bắt đầu quá trình giải mã dữ liệu.

Hình 3 10: Tiến hành giải mã

Khi ô Result hiển thị chữ "Successfully", điều này có nghĩa là quá trình giải mã đã thành công Chương trình sẽ tạo ra một tệp txt chứa nội dung đã được giải mã, khớp với thông điệp gốc.

Hình 3 11: Kết quả giải mã

Đánh giá hiệu năng chương trình

Theo Adam Langley, trong các môi trường có tài nguyên phần cứng hạn chế, ChaCha20-Poly1305 hoạt động hiệu quả hơn AES-GCM Điều này đặc biệt đúng với các thiết bị di động, thiết bị IoT và chip ARM, nơi mà ChaCha20-Poly1305 có thể thực thi nhanh hơn nhờ khả năng xử lý tốt bằng phần mềm.

Trong thực tế, hiệu suất của hai thuật toán này trong môi trường di động được thể hiện theo bảng dưới đây:

Bảng 3 1: So sánh hiệu năng AES-GCM và ChaCha-Poly1305

Chip xử lý AES-128-GCM ChaCha20-Poly1305

Sandy Bridge Core i5 (AES-NI) 300 MB/s 190 MB/s

Tốc độ thực thi của ChaCha20-Poly1305 nhanh gấp 3 lần so với AES-GCM trong môi trường di động Ngược lại, AES-GCM lại có hiệu suất cao hơn trong môi trường phần cứng chuyên dụng với hỗ trợ AES-NI.

Ngày đăng: 14/01/2022, 23:11

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
1. Nguyễn Bình, Giáo trình mật mã học, Nhà xuất bản Bưu Điện, năm 2002 Sách, tạp chí
Tiêu đề: Giáo trình mật mã học
Nhà XB: Nhà xuất bản Bưu Điện
2. Nguyễn Thị Hằng, Nghiên cứu bài toán an toàn thông tin cho doanh nghiệp vừa và nhỏ, Đại học Công nghệ, năm 2017 Sách, tạp chí
Tiêu đề: Nguyễn Thị Hằng, "Nghiên cứu bài toán an toàn thông tin cho doanhnghiệp vừa và nhỏ
3. Lê Thị Len, Mật mã dòng trong mật mã nhẹ và triển vọng trong IoT, Đại học Công nghệ, năm 2017 Sách, tạp chí
Tiêu đề: Mật mã dòng trong mật mã nhẹ và triển vọng trong IoT
4. TS. Thái Thanh Tùng, Giáo trình mật mã học và an toàn thông tin, Nhà xuất bản Thông tin và Truyền thông, năm 2011 Sách, tạp chí
Tiêu đề: Giáo trình mật mã học và an toàn thông tin
Nhà XB: Nhàxuất bản Thông tin và Truyền thông
5. Tạp chí An toàn thông tin, “Một số chú ý khi triển khai mã xác thực thông báo”, năm 2018 Sách, tạp chí
Tiêu đề: Một số chú ý khi triển khai mã xác thực thôngbáo”
6. Trần Minh Văn, Bài giảng An toàn và bảo mật thông tin, Trường Đại học Nha Trang, năm 2008 Sách, tạp chí
Tiêu đề: Bài giảng An toàn và bảo mật thông tin
7. Nguyễn Khan Văn, Cơ sở an toàn thông tin, Đại học Bách khoa Hà Nội, 2014 Sách, tạp chí
Tiêu đề: Cơ sở an toàn thông tin
8. Daniel J. Bernstein, ChaCha, a variant of Salsa20, Department of Mathematics, Statistics, and Computer Science (M/C 249) The University of Illinois at Chicago Chicago, IL 60607–7045, 1/2008 Sách, tạp chí
Tiêu đề: ChaCha, a variant of Salsa20
9. KDDI Research, Inc, Security Analysis of ChaCha20-Poly1305 AEAD, 2/2007 Sách, tạp chí
Tiêu đề: Security Analysis of ChaCha20-Poly1305 AEAD
10. Y. Nir, A. Langley, RFC7539-ChaCha20 and Poly1305 for IEIF protocols, 5/2015 Sách, tạp chí
Tiêu đề: RFC7539-ChaCha20 and Poly1305 for IEIFprotocols
11. Gordon Procter, A Security Analysis of the Composition of ChaCha20 and Poly1305, Information Security Group, Royal Holloway, University of London, London, UK, 2014 Sách, tạp chí
Tiêu đề: A Security Analysis of the Composition of ChaCha20 andPoly1305
12. William Stallings, Cryptography and Network Security, 2017 Sách, tạp chí
Tiêu đề: Cryptography and Network Security
13. Paul Crowley. Truncated differential cryptanalysis of five rounds of Salsa20. In SASC 2006, Stream Ciphers Revisited, Workshop Record, ECRYPT Network of Excellence in Cryptology, 2006 Sách, tạp chí
Tiêu đề: Truncated differential cryptanalysis of five rounds ofSalsa20
14. Simon Fischer, Willi Meier, Come Berbain, Jean-Fran¥ccois Biasse, and Matthew J. B. Robshaw. Non-randomness in eSTREAM candidates Salsa20 and TSC-4. In Proc. of 7th International Conference on Cryptology in India (INDOCRYPT 2006), Lecture Notes in Computer Science, volume 4329, pages 2–16, 2006 Sách, tạp chí
Tiêu đề: Non-randomness in eSTREAM candidates Salsa20and TSC-4
15. Yukiyasu Tsunoo, Teruo Saito, Hiroyasu Kubo, Tomoyasu Suzaki, and Hiroki Nakashima. Differential cryptanalysis of Salsa20/8. In SASC 2007, The State of the Art of Stream Ciphers, Workshop Record, ECRYPT Network of Excellence in Cryptology, 2007 Sách, tạp chí
Tiêu đề: Differential cryptanalysis of Salsa20/8
16. Helger Lipmaa and Shiho Moriai. Efficient Algorithms for Computing Differential Properties of Addition. In Proc. of 8th Fast Software Encryption Workshop (FSE 2001), Lecture Notes in Computer Science, pages 336–350.Springer, 2001 Sách, tạp chí
Tiêu đề: Efficient Algorithms for ComputingDifferential Properties of Addition
17. Jean-Philippe Aumasson, Simon Fischer, Shahram Khazaei, Willi Meier, and Christian Rechberger. New Features of Latin Dances: Analysis of Salsa, ChaCha, and Rumba. In Prof. of 15th Fast Software Encryption Workshop (FSE 2008), Lecture Notes in Computer Science, volume 5086, pages 470–488, 2008 Sách, tạp chí
Tiêu đề: New Features of Latin Dances: Analysis of Salsa,ChaCha, and Rumba
18. Eli Biham and Rafi Chen. Near-Collisions of SHA-0. In Proc. of Advances in Cryptology (CRYPTO 2004), Lecture Notes in Computer Science, volume 3152, pages 290–305, 2004 Sách, tạp chí
Tiêu đề: Near-Collisions of SHA-0
19. Zhenqing Shi, Bin Zhang, Dengguo Feng, and Wenling Wu. Improved Key Recovery Attacks on Reduced-Round Salsa20 and ChaCha. In Proc. of Information Security and Cryptology (ICISC 2012), Lecture Notes in Computer Science, volume 7839, pages 337–351, 2012 Sách, tạp chí
Tiêu đề: ImprovedKey Recovery Attacks on Reduced-Round Salsa20 and ChaCha
20. Subhamoy Maitra. Chosen IV cryptanalysis on reduced round ChaCha and Salsa. Discrete Applied Mathematics, 208:88–97, 2016 Sách, tạp chí
Tiêu đề: Chosen IV cryptanalysis on reduced round ChaChaand Salsa

HÌNH ẢNH LIÊN QUAN

Hình 1.2: Mô hình mật mã khóa đối xứng - Thuật toán Stream Cipher Chacha20 Poly1305 và cài đặt thực thi mô phỏng ngôn ngữ lập trình C
Hình 1.2 Mô hình mật mã khóa đối xứng (Trang 11)
Hình 1.1: Sơ đồ mã hóa mật mã dòng - Thuật toán Stream Cipher Chacha20 Poly1305 và cài đặt thực thi mô phỏng ngôn ngữ lập trình C
Hình 1.1 Sơ đồ mã hóa mật mã dòng (Trang 11)
Hình 1. 3: Thông tin Alice gửi Bob bị Oscar bắt được và phát lại - Thuật toán Stream Cipher Chacha20 Poly1305 và cài đặt thực thi mô phỏng ngôn ngữ lập trình C
Hình 1. 3: Thông tin Alice gửi Bob bị Oscar bắt được và phát lại (Trang 13)
Hình 1. 4: Quá trình sinh dãy A5/1 - Thuật toán Stream Cipher Chacha20 Poly1305 và cài đặt thực thi mô phỏng ngôn ngữ lập trình C
Hình 1. 4: Quá trình sinh dãy A5/1 (Trang 17)
Hình 1. 5: Sơ đồ xác thực bằng MAC 1.2.2. Một số mã xác thực thông báo phổ biến - Thuật toán Stream Cipher Chacha20 Poly1305 và cài đặt thực thi mô phỏng ngôn ngữ lập trình C
Hình 1. 5: Sơ đồ xác thực bằng MAC 1.2.2. Một số mã xác thực thông báo phổ biến (Trang 23)
Hình 1. 6: Lược đồ tạo mã xác thự băm HMAC - Thuật toán Stream Cipher Chacha20 Poly1305 và cài đặt thực thi mô phỏng ngôn ngữ lập trình C
Hình 1. 6: Lược đồ tạo mã xác thự băm HMAC (Trang 24)
Hình 1. 7: Lược đồ tạo mã xác thực CMAC - Thuật toán Stream Cipher Chacha20 Poly1305 và cài đặt thực thi mô phỏng ngôn ngữ lập trình C
Hình 1. 7: Lược đồ tạo mã xác thực CMAC (Trang 25)
Hình 2.1: Lược đồ hoạt động hàm QuarterRound - Thuật toán Stream Cipher Chacha20 Poly1305 và cài đặt thực thi mô phỏng ngôn ngữ lập trình C
Hình 2.1 Lược đồ hoạt động hàm QuarterRound (Trang 30)
Hình 2.2: Sơ đồ hoạt động ChaCha20 - Thuật toán Stream Cipher Chacha20 Poly1305 và cài đặt thực thi mô phỏng ngôn ngữ lập trình C
Hình 2.2 Sơ đồ hoạt động ChaCha20 (Trang 31)
Hình 2.3: Sơ đồ hoạt động của Poly1305 – Khởi tạo _r_ và xử lý nhóm 16 byte - Thuật toán Stream Cipher Chacha20 Poly1305 và cài đặt thực thi mô phỏng ngôn ngữ lập trình C
Hình 2.3 Sơ đồ hoạt động của Poly1305 – Khởi tạo _r_ và xử lý nhóm 16 byte (Trang 35)
Hình 2.4: Sơ đồ tạo thẻ tag - Thêm vào 16 byte cuối của khóa - Thuật toán Stream Cipher Chacha20 Poly1305 và cài đặt thực thi mô phỏng ngôn ngữ lập trình C
Hình 2.4 Sơ đồ tạo thẻ tag - Thêm vào 16 byte cuối của khóa (Trang 36)
Hình 2.5. Sơ đồ tổng quát AEAD ChaCha20-Poly1305 - Thuật toán Stream Cipher Chacha20 Poly1305 và cài đặt thực thi mô phỏng ngôn ngữ lập trình C
Hình 2.5. Sơ đồ tổng quát AEAD ChaCha20-Poly1305 (Trang 39)
Hình 2.6: Sơ đồ hoạt động thời gian thực ChaCha20-Poly1305 - Thuật toán Stream Cipher Chacha20 Poly1305 và cài đặt thực thi mô phỏng ngôn ngữ lập trình C
Hình 2.6 Sơ đồ hoạt động thời gian thực ChaCha20-Poly1305 (Trang 40)
Hình 2.7: Sơ đồ mã hóa Payload - Thuật toán Stream Cipher Chacha20 Poly1305 và cài đặt thực thi mô phỏng ngôn ngữ lập trình C
Hình 2.7 Sơ đồ mã hóa Payload (Trang 41)
Hình 2.8: Sơ đồ tính toán MAC - Thuật toán Stream Cipher Chacha20 Poly1305 và cài đặt thực thi mô phỏng ngôn ngữ lập trình C
Hình 2.8 Sơ đồ tính toán MAC (Trang 41)
Hình 2. 9: Hàm quarterround của Salsa20 - Thuật toán Stream Cipher Chacha20 Poly1305 và cài đặt thực thi mô phỏng ngôn ngữ lập trình C
Hình 2. 9: Hàm quarterround của Salsa20 (Trang 44)
Bảng 2.1: Bảng thống kê các dạng tấn công - Thuật toán Stream Cipher Chacha20 Poly1305 và cài đặt thực thi mô phỏng ngôn ngữ lập trình C
Bảng 2.1 Bảng thống kê các dạng tấn công (Trang 52)
Bảng 2.3: So sánh GHASH và Poly1305 - Thuật toán Stream Cipher Chacha20 Poly1305 và cài đặt thực thi mô phỏng ngôn ngữ lập trình C
Bảng 2.3 So sánh GHASH và Poly1305 (Trang 53)
Bảng 2.2: So sánh AES và ChaCha20 - Thuật toán Stream Cipher Chacha20 Poly1305 và cài đặt thực thi mô phỏng ngôn ngữ lập trình C
Bảng 2.2 So sánh AES và ChaCha20 (Trang 53)
Bảng 2.4: So sánh AES-GCM và ChaCha20-Poly1305 - Thuật toán Stream Cipher Chacha20 Poly1305 và cài đặt thực thi mô phỏng ngôn ngữ lập trình C
Bảng 2.4 So sánh AES-GCM và ChaCha20-Poly1305 (Trang 54)
Hình 3. 1: Thực hiện sinh tham số 3.2.2. Mã hóa và giải mã dữ liệu - Thuật toán Stream Cipher Chacha20 Poly1305 và cài đặt thực thi mô phỏng ngôn ngữ lập trình C
Hình 3. 1: Thực hiện sinh tham số 3.2.2. Mã hóa và giải mã dữ liệu (Trang 63)
Hình 3. 3: Tạo tệp plaintext - Thuật toán Stream Cipher Chacha20 Poly1305 và cài đặt thực thi mô phỏng ngôn ngữ lập trình C
Hình 3. 3: Tạo tệp plaintext (Trang 64)
Hình 3. 2: Test Vector của RFC7539 - Thuật toán Stream Cipher Chacha20 Poly1305 và cài đặt thực thi mô phỏng ngôn ngữ lập trình C
Hình 3. 2: Test Vector của RFC7539 (Trang 64)
Hình 3. 6: Tạo tệp Authenticated Data - Thuật toán Stream Cipher Chacha20 Poly1305 và cài đặt thực thi mô phỏng ngôn ngữ lập trình C
Hình 3. 6: Tạo tệp Authenticated Data (Trang 65)
Hình 3. 9: Bản mã trong RFC7539 - Thuật toán Stream Cipher Chacha20 Poly1305 và cài đặt thực thi mô phỏng ngôn ngữ lập trình C
Hình 3. 9: Bản mã trong RFC7539 (Trang 66)
Hình 3. 11: Kết quả giải mã - Thuật toán Stream Cipher Chacha20 Poly1305 và cài đặt thực thi mô phỏng ngôn ngữ lập trình C
Hình 3. 11: Kết quả giải mã (Trang 67)

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

TÀI LIỆU LIÊN QUAN

w