Đặc biệt, các giao thức an ninh nâng cao đang được quan tâm nghiên cứu, ở đó các bên tham gia giao thức đều không đáng tin cậy đối với nhau như: chia sẻ thông tin mật giữa một số thành v
Trang 2LUẬN VĂN THẠC SĨ TOÁN HỌC
Người hướng dẫn khoa học: TS Trần Văn Dũng
HÀ NỘI - 2018
Trang 3Luận văn này được thực hiện tại Trường Đại học Sư phạm Hà Nội 2
Để hoàn thành được luận văn này tôi đã nhận được rất nhiều sự động viên, giúp đỡ của nhiều cá nhân và tập thể
Trước hết, tôi xin bày tỏ lòng biết ơn sâu sắc đến thầy giáo TS Trần Văn Dũng – Giảng viên trường ĐHGTVT Hà Nội đã nhiệt tình giúp đỡ, trực tiếp chỉ bảo, hướng dẫn tôi trong suốt quá trình thực hiện luận văn cao học Xin cùng bày tỏ lòng biết ơn chân thành tới các thầy cô giáo trong trường Đại học Sư phạm Hà Nội 2, người đã đem lại cho tôi những kiến thức
bổ trợ, vô cùng có ích trong những năm học vừa qua
Cũng xin gửi lời cám ơn chân thành tới Ban Giám hiệu, Phòng Đào tạo sau đại học, Khoa Toán trường Đại học Sư phạm Hà Nội 2 đã tạo điều kiện cho tôi trong quá trình học tập
Cuối cùng tôi xin gửi lời cám ơn đến gia đình, bạn bè, những người đã luôn bên tôi, động viên và khuyến khích tôi trong quá trình thực hiện đề tài nghiên cứu của mình
Hà Nội, ngày 06 tháng 11 năm 2018
Học viên thực hiện
Nguyễn Thị Bình
Trang 4Tôi xin cam đoan:
Những số liệu và kết quả nghiên cứu trình bày trong luận văn này là hoàn toàn trung thực, của tôi không vi phạm bất cứ điều gì trong luật sở hữu trí tuệ và pháp luật Việt Nam Mọi sự giúp đỡ cho việc thực hiện luận văn này
đã đƣợc cảm ơn và các thông tin trích dẫn trong luận văn đều đƣợc ghi rõ nguồn gốc Những kiến thức tôi trình bày trong luận văn này chƣa đƣợc trình bày hoàn chỉnh trong bất cứ tài liệu nào
Hà Nội, ngày 6 tháng 11 năm 2018
Học viên thực hiện
Nguyễn Thị Bình
Trang 5MỞ ĐẦU 1
1 Lý do chọn đề tài 1
2 Mục đích nghiên cứu 2
3 Nhiệm vụ nghiên cứu 2
4 Đối tượng và phạm vi nghiên cứu 2
5 Phương pháp nghiên cứu 3
6 Đóng góp mới 4
CHƯƠNG 1KIẾN THỨC CƠ SỞ VÀ MẬT MÃ KHÓA CÔNG KHAI 5
1.1 Số học modulo 5
1.1.1 Các số nguyên tố và các số nguyên tố cùng nhau 5
1.1.2 Số học trong lớp số dư 7
1.1.3 Lý thuyết về đồng dư 7
1.1.4 Các số nguyên modulo n 8
1.1.5 Hàm Euler, định lý Euler và định lý Fermat 9
1.1.6 Thuật toán Euclide mở rộng 12
1.2 Logarit rời rạc 14
1.3 Mã hóa công khai RSA 17
1.3.1 Mô tả sơ lược 17
1.3.2 Mã hóa 19
1.3.3 Giải mã 19
1.3.4 Sinh khóa RSA 20
1.4 Mã hóa công khai Elgamal 21
Tóm tắt chương 1 23
CHƯƠNG 2CHỮ KÝ ĐIỆN TỬ VÀ SƠ ĐỒ CAM KẾT 24
2.1 Hàm băm 24
Trang 62.1.3 Ứng dụng của hàm băm 25
2.1.4 Các loại hàm băm 25
2.2 Chữ ký điện tử DSA 26
2.2.1 Khái niệm 26
2.2.2 Thuật toán DSA 26
2.3 Chữ ký điện tử Schnorr 29
2.4 Sơ đồ cam kết 31
2.5 Một số sơ đồ cam kết 34
2.6 Chứng minh không tiết lộ thông tin (Zero Knowledge Protocol - ZKP) 37
Tóm tắt chương 2 40
CHƯƠNG 3GIAO THỨC SIGMA VÀ ỨNG DỤNG 41
3.1 Giao thức Sigma 41
3.2 Giao thức định danh Schnorr 42
3.3 Giao thức Chaum – Pederson 46
3.4 Giao thức “hoặc” 49
3.5 Giao thức kết hợp 53
3.6 Xác thực trực tuyến an toàn 55
3.6.1 Lược đồ xác thực tài khoản trực tuyến 55
3.6.2 Xác thực sử dụng giao thức Sigma 58
Tóm tắt chương 3 62
KẾT LUẬN 63
TÀI LIỆU THAM KHẢO 65
Trang 7M Ở ĐẦU
1 Lý do chọn đề tài
Ngày nay Internet đã trở thành một phần không thể thiếu trong mỗi người dân Việt Nam nói riêng cũng như mỗi người dân trên thế giới nói chung Thông tin không ngừng trao đổi, mua bán trên mạng Internet, do đó
việc bảo mật, đảm bảo an toàn thông tin đang là nhu cầu cấp thiết Trước các yêu cầu cần thiết đó, lý thuyết mật mã thông tin ra đời nhằm đảm bảo tính an toàn dữ liệu tại nơi lưu trữ cũng như khi dữ liệu được truyền trên mạng Đặc
biệt, các giao thức an ninh nâng cao đang được quan tâm nghiên cứu, ở đó các bên tham gia giao thức đều không đáng tin cậy đối với nhau như: chia sẻ thông tin mật giữa một số thành viên (chìa khóa mở tài khoản), cam kết biết
một thông tin mật nào đó, chứng minh không tiết lộ thông tin (xác thực danh tính), bầu cử điện tử (lá phiếu và kết quả bầu cử hợp lệ) hay tính toán đa bên
an toàn khi các bên che giấu thông tin đầu vào của mình (đấu thầu hợp đồng)
Đó là các hướng nghiên cứu của các giao thức an ninh nâng cao, khi các bên tham gia không tin cậy lẫn nhau Cần tạo ra các sơ đồ, môi trường và kỹ thuật trao đổi để các bên phối hợp thực hiện nhiệm vụ chung, nhưng đảm bảo yêu
cầu an ninh cho các bên
Khóa luận này tập trung tìm hiểu một số sơ đồ cam kết trong một số giao thức Sigma đặc biệt dựa trên các mã đồng cấu Cam kết là thông tin một
bên (người chứng minh) gửi cho bên kia như một đảm bảo về một điều nào đó: có thể là một thông tin mật ở thời điểm bắt đầu giao thức, sau đó các bên đều biết hoặc có thể là một thông tin mật mà sẽ không cho bên kia biết (gọi là người kiểm chứng), trong đó cam kết là một phần để chứng minh về điều đó Giao thức chứng minh như vậy gọi là chứng minh không tiết lộ thông tin Giao thức Sigma là một loại giao thức chứng minh không tiết lộ thông tin, ở
Trang 8đó giả thiết người kiểm chứng là trung thực, có ngh a là anh ta tuân thủ các bước của giao thức và kiểm chứng bằng các dữ liệu ngẫu nhiên
Chính vì vậy, dưới sự hướng dẫn tận tình của thầy giáoTS.Trần Văn Dũng, em chọn lựa đề tài “Một số sơ đồ cam kết trong giao thức sigma vàứng dụng” với mong muốn nắm bắt một số giao thức an ninh nâng cao và bước đầu áp dụng kiến thức đã học vào một số sơ đồ cam kết với độ an toàn bảo mật cao
3 Nhiệm vụ nghiên cứu
- Tìm hiểu lý thuyết, trình bày lại một số giao thức an ninh nâng cao
- Minh họa một số ví dụ chi tiết cho các giao thức Sigma
- Tìm hiểu một số ứng dụng cam kết trong bài toán thực tế
4 Đối tượng và phạm vi nghiên cứu
- Đối tượng nghiên cứu:
Trong khi trao đổi thông tin giữa hai bên không tin cậy, hai bên A và B cần đưa cho nhau lựa chọn của mình Nhưng do không phải trao đổi trực tiếp, nên một bên sẽ gửi lựa chọn của mình trước, và không muốn để lộ thông tin Nên thay vì gửi trực tiếp lựa chọn, bên A gửi cam kết về thông tin lựa chọn của mình, nhưng không muốn tiết lộ thông tin đó cho B khi đưa ra cam kết
đó Tiếp theo B gửi thông tin lựa chọn của mình cho A, sau khi nhận được thông tin lựa chọn của B, bên A sẽ mở thông tin về lựa chọn của mình và B
Trang 9dùng cam kết để kiểm chứng về lựa chọn của A Ở đây có hai tính chất quan trọng của cam kết là:
- Tính trói buộc: cam kết đảm bảo như thế nào về việc lựa chọn của A được trói buộc với cam kết đó, tức là A không thể thay đổi lựa chọn của mình, sau khi biết lựa chọn của B
- Tính bảo mật: B nhận được cam kết của A về lựa chọn của A, nhưng không thể biết gì về lựa chọn của A qua cam kết đó
Hơn nữa, trong giao thức Sigma khi người chứng minh A giữ một bí mật riêng, muốn chứng minh cho người kiểm chứng B là mình nắm giữ bí mật đó, nhưng lại không muốn để lộ cho B biết, thì sẽ tiến hành như sau: A sẽ gửi cam kết của một đại lượng ngẫu nhiên và B sẽ gửi lại một thách đố ngẫu nhiên; sau đó A gửi cam kết dựa vào thông tin bí mật, đại lượng ngẫu nhiên ban đầu và thách đố của B và cuối cùng B sẽ kiểm chứng sự hiểu biết của A
về thông tin bí mật Giao thức Sigma đó là loại giao thức hỗ trợ chứng minh không tiết lộ thông tin dựa trên mã đồng cấu Sơ đồ cam kết được lồng ghép trong giao thức Sigma và đảm bảo các yêu cầu an ninh Việc nghiên cứu sơ
đồ cam kết trong giao thức Sigma là nội dung chính của luận văn cùng với các ví dụ về ứng dụng của chúng
- Phạm vi nghiên cứu: cơ sở toán học của các giao thức cam kết và các giao thức Sigma, tính chất an ninh của chúng và đưa ra một số ví dụ minh họa
về việc ứng dụng các lược đồ đó, như xác thực trực tuyến an toàn, cam kết trong bầu cử điện tử
5 Ph ương pháp nghiên cứu
Tìm hiểu các tài liệu, sách, báo liên quan đến các kết quả đã có về một
số sơ đồ cam kết trong giao thức sigma và ứng dụng Tổng hợp các kiến thức
và trình bày một cách có hệ thống
Trang 106 Đóng góp mới
Hệ thống các kiến thức về một số sơ đồ cam kết trong giao thức sigma
và ứng dụng, góp phần làm phong phú hơn các kết quả sự, hiểu biết về giao thức an ninh nâng cao Hy vọng luận văn là là một tài liệu tham khảo hữu ích
về một số sơ đồ cam kết trong giao thức sigma và ứng dụng
Trang 11CH ƯƠNG 1
Trong chương 1 luận văn trình bày những kiến thức cơ sở quan trọng
để áp dụng vào thuật toán, các giao thức chia sẻ thông tin bí mật Cụ thể luận
văn đề cập đến một số định ngh a cơ bản trong số học Modulo: số nguyên tố, nguyên tố cùng nhau, lý thuyết về đồng dư,…, và các định lí quan trọng để áp dụng giải các bài toán về đồng dư trong các thuật toán, các giao thức chia sẻ
thông tin như: định lí Euler, định lí Fermat, định lí phần dư Trung Hoa Ngoài
ra luận văn cũng giới thiệu về logarit rời rạc và căn nguyên thuỷ, một số giao
thức mã công khai như: RSA, Elgamal [1, 2, 3] Trong quá trình trình bày những kiến thức cơ sở số học, luận văn cũng đưa ra những ví dụ cụ thể để minh họa làm cho người đọc dễ hiểu và nắm bắt nhanh được các thông tin đưa ra
1.1 Số học modulo
1.1.1 Các số nguyên tố và các số nguyên tố cùng nhau
Ta nói rằng b (một số khác 0) là ước số của a nếu a = mb, với một giá trị m nào đó, ở đây a, b, m là các số nguyên Như vậy, b là ước số của a, nếu
như chia a cho b không còn lại số dư Để kí hiệu b là ước số của a thường sử dụng cách viết b a
Trang 12Một số nguyên bất kỳ s > 1 có thể phân tích thành các thừa số và được trình bày dưới dạng: 1 2
ii) Ước số bất kỳ của a và b đều là ước số của c
Khi đó ước chung lớn nhất của hai số a và b được ký hiệu là: gcd(a, b) hoặc UCLN(a, b) Theo định ngh a ta có c=gcd(a, b) hoặc c=UCLN(a, b)
Có thể định ngh a tương đương như sau: gcd(a, b) = max[c, khi cça và cçb] Nhận xét:
· UCLN của hai số nguyên là một số dương, bởi vì:
gcd(a, b) = gcd(a, –b) = gcd(–a, b) = gcd(–a, –b)
· Vì tất cả các số nguyên khác không đều là ước số của số 0, chúng ta luôn luôn có: gcd(a, 0) = |a|
Hai số nguyên a và b được gọi là hai số nguyên tố cùng nhau, nếu ước chung lớn nhất của chúng bằng 1
Nhận xét:
· Số 1 là nguyên tố cùng nhau với mọi số nguyên
· Một số nguyên tố là một cặp số nguyên tố với tất cả những số khác
loại trừ những số là bội của số đó
· Cho n số nguyên a a1 , 2 , ,a n Các số này được gọi là nguyên tố cùng nhau nếu ước chung lớn nhất của n số đó bằng 1
· a và b là hai số nguyên tố cùng nhau, khi đó tồn tại các số nguyên x
và y sao cho ax + by = 1
Trang 13Tính chất 1: Nếu a1ºb1modn và a2 ºb2 modn thì a1 ±a2 ºb1 ±b2 modn
Chứng minh: Từ giả thuyết ta có a1 =nt1 +b1 và a2 =nt2 +b2, suy ra:
a ± = ± + ±a b b t t n, trong đó t t1 ; 2 ÎZ
Tính chất 2: Nếu a1ºb1 modn và a2ºb2modn thì a1 ´ º ´a2 b1 b2 (mod )n
Chứng minh: Từ giả thuyết ta có a1 =nt1 +b1 và a2 =nt2 +b2, suy ra:
a a´ = ´ +b b b t +b t +nt t n, điều này có ngh a là a1 ´ º ´a2 b1 b2 (mod )n
Tính chất 3: Nếu nhƣ gcd(d,n) = 1 ,aºbmodn,a=a1d,b=b1d, thì a1ºb1modn
Chứng minh: Từ giả thuyết ta có (a1-b1)d|n, mà gcd(d,n) = 1, nên suy ra
Trang 14Theo tính chất 1 ta suy ra: 37n+2
+16n+1+23nº 7 2nmod 7, và theo tính chất
3 suy ra 2 1
37n+ + 16n+ + 23n chia hết cho 7
1.1.4 Các số nguyên modulo n
Các số nguyên modulo n (ký hiệu Z n) là tập hợp các số nguyên
{0 , 1 , ,n- 1} bao gồm 2 phép toán cộng và nhân Việc cộng và nhân trong Z n
đƣợc thực hiện giống nhƣ cộng và nhân các số nguyên, ngoại trừ một điểm là các kết quả trung gian và cuối cùng sẽ đƣợc rút gọn theo modulo n
Các định ngh a trên phép cộng và phép nhân trong Z nthoả mãn hầu hết các quy tắc quen thuộc trong số học Sau đây ta sẽ liệt kê mà không chứng minh các tính chất này:
Trang 151.1.5 Hàm Euler, định lý Euler và định lý Fermat
Định nghĩa 1.2: Cho n là số nguyên dương, đặt f(n) là số các phần tử của tập hợp các số nguyên trong khoảng [ ]1 ,n mà nguyên tố cùng nhau với n, thì f(n) gọi là hàm Euler
Ta công nhận một số tính chất quan trọng của hàm Euler:
p p p
2 1
= , ở đây p1, p2, …, p klà số nguyên tố, thì:
÷÷ø
ö ççè
æ -
÷÷ø
ö ççè
æ -
÷÷ø
ö ççè
æ
-=
k p p
p n
n) 1 1 1 1 1 1
(
2 1
f
Trang 16Bảng 1.1 trình bày 30 giá trị đầu tiên của f(n) Giá trị f (1) là không xác định, nhƣng coi rằng nó bằng 1
Một số giá trị của hàm Euler f(n)
Trang 17Định lý 1.1 (Định lý Euler): Cho n> 1, gcd( , ) 1a n = , và f(n)là hàm Euler Khi đó ta có: af(n) º1modn
Chứng minh: Giả sử x1, ,xf(n)là các số tự nhiên khác nhau, nhỏ hơn
n và nguyên tố cùng nhau với n
Hãy xét tất cả các khả năng của tích x i a, với iÎ1,f(n) Bởi vì a nguyên tố cùng nhau với n và x i nguyên tố cùng nhau với n, nên tích x i a cũng nguyên tố cùng nhau với n, do đó có x i aºx j modn
Chú ý rằng các phần dư của phép chia x i a cho n là khác nhau Nếu điều này không đúng, có ngh a là tồn tại i1 ¹i2, sao cho:
Định lý 1.2: (Định lý Fermat): Cho p là số nguyên tố, a là số nguyên
dương không chia hết cho p Khi đó ta có: a p-1º 1 modp
Chứng minh: Ta có f (p)= p- 1, áp dụng định lý Euler ta có điều phải chứng minh
Hệ quả 1.2: Cho aÎZ, p là số nguyên tố, thì ta có: a pºamodp
Trang 181 + 3 + 5 + 7 + 9 + 10 º 6 mod11 = - 5 mod11
1.1.6 T huật toán Euclide mở rộng
Định nghĩa 1.3 (phần tử nghịch đảo): Cho aÎZ n Phần tử nghịch đảo của a là phần tử bÎZ n sao cho a´ º ´ ºb b a 1 modn Kí hiệu phần tử nghịch đảo của a là a-1 modn
Định lý 1.3: Cho số nguyên a > 0 nguyên tố cùng nhau với n, thì luôn
tồn tại phần tử nghịch đảo của a theo modulo n
Chứng minh: Xét tập hợpS={1, 2, ,n- 1} (n³ 2) Nhân từng phần tử của tập hợp S với a theo modulo n, nhận đƣợc tập hợp:
' mod , 2 mod , , ( 1) mod )
Nhận thấy tập S' bao gồm các số 1, 2, 3, ,(n- 1) (vì khi chia cho n thì số
dƣ trong phép chia nhở hơn n), khi đó sẽ tồn tại một số bÎS sao cho
(b a´ ) modn= 1
Ta đi chứng minh b là duy nhất Thật vậy:
Giả sử ta tìm đƣợc hai số b b; ' ÎS, sao cho:
Trang 19(b a xỄ Ễ ) modn+ Ễ Ễ (b n y) modn=bmodn
Suy ra: x=bmodn (1)
Nhón cả hai vế a xỄ + Ễ =n y 1 với bđ rồi lấy modulo n ta đƣợc:
(bđ Ễ Ễa x) modn+ (bđ Ễ Ễn y) modn=bđ modn
Suy ra: x=bđ modn (2)
Từ (1) vỏ (2) ta cụ: bmodn=bđ modn, mặt khõc b b; đẽS nởn suy ra b=bđ (nhƣ vậy tợnh duy nhất đƣợc chứng minh)
Hệ quả 1.3: Nếu nhƣ p lỏ số nguyởn tố, thớ bất kỳ số a, 0 < a < p, luừn
tồn tại phần tử nghịch đảo theo modulo p
T huật toõn Euclide mở rộng (tớm phần tử nghịch đảo)
Ta chia a cho b theo thuật toõn Euclide nhƣ sau:
Nếu nhƣ gcd( , ) 1a b = , tức lỏ a x b yỄ + Ễ = 1, theo định lý trởn thớ khi đụ y
lỏ phần tử nghịch đảo của b theo modulo a hay 1
Trang 20Định nghĩa 1.4 (Căn nguyên thủy): s được gọi là căn nguyên thuỷ
của n, nếu s nguyên tố cùng nhau với n và nhóm cyclic sinh bởi s trong
modulo n trùng với tập số nguyên dương nhỏ hơn n:
{s mod ,n s2 mod , ,n sj( )n modn}={1, 2, , (n- 1)}
Nói cách khác, một căn nguyên thủy s modulo n là một số nguyên a mà mọi số nguyên không có ước chung với n ngoài các lũy thừa của s (modulo n)
Ví dụ1.4: Cho n = 10, khi đó nhóm với phép nhân modulo n gồm các số
nguyên mà nguyên tố cùng nhau với n là * { * }
Trang 219 mod10 1; 9 mod10 = = 9; 9 mod10 1; 9 mod10 = = 9
(khi tăng chỉ số mũ của 9 mod10k thì ta được kết quả là các phần tử chỉ thuộc các lớp đồng dư của 1 và 9, không phải là phần tử của lớp đồng dư 3 và 7) Bảng 1.3 chỉ ra các căn nguyên thủy nhỏ nhất của một số giá trị modulo n Bảng 1.3
N 2 3 4 5 6 7 8 9 10 11 12 13 14
Căn nguyên thủy nhỏ nhất 1 2 3 2 5 3 x 2 3 2 x 2 3
Logarit rời rạc
Bài toán logarit trên trường số thực
Cho hai số dương x, y và cơ số a> 0; a¹ 1 thỏa mãn đẳng thức x
Trang 22Bài toán logarit trên trường hữu hạn
Cho p là một số nguyên tố và s là một căn nguyên thủy trên trường *
* Thuật toán “Duyệt toàn bộ”
Ta đi duyệt các số y từ 1 đến (p-1), cho đến khi tìm được y thỏa mãn
log x(mod )s
y= p Tất nhiên thuật toán này không hiệu quả khi p là số nguyên
tố rất lớn
Ví dụ 1.5: Chọn p=11, dễ thấy s=2 là một căn nguyên thủy theo modulo 11
Xét bài toán thuận sau: Cho s = 2, p = 11 Tính x= 2 mod11y
Trang 23i) Vì s=2 là căn nguyên thủy nên kết quả của x= 2 mod11y đi qua hết các phần tử của lớp đồng dư Z11
ii) Từ kết quả của x ta nhận thấy: 2 6 12 1mod11 ´ = º ; 4 3 12 1mod11 ´ = º ;
8 7 ´ = 56 1mod11 º ; 5 9 ´ = 45 1mod11 º , suy ra các phần tử nguyên thủy của modulo 11 là: { } {s = 2;3; 4;5;6;7;8;9}, tương ứng có 4 cặp nghịch đảo
Xét bài toán nghịch sau: Cho s=2, p=11 Tính y= log 8(mod11) 2
Kết luận: Vậy y= log 8(mod11) 2 = 3
1.3 Mã hóa công khai RSA
1.3.1 Mô tả sơ lược
Thuật toán RSA có hai khóa: khóa công khai (hay khóa công cộng)
và khóa bí mật (hay khóa cá nhân) Mỗi khóa là những số cố định sử dụng trong quá trình mã hóa và giải mã Khóa công khai được công bố rộng rãi cho mọi người và được dùng để mã hóa Những thông tin được mã hóa bằng khóa
công khai chỉ có thể được giải mã bằng khóa bí mật tương ứng Nói cách
khác, mọi người đều có thể mã hóa nhưng chỉ có người biết khóa cá nhân (bí mật) mới có thể giải mã được
Ta có thể mô phỏng trực quan một hệ mật mã khoá công khai như sau: Bob muốn gửi cho Alice một thông tin mật mà Bob muốn duy nhất Alice có thể đọc được Để làm được điều này, Alice gửi cho Bob một chiếc hộp có
khóa đã mở sẵn và giữ lại chìa khóa Bob nhận chiếc hộp, cho vào đó một tờ giấy viết thư bình thường và khóa lại (như loại khoá thông thường chỉ cần sập
Trang 24chốt lại, sau khi sập chốt khóa ngay cả Bob cũng không thể mở lại được;
không đọc lại hay sửa thông tin trong thư được nữa) Sau đó Bob gửi chiếc hộp lại cho Alice Alice mở hộp với chìa khóa của mình và đọc thông tin trong thư Trong ví dụ này, chiếc hộp với khóa mở đóng vai trò khóa công khai, chiếc chìa khóa chính là khóa bí mật
Giả sử Alice và Bob cần trao đổi thông tin bí mật thông qua một kênh
không an toàn (ví dụ như Internet) Với thuật toán RSA, Alice đầu tiên cần tạo ra cho mình cặp khóa gồm khóa công khai và khóa bí mật theo các bước:
B ước 1: Chọn 2 số nguyên tố lớn p và q, lựa chọn ngẫu nhiên và độc lập
B ước 2: Tính N = p.q
B ước 3: Tính giá trị hàm số Ơle: f ( )N = (p- 1).(q- 1)
Bước 4: Chọn số tự nhiên e sao cho 1 < <e f ( )N và gcd( , ( )) 1ef N =
Bước 5: Tính d sao cho d e º 1mod ( ) f N hay d=e- 1 mod ( ) f N
Khi đó khóa công khai là: { }e N, và mod (số e còn gọi là số mũ công khai) và khóa bí mật là: {d p q, , } (số d còn gọi là số mũ bí mật, hay số mũ giải mã).Sau khi Alice tạo khóa công khai và khóa bí mật thì Alice gửi khóa công khai cho Bob, và giữ bí mật khóa cá nhân của mình Ở đây, p và q giữ vai trò rất quan trọng Chúng là các phân tố của n và cho phép tính d khi biết e Nếu không sử dụng dạng sau của khóa bí mật thì p và q sẽ được xóa ngay sau khi
thực hiện xong quá trình tạo khóa
Có thể mô phỏng quá trình RSA qua sơ đồ sau:
Trang 25Hình 1.1 Sơ đồ mã hóa công khai RSA 1.3.2 Mã hóa
Sau khi Alice gửi khóa công khai cho mọi người, giả sử Bob muốn gửi đoạn thông tin M cho Alice thì Bob mã hóa thông tin M qua các bước sau:
Bước 6: Đầu tiên Bob chuyển M thành một số m<N theo một hàm có thể đảo ngược (từ m có thể xác định lại M) được thỏa thuận trước
Bước 7: Tính c là bản mã của m theo công thức c=m emodN
Tính được giá trị c thì Bod gửi c cho Alice
1.3.3 Giải mã
Bước 8: Alice nhận giá trị c từ Bob và biết khóa bảo mật {d p q, , } Alice có thể tìm được m từ c theo công thức sau: m=c dmodN
Biết m, Alice tìm lại M theo phương pháp đã thỏa thuận trước
Quá trình giải mã hoạt động vì ta có: c d º (m e d) ºm ed(modN)
Do ed º 1mod(p- 1) và ed º 1mod(q- 1), (theo định lí Fermat) nên:
Trang 26Ví dụ 1.6: Tạo khóa công khai cho người sử dụng A, sau đó người sử dụng B
dùng khóa công khai của A mã hóa thông điệp M gửi cho A và cuối cùng A
sử dụng khóa riêng của mình để giải mã thông điệp M thông qua thuật toán
mã hóa công khai RSA
Tạo cặp khóa gồm khóa công khai và khóa bí mật theo các bước sau: Bước 1: Chọn 2 số nguyên tố p = 67 và q = 47
Bước 2: Tính N = p.q = 67 x 47 = 3149
Bước 3: Tính giá trị hàm số Ơle: f ( )N = (p- 1).(q- = ´ 1) 66 46 = 3036
Bước 4: Chọn số tự nhiên e = 101 thỏa mãn 1 101 3036 < < và gcd(101,3036) 1 = Bước 5: Tính d thỏa mãn d=e- 1 mod ( ) 101 mod 3036 f N = - 1 = 2525 (sử dụng thuật toán Euclide mở rộng)
Khi đó khóa công khai { } {e N, = 101, 3036} và khóa bí mật
{d p q, , } {= 2525, 67, 47}
B sử dụng khóa công khai của A để mã hóa thông điệp M gửi cho A qua các bước:
Bước 6: B chuyển M thành một số m = 203 (thỏa mãn m <N) theo một hàm
có thể đảo ngược được thỏa thuận trước
Bước 7: Tính bản mã 101
mod 203 mod3149 3078
e
Khi đó B gửi giá trị c = 3078 cho A
Bước 8: người sử dụng A dùng khóa riêng của mình để giải mã như sau:
2525
mod 3078 mod3149 203
d
Biết m = 203, A tìm lại M theo phương pháp đã thỏa thuận trước
1.3.4 Sinh khóa RSA
Người sử dụng RSA cần phải xác định ngẫu nhiên hai số nguyên tố rất lớn, thông thường khoảng 512 bit Do đó việc sinh ra ngẫu nhiên p, q và kiểm tra xác suất tính nguyên tố của chúng có nhiều giải pháp khác nhau với độ tin
Trang 27cậy cao Sau khi chọn được một khóa e hoặc d nguyên tố cùng nhau với
Không giống như các thuật toán RSA, trong mã hóa Elgamal có một số thông số nào đó có thể được chia sẻ bởi một số người sử dụng Chúng được gọi là các thông số tên miền Khi đó thuật toán mã hóa Elgmal tiến hành qua
các bước sau:
Bước 1: Chọn p một “nguyên tố lớn” sao cho bài toán Logarit rời rạc trong
p
F là khó giải, qua đó chúng ta có ngh a là một với khoảng 1024 bits, như vậy
là (p – 1) chia hết cho một số nguyên tố vừa q khoảng 160 bit Chọn g một phần tử của *
p
F của số nguyên tố q, ví dụ: 1(mod ) 1
p q
Bước 2: Các khóa riêng được chọn là một số nguyên x, trong khi khóa công
khai được cho bởi: h=g x(mod )p
Chú ý rằng trong khi mỗi người dùng trong RSA cần thiết để tạo ra hai
số nguyên tố lớn để thiết lập cặp khóa của họ (đó là một công việc tốn kém),
để mã hóa Elgamal mỗi người dùng chỉ cần tạo ra một số ngẫu nhiên và thực hiện một lũy thừa mô–đun để tạo một cặp khóa
Bước 3: Mã hóa một thông điệp *
p
mÎF , chúng ta tính các đại lượng:
+) Tạo ra một cách ngẫu nhiên khóa k
Trang 28Bước 2: Tạo khóa công khai và khóa riêng:
Với cặp khóa riêng chúng ta chọn: x= 70; h=g x(mod )p = 5 (mod1609) 125 70 =
70 1
Trang 29Tóm tắt chương 1
Trong chương 1, luận văn đã trình bày các kiến thức cơ sở về số học
modulo, giới thiệu các định lý Euler, định lý Fermat, định lí phần dư Trung Hoa để dùng trong việc tính toán trong các giao thức chia sẻ thông tin bí mật Ngoài ra luận văn trình bày khá niệm, các bước trong mã công khai RSA, Elgamal, cùng với đó là các ví dụ minh họa cho các khái niệm, các kết quả nêu trên
Trong chương tiếp theo, luận văn sẽ tiếp tục trình bày về chữ ký điện
tử RSA, schnorr, các đặc trưng của cam kết, một số cam kết dựa trên mã đồng cấu, chứng minh không tiết lộ thông tin
Trang 30tử Schnorr Từng phần đều có những ví dụ chi tiết cụ thể để ứng dụng vào sơ
đồ cam kết, chứng minh không tiết lộ thông tin Tiếp đó luận văn đề cập đến vấn đề an toàn thông tin, Cam kết là thông tin một bên (người chứng minh) gửi cho bên kia như một đảm bảo về một điều nào đó: có thể là một thông tin mật ở thời điểm bắt đầu giao thức, sau đó các bên đều biết hoặc có thể là một thông tin mật mà sẽ không cho bên kia biết (gọi là người kiểm chứng), trong
đó cam kết là một phần để chứng minh về điều đó Giao thức chứng minh như vậy gọi là chứng minh không tiết lộ thông tin [4, 5, 6]
2.1 Hàm băm
2.1.1 Đi h nghĩa hàm băm
Hàm băm là thuâ toán không dùng khóa để mã hóa (dùng thuật ngữ
“băm” thay cho “mã hóa”), nó có nhiệm vụ “lọc” (băm) tài liệu và cho kết quả là 1 giá trị “băm” có kích thước cố đi h, còn gọi là “đại diện của tài liệu”, hay “đại diện truyền thông điệp ”
Hàm băm là hàm 1 chiều, theo ngh a giá tri của hàm băm là duy nhất,
và từ giá trị “băm” này, khó có thể suy ngược lại nội dung ban đầu của tài liệu gốc
2.1.2 Đặc tính của hàm băm
Hàm băm h là hàm một chiều (one-way Hash) vớ i các đặc tính sau:
· Với tài liệu đầu vào (bản tin gốc) x, chỉ thu được giá trị băm duy nhất z = h(x)
Trang 31· Nếu dữ liệu của bản tin x bi thay đổi hay bi xóa để thành bản tin x , thì giá trị băm h (x) ¹ h (x '), cho dù chỉ thay đổi nhỏ, ví dụ chỉ thay đổi 1 bit dữ liệu của bản tin gốc x, thì giá trị băm h (x) của nó vẫn thay đổi Điều này
có ngh a là: hai thông điêp khác nhau, thì giá trị băm cũng khác nhau
· Nội dung của bản tin gốc “khó” có thể suy ra từ giá trị hàm băm của nó Ngh a là: với mô thông điêp x thì“dê” tính được x = h(x), nhưng lại khó tính ngược lại được x nếu chỉ biết giá tri băm h(x) (Kể cả khi biết hàm băm h)
2.1.3 Ứng dụng của hàm băm
Với bản tin dài x, thì chữ ký trên x cũng sẽ dài, như vậy tốn thời gian
“ký”, tốn bộ nhớ lưu trữ “chữ ký”, tốn thời gian truyền “chữ ký” qua mạng Người ta dùng hàm băm h để tạo đại diện bản tin z = h(x), nó có độ dài ngắn (ví dụ 128 bit), sau đó trên z, như vậy chữ ký trên z sẽ nhỏ hơn rất nhiều
so với chữ ký trên bản tin gốc x
- Hàm băm dùng để xác định tính toàn v n dữ liệu
- Hàm băm dùng để bảo mật một số dữ liệu đặc biệt, ví dụ bảo vệ mật khẩu, bảo vệ khóa mật mã…
2.1.4 Các loại hàm băm
Hàm băm là hàm toán học chuyển đổi một thông điệp có độ dài bất kỳ thành một dãy có độ dài cố định (tùy theo thuật toán băm) Dãy bit này được gọi là thông điệp rút gọn (message digest), hay giá tri băm (hash value), đại diện cho thông điêp ban đầu
Dễ dàng nhận thấy rằng, hàm băm h không phải là một song ánh Do
đó, với thông điêp x bất kỳ, tồn tại thông điêp x ¹x sao cho h (x) =h (x ') Trên thực tế, các thuật toán băm là hàm một chiều, do đó, rất khó có thể xây dựng lại thông điệp ban đầu từ thông điệp rút gọn
Trang 32Hàm băm giúp xác định tính toàn v n dữ liệu của thông tin, mọi thay đổi, dù là rất nhỏ, trên thông điêp cho trước, ví dụ như đổi giá trị 1 bít, đều làm thay đổi thông điệp rút gọn tương ứng Tính chất này hữu ích trong việc phát sinh, kiểm tra chữ ký điện tử, các đoạn mã chứng nhận thông điêp, phát sinh số ngẫu nhiên, tạo ra khóa cho quá trình mã hóa…
Hàm băm là nền tảng cho nhiều ứng dụng mã hóa Có nhiều thuật toán
để thực hiện hàm băm, trong số đó SHA-1 và MD-5 dùng phổ biến nhất
Thuật toán chữ ký điện tử nhằm giúp người nhận kiểm tra chữ ký trên
một văn bản (mẩu tin) nào đó có phải của người gửi hay không? Thuật toán cung cấp những khả năng sau:
+) Kiểm tra ngày, giờ ký của người gửi +) Xác nhận nội dung văn bản (mẩu tin) +) Được xác nhận bởi bên thứ ba để chống từ chối
2.2.2 Thu ật toán DSA
* Tạo khóa DSA
Quá trình tạo khóa DSA diễn ra theo các bước sau:
Bước 1: Chọn số nguyên tố p và q, trong đó q là ước của (p – 1)
Bước 2: Chọn
1
p q
Trang 33Khi đó khóa công khai là (p, q, g, y) và khóa riêng là x
* T ạo chữ ký DSA
Bước 4: Để tạo ra chữ ký DSA trên một văn bản M, người gửi phải sinh khóa chữ ký ngẫu nhiên k, thỏa mãn 0 < k < q (giá trị k được xóa sau khi dùng và không bao giờ dùng lại)
* T ính đúng đắn của thuật toán DSA
Thuật toán chữ ký số DSA là đúng đắn có ý ngh a khi người xác nhận luôn chấp nhận các chữ ký thật Điều này có thể được chỉ ra như sau:
Từ
1
mod
p q
Trang 34Ví dụ 2.1: Xây dựng một ví dụ về thuật toán chữ ký điện tử DSA nhằm giúp
người nhận kiểm tra chữ ký trên một văn bản hay mẩu tin nào đó có phải của
người gửi hay không
* T ạo khóa DSA:
Bước 1: Chọn số nguyên tố p = 43 và q = 7 (thỏa mãn q là ước của p-1)
Bước 2: Chọn h = 11, khi đó 1 6
mod 11 mod 43 4 1
p q
Bước 3: Chọn x = 5 < 7, khi đó y=g xmodp= 4 mod 43 35 5 =
Khi đó: Khóa riêng là: x = 5
Khóa công khai là: (p, q, g, y) = (43, 7, 4, 35)
Bước 6: Gửi cặp chữ ký điện tử là: ( , )r s = (4,5) cùng với văn bản M
* K iểm chứng chữ ký điện tử DSA
Trang 35· Khóa riêng là số nguyên x trong khoảng 0 < x < q
· Khóa công khai là phần tử y = gx
Để ký thông điệp m sử dụng thuật toán ký Schnorr, ta làm như sau:
1 Chọn số ngẫu nhiên k trong khoảng 0 < k < q
2 Tính sô liên kết công khai: r = gk
3 Tính e = h(m||r) Lưu ý hàm băm phụ thuộc cả thông điệp và cả số liên kết công khai r
4 Tính s = (k + x.e) mod q
Chữ ký được cho bởi cặp (e, s)
Bước kiểm tra chữ ký được thực hiện trước hết qua tính toán sau:
r = gs y-e Sau đó chữ ký được chấp nhận nếu e = h(m||r)
Ví dụ 2.2: Ta chọn bộ tham số cho chữ ký Schnorr như sau: