Mật mã ứng dụng trong an toàn thông tin ĐỀ TÀI 05 Mật mã trên đường cong Elliptic Giảng viên: Thầy Lục Như Quỳnh Sinh viên thực hiện: MỤC LỤC Danh mục hình ảnh 4 Chương 1: Hệ mật mã khóa công khai 5 1.1 Giới thiệu 5 1.2 Lý thuyết số 8 1.2.1 Một số khái niệm 8 1.2.2 Định lý Fermat 10 1.2.3 Phép logarit rời rạc 11 1.3 Bảo mật, Chứng thực và Chống chối bỏ 12 1.4 Trao đổi khóa 13 1.4.1 Trao đổi khóa công khai 13 1.4.2 Dùng mã hóa công khai để trao đổi khóa bí mật 15 1.5 Phương pháp trao đổi khóa Diffie - Hellman 15 Chương 2: Hệ mật đường cong Elliptic 18 2.1 Đường cong Elliptic 18 2.1.1 Định nghĩa 18 2.1.2 Cộng các điểm trên đường cong Elliptic 19 2.1.2.1 Trường hợp 2 điểm không trùng nhau P1≠P2 21 2.1.2.2 Trường hợp 2 điểm trùng nhau P1=P2 21 2.1.3 Nhân vô hướng các điểm trên đường cong Elliptic 22 2.1.4 Nhóm (+) của các điểm trên đường cong Elliptic 24 2.1.5 Đường cong Elliptic trên trường hữu hạn Fq 27 2.1.5.1 Trường hữu hạn Fq 27 2.1.5.2 Tổng số điểm của đường cong Elliptic trên trường hữu hạn Fq 29 2.2 Mật mã trên đường cong Elliptic 32 2.2.1 Thiết lập cơ sở 32 2.2.1 Bài toán lô ga rít rời rạc (DLP) trên đường cong elliptic 32 Bài toán lô-ga-rít rời rạc trên đường cong Elliptic (ECDLP) 33 2.2.2 Trao đổi khóa 33 2.2.2.1 Trao đổi khóa Diffie-Hellman ECDH 33 2.2.2.2 Tạo khóa bí mật chia sẻ ECMQV 34 2.2.3 Mã hóa - Giải mã 35 2.2.3.1 Mã hóa Massey-Omura 35 2.2.3.2 Mã hóa ElGamal 36 2.2.3.3 Mã hóa ECIES 36 2.2.4 Các hệ chữ ký trên đường cong Elliptic: 38 2.2.4.1 Sơ đồ chữ ký số Elgamal Elliptic 38 2.2.4.2 Chuẩn chữ ký số Elliptic (ECDSA) 38 2.3 Nhúng số vào điểm trên đường cong Elliptic 39 2.3.1 Chuyển thông báo thành số nguyên thuộc Fp 39 2.3.2 Nhúng bản rõ 40 2.4 Độ an toàn của hệ mật trên đường cong Elliptic 41 Bài tập về nhà 43 Tài liệu tham khảo 52 Danh mục hình ảnh Hình 1 Mô hình mã hóa đối xứng 5 Hình 2 Bảng giá trị modulo với n = 19 11 Hình 3 Mô hình bảo mật với mã hóa công khai 12 Hình 4 Mô hình chống chối bỏ với mã hóa công khai 12 Hình 5 Mô hình kết hợp bảo mật, chúng thực và chống chối bỏ 13 Hình 6 Trao đổi khóa công khai tự phát 13 Hình 7 Trao dổi khóa công khai dùng trung tâm chứng thực 14 Hình 8 Thiết lập khóa phiên bí mật bằng mã hóa khóa công khai 15 Hình 9 Tấn công Man in the middle với phương pháp Diffie - Hellman 16 Hình 10 Bảo vệ khóa Diffie – Hellman bằng khóa công khai 17 Hình 11 Phép cộng trên đường cong Elliptic 20 Hình 12 Ví dụ về tính chất kết hợp trên đường cong Elliptic 23 Chương 1: Hệ mật mã khóa công khai 1.1 Giới thiệu Xét mô hình mật mã cổ điển với Alice (người gửi) và Bob (người nhận), chọn một khóa bí mật K. Sau đó dùng K để mã hóa eK và luật giải mã dK. Trong hệ mật này dK hoặc giống eK hoặc dễ dàng được phân tích từ eK (ví dụ trong hệ mật DES quá trình giải mã hoàn toàn tương tự với quá trình mã hóa nhưng với trình tự ngược lại). Các hệ mật như thế này được gọi là hệ mật khóa bí mật, nếu để lộ key thì tính an toàn của hệ thống sẽ không còn được đảm bảo. Nhược điểm của hệ mật này được thể hiện ở hai khía cạnh sau: Vấn đề trao đổi khóa giữa người gửi và người nhận: Cần phải có một kênh an toàn để trao đổi khóa sao cho khóa phải được giữ bí mật chỉ có người gửi và người nhận biết. Điều này rất không hợp lý khi mà ngày nay, khối lượng thông tin luân chuyển trên khắp thế giới là rất lớn. Việc thiết lập một kênh an toàn như thế sẽ tốn kém về mặt chi phí và chậm trễ về mặt thời gian. Tính bí mật của khóa: Không có cơ sở quy trách nhiệm nếu mà khóa bị tiết lộ. Dựa trên cơ sở đó vào năm 1976 Whitfield Diffie và Martin Hellman đã tìm ra một phương pháp mã hóa khác mà có thể giải quyết được vấn đề trên, đó là mã hóa khóa công khai (public key cryptography) hay còn được gọi là mã hóa bất đối xứng (asymmetric cryptography). Đây có thể xem là một bước đột phá quan trọng nhất trong lĩnh vực mã hóa. Xét lại mô hình mã hóa đối xứng: Hình 1 Mô hình mã hóa đối xứng Để khắc phục điểm yếu của mã hóa đối xứng người ta tập trung vào nghiên cứu theo hướng: có phương pháp nào để việc mã hóa và giải mã dùng hai khóa khác nhau hay không? Có nghĩa là C = E(P, K1) và P = D(C, K2). Nếu thực hiện được như vậy thì chúng ta sẽ có hai phương án tiến hành: Phương án 1: Người nhận (Bod) giữ bí mật khóa K2, còn khóa K1 thì công khai cho tất cả mọi người biết. Alice muốn gửi dữ liệu cho Bob thì dùng khóa K1 để mã hóa. Bob dùng khóa K2 để giải mã. Giả sử có một người là Charlie là kẻ tấn công, hắn biết khóa K1 nhưng lại không thể dùng chính K1 để giải mã mà phải dùng K2. Do đó chỉ có duy nhất Bob mới có thể giải mã được. Điều này đảm bảo tính bí mật của quá trình truyền dữ liệu. Ưu điểm của phương pháp này là không cần phải truyền khóa K1 trên kênh an toàn. Phương án 2: Người gửi (Alice) giữ khóa bí mật K1, còn khóa K2 thì công khai cho tất cả mọi người biết. Alice muốn gửi dữ liệu cho Bob thì dùng khóa K1 để mã hóa. Bob dùng K2 để giải mã. Ở đây Charlie cũng biết khóa K2 nên hắn cũng có thể giải mã được. Do đó phương pháp này không đảm bảo tính bí mật. Tuy nhiên tính chất chứng thực và tính chống chối bỏ lại được đảm bảo. Vì chỉ có duy nhất Alice biết được khóa K1, nên nếu Bob dùng K2 để giải mã bản tin, thì điều đó có nghĩa là Alice là người gửi bản mã. Nếu Charlie cũng có khóa K1 để gửi bản mã thì Alice sẽ bị quy trách nhiệm làm lộ khóa K1. Trong phương án này cũng không cần phải truyền K2 trên kênh an toàn. Nhận thấy nếu kết hợp phương án 1 và phương án 2 thì mô hình đề xuất có thể khắc phục được toàn bộ nhược điểm của mã hóa đối xứng. Trong hai phương án, một khóa được giữ bí mật chỉ một người biết, còn khóa kia được công khai. Do đó mô hình mã hóa trên được gọi là mã hóa khóa công khai (hay mã hóa bất đối xứng). Để thuận tiện ta quy ước lại các ký hiệu như sau: Khóa bí mật hay private key trong mô hình trên sẽ được ký hiệu là KS. Khóa công khai hay public key được ký hiệu là KP. Bản rõ ký hiệu là M còn bản mã giữ nguyên ký hiệu là C Phương án 1 viết lại thành: C = E (M, KS) M = D (C, KP) Phương án 2 viết lại thành: C = E (M, KP) M = D (C, KS)
BAN CƠ YẾU CHÍNH PHỦ HỌC VIỆN KỸ THUẬT MẬT MÃ KHOA: AN TỒN THƠNG TIN Mật mã ứng dụng an tồn thơng tin ĐỀ TÀI 05 Mật mã đường cong Elliptic Giảng viên: Sinh viên thực hiện: Thầy Lục Như Quỳnh MỤC LỤC Danh mục hình ảnh .4 Chương 1: Hệ mật mã khóa cơng khai .5 1.1 Giới thiệu 1.2 Lý thuyết số 1.2.1 Một số khái niệm .8 1.2.2 Định lý Fermat 10 1.2.3 Phép logarit rời rạc 11 1.3 Bảo mật, Chứng thực Chống chối bỏ 12 1.4 Trao đổi khóa 13 1.4.1 Trao đổi khóa cơng khai 13 1.4.2 Dùng mã hóa cơng khai để trao đổi khóa bí mật .15 1.5 Phương pháp trao đổi khóa Diffie - Hellman 15 Chương 2: Hệ mật đường cong Elliptic 18 2.1 Đường cong Elliptic 18 2.1.1 Định nghĩa .18 2.1.2 Cộng điểm đường cong Elliptic 19 2.1.2.1 Trường hợp điểm không trùng .21 2.1.2.2 Trường hợp điểm trùng 21 2.1.3 Nhân vô hướng điểm đường cong Elliptic 22 2.1.4 Nhóm (+) điểm đường cong Elliptic 24 2.1.5 Đường cong Elliptic trường hữu hạn 27 2.1.5.1 Trường hữu hạn 27 2.1.5.2 Tổng số điểm đường cong Elliptic trường hữu hạn Fq 29 2.2 Mật mã đường cong Elliptic 32 2.2.1 Thiết lập sở 32 2.2.1 Bài tốn lơ ga rít rời rạc (DLP) đường cong elliptic 32 Bài tốn lơ-ga-rít rời rạc đường cong Elliptic (ECDLP) .33 2.2.2 Trao đổi khóa 33 2.2.2.1 Trao đổi khóa Diffie-Hellman ECDH .33 2.2.2.2 Tạo khóa bí mật chia sẻ ECMQV .34 2.2.3 Mã hóa - Giải mã .35 2.2.3.1 Mã hóa Massey-Omura .35 2.2.3.2 Mã hóa ElGamal .36 2.2.3.3 Mã hóa ECIES 36 2.2.4 Các hệ chữ ký đường cong Elliptic: 38 2.2.4.1 Sơ đồ chữ ký số Elgamal Elliptic .38 2.2.4.2 Chuẩn chữ ký số Elliptic (ECDSA) 38 2.3 Nhúng số vào điểm đường cong Elliptic 39 2.3.1 Chuyển thông báo thành số nguyên thuộc Fp 39 2.3.2 Nhúng rõ 40 2.4 Độ an toàn hệ mật đường cong Elliptic 41 Bài tập nhà 43 Tài liệu tham khảo 52 Danh mục hình ảnh Hình Mơ hình mã hóa đối xứng .5 Hình Bảng giá trị modulo với n = 19 .11 Hình Mơ hình bảo mật với mã hóa cơng khai .12 Hình Mơ hình chống chối bỏ với mã hóa cơng khai .12 Hình Mơ hình kết hợp bảo mật, chúng thực chống chối bỏ 13 Hình Trao đổi khóa cơng khai tự phát 13 Hình Trao dổi khóa cơng khai dùng trung tâm chứng thực 14 Hình Thiết lập khóa phiên bí mật mã hóa khóa cơng khai 15 Hình Tấn công Man in the middle với phương pháp Diffie - Hellman 16 Hình 10 Bảo vệ khóa Diffie – Hellman khóa cơng khai 17 Hình 11 Phép cộng đường cong Elliptic 20 Hình 12 Ví dụ tính chất kết hợp đường cong Elliptic 23 Chương 1: Hệ mật mã khóa cơng khai 1.1 Giới thiệu Xét mơ hình mật mã cổ điển với Alice (người gửi) Bob (người nhận), chọn khóa bí mật K Sau dùng K để mã hóa e K luật giải mã dK Trong hệ mật dK giống eK dễ dàng phân tích từ eK (ví dụ hệ mật DES q trình giải mã hồn tồn tương tự với q trình mã hóa với trình tự ngược lại) Các hệ mật gọi hệ mật khóa bí mật, để lộ key tính an tồn hệ thống khơng cịn đảm bảo Nhược điểm hệ mật thể hai khía cạnh sau: ● Vấn đề trao đổi khóa giữa người gửi người nhận: Cần phải có kênh an tồn để trao đổi khóa cho khóa phải giữ bí mật có người gửi người nhận biết Điều không hợp lý mà ngày nay, khối lượng thông tin luân chuyển khắp giới lớn Việc thiết lập kênh an toàn tốn mặt chi phí chậm trễ mặt thời gian ● Tính bí mật khóa: Khơng có sở quy trách nhiệm mà khóa bị tiết lộ Dựa sở vào năm 1976 Whitfield Diffie Martin Hellman tìm phương pháp mã hóa khác mà giải vấn đề trên, mã hóa khóa cơng khai (public key cryptography) hay cịn gọi mã hóa bất đối xứng (asymmetric cryptography) Đây xem bước đột phá quan trọng lĩnh vực mã hóa Xét lại mơ hình mã hóa đối xứng: Hình Mơ hình mã hóa đối xứng Để khắc phục điểm yếu mã hóa đối xứng người ta tập trung vào nghiên cứu theo hướng: có phương pháp để việc mã hóa giải mã dùng hai khóa khác hay khơng? Có nghĩa C = E(P, K1) P = D(C, K2) Nếu có hai phương án tiến hành: ● Phương án 1: Người nhận (Bod) giữ bí mật khóa K2, cịn khóa K1 cơng khai cho tất người biết Alice muốn gửi dữ liệu cho Bob dùng khóa K1 để mã hóa Bob dùng khóa K2 để giải mã Giả sử có người Charlie kẻ công, biết khóa K1 lại khơng thể dùng K1 để giải mã mà phải dùng K2 Do có Bob giải mã Điều đảm bảo tính bí mật q trình truyền dữ liệu Ưu điểm phương pháp không cần phải truyền khóa K1 kênh an tồn ● Phương án 2: Người gửi (Alice) giữ khóa bí mật K1, cịn khóa K2 cơng khai cho tất người biết Alice muốn gửi dữ liệu cho Bob dùng khóa K1 để mã hóa Bob dùng K2 để giải mã Ở Charlie biết khóa K2 nên giải mã Do phương pháp khơng đảm bảo tính bí mật Tuy nhiên tính chất chứng thực tính chống chối bỏ lại đảm bảo Vì có Alice biết khóa K1, nên Bob dùng K2 để giải mã tin, điều có nghĩa Alice người gửi mã Nếu Charlie có khóa K1 để gửi mã Alice bị quy trách nhiệm làm lộ khóa K1 Trong phương án không cần phải truyền K2 kênh an toàn Nhận thấy kết hợp phương án phương án mơ hình đề xuất khắc phục tồn nhược điểm mã hóa đối xứng Trong hai phương án, khóa giữ bí mật người biết, cịn khóa cơng khai Do mơ hình mã hóa gọi mã hóa khóa cơng khai (hay mã hóa bất đối xứng) Để thuận tiện ta quy ước lại ký hiệu sau: ● Khóa bí mật hay private key mơ hình ký hiệu KS ● Khóa cơng khai hay public key ký hiệu KP ● Bản rõ ký hiệu M mã giữ nguyên ký hiệu C ● Phương án viết lại thành: C = E (M, KS) M = D (C, KP) ● Phương án viết lại thành: C = E (M, KP) M = D (C, KS) Vấn đề lại liệu có tồn mơ hình mã hóa giải mã dùng hai khóa khác không? Dĩ nhiên K P KS hồn tồn độc lập với Phải có mối quan hệ giữa hai khóa tiến hành mã hóa giải mã Có nghĩa K S = f(KP) Tuy nhiên, yêu cầu quan trọng việc tính KS = f(KP) phải bất khả thi mặt thời gian Nếu nguyên tắc bị vi phạm việc giữ bí mật khóa KS khơng cịn ý nghĩa nữa từ khóa cơng khai KP lần lại khóa KS Để có cạp khóa KS KP thỏa mãn, người ta thường dùng hàm chiều (one way function) Các hàm chiều có tính chất hàm nghịch đảo chúng khó thực Sau ví dụ hàm chiều: Việc sinh hai số nguyên p, q tính tích N = pq thực dễ dàng Tuy nhiên cho trước N thực phân tích N để tìm lại hai số nguyên p, q việc hoàn toàn bất khả thi mặt thời gian Có nhiều phương pháp mã hóa thuộc loại mã hóa cơng khai: ● Hệ mật RSA: Độ bảo mật hệ RSA dựa độ khó việc phân tích thừa số nguyên lớn ● Hệ mật Merkle - Hellman: Dựa tính khó giải tốn tổng tập (bài toán toán NP đầy đủ - lớp lớn tốn khơng có giải thuật biết thời gian đa thức) Tuy nhiên tất hệ mật xếp ba lô khác bị chứng minh khơng an tồn (Ngoại trừ Chor-Rivest) ● Hệ mật McEliece: Dựa lý thuyết mật mã đại số coi an toàn McEliece giải mã cho mã tuyến tính (Cũng tốn NP đầy đủ) ● Hệ mật ElGamal: Dựa tính khó giải toán logarithm rời rạc trường hữu hạn ● Hệ mật Chor-Rivest: Cũng coi hệ mật xếp ba lơ Tuy nhiên coi an toàn ● Hệ mật đường cong Elliptic: Các hệ mật biến tướng hệ mật khác (Hệ mật ElGamal), chúng làm việc đường cong Elliptic trường hữu hạn Hệ mật đảm bảo độ mật với số khóa nhỏ hệ mật khóa cơng khai khác Một chút ý quan trọng hệ mật khóa cơng khai khơng đảm bảo độ mật tuyệt đối (an tồn vơ điều kiện) Sở dĩ nghiên cứu mã, y mã tin rõ luật mã hóa cơng khai eK tìm rõ x đảm bảo y = e K (x) Bản rõ kết giải mã y Bởi ta nghiên cứu độ mật mặt tính tốn hệ mật Khi nghiên cứu hệ mật khóa cơng khai có khái niệm cần phải tìm hiểu hàm cửa sập chiều (one way trapdoor functions) Ta định nghĩa khái niệm cách không hình thức Hàm mã hóa cơng khai e K Bob phải hàm dễ tính tốn Song việc tìm hàm ngược (hàm giả mã) khó khăn (đối với khơng phải Bob) Đặc tính thường gọi đặc tính chiều Bởi điều kiện cần thiết eK phải hàm chiều Các hàm chiều quan trọng mật mã học, chúng quan trọng hệ mật khóa cơng khai nhiều lĩnh vực khác Đáng tiếc có nhiều hàm coi hàm chiều khơng tồn hàm chứng minh hàm chiều Sau ví dụ hàm coi hàm chiều Giả sử n tích hai số nguyên tố p q, giả sử b số nguyên dương Khi ta xác định ánh xạ f: Z n ⟶ Zn f(x) = xb mod n (với b n chọn thích hợp hàm mã RSA) Để xây dựng hệ mật khóa cơng khai việc tìm hàm chiều chưa đủ Ta không muốn eK hàm chiều Bob phải có khả giải mã tin nhận cách hiệu Điều cần thiết Bob phải có cửa sập chứa thơng tin bí mật cho phép dễ dàng tìm hàm eK Như Bob giải mã cách hiệu có thơng tin tuyệt mật khóa Bởi hàm gọi cửa sập chiều (one way trapdoor functions) hàm chiều trở nên dễ tính ngược biết cửa sập định 1.2 Lý thuyết số 1.2.1 Một số khái niệm Phép chia modulo Phép chia modulo phép chia lấy phần dư Ví dụ: 27 mod = 35 mod = Một cách tổng quát: a mod n = r với a ≥ 0; n > 0; ≤ r ≤ n-1 Nếu hai số a, b có số dư phép chia cho n ta nói a b đồng dư phép chia modulo n, phép so sánh đồng dư ký hiệu dấu: a ≡ b (mod n) hay viết tắt a ≡ b mod n Có thể thấy phép tốn modulo phân hoạch tập số tự nhiên N thành n lớp tương đương đồng dư ứng với giá trị r tập {0, 1, 2, 3…,n1} Ví dụ với n = ta có lớp tương đương sau: {0, 4, 8, 12, 16 } {1, 5, 9, 13, 17 } {2, 6, 10, 14, 18…} {3, 7, 11, 15, 19…} Tính chất phép modulo Cho a, b n số ngun, phép modulo có tính chất: (a + b) mod n = [(a mod n) + (b mod n)] mod n (a - b) mod n = [(a mod n) - (b mod n)] mod n (a � b) mod n = [(a mod n) � (b mod n)] mod n Ước số Nếu a mod n = (viết cách khác a ≡ mod n) có nghĩa a chia hết cho n, hay n ước số a Ước số chung lớn hai số: ký hiệu gcd(a, b) Để tìm UCLN hai số a, b sử dụng thuật tốn Euclid Số ngun tố Một số p gọi số nguyên tố p chia hết cho nó, ngồi không chia hết cho số khác từ đến p - Số nguyên tố Hai số nguyên a, b gọi nguyên tố UCLN a b Ký hiệu: a⏊b Ví dụ: 3⏊8, 7⏊9 Hai số 20 15 khơng ngun tố UCLN chúng Phần tử nghịch đảo phép nhân modulo Nếu hai số nguyên a n nguyên tố nhau, tổn số nguyên w cho: a.w ≡ mod n Ta gọi w phần tử nghịch đảo a phép modulo cho n ký hiệu a-1 Ví dụ: n = 10, a = hai số nguyên tố nhau, tìm a -1 = (21 ≡ mod 10) n = 10, a = hai số nguyên tố nhau, ta có bảng phép nhân Trong bảng không tồn số a-1 cho a.a-1 đồng dư mod 10 Vậy khơng tồn phần tử nghịch đảo Để tính a -1 dùng thuật tốn Euclid mở rộng Tính chất phần tử sinh có phần tử sinh n = 2, 4, p k 2pk, p số nguyên tố lẻ k ≥ Đặc biệt, p số ngun tố có phần tử sinh Nếu phần tử sinh thì: Giả sử phần tử sinh phần từ Từ ta rút cyclic thí số cá phần tử sinh phần nguyên tố p 1.2.2 Định lý Fermat Định lý: Nếu p số nguyên tố a số ngun khơng chia hết cho p a p-1 ≡ mod p Chứng minh: Xét tập X gồm p-1 phần tử: X = {a mod p, 2a mod p, …, (n-1)a mod p} Ta có hai nhận định sau: - Khơng có phần tử tập X a nguyên tố với p - Không tồn hai phần tử thứ i thứ j (i ≠ j) cho: ia mod p = ja mod p Vì a nguyên tố với p nên tồn a -1 phép modulo p Do ia ≡ ja mod p iaa-1 ≡ jaa-1 mod p nghĩa i ≡ j mod p Điều trái với giả thiết i ≠ j Từ hai nhận xét ta suy phần tử X hoán vị giá trị {1, 2, 3…, p-1} Do đó: a � 2a � …(p-1)a ≡ [1 � � … (p-1)] mod n a � a � … � a = ap-1 ≡ mod n (ĐPCM) Sau sốt ví dụ Fermat p = 5, a = 74 => 49.49 = 2401, 2401 ≡ mod p = 7, a = 46 => 64.64 = 4096, 4096 ≡ mod 1.2.3 Phép logarit rời rạc Ta định nghĩa phép lũy thừa modulo hình, để tính y từ a, x từ n số nguyên: y = ax mod n = (a.a…a) mod với x số a nhân với 10 sau thuật toán đưa vào chuẩn ANSI X9.63 ISO/IEC 15946-3, IEEE P1363a Tham số D = (q, FR, S, a, b, P, n, h) chọn tương tự với ECDSA Ở cần lựa chọn thêm hàm mã hóa/giải mã đối xứng ký hiệu eK(m) dK(c) Trong m rõ cần mã hóa, c mã Thuật tốn mã hóa đối xứng chọn để phục vụ q trình mã hóa/giải mã dễ dàng nhanh so với thuật toán bất đối xứng Ngồi thay sử dụng hàm băm đơn giản, ECIES sử dụng hai hàm băm sau: Message authentication code MACk (c): MAC: {0, 1}n � {0, 1}* ⟶ {0, 1}n Key derivation function K D(T, l): KD: E � N ⟶ {0, 1}* l độ dài khóa (k1|| k2) {0, 1} chuỗi bit có giá trị 0, có độ dài n khơng xác định (*) Người nhận có cặp khóa cơng khai/bí mật (Y, x) Y = xP Mã hóa ECIES INPUT: Văn cần mã hóa m, khóa cơng khai Y OUTPUT: Văn mã hóa (U, c, r) 1: Chọn k ∈ [1, q-1] 2: U ⟵ kP 3: T ⟵ kY 4: (k1|| k2) ⟵ KD(T, l) 5: Mã hóa văn bản, c ⟵ Ek1(m) 6: Tính giá trị MAC cho văn mã hóa r = MACk2 (C) 7: Trả return (U, c, r) Bên giải mã nhận tập hợp (U, c, r) gồm thành phần sau: U cần thiết để tính khóa phiên Diffie - Hellman T c mã hóa r dùng để xác thực mã văn Giải mã ECIES INPUT: Văn mã hóa U, c, r, khóa bí mật x OUTPUT: Văn giải mã m thông báo “văn mã không hợp lệ” 1: T ⟵ xU 2: (k1|| k2) ⟵ KD(T, l) 3: Giải mã văn bản, m ⟵ Dk1(c) 4: If r ≠ MACk2(C) then 5: Xuất thông báo “văn không hợp lệ” 6: End if 35 7: Trả văn giải mã m Khóa phiên T sau tính phần giải mã có giá trị giống phần mã hóa, thật vậy: Đánh giá bảo mật: Để phá khóa lược đồ Hacker cần phải tìm khóa bí mật x giá trị k cách giải toán x = logPY k = logPU, hai tốn tốn khó chưa giải thời gian đa thức 2.2.4 Các hệ chữ ký đường cong Elliptic: 2.2.4.1 Sơ đồ chữ ký số Elgamal Elliptic Pha chuẩn bị: Alice chọn đường cong Elliptic E trường hữu hạn GF(q) cho tốn ECDLP khó E Alice chọn điểm A E (thường bậc N điểm A số nguyên tố lớn), số nguyên bí mật a tính B = aA Alice chọn hàm : f : E Z Hàm f khơng cần có tính chất đặc biệt ngoại trừ ảnh nên lớn có số nhỏ đầu vào tạo đầu cho trước Ví dụ: Nếu xét E GF(p) với p ngun tố lấy f(x,y) = x Thông tin công khai Alice E, GF(q), f, A B Alice giữ a bí mật Số nguyên dương N không nên công bố công khai Alice tạo chữ ký số: Alice biểu diễn thông báo số nguyên m Nếu m > N chọn đường cong lớn sử dụng hàm băm cho m Alice chọn số nguyên dương ngẫu nhiên k với (k,N) = tính R = kA Alice tính s k-1(m - af(R)) (mod N) thông báo chữ ký (m, R, s) Kiểm tra chữ ký số: Bob lấy thông tin công khai Alice Bob tính V1 = f(R)B + sR V2 = mA Nếu V1 = V2 Bob tin tưởng chữ ký hợp lệ Tính đắn: 36 Chúng ta có sk m - af(R) (mod N) sk = m - af(R) + zN số nguyên z Bởi skA = (m - af(R))A + zNA = (m af(R))A + O = (m - af(R))A Thế V = f(R)B + sR = f(R)aA + skA = f(R)aA + (m - af(R)) = mA = V2 2.2.4.2 Chuẩn chữ ký số Elliptic (ECDSA) Chuẩn bị: Alice muốn ký thông báo m số nguyên dương Alice chọn đường cong Elliptic E trường hữu hạn GF(q) cho số điểm E GF(q) fr với r số nguyên tố lớn f số nguyên dương nhỏ thuật toán hiệu Alice chọn điểm sở G E GF(q) có bậc r Cuối Alice chọn số nguyên dương a tính Q = aG Alice công bố công khai thông tin sau đây: GF(q), E, r, G, Q Alice tạo chữ ký số: Alice chọn số nguyên dương ngẫu nhiên k với k < r tính R = kG = (x,y) Alice tính s = k-1(m + ax) (mod r) tài liệu ký (m, R, s) Bob kiểm tra chữ ký số: Bob tính u1 = s-1m (mod r) u2 =s-1x (mod r) Bob tính V = u1G + u2Q Bob tuyên bố chữ ký số hợp lệ V = R Tính đắn: Nếu thơng báo ký đẳng thức kiểm tra đúng: V = u1G + u2Q = s-1mG + s-1xQ = s-1(mG + xaG) kG = R Sự khác ECDSA sơ đồ chữ ký số Elgamal Elliptic thủ tục kiểm tra chữ ký số Trong sơ đồ Elgamal đẳng thức kiểm tra f(R)B + sR = mA địi hỏi ba phép tính với số nguyên lần điểm những phần tốn nhất, ECDSA địi hỏi hai phép tính Cải tiến nâng cao hiệu ECDSA cần nhiều lần kiểm tra chữ ký số có giá trị thực tế 2.3 Nhúng số vào điểm đường cong Elliptic Ta biết mật mã khóa cơng khai, Alice muốn gửi thơng báo cho Bob trước hết phải chuyển vào tập số nguyên, sau dùng kiểu biến đổi để mã hóa 37 Đối với mật mã đường cong elliptic, làm việc với dạng bao gồm điểm đường cong Do vấn đề khởi đầu nghiên cứu phương pháp để đưa rõ dạng điểm P đường cong elliptic Cần ý giai đoạn này, ta không coi việc chuyển nói phép mã hóa để giữ bí mật 2.3.1 Chuyển thông báo thành số nguyên thuộc Fp Có nhiều phương pháp để thực việc Đây những phương pháp giới thiệu nhằm làm rõ việc chuyển đổi số thành điểm đường cong elliptic Xét việc chuyển đoạn thông báo gồm ký tự thành phần tử trường F31013 cho (m1,m2,m3) đơn vị thông báo vậy, miZ27 (ký hiệu khoảng cách nhận giá trị 0) Tính x= m1.272 +m2 27+m3 Khi đó, x Fp p ≥ 26.272 +26 27+26 = max{x : miZ27 , i=1 3} = 19682 Giả sử p = 41113, thông báo LETS GET SEAFOOD cần chuyển thành phần tử Fp Nó tách thành những đoạn gồm ký tự Kết sau: Bản rõ (m1,m2,m3) PM = m1.272 +m2 27+m3 LET (12,5,20) 8903 SGE (19,7,5) 14045 TSE (20,19,5) 15098 AFO (1,6,15) 906 OD_ (15,4,0) 11043 2.3.2 Nhúng rõ Cách trực quan để ánh xạ số nguyên x tới điểm P E(Fp) tìm điểm P có hồnh độ x Ví dụ, với đường cong y = x3+2x-1 F41113 phải nhứng từ CAT = 3(27)2+1.27+20 = 2234 Ta thấy điểm cần tìm P = (2234,23945) E(F41113 ) Từ P, dễ dàng tìm lại CAT Người ta thấy có khoảng nửa những giá trị x Fp hoành độ những điểm đường cong elliptic Chẳng hạn, Map = 13.27 + 1.27+16 = 9520 không thặng dư bậc theo modulo 41113 nên khơng có điểm đường cong nhận 9520 làm hồnh độ Cũng có khoảng nửa x Ta thử làm sau Khi x tăng dần x lên đơn vị điểm P nhận giá trị làm hồnh độ Ta có (9527) điểm đạt tiêu chuẩn Thế MAP ↪(9527, 2121) Tuy nhiên, chuyển 9527 38 số 27 lại 9527 = 13.27 + 1.27+23 = MAW Như , MAP, MAQ, MAR, …, MAW↪(9527, 2121) Ta dễ dàng làm đắn điều cách sử dụng ánh xạ x↪lx với số nguyên lớn l sau nhúng lx Cần phải kiểm tra trường ta đủ lớn, nghĩa max{lx} = l.19682 < p để tìm lại lx Khi ta thấy x ánh xạ tới điểm E(F p) miễn số f(lx), f(lx+1), …, f(lx+l-1) thặng dư bậc Xác suất để điều thất bại, nghĩa khơng tìm lx với x cho, 1/2l Số nguyên l gọi tham số nhúng Ví dụ Vẫn đường cong nói trên trường F910307, lấy l=32 Khi có xấp xỉ 5000 triệu hội cho khơng có số số f(lx), f(lx+1), …, f(lx+31) thặng dư bậc Giả sử ta muốn nhúng YOU HAVE TWO HOURS đường cong elliptic Bảng sau minh họa q trình lặp Ta thấy có điểm đối vddieemrootj giá trị rõ x Bản rõ X lx=32.x YOU 18651 596832 -1 ETW 4208 134656 -1 OHU 11166 357312 -1 ORS 15184 506048 -1 -1 -1 1 -1 -1 -1 HAV 5881 188192 1 -1 32x+i 596837 188192 134659 357313 506049 y tương ứng 678400 655701 728528 457834 833712 Giả sử biết tham số nhúng l, ta dễ dàng chuyển điểm đường cong elliptic trở số nguyên x cách Giả sử ta có điểm P= (xp, yp) cần tìm x Với l đủ lớn giả thiết xp = lx +m, với ≤ m < l Khi , 39 theo giả thiết nói m/l < Vì x = Cần ý ta có xác suất (1/2 l) để bất đẳng thức ≤ m < l khơng 2.4 Độ an tồn hệ mật đường cong Elliptic Sức mạnh ECC nằm phức tạp thám mã mà phải xác định số ngẫu nhiên bí mật k từ kP P Phương pháp nhanh để giải tồn phương pháp phân tích S – Pollard Để pahs ECC độ phức tạp tính tốn dùng phương pháp S – Pollard 3,8.10 10 MIPS – năm với kích thước khóa 150 bit (Đây số năm cần thiết với hệ thống tính tốn có tốc độc hàng triệu lệnh/giây) Để so sánh với phương pháp nhanh phá RSA (là phương pháp sàng trường số để phân tích hợp số n thành tích số nguyên tố p q) ta thấy với n có kích thước 768 bit độ phức tạp tính tốn 2.10 MIPS – năm, với n có kích thước 1024 bit, độ phức tạp tính tốn 3.10 11 năm Nếu độ dài khóa RSA tăng lên tới 2048 bit cần 3.10 20 MIPS – năm, với ECC cần độ dài khóa 235 bit yêu cầu tới 1,6.1028 MIPS - năm 40 Bài tập nhà Bài 1: Sử dụng thuật tốn Euclide mở rộng để tìm ước chung lớn hai số a = 1573, b = 308 Thuật toán: Cho b mod m (A1, A2, A3) = (1, 0, m) Q = A3 div B3 B1 = A1 – Q*B1 (A1 A2 A3) = (B1, B2, B3) If B3 = 0: gcd (b, m) = A1 Else B3 =1: gcd (b, m) = b-1 mod m = B2 (B1, B2, B3) = (0, 1, b) B3 = A3 mod B3 B2 = A2 – Q*B2 Bài làm Bảng 7: Q A1 1 -9 A2 -5 45 Bảng 3: Q r 1573 308 33 11 t -5 45 A3 1573 308 33 11 B1 -9 27 B2 -5 45 -140 Bài 2: Tìm số nghịch đảo (nếu có) 30 theo mơđun 101 Định nghĩa: Nếu số nguyên dương x < b thỏa mãn x*b mod m = nghịch đảo b mod m, kí hiệu b-1 mod m Bài làm Cách 1: Sử dụng thuật tốn Euclide mở rộng Tìm 30-1mod 101 Q A1 A2 A3 B1 B2 101 30 -3 -3 11 -2 -2 -10 -10 -8 27 41 B3 308 33 11 x B3 30 11 -8 27 11 -37 ⇨ 30-1mod 101 = -37 = 64 ⇨ 64*30 mod 101 Cách 2: b = 30; m = 101 ⇨ Tìm x cho x*b = y*m + Ta có: ⇨ x = = = 3y + o r1 = (0 r130) (*) o 30r1 = 11y + ⇨ y = = 2r1 + o r2 = (0 r211) (**) o r1 = Chọn r2 = thỏa (**) r1 = thỏa (*) y = 2r1 + r2 = 19 ⇨ x = 3y + r1 = 3.19 + = 64 Bài 3: Tìm phần tử nghịch đảo Z*31 Giả sử b nghịch đảo Z*31 3.b ≡ mod 31 3.b mod 31 ≡ b = 3-1 mod 31 Áp dụng thuật toán Euclide mở rộng tính: b = 3-1 mod 31 i ri qi -1 31 1 10 xi 1 yi -10 Ta có: b = 3-1 mod 31 = -10 mod 31 = 21 Nghịch đảo Z*31 là: 21 Bài 4: Tìm khóa bí mật hệ mật RSA với p=61, q=29 biết khóa cơng khai e=19 Tính mã rõ m=37 tiến hành giải mã ngược lại để kiểm tra lại kết Tính khóa bí mật Trong hệ mật RSA ta có: n = p.q = 61.29 = 1769 42 Φ(n) = Φ(p.q) = Φ(p).Φ(q) Φ(1769) = 60.28 = 1680 Sô mũ giải mã: d = e-1 mod Φ(n) = 19-1 mod 1680 Sử dụng thuật tốn Euclide mở rộng tính 19-1 mod 1680 Q A1 A2 A3 B1 1680 88 19 -88 -2 -2 177 5 -422 -7 B2 -88 177 -422 619 B3 19 Số mũ giải mã d = 19-1 mod 1680 = 619 Mã hóa tin với m = 37 Trong hệ mật RSA, ta có mã: c = me mod n = 3719 mod 1769 Áp dụng thuật tốn nhân bình phương có lặp ta tính: c = 3719 mod 1769 19 = 10011 = 20 + 21 + 24 t=4 i ki A b 37 37 1 1369 1121 790 1121 1412 1121 81 582 Bản mã: c = 3719 mod 1769 = 582 Giải mã Để giải mã, ta tìm: m = cd mod n m = 582619 mod 1769 619 = 1001101011 = 20 + 21 + 23 + 25 + 26 + 29 t=9 i ki A b 582 582 1 845 1 1118 1010 1156 741 1004 1004 984 Vậy rõ ban đầu: 43 0 691 1620 973 648 648 648 314 37 m = 582619 mod 1769 = 37 Bài 5: Tính JACOBI (158, 235) Tính chất (1): m1 ≡ m2 mod n -> () ≡ () Tính chất (2): () = Tính chất (3): () = () () m = () Tính chất (4): () = Tính chất (5): () = Bài làm = = = = = = Bài 6: Hãy tính bậc hai 12 mod 37 Bài làm 12 mod 37 44 - Ta có 37 số nguyên tố 37 ≡ mod - Tính d = a(p-1)/4 mod p = 129 mod 37 - Áp dụng thuật tốn bình phương có lặp ta có: 121 = 12 122 = 33 124 = 16 128 = 34 129 = 121 128 = 12 34 = 408 ⇨ d = 408 mod 37 = ⇨ Vì d = => r = (a)(p+3)/8 mod p = mod 37 ⇨ r=7 Vậy có bậc hai (7, 30) Bài 7: Tìm r với r2 ≡ (mod 41) p số nguyên tố Ф(p) = p - Φ(p) = 41 –1 = 40 Áp dụng định lý α € Z*41 phần tử sinh β = αi mod n phần tử sinh gcd(i, Φ(p)) = Z*41 = {1, 3, 7, 9, 11, 13, 17, 21, 23, 27, 29, 31, 33, 37, 39} Căn bậc hai r2 ≡ mod 41: r = 13 132 = 169 ≡ mod 41 Bài 8: Cho đường cong E={(x,y) :y2=x3+x+ mod 11} Xác định tất điểm đường cong Tính tất giá trị kα với 1< k