Tải bản đầy đủ (.pdf) (88 trang)

Nghiên cứu hệ mật mã khoá công khai trong giao dịch điện tử

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 (3.66 MB, 88 trang )



ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ





Nguyễn Thị Tuyết Minh





NGHIÊN CỨU HỆ MẬT MÃ KHOÁ CÔNG KHAI
TRONG GIAO DỊCH ĐIỆN TỬ











LUẬN VĂN THẠC SĨ















Hà Nội - 2006
Mục lục
Mở đầu …………………………………………………………………………… 3
Chương 1: Các khái niệm cơ bản 6
1.1 Các định nghĩa………………………………………………………………….6
1.2 Quy trình giao dịch điện tử ……………………………………………………8
1.3 Những kiến thức toán học nền tảng ……………………………………… 14
1.3.1 Xác suất …………………………………………………………… 14
1.3.2 Số học……………………………………………………………… 15
1.3.2 Các định lý áp dụng cho phép toán chia lấy phần dư (mod) … 16
Chương 2: Các hàm băm 24
2.1 Các ký hiệu chung ……………………………………………………………24
2.2 Các định nghĩa, khái niệm và tính chất căn bản ………………………… 24
2.2.1 Định nghĩa………………………………………………….……… 25
2.2.2 Các tính chất căn bản……………………………………….………26
2.3 Phương pháp xây dựng các hàm băm………………………………….……26
2.3.1 Hàm nén…………………………………………………………… 26
2.3.2 Bộ mở rộng miền……………………………………………………27

2.4 Các hàm băm cơ bản…………………………………………………………27
2.4.1 MD5………………………………………………….…………… 28
2.4.2 SHA-1…………………………………………… …………………30
2.5 Hàm băm có khoá…………………………………………… …………… 31
2.6 Tấn công các hàm băm……………………………………… …………… 32
2.6.1 Dạng tấn công căn bản…………………………………………… 33
2.6.1.1 Tấn công không gian khoá của MAC……………………33
2.6.1.2 Tấn công kích thước bit trên MAC……………………….34
2.6.1.3 Tấn công tính toán trước………………………………….34
2.6.1.4 Tấn công các mục tiêu song song trên OWHFs……… 34
2.6.1.5 Tấn công bản tin dài dành cho tiền ảnh thứ 2………….34
2.6.1.6 Tấn công từng bit trên MDC…………………………… 35
2.6.2 Tấn công ngày sinh nhật………………………………………… 36
Chương 3: Hệ mật mã khoá công khai 41
3.1 Hệ mật mã khoá công khai RSA…………………………………………….42
3.2 Các thuật toán phân tích thừa số…………………………………………….48
3.2.1 Một số phương pháp truyền thống…………………………… …48
3.2.2 Một số phương pháp hiện đại………………………………………52
Chương 4: Các sơ đồ chữ ký số, sơ đồ định danh… 59
4.1 Sơ đồ chữ ký số……………………………………………………………….59
4.1.1 Sơ đồ chữ ký số có phụ lục…………………………………………61
4.1.2 Sơ đồ chữ ký số khôi phục bản tin……………………………… 62
4.1.3 Sơ đồ chữ ký RSA………………………………………………… 64
4.1.3.1 Định nghĩa và giải thuật………………………………… 64
4.1.3.2 Tiêu chuẩn mật mã khoá công khai sử dụng sơ đồ chữ ký
RSA………………………………………………………………… 66
4.1.4 Sơ đồ chữ ký Elgama…………………………………………… …70
4.1.5 Chuẩn chữ ký số…………………………………………………… 72
4.1.6 Sơ đồ chữ ký Schnorr……………………………………………….73
4.2 Sơ đồ định danh……………………………………………………………….74

4.3 Ứng dụng hệ mật mã RSA cho bài toán GDĐT……………………………78
Kết luận ………………………… …………………………………………… 82
Phụ lục A: Các thuật ngữ viết tắt……………………… …………………83
Phụ lục B: Các thuật ngữ tiếng anh dịch sang tiếng việt …………….84
Tài liệu tham khảo… 87


3
MỞ ĐẦU
Chúng ta đang sống trong một xã hội CNTT với những ứng dụng của máy
tính có mặt ở mọi nơi, mọi lĩnh vực đời sống. Bên cạnh đó, quá trình hội nhập quốc
tế và toàn cầu hoá thúc đẩy việc áp dụng thương mại điện tử tại tất cả các nền kinh
tế. Thay vì phải đi xa tìm các cơ hội thương mại, các doanh nghiệp có thể sử dụng
Internet, web để giao tiếp, tìm kiếm, thảo luận và ký kết hợp đồng mua bán sản
phẩm, nói chung là thực hiện giao dịch điện tử trên mạng với chi phí rẻ hơn.
Ngày nay, những ứng dụng thương mại điện tử đã phát triển rất cao, trong
tương lai gần, chắc chắn thương mại điện tử sẽ trở thành nền tảng chung cho thương
mại toàn cầu. Vì thế, tất cả mọi quốc gia, mọi thành phần kinh tế trong xã hội tất
yếu đều sẽ sử dụng thương mại điện tử. Khi đó, yêu cầu về an toàn mạng, an ninh
dữ liệu trên mạng càng trở nên cần thiết và cấp bách để chống lại hacker luôn luôn
tìm cách tấn công, truy cập trái phép, giả mạo, gây ra những thiệt hại to lớn.
Hiện nay, có rất nhiều công cụ, phần mềm, phần cứng dùng để mã hoá, bảo
vệ dữ liệu trước và trong khi truyền đi trên mạng. Phương pháp được sử dụng phổ
biến là những loại mật mã như: mật mã khoá công khai, chữ ký số, xác thực điện
tử, Đặc biệt, trong giao dịch điện tử hiện nay, xác thực điện tử sử dụng các lược
đồ chữ ký số đã trở thành bộ phận không thể thiếu. Các loại mật mã này dựa trên
nền tảng chung là toán học, lý thuyết số học, các hàm đại số phức tạp, tạo nên
những ưu điểm nổi bật cho các hệ mã.
Việc bảo đảm an toàn cho các giao dịch điện tử đã và đang được rất nhiều
nhà khoa học quan tâm nghiên cứu, đặc biệt là những nhà mật mã học. An ninh, an

toàn cho các giao dịch điện tử thực hiện trên mạng công cộng yêu cầu hai phần cơ
bản; thứ nhất đó là bảo mật dữ liệu (bảo đảm bí mật dữ liệu trong trường hợp dữ
liệu rơi vào tay hacker trên mạng); thứ hai là xác thực dữ liệu bao gồm xác minh
người gửi dữ liệu và xác minh sự nguyên vẹn của dữ liệu trong quá trình truyền.
Những yêu cầu này làm cho các hệ thống mật mã khoá công khai, các lược đồ chữ
ký số, … được quan tâm và ứng dụng rộng rãi. Việt Nam đang từng bước hội nhập
với nền kinh tế thế giới, từng bước ứng dụng thương mại điện tử trong các thành
phần kinh tế, các giao dịch điện tử cũng ứng dụng những thống mật mã nói trên
nhưng chưa rộng rãi, vì vậy tôi xin đăng ký thực hiện đề tài “Nghiên cứu hệ mật mã
khoá công khai trong giao dịch điện tử” làm đề tài cho luận văn thạc sỹ của mình.
Mục tiêu của đề tài: Nghiên cứu cơ sở lý thuyết để hình thành, tấn công, từ
đó có các phân tích, đánh giá mật mã khoá công khai trong những giao dịch điện tử.
Xây dựng bài toán ứng dụng.
Đề tài nhằm giải quyết các công việc sau:
- Nghiên cứu cơ sở lý thuyết của việc bảo đảm an ninh dữ liệu
trong các giao dịch trên mạng; bao gồm hai vấn đề cơ bản: bảo mật dữ
liệu và xác thực dữ liệu (xác minh người gửi và xác minh tính nguyên

4
vẹn, không bị can thiệp trái phép trong khi truyền) thông qua các hệ mã
hoá như: khoá công khai, RSA, chữ ký số, mã xác thực bản tin, …
- Đề cập đến các phương pháp tiêu biểu nhằm phá vỡ hệ thống
an ninh dữ liệu tạo bởi các hệ mã nói trên;
- Nhận xét, đánh giá, phân tích các hệ thống mã khóa công khai
tìm hiểu được, từ đó xây dựng ứng dụng mô phỏng.

Phạm vi nghiên cứu: Đề tài tập trung nghiên cứu kỹ cơ sở lý thuyết của các
phương pháp đảm bảo an ninh dữ liệu trong các giao dịch điện tử, hệ mật mã khóa
công khai, chữ ký số, lược đồ chữ ký số, các công cụ toán học làm nền tảng, … Bên
cạnh đó phân tích độ an toàn, các phương pháp tấn công, thám mã, …


Bố cục của đề tài: Đề tài bao gồm 4 chương, mở đầu, kết luận và các phụ
lục.
Mở đầu;
Chương I: Các khái niệm cơ sở
Chương II: Các hàm băm
Chương III: Hệ mật mã khoá công khai
Chương IV: Sơ đồ định danh, sơ đồ chữ ký số. Ứng dụng hệ mật mã
RSA cho bài toán GDĐT
Kết luận;
Phụ lục A: Các thuật ngữ viết tắt;
Phụ lục B: Các thuật ngữ tiếng anh dịch sang tiếng việt;
Tài liệu tham khảo.

Cuối cùng, tôi xin chân thành cảm ơn TS Nguyễn Quốc Tuấn, GS-TS
Nguyễn Đình Thông, những người đã trực tiếp hướng dẫn tôi hoàn thành luận văn
này. Tôi xin gửi lời cảm ơn tới tất cả các thầy cô trong khoa Điện tử Viễn Thông,
trường Đại học Công Nghệ - Đại học Quốc Gia Hà Nội, cùng toàn thể bạn bè, đồng
nghiệp tại cơ quan, những người thân trong gia đình đã động viên, đóng góp, giúp
đỡ tôi hoàn thành luận văn này. Tuy nhiên, vì trình độ còn hạn chế cho nên luận văn
này không tránh khỏi những thiếu sót. Tôi xin chân thành cảm ơn những ý kiến
đóng góp, phê bình để có thể tiếp tục hoàn thiện sau này.

Hà Nội, tháng 12 năm 2006

5
Nguyễn Thị Tuyết Minh.







6
Chương 1
CÁC KHÁI NIỆM CƠ SỞ
1.1 Các định nghĩa
Mật mã: là sự nghiên cứu các kỹ thuật toán học phục vụ cho việc đảm bảo
những khía cạnh an toàn cho thông tin như là: độ tin cậy, tính toàn vẹn dữ liệu, xác
thực, bản quyền, tính không thể phủ nhận.
Mục đích của mật mã: Trong giao dịch điện tử, mật mã được áp dụng phải
đảm bảo được những tính chất sau cho thông tin:
1. Độ tin cậy: bảo mật được nội dung của thông tin khỏi tất cả những đối
tượng khác ngoại trừ đối tượng được xác nhận là có chủ quyền của thông
tin đó.
2. Tính nguyên vẹn dữ liệu: kiểm soát được những sự thay đổi không phải
do đối tượng có bản quyền sở hữu thông tin tạo ra.
3. Xác thực: nhận dạng chủ sở hữu của tài liệu, thông tin hiện đang sử dụng.
Thông tin được truyền trên một kênh cần được xác thực rằng đó là bản
gốc (không bị làm giả, sao chép), thời gian gửi, nội dung, Khái niệm
xác thực thường được chia ra làm hai dạng: xác thực chủ sở hữu thông tin
và xác thực tính nguyên gốc của bản tin.
4. Không thể phủ nhận: chủ sở hữu thông tin đã được mã hoá không thể phủ
nhận rằng chính mình đã tạo ra thông tin đó.
Mật mã khoá bí mật còn được gọi là mật mã đối xứng sử dụng cùng một
khoá để mã hoá và giải mã bản tin. Do đó, người gửi và người nhận đều phải biết
thông tin về khoá được sử dụng. Giải thuật tiêu biểu mà loại mật mã này dùng chính
là chuẩn mã hoá dữ liệu DES (Data Encryption Standard), chuẩn mã hoá này được
các tổ chức tài chính sử dụng để mã hoá số nhận dạng cá nhân – PIN của khách
hàng [1],[3].

Mật mã khoá công khai còn được gọi là mật mã bất đối xứng, sử dụng một
khoá để mã hoá và một để giải mã bản tin. Cặp khoá này được liên kết với nhau
bằng một hàm toán học sao cho bản tin được mã hoá bằng khoá này chỉ có thể giải
mã được bằng khoá còn lại cùng cặp với nó. Như vậy mỗi người dùng sẽ sử dụng
hai khoá, một được gọi là khoá công khai, và cái còn lại gọi là khoá cá nhân. Khoá



7
công khai theo nghĩa của nó được người dùng quảng bá. Vì ràng buộc toán học giữa
hai khoá, cho nên người dùng yên tâm rằng dữ liệu được mã hoá bằng khoá công
khai chỉ có thể được giải mã bằng khoá cá nhân của họ. Vấn đề họ phải đảm bảo
rằng khoá cá nhân của họ không bị lộ ra cho người khác biết. Để đảm bảo điều này,
cặp khoá của người dùng tốt nhất là do chính họ tạo ra. Giải thuật tiêu biểu của kiểu
mật mã này chính là giải thuật RSA (chữ đầu của tên của 3 nhà phát minh ra giải
thuật: Rivest, Shamir, và Adleman) [3].
Vỏ bọc số - Digital envelope
Trong phương thức giao dịch điện tử an toàn, dữ liệu trong bản tin gửi đi sẽ
được mã hoá bằng một khoá mã đỗi xứng được tạo ra một cách ngẫu nhiên. Khoá
mã đối xứng được tạo ra một cách ngẫu nhiên này sau đó sẽ được mã hoá bằng khoá
công khai của người nhận bản tin. Hai quá trình này hình thành khái niệm “vỏ bọc
số” cho bản tin. Phía nhận bản tin sẽ dùng khoá cá nhân của mình để giải mã thu
được khoá đối xứng được tạo một cách ngẫu nhiên nói trên và dùng nó để khôi phục
lại bản tin ban đầu [13].
Chữ ký số - Digital signature
Chữ ký số bảo đảm tính chất xác thực, bản quyền, và không thể phủ nhận của
các thông điệp trong các GDĐT. Thao tác ký ở đây chính là việc biến đổi bản tin và
một số thông tin bí mật thành một định dạng thông tin (thẻ) được gọi là chữ ký [13].
Các tóm lược bản tin - message digest
Một bản tóm lược bản tin là giá trị được tạo ra từ một bản tin đó mà có tính

duy nhất đối với bản tin đó. Để tạo ra một bản tóm lược bản tin, người ta cho bản
tin cần truyền (được tính toán thành một giá trị nhị phân) đi qua một hàm mật mã
một chiều, tức là rất khó tạo lại bản tin gốc từ bản tóm lược bản tin của chính bản
tin đó. Thao tác người gửi dùng khoá bí mật của họ mã hoá cho bản tóm lược bản
tin cần truyền và sau đó gắn sản phẩm vào bản tin gốc hình thành khái niệm ký số
cho bản tin.
Người nhận bản tin do đó yên tâm rằng bản tin đó thực sự do chính người
gửi tạo ra. Vì rằng bất cứ một ký tự nào trong bản tin gốc thay đổi, thì bản tóm lược
được tạo ra cũng sẽ thay đổi theo. Do vậy, bằng cách so sánh người nhận có thể yên
tâm rằng bản tin không hề bị thay đổi sau khi nó đã được ký chữ ký số (tạo bản tóm
lược).



8
Chứng nhận người dùng - Certificate
Chứng nhận người dùng trên mạng có vai trò như một hộ chiếu điện tử, chứa
các thông tin được dùng để kiểm tra, xác nhận chủ sở hữu nó (tên của người dùng).
Phần thông tin quan trọng trong chứng nhận điện tử này chính là khoá công khai
của người chủ sở hữu, khoá công khai này được các tổ chức khác dùng để mã hoá
phần dữ liệu dành cho việc xác nhận người sở hữu, hoặc dùng để kiểm tra chữ ký số
của người sở hữu.
Uỷ thác nhờ bên thứ 3 đáng tin cậy
Giải pháp cho truyền dẫn các cặp khóa an toàn là uỷ thác cho một bên thứ 3
đáng tin cậy có nhiệm vụ xác thực rằng khóa công khai đó thuộc về bên A. Bên thứ
3 như thế được gọi là một CA (Certificate Authority).
1.2 Quy trình giao dịch điện tử
Khi trao đổi thông tin qua mạng công cộng, việc chỉ sử dụng mật mã khoá bí
mật là không an toàn. Để đảm bảo an toàn dữ liệu, phải kết hợp sử dụng mật mã
khoá công khai, các thuê bao, tổ chức, cá nhân tham gia giao dịch trên mạng cần có

một cặp khoá dành riêng. Việc sử dụng mật mã khoá công khai còn cho phép các tổ
chức, cá nhân trên mạng tạo và sở hữu cặp khoá riêng của mình.
Khi hai người dùng (công ty, đại diện thương mại, ) muốn trao đổi bản tin
cho nhau, họ sẽ trao đổi khoá công khai với nhau, giữ bí mật khoá cá nhân. Bản tin
gửi đi được mã hoá bằng khoá công khai của người nhận, nó chỉ có thể được giải
mã bằng khoá cá nhân của người nhận cho nên có thể vận chuyển bản tin đó trên
một kênh không được bảo vệ, luôn trong tình trạng bị lấy cắp thông tin truyền.
Giao dịch điện tử an toàn (SET) sử dụng một cặp khoá công khai/cá nhân để
tạo ra chữ ký số. Mỗi giao dịch SET sẽ xử lý hai cặp khoá bất đối xứng. Cặp khoá
dùng trong việc mã hoá và giải mã được gọi là khoá trao đổi (cặp khoá của người
nhận bản tin), cặp khoá sử dụng trong việc tạo và xác nhận chữ ký số được gọi là
cặp khoá chữ ký (cặp khoá của người gửi bản tin). Hình vẽ 1.1 mô tả các bước của
quy trình thực hiện gửi/nhận tài liệu an toàn. Lưu ý rằng trong thao tác ký số, khoá
bí mật được dùng để mã hoá (sẽ dùng khoá công khai cùng cặp với nó để xác thực),
trong khi đó tại phía thu lại sử dụng khoá bí mật để giải mã bản tin nhận được.
Để có thể thực hiện được giao dịch điện tử, phía gửi bản tin phải có chứng
nhận người dùng của phía nhận bản tin (do bên thứ 3 đáng tin cậy được uỷ thác xác



9
nhận). Dựa vào giấy chứng nhận người dùng[12], bên nhận tin tin tưởng rằng khoá
công khai được sử dụng để xác thực chữ ký số là thuộc về bên A chứ không phải
một kẻ mạo danh nào đó trên mạng.
Khi có đầy đủ cơ sở thông tin (cơ sở hạ tầng phục vụ), giao dịch trao đổi tài
liệu điện tử được thực hiện theo các bước mô tả như sau:
Các bước
Mô tả
1
Bên gửi tin A cho bản tin cần gửi đi qua một hàm cửa để tạo

một bản tóm lược bản tin. Bản tóm lược này được xem như là dấu
vân tay số mô tả đặc tính của bản tin và sẽ được dùng để kiểm tra
tính nguyên vẹn của bản tin được gửi.
2
A mã hóa bản tóm lược bản tin bằng khóa chữ ký bí mật của
mình để tạo ra chữ ký số.
3
A tạo ra một khóa đối xứng ngẫu nhiên và dùng nó để mã hóa
bản tin cần gửi, chữ ký số và bản copy chứng chỉ của A (chứa khóa
chữ ký công khai). Để giải mã bản tin, B cần một bản copy an toàn
của khóa đối xứng ngẫu nhiên đã được A sử dụng.
4a


4b
A phải nhận được chứng chỉ của B trước khi A bắt đầu giao
dich với B, chứng chỉ của B chứa bản copy của khóa trao đổi khóa
công khai của B.
Để đảm bảo khóa đối xứng được gửi an toàn, A mã hóa nó
bằng khóa công khai của B. Khóa đối xứng sau khi đã được mã hóa
(có vỏ bọc số) được gửi cho B cùng với bản tin đã được mã hóa.
5
A gửi một bản tin đến B chứa: bản mô tả đặc tính đã được mã
hóa đối xứng, chữ ký và chứng chỉ áp dụng khóa đối xứng đã được
mã hóa bất đối xứng.
6
B nhận được bản tin gửi từ A. B dùng khóa trao đổi khóa bí
mật của mình để “gỡ” vỏ bọc số, tạo lại khóa đối xứng.




10
7
B dùng khóa đối xứng để giải mã bản tin, chữ ký số và chứng
chỉ của A.
8
B dùng khóa công khai của A (có được từ thông tin trong
chứng chỉ) để giải mã chữ ký số của A. Sau khi giải mã, B nhận
được bản tóm lược bản tin từ bản tin gốc.
9
B cho bản tin qua một giải thuật một cửa giống với giải thuật
mà A đã sử dụng, thu được một bản tóm lược bản tin mới
10
B so sánh bản tóm lược bản tin mới tạo ra với bản tóm lược
bản tin mà A gửi (kèm chữ ký số của A), giống nhau tức là nội dung
của bản tin không bị thay đổi trong suốt quá trình truyền. Nếu khác
nhau, tức là bản tin gốc đã bị thất lạc hoặc bị thay đổi sau khi A ký.




11

Hình 1.1: ứng dụng hệ mật khoá công khai trong giao dịch điện tử



12
1.3 Những kiến thức toán học nền tảng
1.3.1 Xác suất

Định nghĩa 1: Giả sử X và Y là các biến ngẫu nhiên, xác suất để X nhận giá
trị
x
là p(
x
), xác suất để Y nhận giá trị
y
là p(
y
). Xác suất đồng thời P(
x
,
y
) là xác
suất để X nhận giá trị
x
và Y nhận giá trị
y
. Xác suất có điều kiện P(
x
|
y
) là xác
suất để X nhận giá trị
x
với điều kiện Y nhận giá trị
y
. Các biến ngẫu nhiên X và
Y gọi là độc lập nhau nếu P(
x

,
y
) = p(
x
).p(
y
) với mọi giá trị có thể có
x
của X và
y
của Y.

)().|(),( ypyxPyxP 
(1.1)

)().|(),( ypyxPyxP 

Định lý Bayes: Nếu p(
y
)>0 thì:

)(
)().|(
)|(
yp
xpxyP
yxP 
(1.2)

Hệ quả: X và Y là các biến độc lập ngẫu nhiên khi và chỉ khi:


)()|( xpyxP 
với mọi
x
,
y
(1.3)
Giả sử tồn tại một phân bố xác suất trên không gian bản rõ là P ký hiệu xác
suất tiền nghiệm để bản rõ xuất hiện là P
P
(
x
). Giả sử rằng khoá K được A và B
chọn (chính là khoá đối xứng để mã hoá bản tin) theo một phân bố xác suất nào đó
(không bắt buộc là phải được chọn ngẫu nhiên). Gọi phân bố xác suất trên không
gian khoá là K , xác suất lựa chọn khoá K là P
K
(K).
Khoá K và bản rõ là các sự kiện độc lập nhau. Hai phân bố xác suất K và P
tạo ra phân bố xác suất trên bản mã là C. Xác suất hậu nghiệm sẽ là P
P
(
y
) trong đó
y là giá trị bản mã tương ứng với bản rõ
x
.
Không gian bản mã có thể có:
C
(K)

= { e
K
(
x
) :
x
 P }
Với mọi y  C có:
P
C
(
y
) =

 )}(:{ KCyK
P
K
(K) . P
P
(d
K
(
y
))
Xác suất để bản mã nhận giá trị
y
với điều kiện bản rõ là
x
:
P

C
(
)| xy
=

 )}(:{ ydxK
K
P
K
(K)





13




(1.4)


Định nghĩa 2: Một hệ mật có độ mật hoàn thiện nếu xác suất hậu nghiệm để
bản rõ là
x
với điều kiện đã thu được bản mã
y
là đồng nhất là đồng nhất với xác
suất tiền nghiệm để bản rõ là

x
.
P
P
(
)| yx
= P
P
(
x
) với mọi
x

P , y

C.
Định lý 1: Giả sử (P, C, K, D, E ) là một hệ mật trong đó |K | = |C|=|P|. Hệ
mật có độ mật hoàn thiện khi và chỉ khi mỗi khoá K được dùng với một xác suất
như nhau bằng 1/|K| và với mỗi
x
 P,
y
 C tồn tại một khoá K duy nhất sao cho:
e
K
(
x
) =
y
.

1.3.2 Số học
Phần này đề cập đến một số định lý số học phục vụ cho việc phân tích các hệ mật
mã [1][2]; với Z là ký hiệu cho tập các số nguyên, Z =  , -3, -2, -1, 0, 1, 2, 3, ,
Z thoả mãn các tính chất, định lý sau:
1. Với a, b là các số nguyên, b gọi là chia hết cho a nếu tồn tại (số nguyên) c sao
cho b = a.c. Ký hiệu là a|b. a được gọi là chia hết b.
2. Với a, b, c Z, các nhận định sau là đúng:
1. a|a
2. Nếu a|b và b|c thì a|c
3. Nếu a|b và a|c thì a|(bx + cy) với mọi x, y Z
4. Nếu a|b và b|a thì a = b
3. Với a,b Z ; b  0 ta có: a div b = [a/b] và a mod b = a –b[a/b]. Trong đó ký hiệu
[a/b] tức là phần nguyên của phép chia a cho b.
4. Nếu p là số nguyên tố và p|ab, khi đó hoặc p|a, hoặc p|b, hoặc cả hai.
5. (x) được định nghĩa là số lượng của các số nguyên tố  x, khi đó:
P
P
(X)

 )(:{ ydxk
k
P
K
(K)

 )(:{ KCyk
P
K
(K) P
P

(d
K
(
y
))
P
P
(
)| yx
=



14

1
ln/
)(
lim 

xx
x
x

(1.5)
Điều này có nghĩa là với các số x lớn, (x) xấp xỉ bằng giá trị x/lnx.
6. Với (x) được định nghĩa là số các số nguyên tố  x, Với x  17 thì:
(x) >
x
x

ln
(1.6)
với x >1 thì:
(x) < 1.25506
x
x
ln
(1.7)
7. Với mỗi số nguyên n  2 có thể phân tích được thành:
n =
ek
k
ee
ppp
2
2
1
1
(1.8)
trong đó p
i
là các số nguyên tố, và e
i
là các số nguyên dương. Với mỗi n như vậy,
phép phân tích thừa số là duy nhất.
8. Nếu a =
ek
k
ee
ppp

2
2
1
1
, b=
fk
k
ff
ppp
2
2
1
1
; với e
i
 0 và f
i
 0, khi đó
UCLN(a,b) = p
1
min(e1, f1)
p
2
min(e2,f2)
p
k
min(ek,fk)

Và BCNN(a,b) = p
1

max(e1,f1)
p
2
max(e2,f2)
p
k
max(ek,fk)

9. Với n  1, (n) được gọi là số các số nguyên trong đoạn [1,n] là nguyên tố đối
với n. Hàm  được gọi là hàm phi Euler.
10. Hệ quả:
1. Nếu p là số nguyên tố, (p) = p –1
2. Nếu UCLN(m,n) = 1, thì (mn) = (m).(n)
3. Nếu n =
ek
k
e
ppp
2
2
1
1
là phép tìm thừa số nguyên tố của n, thì
).
1
1( )
1
1()
1
1()(

21 k
ppp
nn 

(1.9)
11. Hệ quả: Với mỗi số nguyên n 5, thì
(n) >
n
n
lnln6
(1.10)
1.3.3 Các định lý áp dụng với phép toán chia lấy phần dư (mod)
Với n là một số nguyên dương:



15
12. Nếu a và b là các số nguyên, khi đó a được gọi là đồng dư với b theo modulo n
nếu n chia hết (a-b), ký hiệu là a  b (mod n). Số nguyên n được gọi là modulus của
phép đồng dư. Mệnh đề (a mod n) được phát biểu là rút gọn a theo modulo n.
13. Định nghĩa: Tập Z
m
=

0, 1, , m-1

được trang bị hai phép tính là cộng và
nhân, là tập các giá trị thu được từ kết quả rút gọn của một số theo modulo m.
Các tính chất của phép cộng và phép nhân đều được bảo toàn trong tập Z
m

.
Tuy nhiên chú ý rằng, tồn tại phép toán ngược của phép cộng trong tập Z
m
, ta định
nghĩa a-b trong Z
m
là (a+m-b) mod m, cũng có thể tính kết quả của phép trừ a-b rồi
rút gọn theo modulo m.
Vd: Để tính 11-17 trong Z
29
, ta tính 11+12 mod 29 = 23 tương đương với kết quả
11-17 mod 29 = -6 mod 29= 23.
15. Với n là một số nguyên dương, a, a
1
, b, b
1
, c  Z
m
;
1. a b (mod n) nếu và chỉ nếu a và b có cùng số dư trong phép chia cho n
2. a  a (mod n)
3. Nếu a  b (mod n) thì b  a (mod n)
4. Nếu a  b (mod n) và b  c (mod n) thì a  c (mod n)
5. Nếu a  a
1
(mod n), b  b
1
(mod n), khi đó a + b  a
1
+ b

1
(mod n) và ab 
a
1
b
1
(mod n).
Lớp tương đương của số nguyên a là tập tất cả các số nguyên đồng dư với a
theo modulo n. Nếu a = qn + r, trong đó 0  r < n, khi đó a  r (mod n). Do
đó mỗi số nguyên a là đồng dư theo modulo n với một số nguyên duy nhất
trong khoảng (0, n-1), số nguyên duy nhất này được gọi là thặng dư nhỏ nhất
của phép rút gọn a theo modulo n. a và r thuộc cùng một lớp tương đương.
16. Định nghĩa: Phép rút gọn các số nguyên theo modulo n hình thành nên một tập
Z
n
là các lớp tương đương của các số nguyên {0,1,2, , n-1}. Phép cộng, phép trừ,
và phép nhân trong Z
n
đều được rút gọn theo modulo n.
ví dụ: Z
25
= {0,1,2, ,24}. Trong Z
25
thì 13 + 16 = 4 và 13.16 = 8.
17. Định lý: Với a  Z
m
, số nghịch đảo nhân của a mod m là một số nguyên x  Z
m

mà thoả mãn ax  1 (mod n). Nếu tồn tại duy nhất một số x như vậy, a được gọi là

nghịch đảo được hoặc là số đơn vị, số nghịch đảo của a được ký hiệu là a
-1
.



16
18. Định nghĩa: Nếu a, b

Z
m
. Phép chia a cho b được phần dư là m là kết quả
của phép a nhân b
-1
lấy phần dư m chỉ khi tồn tại b
-1
rút gọn theo modulo m.
19. Hệ quả: Với a  Z
m
, a được gọi là nghịch đảo được nếu và chỉ nếu UCLN(a,m)
= 1.
Ví dụ: các thành phần nghịch đảo được trong Z
9
là: 1, 2, 4, 5, 7, và 8. (4
-1
=7 Vì
4.71 (mod 9).).
20. Hệ quả: Gọi d=UCLN(a, n). Phương trình đồng dư ax  b (mod n) có nghiệm x
nếu và chỉ nếu b chia hết cho d, khi đó các nghiệm d nằm trong khoảng (0,n-1) và
đều đồng dư với modulo n/d.

21. Định lý phần dư China: Định lý này là một phương pháp để giải các hệ phương
trình đồng dư. Giả sử m
1
, ,m
r
là các số nguyên tố cùng nhau từng đôi một (tức
UCLN(m
i
, m
j
)=1 nếu ij), a
1
, , a
r
là các số nguyên, khi đó hệ phương trình:
x  a
1
(mod m
1
)
x  a
2
(mod m
2
) (1.11)
x  a
r
(mod m
r
)

là có nghiệm duy nhất theo modulo M = m
1
* m
2
* * m
r
là;
x=


r
i
iii
MyMa
1
mod
(1.12)
trong đó M
i
=
i
m
M
và y
i
=
ii
mM mod
1
, với 1 i  r.

VD: Xét hệ phương trình:









)13(mod10
)11(mod3
)7(mod5
x
x
x

Ta tính được M= 1001; M
1
=143, M
2
=91, M
3
=77.
y
1
= M
1
-1
mod m

1
= 143
-1
mod 7  q*y
1
mod 143 =1  q*y
1
–1 = 143*k  tìm
được giá trị gần nhất là y
1
= 5. Tương tự, y
2
= 4, y
3
=12. (Máy tính sử dụng thuật
toán Euclide để tìm ra giá trị y
i
vì UCLN (M
i
,m
i
)=1).
X= 5*143*5 + 3*91*4 + 10*77*12 mod 1001  x= 13907 mod 1001
 x = 894 mod 1001.



17
22. Thuật toán Gauss: Nghiệm x của các phương trình đồng dư đề cập đến trong
định lý phần dư China có thể được tính theo công thức:

x =
nMNa
k
i
iii
mod
1


với N
i
= n/n
i
và M
i
= N
i
-1
mod n
i
.
(1.13)
23. Hệ quả: Nếu UCLN(n
1
, n
2
) =1, khi đó hệ phương trình đồng dư x  a (mod n
1
)
và x  b (mod n

2
) có nghiệm duy nhất x  a (mod n
1
n
2
).
24. Định nghĩa: Nhóm nhân[2] của Z
m
là Z
m
*
=

a

Z
m
|UCLN(a,m)=1

, trường
hợp đặc biệt, nếu n là số nguyên tố, thì Z
m
*
=

a| 1

a

n-1


.
25. Định nghĩa: Cấp của Z
m
*
được định nghĩa là số thành phần trong Z
m
*
, ký hiệu
là |Z
m
*
|.
Chú ý: |Z
n
*
| = (n) và phép nhân trong tập Z
n
*
được gọi là đóng, tức là nếu
aZ
n
*
và bZ
n
*
thì a.bZ
n
*
.

26. Hệ quả: Hệ quả: Với n  2 và n nguyên, ta có
1. Nếu aZ
n
*
thì a
(n)
 1 (mod n).
2. Nếu n là một số nguyên tố, và nếu r s (mod (n), khi đó a
r
 a
s
(mod n)
với mọi số nguyên a.
27. Hệ quả: Với p là một số nguyên tố, ta có:
1. Nếu UCLN(a,p)=1, khi đó a
p-1
 1 (mod p)
2. Nếu r  s (mod p-1), khi đó a
r
= a
s
mod p
3. a
p
 a (mod p)
28. Với a Z
n
*
, cấp của a, ký hiệu là ord(a), là số nguyên dương t nhỏ nhất thỏa
mãn: a

t
 1 (mod n).
29. Nếu cấp của a  Z
n
*
là t và a
s
 1 (mod n), thì s sẽ chia hết t. Trường hợp đặc
biệt, (n) chia hết cho t, t|(n).
30. Định nghĩa: Với

Z
n
*
, nếu cấp của



(n), khi đó

được gọi là gốc
(generator) hay thành phần nguyên thuỷ (primitive element) của Z
n
*
. Nếu Z
n
*

thành phần nguyên thuỷ, Z
n

*
được gọi là tuần hoàn (cyclic).
31. Các tính chất của thành phần nguyên thuỷ của Z
n
*
:



18
1. Z
n
*
có thành phần nguyên thuỷ nếu và chỉ nếu n = 2, 4, p
k


hay 2p
k
với p là
một số n lẻ và k  1. Trường hợp p là một số nguyên tố thì Z
p
*
có một thành
phần nguyên thuỷ.
2. Nếu  là thành phần nguyên thuỷ của Z
n
*
thì Z
n

*
= { 
i
mod n|0 i  (n)-
1}.
3. Giả sử rằng  là thành phần nguyên thuỷ của Z
n
*
, khi đó b = 
i
mod n
cũng là một thành phần nguyên gốc của Z
n
*
nếu và chỉ nếu UCLN(i,(n)) =
1. Tức là nếu Z
n
*
là tuần hoàn thì số các thành phần nguyên gốc sẽ là ((n)).
4. Z
n
*
là một thành phần nguyên gốc của Z
n
*
nếu và chỉ nếu 
(n)/p
không
đồng dư với 1 (mod n) với mỗi số chia p (của (n)) là số nguyên tố.
Ví dụ minh hoạ: Z

21
*
={1,2,4,5,8,10,13,16,17,19,20} các cấp của các thành
phần của Z
21
*
được liệt kê theo bảng dưới đây:
Z
21
*
1
2
4
5
8
10
11
13
16
17
19
20
Cấp của 
1
6
3
6
2
6
6

2
3
6
6
2
Cấp của các thành phần của Z
n
*

Nhận thấy rằng không có thành phần của Z
21
*
chứa cấp của (21)=12, 21 không
thỏa mãn điều kiện 2.132 (1). Nói cách khác Z
25
*
là tuần hoàn và thành phần
nguyên gốc của nó =2.
32. Định nghĩa: Với a Z
n
*
, a được gọi là thặng dư bậc hai (quadratic residue)
modulo n, hoặc bình phương modulo n, nếu tồn tại một giá trị xZ
n
*
thỏa mãn x
2

a (mod n). Nếu không tồn tại một giá trị x như vậy, a được gọi là không thặng dư
bậc hai (quadratic non-residue) modulo n. Tập hợp của các thặng dư bậc hai modulo

n được ký hiệu là Q
n
và tập hợp của các không thặng dư bậc hai được ký hiệu là
n
Q
.
Chú ý: theo định nghĩa, 0Z
n
*
là vì 0Q
n
và 0
n
Q
.
33. Giả sử p là một số nguyên tố lẻ và  là một thành phần nguyên gốc của Z
p
*
, khi
đó aZ
p
*
là một thặng dư bậc hai modulo p nếu và chỉ nếu a = 
i
mod p, với i là
một số nguyên chẵn. Khi đó |Q
p
|=(p-1)/2 và |
n
Q

|=(p-1)/2; có nghĩa là một nửa số



19
thành phần trong Z
p
*
là thặng dư bậc hai và nửa số thành phần còn lại là không
thặng dư bậc hai.
34. Định lý: Giả sử p và q là hai số nguyên tố khác nhau, n=pq, khi đó với aZ
n
*

một thặng dư bậc hai modulo n nếu và chỉ nếu aQ
p
và aQ
q
. Điều này chỉ ra rằng
|Q
n
|=|Q
p
|.|Q
q
|=(p-1)(q-1)/4 và |
n
Q
|=3(p-1)(q-1)/4.
35. Tiêu chuẩn Euler: Giả sử p là một số nguyên tố,

x
là một thặng dư bậc 2 theo
modulo p khi và chỉ khi:
)(mod1
2/)1(
px
p


(1.14)
36. Định nghĩa: Với a

Q
n
, nếu x

Z
n
*
thỏa mãn x
2


a (mod n), thì x được gọi là
căn bậc hai (square root) của a module n.
37. Hệ quả (số lượng căn bậc hai):
1. Nếu p là một số nguyên tố lẻ và aQ
p
thì a có chính xác 2 căn bậc hai
modulo p.

2. Tổng quát hơn, với n =
ek
k
e
ppp
2
2
1
1
, p
i
là các số nguyên tố lẻ phân biệt và
e
i
 1, nếu aQ
n
thì a có chính xác 2
k
căn bậc hai phân biệt modulo n.
1.3.4 Ký hiệu Legendre và ký hiệu Jacobi
38. Cho p là số nguyên tố lẻ, a là số nguyên. Kí hiệu Legendre






b
a
được định nghĩa

là:

















p
p
Qaneu
Qaneu
paapneu
b
a
1
1
)(mod0(,0
(1.15)


Trong đó Q
p
là tập các thặng dư bậc 2 modul p,
p
Q
là tập hợp các không thặng dư
bậc 2 theo modul p.
Tính chất của kí hiệu Legendre:
Cho p là số nguyên tố lẻ; a, b là các số nguyên, khi đó:
1.






b
a
 a
(p-1)/2
mod p
đặc biệt:









p
1
= 1;









p
1
= (-1)
(p-1)/2
;
vì thế  -1

Q
p
nếu p  1 mod 4 hoặc p  3 mod 4



20
2.









p
ab
=








p
a








p
b
,  nếu a



*
p
Z
thì








p
a
2
= 1.
3. Nếu a  b mod p thì








p
a
=









p
b

4.








p
b
=
8/)1(
2
)1(


p

vì thế:









p
2
=





8mod5;3,1
8mod7;1,1
p
p

5. Nếu q là số nguyên tố lẻ khác p, thì:









q
p
=








p
q
(-1)
(p-1)(q-1)/4
nói cách khác,








q
p
=









p
q

trừ trường hợp p  q  3 mod 4,








q
p
= -








p
q


39. Cho n là số nguyên lẻ, n  3 và n có phân tích là n =
k
e
ee
ppp
21
, khi đó kí hiệu
Jacobi được định nghĩa là:






n
a
=
1
1
e
p
a









.
2
2
e
p
a









k
e
k
p
a








; rõ ràng là nếu n là số

nguyên tố thì kí hiệu Jacobi trùng với kí hiệu Legendre.
Tính chất của kí hiệu Jacobi:
1.






n
a
=








n
n
Qa
na
Qa
,1
1),gcd(,0
,1

2.







n
ab
=






n
a






n
b
,  nếu a


*
n

Z
thì








n
a
2
= 1.
3.






mn
a
.
=







n
a






m
a

4. Nếu a  b mod n thì






n
a
=






n
b


5.
1
.
1







n

6.
2/)1(
)1(
1









n
n
. Vì thế

1
1








n
, nếu n  1 mod 4, và

1
1








n
, nếu n  3 mod 4



21
7.

8/
)1(
2
k
n







với k=n
2
-1. Vì thế
1
2







n
, nếu n  1;7 mod 8, và

1
2








n
, nếu n  3; 5 mod 8
8.
4/)1)(1(
)1(















mn
m
n
n

m
.














m
n
n
m
, trừ trường hợp m  n  3 mod 4, khi đó:














m
n
n
m

1.3.5 Một số thuật toán
40. Bài toán logarit rời rạc trong Z
p

Giả thiết: Gọi p là một số nguyên tố,   Z
p
là phần tử nguyên thủy (phần tử
sinh) của Z
p
,   Z
p
.
Kết luận: Hãy tìm một số nguyên a duy nhất : 0 ≤ a ≤ p-2 thoả mãn:

a
  (mod p)
Lời giải: Số nguyên a được xác định: a = log

.
41. Thuật toán Euclid tìm ước số chung của 2 số nguyên a, b, a ≥ b:
Input: hai số nguyên dương a, b; a>=b

Output: ước số chung lớn nhất của a và b (gcd(a,b))
while (b<>0)
{
r := a mod b;
a := b
b := r
}
return(a);
42. Thuật toán Euclid tìm phần tử nghịch đảo
Giả sử ta cần tìm phần tử nghịch đảo của a theo modun m, khi đó ta cần tìm
x và y sao cho: m.x + a.y = UCLN(a, m);
Suy ra (m.x + a.y) mod m = UCLN(a, m) mod m = UCLN(a, m),
 m.x mod m + a.y mod m = UCLN(a, m)  a.y mod m = UCLN(a, m)
Do đó, nếu UCLN(a, m) = 1 thì a có phần tử nghịch đảo a
-1
= y;
Ví dụ: a =11, p=17, q=19, n=323, (n) = 288, phải tìm:



22
a.a
-1
 1 (mod (n))  a.a
-1
– 1 = k.(n)
a
-1
= (k(n) +1)/a  a
-1

= (k.288 + 1)/11
Do vậy, thuật toán Euclid mở rộng tìm phần tử nghịch đảo như sau:
Input: số nguyên tố p,q, n=p*q, (n) = (p-1)(q-1) và số a  Z
n
,
Output: a
-1
mod n.
if (a==0) return(“b không có phần tử nghịch đảo”);
while (r != 0)

d = (k*(n) + 1)/a;
r = (k*(n) +1) mod a;

if (d < 0) a
2
= m + a
2
;
return(d);
43. Thuật toán tìm căn nguyên thuỷ của một số nguyên m.
Tìm (m).
for (i=2; i <m; i++) do
{
if (UCLN (i, m) == 1), làm các việc sau:
k = 1;
do

d = a
k

mod m;
k++;
}
while (d<>1);
if (k == (m)) Tbao(Tìm thấy i là phần tử nguyên thủy của m”);
}
.

24
Chương 2
CÁC HÀM BĂM
2.1 Các ký hiệu chung
 
n
1,0
: Tập tất cả các xâu nhị phân có độ dài n
 
*
1,0
: Tập tất cả các xâu nhị phân có độ dài giới hạn
AxB : Tập tất cả các cặp
 
wv,
, mà
v
 A và
w
B
H:AB : Hàm H xác định từ tập A đến tập B
w

: Độ dài của xâu
w

vw
: ghép, chắp nối chuỗi
w
vào chuỗi
v

w

v
: XOR từng bit của xâu nhị phân
w
với xâu nhị phân
v
(có độ dài
bằng nhau)
X  Y : Phép logic X “AND” Y theo từng bit
X  Y : Phép logic X “OR” Y theo từng bit
X  Y : Phép logic X “XOR” Y theo từng bit
 X hay
X
: Phần bù của X
X + Y : Phép cộng theo modulo 2
32

X << s; (Xs) : Phép dịch trái X đi s bit (0 ≤ s ≤ 31).
Ví dụ: H:{0,1}
*

x {0,1}
l
 {0,1}
n
nghĩa là hàm H gồm có 2 đối số, đối số
thứ nhất là một xâu nhị phân có độ dài tuỳ ý, đối số thứ 2 là một xâu nhị phân có độ
dài l, hàm trả lại một xâu có độ dài n.
2.2 Các định nghĩa, khái niệm và các tính chất căn bản
2.2.1 Định nghĩa
Trong thực tế sử dụng, hàm băm (hash) được chia thành nhiều loại khác
nhau. Chương này phân loại hàm băm thành hai loại: hàm băm có khoá và hàm băm
không khoá.
Định nghĩa 1: Một hàm băm là một hàm h mà tối thiểu có 2 đặc tính sau:
1. Nén - h ánh xạ lối vào
x
có độ dài (số bit) hữu hạn tuỳ ý thành một
lối ra h(
x
) có độ dài xác định n;
2. Dễ tính toán - cho trước h và lối vào
x
, dễ dàng tính được h(
x
).
Định nghĩa 2: Với 2 số nguyên dương l, n. h được gọi là hàm băm có lối ra
n-bit và sử dụng khoá l-bit nếu h là một hàm tiền định có 2 đầu vào, đầu vào thứ

×