Cùng với sự bùng nổ về số lượng của các thiết bị máy tính, đặc biệt là thông tin vàtruyền thông đã góp một phần không nhỏ và tạo ra thời đại công nghệ 4.0.. Do đó việc đảm bảo an toàn th
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM
BÁO CÁO THỰC TẬP
NGHIÊN CỨU GIẢI PHÁP TRUYỀN TẢI DỮ LIỆU
AN TOÀN TRONG KHÔNG GIAN MẠNG
TP Hồ Chí Minh, tháng 07 năm 2020
Trang 2LỜI MỞ ĐẦU
Hiện nay, với sự phát triển vượt trội của công nghệ, công nghệ đã bao phủ mọi mặt củađời sống, trở thành một thành phần thiết yếu và không thể thiếu đối với cuộc sống của conngười Cùng với sự bùng nổ về số lượng của các thiết bị máy tính, đặc biệt là thông tin vàtruyền thông đã góp một phần không nhỏ và tạo ra thời đại công nghệ 4.0 Qua đó đòi hỏi củacon người về công nghệ ngày càng cao và yêu cầu sự sáng tạo, tiện dụng, sự mới lạ và phát triểncái mới luôn được đẩy cao
Đi kèm với sự bùng nổ thông tin thì nhu cầu của việc giao tiếp thông tin giữa con ngườicũng ngày càng nhiều hơn Do đó việc đảm bảo an toàn thông tin trước các mối đe dọa đóng vaitrò ngày càng quan trọng và cấp thiết, đặc biệt là các thông tin mang giá trị và tính riêng tư cao.Trong đó vấn đề bảo mật đường truyền đóng vai trò không thể thiếu trong hiện tại và tương lai.Chính vì tiềm năng của lĩnh vực này em quyết định chọn chủ đề “Nghiên cứu giải pháp truyềntải dữ liệu an toàn trong không gian mạng” để tìm hiểu và phát triển cho đợt thực tập lần này
Sau ba năm học tập trên trường, do mong muốn có thêm kinh nghiệm thực tế, cũng nhưmuốn được tham gia làm các ứng dụng trong một môi trường chuyên nghiệp, nên em đã quyếtđịnh chọn tham gia thực tập trong một công ty làm về phần mềm để học hỏi và khai phá tri thức
và các kĩ năng cần thiết để trở thành một nhà phát triển phần mềm chuyên nghiệp Vì vậy, emquyết định chọn Công ty TNHH Hành Tinh - một môi trường lý tưởng, hiện đại, chuyên nghiệp
- là nơi sẽ giúp em thực hiện được dự định này
Trang 3LỜI CẢM ƠN
Đầu tiên, em xin gửi lời cảm ơn sâu sắc đến Trường Đại học Công nghệ Thông tin, Đạihọc Quốc gia TP Hồ Chí Minh đã tạo điều kiện cho em cơ hội tiếp cận, học hỏi và có nhữngkiến thức nền tảng về bộ môn này
Em cũng xin cảm ơn Công ty TNHH Hành Tinh đã cho em cơ hội được thực tập, trảinghiệm thực tế, thông qua đó em có thể gặt hái được những kinh nghiệm, bài học quý giá vàtrau dồi thêm những kỹ năng và hành trang cần thiết cho công việc sau này
Đặc biệt cảm ơn anh Lê Duy, đã hướng dẫn, giúp đỡ cho em tận tình cả những khó khăntrong công việc, đến những khó khăn việc làm quen với môi trường mới; để có thể làm ra mộtsản phẩm trong thời gian qua
Cũng xin cảm ơn thầy cô trong khoa Công nghệ phần mềm đã nhiệt tình hỗ trợ, tạo điềukiện em làm bài báo cáo này
Vì kiến thức bản thân còn hạn chế cũng như là lần đầu tiên được va chạm và tiếp xúc vớiviệc áp dụng lý thuyết vào công việc thực tiễn nên bản thân còn bỡ ngỡ, lúng túng và khôngtránh khỏi những thiếu sót, mong quý thầy (cô) có thể đóng góp ý kiến để em có thể hoàn thiệnhơn
TP Hồ Chí Minh, ngày 28 tháng 07 năm 2020
Nguyễn Dương Hoàng Duy
Trang 4NHẬN XÉT CỦA KHOA
Trang 5
MỤC LỤC
CHƯƠNG 1: GIỚI THIỆU CÔNG TY THỰC TẬP 7
1.1 Giới thiệu công ty TNHH Hành Tinh 7
1.2 Sản phẩm của công ty 7
CHƯƠNG 2: NỘI DUNG THỰC TẬP 8
2.1 Tìm hiểu công ty và các kỹ năng cơ bản trong công ty 8
2.2 Nghiên cứu kỹ thuật 8
2.2.1 Các công cụ làm việc 8
2.2.2 Tìm hiểu kiến thức cơ bản của mạng máy tính 8
a TCP 9
b UDP 10
c ICMP 10
2.2.3 Tìm hiểu cơ chế phân giải tên miền của DNS 11
a Cấu trúc tên miền 11
b DNS 12
c Cơ chế phân giải tên miền của DNS 13
2.2.4 Nghiên cứu giải pháp bảo mật đường truyền dữ liệu trên internet 15
a Mã hóa khóa đối xứng 15
i Mã hóa khối - Mã hóa AES 15
ii Mã hóa dòng - Mã hóa RC4 15
b Mã hóa khóa bất đối xứng – Mã hóa RSA 16
c Hàm băm 17
i MD5 17
ii SHA 17
d TLS 18
2.2.5 Tìm hiểu giao thức HTTP/HTTPS 22
a HTTP 22
Trang 6b HTTPS 23
2.2.6 Tìm hiểu Web service và các phương thức serialization 25
a Web service 25
b Serialization 26
i SOAP 26
ii RESTful 27
2.3 Thực hiện project 28
2.4 Lịch làm việc 28
CHƯƠNG 3: CHI TIẾT VỀ PROJECT 30
3.1 Giới thiệu ứng dụng 30
3.2 Kết quả 30
Trang 7CHƯƠNG 1: GIỚI THIỆU CÔNG TY THỰC TẬP
1 Giới thiệu công ty TNHH Hành Tinh
Công ty TNHH Hành Tinh được thành lập từ năm 2008, hiện nay đã có hơn 200 nhân viên, hoạt động chủ yếu trong lĩnh vực công nghệ thông tin
Thông tin công ty:
- Tên công ty: Công ty TNHH Hành Tinh
- Số nhân viên: 200+ người
- Văn phòng: Centre Point Tower Building, Số 106 Nguyễn Văn Trỗi, Phường 8, Q.Phú Nhuận, TP Hồ Chí Minh
- Trụ sở làm việc: Nguyễn Văn Trỗi, Q Phú Nhuận, TP Hồ Chí Minh
- Điện thoại: (028) 38 475 576
2 Sản phẩm của công ty
Công ty TNHH Hành Tinh chủ yếu phát triển các giải pháp, sản phẩm trong lĩnh vực công nghệ thông tin và phục vụ cho mục tiêu lâu dài của công ty
Trang 8CHƯƠNG 2: NỘI DUNG THỰC TẬP
Đợt thực tập với chủ đề “NGHIÊN CỨU GIẢI PHÁP TRUYỀN TẢI DỮ LIỆU AN TOÀN TRONG KHÔNG GIAN MẠNG” nhằm mục đích giúp sinh viên thực tập được đào tạo toàn diện về kiến thức mạng máy tính và các giải pháp bảo mật, đồng thời rèn luyện những kỹ năng mềm như làm việc nhóm, thuyết trình, giao tiếp Tại công ty, sinh viên có cơ hội được họctập, khám phá và làm việc trong một môi trường phát triển phần mềm chuyên nghiệp
3 Tìm hiểu công ty và các kỹ năng cơ bản trong công ty
Thời gian: 1 ngày
Nội dung: Giới thiệu về công ty, cách tổ chức của công ty
Được nghe người phụ trách giới thiệu về công ty, quá trình thành lập và phát triển (như
đã nhắc đến ở trên), quy trình làm việc từ cao xuống thấp, cách thức tổ chức của công ty
Nhận trang thiết bị phục vụ công việc, bao gồm: máy tính để bàn, máy ảo để chạy thử.Ngoài ra, thực tập sinh còn được giới thiệu về cách thức làm việc trong công ty như thời gian đi làm, các quy định cần phải tuân thủ, cách sử dụng các tài khoản trong công việc
Kết quả: Hiểu thêm về công ty Hành Tinh, quá trình thành lập và phát triển của công ty
Có thêm các kỹ năng về việc sử dụng các tài khoản trong công việc, làm việc có kế hoạch, có kỷluật, có trách nhiệm hơn
4 Nghiên cứu kỹ thuật
4.1 Các công cụ làm việc
Thời gian: 1 ngày
Nội dung: Tìm hiểu về các công cụ sẽ được sử dụng trong quá trình làm việc (bao gồm:
Visual Studio, Gitlab, Tortoise git, Jira, Total Commander )
Trong thời gian này, các anh đã hướng dẫn thực tập sinh tìm hiểu về các công cụ sẽ giúpích cho trong công việc sau này Một số phần mềm trong số đó như Visual Studio - IDE để pháttriển các phần mềm máy tính, Gitlab - hệ thống quản lý mã nguồn phía server, Tortoise git - sửdụng quản lý mã nguồn với giao diện desktop, Jira – hệ thống hỗ trợ quản lý dự án, TotalCommander - trình duyệt file trực quan với nhiều tiện ích
Thực hiện: Thực hành sử dụng các phần mềm đã nêu trên.
Kết quả: Lập trình sử dụng các công cụ miễn phí, giúp dễ dàng kết hợp các công cụ với
nhau
4.2 Tìm hiểu kiến thức cơ bản của mạng máy tính
Thời gian: 3 ngày
Trang 9Nội dung: Tìm hiểu các kiến thức cơ bản của mạng máy tính.
a TCP
TCP (Transmission Control Protocol) là một trong các giao thức cốt lõi của bộ giao thức TCP/IP Sử dụng TCP, các ứng dụng trên các máy chủ được nối mạng có thể tạo các "kết nối" với nhau, mà qua đó chúng có thể trao đổi dữ liệu hoặc các gói tin Giao thức này đảm bảo chuyển giao dữ liệu tới nơi nhận một cách đáng tin cậy và đúng thứ tự TCP còn phân biệt giữa
dữ liệu của nhiều ứng dụng (chẳng hạn, dịch vụ Web và dịch vụ thư điện tử) đồng thời chạy trêncùng một máy chủ
Sơ đồ trạng thái của TCP - phiên bản đơn giản hóa
Trang 10UDP (User Datagram Protocol) là một trong những giao thức cốt lõi của giao thức
TCP/IP Dùng UDP, chương trình trên mạng máy tính có thể gửi những dữ liệu ngắn được gọi
là datagram tới máy khác UDP không cung cấp sự tin cậy và thứ tự truyền nhận mà TCP làm; các gói dữ liệu có thể đến không đúng thứ tự hoặc bị mất mà không có thông báo Tuy nhiên UDP nhanh và hiệu quả hơn đối với các mục tiêu như kích thước nhỏ và yêu cầu khắt khe về thời gian Do bản chất không trạng thái của nó nên nó hữu dụng đối với việc trả lời các truy vấn nhỏ với số lượng lớn người yêu cầu
và traceroute)
Trang 11- Tham gia đầy đủ các buổi training của công ty.
- Làm các bài thực hành, kiểm tra về kiến thức đã học
Kết quả:
- Hiểu được cơ bản cách thức hoạt động của mạng máy tính
- Phân biệt được 3 giao thức TCP, UDP và ICMP
4.3 Tìm hiểu cơ chế phân giải tên miền của DNS
Thời gian: 3 ngày
Nội dung: Tìm hiểu cơ chế phân giải tên miền của DNS
a Cấu trúc tên miền
Mục đích chính của tên miền là để cung cấp một hình thức đại diện, hay nói cách khác, dùng những tên dễ nhận biết, thay cho những tài nguyên Internet mà đa số được đánh địa chỉ bằng số Cách nhìn trừu tượng này cho phép bất kỳ tài nguyên nào (ở đây là website) đều có thểđược di chuyển đến một địa chỉ vật lý khác trong cấu trúc liên kết địa chỉ mạng, có thể là toàn cầu hoặc chỉ cục bộ trong một mạng internet, mà trên thực tế là đang làm thay đổi địa chỉ IP Việc dịch từ tên miền sang địa chỉ IP (và ngược lại) do hệ thống DNS trên toàn cầu thực hiện
Mọi tên miền đều kết thúc bằng một tên miền cấp cao nhất (TLD), luôn là một trong tên
có trong danh sách ngắn gồm các tên chung (từ ba ký tự trở lên), hoặc một mã lãnh thổ hai ký tự
Trang 12dựa trên ISO-3166 (có một số ngoại lệ và các mã mới sẽ được dần dần thêm vào) Tên miền cấpcao nhất đôi khi còn được gọi là tên miền cấp 1.
Trong phân cấp tên miền, phía dưới tên miền cấp cao nhất là tên miền cấp hai (SLD) Đây là những tên đứng ngay bên trái.com,.net, và những tên miền cấp cao nhất khác Ví dụ, trong tên miền vi.wikipedia.org, wikipedia là tên miền cấp hai
Tiếp đến là tên miền cấp ba, được viết ngay bên trái tên miền cấp hai Có thể có tên miềncấp bốn, cấp năm, v.v., không có giới hạn Ví dụ về một tên miền hiện đang tồn tại với bốn cấp tên miền là www.sos.state.oh.us Cụm chữ www đừng đầu tên miền là một host name của máy chủ World-Wide Web Mỗi cấp được phân cách nhau bằng dấu chấm 'sos' được cho là một tên miền con của 'state.oh.us', và 'state' và tên miền con của 'oh.us', v.v Nói chung, tên miền con là những tên miền thấp hơn tên miền cha của nó Một ví dụ về các cấp rất sâu của thứ tự tên miền con là vùng DNS phân giải ngược IPv6, như,
1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa, là tên miền phân giải DNSđảo của địa chỉ IP của một giao diện loopback, hoặc tên localhost
Hệ thống phân cấp của các nhãn trong một tên miền đầy đủ
Tên miền được tạo thành từ các nhãn và phân cách nhau bằng dấu chấm (.), ví dụ
example.com Tên miền còn được chia theo cấp độ như tên miền top level, tên miền cấp 1, cấp 2
Trang 13Tên miền được định nghĩa trong các RFC 1035, RFC 1123, và RFC 2181 Một tên miền bao gồm một hoặc nhiều phần, gọi là các nhãn (label), chúng cách nhau bởi dấu chấm (.), ví dụ example.com.
Hệ thống phân giải tên miền tính theo hướng từ phải sang trái Ví dụ www.example.com thì nhãn example là một tên miền con của tên miền com, và www là tên miền con của tên miền example.com Cây cấu trúc này có thể có tới 127 cấp
Máy chủ tên miền chứa thông tin lưu trữ của Không gian tên miền Hệ thống phân giải tên miền được vận hành bởi hệ thống dữ liệu phân tán, dạng client-server Các nốt của hệ dữ liệu này là các máy chủ tên miền Mỗi một tên miền sẽ có ít nhất một máy chủ DNS chứa thông tin của tên miền đó Các thông tin của Máy chủ tên miền sẽ được lưu trữ trong các zone Có hai dạng NS là là primary và secondary
Hệ thống phân tầng Không gian tên miền trên lớp Internet, tổ chức theo zone, phục vụ
bởi một name server
c Cơ chế phân giải tên miền của DNS
Các máy chủ phân giải tên miền theo cơ chế từ cao xuống thấp
Theo lý thuyết, các máy chủ tên miền có thẩm quyền đã đủ dùng để vận hành hệ thống Internet Tuy nhiên, nếu chỉ có máy chủ tên miền thẩm quyền, mỗi truy vấn DNS phải bắt đầu
Trang 14đi từ root zone, và mỗi hệ thống người dùng phải vận hành một phần mềm để làm nhiệm vụ phân giải Để giảm lượng băng thông trên Internet, DNS cho phép các máy chủ DNS lưu Cache các kết quả mà nó đã từng truy vấn.
Phần client của DNS gọi là DNS resolver
- Truy vấn non-recursive: DNS resolver client truy vấn DNS server để tìm record của tên miền chưa trên server đó
- Tham gia đầy đủ các buổi training của công ty
- Làm các bài thực hành, kiểm tra về kiến thức đã học
Trang 15Kết quả:
- Hiểu được các khải niệm tên miền và DNS
- Hiểu được cơ chế phân giải tên miền
4.4 Nghiên cứu giải pháp bảo mật đường truyền dữ liệu trên internet
Thời gian: 2 tuần.
Nội dung: Các kiến thức về một số thuật toán mã hóa, băm và các phương pháp truyền
tải dữ liệu an toàn
a Mã hóa khóa đối xứng
i Mã hóa khối - Mã hóa AES
Vào những năm 1990, nhận thấy nguy cơ của mã hóa DES là kích thước khóa ngắn, cóthể bị phá mã trong tương lai gần, Cục tiêu chuẩn quốc gia Hoa Kỳ đã kêu gọi xây dựng mộtphương pháp mã hóa mới Cuối cùng một thuật toán có tên là Rijndael được chọn và đổi tênthành Andvanced Encryption Standard hay AES Có thể nói rằng mã hóa AES với khóa có kíchthước 256 bit là “an toàn mãi mãi” bất kể những tiến bộ trong ngành kỹ thuật máy tính
Giống như DES, mã hóa AES là một mã khối gồm nhiều vòng Khác với DES, mã hóaAES không phải là một mã hóa Feistel Thuật toán AES khá phức tạp, ở đây chúng ta chỉ nêu ramột số đặc điểm chính của AES:
- Cho phép lựa chọn kích thước khối mã hóa là 128, 192 hay 256 bit
- Cho phép lựa chọn kích thước của khóa một cách độc lập với kích thước khối: là
128, 192 hay 256 bit
- Số lượng vòng có thể thay đổi từ 10 đến 14 vòng tùy thuộc vào kích thước khóa
Độ an toàn của AES làm cho AES được sử dụng ngày càng nhiều và trong tương lai sẽchiếm vai trò của DES và Triple DES
ii Mã hóa dòng - Mã hóa RC4
RC4 được dùng trong giao thức SSL để bảo mật dữ liệu trong quá trình truyền dữ liệugiữa Web Server và trình duyệt Web Ngoài ra RC4 còn được sử dụng trong mã hóa WEP củamạng Wireless LAN
RC4 có các đặc tính sau:
- Đơn vị mã hóa của RC4 là một byte 8 bit
- Mảng S và T gồm 256 số nguyên 8 bit
- Khóa K là một dãy gồm N số nguyên 8 bit với N có thể lấy giá trị từ 1 đến 256
- Bộ sinh số mỗi lần sinh ra một byte để sử dụng trong phép XOR
Hai giai đoạn của RC4 là:
Trang 16- Giai đoạn khởi tạo:
- Giai đoạn sinh số:
Quá trình sinh số của RC4 cũng sinh ra dãy số ngẫu nhiên, khó đoán trước, vì vậy RC4đạt được mức độ an toàn cao theo tinh thần của mã hóa One-Time Pad Mã hóa RC4 hoàn toànđược thực hiện trên các số nguyên một byte do đó tối ưu cho việc thiết lập bằng phần mềm vàtốc độ thực hiện nhanh hơn so với mã khối
b Mã hóa khóa bất đối xứng – Mã hóa RSA
Phương pháp RSA là một phương pháp mã hóa khóa công khai RSA được xây dựng bởicác tác giả Ron Rivest, Adi Shamir và Len Adleman tại học viện MIT vào năm 1977, và ngàynay đang được sử dụng rộng rãi Về mặt tổng quát RSA là một phương pháp mã hóa theo khối.Trong đó bản rõ M và bản mã C là các số nguyên từ 0 đến 2i với i số bit của khối Kích thướcthường dùng của i là 1024 bit RSA sử dụng hàm một chiều là vấn đề phân tích một số thànhthừa số nguyên tố
Để thực hiện mã hóa và giải mã, RSA dùng phép lũy thừa modulo của lý thuyết số Cácbước thực hiện như sau:
- Chọn hai số nguyên tố lớn p và q và tính N = pq Cần chọn p và q sao cho
M < 2i-1 < N < 2i Với i = 1024 thì N là một số nguyên dài khoảng 309 chữ số
- Tính n = (p - 1)(q - 1)
- Tìm một số e sao cho e nguyên tố cùng nhau với n
- Tìm một số d sao cho e.d ≡ 1 mod n (d là nghịch đảo của e trong phép modulo n)