Tải bản đầy đủ (.docx) (71 trang)

hệ thống sao lưu và phục hồi dữ liệu dựa trên s3 ver3

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.63 MB, 71 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

<b>ĐỒ ÁN TỐT NGHIỆP</b>

<b>NGHIÊN CỨU GIAO THỨC S3 VÀ XÂY DỰNGHỆ THỐNG SAO LƯU VÀ PHỤC HỒI DỮ LIỆU</b>

<b>Ngành: Công nghệ thông tinMã số: 7.48.02.01</b>

<i><b>Sinh viên thực hiện:</b></i>

<b>Đinh Hồng TuấnLớp: CT2CN</b>

<b>Hà Nội, 2023</b>

<b>BAN CƠ YẾU CHÍNH PHỦ</b>

</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">

<b>HỌC VIỆN KỸ THUẬT MẬT Mﯯ¯¯¯¯¯¯¯¯¯¯¯¯¯</b>

<b>ĐỒ ÁN TỐT NGHIỆP</b>

<b>NGHIÊN CỨU GIAO THỨC S3 VÀ XÂY DỰNGHỆ THỐNG SAO LƯU VÀ PHỤC HỒI DỮ LIỆU</b>

<b>Ngành: Công nghệ thơng tinMã số: 7.48.02.01</b>

<i><b>Sinh viên thực hiện:</b></i>

<b>Đinh Hồng Tuấn</b>

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

<b>DANH MỤC HÌNH VẼ...</b>

<b>DANH MỤC BẢNG BIỂU...</b>

<b>LỜI CẢM ƠN...</b>

<b>LỜI NĨI ĐẦU...</b>

CHƯƠNG 1:TỞNG QUAN VỀ ĐỀ TÀI VÀ CƠNG NGHỆ SỬ DỤNG...

1.1. Khảo sát các hệ thống sao lưu dữ liệu cho người dùng...

1.1.1. Sao lưu đầy đủ (full backup)...

1.1.2. Sao lưu tăng tiến (incremental backup)...

1.1.3. Sao lưu khác biệt (differential backup)...10

1.2. Phát biểu bài toán...11

1.3. Giải pháp và cơng nghệ sử dụng...12

CHƯƠNG 2:PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG...29

2.1. Tổng quan về hệ thống...29

2.2. Biểu đồ use case...29

2.2.1. Danh sách use case của hệ thống...29

2.2.2. Biểu đồ use case tổng quát...30

2.2.3. Chức năng đăng nhập...30

2.2.4. Chức năng đăng xuất...31

2.2.5. Chức năng quản lý tiến trình sao lưu...32

2.2.6. Chức năng khôi phục dữ liệu...36

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

2.3.3. Chức năng khôi phục dữ liệu...42

2.3.4. Chức năng cập nhật cài đặt...42

2.3.5. Chức năng xem thông tin chung...43

2.4. Thiết kế cơ sở dữ liệu...43

2.5. Tổng kết chương...44

CHƯƠNG 3:XÂY DỰNG HỆ THỐNG...45

3.1. Phân tích mã nguồn Duplicati...45

3.1.1. Cấu trúc mã nguồn Duplicati...45

3.1.2. S3 module...47

3.2. Xây dựng hệ thống sao lưu dữ liệu người dùng...48

3.2.1. Chỉnh sửa giao diện...48

3.2.2. Lập trình xử lý nghiệp vụ...52

3.3. Triển khai hệ thống...53

3.4. Kiểm thử và đánh giá hệ thống...54

3.4.1. Kiểm thử tính năng sao lưu dữ liệu...54

3.4.2. Kiểm thử tính năng phục hồi dữ liệu...56

3.4.3. Đánh giá hệ thống...57

3.5. Tổng kết chương...57

<b>TỔNG KẾT...58</b>

<b>TÀI LIỆU THAM KHẢO...59</b>

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">

<b>DANH MỤC HÌNH VẼ</b>

Hình 1.1. Sao lưu đầy đủ (full backup)...7

Hình 1.2. Sao lưu tăng tiến (incremental backup)...8

Hình 1.3. Sao lưu đầy đủ tởng hợp (synthetic full backup)...9

Hình 1.4. Sao lưu khác biệt (differential backup)...10

Hình 1.5. Kiến trúc giao thức S3...13

Hình 1.6. Sơ đồ đánh giá policy của AWS...15

Hình 1.7. Thư mục cần sao lưu...16

Hình 1.8. Quá trình thực hiện sao lưu của Duplicati...17

Hình 1.9. Quá trình xử lý khới dữ liệu...18

Hình 1.10. Mơ hình mã hoá và giải mã bằng thuật toán AES...25

Hình 2.1. Sơ đồ tởng quan hệ thớng...29

Hình 2.2. Biểu đồ use case tởng quát...30

Hình 2.3. Biểu đồ use case đăng nhập...30

Hình 2.4. Biểu đồ use case đăng xuất...31

Hình 2.5. Biểu đồ use case quản lý tiến trình sao lưu...32

Hình 2.6. Biểu đồ use case khơi phục dữ liệu...36

Hình 2.7. Biểu đồ use case cập nhật cài đặt...36

Hình 2.8. Biểu đồ use case xem thơng tin chung...37

Hình 2.9. Biểu đồ tuần tự cho chức năng đăng nhập...38

Hình 2.10. Biểu đồ tuần tự cho chức năng xem tiến trình...38

Hình 2.11. Biểu đồ tuần tự cho chức năng tạo mới tiến trình...39

Hình 2.12. Biểu đồ tuần tự cho chức năng cập nhật tiến trình...39

Hình 2.13. Biểu đồ tuần tự cho chức năng xoá tiến trình...40

Hình 2.14. Biểu đồ tuần tự cho chức năng export dữ liệu tiến trình...40

Hình 2.15. Biểu đồ tuần tự cho chức năng chạy tiến trình...41

Hình 2.16. Biểu đồ tuần tự cho chức năng xem log tiến trình...41

Hình 2.17. Biểu đồ tuần tự cho chức năng khơi phục dữ liệu...42

Hình 2.18. Biểu đồ tuần tự cho chức năng cập nhật cài đặt...42

Hình 2.19. Biểu đồ tuần tự cho chức năng xem thông tin chung...43

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

Hình 2.20. Sơ đồ thiết kế cơ sở dữ liệu của Duplicati...43

Hình 3.1. Giao diện màn hình sao lưu cơ sở dữ liệu...51

Hình 3.2. Giao diện màn hình khơi phục cơ sở dữ liệu...51

Hình 3.3. Triển khai hệ thớng...54

Hình 3.4. Cơ sở dữ liệu cần sao lưu...54

Hình 3.5. Nhập thơng tin cơ sở dữ liệu cần sao lưu...55

Hình 3.6. File sao lưu được tải lên Amazon S3...55

Hình 3.7. Nhập thơng tin cơ sở dữ liệu để phục hồi...56

Hình 3.8. Cơ sở dữ liệu được phục hồi...56

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">

<b>DANH MỤC BẢNG BIỂU</b>

Bảng 2.1. Danh sách use case của hệ thống...29

Bảng 2.2. Đặc tả use case đăng nhập...30

Bảng 2.3. Đặc tả use case đăng xuất...31

Bảng 2.4. Đặc tả use case xem tiến trình...32

Bảng 2.5. Đặc tả use case tạo mới tiến trình...32

Bảng 2.6. Đặc tả use case tạo mới tiến trình...33

Bảng 2.7. Đặc tả use case xoá tiến trình...34

Bảng 2.8. Đặc tả use case export dữ liệu tiến trình...34

Bảng 2.9. Đặc tả use case chạy tiến trình...35

Bảng 2.10. Đặc tả use case xem log tiến trình...35

Bảng 2.11. Đặc tả use case khôi phục dữ liệu...36

Bảng 2.12. Đặc tả use case cập nhật cài đặt...37

Bảng 2.13. Đặc tả use case xem thông tin chung...37

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

<b>LỜI CẢM ƠN</b>

Sau thời gian học tập và rèn luyện tại Học viện Kỹ thuật Mật mã, giờ đến lúc những kiến thức của em được vận dụng vào thực tiễn công việc. Em lựa

<i>chọn đồ án tốt nghiệp đề tài: “Nghiên cứu giao thức S3 và xây dựng hệ thống</i>

<i>sao lưu và phục hồi dữ liệu” để giúp em củng cố và học tập, rèn luyện thêm về</i>

những kĩ năng, kiến thức để trang bị cho tương lai. Có được thành công này, ngoài sự nỗ lực học hỏi của bản thân cịn có sự hướng dẫn tận tình của các thầy cô, các anh chị và các bạn trong trường.

Lời đầu tiên em xin gửi lời cảm ơn chân thành đến Ban Giám đốc Trường Học viện Kỹ thuật Mật mã và các quý thầy cô trong trường nói chung và Khoa Cơng nghệ thơng tin nói riêng, đã tận tình chỉ dạy, truyền đạt những kiến thức, kinh nghiệm cho em từ đó giúp em có được những kiến thức cũng như kĩ năng cần thiết hình thành nên nền tảng nghề nghiệp cơ bản.

Đặc biệt, em xin chân thành cảm ơn giảng viên hướng dẫn, TS. Phạm Văn Hưởng, người đã tận tình hướng dẫn, chỉ bảo cho em trong śt quá trình nghiên cứu, thực hiện và hoàn thành đề tài. Một lần nữa, xin chân thành cảm ơn thầy và chúc thầy dồi dào sức khoẻ.

Cùng với đó em xin cảm ơn đến những người thân, bạn bè đã đồng hành và hỗ trợ em hoàn thành đồ án này.

Dù đã rất cố gắng, tuy nhiên do kiến thức chun mơn cịn hạn chế và bản thân còn thiếu nhiều kinh nghiệm thực tiễn nên nội dung của báo cáo không tránh khỏi những thiếu sót, em rất mong nhận được sự góp ý, chỉ bảo thêm của quý thầy cô để báo cáo này được hoàn thiện hơn.

Cuối cùng, em xin kính chúc quý thầy cô, anh chị, bạn bè dồi dào sức khỏe và thành công trong sự nghiệp, gặp được nhiều điều tốt đẹp trong cuộc sống!

<i>Em xin trân trọng cảm ơn!</i>

Sinh viên thực hiện đồ án

Đinh Hoàng Tuấn

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

<b>LỜI NÓI ĐẦU</b>

Thị trường Việt Nam được đánh giá là một trong những thị trường tiềm năng, phát triển mạnh, tuy nhiên hàm chứa nhiều rủi ro. Trong hoạt động hàng ngày, dữ liệu rất quan trọng đối với các công ty, nhất là trong lĩnh vực tài chính, kế toán, chứng khoán… đòi hỏi dữ liệu phải hoạt động liên tục.

Về mặt cá nhân, trong thời đại công nghệ phát triển như hiện nay, máy tính là công cụ không thể thiếu đối với mỗi người. Máy tính lưu trữ rất nhiều dữ liệu quan trọng như các file, ảnh cùng một số các dữ liệu khác. Tuy nhiên, tuổi thọ của ổ cứng không phải là vô hạn, hoặc trong nhiều trường hợp, người dùng vô tình thao tác xoá nhầm hay tạo điều kiện cho virus tấn cơng vào ở cứng, hoặc nếu vì một lý do khơng may nào đó, máy tính khơng cịn hoạt động được nữa, các dữ liệu của người dùng sẽ bị mất. Khi đó, chúng ta sẽ cần một nơi lưu trữ dữ liệu sao lưu để có thể phục hồi lại.

Về mặt tổ chức và doanh nghiệp, theo Symantec, 37% chủ doanh nghiệp nhỏ và 47% công ty đã bị mất dữ liệu và phải sử dụng các bản sao lưu để khơi phục nó. Các thảm họa tự nhiên, các cuộc tấn công mạng và lỗi của con người có thể dẫn đến việc bị mất dữ liệu. Khoảng 96% các hệ thống máy trạm (workstation) không sử dụng các giải pháp sao lưu. Nếu sự cố xảy ra, các tập tin của họ sẽ bị mất vĩnh viễn. Một vụ hỏa hoạn lớn, các cuộc tấn cơng bằng ransomware hoặc lỗi phần cứng có thể khiến công việc kinh doanh bị ảnh hưởng nghiêm trọng, bởi mất dữ liệu sẽ gây ra những tổn thất và tớn kém khơng đáng có. Trung bình có 7 trong số 10 doanh nghiệp nhỏ bị mất dữ liệu lớn sẽ đóng cửa trong vịng 12 tháng. Nếu khơng có giải pháp sao lưu, việc khôi phục các tệp bị mất có thể tớn đến hàng nghìn đơ la. Vì vậy, các doanh nghiệp cần phải tìm một cách để khôi phục dữ liệu bị mất nếu không muốn gặp rắc rối. Các giải pháp sao lưu và phục hồi cho phép ta lưu và khôi phục dữ liệu mà khơng cần phần cứng tại chỗ. Điều này có thể giúp ta tiết kiệm một khoản chi phí lớn về lâu dài.

Qua những thông tin trên, ta thấy được tầm quan trọng và sự cấp thiết trong

<i>việc sao lưu và phục hồi dữ liệu. Thông qua đề tài: “Nghiên cứu giao thức S3 và</i>

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">

<i>xây dựng hệ thống sao lưu và phục hồi dữ liệu”, em xin trình bày và đề xuất một</i>

ứng dụng sao lưu và phục hồi dữ liệu sử dụng giao thức S3 và Duplicati. Nội dung của đề tài bao gồm:

<b>Chương 1: Tổng quan về đề tài và công nghệ sử dụngChương 2: Phân tích và thiết kế hệ thống</b>

<b>Chương 3: Xây dựng hệ thống và thực nghiệm</b>

Do hạn chế về mặt kiến thức và kinh nghiệm nên không tránh khỏi những thiếu sót, kính mong nhận được sự góp ý của các thầy cô trong hội đồng để em hoàn thiện thêm đồ án tớt nghiệp của mình.

<i>Em xin trân trọng cảm ơn!</i>

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">

1.1. Khảo sát các hệ thống sao lưu dữ liệu cho người dùng

Backup là một phần thiết yếu trong hoạt động của các cá nhân, tổ chức vì dữ liệu là vơ giá và khơng ai muốn xảy ra việc mất dữ liệu do sự cố phần mềm hay hệ thống, lỗi phần cứng hay bất kỳ lý do nào khác. Tuy nhiên, nhiệm vụ backup này không hề dễ dàng do khối lượng dữ liệu và chi phí thiết bị lưu trữ đều ở mức cao, đó là lý do tại sao có nhiều chiến lược sao lưu giúp tối ưu hoá việc lưu trữ dữ liệu mà không tốn nhiều chi phí. Các chiến lược backup phở biến có thể kể đến sao lưu đầy đủ, sao lưu tăng tiến và sao lưu khác biệt <small>[ CITATIONInc23 \l 1033 ]</small>.

1.1.1. Sao lưu đầy đủ (full backup)

<i><small>Hình 1.1. Sao lưu đầy đủ (full backup)</small></i>

Sao lưu đầy đủ (Hình 1 .1) là phương thức sao lưu dữ liệu, trong đó một bản sao lưu sẽ chứa đầy đủ toàn bộ tập dữ liệu cần sao lưu của người dùng. Mặc dù sao lưu đầy đủ được cho là cung cấp việc bảo vệ sự toàn vẹn tốt nhất cho dữ liệu, nhưng hầu hết người dùng không sử dụng phương thức sao lưu dữ liệu này

</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">

hàng ngày vì chúng tớn rất nhiều thời gian, đi kèm với đó là thường yêu cầu một dung lượng lưu trữ lớn, và không phải cá nhân hay tở chức nào cũng có khả năng đáp ứng được điều kiện về cơ sở hạ tầng như vậy.

1.1.2. Sao lưu tăng tiến (incremental backup)

<i><small>Hình 1.2. Sao lưu tăng tiến (incremental backup)</small></i>

Sao lưu tăng tiến (incremental backup) (Hình 1 .2) là một phương thức sao lưu dữ liệu, có ưu điểm là tăng tớc độ sao lưu và giảm dung lượng lưu trữ cần thiết so với việc thực hiện sao lưu đầy đủ. Mỗi lần thực hiện sao lưu tăng tiến, hệ thống sẽ chỉ tạo ra bản sao lưu chứa những dữ liệu đã thay đổi so với lần sao lưu trước được thực hiện <small>[ CITATION Yan18 \l 1033 ]</small>. Ví dụ, giả sử người dùng đã tạo một bản sao lưu đầy đủ vào ngày đầu tiên và sử dụng sao lưu tăng tiến cho những ngày còn lại. Bản sao lưu theo lịch trình của ngày thứ hai sẽ chỉ chứa dữ liệu đã thay đổi kể từ thứ nhất, các tệp sao lưu của ngày thứ ba sẽ chỉ chứa dữ liệu đã thay đổi kể từ ngày thứ hai…

Mặc dù sao lưu tăng tiến có thể tăng tớc độ sao lưu, nhưng ở mặt ngược lại, nhược điểm chính của sao lưu tăng tiến là chúng có thể tớn thời gian để phục hồi dữ liệu. Khi cần khôi phục dữ liệu, quá trình đó sẽ cần phải có bản sao lưu đầy đủ mới nhất cộng với tất cả các bản sao lưu tăng tiến tính đến thời điểm khôi phục. Trong ví dụ trên, giả sử người dùng muốn khôi phục bản sao lưu ở ngày thứ ba. Để làm điều đó, trước tiên người dùng phải khôi phục bản sao lưu đầy đủ

</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">

của ngày đầu tiên, sau đó khơi phục bản sao lưu của ngày thứ hai, tiếp theo đó là ngày thứ ba. Ngoài ra, nếu bất kỳ bản sao lưu nào bị thiếu hoặc bị lỗi trong quá trình thực hiện sao lưu thì người dùng sẽ gặp phải tình trạng dữ liệu được khôi phục không hoàn chỉnh.

Một số biến thể của sao lưu tăng tiến có thể kể đến sao lưu đầy đủ tổng hợp (synthetic full backup) và sao lưu tăng tiến liên tục (incremental-forever backup).

<i><small>Hình 1.3. Sao lưu đầy đủ tổng hợp (synthetic full backup)</small></i>

Sao lưu đầy đủ tởng hợp (Hình 1 .3) giớng như bất kỳ bản sao lưu tăng tiến nào khác, quá trình sao lưu bao gồm việc thực hiện sao lưu đầy đủ đầu tiên, sau đó là một loạt các bản sao lưu tăng tiến. Nhưng sau đó có thêm một bước nữa là máy chủ thực sự tạo ra các bản sao lưu đầy đủ tiếp theo. Nó thực hiện điều này bằng cách kết hợp bản sao lưu đầy đủ hiện có với dữ liệu từ các bản sao lưu tăng tiến. Kết quả cuối cùng là một bản sao lưu đầy đủ tổng hợp tương tự với một bản sao lưu đầy đủ được tạo theo cách truyền thống.

Ưu điểm chính của sao lưu đầy đủ tổng hợp là thời gian khôi phục dữ liệu được giảm đi đáng kể. Việc khôi phục một bản sao lưu này không yêu cầu người dùng phải khôi phục từng bản sao lưu tăng tiến, có thể nằm trên nhiều phương tiện lưu trữ khác nhau. Sao lưu đầy đủ tổng hợp cung cấp tất cả các ưu điểm của sao lưu đầy đủ nhưng giảm thời gian sao lưu và mức sử dụng băng thông.

Sao lưu tăng tiến liên tục thường được sử dụng bởi các hệ thống cần sao lưu từ ổ đĩa sang ổ đĩa (disk-to-disk). Quá trình thực hiện cơ bản của phương thức này, giớng như sao lưu tăng tiến, cũng là bắt đầu bằng cách sao lưu toàn bộ

</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">

tập dữ liệu. Sau thời điểm đó, chỉ sao lưu tăng tiến được thực hiện. Điều làm cho sao lưu tăng tiến liên tục khác với sao lưu tăng tiến thông thường là tính sẵn có của dữ liệu. Nếu như việc khôi phục sao lưu tăng tiến yêu cầu phương tiện đang chứa các bản sao lưu đầy đủ và mọi bản sao lưu tăng tiến tiếp theo của bản sao lưu mà người dùng ḿn khơi phục, thì đới với sao lưu tăng tiến liên tục, máy chủ thực hiện sao lưu thường lưu trữ tất cả các bản sao lưu trên một danh sách các ở đĩa mà nó quản lý, tự động hoá quá trình khơi phục để người dùng khơng cần phải tìm ra đâu là bản sao lưu cần thiết cho quá trình này.

Một sớ hệ thớng sao lưu có sử dụng sao lưu tăng tiến bao gồm:

 Veeam Backup & Replication: đây là một giải pháp sao lưu phổ biến hỗ trợ tính năng sao lưu tăng tiến. Veeam sử dụng một kỹ thuật gọi là Changed Block Tracking (CBT) để xác định và chỉ sao lưu dữ liệu đã thay đổi kể từ lần sao lưu cuối cùng.

 Acronis True Image: hỗ trợ cả sao lưu đầy đủ, tăng tiến và khác biệt. Trong đó sao lưu tăng tiến ở đây là sao lưu tăng tiến liên tục.

 Backup Exec: một hệ thống cũng sử dụng sao lưu tăng tiến liên tục.  Amazon Web Services (AWS) Backup: AWS Backup là giải pháp sao

lưu trên đám mây hỗ trợ sao lưu tăng tiến. Nó sử dụng sao lưu tăng tiến với tính năng chống trùng lặp cấp khối để xác định và chỉ sao lưu dữ liệu đã thay đổi kể từ lần sao lưu cuối cùng.

</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">

1.1.3. Sao lưu khác biệt (differential backup)

<i><small>Hình 1.4. Sao lưu khác biệt (differential backup)</small></i>

Sao lưu khác biệt (differential backup) (Hình 1 .4) giớng với sao lưu tăng tiến ở việc nó bắt đầu bằng một bản sao lưu đầy đủ và các bản sao lưu tiếp theo chỉ chứa dữ liệu đã thay đổi <small>[ CITATION JTa05 \l 1033 ]</small>. Sự khác biệt chủ yếu giữa sao lưu khác biệt so với sao lưu tăng tiến là trong khi sao lưu tăng tiến chỉ bao gồm dữ liệu đã thay đổi kể từ lần sao lưu trước, thì sao lưu khác biệt chứa tất cả dữ liệu đã thay đổi kể từ lần sao lưu đầy đủ cuối cùng.

Giả sử rằng người dùng muốn tạo một bản sao lưu đầy đủ vào ngày thứ nhất và sử dụng sao lưu khác biệt cho những ngày còn lại. Bản sao lưu của ngày thứ hai sẽ chứa tất cả dữ liệu đã thay đổi kể từ ngày thứ nhất, lúc này nó sẽ giớng với một bản sao lưu tăng tiến. Tuy nhiên, vào ngày thứ ba, bản sao lưu khác biệt cũng sẽ sao lưu lại mọi dữ liệu đã thay đổi kể từ ngày đầu tiên, bao gồm cả những thay đổi trong ngày thứ hai.

Ưu điểm mà sao lưu khác biệt mang lại so với sao lưu tăng tiến là thời gian khôi phục dữ liệu sẽ ngắn hơn. Khôi phục bản sao lưu khác biệt không bao giờ yêu cầu nhiều hơn hai bản sao lưu, một bản sao lưu đầy đủ và một bản sao lưu khác biệt tại thời điểm đó, trong khi sao lưu tăng tiến có thể yêu cầu một số lượng lớn các bản sao lưu. Tuy nhiên, sao lưu khác biệt yêu cầu một dung lượng lưu trữ lớn hơn.

</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18">

Một sớ hệ thớng sao lưu có sử dụng sao lưu khác biệt bao gồm:  Veritas Backup Exec

 NovaBACKUP  Acronis True Image  Microsoft Azure Backup  Commvault

Hầu hết các hệ thống trên đều hỗ trợ cả sao lưu tăng tiến và khác biệt.

1.2. Phát biểu bài toán

Với sự phát triển mạnh mẽ của công nghệ thông tin, các dịch vụ lưu trữ đám mây ngày càng trở nên phở biến. Trong sớ đó, giao thức lưu trữ S3 của Amazon là một trong những giao thức được sử dụng nhiều nhất. Tuy nhiên, việc sao lưu và phục hồi dữ liệu trên hệ thống lưu trữ đám mây vẫn còn gặp nhiều thách thức, nhất là với những dữ liệu quan trọng và nhạy cảm.

Vì vậy, đề tài nghiên cứu giao thức S3 và xây dựng hệ thống sao lưu và phục hồi dữ liệu sẽ giúp cho các tở chức, doanh nghiệp và cá nhân có thể lưu trữ dữ liệu một cách an toàn, đồng thời đảm bảo khả năng phục hồi dữ liệu nhanh chóng và hiệu quả khi có sự cớ xảy ra.

Mục tiêu của đề tài là nghiên cứu và phân tích các yêu cầu và tiêu chuẩn của hệ thống sao lưu và phục hồi dữ liệu, xác định các giải pháp sao lưu và phục hồi dữ liệu trên giao thức S3 và xây dựng một hệ thống tin cậy, đáp ứng được các yêu cầu về tính bảo mật và khả năng phục hồi dữ liệu.

Đối tượng nghiên cứu của đề tài: Giao thức S3 và Duplicati.

Phạm vi nghiên cứu của đề tài: Nghiên cứu và phân tích kiến trúc mã nguồn, các module xử lý S3 của Duplicati.

1.3. Giải pháp và công nghệ sử dụng 1.3.1. Giao thức S3

<b>a) Giới thiệu</b>

S3 (Simple Storage Service) là một giao thức mạng được sử dụng khá phổ biến, cung cấp khả năng lưu trữ đối tượng trên cloud và truyền dữ liệu giữa cloud với máy khách. Nó sử dụng giao diện dịch vụ web RESTful dựa trên

</div><span class="text_page_counter">Trang 19</span><div class="page_container" data-page="19">

HTTP/ HTTPS, làm cho nó có thể dễ dàng tích hợp với các ứng dụng và dịch vụ web.

Giao thức S3 cho phép người dùng lưu trữ và truy xuất bất kỳ loại dữ liệu nào, bao gồm hình ảnh, video, tài liệu và các dữ liệu phi cấu trúc khác. Nó cũng cung cấp các tính năng nâng cao như truy xuất lịch sử các phiên bản của dữ liệu, kiểm soát quyền truy cập và các chính sách vòng đời, làm cho nó trở thành một giải pháp mạnh mẽ và có tính mở rộng cao cho lưu trữ và quản lý dữ liệu, đồng thời là một môi trường đáng tin cậy, an toàn và tiết kiệm chi phí, trở thành một lựa chọn phổ biến cho các doanh nghiệp và cá nhân muốn tận dụng các lợi ích của việc lưu trữ trên cloud.

<b>b) Dịch vụ Amazon S3</b>

Amazon Simple Storage Service (Amazon S3) <small>[ CITATION Wha23 \l 1033 ]</small> là một dịch vụ lưu trữ, cung cấp khả năng mở rộng, tính khả dụng của dữ liệu, bảo mật và hiệu suất cao. Khách hàng có thể sử dụng Amazon S3 để lưu trữ và bảo vệ mọi dữ liệu cho nhiều trường hợp sử dụng, chẳng hạn như trang web, ứng dụng di động, sao lưu và khôi phục, lưu trữ, ứng dụng doanh nghiệp, thiết bị IoT và phân tích dữ liệu lớn. Amazon S3 cung cấp các tính năng quản lý để ta có thể tối ưu hoá, sắp xếp và xác định cấu hình quyền truy cập vào dữ liệu nhằm đáp ứng các nhu cầu cụ thể của người dùng.

<i><small>Hình 1.5. Kiến trúc giao thức S3</small></i>

Kiến trúc giao thức S3 bao gồm các thành phần:

 Regions: S3 có sẵn trong nhiều máy chủ ở nhiều khu vực trên toàn cầu, mỗi khu vực đại diện cho một vị trí địa lý cụ thể, và các bucket được tạo trong một khu vực nhất định sẽ lưu trữ dữ liệu tại đó. Việc chọn khu vực phù hợp có thể ảnh hưởng đến hiệu suất truy cập dữ liệu, AWS cho phép

</div><span class="text_page_counter">Trang 20</span><div class="page_container" data-page="20">

người dùng chọn vị trí lưu trữ dữ liệu của mình để đáp ứng yêu cầu về quy định về bảo vệ dữ liệu và hiệu suất tốt nhất.

 Object Storage: S3 lưu trữ dữ liệu dưới dạng đối tượng, mỗi đối tượng được xác định bởi một khoá (key) duy nhất. Đới tượng có thể là bất kỳ loại file nào, chẳng hạn như hình ảnh, video, tài liệu văn bản, và được lưu trữ dưới dạng các đối tượng không thay đổi (immutable object). Dữ liệu được phân phối trên các máy chủ khác nhau để đảm bảo tính khả dụng và độ tin cậy cao.

 Buckets: Mỗi đối tượng được lưu trữ trong một “bucket”, tương tự như các thư mục trong hệ thống tệp. Mỗi bucket được xác định bởi một tên định danh toàn cục duy nhất và được gắn với một khu vực địa lý cụ thể của AWS. Người dùng có thể quản lý quyền truy cập và sửa đổi cấu hình của bucket.

 RESTful API: Amazon S3 cung cấp một giao diện lập trình ứng dụng (API) RESTful để lưu trữ và truy xuất dữ liệu trên đám mây. Giao diện này sử dụng giao thức HTTP/HTTPS để tương tác với dữ liệu trên S3.  Security: S3 hỗ trợ nhiều phương thức bảo mật, bao gồm quản lý danh

tính và truy cập, mã hoá dữ liệu, và kiểm soát quyền truy cập đến dữ liệu thông qua các chính sách truy cập có thể được xác định bởi người dùng.  Lifecycle policies: S3 cung cấp tính năng quản lý chính sách vòng đời

cho dữ liệu, cho phép người dùng cấu hình chính sách tự động xoá hoặc di chuyển các đối tượng dựa trên thời gian tồn tại của chúng, giúp người dùng quản lý dữ liệu một cách hiệu quả hơn.

<b>c) Tính bảo mật</b>

AWS cung cấp các tính năng bảo mật dữ liệu cao đối với các tài nguyên trên hệ thống này. Khi một dịch vụ AWS nhận được request, AWS sẽ thực hiện một số bước để xác định xem nên cho phép hay từ chối yêu cầu <small>[ CITATIONPol23 \l 1033 ]</small>.

<b>Bước 1: Xác thực</b>

</div><span class="text_page_counter">Trang 21</span><div class="page_container" data-page="21">

AWS xác thực người đưa ra request, nhưng với dịch vụ Amazon S3 thì bước này không được thực hiện, do dịch vụ này cho phép một số yêu cầu từ người dùng ẩn danh.

<b>Bước 2: Xử lý thông tin request</b>

Các thông tin thu thập được bao gồm:

 Hành động mà đối tượng request muốn thực hiện.

 Tài nguyên AWS mà các hành động được thực hiện trên đó.

 Đới tượng thực hiện: có thể là user, role, federated user hay application. Thông tin này bao gồm cả các policy được gán với đối tượng đó.

 Dữ liệu mơi trường: địa chỉ IP, SSL, hay thời gian hiện tại.

 Dữ liệu tài nguyên: dữ liệu liên quan đến tài nguyên được yêu cầu, chẳng hạn như tên bucket, tên key trong S3.

<b>Bước 3: Xác định và đánh giá các policy được gắn với đối tượng</b>

Các policy được xác định gồm:

 Identity-based: policy được gán với đối tượng IAM (user, group, role) và gán quyền cho đới tượng đó.

 Resource-based: policy được gán với đới tượng thực hiện request và tài nguyên yêu cầu, xác định đới tượng có quyền gì đới với tài ngun đó.  IAM permissions boundaries: tính năng đặt quyền tối đa mà

identity-based policy có thể gán cho đới tượng. Khi được gán boundary, đối tượng sẽ không thể thực hiện các yêu cầu vượt quá phạm vi của boundary đó. Trong một sớ trường hợp, một quyền deny trong boundary có thể giới hạn các quyền được cấp bởi resource-based: policy.

 AWS Organizations service control policies (SCPs): xác định quyền tối đa cho một đơn vị tổ chức (Organization Unit – OU) và các tài khoản thành viên bên trong đó, bao gồm cả tài khoản root user.

 Session policies: policy được tạo ra đồng thời khi người dùng tạo một phiên tạm của role hay federated user.

<b>Bước 4: Xác định request có được cho phép hay không</b>

</div><span class="text_page_counter">Trang 22</span><div class="page_container" data-page="22">

Khi đã xác định được các policy gán với đối tượng request, AWS xác định việc cho phép hay từ chối truy cập theo sơ đồ sau:

<i><small>Hình 1.6. Sơ đồ đánh giá policy của AWS</small></i>

Chỉ cần có một policy xác định quyền của đới tượng là từ chới thì request khơng thành cơng. Do đó khi ta thao tác với tài nguyên của S3 mà gặp lỗi từ chối truy cập (HTTP code 403 – Access Denied), ta cần kiểm tra đầy đủ các policy được gán với đối tượng request để đảm bảo tất cả policy đều có quyền cho phép.

1.3.2. Duplicati

Duplicati là một ứng dụng sao lưu mã nguồn mở, hỗ trợ nhiều nền tảng, bao gồm Windows, macOS và Linux. Duplicati khơng có tác động của các thành phần máy chủ và do đó, nó có thể hỗ trợ nhiều nhà cung cấp dịch vụ lưu trữ dựa trên đám mây. Điều này cũng có nghĩa là Duplicati phải xử lý những vấn đề như độ trễ lớn hay kết nới bị gián đoạn, và nó chỉ có thể thêm và xoá file chứ không thể sửa đổi các file hiện có. Phương pháp của Duplicati là lưu trữ theo cách thức chia nhỏ các file lớn, khi phục hồi dữ liệu thì hợp nhất các file nhỏ đó lại, và hỗ trợ các tính năng như mã hoá, nén và loại bỏ trùng lặp, quản lý phiên bản và sao lưu tăng tiến (incremental backup). Các dịch vụ lưu trữ sao lưu mà Duplicati hỗ trợ là rất đa dạng, có thể kể đến Google Drive, Dropbox, Amazon S3, FTP,

</div><span class="text_page_counter">Trang 23</span><div class="page_container" data-page="23">

WebDAV… Hệ thống Duplicati sử dụng chuẩn mã hoá AES-256 để mã hoá đầu cuối và hệ quản trị cơ sở dữ liệu là SQLite <small>[ CITATION The16 \l 1033 ]</small>.

Duplicati là một phần mềm sao lưu và phục hồi dữ liệu mạnh mẽ và linh hoạt, tuy nhiên, nó cũng có nhược điểm liên quan đến độ phức tạp và hiệu suất. Do Duplicati có thể yêu cầu tài nguyên máy tính và thời gian để thực hiện quá trình sao lưu và phục hồi dữ liệu, bao gồm nhiều bước đòi hỏi cường độ tính toán cao, điều này có thể ảnh hưởng đến hiệu suất chung của hệ thớng.

<b>a) Q trình sao lưu</b>

Già sử người dùng cần tạo sao lưu cho một thư mục trên Windows như sau:

<i><small>Hình 1.7. Thư mục cần sao lưu</small></i>

</div><span class="text_page_counter">Trang 24</span><div class="page_container" data-page="24">

Sơ đồ quá trình thực hiện sao lưu của Duplicati như sau:

<i><small>Hình 1.8. Quá trình thực hiện sao lưu của Duplicati</small></i>

Ở bước đầu tiên, Duplicati sẽ duyệt qua hệ thống các thư mục và file, từ đó cho ra đường dẫn tụt đới cho các thư mục và file cần sao lưu:

</div><span class="text_page_counter">Trang 25</span><div class="page_container" data-page="25">

Để lưu trữ thông tin liên quan đến bản sao lưu, Duplicati sử dụng định dạng JSON và định dạng file nén zip. Danh sách tên các file được sao lưu sẽ được nén

<i>lại thành một file có tên dạng duplicati-20161014090000.dlist.zip ở ngay trên</i>

thiết bị đang sao lưu, trong đó phần sớ trong tên file thể hiện ngày và giờ hiện tại của hệ thống theo giờ UTC.Bên trong file zip này có chứa một file JSON có tên

<i>filelist.json. Ở thời điểm khởi tạo, fie này chứa một danh sách rỗng, được biểu</i>

thị bằng JSON dưới dạng []. Ngoài ra, nó cịn chứa một file manifest mơ tả các cài đặt của việc sao lưu. Còn dữ liệu thực tế của các file được sao lưu được nén

<i>lại thành file duplicati-7af781d3401eb90cd371.dblock.zip, ở đây tên file được</i>

tạo ra một cách ngẫu nhiên, không liên quan đến dữ liệu bên trong hay thời gian hiện tại. Ở thời điểm ban đầu thì file này rỗng.

<i>Khi bắt đầu sao lưu, Duplicati đọc đối tượng đầu tiên, C:\data\. Đối tượng</i>

này là một thư mục, do đó hệ thớng chỉ thêm các thông tin của đối tượng này

<i>vào file filelist.json:</i>

<i>Đối tượng tiếp theo là một file, C:\data\mydoc.txt. Duplicati sẽ đọc file đó</i>

theo từng khới có kích thước mặc định là 100KB. Quá trình xử lý khới dữ liệu của Duplicati được mơ tả trong sơ đồ sau:

<i><small>Hình 1.9. Quá trình xử lý khối dữ liệu</small></i>

</div><span class="text_page_counter">Trang 26</span><div class="page_container" data-page="26">

<i>Đối với file mydoc.txt, do chỉ có kích thước 4KB nên Duplicati có thể đọc</i>

hết file trong khới đầu tiên. Sau đó, Duplicati sẽ tiến hành tính toán hàm băm SHA-256 cho khối dữ liệu đó và encode theo định dạng base64 và thu được một chuỗi dữ liệu có dạng:

Sau khi tính toán hàm băm cho khối, Duplicati sẽ tính hàm băm cho toàn bộ file. Ở đây do file được đọc toàn bộ trong một khối nên việc tính hàm băm

<i>cho file cho ra kết quả tương tự. Dữ liệu đã được băm của file mydoc.txt sau đóđược thêm vào file dblock. Thông tin của file này cũng được ghi vào file</i>

<i>filelist.json. Lúc này dữ liệu trong file đó có dạng:</i>

<i>Sau đó, với đới tượng C:\data\myvideo.mp4, đây là một file có kích thướclớn. Phương pháp xử lý với file này cũng tương tự như file C:\data\mydoc.txt.</i>

Tuy nhiên do kích thước file này lớn hơn kích thước của một khối (210KB so với 100KB), Duplicati sẽ đọc nó thành ba khới và tính toàn hàm băm SHA-256 cho ba khới đó, hai khới đầu tiên có kích thước 100KB và khới cịn lại là 10KB. Từng khối dữ liệu được thêm vào file dblock, lúc này dữ liệu trong file có dạng:

</div><span class="text_page_counter">Trang 27</span><div class="page_container" data-page="27">

Mặc dù ta có thể lựa chọn lưu trực tiếp những thơng tin trên vào trong file

Tuy nhiên, vì ta lưu trữ khoảng 47 kí tự cho mỗi 100KB dữ liệu nên nếu một file có dung lượng lớn hơn, khoảng 1GB thì sẽ cần lưu 482KB dữ liệu bở

<i>sung vào file filelist.json, làm cho file này trở nên quá lớn.</i> Thay vào đó, Duplicati tạo thêm một "khối gián tiếp", một khối dữ liệu mới chỉ với các giá trị băm. Vì dữ liệu đầu ra của hàm băm SHA-256 có độ dài là 32 byte nên nếu không được encode bằng base64, ta có thể lưu trữ 3200 khới dữ liệu băm (kích thước khoảng 300MB) trong một khối duy nhất, nghĩa là kích thước file

<i>filelist.json sẽ chỉ tăng thêm 47 byte cho 300MB dữ liệu.</i>

<i>Đối với file C:\data\myvideo.mp4, hệ thớng tạo ra ba khới, vì vậy khới mới</i>

chứa ba chuỗi khối băm chỉ chiếm 96 byte. Khối mới này được xử lý khơng khác gì các khới khác và hàm băm SHA-256 được tính toán, kết quả sau khi được mã hoá base64 có dạng:

</div><span class="text_page_counter">Trang 28</span><div class="page_container" data-page="28">

<i>Đối tượng C:\data\extra\ là một thư mục, được lưu trữ theo cách tương tựnhư thư mục C:\data\ trước đó.</i>

File <i>C:\data\extra\olddoc.txt là phiên bản cũ của file C:\data\mydoc.txt đã</i>

được sao lưu, nhưng Duplicati chỉ đơn giản tính toán hàm băm của các khối dữ liệu trong file mới, hệ thống tính ra kết quả:

<i>Kết quả này không giống với giá trị băm đã tính toán trước đó cho file C:\</i>

<i>data\mydoc.txt và do đó, nó được coi là một khới mới. Một số hệ thống sao lưu</i>

khác sẽ xác định các đoạn dữ liệu của hai tệp khớp với nhau và chỉ tạo ra một bản sao lưu trong trường hợp này, còn Duplicati chọn tập trung vào sự đơn giản và tốc độ sao lưu. Hơn nữa, các file đều được nén, nên nếu có các file giớng nhau trong cùng một file nén, thuật toán nén sẽ làm cho dung lượng file nén được giảm đi. Đồng thời, trường hợp hai file chỉ khác nhau những thay đổi nhỏ thường sẽ xuất hiện đối với các file văn bản thuần t có kích thước khơng quá lớn, các file này cũng có khả năng nén tớt, cịn các file dung lượng lớn hơn thường sẽ có tính chất khơng được viết lại (như file cơ sở dữ liệu, ảnh, video), hoặc viết lại hoàn toàn (file ảnh, video), hoặc viết lại trong quá trình nén (file

</div><span class="text_page_counter">Trang 29</span><div class="page_container" data-page="29">

<i>Ći cùng, file C:\data\extra\samevideo.mp4 được xử lý. Duplicati sẽ xử lý</i>

từng khối dữ liệu của file một cách riêng lẻ, nhưng hệ thớng nhận ra rằng nó đã

<i>tạo bản sao lưu của các khới này và sẽ khơng thêm nó vào file dblock. Sau khi</i>

cả ba khối được tính toán hàm băm, hệ thống sẽ tạo một khối mới để lưu trữ ba giá trị băm này, nhưng cũng nhận thấy rằng một khối như vậy cũng đã được lưu trữ, nên khơng có dữ liệu nào được thêm vào bản sao lưu. Cách thức này được gọi là chống trùng lặp, đảm bảo rằng mỗi khối dữ liệu chỉ được lưu trữ một lần. Với phương pháp này, các file trùng lặp dữ liệu sẽ được phát hiện, bất kể tên hoặc vị trí của chúng.

</div><span class="text_page_counter">Trang 30</span><div class="page_container" data-page="30">

Như vậy, quá trình tạo bản sao lưu hoàn tất. Dữ liệu cuối cùng của file

<i>dblock được giữ nguyên như trên, và file filelist.json có dạng:</i>

Tiếp tục với ví dụ trên, quá trình khơi phục dữ liệu của Duplicati sử dụng

<i>file filelist.json, ở đây ta cần khôi phục 4 file và có file cần blocklist. Do đó, quá</i>

trình khơi phục bắt đầu với việc trích xuất blocklist thành các khối băm cần thiết. Vì trong danh sách file có hai file có cùng blocklist, nên ta chỉ cần lấy dữ

<i>liệu từ khối này. Tên của các file dblock và dữ liệu chúng chứa khơng có liên hệ</i>

nào, vì vậy ta cần tải x́ng tất cả các file cho đến khi tìm thấy dữ liệu cần dùng.

</div><span class="text_page_counter">Trang 31</span><div class="page_container" data-page="31">

Điều này sẽ làm giảm hiệu năng của ứng dụng trong thực tế, nên Duplicati sẽ

<i>ghi các thông tin về các dblock này chứa những khối băm nào trong các file</i>

Tiếp theo, ta có thể dựa vào kích thước file blocklist hoặc kích thước file

<i>thực tế (trong filelist.json) để tính ra số lượng khối hash cần lấy, ở đây là ba khới</i>

có biểu diễn dưới dạng base64 là:

<small>0td8NEaS7SMrQc5Gs0Sdxjb/1MXEEuwkyxRpguDiWsY= (100kb)PN2oO6eQudCRSdx3zgk6SJvlI5BquP6djt5hG4ZfRCQ= (100kb)uS/2KMSmm2IWlZ77JiHH1p/yp7Cvhr8CKmRHJNMRqwA= (10kb)</small>

Đới với các file có kích thước nhỏ, việc khơi phục được thực hiện không quá phức tạp: trích xuất dữ liệu và lưu vào file có tên tương ứng. Quá trình xác định vị trí file dblock chứa khới dữ liệu mà ta cần và giải nén được cải thiện và

<i>đơn giản hoá trong Duplicati với các file dindex.</i>

Đối với các file có kích thước lớn, khi đã có danh sách khối băm cần dùng như trên, ta sẽ tiến hành khơi phục từng khới. Việc khơi phục có thể tiến hành theo thứ tự từng khối băm một, giải nén từng khối và thêm dữ liệu lần lượt vào file đích, hoặc khôi phục không theo thứ tự (do ta đã biết sẵn kích thước một khối), lúc này ta có thể tính độ dời của dữ liệu trước rồi thêm dữ liệu vào đúng vị trí trong file đích.

Sau khi các file được khôi phục, hệ thống sẽ tính toán giá trị băm của từng

<i>file và so sánh với giá trị được lưu trong file filelist.json, nếu chúng giớng nhau</i>

thì hệ thớng xác nhận việc khơi phục dữ liệu thành cơng.

Khi ta thực hiện quá trình khơi phục dữ liệu sử dụng giao diện dòng lệnh

<i>của Duplicati (Duplicati.CommandLine.RecoveryTool.exe), có thêm hai bước</i>

được thực hiện: download và đánh index. Quá trình download chỉ tải x́ng và

<i>giải mã tất cả các file dblock có thể tìm thấy trên thiết bị lưu trữ, tất cả các thao</i>

tác sau có thể được thực hiện với các file cục bộ. RecoveryTool không dựa vào

<i>file dindex nên sẽ rất tốn thời gian nếu nó phải mở tất cả các file zip để kiểm tra</i>

xem chúng có chứa khới dữ liệu cần xử lý hay khơng, do đó ta cần quá trình lập chỉ mục để tăng tớc quá trình thực hiện, bằng cách tạo ra một file văn bản thuần tuý, trong đó mỗi dịng được ghi một cặp khới, file zip . Hệ thống sẽ mở từng

<i>file dblock và liệt kê khới dữ liệu có trong đó, thêm các dòng tương ứng vào file</i>

chỉ mục rồi sắp xếp file chỉ mục theo thứ tự bảng chữ cái. Có nhiều cách hiệu

</div><span class="text_page_counter">Trang 32</span><div class="page_container" data-page="32">

quả hơn để lưu trữ dữ liệu chỉ mục này, nhưng file văn bản cho phép người dùng dễ dàng theo dõi, cập nhật và điều chỉnh file chỉ mục bằng một trình soạn thảo

<i>văn bản đơn giản nếu có sự cớ xảy ra. Người dùng cũng có thể đọc file dlist và</i>

sử dụng file chỉ mục để tìm ra vị trí của một khới cụ thể. Cuối cùng, chỉ mục đã

<i>sắp xếp được sử dụng để định vị file dblock khôi phục dữ liệu từ đó. Việc tìm</i>

kiếm dựa trên các khới đã được sắp xếp theo thứ tự bảng chữ cái để đảm bảo rằng thời gian tìm kiếm khơng tăng tuyến tính theo số lượng khối dữ liệu.

1.3.3. Chuẩn mã hoá AES-256

AES (viết tắt của Advanced Encryption Standard – thuật toán mã hoá tiên tiến) <small>[ CITATION Fle17 \l 1033 ]</small> là một thuật toán mã hoá khối được thiết kế bởi Rijndael. Thuật toán AES-256 làm việc với khối dữ liệu 128 bit và khoá có độ dài là 256 bit.

Mã hoá dùng AES là mã hoá khối lặp gồm nhiều chu trình, các khoá con sử dụng trong các chu trình được tạo ra bởi quá trình tạo khoá con Rijndael.

Sớ vịng lặp (kí hiệu là <i>N ) phụ thuộc vào độ dài khoá, nếu độ dài của khoá<small>r</small></i>

là 256 bit thì <i>N <small>r</small></i> <sup>14</sup>

</div><span class="text_page_counter">Trang 33</span><div class="page_container" data-page="33">

<i><small>Hình 1.10. Mơ hình mã hố và giải mã bằng thuật tốn AES</small></i>

Thuật toán AES tởng quát có thể mơ tả như sau:

 Với văn bản cho trước <i><sup>x</sup></i><sup>,</sup> khởi tạo state là <i><sup>x</sup></i> và thực hiện phép toán AddRoundKey tiến hành XOR khoá (RoundKey) với state.

 Với mỗi vòng lặp trong <i>N  vòng đầu tiên, thực hiện lần lượt các phép<small>r</small></i> <sup>1</sup>

toán sau:

 Phép toán thay thế (SubBytes) đối với state bằng cách sử dụng một SBox

 Phép hoán vị ShiftRows đối với state  Phép toán MixColumns đối với state

SQLite <small>[ CITATION LvJ09 \l 1033 ]</small> là hệ quản trị cơ sở dữ liệu quan hệ (RDBMS) mã nguồn mở, nhỏ gọn, có thể cài đặt bên trong ứng dụng khác dưới

</div><span class="text_page_counter">Trang 34</span><div class="page_container" data-page="34">

dạng thư viện, không cần cấu hình, cài đặt và khơng cần máy chủ, dữ liệu của SQLite được lưu trữ trên một file duy nhất. Nó ra đời vào năm 2000 bởi D. Richard Hipp, người đã thiết kế SQLite dưới dạng thư viện bằng ngơn ngữ lập trình C.

Ưu điểm của SQLite:

 Nhỏ gọn: SQLite có kích thước nhỏ (dưới 500KB) và ít yêu cầu tài nguyên hệ thống so với các hệ quản trị cơ sở dữ liệu khác. Nó có thể hoạt động trên hầu hết các thiết bị, bao gồm cả điện thoại di động và các thiết bị trong hệ thống nhúng.

 Không cần máy chủ riêng biệt: SQLite là một cơ sở dữ liệu khơng địi hỏi máy chủ riêng biệt, khơng cần cài đặt và cấu hình phức tạp. Điều này làm cho việc triển khai SQLite trở nên dễ dàng và thuận tiện.

 Tiện ích và linh hoạt: SQLite hỗ trợ một loạt các tính năng quản lý cơ sở dữ liệu, bao gồm các truy vấn SQL phức tạp, khóa xung đột, transaction và các tiện ích như ghi log, sao lưu và khôi phục dữ liệu.

 Tích hợp trong ứng dụng: SQLite có thể được nhúng trực tiếp vào bên trong ứng dụng, giúp giảm tải cho kết nối đường truyền mạng và cải thiện hiệu suất truy cập dữ liệu.

 Tính ACID: transaction trong SQLite tuân thủ đầy đủ các tính chất ACID (Atomic – tính nguyên tổ, Consistent – tính nhất quán, Isolated -tính cô lập và Durable – -tính bền vững)

Nhược điểm của SQLite:

 Không phù hợp với cơ sở dữ liệu lớn: SQLite không được thiết kế để quản lý cơ sở dữ liệu lớn hoặc ứng dụng có tải cao. Trong những trường hợp như vậy, nó có thể khơng đủ mạnh để xử lý tớt các yêu cầu.

 Khả năng xử lý đồng thời hạn chế: SQLite hỗ trợ chỉ một kết nối đồng thời duy nhất. Điều này có nghĩa là nếu có nhiều quá trình hoặc luồng đồng thời cớ gắng truy cập cùng một cơ sở dữ liệu SQLite, có thể xảy ra xung đột và lỗi.

 Khả năng xử lý đồng thời hạn chế: SQLite hỗ trợ chỉ một kết nối đồng thời duy nhất. Điều này có nghĩa là nếu có nhiều quá trình hoặc luồng

</div><span class="text_page_counter">Trang 35</span><div class="page_container" data-page="35">

đồng thời cố gắng truy cập cùng một cơ sở dữ liệu SQLite, có thể xảy ra xung đột và lỗi.

Với những ưu và nhược điểm như vậy, SQLite thường được sử dụng trong

 Sử dụng làm bộ dữ liệu tạm thời để xử lý một số dữ liệu trong ứng dụng.  Có thể dùng cho mục đích học tập và đào tạo do không yêu cầu cài đặt

hay cấu hình.

1.4. Tởng kết chương

<i>Trong chương này, em đã trình bày một cách tổng quan về đề tài: “Nghiên</i>

<i>cứu giao thức S3 và xây dựng hệ thống sao lưu và phục hồi dữ liệu ” trên các</i>

khía cạnh: nắm bắt bối cảnh và tầm quan trọng của nghiên cứu, xác định mục tiêu và phạm vi của đề tài, bên cạnh đó, em đã giới thiệu các chiến lược sao lưu dữ liệu, bài toán cần giải quyết, cũng như giải pháp và cơng nghệ sử dụng trong quá trình nghiên cứu.

Trong chương này, em đã trình bày về ba chiến lược sao lưu chính: sao lưu toàn bộ (full backup), sao lưu tăng tiến (incremental backup) và sao lưu khác biệt (differential backup). Mỗi chiến lược sao lưu có ưu điểm và hạn chế riêng, và sự lựa chọn phù hợp phụ thuộc vào yêu cầu cụ thể của hệ thống sao lưu và phục hồi dữ liệu. Em đã trình bày chi tiết về cách hoạt động, tiến trình và lợi ích mang lại của mỗi chiến lược, tạo nền tảng cho phần tiếp theo của nghiên cứu.

Tiếp theo, em đã đặt ra bài toán cho đề tài này: nghiên cứu giao thức S3 và xây dựng hệ thống sao lưu và phục hồi dữ liệu. Bài toán đòi hỏi em phải tìm hiểu và áp dụng giao thức S3 để tạo ra một hệ thống hiệu quả, bảo mật và tin cậy để sao lưu và phục hồi dữ liệu.

Để làm được điều đó, em đã đề xuất sử dụng giao thức S3 của Amazon Web Services (AWS) làm nền tảng để xây dựng hệ thống sao lưu và phục hồi dữ liệu. Giao thức S3 cung cấp tính năng mạnh mẽ và đáng tin cậy cho việc lưu trữ và quản lý dữ liệu trên đám mây. Em đã nghiên cứu cách sử dụng giao thức S3

</div>

×