TRƯỜNG ĐẠI HỌC SƯ PHẠM HÀ NỘI 2 NGUYỄN THU THỦY NGHIÊN CỨU MỘT SỐ LƯỢC ĐỒ CHIA SẺ THÔNG TIN MẬT VÀ ỨNG DỤNG LUẬN VĂN THẠC SĨ TOÁN HỌC HÀ NỘI, 2016... BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI
Trang 1TRƯỜNG ĐẠI HỌC SƯ PHẠM HÀ NỘI 2
NGUYỄN THU THỦY
NGHIÊN CỨU MỘT SỐ LƯỢC ĐỒ CHIA SẺ
THÔNG TIN MẬT VÀ ỨNG DỤNG
LUẬN VĂN THẠC SĨ TOÁN HỌC
HÀ NỘI, 2016
Trang 2BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM HÀ NỘI 2
NGUYỄN THU THỦY
NGHIÊN CỨU MỘT SỐ LƯỢC ĐỒ CHIA SẺ
THÔNG TIN MẬT VÀ ỨNG DỤNG
Chuyên ngành: Toán ứng dụng
Mã số: 60 46 01 02
LUẬ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, 2016
Trang 3LỜI CẢM ƠN
Đầu tiên, tôi xin gửi lời cảm ơn chân thành sâu sắc đến các thầy cô giáo trong trường Đại học Sư Phạm Hà Nội 2 nói chung và các thầy cô trong phòng sau đại học nói riêng đã tận tình dạy bảo, truyền đạt lại những kiến thức và kinh nghiệm quý báu trong suốt thời gian qua
Tôi xin trân trọng gửi lời cảm ơn tới thầy giáo TS Trần Văn Dũng, ngườ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 Trong quá trình làm việc với thầy, tôi đã tiếp thu thêm được nhiều kiến thức bổ ích, những kinh nghiệm trong việc bảo mật thông tin, kinh nghiệm trong việc thực hiện luận văn cùng thái độ làm việc nghiêm túc, hiệu quả Đây là những kinh nghiệm cần thiết, quý báu giúp tôi
áp dụng vào thực tiễn sau này khi làm việc
Sau cùng, cho phép tôi cảm ơn các bạn bè, gia đình đã giúp đỡ, ủng hộ tôi rất nhiều trong toàn bộ quá trình học tập cũng như nghiên cứu hoàn thành luận văn này
Trang 4LỜI CAM ĐOAN
Tôi xin cam đoan:
Những 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 Trong quá trình làm luận văn tôi có tham khảo các tài liệu có liên quan và đã ghi rõ nguồn tài liệu tham khảo đó 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
TÁC GIẢ LUẬN VĂN
Nguyễn Thu Thủy
Trang 5MỤC LỤC
MỞ ĐẦU 1
1 Lý do chọn đề tài 1
2 Mục đích nghiên cứu 1
3 Nhiệm vụ nghiên cứu 1
Đối tượng và phạm vi nghiên cứu 2
4 Phương pháp nghiên cứu 2
CHƯƠNG 1 KIẾN THỨC CƠ SỞ HỆ MẬT MÃ KHOÁ CÔNG KHAI 3
1.1 Một số định nghĩa cơ bản 3
1.2 Số học modulo 6
1.3 Nếu a là căn nguyên thủy của trường Z thì bài toán Logarit rời p rạc luôn có nghiệm 13
1.4 Hệ mã khoá công khai 18
1.4.1 Mã khoá công khai RSA 18
1.4.2.Chữ ký điện tử DSA 26
CHƯƠNG 2 LƯỢC ĐỒ CHIA SẺ THÔNG TIN MẬT 31
2.1 Khái niệm chia sẻ bí mật 31
2.2 Mã Reed - solomon 35
2.2.1 Khôi phục dữ liệu 37
2.2.2 Phát hiện lỗi 39
2.2.3 Sửa lỗi 40
2.3 Thuật toán Berlekamp – Welch 42
2.4 Lược đồ chia sẻ bí mật Shamir 45
2.4.1 Chia sẻ khoá K thành các mảnh 47
2.4.2 Khôi phục bí mật từ các mảnh 48
Trang 6CHƯƠNG 3 ỨNG DỤNG SINH CHỮ KÝ RSA CHIA SẺ 51
3.1 Chia sẻ Shamir cho khoá riêng RSA 51
3.2 Chia sẻ chữ ký điện tử RSA 54
3.3 Chia sẻ chữ ký điện tử 56
3.3.1 Đặt vấn đề 56
3.3.2 Mô hình hệ thống và yêu cầu bảo mật 60
3.4 Lược đồ sinh chữ ký RSA chia sẻ 61
3.5 Giao thức shoup 65
KẾT LUẬN 69
TÀI LIỆU THAM KHẢO 70
Trang 7MỞ ĐẦU
1 Lý do chọn đề tài
Ngày nay máy tính ngày càng thể hiện rõ vai trò thiết yếu trong mọi lĩnh vực của xã hội Nó đã trở thành phương tiện điều hành các hệ thống giúp cho mọi công việc rút ngắn khoảng cách về không gian và thời gian Chữ ký số ra đời giúp cho doanh nghiệp tiết kiệm rất nhiều thời gian, công sức trong một
số công việc giao dịch với ngân hàng, cơ quan hành chính Hoạt động giao dịch điện tử cũng được đẩy mạnh
Với mạng máy tính ngày càng phổ biến trên toàn cầu người ta đã dùng mạng Internet một cách thông dụng Nhiều dịch vụ điện tử như: thư điện tử, chuyển tiền, thương mại điện tử, chính phủ điện tử… đã được áp dụng rộng rãi Do đó yêu cầu về an toàn mạng và an ninh dữ liệu càng trở lên cấp bách
và cần thiết Ý tưởng chia sẻ bí mật đã ra đời dựa trên nguyên tắc chia sẻ thông tin mật ra thành các mảnh nhỏ và trao cho mỗi người một mảnh sao cho mỗi người với số mảnh đó không tìm ra được thông tin mật
Được sự gợi ý của giáo viên hướng dẫn và nhận thấy tính thiết thực của
vấn đề em đã chọn đề tài “Lược đồ chia sẻ thông tin mật và ứng dụng sinh
chữ ký RSA chia sẻ” để làm nội dung cho luận văn
2 Mục đích nghiên cứu
Làm thế nào để chia sẻ được thông tin mật
Ứng dụng vào bài toán thực tế
3 Nhiệm vụ nghiên cứu
Nghiên cứu lược đồ chia sẻ thông tin mật
Ứng dụng sinh chữ ký RSA chia sẻ
Trang 8Đối tượng và phạm vi nghiên cứu
4.1 Đối tượng nghiên cứu
Nghiên cứu về chia sẻ thông tin mật và ứng dụng
4.2 Phạm vi nghiên cứu
Nghiên cứu trên cơ sở toán học và trường số modulo
4 Phương pháp nghiên cứu
Nghiên cứu lý thuyết
Nghiên cứu thực nghiệm trên thực tiễn cuộc sống
NỘI DUNG
Ngoài phần mở đầu, kết luận và tài liệu tham khảo Luận văn được chia làm 3 chương:
Chương 1: Kiến thức cơ sở hệ mật mã khóa công khai
Chương 2: Lược đồ chia sẻ thông tin mật
Chương 3: Ứng dụng sinh chữ ký RSA chia sẻ
Trang 9CHƯƠNG 1 KIẾN THỨC CƠ SỞ HỆ MẬT MÃ KHOÁ CÔNG KHAI
Chương 1 trình bày các kiến thức toán học nền tảng làm cơ sở áp dụng vào lược đồ chia sẻ thông tin mật và ứng dụng sinh chữ kí RSA chia sẻ
Nội dung trong chương 1đề cập đến một số định nghĩa cơ bản trong toán học như nhóm, vành, trường, số học modulo,… và một số định lí quan trọng
để tính toán áp dụng vào việc chia sẻ thông tin mật như: định lí Euler, định lí Fecma, định lí phần dư trung hoa Ngoài ra trong chương 1 này bước đầu đã
đề cập đến hệ mã khóa công khai cụ thể là mã khóa công khai RSA Bên cạnh
đó có những ví dụ cụ thể, thực tế đi kèm để minh họa làm cho người đọc dễ hiểu và thấy được tác dụng thực tiễn của nó mang lại
1.1 Một số định nghĩa cơ bản
Nhóm hữu hạn
Nhóm G là một tập hợp các phần tử, trên đó có một phép toán hai ngôi
ký hiệu là dấu chấm “.”, thỏa mãn các tính chất sau:
Phép toán “.” có tính kết hợp: với mọi a, b, c thuộc G: a.(b.c) = (a.b).c
Có phần tử e thuộc G sao cho với mọi a thuộc G: a.e = e.a = a, phần tử
e được gọi là phần tử đơn vị của G
Có phần tử nghịch đảo: với mọi a thuộc G, luôn tồn tại duy nhất b sao cho:
a.b = b.a = e, b được gọi là nghịch đảo của a và ký hiệu a1 b
Nhóm hữu hạn là một nhóm mà số phần tử của nó là hữu hạn Số phần tử của một nhóm hữu hạn còn gọi là cấp của nhóm đó Trong lý thuyết nhóm, thuật ngữ cấp có hai ý nghĩa:
Cấp của một nhóm G chính là số phần tử của G và ký hiệu là ord (G)
Trang 10Cấp của phần tử a trong nhóm G là số nguyên dương m nhỏ nhất thỏa
Trang 111) X cùng với phép cộng là một nhóm aben
2) X cùng với phép nhân là một nửa nhóm
3) Phép nhân phân phối đối với phép cộng: với các phần tử tùy ý
và thường ký hiệu là e hay 1 (nếu không có sự nhầm lẫn)
Ví dụ 1.2: Tập hợp Z các số nguyên cùng với phép cộng và phép nhân thông
thường là một vành giao hoán có đơn vị gọi là vành các số nguyên Ta cũng
có vành các số hữu tỉ, các số thực, các số phức (các phép toán vẫn là phép cộng và phép nhân thông thường)
Định nghĩa trường:
Ta nói một vành X giao hoán, có đơn vị, có nhiều hơn một phần tử là
một trường nếu và chỉ nếu X- {0} là một nhóm đối với phép nhân của X
Ví dụ 1.3: Tập hợp Q các số hữu tỉ cùng với phép cộng và phép nhân các số
là một trường Ta cũng có trường số thực R và trường số phức C
Định nghĩa trường con
Giả sử X là một trường, A là một bộ phận của X đóng đối với hai phép toán trong X A là một trường con của trường X nếu A cùng với hai phép toán cảm sinh trên A là một trường
Định nghĩa trường hữu hạn
hoặc GF(p) với p là số phần tử thuộc trường
Trang 121.2 Số học modulo
Cho n là số nguyên dương Giả sử a, b là các số nguyên: ta ký hiệu là (mod )
a và b đồng dư với nhau theo modulo n Nếu trong đó a là số nguyên dương nhỏ hơn n, thì a được gọi là phần dư của b khi chia cho n, đôi khi a được gọi
là thặng dư của b theo modun n
Tập hợp các số nguyên từ 0 đến n – 1 được gọi là tập hợp thặng dư hoàn toàn modulo n Điều này có nghĩa là với mỗi số nguyên a, thặng dư modulo n
là một số dư từ 0 đến n – 1
Modulo số học cũng như số học bình thường, bao gồm các phép toán cộng, nhân có tính giao hoán, kết hợp và phân phối Mặt khác, giảm mỗi giá trị trung gian trong suốt quá trình tính toán
Trang 13Số nghịch đảo modulo
Định nghĩa phần tử nghịch đảo
Phần tử a của Z được gọi là khả nghịch trong n Z hay khả nghịch theo n
modulo m nếu tồn tại phần tử a trong ' Z sao cho n a a ' 1 trong Z hay n
'
1(mod )
a được gọi là nghịch đảo của modulo m của a
Ví dụ 1.5 : Nghịch đảo của 5 modulo 14 là 3 vì:
Tính chất:
Cho ,a bZ n Phép chia a cho b theo modulo n là tích của a và b1
theo modulo n, và chỉ được xác định khi b có nghịch đảo theo modulo n
Cho aZ n, a là khả nghịch khi và chỉ khi gcd (a,n) = 1
nếu và chỉ nếu d chia hết cho b, trong trường hợp các nghiệm d nằm trong
d
Định lý 1: Cho số nguyên a0 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ợp {1, 2, 3… n-1} Nhân từng phần tử của tập hợp với a theo modulo
n, nhận được tập hợp {(a mod n), (2a mod n), (3a mod n),…((n-1)a mod n)} tập này sẽ gồm các số: 1, 2, 3, …, n-1 có nghĩa đối với một số giá trị i nào đó
sẽ thỏa mãn điều kiện iamodn1.
Điều này dẫn đến mâu thuẫn nếu như tồn tại 2 giá trị h và k thỏa mãn điều kiện trên nghĩa là: hamodnkamodn
Điều này dẫn đến hkmodn.
Trang 14Vì gcd (a,n) = 1 suy ra h = k Vậy ta tìm được i là phần tử nghịch đảo của a và i là duy nhất
Hệ quả: Nếu như p là số nguyên tố, thì bất kỳ số a sao cho 0 < a < p luôn tồn
tại phần tử nghịch đảo theo modulo p
Số nghịch đảo theo modulo n
Nếu USCLN (a, n) = 1 thì luôn tồn tại b (b <n) sao cho:
1
mod
Ta gọi b là số nghịch đảo của a theo modulo n
Ví dụ 1.6: 5.2 1(mod9) hay 25 mod91
Định lý này có thể được sử dụng để dễ dàng giản ước với mô đun n rất lớn
Trang 15Định lý phần dư trung hoa được phát biểu như sau:
Cho n2, m m1, 2, m là những số nguyên dương khác 0, đôi một n
nguyên tố cùng nhau và a a1, 2, a n là n số nguyên bất kỳ Khi đó hệ phương
trình đồng dư xa i(modm n) có nghiệm và nghiệm này duy nhất theo modulo M m m1 2 m n
Trang 16Bổ đề Berzout: cho hai số nguyên m và n sao cho gcd( , ) 1m n khi đó luôn tồn tại x và y sao cho mxny1
Hệ quả: Với mọi d nguyên luôn tồn tại u và v sao cho d munv
Bây giờ quay lại bài toán chúng ta đi chứng minh sự tồn tại nghiệm và tính duy nhất nghiệm
Theo lý thuyết đồng dư tồn tại u và v sao cho:
x a m u xa m v
Do vậy ta chỉ cần chọn u, v thỏa mãn: a1 a2 m v2 m u1 điều này hiển nhiên theo bổ đề Berzout ở trên
Như vậy tồn tại x thỏa mãn hệ phương trình đồng dư trên
Bây giờ ta sẽ chứng minh tính duy nhất của nghiệm
Thật vậy, giả sử x x là 2 nghiệm của hệ phương trình đã cho ta có: , '
'
xx m
Do m đôi một nguyên tố cùng nhau lên ta phải có i xx'(modm1 m n)
Ta khẳng định được tính duy nhất của nghiệm theo mod m1 m n
Ví dụ 1.10: Giải hệ phương trình đồng dư:
2(mod 3)3(mod 5)5(mod 7)
x x x
Trang 17Như vậy x có dạng: x68 105 k (k là một số nguyên bất kỳ)
Sơ đồ chia sẻ bí mật trên cơ sở định lý phần dƣ Trung Hoa
Chúng ta lựa chọn một số tập hợp gồm các cặp số nguyên tố cùng nhau
m m1, 2, ,m n có kích thước đủ lớn Giá trị n tương ứng với số lượng thành viên mà nhà phân phối muốn chia sẻ bí mật Chúng ta tính tích của k số nhỏ nhất từ tập trên Giả sử tích này bằng N Chúng ta tính tiếp tích k-1 số lớn nhất từ tập trên Giả sử tích này bằng M Số k gọi là ngưỡng của sơ đồ trên cơ
sở tập hợp m m1, 2, ,m , nếu như M n N Chúng ta chọn số bí mật S thỏa
mãn điều kiện M S N Bí mật được chia cho các thành viên dưới dạng một cặp số r m , ở đây r i, i i là phần dư của phép chia S cho m i
Nếu như tkthành viên có mảnh bí mật r m liên kết với nhau để i, i
khôi phục bí mật S, bằng cách giải hệ phương trình đồng dư:
modmod
Sử dụng định lý Trung hoa để giải hệ trên và tìm ra nghiệm x0
Chúng ta dễ dàng chứng minh x0=S Rõ ràng theo cách xây dựng sơ đồ phân chia S thỏa mãn hệ đồng dư thức đã cho, với điều kiện m m1 2 m t N S
Áp dụng định lý Trung hoa thì hệ trên có nghiệm duy nhất, nghiệm này nhỏ hơn tích Modulo m m1 2 m và thỏa mãn hệ, có nghĩa là x t 0=S
Trang 18Bây giờ chúng ta chứng minh rằng với t' k thành viên giữ phần bí mật,
họ không thể khôi phục được khóa mật S nhờ giải hệ phương trình đồng dư sau:
modmod
Giả sử x là số không âm nhỏ nhất thỏa mãn hệ trên: 0' 0x0' m m1 2 m t'
'
Q là số tự nhiên nào đó, nhưng tương ứng với sự chọn tập hợp m m1, 2, ,m n
thì số Q là rất lớn, và trên thực tế là khó có thể xác định được, thực sự như
vậy, chúng ta có bất đẳng thức sau x0' M S N, có nghĩa là chúng ta có:
Nếu như lựa chọn tập hợp m m1, 2, ,m để thương n N
dạng nhị phân từ 129 đến 130 bít thì trên thực tế khó xác định được số Q
Trang 19Ví dụ 1.11:
là k=3 D chọn tập hợp m m1, 2, ,m5 97,98,99,101,103
Tính M m m4 5 10403, N m m m1 2 3 941094 Chọn S 571875 D tính ra 5 cặp mảnh bí mật (ri, mi) để phân chia cho 5 thành viên liên quan, với tập r r1, , ,2 r5 60, 45,51,13,19 Bây giờ P1,P4 và P5 muốn kết hợp lại với nhau để khôi phục S Thì họ giải hệ phương trình đồng dư thức sau:
60 mod 9713mod101
19 mod103
x x x
1.3 Nếu a là căn nguyên thủy của trường Z thì bài toán Logarit rời rạc p
luôn có nghiệm
Cho G là nhóm nhân Abel, ,a b G Bài toán tìm kiếm nghiệm của
của phương trình gọi là logarit rời rạc cơ số a của b, ký hiệu là loga b, nếu như cơ số a cố định và nếu như nghiệm của phương trình tồn tại:
loga bZ G, nếu như |G| Bài toán logarit rời rạc có vai trò rất lớn trong ứng dụng của mật mã Đặc
biệt quan trọng trong trường hợp GF q( )*, với q p , p là số nguyên tố,
N
điểm của đường cong Eliptic trong trường hữu hạn
Chúng ta xem phương trình
(mod )
x
a b p
Trang 20trong nhóm Z , với p là số nguyên tố Chúng ta giả sử rằng bậc của p*
(mod )
a p bằng p-1 khi đó phương trình giải được, và nghiệm x là một phần
định nghiệm của a x b(mod )p
Với sự giúp đỡ của phương pháp chọn thì có thể giải phương trình
làm điều này c u b a v(mod )p , từ đây a Hu v b(mod )p
Bước 6 Đưa ra giá trị xHuv(modp1)
Kết thúc thuật toán
Chúng ta chứng minh sự đúng đắn của thuật toán Bất kỳ số nguyên x,
Trang 21Logarit rời rạc trong trường nguyên tố
Trong phần này chúng ta xem thuật toán giải phương trình
(mod )
x
a b p
ở đây p là số nguyên tố Chúng ta cho rằng (mod )a p có bậc là p-1
Thuật toán Adleman
Tầng 1 Hình thành cơ sở nhân tử, bao gồm tất cả các số nguyên tố q,
log log log
Tầng 3 Chọn số lượng đủ lớn biểu thức (*), giải hệ phương trình tuyến tính
thu được ứng với các ẩn loga q logarit rời rạc của phần tử của cơ sở nhân tử
Tầng 4 Bằng cách lựa chọn chúng ta tìm ra một giá trị của r, sao cho
q r
Trang 22Tầng 5 Bằng cách tính toán tương tự như tầng 2 và 3 của thuật toán, tìm ra
logarit rời rạc loga p đối với các số nguyên tố i p1, ,p ở tầng 4 k
Trang 23Từ đây chúng ta có x2(mod 2)
Từ x34(mod81) và x2(mod 2)suy ra x34(mod162)
Ví dụ 1.13 :
Xét vành số Z , với p là số nguyên tố, vậy ta có p Z = GF(p) Tất cả các p
phần tử a0 của trường tạo thành nhóm nhân: Z p a1 a n 1
Nếu cấp của a bằng p thì ta nói a là căn nguyên thủy của Z p
Xét bài toán thuận: Cho ya x
Cho p = 17, a =2 Ta tính ya xmod19 với xZ p GP p( ), dễ dàng thấy 2 là căn nguyên thủy ta có bảng giá trị:
Tính y2 mod19x
Nhận xét:
sẽ đi qua hết các phần tử trong vành Z p
Từ phần tử nguyên thủy a = 2 đã cho ban đầu ta có thể tìm được các phần tử nguyên thủy khác theo công thức:
mod
i
ba n với i, n 1Vậy tập các phần tử nguyên thủy của Z là: 19 2,13,14,15,3,10
Các phần tử nguyên thủy tạo thành các cặp nghịch đảo:
Trang 24Xét bài toán ngược: *
y x a xZ Dựa trên tính chất các hàm logarit ta có:
1
1.4 Hệ mã khoá công khai
1.4.1 Mã khoá công khai RSA
RSA là mã công khai được sáng tạo bởi Rivest, Shamir & Adleman ở MIT (Trường Đại học Công nghệ Massachusetts) vào năm 1977 RSA là mã công khai được biết đến nhiều nhất và sử dụng rộng rãi nhất hiện nay Nó dựa trên các phép toán lũy thừa trong trường hữu hạn các số nguyên theo modulo nguyên tố Cụ thể, mã hóa hay giải mã là các phép toán luỹ thừa theo modulo
số rất lớn Việc thám mã, tức là tìm khóa riêng khi biết khóa công khai, dựa trên bài toán khó là phân tích một số rất lớn đó ra thừa số nguyên tố Nếu không có thông tin gì, thì ta phải lần lượt kiểm tra tính chia hết của số đó cho
Trang 25tất cả các số nguyên tố nhỏ hơn căn của nó Đây là việc làm không khả thi
nên có thể coi lũy thừa là bài toán dễ
Cần chú ý rằng ở đây ta sử dụng các số rất lớn khoảng 1024 bit, tức là cỡ
10350 Tính an toàn dựa vào độ khó của bài toán phân tích ra thừa số các số lớn Bài toán phân tích ra thừa số yêu cầu log log log
toán khó
Mã công khai RSA gồm hai giai đoạn: khởi tạo khóa RSA và giai đoạn
mã hóa/giải mã
1.4.1.1 Các bước thực hiện mã hóa RSA
Khởi tạo khóa RSA
+) Mỗi người sử dụng A tạo một cặp khóa công khai, khóa riêng như sau:
+) Chọn ngẫu nhiên hai số nguyên tố lớn p và q khác nhau
+) Tính số N làm modulo của hệ thống: N = p.q
Ta đã biết Ф(N) = (p - 1)(q - 1)
+) Chọn ngẫu nhiên khóa mã e làm khóa công khai, sao cho: 1 < e < ФN)
và gcd(e,Ф(N)) = 1, tức là e và Ф(N) là hai số nguyên tố cùng nhau
Trang 26+) Nghịch đảo của e theo modulo Ф(N) là khóa riêng d, vậy tìm d từ phương trình:
(e.d) mod Ф(N) = 1, với 0< d < Ф(N) hay d = e-1 mod Ф(N)
Chú ý: vai trò của e và d có thể thay đổi cho nhau, tức là có thể lấy e làm khóa mật, khi đó tính d nghịch đảo của e làm khóa công khai
+) Người sử dụng A in khóa mã công khai: KU = {e,N} và thông báo cho mọi người biết
+) Người sử dụng A giữ bí mật khóa riêng: KR = {d,p,q}
1.4.1.2 Sử dụng RSA
Để mã hóa mẩu tin M, người gửi B:
Lấy khóa công khai của người nhận A: KU = {e,N}
Mã hóa thông điệp M bằng khóa công khai của người nhận A:
Trang 27Tạo bộ khóa công khai cho người sử dụng A
6 In khóa công khai của người sử dụng A: KU={7,187}
7 Giữ khóa riêng bí mật riêng của A: KR={23,17,11}
B sử dụng khóa công khai của A để mã hóa thông điệp gửi cho A:
Người sử dụng A dùng khóa riêng của mình để giải mã như sau:
M = 1123 mod 187 = 88
Trang 28 Có thể dùng định lý phần dư Trung Hoa để giải mã cho nhanh như sau:
o Tính 1123 mod 17 = (-6)23 mod 17 = (-6)16(-6)4 (-6)2 (-6) mod 17 = 3
Vì (-6)2 mod 17 = 2, nên (-6)4 mod 17 = 4, (-6)8 mod 17 = -1;
(-6)16 mod 17 = 1
o 11-1 mod 17 = (-6)-1 mod 17 = 14 nên c2 = 11.(11-1 mod 17)
= 11.(14 mod 17) = 154
Giải mã hiệu quả:
Như chúng ta thấy qua ví dụ trên, nếu biết N = p.q, thì ta có thể giải mã nhanh bằng cách sử dụng định lý phần dư Trung Hoa tính toán theo các modulo p và q Sau đó kết hợp lại để tìm ra bản rõ Vì ở đây người sử dụng sở hữu khóa riêng, nên biết được p và q, do đó có thể sử dụng kỹ thuật này Nếu
sử dụng định lý phần dư Trung Hoa để giải mã thì hiệu quả là nhanh gấp bốn
lần so với giải mã tính trực tiếp
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 cậy cao Sau khi chọn được một khóa e hoặc d nguyên tố cùng nhau với Ф(N), dễ dàng tính được khóa kia chính là số nghịch đảo của nó qua thuật toán Euclide mở rộng (Xem [8])
1.4.1.4 An toàn của RSA
Trên thực tế có nhiều cách tấn công khác nhau đối với mã công khai RSA như sau:
Trang 29Tìm kiếm khóa bằng phương pháp vét cạn, phương pháp này không khả thi với kích thước đủ lớn của các số hoặc tấn công bằng toán học dựa vào độ khó việc tính Ф(N) bằng cách phân tích N thành hai số nguyên tố p và q hoặc tìm cách tính trực tiếp Ф(N) Trong quá trình nghiên cứu việc thám mã người
ta đề xuất kiểu tấn công thời gian trong khi giải mã, tức là căn cứ vào tốc độ
mã hóa và giải mã các mẩu tin cho trước mà phán đoán các thông tin về khóa Cuối cùng có những nghiên cứu tấn công RSA với điều kiện biết trước bản
mã cho trước Cụ thể như sau:
Bài toán phân tích
nếu theo dõi thời gian máy tính cần để giải mã các bản tin
công khai khác
o Tấn công thời gian giống như kẻ cướp đoán số điện thoại bằng cách quan sát một người nào đó trong bao lâu chuyển quay điện thoại từ số này sang
số khác
Trang 30 Tấn công bản mã chọn trước
1.4.1.5 Sơ đồ chữ ký RSA
Thuật toán sinh khóa:
Mỗi người sử dụng A tạo một cặp khóa công khai – riêng như sau:
Chọn ngẫu nhiên hai số nguyên tố lớn p và q khác nhau
Tính số N làm Modulo của hệ thống: N = p.q
Ta đã biết Ф(N) = (p - 1)(q - 1)
Chọn ngẫu nhiên khóa mã e làm khóa công khai, sao cho 1 < e < ФN)
và gcd(e,Ф(N)) = 1, tức là e và Ф(N) là hai số nguyên tố cùng nhau
Nghịch đảo của e theo modulo Ф(N) là khóa riêng d, vậy tìm d từ phương trình:
Tìm khóa riêng (hoặc công khai) d của A: (e.d) mod Φ(N) = 1, 0 < d < Φ(N)
Trang 31mod n = 1427 mod 55
o Khóa riêng d = e-1 mod Φ(N) = 13-1 mod 60 = 37;
o Mã: C = Me mod n = 313 mod77 = (38343) mod77 = (42.4.3) mod77 = 38;
o Giải mã: M = Cd mod n = 3837 mod 77 = 3
o Tính Cd mod 7 = 3837 mod 7 = 337 mod 7 = 336.3 mod7 = 3;
o Tính Cd mod 11 = 3837 mod11 = 537 mod 11 = 530.57 mod11 = 3;
o Tính a1 = 11-1 mod 7 = 4-1 mod 7 = 2;
Trang 32Chữ ký điện tử của một người sử dụng trên một mẩu tin tại một thời
điểm xác định được xem như nén mẩu tin về một kích thước cố định và được xác thực Nó cung cấp các khả năng để:
Vì vậy việc tạo chữ ký điện tử bao gồm việc sử dụng một hàm băm bản tin và một hàm xác thực có một số khả năng bổ sung như nhận bản băm, thông tin mật của người ký, một số thông tin ngẫu nhiên đặc trưng cho thời điểm ký để tạo ra chữ ký điện tử đính kèm mẩu tin
Đồng thời thuật toán cũng hỗ trợ người nhận kiểm tra chữ ký điện tử kèm với mẩu tin đó
Chuẩn chữ ký điện tử DSS
Sinh khóa DSA
Chia sẻ giá trị khóa công khai tổng thể (p, q, g):
Trang 33o Số nguyên tố lớn p2L, ở đó L= 512 đến 1024 bit và là bội của 64;
o Chọn q là số nguyên tố 160 bit và là ước của p-1;
1
p q
g h
p q
Để ký mẩu tin M người gửi trước hết cần:
Sinh khóa chữ ký ngẫu nhiên k: k < p, k phải là số ngẫu nhiên, được xóa sau khi dùng và không bao giờ dùng lại;
Trang 36Tóm tắt chương 1
Trong chương 1, luận văn đã giới thiệu được các lý thuyết đại số căn bản được dùng để bổ trợ và xây dựng nên khung cơ sở lý luận cho các bài toán chia sẻ thông tin mật như lý thuyết về toán học modulo và mô hình bài toán Logarith rời rạc, các loại mã hóa, cũng như các định lý Fermat, Euler Tiếp đó, luận văn cũng đã mô tả và đi sâu vào các khái niệm về chữ ký điện
tử và sơ đồ chữ ký RSA để ứng dụng vào việc chia sẻ thông tin mật
Ngoài ra luận văn đã đi sâu vào cách tạo chữ ký, ứng dụng cũng như ưu nhược điểm của chữ ký Tìm hiểu về chữ ký ngưỡng, chữ ký RSA Cách tạo
ra chữ ký RSA, thẩm định và độ an toàn của chữ ký
Trong chương tiếp theo, luận văn sẽ tiếp tục đi sâu vào các khái niệm chia sẻ bí mật, lược đồ chia sẻ bí mật Shamir và thuật toán Berlekamp-Welch
Trang 37CHƯƠNG 2 LƯỢC ĐỒ CHIA SẺ THÔNG TIN MẬT
Trên đường truyền dữ liệu từ người này gửi cho người kia sẽ có thể xảy
ra bất kì một lỗi nào đó và nhiệm vụ của chúng ta là phát hiện ra lỗi và sửa lỗi Nội dung trong chương 2 sẽ đề cập đến vấn đề này: cách phát hiện lỗi và sửa lỗi sử dụng mã Reed – Solomon và thuật toán Berlekamp – Welch
Trên thực tế đôi khi xuất hiện bài toán chia sẻ khóa bí mật k cho n người, với điều kiện là mỗi một người trong số đó chỉ có một phần khóa mật Và t trong số n người đó có thể khôi phục được khóa mật Đó cũng chính là nội dung của chương 2: khôi phục bí mật từ các mảnh
2.1 Khái niệm chia sẻ bí mật
Sơ lược:
Lược đồ chia sẻ bí mật là một phương thức, ở đó người giao dịch phân phát các mảnh thông tin cho các bên tham gia, mà chỉ có sự hợp tác của các bên trong những nhóm có quyền hạn mới có thể tái thiết lại bí mật Lược đồ chia sẻ bí mật là công cụ quan trọng trong ngành mật mã, và được sử dụng làm nền tảng cho nhiều giao thức mật mã an toàn
Các ví dụ về chia sẻ bí mật: giao thức chung cho tính toán nhiều bên, quy
ước Byzantine, mật mã ngưỡng, điều khiển truy cập, mã hóa dựa trên đặc thù,
và chuyển giao không rõ nội dung nói chung
Lược đồ chia sẻ bí mật là một công cụ được sử dụng trong nhiều giao thức mật mã Một lược đồ chia sẻ bí mật bao gồm một người giao dịch với
một bí mật, một lượng gồm n bên tham gia, và một tập hợp A gồm các nhóm
con, gọi là cấu trúc truy cập Một lược đồ chia sẻ bí mật với cấu trúc truy cập
A là một phương thức mà trong đó, người giao dịch phân phát các mảnh thông tin cho các bên tham gia sao cho:
Trang 38(1) Bất kỳ nhóm con nào trong A đều có thể tái tạo lại bí mật từ thành viên của họ
Và
(2) Bất kỳ nhóm nào không ở trong A đều không trích xuất được một phần thông tin nào về bí mật của người giao dịch
Ban đầu được thúc đẩy bởi vấn đề bảo mật nguồn lưu trữ thông tin, lược
đồ chia sẻ bí mật đã được áp dụng nhiều trong ngành mật mã và toán học
Ví dụ 2.1: (Mã hóa dựa trên thuộc tính) Mã hóa khóa công khai là một cơ
chế mạnh mẽ để bảo vệ sự tuyệt mật của thông tin được lưu giữ và truyền đạt Ngày nay, trong nhiều ứng dụng, một nhà cung cấp muốn chia sẻ thông tin theo một số chính sách dựa trên các thông tin đặc trưng riêng của người dùng Được giới thiệu bởi Sahai và Waters, trong một hệ thống mã hóa dựa trên thuộc tính, mỗi người dùng có một thuộc tính riêng (ví dụ: thông tin), và nhà cung cấp sẽ cho phép giải mã tin nhắn nếu như một tính chất nào đó của thuộc tính được thoả mãn (ví dụ: một người dùng có thể giải mã một bức e-mail quan trọng, nếu như cô ấy là một người bạn và rất quan trọng với bạn) Có thể thấy nếu như tính chất đó được miêu tả bằng một cấu trúc truy cập mà có thể triển khai được bằng một lược đồ chia sẻ bí mật hiệu quả, thì tồn tại một hệ thống mã hóa hiệu quả dựa trên thuộc tính này
Lược đồ chia sẻ bí mật được giới thiệu bởi Blakley và Shamir cho trường hợp ngưỡng tức là: có thể tái tạo bí mật trong trường hợp số lượng các thành phần tham gia tái tạo bí mật đạt đến một ngưỡng nào đó Lược đồ chia
sẻ bí mật cho các cấu trúc truy cập chung được giới thiệu và xây dựng bởi Ito, Saito và Nishizeki Cụ thể hơn, Benaloh và Leichter chứng minh được rằng
nếu một cấu trúc truy cập có thể được miêu tả bằng một “công thức đơn điệu”
nhỏ, thì nó có một lược đồ chia sẻ bí mật hiệu quả hoàn hảo Karchmer và Wigderson khái quát lại thông tin này, rằng nếu cấu trúc truy cập của nó có