đồ án Mã hóa luồng dữ liệu với thuậ t toán NKBK

21 421 0
đồ án Mã hóa luồng dữ liệu với thuậ t toán NKBK

Đ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

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN ĐIỆN TỬ - VIỄN THÔNG  BÁO CÁO THỰC TẬP TỐT NGHIỆP Đề tài : Mã hóa luồng dữ liệu với thuật toán NKBK. Giáo viên hướng dẫn: TS. Phạm Việt Thành Sinh viên thực hiện: Nguyễn Ngọc Khá Số hiệu sinh viên: 20091428 Lớp: Điện Tử - Viễn Thông 10 Khóa: 54 Hà nội, Tháng 3/2014 Nguyễn Ngọc Khá – SHSV: 20091428 Contents Đại học Bách Khoa Hà Nội Page 2 Nguyễn Ngọc Khá – SHSV: 20091428 Phần 1: Lời mở đầu Ngày nay, cùng với sự phát triển mạnh về công nghệ thông tin, thì công việc bảo vệ, bảo mật dữ liệu cũng là mối lo đáng quan tâm với ngành. Việc bảo mật sẽ chống lại các cuộc tấn công từ bên ngoài vào, giúp thông tin muốn được lưu trữ hay gửi đi được an toàn hơn. Với nhiều hình thức tấn công tinh vi, thì song song với chúng, chúng ta cũng cần phải có những biện pháp ngăn chặn lại tối ưu hơn. Trong các công cụ để ngăn chặn những hành vi đó, thì việc mã hóa dữ liệu cũng là một giải pháp mà rất nhiều người ưa dùng. Mã hóa chia thành hai loại là mã hóa luồng và mã hóa khối. Trong khi đó, nguyên tắc thiết kế và bảo mật của mật mã khối được hiểu khá rõ, thiết kế mật mã luồng vẫn còn đòi hỏi nhiều nghiên cứu. Kể từ khi mật mã khối có thể chuyển đổi thành mật mã luồng bằng cách sử dụng OFB hoặc chế độ CFB đã có nhiều cuộc tranh luận liệu mật mã dòng có thực sự hữu ích không. Những ý kiến chung đã chỉ ra rằng thuật toán mã hóa luồng vẫn còn nhiều hữu ích bởi hai lý do sau. Thứ nhất, chúng có thể được thiết kế cho phép thực hiện nhanh hơn. Thứ hai, chúng có thể được thiết kế nhỏ gọn hơn trong phần cứng. Do đó, đối với một mật mã luồng muốn trở nên hiệu quả thì nó phải chạy rất nhanh trong phần mềm hoặc rất nhỏ trong phần cứng. Các hoạt động mã hóa trong một mật mã luồng nhị phân rất đơn giản. Dòng chính được XOR nhị phân với bản gốc để hình thành lên bản mã. Tương tự như vậy, giải mã được thực hiện bằng cách dùng dòng chính XOR với bản mã để trở về bản gốc. Điều quan trong nhất của một mật mã dòng là chống lại các cuộc tấn công khác nhau. Trong bản báo cáo này, em xin đề xuất một loại mã hóa luồng dữ liệu có tên gọi là NKBK, một thuật toán mới về mật mã luồng. Thêm vào đó, với thuật toán đơn giản, thiết kế nhỏ gọn, độ an toàn mang đến cao, em tin rằng NKBK sẽ rất được ưa chuộng. Đại học Bách Khoa Hà Nội Page 3 Nguyễn Ngọc Khá – SHSV: 20091428 Em xin gửi lời cảm ơn chân thành tới TS. Phạm Việt Thành - Giảng viên viện Điện tử - Viễn thông, trường Đại học Bách Khoa Hà Nội đã tận tình hướng dẫn, giúp đỡ em trong quá trình thực tập vừa qua. Em xin chân thành cảm ơn! Sinh viên thực hiện Nguyễn Ngọc Khá Đại học Bách Khoa Hà Nội Page 4 Nguyễn Ngọc Khá – SHSV: 20091428 Phần 2: Nội dung 1. Sơ lược về đề tài. NKBK là một loại mã hóa luồng. Với thuật toán đơn giản cùng với khả năng xử lý dữ liệu tốt, quá trình thiết kế sẽ rất đơn giản, nhỏ gọn và sẽ mang lại hiệu quả cao. Đối với phần cứng, NKBK hỗ trợ kích thước thanh ghi chính là 80 bit Key và 64 bit IV và 80 bit Key ảo. Với chiều dài của thanh ghi ngắn, cùng với thuật toán thiết kế đơn giản quá trình thiết kế phần cứng sẽ trở nên nhỏ gọn. Ngoài ra khi phát triển phần mềm, NKBK sẽ tự động mở rộng kích thước thanh ghi tùy vào nhu cầu người sử dụng, độ dài thanh ghi càng cao thì độ an toàn càng tốt nhưng tốc độ xử lý càng chậm, và ngược lại, độ dài thanh ghi càng ngắn thì độ an toàn càng thấp nhưng tốc độ xử lý càng cao. 2. Thiết kế Những quy định cụ thể chi tiết về thiết kế được trình bày như sau: 2.1. Thông số đầu vào và đầu ra 2.1.1. SecretKey (K), được gán với nhãn K(0) … K(ln-1) ( có nội dung tương ứng với passwork người sử dụng nhập vào); 2.1.2. InitialValue (IV), có giá trị IV(0) … IV(m-1)( có nội dung tương ứng với đoạn giá trị mà người lập trình cho trước); Trong đó n và m lần lượt là chiều dài của 2 thanh ghi K và IV. Đầu ra của NKBK là giá trị Z ( giá trị để mã hóa với bản gốc để tạo thành bản mã hóa), thuật toán để tạo ra giá trị này sẽ được trình bày ở phần sau. 2.2. Các thành phần trong bộ thiết kế Keystream. Bộ thiết kế có tổng cộng 5 thanh ghi, trong đó có 3 thanh ghi thực và 2 thanh ghi ảo. 2.2.1. Thanh ghi thực.  Thanh ghi IV. Đại học Bách Khoa Hà Nội Page 5 Nguyễn Ngọc Khá – SHSV: 20091428 Thanh ghi IV có nội dung và chiều dài bằng chính giá trị InitialValue mà người lập trình đưa vào trong chương trình, được gán nhãn IV(0), IV(1), … IV(m-1);  Thanh ghi A Thanh ghi A có nội dung và chiều dài là một nửa của SecretKey, chúng sẽ nhận thông tin từ các địa chỉ chẵn của thanh ghi Key ( K(0), K(2), K(4), …  A(0), A(1), A(2), … A(n-1) ), trong đó n = ln/2.  Thanh ghi B Tương tự như thanh ghi A với nội dung là các địa chỉ lẻ của thanh ghi Key (K(1), K(3), K(5), …  B(0), B(1), B(2), … B(n-1), trong đó n = ln/2. Hình 1: Quá trình tạo ra 2 thanh ghi A và B từ thanh ghi K (SecretKey) 2.2.2. Thanh ghi ảo.  Thanh ghi A’ Thuật tuán tạo thanh ghi A’ từ thanh ghi A và thanh ghi IV: For( i = 0; I <n; i++) { A’(i) = A(n-1) + IV(0); A(0), A(1), . . . , A(n-1) ← A(1), A(2), . . . , A(n-1), A(0) }  Thanh ghi B’ Quá trình tạo thanh ghi B’ cũng tương tự như tạo thanh ghi A’ : For( i = 0; I <n; i++) { B’(i) = B(n-1) + IV(0); Đại học Bách Khoa Hà Nội Page 6 Nguyễn Ngọc Khá – SHSV: 20091428 B(0), B(1), . . . , B(n-1)} ← {B(1), B(2), . . . , B(n-1), B(0) } Hình 2: Quá trình tạo ra 2 thanh ghi ảo A’ và B’ 2.3. Thiết kế Keystream Sau khi nạp và khởi động các thanh ghi, chúng ta thiết kế Keystreams như sau: 2.3.1. If IV(0) = 0 Then Z = A(0) + A’(0) . B(0) + B’(0) ; Z’ = A(n/2 – 1) . B(n/2 -1) + A’(n/2 – 1) . B’(n/2 - 1) ; For( i = 0; i < n; i++) A(i) = A(i) + Z’; B(i) = B(i) +Z’; A’(0), A’(1), A’(2), . . . , A’(n-1) ← A’(1), A’(2), A’(3), . . . , A’(n-1), A’(0) ; B’(0), B’(1), B’(2), . . . , B’(n-1) ← B’(1), B’(2), B’(3), . . . , B’(n-1), B’(0) ; IV(0), IV(1), IV(2), . . . , IV(m-1)} ← {IV(1), IV(2), IV(3), . . . , IV(n-1), IV(0) ; Đại học Bách Khoa Hà Nội Page 7 Nguyễn Ngọc Khá – SHSV: 20091428 Hình 3: Quá trình tạo Z khi IV(0) =0. 2.3.2. If IV(0)=1 Then Z = A(0) + B’(0) .B(0) +A’(0) ; Z’ = A(n/2 – 1) . B(n/2 -1) + A’(n/2 – 1) . B’(n/2 - 1) ; For( i = 0; i < n; i++) A’(i) = A’(i) + Z’; B’(i) = B’(i) +Z’; A(0), A(1), A(2), . . . , A(n-1) ← A(1), A(2), A(3), . . . , A(n-1), A(0); B(0), B(1), B(2), . . . , B(n-1) ← B(1), B(2), B(3), . . . , B(n-1), B(0) ; IV(0), IV(1), IV(2), . . . , IV(m-1) ← !IV(0), !IV(1), !IV(2), ! IV(3), . . . , !IV(m-2), !IV(m-1) ; Đại học Bách Khoa Hà Nội Page 8 Nguyễn Ngọc Khá – SHSV: 20091428 Hình 4: Quá trình tạo Z khi IV(0) =1. 3. Hoạt động của thuật toán NKBK 3.1. Mã hóa Đại học Bách Khoa Hà Nội Page 9 Nguyễn Ngọc Khá – SHSV: 20091428 Quá trình mã hóa dữ liệu là quá trình thực hiện phép toán Xor giữa file bản gốc với dòng khóa Keystream mà thuật toán mã hóa luồng tạo ra. Các trình tự mã hóa sẽ được mô tả ở hình dưới sau đây: Hình 6: Quá trình mã hóa 1 file dữ liệu Đầu vào của chương trình là 1 file cần mã hóa và 2 giá trị InitialValue và SecretKey để tạo khóa luồng. Điều cần lưu ý ở đây là quá trình mã hóa dựa trên phép toán Xor giữa các bit dữ liệu, chính vì thế mà khi mã hóa tất cả phải được đổi sang dạng nhị phân. Dưới đây là một ví dụ về sự mã hóa với 1 flie ảnh bitmap. Đại học Bách Khoa Hà Nội Page 10 [...]... việc ph t triển phần cứng, NKBK sẽ t i thiểu hóa độ dài thanh ghi lại để ti t kiệm các chi ti t đầu vào, giúp cho việc thi t kế chip trở nên nhỏ gọn hơn, tiêu thụ t năng lượng hơn Cụ thể ở đây, thu t toán sẽ lấy 80 bit Key và 64 bit IV t ơng ứng với độ dài thanh ghi A và B là 40 bit, 2 thanh ghi ảo cũng là 40 bit Vậy khi xử lý, thu t toán sẽ t ng sử dụng đến 160 bit A, B, A’, B’ và 64 bit IV Dưới... thanh ghi càng nhỏ thì khả năng xử lý mã hóa càng thấp, thu t toán xử lý t và tiêu t n t thời gian Hình 5: K t quả sau khi mã hóa 1 file ảnh với độ dài các key khác nhau Ngoài NKBK, cũng còn r t nhiều loại cùng họ mã hóa luồng, chúng ta có thể kể đến như Trivium, Grain128 hay Mickey Điểm khác bi t giữa chúng là thu t toán để t o ra dòng Keystream, chính t sự khác nhau đó dẫn đến khả năng xử lý mã. .. bảo m t r t t t khi được ph t triển trên phần mềm Người lập trình sẽ không gặp nhiều khó khăn khi tiếp cận NKBK Với độ rộng thanh ghi được mở rộng m t cách t y biến, t y thuộc vào giá trị, độ dài t hay nhiều khi người sử dụng đăng nhập 2 giá trị InitializationVariable và SecretKey, ta có thể hiểu được chiều dài càng lớn thì khả năng xử lý mã hóa càng t t, thu t toán xử lý càng nhiều và tiêu t n thời... PC với Chip Intel® Core ™2 Duo T6 670 T n chương trình NKBK Mickey Trivium Grain128 Thời gian xử lý 480 ms 60 s 600 ms 560 ms T bảng so sánh trên, chúng ta có thể thấy số bit bị thay đổi luôn tiệm cận giá trị 50%, thời gian xử lý mã hóa của NKBK là ngắn nh t so với 3 loại mã hóa luồng còn lại Điều đó có thể thấy được NKBK r t tối ưu đối khi ph t triển định hướng phần mềm 4.2 Phần cứng Trong việc ph t. .. Quá trình mã hóa 1 file ảnh Đại học Bách Khoa Hà Nội Page 11 Nguyễn Ngọc Khá – SHSV: 20091428 Giải mã Quá trình giải mã là bước sau của quá trình mã hóa, sau khi m t file nào đó đã mã hóa thành công, chúng ta thu về m t mảng nhị phân mã hóa và công việc giải mã sẽ b t đầu t đây Cũng vẫn là phép toán Xor, chúng ta lấy mảng nhị phân đã mã hóa t ơng t c với dòng khóa Keystream, k t quả là sẽ cho ta về... năng mã hóa sử dụng thu t toán NKBK, em thực hiện xây dựng m t phần mềm mã hóa và giải mã file ảnh trên nền NET Framework sử dụng thu t toán NKBK Hình 9: Cửa sổ giao diện phần mềm Chức năng phần mềm: • Lựa chọn khóa: • • Phần mềm được thi t kế với 4 loại khóa khác nhau, t y vào người sử dụng lựa chọn 1 khóa nào đó ưa thích để mã hóa Chọn và đọc file: Bước này cho người sử dụng đường dẫn đến các thư... sẽ cho ta về m t mảng nhị phân có giá trị bằng đúng mảng nhị phân của file gốc khi chưa bị mã hóa Quá trình thực hiện được mô t ở hình dưới sau: 3.2 Hình 8: Quá trình giải mã 5 Đại học Bách Khoa Hà Nội Page 12 Nguyễn Ngọc Khá – SHSV: 20091428 4 Ứng dụng của thu t toán NKBK 4.1 Phần mềm NKBK r t hiệu quả cho ph t triển phần mềm Điểm nổi b t nh t ở NKBK là thu t toán thi t kế đơn giản, t c độ xử lý cao... giữa Keystream với mảng nhị phân của file gốc Lưu ảnh mã hóa: Sau khi mã hóa thành công, bước tiếp theo là xu t ra 1 file ảnh mã hóa Mảng nhị phân sau khi mã hóa sẽ được convert sang mảng byte rồi sau đó t mảng byte đưa ra m t dạng bitmap và xu t ra ảnh Giải mã: Chức năng giải mã luôn đi sau chức năng mã hóa, chúng sẽ thực hiện lại phép Xor giữa Keystream với mảng nhị phân đã mã hóa Lưu ảnh giải mã: Công... phân rồi gán vào SecretKey Initial Value cũng được gán giá trị t chức năng này, trước đó người lập trình đã nhập 1 đoạn ký t về giá trị Initial Value trong chương trình, đến bước này chỉ việc gọi hàm Convert và thực hiện phép gán nhị phân vào Initial Value Mã hóa: Chức năng mã hóa là m t trong những chức năng chủ đạo của chương trình Chúng thực hiện việc gọi hàm Keystream, thực hiện phép toán Xor giữa... m t m t mã luồng mà có thể ph t triển được trên nền t ng cả phần cứng và phần mềm Thu t toán đơn giản, giúp người lập trình dễ tiếp cận được vấn đề và lập trình ra nó, ngoài ra, t c độ xử lý của NKBK là r t cao, nên việc ứng dụng vào phần mềm sẽ không quá khó khăn Còn về phần cứng, NKBK đã t i thiểu m t phần độ dài của các thanh ghi, giúp cho việc thi t kế trở nên nhỏ gọn, thuận tiện hơn Quá trình nghiên

Ngày đăng: 13/09/2014, 21:20

Từ khóa liên quan

Mục lục

  • Phần 1: Lời mở đầu

  • Phần 2: Nội dung

  • Phần 3: Kết luận

  • Tài liệu tham khảo

Tài liệu cùng người dùng

Tài liệu liên quan