MỤC LỤC Lời mở đầu 1 Chương 1. Cơ sở toán học 4 1.1. Cấu trúc đại số 4 1.1.1. Nhóm 4 1.1.2. Vành 4 1.1.3 Trường 5 1.2. Phần tử Sinh 5 1.3 Phương trình đồng dư bậc hai và thặng dư bậc hai 7 1.4. Thuật toán Euclide mở rộng tìm số nghịch đảo 9 Chương 2. Đường cong elliptic 11 2.2. Đường cong elliptic hữu hạn 11 2.2.1. Phân loại 11 2.2.2. Định nghĩa đường cong eliptic trên trường Galois 12 2.3. Các phép toán cộng và nhân trên các nhóm E 12 2.4. Các bước xác định điểm trên E 13 Chương 3. Mật mã trên đường cong Elliptic 15 3.1. Quá trình tạo khóa 15 3.2. Quá trình mã hóa 15 3.3. Quá trình giải mã 16 Chương 4. Độ an toàn của hệ mật trên đường cong elliptic 20 Chương 5. Một vài ứng dụng 21 5.1.Lược đồ chữ ký số trên đường cong elliptic ECDSA 21 5.2.ĐộantoàncủasơđồchữkýECDSA 22 KẾT LUẬN 24 Tài liệu tham khảo 25
HỌC VIỆN KỸ THUẬT MẬT MÃ BÀI TẬP LỚN ĐỀ TÀI: XÂY DỰNG CHƯƠNG TRÌNH MÔ PHỎNG THUẬT TOÁN MÃ ECC Môn : Cơ Sở Lý Thuyết Mật Mã Sinh viên thực hiện : Phạm Hữu Thiết Tạ Thị Thanh Thùy Tô Quang Hiền Nguyễn Anh Tú Giáo viên hướng dẫn : Hoàng Thu Phương Lớp : AT8B -Hà Nội,9/2014- MỤC LỤC Xây dựng chương trình mô phỏng thuật toán mã ECC Lời mở đầu Ngày nay với sự phát triển mạnh mẽ của công nghệ thông tin, truyền thông nói chung và Internet nói riêng đã giúp cho việc trao đổi thông tin nhanh chóng, dễ dàng, E-mail cho phép người ta nhận hay gửi thư ngay trên máy tính của mình, E-business cho phép thực hiện các giao dịch trên mạng. Do vậy một vấn đề phát sinh là thông tin có thể bị trộm cắp, có thể là sai lệch, có thể giả mạo. Điều đó có thể ảnh hưởng tới các tổ chứa, các công ty hay cả một quốc gia. Những bí mật kinh doanh, tài chính là mục tiêu của các đối thủ cạnh tranh. Những tin tức về an ninh quốc gia là mục tiêu của các tổ chức tình báo trong và ngoài nước. Để giải quyết tình hình trên an toàn thông tin được đặt ra cấp thiết. Kỹ thuật mật mã là một trong những giải pháp của an toàn truyên thông. Kỹ thuật này có từ ngàn xưa nhưng nó đơn giản, ngày nay khi có mạng máy tính người ta dùng mật mã hiện đại. Các nhà khoa học đã phát minh ra những hệ mật mã nhằm che dấu thông tin cũng như là làm rõ chúng để tránh sự giòm ngó của những kẻ cố tình phá hoại như các hệ mật: RSA, Elgamal… mặc dù cũng rất an toàn nhưng có độ dài khoá lớn nên trong một số lĩnh vực không thể ứng dụng được. Chính vì vậy người ta đã phát minh một hệ mật đó là hệ mật trên đường cong elliptic, hệ mật này được đánh giá là hệ mật có độ an toàn cao và hiệu quả hơn nhiều so với hệ mật công khai khác, nó đã được ứng dụng trên nhiều lĩnh vực và được sử dụng nhiều nơi trên thế giới tuy nhiên còn mới mẻ ở Việt Nam. Trong tương lai gần, hệ mật trên đường cong Elliptic sẽ được sử dụng một cách phổ biến và thay thế những hệ mật trước nó. Vì lý do đó, nhóm em đã chọn đề tài “xây dựng chương trình mô phỏng hệ mật ECC ” để nghiên cứu, tìm hiểu thêm về hệ mật trên đường cong Elliptic nhằm tiến tới khai thác hệ mật này phục vụ cho bảo mật thông tin trong thực tế. 3 AT8B – Học Viện Kỹ Thuật Mật Mã Xây dựng chương trình mô phỏng thuật toán mã ECC Chương 1. Cơ sở toán học 1.1. Cấu trúc đại số 1.1.1. Nhóm - Định nghĩa: Nhóm là một tập hợp G ≠φ cùng với phép toán hai ngôi * trên G. Với a, b ∈ G, a * b = ∈G thoả mãn tính chất sau: * Tính kết hợp: (a * b) * c = a * (b * c) với mọi a, b, c ∈ G. * Phần tử đồng nhất: Tồn tại e ∈G thoả mãn e * a = a *e = a với mọi a ∈ G (e được gọi là phần tử trung hoà). * Phần tử nghịch đảo: với mỗi a ∈ G, tồn tại một phần tử b ∈G thoả mãn b * a = a * b = e ( b là duy nhất và được gọi là phần tử nghịch đảo của a). Và người ta ký hiệu nghịch đảo của a bởi a -1 . - Nhóm Xyclic: * G được gọi là nhóm Xyclic nếu nó chưa một phần tử a sao cho mọi phần tử của G đều là lũy thừa nguyên nào đó của a * a được gọi là phần tử sinh ( hay phần tử nguyên thủy của nhóm G) 1.1.2. Vành Cho R ≠ 0 với phép toán 2 ngôi ( +, * ) được gọi là một vành nếu: - Với phép cộng: R là nhóm Aben - Với phép nhân: * Tính kết hợp: a*(b*c) = (a*b)*c * Tính phân phối: a*(b + c) = a*b + a*c (b + c) *a = b*a + c*a Nếu phép nhân có tính giao hoán thì tạo thành vành giao hoán. Nếu phép nhân có nghịch đảo và không có thương 0 ( không có hai phần ≠0 ) mà tích của chúng lại bằng 0 thì nó tạo thành miền nguyên. 4 AT8B – Học Viện Kỹ Thuật Mật Mã Xây dựng chương trình mô phỏng thuật toán mã ECC 1.1.3 Trường Trường là một tập hợp F với hai phép toán “ + ” và “ * ” thỏa mãn tính chất: - F là một vành - Với phép “ * ”, F trừ phần tử 0 là nhóm Aben Có thể nói là có các phép toán “ +, -, * , / ” số khác 0. Phép trừ được coi như là cộng với số đối của phép cộng và phép chia là nhân với số đối của phép nhân a- b = a+ (-b) a/b = a.b -1 1.2. Phần tử Sinh * Định nghĩa: Cho α Z * n . Nếu cấp của α = thì α được gọi là phần tử sinh của Z n * ( hay còn gọi là phần tử nguyên thủy ). Nếu Z n * có phần tử sinh thì Z n * được gọi là nhóm xyclic. VD: Z 20 * có phần tử sinh hay không? Z 20 * không có phần tử sinh vì = | Z 20 * | = 8 Nhưng max( ord(a) ) = 4 ≠ 8 với a Z 20 * . * Tính chất của phần tử sinh - Z n * có phần tử sinh nếu và chỉ nếu n = 2, 4, p k hoặc 2.p k . trong đó p là số nguyên tố lẻ và k ≥ 1. - Nếu α là 1 phần tử sinh của Z n * thì: Z n * = { α i mod n | 0 ≤ i ≤ – 1 - Giả sử α là một phần tử sinh của Z n * . Khi đó b = α i mod n cũng là phần tử sinh của Z n * nếu và chỉ nếu ( i, ) = 1 5 AT8B – Học Viện Kỹ Thuật Mật Mã Xây dựng chương trình mô phỏng thuật toán mã ECC Nếu Z n * là xyclic thì số phần tử sinh là - α Z * n là phần tử sinh của Z n * nếu và chỉ nếu α^( ≠ 1 mod n đối với mỗi số nguyên tố p của VD : Z 25 * là nhóm xyclic và có phần tử sinh α = 2. Tìm các phần tử sinh còn lại của Z 25 * . + Ta có n = 25 = 5 2 . => = 25.(1-1/5) = 20 + = 20 = 2 2 .5 => = 8 + α= 2 là phần tử sinh của Z 25 * i Z 20 * = {1, 3, 7, 9, 11, 13, 17, 19 } => 2 1 mod 25 = 2 2 3 mod 25 = 8 2 7 mod 25 = 2 5 .2 2 mod 25 = 3 …………………………… …………………………… …………………………… 2 17 mod 25 = 22 2 19 mod 25 = 13. Vậy các phần tử sinh của Z 25 * là : { 2, 4, 8, 12, 13, 17, 22, 23 } 1.3 Phương trình đồng dư bậc hai và thặng dư bậc hai * Ta xét phương trình đồng dư bậc hai có dạng như sau: 6 AT8B – Học Viện Kỹ Thuật Mật Mã Xây dựng chương trình mô phỏng thuật toán mã ECC x 2 ≡ a (mod n) Trong đó n là số nguyên dương, a là số nguyên với gcd(a, n) ≡ 1, và x là ẩn số. Phương trình đó không phải bao giờ cũng có nghiệm, khi nó có nghiệm thì ta gọi a là thặng dư bậc hai mod n. Ngược lại thì a gọi là một bất thặng dư bậc hai mod n. Tập các số nguyên nguyên tố với n được phân hoạch thành hai tập con. Tập Q n các thặng dư bậc hai mod n, và tập các bất thặng dư bậc hai mod n. * Ký hiệu Legendre Cho p là một số nguyên tố lẻ và a là một số nguyên. Ký hiệu Legendre p a được xác định như sau: ∈− ∈= p p Qa1 Qa1 ap0 p a * Ký hiệu Jacobi - Cho n≥ 3 là các số nguyên lẻ có phân tích . Khi đó ký hiệu Jacobi k21 e k e 2 e 1 pp.pn = được định nghĩa là k21 e k e 2 e 1 p a p a p a n a = Ta thấy rằng nếu n là một số nguyên tố thì ký hiệu Jacobi chính là ký hiệu Legendre. - Tính chất của kí hiệu Jacobi 7 AT8B – Học Viện Kỹ Thuật Mật Mã Xây dựng chương trình mô phỏng thuật toán mã ECC Cho 3n ≥ là các số nguyên lẻ Zb,a ∈ . Khi đó ký hiệu Jacobi có các tính chất sau: (1) 1,0 n a = hoặc 1 − . Hơn nữa 0 n a = nếu và chỉ nếu ( ) 1n,aUCLN ≠ . (2) ≡ n b . n a n b.a . Bởi vậy * n Za ∈ thì 1 n a 2 = (3) ≡ n a . m a n.m a . (4) Nếu ( ) nmodba ≡ thì = n b n a . (5) 1 n 1 = (6) ( ) ( ) 2/1n 1 n 1 − −= − . Bởi vậy 1 n 1 = − nếu ( ) 4mod1n ≡ 1 n 1 −= − nếu ( ) 4mod3n ≡ (7) ( ) ( ) 8/1n 2 1 n 2 − −= . Bởi vậy 1 n 2 = nếu 1n ≡ hoặc ( ) 8mod7 1 n 2 −= nếu 3n ≡ hoặc ( ) 8mod5 (8) ( ) ( )( ) 4/1n1m 1 m n n m −− − = 8 AT8B – Học Viện Kỹ Thuật Mật Mã Xây dựng chương trình mô phỏng thuật toán mã ECC Nói một cách khác = m n n m trừ phi cả hai số m và n đều đồng dư với ( ) 4mod3 , trong trường hợp này −= m n n m . Từ các tính chất của ký hiệu Jacobi ta thấy rằng n lẻ và 1 e a2a = trong đó 1 a là một số lẻ thì: ( ) ( ) ( ) 4/1n1a 1 1 e 1 e 1 1 a amodn n 2 n a n 2 n a −− − = = Từ công thức này ta có thể xây dựng thuật toán đệ quy sau để tính n a mà không cần phải phân tích n ra các thừa số nguyên tố . 1.4. Thuật toán Euclide mở rộng tìm số nghịch đảo * Nếu GCD( m, b) = 1 thì tìm nghịch đảo của b theo modulo của m. Ta mở rộng thuật toán Euclide * Tìm UCLN (m,b) * Tính nghịch đảo trong trường hợp GCD(m, b) = 1 B1. ( A 1 , A 2 , A 3 ) = (1, 0, m); ( B 1 , B 2 , B 3 ) = ( 0, 1, b) B2. If B 3 = 0 then return A 3 = gcd (m, b) , no inverse B3. If B 3 = 1 then return B 3 = gcd ( m, b); B 2 = b -1 mod n B4. Q = A 3 div B 3 B5. ( T 1 , T 2 , T 3 ) = ( A 1 – Q*B 1, A 2 – Q*B 2, A 3 – Q*B 3 ) B6. ( A1, A2, A3) = ( B 1 , B 2 , B 3 ) 9 AT8B – Học Viện Kỹ Thuật Mật Mã Xây dựng chương trình mô phỏng thuật toán mã ECC B7. ( B 1 , B 2 , B 3 ) = ( T 1 , T 2 , T 3 ) B8. goto B2 VD: cho b = 550, m = 1759 => 550 -1 mod 1759 Ta xét bảng sau: Q A 1 A 2 A 3 B 1 B 2 B 3 _ 1 0 1759 0 1 550 3 0 1 550 1 -3 109 5 1 -3 109 -5 16 5 21 -5 16 5 106 -339 4 1 106 -339 4 -111 355 1 Thấy B 3 = 1 = GCD( 550, 1759) => 550 -1 mod 1759 = 355 10 AT8B – Học Viện Kỹ Thuật Mật Mã [...]... nhiều Chẳng hạn với hệ mã hoá RSA có chiều dài khoá là 1024 bit thì hệ mã hoá bằng đường cong elliptic chỉ cần độ dài khoá 163 bit sẽ có 22 AT8B – Học Viện Kỹ Thuật Mật Mã Xây dựng chương trình mô phỏng thuật toán mã ECC độ bảo mật tương đương Và do đó việc tính toán các tiến trình đối với các hệ mã hoá đường cong elliptic là nhanh hơn rất nhiều 23 AT8B – Học Viện Kỹ Thuật Mật Mã KẾT LUẬN Công nghệ... Và khóa bí mật KBM : nA, nB 3.2 Quá trình mã hóa - B thực hiện : mã hóa M thành điểm PM Ep (a, b) - Bước 1: Nhận KCK: PA - Bước 2: chọn số k ngẫu nhiên và tính bản mã PC là một cặp điểm Ep (a, b) theo nguyên tắc: PC =[ ( kG ), ( PM + kPA) ] 15 AT8B – Học Viện Kỹ Thuật Mật Mã Xây dựng chương trình mô phỏng thuật toán mã ECC Sau đó gửi Pc cho A 3.3 Quá trình giải mã A thực hiện - Bước 1: A nhận PC -... 8 4 3 4 z Q7 ? không có có không có không có y 1, 6 4,3 2,5 2,5 Chương 3 Mật mã trên đường cong Elliptic 14 AT8B – Học Viện Kỹ Thuật Mật Mã Xây dựng chương trình mô phỏng thuật toán mã ECC Trong hệ mật này , bản rõ M được mã hóa thành một điểm P M trong tập hữu hạn các điểm của nhóm Ep (a, b) Ta xét 3 quá trình trong hệ mật ECC: 3.1 Quá trình tạo khóa - Bước 1: Trước hết, ta chọn E p (a, b) Chọn G... giá trị z có thặng dư bậc 2 trên Z7 hay không? Ta có: Z7* = { 1, 2, 3, 4, 5, 6 } = 7 – 1 = 6 = 2.3 13 AT8B – Học Viện Kỹ Thuật Mật Mã Xây dựng chương trình mô phỏng thuật toán mã ECC Giả sử a là phần tử sinh a sẽ thỏa mãn: (1) Xét với a= 2 không thỏa mãn (1) Xét với a = 3 thỏa mãn (1) Vậy a = 3 là phần tử sinh của Z7* Ta có: i 0 αi 1 mod 7 => Q7 = {1, 2, 4 } 1 3 2 2 3 6 4 4 5 5 Với z là thặng dư... bài toán logarit rời rạc đường cong elliptic Cho đến nay độ an toàn của các hệ mã hoá đường cong elliptic đã được chỉ ra là rất an toàn và hiệu quả Đối với bài toán logarit rời rạc đường cong elliptic thì có nhiều thuật toán giải nó Tuy nhiên chưa có thuật toán nào có độ phức tạp tính toán trong thời gian đa thức Thuật toán giải bài toán logarit rời rạc đường cong elliptic tốt nhất hiện nay là thuật toán. .. trường số để phân tích hợp số thành tích của hai số nguyên tố p và q ) ta thấy rằng với n có 19 AT8B – Học Viện Kỹ Thuật Mật Mã Xây dựng chương trình mô phỏng thuật toán mã ECC kích thước 768 bít độ phức tạp tính toán là : 2.10 8 MIPS – năm, với n có kích thước 1024 bít , độ phức tạp tính toán là 3.1011 năm Nếu độ dài khóa của RSA tăng lên tới 2048 bít thì cần 3.1020 MIPS – năm , trong khi đó với ECC... Kỹ Thuật Mật Mã Xây dựng chương trình mô phỏng thuật toán mã ECC Để thiết lập sơ đồ chữ ký ECDSA, cần xác định các tham số: lựa chọn đường cong E trên trường hữu hạn Fq với đặc số p sao cho phù hợp và công khai cho tất cả mọi người, điểm cơ sở G ∈ E(Fq) Một số khuyến nghị khi lựa chọn các tham số: m 1 Kích thích q của trường, hoặc q = p (p>2) hoặc q= 2 2 Hai phần tử a, b thuộc Fq xác định phương trình. .. AT8B – Học Viện Kỹ Thuật Mật Mã Xây dựng chương trình mô phỏng thuật toán mã ECC 1 Kiểm tra r và s có là các số tự nhiên trong khoảng [ 2, n-1 ] không -1 2 Tính w = s mod n 3 Tính u1 = mw mod n và u2 = rw mod n 4 Tính X = u1G + u2Q = (xX, yX) 5 Nếu X = O thì phủ nhận chữ ký Ngược lại tính v = xX mod n 6 Chữ ký chỉ được chấp nhận nếu v = r 5.2 Độ an toàn của sơ đồ chữ ký ECDSA Các hệ mã hoá đường cong... ba điểm thì tổng của chúng bằng điểm vô cực O (điểm O này có vai trò như phần tử đơn vị trong phép cộng này) Hình sau mô tả các đường cong E y2= x3 + 2x + 5 và y2 = x3 - 2x + 1 2.2 Đường cong elliptic hữu hạn 11 AT8B – Học Viện Kỹ Thuật Mật Mã Xây dựng chương trình mô phỏng thuật toán mã ECC 2.2.1 Phân loại Có 2 dạng: * Đường cong nguyên tố Ep (a, b) được xác định trên Zp - Sử dụng các số nguyên modulo... , y2 = - y1 thì P + Q = 0 * P + Q = (x3, y3) trong đó : x3 = λ - x1 – x2 mod p x3 = λ (x1 – x3 ) – y1 mod p Và 12 AT8B – Học Viện Kỹ Thuật Mật Mã Xây dựng chương trình mô phỏng thuật toán mã ECC λ = nếu P λ = nếu P * P + 0 = 0 + P = P, * Phép lấy nghịch đảo được tính toán khá dễ dàng Nghịch đảo của ( x, y) là – (x, y) và là (x, -y) - Phép nhân * Phép nhân trên nhóm Ep (a, b) thực hiện tương tự như . thuật toán mã ECC Giả sử a là phần tử sinh. a sẽ thỏa mãn: <=> (1) Xét với a= 2 không thỏa mãn (1) Xét với a = 3 thỏa mãn (1) . Vậy a = 3 là phần tử sinh của Z 7 * Ta có: i 0 1 2 3 4 5 α i mod. toán mã ECC Cho 3n ≥ là các số nguyên lẻ Zb,a ∈ . Khi đó ký hiệu Jacobi có các tính chất sau: (1) 1,0 n a = hoặc 1 − . Hơn nữa 0 n a = nếu và chỉ nếu ( ) 1n,aUCLN ≠ . (2) ≡ n b . n a n b.a .