chia sẻ danh sách đen trong lĩnh vực cho vay trực tuyến

68 0 0
Tài liệu đã được kiểm tra trùng lặp
chia sẻ danh sách đen trong lĩnh vực cho vay trực tuyến

Đ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

- Tính toán những thông số đầu vào cho Bloom Filter dựa trên dữ liệu đầu vào, như chiều dài mảng dữ liệu, số hàm băm để đảm bảo hiệu suất hệ thống - Xây dựng cơ chế và và đề xuất kiến tr

Trang 1

ĐẠI HỌC QUỐC GIA TP.HCM

TRƯỜNG ĐẠI HỌC BÁCH KHOA _

Nguyễn Xuân Vĩnh Hưng

CHIA SẺ DANH SÁCH ĐEN TRONG LĨNH VỰC CHO VAY TRỰC TUYẾN

Chuyên ngành: KHOA HỌC MÁY TÍNH Mã số: 8480101

LUẬN VĂN THẠC SĨ

TP HỒ CHÍ MINH, 01/2024

Trang 2

CÔNG TRÌNH ĐƯỢC HOÀN THÀNH TẠI TRƯỜNG ĐẠI HỌC BÁCH KHOA – ĐHQG-HCM

Cán bộ hướng dẫn khoa học: PGS.TS Thoại Nam

Cán bộ chấm nhận xét 1: TS Hà Việt Uyên Synh Cán bộ chấm nhận xét 2: TS Lê Trọng Nhân

Luận văn thạc sĩ được bảo vệ tại Trường Đại học Bách Khoa, ĐHQG Tp HCM ngày 23 tháng 01 năm 2024

Thành phần Hội đồng đánh giá luận văn thạc sĩ gồm: (Ghi rõ họ, tên, học hàm, học vị của Hội đồng chấm bảo vệ luận văn thạc sĩ)

1 Chủ tịch: TS Nguyễn Lê Duy Lai 2 Thư ký: TS Nguyễn Quang Hùng 3 Phản biện 1: TS Hà Việt Uyên Synh 4 Phản biện 2: TS Lê Trọng Nhân 5 Uỷ viên: TS Hà Minh Tân

Xác nhận của Chủ tịch Hội đồng đánh giá LV và Trưởng Khoa quản lý chuyên ngành sau khi luận văn đã được sửa chữa (nếu có)

CHỦ TỊCH HỘI ĐỒNG TRƯỞNG KHOA KHOA HỌC

VÀ KỸ THUẬT MÁY TÍNH

Trang 3

TRƯỜNG ĐẠI HỌC BÁCH KHOA _

Độc lập – Tự do – Hạnh phúc NHIỆM VỤ LUẬN VĂN THẠC SĨ

Họ tên học viên: NGUYỄN XUÂN VĨNH HƯNG MSHV: 1970589 Ngày, tháng, năm sinh: 07/12/1990 Nơi sinh: Lâm Đồng Chuyên ngành: Khoa học Máy tính Mã số: 8480101

I TÊN ĐỀ TÀI: CHIA SẺ DANH SÁCH ĐEN TRONG LĨNH VỰC CHO VAY TRỰC TUYẾN

(THE BLACKLIST SHARING IN THE ONLINE LENDING FIELD) II NHIỆM VỤ VÀ NỘI DUNG:

- Tìm hiểu nghiên cứu cấu trúc dữ liệu Bloom Filter và biến thể cải tiến của nó là Mergeable Counting Bloom Filter để đáp ứng được nhu cầu bài toán

- Tính toán những thông số đầu vào cho Bloom Filter dựa trên dữ liệu đầu vào, như chiều dài mảng dữ liệu, số hàm băm để đảm bảo hiệu suất hệ thống

- Xây dựng cơ chế và và đề xuất kiến trúc hệ thống để chia sẻ dữ liệu một cách hiệu quả

III NGÀY GIAO NHIỆM VỤ: 04/09/2023

IV NGÀY HOÀN THÀNH NHIỆM VỤ: 18/12/2023 V CÁN BỘ HƯỚNG DẪN: PGS.TS Thoại Nam

Trang 4

i

LỜI CÁM ƠN

Sau một quá trình thực hiện nghiên cứu, em cũng đã hoàn thành nội dung luận văn Luận văn được hoàn thành không chỉ là kết quả cố gắng không ngừng nghỉ của bản thân mà còn có sự giúp đỡ, hỗ trợ tích cực của nhiều cá nhân và tập thể

Lời đầu tiên, em xin trân trọng tỏ lòng biết ơn chân thành và sâu sắc đến PGS.TS Thoại Nam, thầy là người hướng dẫn trực tiếp trong quá trình thực hiện luận văn và đề cương Nhờ những chia sẻ và đóng góp ý kiến của thầy giúp em hoàn thiện những nội dung Luận văn

Em cũng xin chân thành cảm ơn đến toàn thể thầy cô khoa Khoa Học Máy Tính nói riêng và Đại Học Bách Khoa TP Hồ Chí Minh nói chung, đã truyền dạy kiến thức, kinh nghiệm học thuật, nhiệt huyết trong quá trình em theo học khóa cao học

Cuối cùng, em xin gửi lời cảm ơn chân thành đến gia đình, bạn bè, các anh, chị cùng lớp cao học đã luôn động viên, quan tâm giúp đỡ em trong quá trình học tập và thực hiện luận văn Những lời động viên của toàn thể mọi người là niềm động lực giúp em vượt qua khoảng thời gian khó khăn nhất trong quá trình học tập và thực hiện luận văn

Trang 5

ii

TÓM TẮT LUẬN VĂN

Chia sẻ dữ liệu trong danh sách đen trong lĩnh vực cho vay trực tuyến là bài toán bài toán xây dựng hệ thống, cơ chế chia sẻ dữ liệu danh sách đen giữa một nhóm các công ty tài chính đối tác của nhau nhưng vẫn phải đảm bảo thông tin khách hàng không được lộ dù là cho chính đối tác được chia sẻ Việc chia sẻ giữa hai công ty đối tác với nhau thường được thực hiện thông qua việc đọc giao diện lập trình REST (Representational State Transfer Application Programming Interface), giao thức chia sẻ tập FTP (File Transfer Protocol), chia sẻ tập dữ liệu (exel, csv) qua mail, hoặc cấp quyền truy cập vào cơ sở dữ liệu (database) Vì mỗi công ty có một cách làm khác nhau, không nhất quán Khi mỗi công ty tài chính khi tham gia vào hệ thống chia sẻ, phải tốn thời gian, chi phí để tích hợp với hệ thống hiện tại của mình Hơn nữa việc chia sẻ thông tin danh sách đen không được mã hoá (encoded) cũng là lỗ hổng lớn về bảo mật Nếu tin tặc tấn công thành công vào hệ thống của doanh nghiệp, chúng có thể đọc được dữ liệu danh sách đen một cách dễ dàng

Hiện tại các công ty tài chính không có một hệ thống chung để chia sẻ dữ liệu tối ưu Học viên đã dựa trên cấu trúc dữ liệu Bloom Filter để phát triển hệ thống để có thể khắc phục các yếu điểm của mô hình chia sẻ hiện nay Hệ thống sẽ được sử dụng Vector Clock để lưu giữ và tra cứu thông tin của sự đóng góp của những thành viên tham gia vào hệ thống Ngoài ra, Spring framework là nền tảng học viên đã được học viên được sử dụng để xây dựng hệ thống chia sẻ này.

Trang 6

iii

ABSTRACT OF DISSERTATION

Sharing data in the blacklist in the online lending field is a problem of building a system, a mechanism for sharing blacklist data among a group of financial companies that are partners of each other but still have to ensure customer information is not exposed even for the partners being shared Sharing between two partner companies is usually done through reading the REST (Representational State Transfer Application Programming Interface), FTP (File Transfer Protocol) sharing protocol, sharing data files (exel, csv) via mail, or granting access to the database… Because each company has a different way of doing things, it is not consistent When each financial company participates in the sharing system, it takes time and cost to integrate with its current system Moreover, the sharing of blacklist information that is not encoded is also a big security hole If hackers successfully attack the enterprise’s system, they can easily read the blacklist data

Currently, financial companies do not have a common high-performance data sharing system The learner has relied on Bloom Filter data structure to develop a system to overcome the shortcomings of the current sharing model The system will use Vector Clock to store and query contribution information of each member in the blacklist sharing system In addition, the Spring framework is the platform that the learner has used to build the system

Trang 7

iv

LỜI CAM ĐOAN

Tôi tên Nguyễn Xuân Vĩnh Hưng, học viên cao học khoa Khoa Học Máy Tính, Đại học Bách Khoa TP HCM, mã học viên 195089 Tôi xin cam đoan luận văn tốt nghiệp: “CHIA SẺ DANH SÁCH ĐEN TRONG LĨNH VỰC CHO VAY TRỰC TUYẾN” là công trình nghiên cứu của bản thân Những phần sử dụng tài liệu tham khảo trong luận văn đã được nêu rõ trong phần tài liệu tham khảo Các số liệu, kết quả trình bày trong luận văn là hoàn toàn trung thực, nếu sai tôi xin chịu hoàn toàn trách nhiệm và chịu mọi kỷ luật của bộ môn và nhà trường đề ra

Nguyễn Xuân Vĩnh Hưng

Trang 8

v

Mục Lục

GIỚI THIỆU ĐỀ TÀI 1

1.1 Giới thiệu đề tài 1

1.2 Mô tả bài toán 5

1.3 Mục tiêu và nhiệm vụ của luận văn 5

1.4 Giới hạn đề tài 7

1.5 Đóng góp của luận văn 7

1.6 Tóm tắt nội dung 7

CƠ SỞ KIẾN THỨC 9

2.1 Cấu trúc dữ liệu Bloom Filter 9

2.2 Dương Tính Giả (False Positive) và Số Hàm Băm Tối Ưu K (Optimal K) 10

2.3 Counting Bloom Filter 12

2.4 Dương Tính Giả (False Positive), Số Hàm Băm Tối Ưu (Optimal K), Kích Thước Của Bộ Đếm (Counter Size) và Độ Đếm Tràn (Counter Overflow) của Counting Bloom Filter 13

2.5 Mergeable Counting Bloom Filter 16

3.2 Lamport Clock và Vector Clock 32

PHƯƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ 33

Trang 9

4.4 Khả năng chịu lỗi 46

4.4.1 Bloom Filter Client không gửi danh sách đen đúng thời gian 46

4.4.2 Bloom Filter Server bị sập 46

4.4.3 Bloom Filter Client bị sập 47

4.4.4 Trường hợp dữ liệu danh sách đen lớn 47

Trang 10

vii

Danh sách hình vẽ

Hình 1.1: Các ứng dụng cho vay trực tuyến trên ví điện tử MoMo 2

Hình 1.2: Các ứng dụng cho vay trực tuyến trên ứng dụng My MobiFone 4

Hình 2.1: Mã hoá các phần tử a, b,c vào Bloom Filter với số hàm băm bằng 3 10

Hình 2.2: Mã hoá các phần tử a, b,c vào Counting Bloom Filter với số hàm băm bằng 3 12

Hình 2.3: Lamport clock cho hệ thống có ba tiến trình 25

Hình 2.4 : Vector clock có ba tiến trình 28

Trang 11

viii

Danh sách bảng

Bảng 2.1 Bảng giá trị của FNV_prime và offset_basic 23

Bảng 4.1 Bảng ước tính dung lượng khi số bit được sử dụng 34

Bảng 4.2 Các api được hỗ trợ bởi BCS 43

Bảng 4.3 Cấu hình máy tính để khảo sát 48

Bảng 4.4: Dung lượng danh sách đen 49

Bảng 4.5: Thời gian truy vấn danh sách đen 49

Trang 13

2

Hình 1.1: Các ứng dụng cho vay trực tuyến trên ví điện tử MoMo

Để duyệt đơn vay của khách hàng, thẩm định tín dụng cá nhân là nghiệp vụ quan trọng của bất kỳ ngân hàng, công ty tài chính cho vay nào nhằm đảm bảo khách hàng tốt, có khả năng trả nợ và không làm tăng dư nợ xấu cho tổ chức Để thẩm định khách hàng, các ngân hàng và tổ chức tín dụng được cấp phép của ngân hàng nhà nước sẽ truy cập vào dữ liệu của TRUNG TÂM THÔNG TIN TÍN DỤNG QUỐC GIA VIỆT NAM (CIC) để xem điểm đánh giá điểm tín dụng, số dư nợ của khách hàng đang muốn vay Tuy nhiên, một số công ty tín dụng trong lĩnh vực cho

Trang 14

3

vay trên mạng không hoạt động theo giấy phép của Ngân hàng Nhà nước nên chưa thể truy xuất trực tiếp vào cơ sở dữ liệu của CIC Điều này gây ảnh hưởng lớn tới vận hành của doanh nghiệp, tăng thời gian phê duyệt và giải ngân cho khách hàng Và việc thiếu thông tin hơn dẫn đến có thể dẫn tới những quyết định như giải ngân cho khách hàng xấu, ảnh hưởng tới hoạt động của doanh nghiệp Hơn nữa, hiện nay dù suy thoái kinh tế, nhu cầu vay của người dân vẫn rất cao Tuy nhiên, các công ty tài chính tiêu dùng lại phải thu hẹp danh mục cho vay tiêu dùng do sự nở rộ của các hội/nhóm rủ nhau “bùng nợ” dẫn đến nợ xấu tăng cao Do đó danh sách đen đóng một vai trò trong việc thẩm định

Với nhu cầu có thực của các thách thức nêu trên cùng với sự đam mê dành cho việc nghiên cứu các vấn đề thuộc mảng xử lý phân tán và dữ liệu lớn, tác giả quyết định thực hiện công trình nghiên cứu "Chia sẻ danh sách đen trong lĩnh vực cho vay trực tuyến" Cụ thể hơn, hệ thống này sẽ giải quyết các bài toán về chia sẻ dữ liệu danh sách đen và bảo mật thông tin giữa các công ty tài chính trong lĩnh vực vay trực tuyến tại Việt Nam tuy nhiên vẫn không lộ thông tin khách hàng với chính những công ty đối tác chia sẻ Về mặt ứng dụng, theo tìm hiểu của của tác giả thì chưa có cơ chế chia sẻ với mục tiêu tương tự được phát triển và công bố nên hứa hẹn đây sẽ là thành phần mới góp mặt thực tiễn vào hoạt động của các công ty tài chính công nghệ

Trang 15

4

Hình 1.2: Các ứng dụng cho vay trực tuyến trên ứng dụng My MobiFone

Danh sách đen là danh sách những khách hàng, không trả nợ đúng hẹn hoặc do có điểm đánh giá thấp bởi hệ thống ra quyết định (Decision making system) Khách hàng sẽ được thêm vào bởi bằng số điện thoại, số chứng minh nhân dân (CMND), số căn cước công dân (CCCD), hoặc số tài khoản ngân hàng Tuỳ vào độ rủi ro mà khách hàng sẽ nằm trong danh sách đen một thời hạn ngắn hay dài xác định trước Do đó danh sách đen sẽ biến động theo thời gian Xây dựng một hệ thống chia sẻ danh sách đen nội bộ của mỗi công ty nhằm hạn chế bớt những khách hàng không tốt, tránh gây thất thoát tài sản của các công ty và giảm tải công việc cho các nhân viên vận hành cũng là mục tiêu của luận văn này.

Trang 16

5

1.2 Mô tả bài toán

Bài toán “Chia sẻ danh sách đen trong lĩnh vực cho vay trực tuyến” là bài toán xây dựng cơ chế chia sẻ dữ liệu và kiến trúc giữa những công ty tài chính công nghệ là đối tác của nhau mà không làm lộ thông tin của khách hàng dù là cho chính đối tác đó bằng cách sử dụng ý tưởng của cấu trúc dữ liệu Bloom Filter Trong đó, hệ thống ở mỗi tổ chức trong mạng lưới chia sẻ gửi dữ liệu danh sách các khách hàng đã được mã hoá theo cùng với nhãn thời gian (timestamp) tới một đối tác khác Hệ thống phải đảm bảo dữ liệu được gửi đi một cách an toàn và nhanh chóng, đề phòng trường hợp một đối tượng hay tổ chức tội phạm khác khi có được dữ liệu trên cũng không thể sử dụng được Việc kiểm tra xem số điện thoại người vay có nằm trong danh sách đen phải đảm bảo một hiệu suất tốt và đáng tin cậy Sự tin cậy ở đây là trả lời được câu hỏi khách hàng với số điện thoại xác định có nằm trong danh sách đen với 1 tỷ lệ sai sót mức chấp nhận được Những thách thức cần mà bài toán cần giải quyết:

- Định dạng của từng phần tử trong danh sách đen khi chia sẻ: Mỗi công ty tài chính sẽ số điện thoại theo một định dạng khác nhau

- Xây dựng vector dữ liệu danh sách đen: dựa trên cấu trúc dữ liệu BloomFilter Khi thêm dữ liệu vào BloomFilter, yêu cầu là cần xây dựng những hàm băm với chi phí nhỏ nhất và với hiệu suất cao nhất để giảm tỷ lệ dương tính giả (false positive) vì lượng dữ liệu trong danh sách đen khá là lớn Một thách thức khác là Bloom Filter chỉ hỗ trợ việc thêm một phần tử vào, không hỗ trợ xóa phần tử đã thêm

- Bài toán chia sẻ dữ liệu danh sách đen giữa các tổ chức tín dụng

1.3 Mục tiêu và nhiệm vụ của luận văn

Mục tiêu của luận văn hướng đến việc nghiên cứu và xây dựng kiến trúc hệ thống cho việc chia sẻ dữ liệu danh sách đen sử dụng các nền toán cấu trúc dữ liệu Bloom Filter Cụ thể là:

Trang 17

- Đề xuất kiến trúc của hệ thống

- Cuối cùng, học viên sẽ hiểu rõ hơn những vấn đề, thách thức khi áp dụng trong môi trường phân tán để giải quyết một bài toán thực tế bài toán thực tế Đánh giá tính khả thi của các phương pháp trong thực tiễn, đồng thời sẽ có góc nhìn chính xác hơn về tính toán hiệu suất cao trong môi trường phân tán nói chung

Từ mô tả bài toán, tác giả sẽ lần lượt giải quyết các vấn đề sau để đưa ra một giải pháp thiết kế và hiện thực một kiến trúc hệ thống giải quyết được bài toán của đề tài:

- Tìm hiểu nghiên cứu cấu trúc dữ liệu Bloom Filter và các biến thể cải tiến của nó là Counting Bloom Filter và Mergeable Counting Bloom

- Tính toán những thông số đầu vào cho Bloom Filter dựa trên dữ liệu đầu vào như độ dài mảng mảng số nguyên, số hàm băm tối ưu, tỷ lệ dương tính giả

- Thiết kế khảo sát, quyết định số lượng hàm băm cho Bloom Filter để đảm bảo hiệu suất việc truy xuất hiệu quả

- Nghiên cứu Lamport clock và Vector clock

- Xây dựng cơ chế để chia sẻ giữa giữa hai công ty tài chính đối tác

- Hiện thực và đánh giá tính đúng đắn hệ thống

- Kết luận các vấn đề đã giải quyết, nêu ra các vấn đề còn tồn đọng, đồng thời đưa ra các dự định cải tiến trong tương lai

Trang 18

1.5 Đóng góp của luận văn

Trong luận văn, tác giả giải quyết bài toán thực tiễn và bức thiết trong lĩnh vực tài chính tiêu dùng Đóng góp của luận văn bao gồm:

- Kiến trúc và cơ chế chia sẻ dữ liệu

- Ứng dụng hiệu quả các công trình nghiên cứu

- Áp dụng công nghệ mới nhất đang được sử dụng rộng rãi, để hiện thực hệ thống

1.6 Tóm tắt nội dung

Nội dung của luận văn gồm 5 chương:

Chương 1 GIỚI THIỆU ĐỀ TÀI: giới thiệu về hiện trạng của ngành tài

chính, cụ thể là cho vay tiêu dùng, cho vay trực tuyến và nhu cầu thực tế trong việc chia sẻ dữ liệu danh sách đen mô tả bài toán chia sẻ danh sách đen trong lĩnh vực cho vay trực tuyến

Chương 2 CƠ SỞ KIẾN THỨC: là các cơ sở lý thuyết mà học viên sử

dụng trong luận văn này, bao gồm các lý thuyết cơ bản về Bloom Filter, các thuộc tính của Bloom Filter và biến thể cải tiến khác của Bloom Filter là Counting Bloom Filter hay Mergeable Counting Bloom Filter, các hàm băm được sử dụng trong Bloom Filter, lý thuyết về Lamport Clock và Vector Clock

Trang 19

8

Chương 3 CÁC CÔNG TRÌNH NGHIÊN CỨU LIÊN QUAN: nói về các

công trình nghiên cứu liên quan tới Bloom Filter Từ đó các cải tiến của cấu trúc dữ liệu mới lần lượt ra đời, và đó cũng là cơ sở quan trọng cho ứng dụng của tác giả trong luận văn

Chương 4 PHƯƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ: Chương 4 nói cụ

thể về các mô hình đề xuất của học viên cho bài toán chia sẻ danh sách đen

Chương 5 KẾT LUẬN: Tổng kết các đóng góp của luận văn, các vấn đề

còn tồn tại của bài toán chia sẻ danh sách đen đồng thời nói về khả năng phát triển trong tương lai.

Trang 21

10

Hình 2.1: Mã hoá các phần tử a, b,c vào Bloom Filter với số hàm băm bằng 3

2.2 Dương Tính Giả (False Positive) và Số Hàm Băm Tối Ưu K (Optimal K)

Cho m là chiều dài của mảng bit n là tổng số phần tử trong tập hợp và k là tổng số hàm băm Vậy Xác suất của 1 bit vẫn bằng 0 sau khi đã thêm vào n phần tử là:

Vậy xác suất bit đó là 1 là:

Trang 22

11

Vậy một đối tượng bất kỳ, và chưa được mã hóa trong Bloom Filter , thì xác suất mà tất cả bit ở chỉ mục trả của hàm băm H của đối tượng trả về được bật là:

(2.3) Trong đó là hằng số tự nhiên Euler

Rõ ràng, tỷ lệ dương tính giả sẽ giảm khi độ dài của mảng m tăng, và giảm khi

số lượng phần tử n được thêm vào Bloom Filter tăng Để tìm ra số hàm băm tối ưu, ta có thể lấy đạo hàm công thức 2.3 theo k, cho vế bên trái bằng 0 và giải phương trình

(2.4)

(2.5) Khi số hàm k* được sử dụng, ta thay vào hàm tính dương tính giả công thức2.3 sẽ là fB*:

Trang 23

12

- là tỷ lệ dương tính giả khi số hàm băm tối ưu được sử dụng

2.3 Counting Bloom Filter

Việc loại bỏ một phần tử trong Bloom Filter là không thể Bởi vì mỗi bit bằng 1 sẽ được sử dụng chung bởi các phần tử khác nhau Ta không thể đơn giản gán bit thành 0 được vì nó dẫn tới việc lược bỏ một phần tử khác Counting Bloom Filter

dùng một mảng của bộ đếm (counter) C với chiều dài l Mỗi bộ đếm trong mảng đều

được khởi tạo là 0 Cũng giống như Bloom Filter truyền thống, chúng ta mã hoá một phần tử e bằng k hàm băm Mỗi hàm băm sẽ trả về giá trị từ 0 tới l - 1 là chỉ mục của trong mảng bộ đếm C Chúng ta sẽ tăng giá trị của bộ đếm tại vị trí của số đếm lên 1

Hình 2.2: Mã hoá các phần tử a, b,c vào Counting Bloom Filter với số hàm băm bằng 3

Khi muốn xoá một phần tử e khỏi tập hợp, chúng ta cũng băm phần tử đó và có tập giá trị các chỉ mục ta sẽ giảm giá trị tại các vị trí

số đếm xuống 1

Khi kiểm tra một phần tử bất kỳ e’ có nằm trong Counting Bloom Filter không, ta cũng băm đối tượng thành bằng k hàm băm Sau đó

Trang 24

13

kiểm tra giá trị tại các vị trí do hàm băm trả về trong mảng C có khác 0 hay không? Nếu tất cả đều khác 0,

thì có thể kết luận đối tượng đó nằm trong tập hợp

2.4 Dương Tính Giả (False Positive), Số Hàm Băm Tối Ưu (Optimal K), Kích Thước Của Bộ Đếm (Counter Size) và Độ Đếm Tràn (Counter Overflow) của Counting Bloom Filter

Cho là chiều dài của mảng bộ đếm, là tổng số phần tử đã được mã hả trong Counting Bloom Filter tập hợp và là số hàm băm Cùng phương pháp phân tích như phần 2.2, ta có xác xuất 1 phần tử trong mảng số là 0 sau khi đã thêm n phần tử là:

Trang 25

- là số lượng hàm băm tối ưu

- là chiều dài của mảng bộ đếm

- là tổng số phần tử đã được mã hóa trong Bloom Filter - là hằng số tự nhiên Euler

- là tỷ lệ dương tính giả

- là tỷ lệ dương tính giả khi số hàm băm tối ưu được sử dụng

Như vậy, Counting Bloom Filter có cùng tỷ lệ dương tính giả với Bloom Filter truyền thống

Bộ Đếm trong Counting Bloom Filter là được chỉ định trước và có giới hạn Tất

cả đều có cùng độ dài cố định Giả sử, mỗi bộ đếm có t bit Giá trị của bộ đếm là từ

khoảng tới Nếu giá trị bộ đếm đang là và ta mã hoá một phần tử

mới, bộ đếm sẽ tăng lên 1, tràn bộ đếm (counter overflow) sẽ xảy ra Nếu giá trị càng nhỏ, thì việc tràn bộ đếm sẽ xảy ra thường xuyên hơn Tuy nhiên nếu giá trị

lớn sẽ tốn bộ nhớ Cho là một biến ngẫu nhiên là giá trị của bộ đếm sau n lần thêm phần tử vào BloomFilter, sẽ tuân theo phân phối xác suất Binomial:

Trang 26

15 Ở đây, được xác định bởi công thức:

Trang 27

16

Ý nghĩa các ký hiệu trong phần 2.4 :

- là xác suất để điều kiện đó xảy ra

- là chiều dài của mảng bộ đếm

- là giai thừa của biến x - là hằng số tự nhiên Euler - là logarit cơ số tự nhiên e

- là tổng số phần tử có trong Bloom Filter

- là phép tổng

Trong thực tế, nếu tràn bộ đệm xảy ra, ta vẫn có thể giữ giá trị của bộ đếm Nhưng qua quá nhiều phân tử, có thể dẫn tới tình huống tỷ lệ dương tính giả cao

2.5 Mergeable Counting Bloom Filter

Nếu chúng ta sử dụng Bloom Filter, thì việt kết hợp hai hay nhiều vector khá đơn giản, chỉ cần OR bit tương đương trong vector Tuy nhiên, Counting Bloom Filter (CBF) không hỗ trợ việc kết hợp hai vectors dữ liệu do CBF không lưu thông tin về hai phần hay nhiều phần tử trùng nhau Nếu chúng ta có 2 CBF là CBF1và CBF2 Khi hợp CBF1 và CBF2, ta sẽ cộng từng phần tử i của mảng bộ đếm CBF1 và CBF2 Nếu có quá nhiều phần tử trùng trong cả hai CBF trên thì có thể dẫn bộ đếm tràn

Để giải quyết vấn đề này, Wengjin Liu và nhóm tác giả đã đưa ra giải pháp Mergeable Counting Bloom Filter (mergeCBF), dựa trên sử dụng thuật toán xếp

lịch Cuckoo Ý tưởng của mergeCBF là tách các mảng bộ đếm (counter array) thành

một nhóm các mảng bit và sắp xếp các mảng theo một thứ tự cố định để ghi nhận những phần tử đã được thêm vào

Trang 28

17 Cấu trúc của mergeCBF:

- hàm băm, số lượng hàm băm tối ưu theo công thức 2.11

- Một nhóm gồm mảng bit , trong đó là giá trị lớn

2.5.1 Thêm một phần tử

Để thêm một phần tử vào mergeCBF, ta không chỉ băm phần tử đó bằng k hàm băm mà còn phải sắp xếp các và chọn mảng bit nào để chứa các giá trị trả về của hàm băm Để đảm bảo việc xếp các bit vào mảng bit một cách ít đụng độ và hiệu quả, nhóm tác giả dùng giới thiệu một thuật toán lấy ý tưởng từ thuật toán Cuckoo Hash tên là thuật toán sắp xếp virtual-Cuckoo Ý tưởng của thuật toán Cuckoo hash là tìm ra vị trí của phần tử trong mảng, nếu vị trí ô trong mảng đã có một phần tử chiếm dụng, chúng ta sẽ đẩy phần tử đã có ra khỏi ô đó, chèn phần tử mới vào ô hiện tại, tìm một vị trí mới cho phần tử cũ Quá trình này tiếp diễn cho tới khi không còn đụng độ nửa Cuckoo Hash đảm bảo việc sử dụng bộ nhớ một cách hiệu quả vì nó khuyến khích nhiều ô trong mảng được sử dụng hơn

Trong mergeCBF, chúng ta ghi nhận một phần tử với “1” k bit trong k ô Với virtual-Cuckoo, nếu chỉ mục của hàm băm trả về đã là là trong mảng bit đã được bật là “1”, chúng ta không cần đẩy giá trị bit “1” ra khỏi ô đó và chèn bit “1” vào ô khác Chúng ta sẽ bỏ qua ô đã bị chiếm dụng và tìm một khác cho phần tử mới Kết quả thuật toán vẫn tuân thủ theo quý ước của Cuckoo Hash Thuật toán virtual-Cuckoo được mô tả dưới đây

Input:

Trang 29

Thuật toán virtual-Cuckoo

Thuật toán thêm một phần tử vào mergeCBF được mô tả như sau:

- Băm một phần tử với k hàm băm Giá trị trả về tương ứng là kết trả về của hàm băm cũng là chỉ mục trong mảng bit

- Với mỗi , ta dùng thuật toán sắp xếp virtual-Cuckoo để tìm mảng bit mà giá trị tại , ta bật

- Lặp lại quá trình trên k lần cho k hàm băm tới khi tất cả bit trả về từ hàm băm được bật

2.5.2 Truy vấn một phần tử

Để truy vấn một phần tử, ta chỉ cần băm phần tử đó bằng k hàm băm và kiểm tra các ô ở chỉ mục của hàm băm trả về ở mảng orBarr Nếu tất cả các chỉ mục đều được bật, thì phần tử có thể nằm trong mergeCBF Còn ngược lại, nếu một trong các ô chưa được bật, thì phần tử đó chắc chắn không nằm trong mergeCBF

Trang 30

19

2.5.3 Xóa phần tử

Để xóa một phần tử, cơ chế cũng giống như là thêm phần tử Chúng ta sử dụng thuật toán virtual-Cuckoo để tìm ra ô cuối cùng và tắt bit đó thành 0 Thuật toán mô tả như sau:

- Ước lượng tổng số lượng phần tử trong hai mergeCBF để không vượt quá sức chứa của mergeCBF Nếu vượt qua thì ta dừng lại quá trình và báo cáo lại lỗi

Trang 31

Một hàm băm tốt cho Bloom Filter cần đáp ứng một số yêu cầu quan trọng Đầu tiên, nó phải có khả năng tạo ra các chỉ mục phân phối đều nhau trên mảng bit Điều này đảm bảo rằng sự phân tán của các phần tử trong tập hợp không tạo ra sự đụng độ lớn, từ đó giảm thiểu tỷ lệ dương tính giả Thứ hai, hàm băm phải có khả năng xử lý nhanh và hiệu quả để đảm bảo thời gian truy vấn Bloom Filter được giảm thiểu Do đó cái hàm băm cho mật mã như SHA256 không phải là lựa chọn tối ưu Thứ ba các hàm băm dùng cho Bloom Filter nên độc lập với nhau để đảm bảo tỷ lệ dương tính giả thấp, bảo mật cho Bloom Filter để tránh cho kẻ tấn công có thể suy luận, tận dụng cái mối quan hệ để tìm ra các hàm băm còn lại và đảm bảo về hiệu suất khi chúng ta có thể tính toán băm đồng thời và độc lập

Có nhiều hàm băm phổ biến được sử dụng trong Bloom Filter như MurmurHash, FNV, và XXXHash Mỗi hàm băm này có đặc điểm riêng và được thiết kế để đáp ứng các yêu cầu của Bloom Filter

2.6.1 MurmurHash

MurmurHash được tạo ra bởi Austin Appleby vào năm 2008 MurmurHash là một thuật toán băm phi tuyến tính, có khả năng tạo ra giá trị băm ngẫu nhiên từ dữ liệu đầu vào Nó sử dụng một sự kết hợp của các phép dịch bit, phép XOR và phép nhân để tạo ra giá trị băm

Trang 32

21

Một trong những ưu điểm nổi bật của MurmurHash là tốc độ xử lý nhanh và khả năng phân tán dữ liệu hiệu quả Thuật toán này tận dụng cơ chế băm tương tự như việc trộn và xoá bit, tạo ra giá trị băm với độ phân tán cao và ít đụng độ

MurmurHash có thể được sử dụng cho nhiều loại dữ liệu khác nhau, bao gồm chuỗi ký tự, số nguyên, dữ liệu nhị phân và hơn nữa

MurmurHash cũng có tính chất tốt về khả năng trộn (avalanche effect), tức là

thay đổi nhỏ trong đầu vào sẽ dẫn đến thay đổi lớn trong giá trị băm đầu ra Điều này giúp tránh hiện tượng đụng độ và tăng tính ngẫu nhiên của giá trị băm Tuy nhiên, cần lưu ý rằng MurmurHash không phải là một hàm băm không dùng cho mục đích bảo mật

MurmurHash có ba phiên bản:

- MurmurHash 1 là một hàm băm 32-bit

- MurmurHash 2 là phiên bản cải tiến của MurmurHash 1, được thiết kế để khắc phục một số hạn chế và lỗ hổng Nó hoạt động trên nền tảng 32-bit hoặc 64-bit và tạo ra giá trị băm 32-bit

- MurmurHash 3 là phiên bản mới nhất của họ MurmurHash và cung cấp nhiều cải tiến Nó hỗ trợ giá trị băm 32 bit và một 128 bit và đồng thời chống lại sự tấn công hàm băm

Thuật toán MurmurHash cho giá trị băm 32 bit được trình bày dưới dạng mã giả dưới đây:

Input:

data ; data dược hash

seed; giá trị khởi tạo

Output:

; giá trị băm trả về

1: c1 ← 0xcc9e2d51; 2: c2 ← 0x1b873593; 3: r1 ← 15;

4: r2 ← 13; 5: m ← 5;

Trang 33

22

6: n ← 0xe6546b64; 7: length ← data.length;

8: for each fourByteChunk of data do

9: k ← fourByteChunk

10: k ← k × c1

11: k ← k ROL r1

12: k ← k × c2

13: hash ← hash XOR k

14: hash ← hash ROL r2

15: hash ← (hash × m) + n;

16: with any remainingBytesInKey do

17:remaining_bytes ← length mod by 4;

18: if remaining_bytes > 0 then

19: last_chunk ← last remaining_bytes of data

20: last_chunk ← last_chunk ROL (8 × remaining_bytes);

25: hash ← hash XOR length;

26: hash ← hash XOR (hash >> 16); 27: hash ← hash ×0x85ebca6b ; 28: hash ← hash XOR (hash >> 13); 29: hash ← hash × 0xc2b2ae35; 30: hash ← hash XOR (hash >> 16);

31: return hash;

2.6.2 FNV

FNV (Fowler-Noll-Vo) là một thuật toán băm đơn giản và hiệu quả được sử dụng trong nhiều ứng dụng Thuật toán này được đặt tên theo tên ba tác giả: Glenn Fowler, Landon Curt Noll và Phong Vo Hai phiên bản phổ biến của FNV là FNV-1 và FNV-1a

Thuật toán FNV-1 được mô tả dưới đây:

Input:

data ;data dược hash

FNV_prime;giá trị FNV_prime trong bảng trên offset_basic;Giá trị offset_basic trong bảng trên

Trang 34

23

Output:

hash; giá trị băm trả về

1: hash = offset_basic 2: for byte in data do

3: hash ← hash × FNV_prime

4: hash ← hash XOR byte

5: end for

6: return hash;

Thuật toán FNV-1 Thuật toán FNV-1a được mô tả dưới đây:

Input:

data ; data dược hash

FNV_prime; giá trị FNV_prime trong bảng trên offset_basic; Giá trị offset_basic trong bảng trên

Output:

hash; giá trị băm trả về

1: hash ← offset_basic 2: for byte in data do

3: hash ← hash XOR byte

4: hash ← hash × FNV_prime

5: end for

6: return hash;

Thuật toán FNV-1a

Sự khác biệt duy nhất giữa FNV-1a và FNV-1 là thứ tự của phép toán nhân và phép toán XOR Trong đó các giá trị của FNV_prime và offset_basic là các giá trị phụ thuộc vào chiều dài của giá trị băm được trả về được định nghĩa ở bảng sau:

Bảng 2.1 Bảng giá trị của FNV_prime và offset_basic

Số bit 32 64 128 256

FNV_prime 224 + 28 +

0x93 = 16777619

240 + 28 + 0xb3 = 1099511628

288 + 28 + 0x3b =

2168 + 28 + 0x63 = 37414441915

Ngày đăng: 22/05/2024, 11:07

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

Tài liệu liên quan