1.1. Tổng quan về chữ ký điện tử 1.1.1. Lịch sử của chữ ký điện tử Con người đã sử dụng các hợp đồng dưới dạng điện tử từ hơn 100 năm nay với việc sử dụng mã Morse và điện tín. Vào năm 1889, tòa án tối cao bang New Hampshire (Hoa Kỳ) đã phê chuẩn tính hiệu lực của chữ ký điện tử, thỏa thuận đầu tiên được ký kết mang tính điện tử là giữa USA và Ireland năm 1998. Tuy nhiên, chỉ với những phát triển của khoa học kỹ thuật gần đây thì chữ ký điện tử mới đi vào cuộc sống một cách rộng rãi. Hiện nay chữ ký điện tử có thể bao hàm các cam kết gửi bằng email, nhập các số định dạng cá nhân (PIN) vào các máy ATM, ký bằng bút điện tử tại quầy tính tiền, ký các hợp đồng điện tử online… 1.1.2. Khái niệm Chữ ký điện tử là thông tin đi kèm theo dữ liệu (văn bản, hình ảnh, video…) nhằm mục đích xác định người chủ của dữ liệu đó. Chữ ký điện tử được sử dụng trong các giao dịch điện tử. Xuất phát từ thực tế, chữ ký điện tử cũng cần đảm bảo chức năng xác định được người chủ cùng một dữ liệu nào đó có bị thay đổi không. 6 Hiện nay chuẩn phổ biến được dùng cho chữ kí điện tử là OpenPGP (hỗ trợ bởi PGP và GnuPG). Chữ ký điện tử thường được phân thành hai loại chính: Chữ ký số (Digital Signature). ESign. Mô hình chung của chữ ký điện tử:
Trang 1MỤC LỤC
Trang 2DANH MỤC HÌNH
Trang 3DANH MỤC BẢNG
Trang 4DANH MỤC TỪ VIẾT TẮT
STT Từ viết tắt Nội dung
4 DSS Digital Signature Standard
5 PKI Public Key Infrastructure
Trang 5LỜI NÓI ĐẦU
Trong sự phát triển của xã hội loài người, kể từ khi có sự trao đổi thông tin, antoàn thông tin trở thành một nhu cầu cấp thiết trên mọi lĩnh vực Đặc biệt trong thờiđại mà thương mại điện tử đang lên ngôi thì việc có được các công cụ đầy đủ để đảmbảo cho sự an toàn trao đổi thông tin liên lạc là vô cùng cần thiết Cùng với đó, tínhlinh hoạt của internet cũng tạo cơ hội cho “bên thứ ba” có thể thực hiện các hành độngbất hợp pháp như nghe trộm, giả mạo, mạo danh Do vậy để đảm bảo an toàn trong cácthương mại điện tử và các giao dịch điện tử cần có các hình thức bảo mật hiệu quảnhất, công nghệ phổ biến hiện nay được sử dụng là chữ ký điện tử, đây cũng là nộidung nghiên cứu chính của chuyên đề
Hàng ngày chúng ta vẫn hay dùng chữ ký trên các văn bản, trên các tài liệu haytrên các hợp đồng kinh tế, những chữ ký như vậy gọi là chữ ký viết tay Từ những vấn
đề an toàn và hợp lý về giao dịch của chữ ký bằng tay thì chữ ký điện tử ra đời cónhững nét đặc trưng tương tự Nhưng thông tin trên máy tính luôn được sao chép mộtcách dễ dàng, việc thay đổi hoặc đánh cắp thông tin của một văn bản là rất đơn giản,cách sử dụng hình ảnh của chữ ký viết tay là không thể áp dụng được do vậy tạo ramột chữ ký điện tử người ta phải áp dụng những công nghệ như mã hóa, chứng thực…
Mục tiêu của chuyên đề là tìm hiểu về mật mã học khóa công khai tạo ra chữ kýđiện tử; ứng dụng của nó vào các tài liệu văn bản được soạn trên Word và trong email.Trong đó, hệ mã hóa RSA là hệ mã hóa điển hình của mật mã công khai cùng với hàmbăm mật mã học một chiều chính là những công cụ chính trong việc tạo ra chữ ký điệntử
Phương pháp nghiên cứu chủ đạo là tập trung vào nghiên cứu cơ sở lý luận vềchứng thực thông tin, một số sơ đồ chữ ký điện tử phổ biến, hàm băm kết hợp cho chữ
ký điện tử mô hình hóa và ứng dụng của chữ ký điện tử trong email
Chuyên đề này gồm bốn chương đề cập tới vấn đề chữ ký điện tử và ứng dụngchữ ký điện tử
Chương 1: Tổng quan về chữ ký điện tử.
Nội dung: Khái niệm về chữ ký điện tử, chữ ký số, quy trình tạo, kiểm tra chữ
ký điện tử và một số sơ đồ chữ ký điện tử phổ biến
Chương 2: Mã hóa dữ liệu.
Nội dung: Khái niệm về mã hóa dữ liệu, phân loại và các ứng dụng của mã hóa
dữ liệu
Chương 3: Hàm băm kết hợp hàm băm vào chữ ký điện tử.
Nội dung: Định nghĩa hàm băm các tính chất cơ bản, vai trò và một số giảithuật băm thông dụng như: Thuật toán hàm băm SHA, thuật toán MD5
Chương 4: Lợi ích và ứng dụng chữ ký điện tử.
Nội dung: Lợi ích chữ ký điện tử và ứng dụng chữ ký điện tử trong Word vàemail
Trang 61 TỔNG QUAN VỀ CHỮ KÝ ĐIỆN TỬ1.1 Tổng quan về chữ ký điện tử
1.1.1 Lịch sử của chữ ký điện tử
Con người đã sử dụng các hợp đồng dưới dạng điện tử từ hơn 100 năm nay vớiviệc sử dụng mã Morse và điện tín Vào năm 1889, tòa án tối cao bang NewHampshire (Hoa Kỳ) đã phê chuẩn tính hiệu lực của chữ ký điện tử, thỏa thuận đầutiên được ký kết mang tính điện tử là giữa USA và Ireland năm 1998 Tuy nhiên, chỉvới những phát triển của khoa học kỹ thuật gần đây thì chữ ký điện tử mới đi vào cuộcsống một cách rộng rãi
Hiện nay chữ ký điện tử có thể bao hàm các cam kết gửi bằng email, nhập các
số định dạng cá nhân (PIN) vào các máy ATM, ký bằng bút điện tử tại quầy tính tiền,
ký các hợp đồng điện tử online…
1.1.2 Khái niệm
Chữ ký điện tử là thông tin đi kèm theo dữ liệu (văn bản, hình ảnh, video…)nhằm mục đích xác định người chủ của dữ liệu đó Chữ ký điện tử được sử dụng trongcác giao dịch điện tử Xuất phát từ thực tế, chữ ký điện tử cũng cần đảm bảo chứcnăng xác định được người chủ cùng một dữ liệu nào đó có bị thay đổi không [6]
Hiện nay chuẩn phổ biến được dùng cho chữ kí điện tử là OpenPGP (hỗ trợ bởiPGP và GnuPG)
Chữ ký điện tử thường được phân thành hai loại chính:
- Chữ ký số (Digital Signature)
- E-Sign
Mô hình chung của chữ ký điện tử:
Hình 1.1 Mô hình chung của chữ ký điện tử.
Trang 71.1.3 So sánh chữ ký thông thường và chữ ký điện tử
Bảng 1.1 So sánh chữ ký thông thường và chữ ký điện tử [1]
Ký một tài liệu của tài liệu.Chữ ký là một phần vật lý
Chữ ký điện tử không gắnkiểu vật lý vào bức thôngđiệp nên thuật toán đượcdùng phải “không nhìnthấy” theo một cách nào đótrên bức thông điệp
Kiểm tra Chữ ký kiểm tra bằng cách
so sánh nó với chữ ký xácthực khác Tuy nhiên đâykhông phải là một phươngpháp an toàn vì dễ bị giảmạo
Chữ ký điện tử có thể kiểmtra nhờ dùng một thuậttoán “kiểm tra công khai”.Như vậy, bất kì ai cũng cóthể kiểm tra được chữ kýđiện tử Việc dùng chữ kýđiện tử an toàn có thể chặnđược giả mạo
Bản copy thông điệp được
ký
Bản copy thông điệp được
ký bằng chữ ký thôngthường có thể khác với bảngốc
Bản copy thông điệp được
ký bằng chữ ký điện tử thìđồng nhất với bản gốc,điều này có nghĩa là cầnphải ngăn chặn một bứcthông điệp ký số không bịdùng lại
1.1.4 Chữ ký số (Digital signature)
Chữ ký số (digital signature) là đoạn dữ liệu ngắn đính kèm với văn bản gốc đểchứng thực tác giả (người ký văn bản) của văn bản và giúp người nhận kiểm tra tínhtoàn vẹn của nội dung văn bản gốc
Có thể hiểu chữ ký số là một tập con của chữ ký điện tử, có độ an toàn cao vàđược sử dụng rộng rãi thông qua nhà cung cấp chính thức
Chữ ký số khóa công khai là mô hình sử dụng các kỹ thuật mật mã để gắn vớimỗi người sử dụng một cặp khóa công khai – bí mật và qua đó có thể ký các văn bảnđiện tử cũng như trao đổi các thông tin mật
Chữ ký số chứng minh được tính tin cậy của thông tin, có khả năng kiểm trađược người ký và thời gian ký, có khả năng xác thực các nội dung tại thời điểm ký,nghĩa là có thể cho phép kiểm định được thông tin đúng là do một người gửi chứkhông phải là người thứ 3 mạo danh và thông tin không bị sửa đổi
Các thành viên thứ 3 có thể kiểm tra chữ ký để giải quyết các tranh chấp nếu có.Phương pháp chữ ký số chủ yếu bao gồm ba giải thuật chính:
- Tạo 1 cặp Private Key (khóa riêng tư) và Public Key (khóa công khai)
- Một giải thuật Signing (đăng ký)
- Một giải thuật Verification (xác minh)
Trang 8Hình 1.2 Giải thuật chữ ký số.
1.1.5 E-SIGN
Là dạng chữ ký thường không sử dụng PKI (Public Key Infrastructure – cơ sở
hạ tầng khóa công khai), chủ yếu quản lý dựa vào danh tính và nhận dạng Logs in)
(Log-Có tính bảo mật không cao nên chỉ thích hợp cho các hệ thống đóng
1.1.6 Yêu cầu của chữ ký điện tử
Phụ thuộc vào thông điệp được ký (đảm bảo kiểm tra tính xác thực của thông điệp).Việc tạo ra chữ ký điện tử phải thật đơn giản, thuận tiện, dễ dàng cho việc kiểmtra, người nhận có thể dễ dàng trong việc kiểm định chữ ký để xác nhận tính hợp lệcủa thông tin nhận được, khó giả mạo chữ ký
Phải lưu giữ được bản sao của chữ ký điện tử
1.1.7 Yêu cầu trong thực tế
Tất cả các mô hình chữ ký số cần phải đạt được một số yêu cầu để có thể đượcchấp nhận trong thực tế:
- Chất lượng của thuật toán phải đảm bảo
- Chất lượng của phần mềm hay phần cứng thực hiện thuật toán
- Khóa bí mật phải được giữ an toàn
- Quá trình phân phối khóa công khai phải đảm bảo mối liên hệ giữa khóa vàthực thể sở hữu khóa là chính xác Việc này thường được thực hiện bởi hạ tầng khóacông khai (PKI) và mối liên hệ hai chiều giữa khóa với người sở hữu được chứng thựcbởi những người điều hành PKI Đối với hệ thống PKI mở, nơi mà tất cả mọi ngườiđểu có thể yêu cầu sự chứng thực trên thì khả năng sai sót là rất thấp Tuy nhiên cácPKI thương mại cũng đã gặp nhiều vấn đề có thể dẫn đến những văn bản bị ký sai
Trang 9- Những người sử dụng (và phần mềm) phải thực hiện các quá trình đúng thủtục (giao thức) Chỉ khi tất cả các điều kiện trên được thỏa mãn thì chữ ký số mới làbằng chứng xác định người chủ (hoặc người có thẩm quyền) của văn bản.
1.1.8 Luật pháp về chữ ký điện tử
Một số cơ quan lập pháp, dưới sự tác động của các doanh nghiệp hy vọng thulợi từ PKI hoặc với mong muốn là người đi tiên phong trong lĩnh vực mới đã ban hànhcác điều luật cho phép, xác nhận hay khuyến khích việc sử dụng chữ ký điện tử Liênhợp quốc cũng có những dự án đưa ra những bộ luật mẫu trong vấn đề này Tuy nhiên,các quy định này lại thay đổi theo từng nước tùy theo điều kiện về trình độ khoa học(mật mã học) Chính sự khác nhau này làm bối rối những người sử dụng tiềm năng,gây khó khăn cho việc kết nối giữa các quốc gia và do đó làm chậm lại tiến trình phổbiến chữ ký điện tử
Ở Việt Nam, luật giao dịch điện tử có hiệu lực từ ngày 01/3/2006 công nhận giátrị pháp lý của chữ ký điện tử, Quyết định số 25/2006/QĐ-BTM về quy chế sử dụngchữ ký điện tử của Bộ Thương mại Sau đó, ngày 15/2/2007 Thủ Tướng Chính phủ đãban hành Nghị định 26 về chữ ký số và dịch vụ chứng thực chữ ký số
1.1.9 Quy trình tạo và kiểm tra chữ ký điện tử
- Quy trình tạo chữ ký điện tử:
+ Dùng giải thuật băm để thay đổi thông điệp cần truyền đi, kết quả ta đượcmột message digest (thông tin đã được rút gọn), dùng giải thuật MD5 ta được digest cóchiều dài 128 bit, dùng giải thuật SHA ta có chiều dài 160 bit
+ Sử dụng private key để mã hóa message digest thu được ở bước 1, thôngthường ở bước này ta dùng giải thuật RSA
Hình 1.3 Quy trình tạo chữ ký điện tử.
- Quy trình kiểm tra:
+ Dùng public key của người gửi (khóa này được thông báo đến mọi người) đểgiải mã chữ ký số của message
+ Dùng giải thuật MD5 hoặc SHA băm message đính kèm
Trang 10+ So sánh kết quả thu được ở các bước trên Nếu trùng nhau ta kết luậnmessage này không bị thay đổi trong quá trình truyền và message này là của ngườigửi [2]
Hình 1.4 Quy trình kiểm tra chữ ký điện tử.
1.1.10 Một số tổ chức chứng thực chữ ký điện tử
Tổ chức Entrust, một trong những hãng đi đầu về phát triển PKI, Entrust là một
tổ chức chứng thực điện tử tin cậy trên thế giới được các công ty thuộc lĩnh vựcthương mại điện tử trên thế giới tin cậy Các sản phẩm của Entrust theo chuẩn X509V3, ngoài ra còn tuân theo các chuẩn quốc tế về mã hóa như PKCS, RFC
Tổ chức chứng thực điện tử tại Việt Nam VASC, công ty VASC đã xây dựngthành công hệ thống quản lý và cung cấp chứng chỉ số của mình từ tháng 4/2002 và từtháng 8/2002 đã chính thức phục vụ khách hàng
1.2 Một số sơ đồ chữ ký điện tử phổ biến
1.2.1 Rivest Shamir Adleman (RSA)
1.2.1.1 Mô tả hệ mật mã RSA
Như đã đề cập ở chương 1, năm 1978, Rivest, Shamir và Adleman tìm ra một
hệ mật mã khóa công khai và một sơ đồ chữ ký điện tử hoàn toàn có thể ứng dụngtrong thực tiễn mà nay gọi là RSA, đây là bước ngoặt có tính cách mạng trong lịch sửkhoa học mật mã hiện đại
Sơ đồ chung của hệ mật mã khóa công khai được cho bởi
S = (P, C, K, E, D)
Trong đó P là tập ký tự bản rõ, C là tập ký tự bản mã, K là tập các khóa k, mỗikhóa k gồm có hai phần k = (k’, k’’), k’ là khóa công khai dành cho việc lập mã, cònk’’ là khóa bí mật dành cho việc giải mã Với mỗi ký tự bản rõ x ∈ P, thuật toán lập
mã E cho ta ký tự mã tương ứng y = E(k’, x) ∈ C, và với ký tự mã y thuật toán giải mã
D sẽ cho ta lại ký tự bản rõ x D(k’’, y) = D(k’’, E(k’ ,x)) = x
Để xây dựng một hệ mật mã khóa công khai RSA, ta chọn trước một số nguyên
n = p.q là tích của hai số nguyên tố lớn, chọn một số e sao cho gcd(e, φ(n)) = 1, và tính
Trang 11số d sao cho e.d ≡ 1(mod φ(n)) Mỗi cặp k = (k’, k’’), với k’ = (n, e) và k’’ = d sẽ làmột cặp khóa của một hệ mật mã RSA cụ thể cho một người tham gia.
Như vậy sơ đồ chung của hệ mật mã RSA được định nghĩa bởi danh sách, trongđó:
P = C = Zn, n là số nguyên Blum (tích của hai số nguyên tố);
K = {k = (k’, k’’) k’ = (n, e) và k’’ = d, gcd (e, φ(n)) = 1, e.d ≡ 1(mod φ(n))};
E và D được xác định bởi:
E (k’, x) = x¬e mod n, với mọi x ∈ P,
D (k’’, y) = yd mod n, với mọi y ∈ C
Để chứng tỏ định nghĩa trên là hợp thức, ta phải chứng minh rằng với mọi cặpkhóa k = (k’, k’’), và mọi x ∈ P ta đều có
D (k’’, E(k’, x)) = x
Thực vậy, do e.d e.d ≡ 1(mod φ(n)) ta có thể viết e.d = t.φ(n) + 1 Nếu x nguyên
tố với n thì ta có D (k’’, E(k’, x)) = xed ≡ x^(tφ(n)).x(mod n) = x
Nếu x không nguyên tố với n, thì do n = p.q, hoặc x chia hết cho p và nguyên tốvới q, hoặc x chia hết cho q và nguyên tố với p, và φ(n) = (p-1)(q-1), trong cả haitrường hợp ta đều có:
1.2.1.2 Thực hiện hệ mật mã RSA ứng dụng trong chữ ký số
Để thực hiện hệ mật mã RSA cho một mạng truyền tin bảo mật, ngoài việc xâydưng các chương trình tính toán hàm E (với tham biến đầu vào là n, e và x) và hàm D(với tham biến đầu vào là n, d và y), ta còn phải chọn cho mỗi người tham gia một bộ(n,e,d) để tạo các khoá công khai k' và khoá bí mật k" Hệ mã của mỗi người tham giachỉ có khả năng bảo mật khi n = p.q là số nguyên rất lớn (và do đó p q cũng phải lànhững số nguyên tố rất lớn); rất lớn có nghĩa là p q phải có biểu diễn thập phân cỡ hơn
100 chữ số, do đó n có cỡ hơn 200 chữ số thập phân, hay n > 10200!
Tính toán các số e d, hay thực hiện các hàm E, D, đều chủ yếu là thực hiện cácphép tính số học trên các số nguyên rất lớn
Lược đồ chữ ký số ứng dụng RSA:
- Tạo khóa:
Sơ đồ chữ ký cho bởi bộ năm (P, C, K, E, D)
Cho n=pq, với mỗi p, q là các số nguyên tố lớn khác nhau φ(n) = (p - 1)(q - 1)
Trang 12Cho P = C = Zn và xác định k ={(n, p, q, e, d) e.d ≡ 1(mod φ(n))}
Các giá trị n, d là công khai các giá trị p, q, e là các giá trị bí mật
- Tạo chữ ký:
Với mỗi k = (n, p, q, e, d) xác định Sig k’(x) = xe mod n
- Kiểm tra chữ ký:
Ver k’’ (x, y) = true tương đương x ≡ yd mod n (x, y ∈ Zn)
Người ta có thể giả mạo chữ ký bằng cách chọn y sau đó tính x = Ver k’’(y), khi
đó y = sign k’(x) Một cách khắc phục khó khăn này là việc yêu cầu x phải có nghĩa
Do đó chữ ký giả mạo thành công với xác xuất rất nhỏ Hơn nữa việc sử dụng hàmhash liên kết với lược đồ chữ ký loại bỏ phương pháp giả mạo
1.2.1.3 Tính bảo mật của hệ mật mã RSA
Nếu ta biết hai thừa số p,q của n thì dễ tìm được x từ y, và nói chung có bằngchứng để coi rằng bài toán RSA (hay bài toán thám mã RSA) là có độ khó tươngđương với bài toán phân tích số nguyên (Blum) thành thừa số nguyên tố Do đó, giữtuyệt mật khoá bí mật d, hay giữ tuyệt mật các thừa số p, q, là có ý nghĩa rất quyếtđịnh đến việc bảo vệ tính an toàn của hệ mật mã RSA
Một mạng truyền tin bảo mật sử dụng sơ đồ các hệ mật mã RSA được xem là antoàn, nếu tuân thủ các điều kiện cơ bản mỗi người tham gia phải độc lập lựa chọn cáctham số n, e, d của riêng mình, chọn n cũng có nghĩa là chọn các thừa số p, q của n (n
= p.q), và do có p,q nên tính được φ(n) = (p – 1)(q – 1), và từ đó tìm được e, d tươngđối dễ dàng Nhưng cũng chính vì vậy mà sau khi đã chọn thì mỗi người tham gia phảigiữ tuyệt đối bí mật các giá trị p, q, d, chỉ công bố khóa công khai (n, e) mà thôi [6]Tuy nhiên đó là điều kiện chung còn trong thực tế vẫn có thể còn nhiều sơ hở màngười thám mã có thể sử dụng để tấn công vào tính bảo mật của các hệ mã RSA khó
mà lường trước hết được Ví dụ:
- Dùng môđun n chung Giả sử có hai người tham gia A và B cùng sử dụng mộtmôđun chung n trong khóa công khai của mình, chẳng hạn A chọn khoá công khai (ne)
và giữ khóa bí mật d, B chọn khóa công khai (n,a) và giữ khóa bí mật b Một ngườitham gia thứ ba C gửi một văn bản cần bảo mật x đến cả A và B thì dùng các khoácông khai nói trên để gửi đến A bản mật mã y = xe mod n và gửi đến B bản mật mã z
= xa mod n Ta sẽ chứng tỏ rằng một người thám mã O có thể dựa vào những thông tin
n, e ,a, y, z trên đường công khai mà phát hiện ra bản rõ x như sau:
yc(zh) Dùng số mũ lập mã e bé Để cho việc tính toán hàm lập mã được hiệu quả, ta dễ
có xu hướng chọn số mũ e của hàm lập mã là một số nguyên bé, chẳng hạn e =3 Tuy
Trang 13nhiên, nếu trong một mạng truyền tin bảo mật dùng các hệ mật mã RSA, nếu có nhiềungười cùng chọn số mũ lập mã e bé giống nhau thì sẽ có nguy cơ bị tấn công bởi việcthám mã như sau Giả sử có ba người tham gia chọn ba khoá công khai là (n1, e), (n2,e), (n3, e) với cùng số mũ e =3 Một người tham gia A muốn gửi một thông báo x cho
cả ba người đó, và để bảo mật, gửi bản mã c = X mod n cho người thứ i Ba môđun n
là khác nhau, và có phần chắc là từng cặp nguyên tố với nhau Một người thám mã cóthể dùng định lý số dư Trung quốc để tìm một số m (0< m < n1n2n3) thoả mãn:
an toàn ta nên chọn các số mũ e và d là những số nguyên lớn, có kích cỡ lớn gần nhưbản thân số n
1.2.2 Chữ ký ElGamal
1.2.2.1 Mô tả hệ mật mã ElGamal [2]
Hệ mật mã ElGamal được T ElGamal đề xuất năm 1985, dựa vào độ phức tạpcủa bài toán tính lôgarit rời rạc, và sau đó đã nhanh chóng được sử dụng rộng rãikhông những trong vấn đề bảo mật truyền tin mà còn trong các vấn đề xác nhận và chữ
Với K = (p, a, α, β) và với số ngẫu nhiên k � Z*p-1, định nghĩa sigk(r, s) trong đó:
r = αk mod p và s = (x – ar) k-1 mod(p – 1)
Trang 14=> βr.rβ ≡ αa.r αr.s mod p ≡ αx mod p (vì ar + rs ≡ x mod(p – 1)).
A tính chữ ký bằng các dùng cả giá trị bí mật a (là một phần của khóa) lẫn sốngẫu nhiên bí mật k (dùng để ký trên x) Việc kiểm tra có thể được thực hiện duy nhấtbằng thông tin công khai
Ví dụ Giả sử p = 467, α = 2, a = 127, khi đó β = αa mod p = 2127mod467 =
132 Giả sử A có thông báo x = 100 và A chọn ngẫu nhiên k = 213 vì (213,466) = 1 và213-1mod466 = 431, A ký trên x như sau:
1.2.2.2 Tính an toàn của sơ đồ chữ ký ElGamal [7]
Sơ đồ chữ ký ElGamal được xem là an toàn, nếu việc ký trên một văn bản làkhông thể giả mạo được, nói cách khác, không thể có một người nào ngoài chủ thể hợppháp có thể giả mạo chữ ký của chủ thể hợp pháp đó trên một văn bản bất kỳ Vì vậy,việc giữ bí mật khoá k' = a dùng để tạo chữ ký là có ý nghĩa quyết định đối với việcbảo đảm tính an toàn của chữ ký Có thể để lộ khoá bí mật k' = a trong những trườnghợp nào, và có thể không để lộ k' = a mà vẫn giả mạo chữ ký được không?
Đầu tiên, để kiểm tra chữ ký thì cần phải kiểm tra bất đẳng thức r < p Nếu như
r > p thì có khả năng bị tấn công, cách này đề xuất bởi Bleichenbacher Giả sử (r,s) làchữ ký của bức điện m Tội phạm có thể giả mạo chữ ký với một bức điện bất kỳ m’bằng cách hình thành như sau:
)1(mod
u
) 1 (mod
Chúng ta thấy bức điện m’ với chữ ký (r’, s’), khóa mở β = yA thỏa mãn điềukiện:
) (mod )
ru A s r
Tấn công kiểu như thế này là không thể nếu như r < p, bởi vì trong trường hợpnày giá trị r’ được tính toán theo bước 3 ứng dụng định lý phần dư Trung Hoa theomodul p (p-1)
Thứ hai, người A cần phải lựa chọn phần tử ngẫu nhiên α
Trang 15dụng có một tham số mở α
và p), thì cần phải kiểm tra một số lần rằng α
là số ngẫunhiên (điều này có thể áp dụng hàm tạo số giả ngẫu nhiên)
Giả sử rằng các tham số mở α
và p được lựa chọn bởi tội phạm O Tham số phình thành trên cơ sở phương pháp chuẩn Giả sử p-1=bq, với q là số nguyên tố đủ lớn,nhưng b có thể có thừa số nguyên tố nhỏ, và tính toán logarit trong nhóm bậc b khôngkhó
O hình thành tham số theo cách sau:
và c < b
Chúng ta biết rằng việc tính toán logarit rời rạc của khóa mở yA là bài toán khó.Thế nhưng tính toán logarit của độ lớn
q A y
theo cơ số
q
α không tạo nên một sự khókhăn nào Logarit rời rạc này bằng z≡x A (mod b)
, có nghĩa thỏa mãn đồng dư thức sau:
) (mod )
m t s
cq
Chúng ta xem việc thẩm tra chữ ký:
) (mod )
y r
A s r
là tham số mở)
Thứ ba, liên quan đến chiều dài của tham số k Tạo ra chữ ký theo sơ đồElgamal là thuật toán ngẫu nhiên bởi vì tham số k được hình thành ngẫu nhiên Akhông bao giờ dùng khóa để ký các bức điện khác nhau là có thời gian sống ngắn Nếunhư tham số k sử dụng trở lại đối với chữ ký của hai bức điện m1 và m2, mà hai bứcđiện thỏa mãn m1 ≠m2(mod p−1)
, thì từ phương trình tính s của sơ đồ chữ ký chúng
ta có:
)1(mod)
(s1 −s2 ≡m1−m2 p−
l
Trang 161.2.3.1 Sơ đồ chữ ký Schnorr
Đây là sơ đồ chữ ký thuộc họ của Elgamal nhưng có những tính chất tốt hơn sovới sơ đồ Elgamal Sơ đồ chữ ký được cho ở dưới:
Thiết lập tham số hệ thống:
- Chọn hai số nguyên tố p và q, thỏa mãn điều kiện q|p-1 Và các số này được
chọn sao cho kích thước
Các tham số (p, q, g, H) sẽ phân bố giữa các người dùng hệ thống
Hình thành khóa mật và khóa công cộng:
A tạo ra số ngẫu nhiên
*
p Z
x∈
và thực hiện lệnh:
)
(mod p g
∈
m
, thì A tạo ra số ngẫu nhiên l∈Z q
và hình thànhcặp (e,s), ở đây:
Trang 17q xe
l s
r m H e
p g
||
( '
), (mod '
r m H e
p y
g
←
←
Verify (p, q, g, y, h) (m, (s, e))= TRUE, nếu như e’=e
Chú ý rằng khi tạo ra các tham số hệ thống, việc tạo phần tử sinh g có thể đượcxác định rất nhanh bởi vì q|p-1
Việc thẩm tra chữ ký đúng nếu như cặp (m,(s, e)) đúng là cặp “bức điện- chữký”, được tạo ra bởi A Nghĩa là:
)(mod
r ≡ s e ≡ xe+l e ≡ −e l e ≡ l ≡
Như chúng ta thấy việc ứng dụng nhóm con bậc q của nhóm Z pcho phép quátrình ký của sơ đồ Schonorr nhanh hơn nhiều so với sơ đồ Elgamal Để chuyển chữ kýcủa Schonorr cần 2|q| bít, trong khi đó để chuyển chữ ký Elgamal cần 2|p| bít Chữ kýngắn hơn rất nhiều cho phép giảm số lệnh cần thiết để hình thành chữ ký và thẩm địnhchữ ký trong sơ đồ Schonorr tốn O (log log )
2
2q p
, còn trong sơ đồ Elgamal cần O( p
3log
)
1.2.3.2 Chuẩn chữ ký DSS
Đây cũng là phiên bản cải tiến của Elgamal Nó được để xuất năm 1991, tuynhiên nó được chấp nhận làm chuẩn từ 01/12/1994 Giống như sơ đồ chữ ký Schnorr,chuẩn chữ ký DSS cũng có những ưu điểm so với Elgamal
Sơ đồ chữ ký được miêu tả như sau:
- Thiết lập tham số hệ thống:
Các tham số hệ thống giống như sơ đồ chữ ký Schnorr Và chuẩn DSS chọnhàm hash là SHA-1 Các tham số của hệ thống là (p, q, g, H) xem sơ đồ Schnorr
- Tạo khóa:
A tạo ra số ngẫu nhiên x∈Z p
là khóa mật và tính khóa công cộng:
)
(mod p g
∈
, A tạo số ngẫu nhiên l∈Z p
và hình thành nên cặp(r,s), với
Trang 18)(mod)
((
),))(mod(mod
(
l s
q p
), (mod )
(
), (mod
2 1
1
q rw
u
q w
m H u
q s
Đặt ( (mod ))(mod ) [ )(mod )](mod )
) (mod )
(mod )
g q p
g
))](mod(mod
[))](mod)(mod
[( 1 ( ( ) )(mod )
Những ưu điểm, những chú ý tương tự sơ đồ chữ ký Schnorr
Trang 19CHƯƠNG 2 MÃ HÓA DỮ LIỆU2.1 Tổng quan về mã hóa dữ liệu
2.1.1 Khái niệm về mã hóa dữ liệu
Encrypt (encipher, encryption): mã hóa – đó là quá trình biến đổi thông tin từdạng ban đầu - có thể hiểu được thành dạng không thể hiểu được, với mục đích giữ bímật thông tin đó
Hình 2.5 Quy trình mã hóa dữ liệu.
2.1.2 Phân loại mã hóa dữ liệu
2.1.2.1 Phân loại theo các phương pháp
- Mã hóa hai chiều:
Mã hoá đối xứng (Symetric cryptography): Mã hoá đối xứng còn có một số têngọi khác như Secret Key Cryptography (hay Private Key Cryptography), sử dụng cùngmột khoá cho cả hai quá trình mã hoá và giải mã
Hình 2.6 Quy trình mã hóa đối xứng.
Trang 20Trong hệ thống mã hoá đối xứng, trước khi truyền dữ liệu, 2 bên gửi và nhậnphải thoả thuận về khoá dùng chung cho quá trình mã hoá và giải mã Sau đó, bên gửi
sẽ mã hoá bản rõ (Plaintext) bằng cách sử dụng khoá bí mật này và gửi thông điệp đã
mã hoá cho bên nhận Bên nhận sau khi nhận được thông điệp đã mã hoá sẽ sử dụngchính khoá bí mật mà hai bên thoả thuận để giải mã và lấy lại bản rõ (Plaintext) [10]
Mã hóa đối xứng có thể được chia thành hai loại:
- Loại thứ nhất tác động trên bản rõ theo từng nhóm bits: từng khối dữ liệutrong văn bản ban đầu được thay thế bằng một khối dữ liệu khác có cùng độ dài Đốivới các thuật toán ngày nay thì kích thước chung của một khối là 64 bits
- Loại thứ hai tác động lên bản rõ theo từng bit một: dữ liệu của văn bản được
mã hoá từng bit một Các thuật toán mã hoá dòng này có tốc độ nhanh hơn các thuậttoán mã hoá khối và nó thường được áp dụng khi lượng dữ liệu cần mã hoá chưa biếttrước
Một số thuật toán nổi tiếng trong mã hoá đối xứng là: DES, Triple DES(3DES), RC4, AES…
Mã hoá bất đối xứng (Asymetric cryptography): Hay còn được gọi với một cáitên khác là mã hoá khoá công khai (Public Key Cryptography), nó được thiết kế saocho khoá sử dụng trong quá trình mã hoá khác biệt với khoá được sử dụng trong quátrình giải mã Một người bất kỳ có thể dùng khoá này để mã hoá dữ liệu nhưng chỉ duynhất người mà có khoá giải mã tương ứng mới có thể đọc được dữ liệu mà thôi Do đótrong thuật toán này có 2 loại khoá: Khoá để mã hoá được gọi là Public Key, khoá đểgiải mã được gọi là Private Key
Hình 2.7 Quy trình mã hóa bất đối xứng.
Một ví dụ điển hình của mã hóa bất đối xứng là RSA
- Mã hóa một chiều: Là loại mã hóa mà chỉ có thể mã hóa từ một thông điệpthành một thông điệp rút gọn mà không thể giải mã để trở lại thông điệp ban đầu
Trang 21Ví dụ: SHA1, MD5…
2.1.2.2 Phân loại theo số lượng khoá
Mã hoá khoá bí mật (Private-key Cryptography): là một dạng mã hóa mà khi
mã hóa người dùng trao đổi thông tin với nhau không cần trao đổi khóa bí mật, nhưngkhi nhận được thông điệp gửi đến thì không thể xác nhận chính xác người gửi cũngnhư nội dung có bị thay đổi hay không
Mã hoá khoá công khai (Public-key Cryptography): là một dạng mật mã hóacho phép người sử dụng trao đổi các thông tin mật mà không cần phải trao đổi cáckhóa chung bí mật trước đó Điều này được thực hiện bằng cách sử dụng một cặp khóa
có quan hệ toán học với nhau là khóa công khai và khóa cá nhân (hay khóa bí mật)
2.1.3 Tầm quan trọng của mã hóa dữ liệu
Thuật toán Cryptography đề cập tới nghành khoa học nghiên cứu về mã hoá vàgiải mã thông tin Cụ thể hơn là nghiên cứu các cách thức chuyển đổi thông tin từ dạng
rõ (clear text) sang dạng mờ (cipher text) và ngược lại Đây là một phương pháp hỗ trợrất tốt cho trong việc chống lại những truy cập bất hợp pháp tới dữ liệu được truyền đitrên mạng, áp dụng mã hoá sẽ khiến cho nội dung thông tin được truyền đi dưới dạng
mờ và không thể đọc được đối với bất kỳ ai cố tình muốn lấy thông tin đó Mã hoáđược áp dụng như một biện pháp nhằm giúp chúng ta tự bảo vệ chính mình cũng nhưnhững thông tin mà chúng ta gửi đi Bên cạnh đó, mã hoá còn có những ứng dụngkhác như là bảo đảm tính toàn vẹn của dữ liệu, tính bí mật, tính xác thực và tính khôngthể chối bỏ [10]
2.2 Các ứng dụng của mã hóa dự liệu
- Securing Email (bảo mật email)
- Authentication System (việc xác thực hệ thống)
- Secure E-commerce (an toàn trong thương mại điện tử)
- Virtual Private Network (bảo mật mạng riêng ảo)
- Wireless Encryption (mã hóa mạng không dây)
- Là nền tảng của kĩ thuật chữ kí điện tử, hệ thống PKI (hạ tầng khóa công khai)…
- Tạo chìa khóa từ mật khẩu [9]
Trang 22CHƯƠNG 3 HÀM BĂM VÀ KẾT HỢP HÀM BĂM VÀO CHỮ KÝ ĐIỆN TỬ3.1 Tổng quan về hàm băm
3.1.1 Định nghĩa hàm băm
Hàm băm (Hash function) là một hàm toán học chuyển đổi một thông điệp đầuvào có độ dài bất kỳ thành một dãy bit có độ dài cố định (tuỳ thuộc vào thuật toánbăm) Dãy bit này được gọi là thông điệp rút gọn (message digest) hay giá trị băm(hash value), đại diện cho thông điệp ban đầu [9]
Hàm băm (hash function) là hàm một chiều mà nếu đưa một lượng dữ liệu bất
kì qua hàm này sẽ cho ra một chuỗi có độ dài cố định ở đầu ra
Hình 3.8 Ví dụ mô tả hàm băm.
3.1.2 Tính chất cơ bản của hàm băm
Tính đụng độ: Theo nguyên lý Diricle: Nếu có (n+1) con thỏ được bỏ vào n cáichuồng thì phải tồn tại ít nhất một cái chuồng mà trong đó có ít nhất là hai con thỏ ởchung Rõ ràng với không gian giá trị băm nhỏ hơn rất nhiều so với không gian tin vềmặt kích thước thì chắc chắn sẽ tồn tại đụng độ, nghĩa là có hai tin x # x’ mà giá trịbăm của chúng là giống nhau, tức h(x) = h(x’)
Sau đây chúng ta sẽ xét các dạng tấn công có thể có, từ đó rút ra các tính chấtcủa hàm băm:
- Tính chất 1: Hàm băm không va chạm yếu
Hàm băm h là không va chạm yếu nếu khi cho trước một bức điện x, không thểtiến hành về mặt tính toán để tìm ra một bức điện x’ ^ x mà h(x’) = h(x) [1 - tri 10]
Ví dụ: Người A gửi cho B (x, y) với y = SigA(h(x)) Nhưng trên đường truyền,tin bị lấy trộm Tên trộm, bằng cách nào đó tìm được một bản thông điệp x’ có h(x’) =h(x) mà x’ ^ x Sau đó, tên trộm đưa x’ thay thế x rồi truyền tiếp cho người B Người
B nhận được và vẫn xác thực được thông tin đúng đắn
Để tránh tấn công trên, hàm băm phải không va chạm yếu
- Tính chất 2: Hàm băm không va chạm mạnh
Trang 23Hàm băm h là không va chạm mạnh nếu không có khả năng tính toán để tìm rahai bức thông điệp x và x’ mà x ^ x’ và h(x) = h(x’).
Ví du: Đầu tiên, tên giả mạo tìm ra được hai bức thông điệp x’ và x (x’ ^ x) mà
có h(x’) = h(x) (ta coi bức thông điệp x là hợp lệ, còn x’ là giả mạo) Tiếp theo, têntrộm đưa cho ông A và thuyết phuc ông này kí vào bản tóm lược h(x) để nhận được y.Khi đó (x’, y) là bức điện giả mạo nhưng hợp lệ
Để tránh kiểu tấn công này, hàm h phải thỏa mãn tính không va chạm mạnh
- Tính chất 3: Hàm băm một chiều
Hàm băm h là một chiều nếu khi cho trước một bản tóm lược thông báo z,không thể thực hiện về mặt tính toán để tìm bức điện x sao cho h(x) = z
Việc giả mạo các chữ kí trên bản tóm lược thông báo z ngẫu nhiên thường xảy
ra với sơ đồ chữ kí Giả sử tên giả mạo tính chữ kí trên bản tóm lược thông báo z ngẫu nhiên như vậy Sau đó anh ta tìm x sao cho z = h(x) Nếu làm được như vậy thì (x,y) là
bức điện giả mạo hợp lệ Để tránh được tấn công này, h cần thoả mãn tính chất một chiều.[4]
3.1.3 Vai trò hàm băm trong mật mã hiện đại
Vai trò cơ bản của các hàm băm mật mã là một giá trị băm coi như ảnh đại diệnthu gọn, đôi khi gọi là một dấu vết (imprint), vân tay số (digital fingerprint), hoặc tómlược thông báo (message digest) của một xâu đầu vào, và có thể được dùng như là mộtđịnh danh duy nhất với xâu đó
Các hàm băm thường được dùng cho toàn vẹn dữ liệu kết hợp với các lược đồchữ kí số
Một lớp các hàm băm riêng được gọi là mã xác thực thông báo (MAC) chophép xác thực thông báo bằng các kĩ thuật mã đối xứng
Các hàm băm lấy một thông báo đầu vào và tạo một đầu ra được xem như là:
- Mã băm (hash code)
- Kết quả băm (hash result)
- Hoặc giá trị băm (hash value) [9]
3.1.4 Phân loại hàm băm
Hình 3.9 Phân loại hàm băm.
Trang 24Kíchthướckhối
Trang 253.2 Một số giải thuật Băm thông dụng
3.2.1 Thuật toán hàm băm SHA-1
3.2.1.1 Giới thiệu hàm băm SHA-1 [1]
Năm 1990, Ron Rivest đã sáng tạo ra hàm băm MD4 Sau đó năm 1992, ôngcải tiến MD4 và phát triển một hàm băm khác MD5 Năm 1993, Cơ quan An ninhQuốc gia Hoa Kỳ/Cục An ninh Trung ương (NSA) đã công bố,một hàm băm rất giốngvới MD5 được gọi là SHA Vào năm 1995, sau việc khắc phục những lỗ hổng kỹthuật, NSA đã thay đổi SHA trở thành một hàm băm mật mã khác gọi là SHA-1
SHA-1 (Sercue Hash Algorithm) là thuật toán cũng được xây dựng trên thuậttoán MD4, đang được sử dụng rộng rãi Thuật toán SHA-1 tạo ra chuỗi mã băm cóchiều dài cố định 160 bit từ chuỗi bit dữ liệu đầu vào x có chiều dài tùy ý
3.2.1.2 Thuật toán SHA-1
Input thông điệp với độ dài tối đa 264 bits
Output thông điệp rút gọn (message digest) có độ dài 160 bits
Giải thuật gồm 5 bước trên khối 512 bits:
- Bước 1 Nhồi dữ liệu:
Thông điệp được nhồi thêm các bit sao cho độ dài L mod 512 luôn đồng dư là 448.Thông điệp luôn luôn được nhồi thêm các bit
Số bit nhồi thêm phải nằm trong khoảng 1-512
Phần thêm vào cuối dữ liệu gồm 1 bit 1 và theo sau là các bit 0
- Bước 2 Thêm độ dài:
Độ dài khối dữ liệu ban đầu sẽ được biểu diễn dưới dạng nhị phân 64 bit vàđược thêm cuối chuỗi nhị phân mà ta thu được ở bước 1
Độ dài được biểu diễn dưới dạng nhị phân 64 bit không dấu
Kết quả thu được từ 2 bước là một khối dữ liệu có độ dài là bội số của 512.(Với cứ 512 bit là một khối dữ liệu)
- Bước 3 Khởi tạo bộ đệm MD (MD buffer):
Một bộ đệm 160 bit được dùng để lưu trữ các giá trị băm trung gian và kết quả
Bộ đệm được biểu diễn bằng 5 thanh ghi 32-bit với các giá trị khởi tạo ở dạng endian (byte có trọng số lớn nhất trong từ nằm ở địa chỉ thấp nhất) và có hai bộ đệm.Năm thanh ghi của bộ đệm đầu tiên được đánh đặt tên là A, B,C,D,E và tương tự cho
big-bộ đệm thứ hai là H0, H1, H2, H3, H4 Có giá trị như sau (Theo dạng Hex):