MỤC LỤC
LỜI NÓI ĐẦU . 1
Chương I . 2
CÁC KHÁI NIỆM CƠBẢN . 2
1.1 Cơsởtoán học . 2
1.1.1. Ước số- Bội số. 2
1.1.2. Sốnguyên tố. 2
1.1.3. Khái niệm nhóm . 2
1.1.4. Nhóm hữu hạn . 2
1.1.5. Nhóm con . 3
1.1.6. Nhóm Cyclic . 3
1.1.7. Các thuật toán trong Z . 3
1.1.9. Thuật toán Euclide mởrộng . 4
1.1.10. Định nghĩa hàm ΦEuler . 4
1.1.11. Đồng dưthức . 4
1.1.12. Sốnghịch đảo . 4
1.1.13. Nhóm nhân Z*n . 5
1.1.14. Định nghĩa thặng dưbậc 2 . 5
1.1.15. Phần dưChina CRT ( Chinese Remainder Theorem) . 5
1.1.16. Độphức tạp tính toán . 5
1.1.17. Các thuật toán trong Zn . 6
1.1.18. Thuật toán ( Tính các nghịch đảo trong Zn ) . 6
1.1.19. Hàm một phía - Hàm một phía có cửa sập . 8
1.2 Tìm hiểu vềmật mã . 8
1.2.1. Mã cổ điển . 9
1.2.1.1. Mã dịch chuyển . 10
1.2.1.2. Mã thay thế. 11
1.2.1.3. Mã Affine . 12
1.2.1.4. Mã Vingenere . 13
1.2.1.5. Mã Hill . 13
1.2.1.6. Mã hoán vị. 15
1.2.2. Mã khóa công khai . 16
1.2.2.1. Mã RSA . 17
1.2.2.2. Mã Elgamal . 18
Chương II . 20
2.1. Tìm hiểu vềchữký điện tử( electronic signature ) . 20
2.1.1. Khái quát vềchữký điện tử? . 20
2.1.2. Định nghĩa vềsơ đồký điện tử. 21
2.1.3. Sơ đồchữký RSA . 22
2.1.4. Sơ đồchữký Elgamal . 23
2.1.5. Sơ đồchữký DSS . 24
2.2. Chữký không thểchối bỏ. 25
2.3. Chứng minh không tiết lộthông tin . 26
2.3. Vấn đềký sốtrên đại diện văn bản . 27
2.3.1. Sơlược vềhàm băm (Hash Function) . 28
2.3.1.1. Giới thiệu . 28
Đồán tốt nghiệp Tìm hiểu Chữkí nhóm và ứng dụng trong giao dịch điện tử
2.3.1.2. Định nghĩa hàm Hash . 28
2.3.1.3. Tính chất của hàm băm . 29
2.3.1.4. Thuật toán MD5 . 29
2.4. Xác thực . 30
Chương III . 32
3.1. Khái niệm vềchữký nhóm( Groups Signature ) . 32
3.2. Những đặc điểm của chữký nhóm . 32
3.2.1. Ta có hệchữký nhóm . 32
3.2.2. Một sơ đồchữký nhóm gồm thành phần cơbản . 33
3.2.3. Một sơ đồchữký nhóm thường bao gồm 5 thủtục . 33
3.2.4. Hiệu quảcủa chữký nhóm . 34
3.2.5. Việc đảm bảo an ninh đối với chữký nhóm. . 34
3.3. Các sơ đồchữký nhóm của David Chaum và Van Heyst . 35
3.3.1. Sơ đồchữký nhóm thứnhất. . 35
3.3.2. Sơ đồchữký nhóm thứhai . 35
3.3.2.1. Giao thức xác nhận . 36
3.3.2.2. Giao thức chối bỏ. 37
3.3.3. Sơ đồchữký nhóm thứba . 41
3.3.3.1. Vấn đề“ mở” chữký . 41
3.3.3.2. Nhận xét . 41
3.4. Sơ đồchữký nhóm của Jan Camenish và Stadler . 41
3.4.1. Một sốkhái niệm cần thiết . 42
3.4.2. Sơ đồchữký . 43
Chương IV .44
4.1. Tìm hiểu vềgiao dịch điện tử. 44
4.2. Thẻthanh toán điện tử. 44
4.3.Việc ứng dụng và phát triển công nghệtại Việt Nam hiện nay . 45
4.4. Chương trình . 48
Kết luận. 61
Tài liệu tham khảo. 62
MỤC LỤC . 63
64 trang |
Chia sẻ: netpro | Lượt xem: 2514 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Đề tài Tìm hiểu chữ kí nhóm và ứng dụng trong giao dịch điện tử, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
g khi đó, trên thực tế, ta cần phải ký các thông điệp có
kích thước lớn hơn nhiều, chẳng hạn vài chục Megebyte, hơn nữa dữ liệu truyền qua
mạng không chỉ là bản thông điệp gốc, mà còn bao gồm cả bản ký số (có dung lượng
gấp đôi bản thông điệp gốc ), để đáp ứng việc xác thực sau khi thông điệp đến người
nhận.
Một cách đơn giản để giải bài toán (với thông điệp vài chục Megabyte ) này là chặt
thông điệp thành nhiều đoạn 160 bit sau đó ký lên các đoạn đó độc lập nhau. Nhưng
biện pháp này có một số vấn đề khi tạo ra chữ ký số :
Thứ nhất : Với một thông điệp có kích thước a thì sau khi ký kích thước
của chữ ký sẽ là 2a (trong trường hợp chữ ký số DSS)
Thứ hai : Với các chữ ký “an toàn ” thì tốc độ chậm vì chúng dùng nhiều
phép tính số học phức tạp như số mũ modulo
Thứ ba : Vấn đề nghiêm trọng hơn đó là kết quả sau khi ký, nội dung của
thông điệp có thể bị xáo trộn các đoạn với nhau, hoặc một số đoạn trong
chúng có thể bị mất mát, trong khi người nhận cần xác minh lại thông
điệp. Ta cần phải bảo vệ tính toàn vẹn của thông điệp.
Giải pháp cho các vấn đề trên là dùng hàm băm để trợ giúp cho việc ký số. Các
thuật toán băm với đầu vào là các bức thông điệp có dung lượng tùy ý, các bức thông
điệp có thể là dạng văn bản, âm thanh, hình ảnh, … và với các giải thuật toán băm :
MD2, MD4, MD5, SHA do các bản băm có kích thước cố định: 128 bit với dòng MD,
160 bit với dòng SHA.
Như vậy, bức thông điệp kích thước tùy ý sau khi băm sẽ được thu gọn thành các
văn bản – được gọi là văn bản đại diện - có kích thước cố định (128 bit hoặc 160
bit) . Với mỗi thông điệp đầu vào chỉ có thể tính ra được một văn bản đại diện duy
nhất. Giá trị băm được coi là đặc thù của thông điệp, giống như dấu vân tay của mỗi
người. Hai thông điệp khác nhau chắc chắn có hai văn bản đại diện khác nhau. Khi đã
có văn bản đại diện duy nhất cho bức thông điệp, áp dụng các sơ đồ chữ ký số ký trên
văn bản đại diện đó.
Đồ án tốt nghiệp Tìm hiểu Chữ kí nhóm và ứng dụng trong giao dịch điện tử
Sinh viên: Phạm Thị Hiểu Lớp CT702 28
2.4.1. Sơ lược về hàm băm (Hash Function)
2.4.1.1. Giới thiệu
Theo các sơ đồ chữ ký ở trên thì chữ ký của thông điệp cũng có độ dài bằng độ dài
của thông điệp, đó là một điều bất tiện. Ta mong muốn như trong trường hợp chữ ký
viết tay, chữ ký có độ dài ngắn và hạn chế cho dù văn bản có độ dài bằng bao nhiêu.
Vì chữ ký số được ký cho từng bit của thông điệp, nếu muốn chữ ký có độ dài hạn chế
trên thông điệp có độ dài tuỳ ý thì ta phải tìm cách rút gọn độ dài thông điệp. Nhưng
bản thân thông điệp không thể rút ngắn được, nên chỉ còn cách là tìm cho mỗi thông
điệp một thông điệp thu gọn có độ dài hạn chế và thay việc ký trên thông điệp, ta ký
trên thông điệp thu gọn.
Do vậy các hàm băm đóng vai trò cơ bản trong mã khóa công khai. Hàm băm sẽ
tạo ra một đầu ra từ bản tin đầu vào. Đầu ra này được định nghĩa là một mã băm.
2.4.1.2. Định nghĩa hàm Hash
Hàm Hash là một hàm tính toán có hiệu quả khi ánh xạ các dòng nhị phân có độ
dài tuỳ ý thành các dòng nhị phân có độ dài cố định nào đó.
Hàm Hash yếu: Hàm Hash được gọi là yếu nếu cho một thông điệp x thì về mặt
tính toán không tìm ra được thông điệp x’ khác x sao cho :
h(x’) = h(x)
Hàm Hash mạnh: Hàm Hash được gọi là mạnh nếu về mặt tính toán không tìm ra
được hai thông điệp x và x’ sao cho:
x’ ≠ x và h(x’) = h(x)
Chọn giá trị x ngẫu nhiên, x ∈ X
Tính z = h(x)
Tính x1 = A(z)
Nếu x1 ≠ x thì x1 và x va chạm dưới h( thành công)
Ngược lại là thất bại
Hàm Hash có tính chất một chiều: Hàm Hash có tính chất một chiều nếu cho trước
thông điệp rút gọn z thì về mặt tính toán không tìm ra được thông điệp x sao cho :
h(x) = z.
Hàm Hash yếu làm cho chữ ký số trở nên tin cậy giống như việc ký trên toàn
thông điệp.
Hàm Hash mạnh có tác dụng chống lại kẻ giả mạo tạo ra hai bản thông điệp có nội
dung khác nhau, sau đó thu nhận chữ ký hợp pháp cho một bản thông điệp dễ được xác
nhận rồi lấy nó giả mạo làm chữ ký của thông điệp thứ 2.
Đồ án tốt nghiệp Tìm hiểu Chữ kí nhóm và ứng dụng trong giao dịch điện tử
Sinh viên: Phạm Thị Hiểu Lớp CT702 29
2.4.1.3. Tính chất của hàm băm
Hàm băm h phải thỏa mãn tính chất không va chạm yếu nghĩa là : Khi cho
trước một thông điệp x không thể tiến hành về mặt tính toán để tìm ra bức điện
x’ ≠ x mà h(x’) = h(x).
Hàm băm h không va chạm mạnh nghĩa là không có khả năng tính toán dễ tìm
ra hai thông điệp x và x’ mà x’ ≠ x và h(x’) = h(x).
Hàm băm h là hàm một chiều nghĩa là khi cho trước một bản tóm lược thông
điệp z thì không thể thực hiện về mặt tính toán để tìm ra thông điệp ban đầu x
sao cho h(x)= z.
Các hàm băm phổ biến là các hàm băm dòng MD : MD2, MD4, MD5 do Rivest
đưa ra có kết quả đầu ra là 128 bit. Chuẩn hàm băm an toàn SHA được công bố trong
hồ sơ liên bang năm 1992 và được chấp nhận làm tiêu chuẩn vào năm 1993 do viện
tiêu chuẩn và công nghệ quốc gia (NIST), kết quả đầu ra có độ dài 160 bit. Dưới đây là
thuật toán băm MD5.
2.4.1.4. Thuật toán MD5
Thuật toán MD5 được Ron Rivest đưa ra vào năm 1991. Đầu vào của thuật toán là
các khối có độ dài 512 bit và đầu ra là một bản băm đại diện cho văn bản gốc có độ dài
128bit.
Các bước tiến hành :
Bước 1 : Độn thêm bit
Đầu tiên thông điệp được đệm thêm vào để chiều dài của nó là 64 bit.
Vi dụ : Nếu thông điệp dài 448 bit thì nó được đệm thêm vào 512 bit để trở thành
960 bit. Số lượng bit được thêm vào nằm trong khoảng từ 1 đến 512 bit. Dãy bit
thêm vào bắt đầu bằng số 1 vào theo sau là dãy số 0.
Bước 2 : Thêm độ dài
Một biểu diễn 64 bit của độ dài của thông điệp (trước khi các bit đệm được thêm
vào) được thêm vào để dẫn đến kết quả của bước 1, nếu chiều dài của thông điệp
ban đầu lớn hơn 264 thì chỉ có những bit nhỏ hơn 64 mới được sử dụng.
Hai bước trên để đáp ứng yêu cầu độ dài của thông điệp là một bội số của 512 bit
Bước 3 : Khởi tạo bộ đệm của MD
Một bộ đệm 128 bit được khởi tạo để lưu giữ kết quả của hàm băm. Bộ đệm được
biểu diễn bởi thanh ghi 32 bit. Các giá trị khởi tạo của 4 thanh ghi là :
A = 0x01234567
B = 0x89abcdef
C = 0xfedcba98
D = 0x76543210
Đồ án tốt nghiệp Tìm hiểu Chữ kí nhóm và ứng dụng trong giao dịch điện tử
Sinh viên: Phạm Thị Hiểu Lớp CT702 30
Bước 4 : Tiến trình thực hiện
Thuật toán được thực hiện qua 4 vòng lặp, 4 vòng lặp này có cấu trúc giống nhau
nhưng sử dụng các phép toán logic khác nhau. Các phép toán logic được sử dụng
bao gồm : AND, XOR, OR và phép modulo 232
Bước 5 : Đầu ra
Sau khi tất cả các khối 512 bit được xử lí thì một văn bản đại diện 128 bit được
sinh ra.
ABCD
Quá trình tạo hàm băm của MD5
2.5. Xác thực
Trong phạm vi truyền thông qua internet người ta nhận được các dạng tấn công
sau đây.
Khám phá : Để lộ các nội dung thông báo do không xử lý khóa mật mã
thích hợp
Phân tích luồng thông tin : Phát hiện luồng thông tin giữa các thành
viên. Trong một ứng dụng hướng kết nối, người ta có thể xác định được
tần số và khoảng thời gian kết nối. Trong môi trường hướng kết nối hoặc
không. Hướng kết nối người ta có thể xác định được số lượng và độ dài
của các thông báo giữa các thành viên.
Thông điệp
Y0 Y1 Yq YL-1
MD 5 MD 5 MD 5 MD 5
L x 512 bits = N x 32 bits
K bits Độn thêm vào
Chiều dài
thông điệp
512 bit
128 bit
digest
Đồ án tốt nghiệp Tìm hiểu Chữ kí nhóm và ứng dụng trong giao dịch điện tử
Sinh viên: Phạm Thị Hiểu Lớp CT702 31
Giả mạo : Đưa thêm các thông báo có nguồn gốc giả mạo trên mạng.
Thông thường kẻ giả mạo sẽ tạo ra các thông báo và gửi cùng với các
thông báo hợp pháp.
Sửa đổi nội dung : Thay đổi nội dung của thông báo như chèn thêm, xóa,
sửa đổi.
Sửa đổi trình tự : Sửa đổi trình tự thông báo giữa các thành viên chẳng
hạn như xóa bỏ hay sắp xếp theo trình tự mới.
Sửa đổi thời gian : Làm trễ hoặc chuyển tiếp nhiều lần các thông báo.
Chối bỏ : Người nhận chối bỏ những thông báo gửi đến hoặc người gửi
chối bỏ thông báo gửi đi.
Xác thực : Là một thủ tục nhằm kiểm tra các thông báo nhận được xem
chúng có đến từ một người gửi hợp lệ và có bị sửa đổi hay không. Xác thực
cũng có thể kiểm tra trình tự và tính đúng lúc. Chữ ký số là một kỹ thuật xác
thực.
Đồ án tốt nghiệp Tìm hiểu Chữ kí nhóm và ứng dụng trong giao dịch điện tử
Sinh viên: Phạm Thị Hiểu Lớp CT702 32
Chương III
CHỮ KÝ NHÓM
3.1. Khái niệm về chữ ký nhóm( Groups Signature )
Trong xu hướng phát triển cuả thế giới và Việt Nam hiện nay, việc giao dịch giữa
người với người thông qua mạng đã trở thành một việc không thể thiếu. Hai người ở
cách xa nhau hàng vạn cây số nhưng vẫn có thể thực hiện việc ký kết các hợp đồng
thương mại với nhau thông qua mạng. Để việc ký kết các hợp đồng đó có cơ sở pháp
lý, các nhà khoa học đã phát minh ra chữ ký điện tử. Đó là một phát minh vĩ đại của
loài người trong kỉ nguyên công nghệ thông tin.
Tuy nhiên, việc giao dịch không chỉ dừng lại ở mức độ giữa hai người với nhau,
mà đòi hỏi việc giao dịch đó có thể là giao dịch giữa các nhóm người, các tổ chức khác
nhau trên thế giới và được thực hiện qua mạng. Việc xác thực thông tin và toàn vẹn
thông tin lúc này là xác thực và toàn vẹn thông tin của một nhóm người, một tổ chức.
Chữ ký nhóm đã được đề xuất nhằm đáp ứng được yêu cầu này của xã hội.
Chữ ký nhóm là chữ ký điện tử đại diện cho một nhóm người, một tổ chức
Các thành viên của một nhóm người được phép ký trên thông điệp với tư cách là
người đại diện cho nhóm.
Chữ ký nhóm được David Chaum và Van Heyst giới thiệu lần đầu tiên vào năm
1991. Kể từ đó đến nay đã có nhiều nhà khoa học nghiên cứu và đưa ra một số sơ đồ
chữ ký nhóm khác như sơ đồ chữ ký nhóm của Chen và Pedersen năm 1994, sơ đồ chữ
ký nhóm của Camenisch và Stadler năm 1997.
3.2. Những đặc điểm của chữ ký nhóm
Chỉ có thành viên trong nhóm mới có thể ký tên vào bản thông báo đó
Người nhận thông điệp có thể kiểm tra xem chữ ký đó có đúng là của nhóm đó
hay không, nhưng người nhận không thể biết được người nào trong nhóm đã ký
vào thông điệp đó.
Trong trường hợp cần thiết chữ ký có thể được “mở” (có hoặc là không có sự
giúp đỡ của thành viên trong nhóm) để xác định người nào đã ký vào thông
điệp đó
3.2.1. Ta có hệ chữ ký nhóm
Undeniable Signature
Đây là chữ ký mà thuật toán kiểm định đòi hỏi phải có sự tham gia của người ký.
Thực chất đây là chữ ký có tính chất không thể chuyển giao được (untransferable): Chỉ
có ý nghĩa đối với người nhận là có người trao đổi làm ăn với người ký, khi chuyển nó
cho một người khác thì không có tác dụng nữa (không thể kiểm định được chữ ký
Đồ án tốt nghiệp Tìm hiểu Chữ kí nhóm và ứng dụng trong giao dịch điện tử
Sinh viên: Phạm Thị Hiểu Lớp CT702 33
nữa). Các văn bản có chữ ký này không nhằm mục đích đem đi công bố ở nơi khác mà
chỉ có tính chất giấy phép. Vì thế nếu sao chép là mất ý nghĩa.
Chữ ký này được dùng trong việc bán các sản phẩm phần mềm: Các hãng phần
mềm sẽ bán các sản phẩm của mình có chữ ký chứng tỏ tính bản quyền. Việc kiểm
định đòi hỏi phải liên lạc với hãng này. Nếu như có việc một người buôn nào đó bán
phần mềm sao chép thì lúc người mua đòi kiểm định sẽ bị lộ ngay vì không thực hiện
được.
MultiSignature ( Đồng ký )
Ở đây, chữ ký không phải của một người mà của một nhóm người. Muốn tạo được
chữ ký, tất cả những người này cùng phải tham gia vào protocol. Tuy nhiên chữ ký có
thể được kiểm định bởi bất kỳ ai. Đây là trường hợp dành cho thực tế của việc đưa ra
những quyết định do nhiều người.
Proxy Signature (chữ ký ủy nhiệm)
Hệ chữ ký này dành cho các trường hợp mà người chủ chữ ký vì một lí do nào đó
mà không thể ký được. Vì vậy chữ ký ủy nhiệm được tạo ra để người chủ có thể ủy
nhiệm cho một người nào đó ký thay.
3.2.2. Một sơ đồ chữ ký nhóm gồm thành phần cơ bản
Người quản lý nhóm
Các thành viên trong nhóm
Người không thuộc nhóm
3.2.3. Một sơ đồ chữ ký nhóm thường bao gồm 5 thủ tục
KeyGen: Là thuật toán sinh khóa công khai của nhóm, khóa bí mật của
người quản lý nhóm : KeyGen() → (pk,gmsk) trong đó pk là khóa công khai
của nhóm (dùng để xác minh chữ ký của nhóm), gmsk là khóa bí mật của
nhóm. Nếu số người trong nhóm là cố định thì KeyGen()→ (pk,gmsk,sk i ) trong
đó sk i là khóa bí mật của thành viên thứ i trong nhóm
Join : Cho phép một người không phải là thành viên nhóm gia nhập nhóm. Khi
gia nhập nhóm, thành viên i sẽ nhận được khóa bí mật của mình là sk i , người
quản lý nhóm sẽ lưu thông tin của thành viên mới này
Sig : Khi thành viên i muốn ký thông điệp m đại diện cho nhóm, anh ta sẽ sử
dụng thủ tục Sig: Sig(m, sk i )→. Chữ ký trên thông điệp m là δ.
Verify : Khi muốn kiểm tra chữ ký δ có phải là chữ ký đại diện cho nhóm trên
thông điệp m sử dụng thủ tục Verify(m, δ,pk) = ⎢⎣
⎡
False
True
Đồ án tốt nghiệp Tìm hiểu Chữ kí nhóm và ứng dụng trong giao dịch điện tử
Sinh viên: Phạm Thị Hiểu Lớp CT702 34
Open : Với mỗi chữ ký trên thông điệp m, người quản lý nhóm có thể xác định
được thành viên nào đã ký vào thông điệp bằng việc sử dụng thủ tục
Open(gmsk,m, δ), đầu ra của thủ tục là thông tin về thành viên đã ký.
3.2.4. Hiệu quả của chữ ký nhóm
Khi đánh giá hiệu quả của một sơ đồ chữ ký nhóm ta cần quan tâm đến các thông
số sau:
Độ lớn của khóa công khai nhóm γ (số bit)
Độ lớn của chữ ký trên một thông điệp (số bit)
Hiệu quả của các thủ tục Setup, Join, Sign, Verify, Open
Tính ưu việt của chữ ký nhóm chính là khả năng cho phép những nhóm người,
những tổ chức giao tiếp với nhau, mà trong đó việc xác thực các thông tin gửi cho
nhau thông qua các khóa công khai của mỗi nhóm. Nhờ đó những thành viên của
nhóm có thể ký nặc danh đại diện cho nhóm của mình mà không thể để lộ thông tin cá
nhân của mình, và chỉ có người quản trị mới có thể xác định được người ký.
3.2.5. Việc đảm bảo an ninh đối với chữ ký nhóm.
Không thể giả mạo : Chỉ có các thành viên trong nhóm mới có thể đại diện cho
nhóm ký trên thông điệp của nhóm.
Người ký nặc danh có thể tính toán được : Bất kỳ ai cũng có thể xác thực chữ
ký một cách dễ dàng nhưng không thể biết được ai là người ký ( Trừ người
quản lí nhóm ).
Không thể chối bỏ : Một thành viên ký trên một thông điệp thì không thể chối
bỏ chữ ký đó được. Người quản lý nhóm có thể xác định được ai đã ký vào
thông điệp đó.
Không thể phân tích quan hệ : Việc phân tích xem hai chữ ký của một thành
viên trong nhóm khác nhau như thế nào là khó đối với các thành viên của nhóm
trừ người quản lí nhóm.
Ngăn chặn framing Attacks : Khi một số thành viên liên kết với nhau cũng
không thể giả mạo chữ ký của thành viêc khác trong nhóm.
Ngăn chặn sự liên minh : Khi một số thành viên liên kết với nhau cũng không
thể tạo ra một chữ ký hợp lệ mà không xác định được người ký.
Đồ án tốt nghiệp Tìm hiểu Chữ kí nhóm và ứng dụng trong giao dịch điện tử
Sinh viên: Phạm Thị Hiểu Lớp CT702 35
3.3. Các sơ đồ chữ ký nhóm của David Chaum và Van Heyst
3.3.1. Sơ đồ chữ ký nhóm thứ nhất.
Z ( là người quản lý nhóm hoặc là người tin cậy được ủy nhiệm ) chọn một hệ
thống khóa công khai và đưa cho mỗi thành viên một danh sách các khóa bí mật (các
danh sách này là khác nhau) và công bố một danh sách đầy đủ các khóa công khai
tương ứng ( theo thứ tự ngẫu nhiên ) trong một Trusted Public Directory – TPD
Mỗi thành viên có thể ký một thông điệp bằng một khóa bí mật trong danh sách
của anh ta, và người nhận có thể kiểm tra chữ ký bằng một khóa công khai tương ứng
từ danh sách khóa công khai. Mỗi khóa chỉ được sử dụng một lần, nói cách khác các
chữ ký đã được tạo bằng khóa này được liên kết. Z biết tất cả các danh sách khóa bí
mật, vì thế trong trường hợp cần thiết, Z có thể biết được ai đã tạo ra chữ ký đó. Để
làm được điều này Z phải “mở” chữ ký.
Nếu mỗi người có cùng một số lượng các khóa bí mật, thì chiều dài của khóa công
khai của nhóm là tuyến tính với số thành viên, nhưng số thông điệp của mỗi thành viên
ký là không đổi.
Một vấn đề đối với sơ đồ này là Z biết tất cả các khóa bí mật của các thành viên và
có thể giả mạo chữ ký. Điều này có thể được giải quyết bằng việc sử dụng các khóa
công khai mù. Lấy g là phần tử sinh của nhóm nhân Z *p với p là một số nguyên tố.
Thành viên thứ I lấy khóa bí mật của mình là si và tính g is mod p rồi gửi cho Z, Z có
một danh sách các khóa công khai khác nhau này cùng với tên của các thành viên. Mỗi
tuần Z đưa cho thành viên I một số ngẫu nhiên ri ∈ { }1...,,2,1 −p và công bố danh
sách tất cả các khóa công khai mù là ( ) ii rsg . Trong suốt tuần này thành viên I sẽ sử
dụng siri mod (p-1) làm khóa bí mật.
Ưu điểm của việc cải biên này là Z không thể giả mạo chữ ký, và mỗi thành viên
sẽ có một “ khóa bí mật thực sự ”. Nếu ri chẳng may bị lộ thì vẫn không có một thông
tin nào về khóa bí mật si bị lộ.
Trong một cải biên khác, không cần phải có người ủy quyền tin cậy, mỗi người
dùng gửi một (hoặc nhiều hơn ) các khóa công khai tới một danh sách công khai sẽ là
khóa công khai của nhóm. Nhưng chỉ những thành viên của nhóm mới có thể gửi các
khóa công khai vào danh sách này.
3.3.2. Sơ đồ chữ ký nhóm thứ hai
Z chọn hai số nguyên tố lớn p, q khác nhau và một hàm một chiều và tính N=p*q.
Z đưa cho thành viên thứ I một khóa bí mật si ,là một số nguyên tố lớn ngẫu nhiên
thuộc tập hợp [ ] [ ]{ }12,, −= NN Kφ , và tính v = ∏ is , và công bố N, v và f. Nếu
thành viên I muốn ký thông điệp m, chữ ký của anh ta sẽ là ( )( ) ismf mod N.
Z phải chứng minh cho người nhận rằng si là ước của v, và si ∈ φ mà không để lộ
bất kì thông tin nào về si. Trong trường hợp có xảy ra tranh cãi sau đó, người nhận có
Đồ án tốt nghiệp Tìm hiểu Chữ kí nhóm và ứng dụng trong giao dịch điện tử
Sinh viên: Phạm Thị Hiểu Lớp CT702 36
thể sử dụng giao thức xác nhận hoặc giao thức chống chối bỏ yêu cầu bên gửi phải
chứng minh rằng chữ ký không phải của bên gửi.
3.3.2.1. Giao thức xác nhận
Người ký P sẽ phải chứng minh rằng S là chữ ký của anh ta trên thông điệp m với
V mà không để lộ thông tin nào về khóa bí mật s của anh ta, việc này sẽ được giải
quyết bởi giao thức 1, chúng ta sẽ phải tính toán các blob an toàn B .
Ta coi bản thu gọn của thông điệp là m.
Giao thức xác nhận 1
Nếu giao thức này được lặp lại k lần, V sẽ tin rằng s ∈ Ω; nhưng V sẽ không
nhận được gì hơn ngoài sự thật là s ∈ Ω;
Giao thức 1
1. P chọn r ∈ (0, …, β). Tính các blob trên z1 ≡ x r (mod N) và z2 ≡ x β−r (mod
N), và gửi không theo thứ tự { })B(z),B(z 21 cho V .
2. V chọn ngẫu nhiên b ∈ (0, 1) và gửi cho P
3. P gửi lại cho V trong trường hợp
b = 0:r và mở các blob
b = 1: z~ là (c + r) hoặc (c + r - β) và tương ứng z1 hoặc z2 (gọi là z~ )
4. V kiểm tra trong trường hợp :
b = 0 : kiểm tra r ∈ ( 0, …, β) và các blob của xr và xr-β theo thứ tự nào đó
b = 1 : kiểm tra r~ ∈ Ω và một trong các blob chứa z~ và z~ thỏa mãn
rm
~ ≡ z~ S (mod N).
Nếu P có thể trả lời đúng cả hai yêu cầu khi V gửi b thì chữ ký S trên thông điệp m
đúng là của P . Còn nếu một trong hai câu có kết quả sai hoặc cả hai câu đều sai thì
chữ ký S trên thông điệp m không phải là chữ ký của P.
Blob B có thể được tính bằng cách sau:
Z chọn các phần tử sinh gp và hq của *pZ và *qZ và tính
g ≡
⎩⎨
⎧
ql
pg p
mod
mod
và h ≡
⎩⎨
⎧
qh
pl
q mod
mod
sử dụng CRT
Để tính B(y) thì P chọn r1, r2 ∈ (1, …, N) và tính
B(y) = y 21 rr hg mod N
Khóa bí mật của P : s
Công khai : N, m, S, Ω; m, s ∈ Z *N , Ω = [ ] [ ]{ }12,, −NN K ⊂ N
Chứng minh với V : m s ≡ S (mod N) và s ∈ Ω
Đồ án tốt nghiệp Tìm hiểu Chữ kí nhóm và ứng dụng trong giao dịch điện tử
Sinh viên: Phạm Thị Hiểu Lớp CT702 37
Trong giao thức này, chúng ta tạo một giao thức xác nhận, vì P muốn chứng minh
cho người nhận V rằng P đưa cho một V chữ ký có giá trị S. Trường hợp này được
giải quyết như sau :
Giao thức xác nhận 2
Giao thức 2
1. Chứng minh tồn tại s sao cho ms ≡ S (mod N) và s ∈ Ω bằng giao thức 1,
thực hiện k lần.
2. Chứng minh rằng s|v như sau:
Giao thức 2
3.3.2.2. Giao thức chối bỏ
Nếu P muốn chứng minh cho V rằng S không phải là chứ ký của anh ta trên thông
điệp m, trường hợp này sẽ được giải quyết như sau:
Giao thức chói bỏ
Khóa bí mật của P : s
Công khai : N, m, S, Ω; m, s ∈ Z *N , Ω = [ ] [ ]{ }12,, −NN K ⊂ N
Chứng minh với V : m s ≡ S (mod N) và s ∈ Ω và s|v (s là ước của v)
P
V
a ≡ Sr Chọn r ∈ (1,…, N)
b ≡ av/s B(b)
Kiểm tra a r
Mở blob Kiểm tra blob và b ≡ mvr
Khóa bí mật của P : s
Công khai : N, m, S, Ω; m, s ∈ Z *N
Chứng minh với V : m s ≡ S (mod N) và s ∈ Ω và s|v (s là ước của v)
Đồ án tốt nghiệp Tìm hiểu Chữ kí nhóm và ứng dụng trong giao dịch điện tử
Sinh viên: Phạm Thị Hiểu Lớp CT702 38
Z công bố ( hg , ) được sinh trong nhóm Z *N (cách tính hg , như sau: chọn các số
nguyên a1, a2, b1, b2 thỏa mãn gcd(a1, b1, p-1) = gcd (a2, b2, q-1) = 1 và công khai
2121
~,~ bbaa hghhgg ≡≡ với g, h là các phần tử sinh của Zp* và Z*q), cùng đó là một thư
mục công khai tin cậy chứa ( tên thành viên, ss hg ~,~ ). Lấy l là một hằng số rất nhỏ để
việc tìm kiếm toàn diện trên (0, …, 1) là khả thi. Chú ý rằng nếu S ≡ ms, thì p không
thể tính a từ ( )as Sm / , vì khi đó ( )as Sm / = 1. Khi đó anh ta sẽ phải đoán a.
Giao thức 3
Do chữ ký được tạo ra là chữ ký không thể chối bỏ, ta có thể sử dụng giao thức
chối bỏ của sơ đồ chữ ký không thể chối bỏ do chính tác giả David Chaum sáng tác để
thưc hiện việc chứng minh chữ ký S không phải là chữ ký của P trên thông điệp m với
V .
Z công bố g~ và isg~ (mod N), S-1i (mod ϕ(N)) tương ứng từng thành viên. Giao thức
4 sẽ giải quyết vấn đề chối bỏ chữ ký như sau :
Giao thức 4
Bước 1 : V chọn ngẫu nhiên 2 số nguyên x1, x2 ∈ Ф, tính ( ) 21 ~ xsx gSc= mod N, sau đó
gửi cho P
Bước 2 : P tính ( ) 1−= scd mod N, gửi d cho V
Bước 3 : V thử điều kiện d ≠ 21 ~ xx gm mod N. Nếu đúng thì tiếp tục bước 4. Nếu sai
thì chữ ký đúng là của P
P
V
2~~ ra hgm ≡ Sr Chọn r1, r2 ∈ (1,…, N) và a ∈ (0, …, 1)
( ) ( ) 21 ~~ rsrsa hgS
Tính a từ ( )as Sm / B(b)
Bằng cách kiểm tra
Toàn bộ các số
r1, r2
Mở blob Kiểm tra blob
Đồ án tốt nghiệp Tìm hiểu Chữ kí nhóm và ứng dụng trong giao dịch điện tử
Sinh viên: Phạm Thị Hiểu Lớp CT702 39
Bước 4 : V chọn ngẫu nhiên 2 số nguyên tố x’1, x’2 ∈ Ф tính ( ) 2'1' ~' xsx gSc = mod N,
sau đó gửi c’ cho P .
Bước 5 : P tính ( ) 1'' −= scd mod N, sau đó gửi d’ cho V
Bước 6 : V thử điều kiện d’ ≠ 2'1' ~ xx gm mod N. Nếu đúng thì tiếp tục bước 7. Nếu sai
thì chữ ký đúng là của P .
Bước 7 : V kiểm tra ( ) ( ) 1'2'12 ~~ ' xxxx gdgd −− ≡ mod N ? Nếu đồng dư thức đùng thì kết luận
chữ ký không phải là của P.
Ví dụ :
Một ví dụ về sơ đồ chữ ký nhóm dựa trên hệ mật mã RSA
Thành lập một nhóm có 5 thành viên, quá trình cài đặt nhóm do người
quản lý nhóm thực hiện như sau :
Z chọn p = 101, q = 113, N = pq = 11413, ϕ(N) = (p-1)(q-1) = 11200, Z
chọn khóa bí mật của Z là Sz = 149, gp = 3, hq = 2 là các phần tử sinh của
Z*p và Z *q. Chọn a1 = 3, a2 = 7, b1 = 11, b2 = 13.
Tính 21~ aa hgg = mod N = 3456 và 21~ bb hgh = mod N = 2448
Các khóa bí mật của các thành viên như sau :
s1= 107,s2 = 113, s3 = 123, s4 = 129, s5 = 137
Khóa công khai của các thành viên ( là nghịch đảo của khóa bí
mật của các thành viên trong trường mod ϕ(N)) được gửi lên TPD như
sau (không theo thư tự ): 5443, 2577, 3187, 8769, 10873. Các khóa công
khai này sẽ được người nhận thông điệp dùng để xác minh có đúng hay
không.
Khóa công khai của nhóm là N = 11413
v = ∏ iz ss =3916191121461
Ký văn bản : ký văn bản m = 1234 thì
Chữ ký của từng thành viên lần lượt là : 278, 6093, 6541, 6528, 8331
Xác nhận chữ ký ( sử dụng giao thức 1)
Thành viên 1 muốn xác nhận chữ ký S = 278 đúng là của anh ta ( gọi là
P ) trên văn bản m = 1234 với người xác nhận ( gọi là V ) thì anh ta
thực hiện giao thức xác nhận ( giao thức 1)
Bước 1 : P chọn β = 57, chọn r = 23.
Tính z1 = 123423 mod 11413 = 4016, z2 = 123423-57 = mod 11413
= (1234-1)34 mod 11413 = 951734 mod 11413 = 2429.
Tính các blob : g = 1922, h = 4748, chọn r1 = 5,r2 = 7.
B(z1) = 4016.19225.47487 mod 11413 = 8712
B(z2) = 2429.19225.47487 mod 11413 = 1518
Đồ án tốt nghiệp Tìm hiểu Chữ kí nhóm và ứng dụng trong giao dịch điện tử
Sinh viên: Phạm Thị Hiểu Lớp CT702 40
Bước 2 : V chọn b = 0 hoặc b = 1 rồi gửi cho P
Bước 3 : P gửi cho V
Nếu b = 0 thì r = 23, β = 57, mở các blob g = 1922, h = 4748,
r1 = 5,r2 = 7, z1 = 4016, z2 = 2429
Nếu b = 1 thì r = 107 + 23 = 130, z = 4016
Bước 4 : V xác định
Nếu b = 0 thì r ∈ (0, …, β) và kiểm tra z1 = 4016, z2 = 3418 sau
đó kiểm tra B(4016) = 8712 và B(3418) = 5505 theo thứ tự nào đó
mà P đã gửi ở bước 1. Nếu kiểm tra thỏa mãn thì chữ ký là
đúng .
Nếu b = 1 thì kiểm tra 1234130 ≡ 4016.278 (mod 11413) ↔9387 ≡
9387. do đó chữ ký là đúng.
Chối bỏ chữ ký ( sử dụng giao thức 4). Giả sử thành viên thứ 1 ký thông
điệp m = 1234, chữ ký S = 278, thành viê
Các file đính kèm theo tài liệu này:
- Tìm hiểu Chữ kí nhóm và ứng dụng trong giao dịch điện tử.pdf