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

Báo cáo thực hành bài 15 lập trình client:server Để trao Đổi thông tin an toàn cvf

11 0 0
Tài liệu được quét OCR, nội dung có thể không chính xác
Tài liệu đã được kiểm tra trùng lặp

Đ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

Tiêu đề Báo Cáo Thực Hành Bài 15 Lập Trình Client:Server Để Trao Đổi Thông Tin An Toàn
Tác giả Phạm Thị Thanh Ngoan
Người hướng dẫn Nguyễn Ngọc Điệp
Trường học Học Viện Công Nghệ Bưu Chính Viễn Thông
Chuyên ngành An Toàn Thông Tin
Thể loại Báo cáo
Năm xuất bản 2024
Thành phố Hà Nội
Định dạng
Số trang 11
Dung lượng 4 MB

Nội dung

1.1 Mục đích Sinh viên hiểu về cơ chế client/server và có thể tự lap trinh client/server dựa trén socket, sau đó thực hiện ca đặt giao thức đơn giản để trao đổi thông tin an toàn.. Mô hì

Trang 1

HỌC VIÊN CÔNG NGHỆ BƯU CHÍNH VIỄN THONG

KHOA AN TOAN THONG TIN

BAO CAO THUC HANH BAI 15:LAP TRINH

AN TOAN

MON THUC TAP CO SO

Giang viên hướng dẫn : Nguyễn Ngọc Điệp

Ho và tên sinh viên : Phạm Thị Thanh Ngoan

Mã sinh viên : B2IDCA T145

Lớp : D21CQATOI-B

Nhóm :02

Hà Nội - 2024

Trang 2

1.1 Mục đích

Sinh viên hiểu về cơ chế client/server và có thể tự lap trinh client/server dựa

trén socket, sau đó thực hiện ca đặt giao thức đơn giản để trao đổi thông tin an toàn 1.2 Nội dung thực hành

1.2.1 Tìm hiểu lý thuyết

SocKet là một giao diện lập trình (API —- Application Program Interface) ứng dụng mạng thông qua giao diện này có thê lập trình điều khiển việc truyền thông giữa 2 máy

sử dụng các giao thức mức thấp như TCP,UDE , Có thể tưởng tượng nó như một thiết bị truyền thông 2 chiều tương tự như tệp tin, chúng ta gửi/nhận dữ liệu giữa 2 máy, tương tự như việc đọc ghi trên tệp tin

Mô hình khách chủ TCP TcPsewer

TCP client socket()

[sew

Connection

request

Send

next request Wait next request

Các bước đề tạo lên 1 chương trình phía server:

©_ Tạo socket với hàm socket (int family, int type, int protocol) các tham số trong

đó theo thứ tự là họ giao thức, kiêu socket, kiểu giao thức

e Gan dia chi cho socket bind (int sockfd, const struct sockaddr *sockaddr, socklen_t addrlen) các tham số lần lượt là mô tả socket vừa tạo, con trỏ chỏ đến địa chỉ socket, độ lớn địa chỉ

e Chỉ định socket lắng nghe két ndi listen (int sockfd, int backlog) trong do sockfd là mô ta socket vira tao, backlog la số lượng tối đa các kết nối đang chờ

Trang 3

e Chờ/chấp nhận kết nối accept (int sockfd, struct sockaddr *cliaddr, socklen t

*addrlen) lần lượt có các tham số là mô tả socket vừa tạo, con trỏ tới cấu trúc địa chỉ socket của tiến trình kết nói đến, độ lớn cấu trúc địa chỉ

© Thiét lap két noi voi may chu TCP connect (int sockfd, const struct sockaddr

*servaddr, socklen_t addrlen)

Các bước đề tạo lên 1 chương trình phía client

©_ Tạo socket với hàm socket (int family, int type, int protocol) các tham số trong

đó theo thứ tự là họ giao thức, kiểu socket, kiểu giao thức

e Connect téi dia chi server voi ham connect(sock, (struct sockaddr *)&serv_addr, sizeof(serv_addr)

© Doc dir ligu tir server va ghi vao bién buffer read( sock , buffer, 1024)

1.2.2 Chuẩn bị môi trường

o Môi trường Python hoặc Java để chạy được ứng dụng client/server đã lập

trình

o Phần mềm Wireshark

1.2.3 Các bước thực hiện và kết quả cần đạt

1.2.3.1 Lập trình client và server với TCP socket

a) Các bước thực hiện

o Lap trinh client

Trang 4

=4 Sao

1ent recv(1924) decode

„ data server

o Lập trình server

Trang 5

import

HOST =

SERVER_PORT

FORMAT =

server | et(socket.AF_INET, socket.SOCK_STREAM

server.bind((HOST, SERVER_PORT)

server.listen(1

addr = server.accept

while True:

data_client = conn.recv(1024) decode( FORMAT

if data_client == "3

break

data = input erver gui 1

conn.sendall(data.encode( FORMAT)

finally:

server.close

o Chay server sau do chay client

o Client gtri théng diép cá nhận hóa cho server: “Hello, I am <ma sinh vién>

client.”

$ Ngoan clientpy X

TT

conn, addr = server

¬ c : et AF_TNET, et.SOCK_STREAM

e True

ïT, SERVER_PORT - data_client = conn.re

ere

client

No

h

CN eC at

Trang 6

o Server nhận được hiển thị thơng điệp nhận được và gửi lại client thơngđiệp: server gửi lại “Hello, I am <mã sinh viên> server”

DU

o Sử dụng Wireshark đề bắt các thơng tin đã gửi từ client đến server và ngược lại

[“

_ [tp TEES +)+

Time Source Destination Protocol Length Info

2.014762 fe80: : 86fF:6a01:2f0 fe80: :80fF:6a01:2F0 TCP 64 8391 + 59567 [ACK] Seq=1611 Ack=5938 Win=2154496 Len=0 28.015326 fe80: :80ff:6aØ1:2f9 fe80: :80ff:6a01:2f0 TLSv1.2 1612 Application Data

J9 015362 fe80: :80ff:6aØ1:2f9 fe80: :80ff:6a01:2f9 TCP 64 59567 + 8391 [ACK] Seq=5938 Ack=3159 Win=2157312 Len=0

31.919528 127.0.0.1 127.0.0.1 TCP 56 59568 + 65432 [SYN] Seq=9 Min=65535 Len=@ MSS=65495 WS=256 SA 31.919574 127.0.0.1 127.0.0.1 TCP 56 65432 + 59568 [SYN, ACK] Seq=@ Ack=1 Win=65535 Len=8 MSS=6549 31.919690 127.0.0.1 127.0.0.1 TCP 44 59568 + 65432 [ACK] Seq=1 Ack=1 Win=327424 Len=@

47 364013 127.0.0.1 127.8.0.1 TCP 72 59568 + 65432 [PSH, ACK] Seq=1 Ack=1 Win=327424 Len=28

47.364065 127.0.0.1 127.0.0.1 TCP 44 65432 + 59568 [ACK] Seq=1 Ack=29 Win=2161152 Len=0

50 022639 fe80: :80ff:6a01:2f0 fe80: : 80ff:6a01:2f0 TCP 64 59553 + 8391 [FIN, ACK] Seq=1 Ack=1 Win=8427 Len=0

5@.022690 fe80: : 80ff:6a01:2f0 fe8O: :80FF:6a01:2f0 TCP 64 8391 + 59553 [ACK] Seq=1 Ack=2 Win=8416 Len=0

5@.022920 fe80: :80FF:6a01:2f0 fe80: :80fF:6a01:2f0 TCP 64 8391 + 59553 [FIN, ACK] Seq=1 Ack=2 Win=8416 Len=@

p@.822979 fe80: : 80FF:6a01:2f0 fe80: :80FF:6a01:2f0 TCP 64 59553 + 8391 [ACK] Seq=2 Ack=2 Win=8427 Len=@

b0.211811 127.0.0.1 127.0.0.1 TCP 72 65432 + 59568 [PSH, ACK] Seq=1 Ack=29 Win=2161152 Len=28

b9 211862 127.0.0.1 127.0.0.1 TCP 44 59568 + 65432 [ACK] Seq=29 Ack=29 Win=327424 Len=0 71.725425 127.0.0.1 127.0.0.1 TCP 48 59568 + 65432 [PSH, ACK] Seq=29 Ack=29 Win=327424 Len=4 71.725469 127.0.0.1 127.0.0.1 TCP 44 65432 + 59568 [ACK] Seq=29 Ack=33 Win=2161152 Len=0

71.725526 127.0.0.1 127.0.0.1 TCP 44 59568 + 65432 [FIN, ACK] Seq=33 Ack=29 Win=327424 Len=0

71.725538 127.0.0.1 127.0.0.1 TCP 44 65432 + 59568 [ACK] Seq=29 Ack=34 Win=2161152 Len=0

7.727231 127.0.0.1 127.0.0.1 TCP 44 65432 + 59568 [FIN, ACK] Seq=29 Ack=34 Win=2161152 Len=0

1.2.3.2 Trao déi thong diép giữa client va server và đảm bảo tính tồn vẹn của thơng điệp khi trao đỗi

a) Các bước thực hiện

+ Từ client và server, sửa đổi sao cho: khi gửi thơng diệp sẽ kèm theo giá trị hàm băm của (thơng điệp+key) để phía bên kia kiểm tra xác minh tính tồn vẹn Hai bên cĩ thê thống nhây một giá trị key trước

Trang 7

Đề sửu đôi client và server để gửi kèm giá trị băm của (thông điệp +key) và kiểm tra tính toàn vẹn, và cho phép client thay đổi giá trị key và phát hiện được tính toàn vẹn của dữ liệu, bạn có thể sử dụng tự viện haslib để tính toán gia tri hang bam va su dung một giá trị key chung gitra client va server

+ Key la: mysecretkey

- Code client

$ Ngoan clent2pypy X #

message_with_new_key = message + key

ear a256(message_with_new_key.encode()

message_hash_new_key = h.he Ề

s.send(message_hash_new_key

result_new_key =

f result_new key =z

nt

- Code sever

Trang 8

s = socke ket

Pe 0U ai:

s.listen(1

message = data+key

h = hash1ib sha256(message encode( )

Creer

+ Server vaf client déu su dung chung 1 key để tính toán giá trị băm của (thông điệp+key) Server sẽ gửi lại giá tri bam cho client, va client sé kiém tra tính toàn vẹn của dữ liệu bằng cách so sánh giá trị băm nhận được tử server với giá trị băm của (thông điệp +key) mà nó đã tính toán trước đó

+ Nếu tính toàn vẹn khéng duoc dam bao, client sé in ra thông báo “ The rêcrved message has lot its integrity.”

© Chạy thanh công client và server theo mục tiêu ban đầu

Trang 9

i

Derry

+ Sau đó, client yêu cầu người dùng đăng nhập giá trị key mới và tính toán lại giá trị băm của thông điệp + key mới Nó gửi giá trị băm mới đến server và kiểm tra tính toàn vẹn đữ liệu của key mới

+ Nếu tính toàn vẹn được đảm bao, client dé in ra thong bao”Data integrity verified with new key”, néu khéng client sẽ in ra thong bao “The received mesagr has lost its integrity with new key” Với tính năng này, client có thể thay đôi giá trị key và kiểm tra tính toàn vẹn của dữ liệu khi key mới được thay đôi

Trang 10

message with new key “ message + key

nat nessage_with_new_key encode(

new_key = h Ps

nd(message_hash_new_key.encode()

result_new key = s.r«

nt + message

o Thay đôi giá trị key tại client và thực hiện gửi lại, nếu không đáp ứng tính

toàn vẹn cân thông bao: “The received message has lost its integrity.”

Trang 11

4

Bdé ROCesoeFaz=aaan

No Time Destination Protocol Length Info

25 14.617670 :6a01:2f0 fe8O: :80FF:6a01:2F0 TCP 64 61327 + 8391 [ACK] Seq=222 Ack=55 Win=8227 Len=0

26 14.617792 36a01:2f0 fe8O: :8OfF:6a01:2F0 TLSv1.2 4061 Application Data

27 14.017832 :6a01:2f0 fe89: :8Øff:6að1:2f0 TCP 64 8391 + 61327 [ACK] Seq=55 Ack=4219 Win=8291 Len=0

28 14.618720 :6a01:2f0 fe80: :8@ff:6a01:2f0 TLSv1.2 1612 Application Data

29 14.618755 :6a01:2f0 fe8O::8OFF:6a01:2F0 TCP 64 61327 + 8391 [ACK] Seq=4219 Ack=1603 Win=8221 Len=0

30 33.918768 127.0.0.1 127.0.0.1 TCP 56 62198 + 50@@ [SYN] Seq=@ Win=65535 Len=@ MSS=65495 WS

31 33.918846 127.0.0.1 127.0.0.1 TCP 56 5908 + 62198 [SYN, ACK] Seq=@ Ack=1 Win=65535 Len=@ I

32 33.918891 127.0.8.1 127.0.0.1 TCP 44 62198 + 5908 [ACK] Seq=1 Ack=1 Win=327424 Len=0

33 50.519340 127.0.9.1 127.0.0.1 TCP 108 62198 + 50@@ [PSH, ACK] Seq=1 Ack=1 Win=327424 Len=64

34 50.519462 127.0.6.1 127.0.0.1 TCP 44 59008 + 62198 [ACK] Seq=1 Ack=65 Win=2161152 Len=0

35 5.519762 127.0.0.1 127.0.0.1 TCP 108 5008 + 62198 [PSH, ACK] Seq=1 Ack=65 Win=2161152 Len=

36 59.519793 127.0.0.1 127.0.0.1 TCP 44 62198 + 5000 [ACK] Seqg=65 Ack=65 Win=327168 Len=0

37 68.358061 127.0.6.1 127.0.0.1 TCP 198 62198 + 5909 [PSH, ACK] Seq=65 Ack=65 Nin=2161152 Len

38 68.358111 127.0.6.1 127.0.0.1 TCP 44 5900 + 62198 [ACK] Seq=65 Ack=129 Win=2161152 Len=0

39 68.358413 127.0.0.1 127.0.0.1 ICP 198 5008 + 62198 [PSH, ACK] Seq=65 Ack=129 Win=2161152 Le

40 68.358439 127.0.9.1 127.0.0.1 TCP 44 62198 + 5000 [ACK] Seq=129 Ack=129 Win=2161152 Len=0

41 74.626618 8OFF:6a01:2F0 Fe8O: :8OFF:6a01:2F0 TLSv1.2 285 Application Data

42 74.826674 @: :89ff :6a81:2f0 fe8@: :88ff:6a81:2f9 TCP 64 8391 + 61327 [ACK] Seq=1603 Ack=4440 Win=829@ Len=0

43 74.027493 fe80: :80ff:6a01:2f0 fe80: :8@ff:6a81:2f09 TLSv1.2 118 Application Data

Ngày đăng: 23/02/2025, 21:27