BAN CƠ YẾU CHÍNH PHỦ HỌC VIỆN KỸ THUẬT MẬT Mà ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ ĐỒ ÁN TỐT NGHIỆP Ứng dụng chữ ký số DSAECDSA đảm bảo an toàn cho ‘chiếc ví tiền mật mã’ Ngành: An toàn thông tin Mã số: Sinh viên thực hiện: Nguyễn Tiến Thành Lớp: AT10D Người hướng dẫn 1: TSKH. Nguyễn Khắc Việt IA Department – FPT University Hà Nội, 2018 Mục Lục Danh mục sơ đồ hình vẽ iv Danh mục ký hiệu viết tắt v 1. Mở đầu: 1 1.1 Tính cấp thiết của đề tài. 1 1.2 Mục tiêu thực hiện đồ án. 2 2. Dự kiến các chương mục: 2 Chương 1: Tổng quan về chữ ký số và “tiền mật mã bitcoin” 3 1. Tổng quan về chữ ký số. 3 1.1 Giới thiệu. 3 1.1.1 Khái niệm chữ ký số. 3 1.1.2 Phân loại chữ ký số. 4 1.1.3 Sơ đồ tổng quan của một hệ thống ký số điện tử. 5 1.2 Cơ sở hình thành lên chữ ký số. 6 1.2.1 Cơ sở toán học. 6 1.2.1.1 Sinh số nguyên tố và phân tích thừa số nguyên tố. 6 1.2.1.2 Phép mũ hóa và khai căn modul. 7 1.2.2 Hàm băm mật mã. 9 1.2.2.1 Giới thiệu 9 1.2.2.2 Các khái niệm và định nghĩa : 10 1.2.2.3 Cấu trúc cơ bản của thuật toán băm 11 1.2.2.4 Giải thuật MD4 12 1.2.2.5 Giải thuật MD5 12 1.2.2.6 Giải thuật SHA – 1: 15 1.2.3 Mật mã học và khóa mã công khai. 17 1.2.3.1 Một số thuật ngữ và khái niệm 17 1.2.3.2 Các hệ mã hóa 17 1.2.3.3 Ứng dụng của mã hóa 18 1.2.3.4 Hệ mã hóa bí mật : 18 1.2.3.5 Mật mã khóa công khai 18 1.2.3.6 Hệ mã hóa RSA 19 1.3 Nhận xét đánh giá về ưu nhược điểm của chữ ký số 23 1.3.1 Ưu điểm. 23 1.3.2 Nhược điểm 24 2. Tổng quan về “tiền mật mã bitcoin”. 24 2.1 giới thiệu. 24 2.1.1 Khái niệm đồng tiền mật mã bitcoin. 24 2.1.1.1 Tiền mật mã 24 2.1.1.2 Tiền mật mã Bitcoin. 25 2.1.2 Sơ lược về blockchain. 26 2.1.3 Nguyên lý hoạt động của Bitcoin. 28 2.1.4 Nền tảng kỹ thuật. 28 2.2 “chiếc ví tiền mật mã Bitcoin”. 29 2.2.1 Khái niệm. 29 2.2.2 Vấn đề cần giải quyết. 30 2.3 Đánh giá ưu nhược điểm của “tiền mật mã bitcoin”. 31 2.3.1 Ưu điểm. 31 2.3.2 Nhược Điểm. 31 2.3.3 Giải pháp. 32 Chương 2. Ứng dụng chữ ký số DSAECDSA đảm bảo an toàn cho ‘chiếc ví tiền mật mã’. 33 1. Giải thuật DSA. 33 1.1 Khái niệm. 33 1.2 Những tham số DSA. 33 1.3 Mô hình tạo và xác minh chữ ký. 34 2. Sơ đồ ký số trên đường cong elliptic. 35 2.1 Đường cong elliptic. 35 2.1.3 Đường cong Elliptic trên trường hữu hạn. 36 2.1.4 Đường cong elliptic trên trường FP (p là số nguyên tố). 36 2.1.5 Đường cong elliptic trên trường F2m. 37 2.2 Một số sơ đồ ký số trên đường cong elliptic. 37 2.2.1 Nhúng bản rõ vào đường cong elliptic. 37 2.2.1.1 Phép nhúng (Imbeding) 37 2.2.1.2 Phép mặt nạ (Mask) 38 2.2.2 Sơ đồ chữ ký ECDSA. 38 2.2.3 Sơ đồ chữ ký Nyberg – Rueppel. 39 2.2.4 Sơ đồ chữ ký mù Harn trên EC. 40 3. Ứng dụng chữ ký số DSAECDSA đảm bảo an toàn cho “chiếc ví tiền mật mã”. 41 3.1 Sơ đồ chữ ký tối ưu ngướng (thresholdoptimal) DSAECDSA 41 3.2 Phân tích mô hình ứng dụng cho ‘chiếc ví Bitcoin’. 43 3.3 Thử nghiệm và đánh giá 43 Tài Liệu tham khảo 46 Danh mục sơ đồ hình vẽ Hình 1a. Sơ đồ tổng quan 5 Hinh 1b: Ảnh minh họa làm việc của một hàm băm 10 Hình 2 : Giải thuật MD5 14 Hình 3: SHA1 16 Hình 4 : Mô hình của mật mã khóa công khai 19 Hình 5: Mã hóa RSA 20 Hình 6 : Ví dụ RSA 22 Hình 7: sơ đồ ký DSA. 35 Hình 8:Sơ đồ xác minh chữ ký DSA. 35 Hình 9: Một ví dụ về đường cong elliptic 36 Danh mục ký hiệu viết tắt Ký hiệu Tên đầy đủ Ý nghĩa BTC Ký hiệu đồng tiền Bitocin SHA Secure Hash Algorithm Giải thuật băm an toàn FIPS Federal Information Processing Standard Chuẩn bảo mật an toàn của chính phủ Mỹ NIST National Institute of Standards and Technology Viện Tiêu chuẩn và Kĩ thuật Quốc gia PHP Hypertext Preprocessor Ngôn ngữ lập trình kịch bản SHS Secure Hash Standard Bộ mã hóa thuật toán băm an toàn XOR Phép toán thao tác bit NSA National Security Agency Cơ quan An ninh Quốc gia Hoa Kỳ MD4, MD5 Message Digest 4, 5 các giải thuật đồng hóa thông tin 1. Mở đầu: 1.1 Tính cấp thiết của đề tài. Hiện nay nền kinh tế toàn càu hóa bùng nổ, các công ty, tập đoàn đa quốc gia hoạt động ra khỏi tầm biên giới mỗi quốc gia. Điều này cho thấy những mặt hạn chế còn tồn tại trong chế độ tiền pháp định, các hoạt động kinh doanh buôn bán thương mại không chỉ được kiểm soát bởi một quốc gia mà là sự kiểm soát đa chiều đa quốc gia. Đồng USD là đồng tiền chung được sử dụng nhiều nhất trên thế giới tuy nhiên việc tỷ giá được duy trì bởi một chính phủ gây ảnh hưởng lớn đến hoạt động giao thương của các doanh nghiệp kinh doanh toàn cầu. Internet phát triển kéo theo đó những hoạt động thương mại điện tử cũng có sự phát triển theo. Chính vì vậy đồng tiền mật mã đã ra đời giúp giải quyết những khó khăn của chế độ tiền pháp định còn tồn tại. Với ưu điểm sử dụng đa quốc gia, giao dịch nhanh, khó làm giả..... đã giúp những đồng tiền này phát triển mạnh mẽ trong những năm vừa qua. Một đại diện trong những đồng tiền mật mã chúng ta cần kể đến là Bitcoin, đây có thể nói là đồng tiền mật mã đầu tiên trên thế giới. Tuy nhiên, chúng ta mới chỉ biết đến những tác dụng, ưu điểm... của những đồng tiền mật mã này mà chưa biết đến những công nghệ đứng đằng sau chúng. Với tình hình ngày càng nhiều người đầu tư tiền bạc vào Bitcoin, cùng như có nhiều vụ các sàn giao dịch Bitcoin bị hacker tấn công gây hậu quả nhiêm trọng cho hàng ngàn người trong thời gian gần đây. Điều này cho thấy sức nóng, sự quan tâm của dư luận về đồng tiền mật mã này vậy nên em quyết định chọn đề tài “Ứng dụng chữ ký số DSAECDSA đảm bảo an toàn cho ‘chiếc ví tiền mật mã’” là đề tài thực hiện đồ án tốt nghiệp của mình . 1.2 Mục tiêu thực hiện đồ án. Thứ nhất: Có cái nhìn tổng quan, tìm hiểu kiến thức về đồng tiền mật mã Bitcoin và đảm bảo an toàn cho ví Bitcoin. Thứ hai: rèn luyện tính cách cá nhân, phương pháp làm việc, chuẩn bị kỹ năng mềm cần thiết trước khi tốt nghiệp. 2. Dự kiến các chương mục: Ngoài phần mở đầu, kết luận bài báo cáo của em gồm các chương, mục có kết cấu như sau: Chương 1: Tổng quan về chữ ký số và “tiền mật mã bitcoin” Chương 2. Ứng dụng chữ ký số DSAECDSA đảm bảo an toàn cho ‘chiếc ví tiền mật mã’. Chương 1: Tổng quan về chữ ký số và “tiền mật mã bitcoin” 1. Tổng quan về chữ ký số. 1.1 Giới thiệu. 1.1.1 Khái niệm chữ ký số. Trong cách hoạt động thường ngày như mua bán, thuê mượn tiền hoặc tài sản nào đó hoặc các giao dịch dân sự khác chúng ta thường lập một văn bản để xác minh và làm cơ sở cho những thỏa thuận đã đặt ra. Như vậy cần một biện pháp nào đó để giúp chúng ta có thể khẳng định, thừa nhận những thỏa thuận đã đặt ra. Chữ ký tay là một giải pháp giúp con người làm được điều đó. Chữ ký tay có vai trò rất quan trọng nó giúp minh chứng về “bản quyền”, sự thừa nhận của người ký đối với những nội dung đã được thỏa thuận trong văn bản. Chữ ký tay có một số đặc điểm dưới đây giúp nó có thể thực hiện vai trò của mình: Chữ ký tay do một người ký nên không thể sao chép được, điều này khiến chữ ký không thể giả mạo và chống chối bỏ của người ký lên những nội dung mầ họ chấp nhận. Chữ ký tay không thể tái sử dụng. Nghĩa là một chữ ký thường gắn liền với một văn bản nào đó và không thể tách rời. Chữ ký tay như một thủ tục giúp nhận dạng được người ký. Nghĩa là khi nhìn vào chữ ký ta có thể biết được ai là người đã ký vào văn bản thỏa thuận. Như vậy, chữ ký tay có vai trò và khả năng áp dụng đã được thừa nhận trong thực tế. Tuy nhiên ngày nay khi công nghệ ngày càng phát triển, tài liệu được số hóa chính vì vậy việc áp dụng chữ ký tay lên các văn bản số không còn khả thi vì chúng không thể đảm bảo những đặc tính như trên các văn bản truyền thống. Trong công nghệ máy tính thì việc sao chép dữ liệu, tẩy xóa một văn bản mầ không thể phát hiện được, chính vì vậy việc đảm bảo chữ ký có những đặc tính như trên cần đến công nghệ mã hóa. Việc ký số là việc ký một thông báo ( dữ liệu) được lưu dưới dạng điện tử. Giao thức cơ bản của ký số dựa trên ý tưởng của Diffie và Hellman. 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ới mỗi người sử dụng một cặp khóa công khai – bí mật. Khóa công khai thường được phân phối thông qua chứng thực khóa công khai. Quá trình sử dụng chữ ký số gồm hai quá trình: tạo chữ ký số và kiểm tra chữ ký số. Chữ ký số cung cấp các chức năng quan trọng như : tính bí mật, tính toàn vẹn, tính chống chối bỏ và tính xác thực. Điều này giúp chữ ký số có nhiều ứng dụng quan trọng trong thực tế. 1.1.2 Phân loại chữ ký số. Có nhiều các phân loại chữ ký số nhưng chủ yếu chúng ta thường phân loại theo những cách sau: Phân loại chữ ký theo đặc trưng kiểm tra chữ ký: Chữ ký số gồm hai loại là: Chữ ký có thể khôi phục trông điệp gốc: Là loại chữ ký mà khi người nhận nhận được thông điệp có thể khôi phục lại thông điệp gốc ban đầu như khi chưa ký. Ví dụ: Chữ ký RSA là chữ ký khôi phục thông điệp. Chữ ký không thể khôi phục thông điệp gốc: Là loại chữ ký mà khi người nhận nhận được thông điệp không thể khôi phục lại được thông điệp gốc như ban đầu khi chưa ký mà không làm hỏng thông điệp của người gửi. Ví dụ: chữ ký Elgamal là chữ ký đi kèm thông điệp. Phân loại chữ ký theo mức an toàn: chữ ký số gồm có: Chữ ký “không thể phủ nhận”: nhằm tránh việc sao chép chữ ký với mục đích sử dụng nhiều lần, người gửi nên trực tiếp tham gia vào việc đánh giá chữ ký. Điều này được thực hiện bằng một giao thức kiểm thử, dưới dạng một giao thức mời hỏi và trả lời. Ví dụ chữ ký không phủ nhận chaumvan Antverpen. Chữ ký “một lần”: để đảm bảo an toàn, chữ ký chỉ dùng 1 lần trên một tài liệu. Ví dụ chữ ký dùng một lần Lamport. Phân loại chữ ký số theo thuật toán sử dụng: với mỗi thuật toán sử dụng chữ ký số được gọi tên theo tên của thuật toán đó. 1.1.3 Sơ đồ tổng quan của một hệ thống ký số điện tử. Một sơ đồ ký số thường bao gồm hai thành phần chủ chốt đó là thuật toán ký và thuật toán xác minh. Cùng với đó là những thành phần không thể thiếu như là bản rõ có thể ( dữ liệu cần ký)... Cụ thể một sơ đồ ký số là một bộ 5(P,A,K,S,V) thỏa mãn những điều kiện sau: P là một tập hợp các bản rõ có thể. A là hữu hạn các chữ ký có thể. K là tập hữu hạn các khóa có thể. S là tập các thuật toán ký. V là tập các thuật toán xác minh. Với mỗi k thuộc tập K thì tồn tại một thuật toán ký s thuộc tập S và một thuật toán xác minh v thuộc tập V, trong đó s,v là các ánh xạ: s là ánh sạ từ P sang A và v là ánh xạ từ A sang tập biểu diễn {True,False} thỏa mãn với mọi p thuộc P, a thuộc A, v(a,p)= True nếu a=s(p) và v(a,p)= false nếu a khác s(p). Với mỗi k thuộc K thì hàm v và s là hàm thời gian đa thức v là hàm công khai còn s là hàm bí mật. Hình 1a. Sơ đồ tổng quan Ý nghĩa của sơ đồ: Khi người dùng muốn ký lên một thông báo p thì người đó dùng đó dùng một thuật toán an toàn để tạo chữ ký a=s(p) nhận được và gửi cho người nhận người nhận nhận được chữ ký a thì dùng thuật toán v để xác minh tính đúng đắn của chữ ký a. 1.2 Cơ sở hình thành lên chữ ký số. 1.2.1 Cơ sở toán học. Số học là một phần, một nhánh của toán học nhưng nó lại là một công cụ hữu hiệu nhất trong ngành an toàn thông tin. Việc bảo mật thông tin người dùng, bảo vệ thẻ, dữ liệu nhậy cảm khi vận chuyển trên mạng công cộng mà ta có được là sự áp dụng những thành tựu của số học vào thực tế. Các giao thức kết nối an toàn ( giao thức mã hóa) đặc biệt là chữ ký số đều là những thành tựu dựa trên lý thuyết số học dể tạo ra khóa, phân phối và trao đổi khóa. An toàn trong những cơ chế này đều liên quan tới giải thuật công khai và phân tích thừa số nguyên tố. 1.2.1.1 Sinh số nguyên tố và phân tích thừa số nguyên tố. Hai hệ quả và một ước lượng trong thuyết số học là tiền đề cho hệ thống khóa công khai RSA ngày nay. Hệ quả 1: Sinh số nguyên tố là dễ. Việc tìm ra một số nguyên tố với khích thước ngẫu nhiên là dễ dàng. Với hệ quả trên ta có thể cho rằng: số nguyên tố với kích thước bất kỳ thì rất phổ biến và việc kiểm tra số nguyên tố là dễ dàng kể cả với những số lớn. Để sinh ra một số nguyên tố ngẫu nhiên, chúng ta chỉ việc sinh ra một số nguyên ngẫu nhiên và tiến hành kiểm tra tính nguyên tố cho đến khi một số nguyên tố được tìm thấy. Dựa vào điều kiện số nguyên tố một số kỳ vọng được kiểm tra dựa vào thứ tự của thuật toán tự nhiên cuả x khi mà x là một số điển hình với độ lớn mong muốn. Việc kiểm tra số nguyên tố là không hề dễ. Trong thực tế, việc kiểm tra tính nguyên tố cần yêu cầu một số khác ngoài số đó và số 1 là ước nguyên cần kiểm tra. Hầu hết những hệ mã hóa công khai ngày nay đều phụ thuộc vào việc sinh số nguyên tố. Với hai số p,q là 2 số nguyên tố lớn được sinh ngẫu nhiên ( kích cỡ trung bình trong cấc hệ mã hóa thường là 512 bits hoặc lớn hơn). Hệ quả 2: Phép tính nhân là dễ: Với hai số cho trước p,q thì việc tính kết quả của phép nhân n=pxq là dễ dàng. Ước lượng 3: Phân tích thừa số là khó: Với số nguyên n là kết quả của phép tính nhân haai số nguyên tố lớn p và q, việc tìm lại hai số nguyên tố p và q là rất khó. Như chúng ta có thể thấy từ kết quả của một phép nhân chúng ta có thể tìm ra nhiều giả định về những số phần tử tạo ra nó. Chúng ta có rất nhiều nghiên cứu, nhưng thời gian để phân tích thừa số của một số nguyên tố lớn vẫn mất rất nhiều thời gian. Phương pháp ngày nay đã tối ưu hơn nhưng vẫn mất rất nhiều thời gian. Ví dụ việc phân tích ra thừa số nguyên tố của một số 1024 bit xẽ mất 1 năm với một siêu máy tính có tốc độ tính toán cực khủng, còn với một số 2048 bit con số đó xẽ mất vài tỷ lần thời gian như vậy. Hiện nay, với tốc độ tính toán phát triển nhanh chóng đồng thời con người ngày càng tìm ra nhiều phương pháp ước lượng tối ưu hơn. Chính vì vậy độ lớn khuyến cáo đã tăng cao hơn so với dự kiến. Ngày sưa có những thuật toán tự khẳng định không thể phá giải trong một thời gian ngắn và cần rất nhiều thời gian tuy nhiên hiện nay đều đã bị phá vỡ cho thấy sức mạnh tính toán ngày nay đã phát triển như nào. 1.2.1.2 Phép mũ hóa và khai căn modul. Như ở trên ta đã khai báo n là kết quả của phép nhân hai số nguyên tố lớn được sinh ngẫu nhiên. Cho m và c là những số nguyên nằm trong khoảng (0,n1) và e là một số nguyên lẻ trong khoảng (3,n1) và nguyên tố cùng nhau với p1 và q1. Thao tác mã hóa và giải mã trong hệ mã hóa khóa công khai RSA được thực hiện dựa trên 2 hệ quả và 1 ước lượng sau : Hệ quả 4: Phép tính mũ hóa modul là dễ : Cho n,m và e. Việc tính c = me mod n là dễ dàng. Giá trị me mod n chính thức là kết quả của nâng lũy thừa e của m, chia cho n và lấy phần dư. Điều này có thể là một phép tính toán phức tạp liên quan tới việc nhân (e1) số m và kết quả trả về là một số nguyên lớn, trước khi việc thực hiện phép chia cho n. Tuy nhiên hai cách tối ưu hóa sau làm cho việc tính toán trở nên dễ dàng : Nhân với một trình tự thích hợp của các giá trị trung gian trước đó, thay vì hơn chỉ bằng m, có thể giảm số lượng các phép nhân để không quá hai lần kích thước của e trong hệ nhị phân Chia và lấy phần dư sau khi mỗi phép nhân giữ kết quả trung gian có cùng kích thước như n. Hệ quả 5 : Phép khai căn module – nghịch đảo của phép lũy thừa module. 10 Cho n,e,c và những thừa số nguyên tố p, q, việc khôi phục lại giái trị m sao cho c = me mod n là dễ dàng. Giá trị m có thể khôi phục từ c bởi thao tác mũ hóa modul với một số nguyên lẻ d nằm trong khoảng (3,n1). Đặc biệt, với số d này, biểu thức sau thể hiện cho tất cả m : m = (me)d mod n. Số nguyên d này thì dễ dàng tính với e, p, q cho trước. Ước lượng 6: Phép khai căn modul lại khó ở một hoàn cảnh khác Cho n,e, và nhưng không biết những thừa số nguyên tố, việc khôi phục lại m là khó khăn. Phương pháp nhanh nhất thì có sẵn trong việc tính toán khai căn modul dưới điều kiện dựa là n và e là phân tích thừa số n và áp dụng hệ quả 5 để quyết định d. Thực sự, bất kỳ phương thức nào quyết định d đều bị chuyển về một cách khác của việc phân tích thừa số n. Đúng là có thể khi mà tồn tại một phương pháp mà tính toán khai căn modul mà không cần phân tích n hoặc quyết định d. Nhưng cho đến nay chưa phương phàp nào có thể làm như vậy nhanh hơn việc phân tích thừa số n. Nhận xét : Số học, đặc biệt là số nguyên lớn và các phép tính đồng dư là những công cụ quan trọng trong mật mã học đặc biệt là trong việc tính toán mật mã học khóa công khai, điển hình là RSA. Tuy nhiên chương này cũng chỉ trình bày qua các thuật toán để làm việc với những số nguyên lớn mà hầu hết đều đã được cài đặt thành thư viện nên ở những hệ thống thực tế người ta sẽ sử dụng chúng để tiện cho quá trình cài đặt. 1.2.2 Hàm băm mật mã. 1.2.2.1 Giới thiệu Trong ngành mật mã học, một hàm băm mật mã học (cryptographic hash function) là một hàm băm với một số tính chất bảo mật nhất định để phù hợp việc sử dụng trong nhiều ứng dụng bảo mật thông tin đa dạng, chẳng hạn như chứng thực (authentication) và kiểm tra tính nguyên vẹn của thông điệp (message integrity). Một hàm băm nhận đầu vào là một xâu ký tự dài (hay thông điệp) có độ dài tùy ý và tạo ra kết quả là một xâu ký tự có độ dài cố định, đôi khi được gọi là tóm tắt thông điệp (message digest) hoặc chữ ký số (digital fingerprint. Các hàm băm nhận một chuỗi bit có chiều dài tùy ý ( hữu hạn) làm dữ liệu đầu vào và tạo ra một chuỗi bit có chiều dài cố định bằng n bit, gọi là mã băm. Sự thay đổi nhỏ của chuỗi đầu vào cũng làm thay đổi giá trị băm. Ký hiệu D là miền xác định, R là miền giá trị của hàm băm h(x). h(x) : D R Ta có số lượng phần tử của tập D lớn hơn giá trị của tập R hàm băm h(x) không phải là đơn ánh Luôn tồn tại cặp đầu vào khác nhau có cùng giá trị băm. Giả sử hạn chế hàm h(x) trên miền xác định chỉ bao gồm các chuỗi bit có chiều dài t ( t>n). Nếu h(x) là ngẫu nhiên với tất cả các giá trị đầu ra của nó có xác suất bằng nhau thì có khoảng 2(tn) đầu ánh xạ vào mỗi giá trị đầu ra. Xác suất để hai giá trị( có chiều dài bằng nhau) đầu vào ánh xạ vào cùng một giá trị là 2n (không phụ thuộc vào t) Nếu n lớn thì 2n sẽ rất nhỏ. Như vậy mặc dù biết trước giá trị băm nhưng để tìm một đầu vào có cùng giá trị băm với giá trị băm đã biết là rất khó nếu chọn được h(x) thích hợp và n đủ lớn. Trong lĩnh vực mã hóa thông tin, mã băm được xem như đặc trưng thu gọn của một chuỗi bit tùy ý và dùng để nhận ra chuỗi bit đó. Hàm băm chính là công cụ để tạo ra chữ ký số và đảm bảo an toàn dữ liệu 1.2.2.2 Các khái niệm và định nghĩa : Hàm băm là một giải thụât nhằm sinh ra các giá trị băm tương ứng với mỗi khối dữ liệu. Giá trị băm đóng vai trò gần như một khóa để phân biệt các khối dữ liệu . Input Hash sum Hinh 1b: Ảnh minh họa làm việc của một hàm băm Phân loại : Hàm băm một chiều : (one – way hash functions) : Là hàm băm mang chất : với mọi mã băm biết trước, không thể tính toán để tìm được chuỗi bit ban đầu vào có mã băm bằng với mã băm đã cho . Hàm băm kháng xung đột : (collision resistant hash funtions) là hàm băm mang tính chất : không thể tính toán để tìm ra hai chuỗi bit có cùng giá trị băm Một số tính chất cơ bản của hàm băm : (i) Có thể áp dụng với thông báo đầu vào có độ dài bất kỳ (ii) Tạo ra giá trị băm y = h(x) có độ dài cố định (iii) h(x) dễ dàng tính được với bất kỳ x nào (iv) Tính một chiều : Với mọi đầu ra y cho trước không thể tìm được x’ sao cho h(x’) bằng giá trị y cho trước (v) Tính chống xung đột yếu : Với mọi dữ liệu đầu vào x1 cho trước không thể tìm được bất kỳ giá trị x2 nào (x2 khác x1) mà h(x2) = h(x1). (vi) Tính chống xung đột mạnh : Không thể tính toán đẻ tìm được hai dữ liệu đầu vào x1 và x2 phân biệt sao cho chúng có cùng giá trị băm (h(x1) = h(x2)) Như vậy dựa theo các tính chất tren ta thấy hàm băm một chiều thỏa mãn tính chất (iv) và tính chất (v), còn hàm băm kháng xung đột thỏa mãn tính chất (iv) và (vi). 1.2.2.3 Cấu trúc cơ bản của thuật toán băm Khối dữ liệu đầu vào x có chiều dài hữu hạn tùy ý sẽ được phân thành các khối con liên tiếp có chiều dài cố định r, giả sử được đánh số là x1,x2,...,xm. Tuy nhiên do chiều dài của khối dữ liệu ban đầu x là tùy ý, do đó cần phải thêm vào dữ liệu ban đầu một số bit phụ sao cho tổng số bit của khối dữ liệu x’ sau khi thêm vào sẽ là bội số của r. Ngoài ra khối bit thêm vào thường chứa một khối bit (có chiều dài cố định trước, thường là 64 bit) xác định chiều dài thực sự của khối bt dữ liệu khi chưa thêm các bit phụ. Tiếp theo, lần lượt cắt các khối con r bit từ khối mở rộng x’. Mỗi khối con r bit xi lần ượt bước qua một hàm nén f của hàm băm h(x). Tại bước thứ i, hàm nén f nhận dữ liệu đầu vào là xi và kết quả trung gian của bước trước đó (bước i – 1) để tạo đầu ra là kết quả trung gian bước thứ i, được ký hiệu là Hi . Kết quả trung gian tại mỗi bước Hi là một chuỗi bit có độ dài cố định bằng n >0. Kết quả ký hiệu IV là giá trị ban đầu (cho H0 ), thì quá trình lặp xử lý dãy các khối con x1,x2,..,xm được mô tả : H0 = IV ; Hi = f(Hi1,xi) (i = 1,2,..,m) ; h(x) = g(Hm) Các biến Hi là các biến dây chuyền Hàm g(x) lấy biến dây chuyền cuối cùng để tạo ra mã băm cuối cùng cần tìm. Trong hầu hết các thuật toán g(x) thường được chọn là ánh xạ đồng nhất tức là g(Hm) = Hm Khâu then chốt trong xây dựng hàm băm là thiết kế hàm nén f Giá trị của hàm băm mật mã của một thông điệp được gọi là Message Digest (MD). Một số hàm băm mật mã thông dụng : MD4,MD5 và SHA1 1.2.2.4 Giải thuật MD4 MD4 (MessageDigest thuật toán 4) là một thông điệp tiêu hóa thuật toán (thứ tư trong loạt a) được thiết kế bởi Giáo sư Ronald Rivest của MIT vào năm 1990. Nó thực hiện một hàm băm mật mã để sử dụng trong kiểm tra tính toàn vẹn thông điệp. Chiều dài của giá trị băm là 128 bit. Thuật toán MD4 nhận dữ liệu đầu vào là một chuỗi bit x có chiều dài b >= 0 tùy ý và sinh ra mã băm của x có chiều dài cố định 128 bit. Trước tiên chuỗi bit x được định dạng lại bằng cách thêm r >0 bit phụ thuộc vào x sao cho chiều dài của chuỗi bit mới là b’ = b + r là bội số của 512. Sau đó chia chuỗi bit mới này thành m khối, mỗi khối có độ dài đúng bằng 512 bit. Mỗi khối bit này lại chia thành 16 từ, mỗi từ có 32 bit. Thuật toán MD4 tuần tự xử lý dãy m khối trong m lượt tính toán. Dữ liệu đầu vào tại lượt tính toán thứ k (1 4 √q Sinh khóa Chọn số ngẫu nhiên d khoảng [2, n – 1] làm khóa bí mật Tính Q = dG làm khóa cơng khai Ký rõ m Chọn số ngẫu nhiên k, ≤ k ≤ n −1 Tính kG = (x1, y1) Tính r = x1 mod n Nếu r = 0, quay lại bước Tính k -1 mod n Tính s = k -1 (m + dr) mod n Nếu s = 0, quay lại bước Chữ ký thông điệp m (r, s) Kiểm tra chữ ký 38 Kiểm tra r s có số tự nhiên khoảng [2, n – 1] khơng Tính w = s -1 mod n Tính u1 = mw mod n u2 = rw mod n Tính X = u1G + u2Q = (xX, yX) Nếu X = O phủ nhận chữ ký Ngược lại tính v = xX mod n Chữ ký chấp nhận v = r Chứng minh Nếu chữ ký (r, s) m s = k -1 (m + dr) mod n k ≡ s -1 (m + dr) ≡ s -1 m + s -1 rd ≡ wm + wrd ≡ u1 + u2d (mod n) Vì vậy, u1G + u2Q = (u1 + u2d)G = kG, v = r Chứng minh Nếu chữ ký (r, s) m s = k -1 (m + dr) mod n k ≡ s -1 (m + dr) ≡ s -1 m + s -1 rd ≡ wm + wrd ≡ u1 + u2d (mod n) Vì vậy, u1G + u2Q = (u1 + u2d)G = kG, v = r 3.1.2 Độ an toàn sơ đồ chữ ký ECDSA Các hệ mã hoá đường cong elliptic phát minh năm 1985 bởiNeal Kobliz Victor Miller Tuy nhiên sơ đồ chữ ký ECDSA ScottVanstone đưa năm 1992, chấp nhận chuẩn ISO vào năm 1998, làchuẩn ANSI vào năm 1999, chuẩn IEEE vào năm 2000 Độ an toàn sơ đồ ký ECDSA dựa toán logarit rời rạc đườngcong elliptic Cho đến độ an toàn hệ mã hoá đường cong elliptic an tồn hiệu 3.2 Phân tích mơ hình ứng dụng cho ‘chiếc ví Bitcoin’ Một giao thức Bitcoin chọn tập tham số cho đường cong elliptic đại diện trường hữu hạn cố định cho tất người dùng giao thức Các thơng số bao gồm phương trình sử dụng, modulo số nguyên tố trường này, điểm sở nằm đường cong Bậc điểm sở không lựa chọn độc lập mà hàm thơng số khác, xem số lần điểm cộng vào độ dốc vơ hạn (tức đường thẳng đứng) Các điểm sở lựa chọn cho bậc số nguyên tố lớn 39 Bitcoin sử dụng số lớn điểm sở nó, modulo nguyên tố, bậc Trong thực tế, tất ứng dụng thực tế ECDSA sử dụng giá trị lớn An ninh thuật toán bảo mật dựa giá trị lớn, khó đảo ngược cơng cách thử (brute-force) Đối với Bitcoin, thứ chọn sẵn: Phương trình đường cong Elliptic: y2 = x3 + (a=0, b=7) Modulo nguyên tố = 2256 – 232 – 29 – 28 – 27 – 26 – 24 – = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE FFFFFC2F Điểm sở = 04 79BE667E F9DCBBAC 55A06295 CE870B07 029BFCDB 2DCE28D9 59F2815B 16F81798 483ADA77 26A3C465 5DA4FBFC 0E1108A8 FD17B448 A6855419 9C47D08F FB10D4B8 Bậc điểm = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE BAAEDCE6 AF48A03B BFD25E8C D0364141 3.3 Thử nghiệm đánh giá Trong phần em xin trình bày mơ tả thiết kế ví phân phối hai yếu tố an tồn Cụ thể, để chống cơng A phân phối khóa riêng tư cô hai thiết bị mà A sở hữu, trường hợp máy tính điện thoại thông minh A Khi giao dịch Bitcoin khởi tạo máy tính A có thơng báo gửi tới điện thoại A thông qua ứng dụng cài đặt điện thoại Nếu A nhấn xác nhận, hai thiết bị ký giao dịch chữ ký ngưỡng thực thi giao dịch Như vậy, khơng có thiết bị tạo chữ ký mà chữ ký tạo kết hợp hai thiết bị ( máy tính A điện thoại thông minh A) Khi kẻ cơng muốn đánh cắp bitcoin A kẻ phải đánh cắp (kiểm sốt) hai thiết bị A Điều giúp Bitcoin đảm bảo an tồn thực tế sử dụng 3.3.1 Mơ hình bảo mật Trao đổi máy tính điện thoại cần có bảo mật định Trong giai đoạn khởi tạo kết nối an toàn hai thiết bị cần có liên lạc trao đổi liệu an toàn Để khởi tạo kết nối an toàn hai thiết bị, ta tận dụng camera có sẵn điện thoại thơng minh nên sử dụng phương pháp quét mã vạch 2D hình máy tính Thư viện mã vạch Zxing sử dụng 40 cung cấp tảng hai thiết bị sẵn sàng để tạo máy tính đọc điện thoại Đây phương pháp an toàn cho giai đoạn khởi tạo khơng u cầu kết nối mạng internet Máy tính để bàn chuyển keyshare khóa cơng khai cho điện thoại hồn thành khởi tạo Máy tính để bàn sau xóa tất ghi khóa điện thoại Sau giai đoạn tất thông tin, liệu trao đổi thực thông qua TLS đảm bảo kết nối an toàn đáng tin cậy Với giao thức TLS liệu đảm bảo an tồn kiểm tra tính tồn vẹn truyền qua môi trường internet Với TLS, việc cơng từ chối dịch vụ vào máy tính kiểm soát 3.3.2 Giao thức ứng dụng hai yếu tố • Khởi tạo - Máy tính để bàn: Tạo ví hiển thị mã QR với chứng công khai mật lần - Điện thoại: Quét mã QR bắt đầu kết nối TLS sử dụng chứng công cộng - Điện thoại: Xác thực mật lần - Điện thoại: Gửi qua chứng nhận cơng khai nhận keyshare • Giao dịch - Máy tính để bàn: Tạo giao dịch - Máy tính để bàn: Tạo máy chủ socket TLS đợi cho điện thoại để kết nối - Điện thoại: Kết nối với máy tính để bàn TLS với xác thực phía máy client - Điện thoại: Cung cấp cho người dùng lựa chọn phê duyệt giao dịch Tiếp tục người dùng chấp thuận - Máy tính để bàn: Bắt đầu giao thức ngưỡng - Điện thoại: Tham gia vào giao thức ngưỡng - Máy tính để bàn: Hồn tất giao dịch với sản phẩm chữ ký thêm vào blockchain Hình 10: giao thức khởi tạo 41 Hình 11: Giao thức giao dịch 3.3.3 Sử dụng Khi ví tạo MultiBit, mã QR hiển thị Ứng dụng Android quét mã QR có chứa chứng tự ký cho máy tính mật lần Điện thoại sau khởi tạo TLS kết nối với máy tính chứng Điện thoại xác thực cách sử dụng mật lần sau gửi chứng tự ký riêng để xác thực client TLS bật kết nối tương lai Sau đó, máy tính để bàn gửi keyshare điện thoại xóa khỏi nhớ Khi MultiBit cố gắng ký giao dịch, sever khởi chạy dịch vụ DNS-SD 42 đăng ký server lắng nghe kết nối đến từ client Trong ứng dụng điện thoại chạy, tìm dịch vụ cố gắng khởi tạo kết nối TLS với server( máy tính) Nếu thành cơng, hình gửi thơng tin giao dịch với khóa cơng khai ví tới điện thoại Nếu điện thoại có keyshare cho khóa cơng khai, hiển thị cho người dùng thông tin giao dịch với khả cho phép hủy giao dịch Nếu người dùng chọn cho phép nó, sơ đồ ngưỡng chạy để tạo chữ ký máy tính Cuối cùng, máy tính phát sóng giao dịch ký với Bitcoin Thời gian(s) Bước ( máy tính) 0.26 Bước ( điện thoại) 0.36 Bước ( máy tính) 0.58 Bước 4(điện thoại) 11.04 Tổng 13.26 Bảng cho thấy thời gian thực thi bước công việc thực thiết bị Chúng ta thấy thời gian chủ yếu tập trung bước 4, bước mà chi tiêu tạo xác minh 43 KẾT LUẬN Hiện Bitcoin đồng tiền mật mã có giá trị lớn giới, với tính chất, ưu điểm so với loại tiền tệ thơng thường xẽ đồng tiền chung cho toàn giới tương lai Tuy nhiên thực tế sử dụng, đồng tiền tồn nhiều bất cập chưa phù hợp với mô hình sử dụng tiền phổ biến Đặc biệt mơ hình kiểm sốt tài doanh nghiệp, tổ chức chi tiêu tiền cần có tham gia nhiều bên nhằm công khai minh bạch khoản chi tiêu nội doanh nghiệp tổ chức Với công nghệ Bitcoin tập lệnh đa chữ ký chưa đủ để áp dụng mơ hình thực tế Tuy nhiên với chữ ký ngưỡng DSA/ECDSA giải vấn đề bảo mật tồn tốn Với khả giúp tăng cường bảo mật cho bitcoin ví Trong đồ án tốt nghiệp em trình bày khái quát chữ ký số, tổng quan đồng tiền mật mã bitcoin ứng dụng chữ ký ngưỡng DSA/ECDSA việc bảo mật ví tiền Bitcoin đánh giá cá nhân em Tuy nhiên hạn chế kiến thức, thời gian kinh nghiệm thân non nên viết nhiều thiếu sót hạn chế mong nhận đóng góp thầy bạn bè để em hồn thiện đồ án Một lần em xin chân thành cảm ơn hướng dẫn tận tình từ thầy giáo TSKH Nguyễn Khắc Việt giảng viên trường Đại Học FPT thầy giáo TS Lại Minh Tuấn toàn thể cán giảng viên trường Học Viện Kỹ Thuật Mật Mã giúp đỡ em q trình thực hồn thành đồ án Em xin chân thành cảm ơn! 44 Tài Liệu tham khảo [1] Andreas M Antonopoulos, Mastering Bitcoin: Programming the Open Blockchain, 2nd Edition, O’Reilly, 2017 [2] Pedro Franco, Understanding Bitcoin: Cryptography, Engineering, and Economics, John Wiley & Sons, 2015 [3] Rosario Gennaro, Steven Goldfeder, Arvind Narayanan, Threshold-optimal DSA/ECDSA signatures and an application to Bitcoin wallet security, IACR, 2016 [4] Steven Goldfeder, Rosario Gennaro, Harry Kalodner, Joseph Bonneau, Edward W Felten, Joshua A Kroll, Arvind Narayanan, Securing Bitcoin wallets via a new DSA/ECDSA threshold signature scheme, Princeton University Preprint, 2015 [5] Arvind Narayanan, Joseph Bonneau, Edward Felten, Andrew Miller, Steven Goldfeder, Bitcoin and Cryptocurrency Technologies, Princeton University Press, 2016 [6] William Stallings, Cryptography and Network Security: Principles and Practice, 6th Edition Pearson, 2013 45 ... Tổng quan chữ ký số tiền mật mã bitcoin” Chương Ứng dụng chữ ký số DSA/ECDSA đảm bảo an tồn cho ‘chiếc ví tiền mật mã’ Chương 1: Tổng quan chữ ký số tiền mật mã bitcoin” Tổng quan chữ ký số 1.1... quan chữ ký số tiền mật mã bitcoin” Chương 1: Tổng quan chữ ký số tiền mật mã bitcoin” .3 2.1.1.2 Tiền mật mã Bitcoin 22 Chương Ứng dụng chữ ký số DSA/ECDSA đảm bảo an tồn cho ‘chiếc. .. trọng cho hàng ngàn người thời gian gần Điều cho thấy sức nóng, quan tâm dư luận đồng tiền mật mã nên em định chọn đề tài Ứng dụng chữ ký số DSA/ECDSA đảm bảo an tồn cho ‘chiếc ví tiền mật mã’