Nghiên cứu giao thức trao đổi khóa an toàn trên đường cong Elliptic

76 297 6
Nghiên cứu giao thức trao đổi khóa an toàn trên đường cong Elliptic

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Tài liệu trình bày lý thuyết chi tiết, cơ bản về giao thức trao đổi khóa DiffieHellman. Đánh giá so sanh các phiên bản giao thức DiffieHellman. Từ phiên bản này đưa ra nhận định về độ an toàn của giao thức trên đường cong Elliptic là cao. Và phiên bản X25519 được ứng dụng vào thực tế. Tài liệu cài đặt giao thức X25519 trên nền tảng Qt bằng giao thức lập trình C

BỘ THƠNG TIN VÀ TRUYỀN THƠNG HỌC VIỆN BƯU CHÍNH VIỄN THÔNG ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ ĐỒ ÁN TỐT NGHIỆP NGHIÊN CỨU GIAO THỨC THỎA THUẬN KHÓA DIFFIE – HELLMAN TRÊN ĐƯỜNG CONG ELLIPTIC (ECDH) Ngành: Công nghệ thông tin Mã số: Hà Nội, 2018 BỘ THÔNG TIN VÀ TRUYỀN THÔNG HỌC VIỆN BƯU CHÍNH VIỄN THƠNG ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ ĐỒ ÁN TỐT NGHIỆP NGHIÊN CỨU GIAO THỨC THỎA THUẬN KHÓA DIFFIE – HELLMAN TRÊN ĐƯỜNG CONG ELLIPTIC (ECDH) Ngành: Công nghệ thông tin Mã số: Sinh viên thực hiện: Nguyễn Hà Nam Lớp: K45 Hà Nội, 2018 MỤC LỤC Danh mục kí hiệu viết tắt Danh mục hình vẽ Lời cảm ơn Lời nói đầu Chương Vấn đề thỏa thuận khóa an tồn thơng tin 1.1 Khái qt an tồn thơng tin 1.2 Bài tốn thỏa thuận khóa 1.3 Các giao thức thỏa thuận khóa phổ biến 1.4 Kết Luận Chương Chương Nghiên cứu phiên thỏa thuận khóa diffie – hellMAN 2.1 Giao thức thỏa thuận khóa Diffie – Hellman nguyên thủy phiên cải tiến 2.2 Giao thức thỏa thuận khóa Diffie – Hellman đường cong Elliptic 2.3 Tham số an toàn cho giao thức Diffie – Hellman khuyến nghị sử dụng 2.4 So sánh độ an tồn phiên giao thức thỏa thuận khóa Diffie – Hellman 2.5 Kết luận chương Chương CÀI ĐẶT VÀ THỰC NGHIỆM GIAO THỨC DIFFIEHELLMAN TRÊN ĐƯỜNG CONG ELLIPTIC CURVE25519 3.1 Lược đồ hoạt động giao thức 3.2 Các bước thực giao thức thuyết minh mã nguồn 3.3 Kết thực nghiệm chương trình cài đặt 3.4 Đánh giá độ an tồn, hiệu chương trình thực giao thức X25519 3.5 Kết luận chương Tài liệu tham khảo i DANH MỤC KÍ HIỆU VÀ VIẾT TẮT Ký Hiệu AES Thuật Ngữ Ý Nghĩa Advanced Encryption Standard CSDL Tiêu chuẩn mã hóa tiên tiến Cơ sở liệu DES Data Encryption Standard D-H Diffie - Hellman DoS Denial of Service Tiêu chuẩn mã hóa liệu Tấn cơng từ chối dịch vụ Giao thức thỏa thuận khóa ECDH Elliptic-Curve Diffie–Hellman Diffie – Hellman đường cong Elliptic ECC Elliptic Curve Cryptography IKE Internet Key Exchange Hệ mật dựa đường cong Elliptic Giao thức trao đổi khóa thỏa thuận khóa IKE SA Hiệp hội bảo mật IPSec Internet Protocol Security KDC Key Distribution Center Trung tâm phân phối khóa KPS Key Predistribution Scheme Phân phối khóa trước MIT Massachusett Institute of Technology Viện Công nghệ Massachusetts MITM Man In The Middle Tấn công kẻ National Institute of Standards and Viện tiêu chuẩn kỹ thuật Technology Quốc Gia ( Hoa Kỳ) NIST NLSP Network Layer Security Protocol NSA National Security Agency Cơ quan an ninh quốc gia Thuật toán mã hóa khóa cơng RSA khai SKDS Session Key Distribution Scheme SSL Secure Sockets Layer SSH Secure Shell Phân phối khóa phiên Giao thức thiết lập hết nối an ii toàn TCP/IP Internet protocol suite TLS Transport Layer Security VPN Virtual Private Network Bộ giao thức liên mạng Giao thức bảo mật tầng giao vận Mạng riêng ảo Đường cong Elliptic Curve X25519 25519 iii DANH MỤC HÌNH VẼ iv LỜI CẢM ƠN Trong trình thực đồ án tốt nghiệp này, nhận giúp đỡ tận tình cán hướng dẫn Giảng viên Học viện Bưu Chính Viễn Thơng, quan tâm sâu sát cán Học viện Bưu Chính Viễn Thơng, động viên người thân bạn bè Xin cảm ơn tất người tạo điều kiện tốt để tơi hồn thành đồ án tốt nghiệp này! SINH VIÊN THỰC HIỆN ĐỒ ÁN Nguyễn Trung Nam v LỜI NÓI ĐẦU Thời gian gần đây, công mạng gia tăng số lượng quy mô, diễn ngày tinh vi phức tạp Nhiều cơng có chủ đích nhằm vào quan Chính phủ, hệ thống thông tin quan trọng nhiều lĩnh vực Hầu hết doanh nghiệp chủ quan vấn đề an ninh mạng dễ bị công vào lỗ hổng: doanh nghiệp đánh giá thấp tầm quan trọng tin tưởng người tiêu dùng lĩnh vực an ninh mạng Thực trạng an toàn diễn thường xuyên mật mã biện pháp việc đảm bảo dịch vụ an tồn thơng tin như: bí mật, xác thực, tồn vẹn Để việc sử dụng mật mã đảm bảo an tồn thơng tin cần u cầu thuật toán, tham số sử dụng khóa Trong đó, khóa sử dụng hệ mật vấn đề thỏa thuận khóa bên liên lạc cần nghiên cứu sử dụng cách dựa lực tính tốn máy tính cơng cơng bố Diffie – Hellman giao thức thỏa thuận khóa phát minh sớm mật mã học sử dụng phổ biến Giao thức cho phép bên liên lạc thiết lập khóa bí mật chung để mã hóa liệu sử dụng kênh truyền thơng khơng an tồn Tuy nhiên, với việc lực tính tốn ngày cao hệ máy tính nhiều cơng vào giao thức DiffieHellman cơng bố việc cài đặt Diffie-Hellman theo mặc định gây nhiều nguy hiểm an ninh thông tin cho tổ chức, doanh nghiệp Và để khắc phục nhược điểm ECDH đời, thực việc thỏa thuận khóa dựa vào việc tính tốn đường cong Elliptic, sử dụng khóa có độ dài nhỏ đảm bảo tính an tồn cao Thời gian xử lý giảm đáng kể nhờ số phép toàn dùng để mã hóa giải mã phù hợp với thiết bị có khả tính tốn thấp Mục tiêu đặt thực đồ án là: Nghiên cứu phiên giao thức trao đổi khóa Diffie-Hellman Nghiên cứu cơng lên phiên giao thức trao đổi khóa Diffie – Hellman vi So sánh độ an toàn giao thức trao đổi khóa Đề xuất phiên giao thức Diffie – Hellman : ECDH X25519 (với đường cong Elliptic Curve25519) với độ an toàn cao Thực cài đặt, thử nghiệm phiên giao thức ECDH X25519 Sau thời gian khoảng ba tháng thực đồ án, mục tiêu đạt Tuy nhiên mật mã lĩnh vực khoa học phức tạp, thời gian thực đồ án tương đối ngắn nên chắn khơng tránh khỏi thiếu sót Rất mong góp ý thầy cô, bạn học viên để đồ án hoàn thiện SINH VIÊN THỰC HIỆN ĐỒ ÁN Nguyễn Trung Nam vii CHƯƠNG VẤN ĐỀ THỎA THUẬN KHĨA TRONG AN TỒN THƠNG TIN 1.1 Khái qt an tồn thơng tin 1.1.1 Vấn đền an tồn thơng tin Thực trạng an tồn thơng tin Việt Nam ngày diễn biến phức tạp nguy hiểm Các công mạng có quy mơ, mức độ phức tạp chuẩn bị cách kỹ lưỡng Trong đó, mục tiêu công dần chuyển dịch từ mục tiêu cá nhân, sang mục tiêu tập đoàn kinh tế lớn hay nghiêm trọng hệ thống thông tin quan trọng quốc gia Theo thống kê chuyên gia an ninh mạng, tháng đầu năm 2017 ghi nhận có 9.964 [18] cố công vào hệ thống mạng cá nhân, tổ chức Việt Nam (hình 1.1) Hình 1 : Các cơng tháng đầu năm 2017 Các công bao gồm loại hình chính: Malware, Phishing, Deface.Trong đó, cơng mã độc (Malware) phát tán chiếm nhiều với 4.595 lần , tức 46% tổng số công Trong số nạn nhân loại Hình : Giao diện chương trình cài đặt X25519 Panel Tính tốn phép nhân vơ hướng Curve25519 - Thực thi Panel chương trình với Test Vector đưa RFC7748 theo bảng 3.5: Point Scalar Output e6db6867583030db3594c1a424b15f7c726624ec26b3353b10a903a6d0ab1c4c e5210f12786811d3f4b7959d0538ae2c31dbe7106fc03c3efc4cd549c715a493 a546e36bf0527c9d3b16154b82465edd62144c0ac1fc5a18506a2244ba449ac4 4b66e9d4d1b4673c5ad22691957d6af5c11b6421e0ea01d42ca4169e7918ba0d c3da55379de9c6908e94ea4df28d084f32eccf03491c71f754b4075577a28552 95cbde9476e8907d7aade45cb4b873f88b595a68799fa152e6f8f7647aac7957 Hình : Test Vector Curve25519 RFC7748 - Nhập giá trị điểm (Point) hệ số nhân vô hướng (Scarlar) thứ vào ô tương ứng panel thứ ECC25519 chương trình -> nhấn Calculate để tính phép nhân vô hướng Curve25519 kết hiển thị Result (hình 3.6) 53 Hình : Phép nhân vô hướng Curve25519 - Nhập giá trị Ouput bảng 3.1 vào ô Test Vector chương trình -> nhấn Check để kiểm tra phép nhân vơ hướng chương trình có thực hay khơng Chương trình so sánh trị Test Vector Result: Nếu hai giá trị giống chương trình thực cho kết True, ngược lại sai cho kết False (hình 3.7) Hình : Kiểm tra phép nhân vô hướng Curve25519 54 Panel 2, Các bước tính tốn X25519 bên gửi bên nhận - Tiến hành thực thi Panel 2, chương trình với Test Vector đưa RFC7748 theo bảng 3.8 bảng 3.9: Secret Key 77076d0a7318a57d3c16c17251b26645df4c2f87ebc0992ab177fba51db92c2a Public Key 8520f0098930a754748b7ddcb43ef75a0dbf3a0d26381af4eba4a98eaa9b4e6a Shared Secret 4a5d9d5ba4ce2de1728e3bf480350f25e07e21c947d19e3376f09b3c1e161742 Hình : Test Vector Allice (bên gửi) X25519 Secret Key 5dab087e624a8a4b79e17f8b83800ee66f3bb1292618b6fd1c2f8b27ff88e0eb Public Key de9edb7d7b7dc1b4d35b61c2ece435373f8343c85b78674dadfc7e146f882b4f Shared Secret 4a5d9d5ba4ce2de1728e3bf480350f25e07e21c947d19e3376f09b3c1e161742 Hình : Test Vector Bob (bên nhận) X25519 - Nhập giá trị Secret Key Allice vào ô tương ứng Panel chương trình, nhấn Calculate Public Key Dễ dàng thấy khóa cơng khai tính ô Pulic key’s sender giống với khóa công khai Allice bảng 3.2 Trường hợp người gửi chưa có khóa bí mật sinh cách nhấn nút Genarate Secret Key (hình 3.10) Hình 10 : Tính khóa công khai bên gửi 55 - Làm tương tự với giá trị khóa bí mật Bob Panel chương trình, cho kết khóa cơng khai giống với khóa cơng khai Bob bảng 3.8 (hình 3.11) Hình 11 : Tính khóa cơng khai bên nhận - Gửi khóa cơng khai Bob cho Allice ngược lại, tiến hành nhập khóa cơng khai Bob vào Public key’s receiver Palnel tương tự với khóa cơng khai Allice Palnel chương trình Nhấn Calculate Shared Secret Key để tính khóa chia sẻ bí mật chung hai bên liên lạc (hình 3.12 3.13) 56 Hình 12 : Tính khóa chia sẻ bí mật bên gửi Hình 13 : Tính khóa chia sẻ bí mật bên nhận - Kết Shared secret key thu từ chương trình giống với bảng 3.8 3.9, khẳng định tính đắn chương trình thực X25519 57 3.4 Đánh giá độ an toàn, hiệu chương trình thực giao thức X25519 Độ an tồn Để phá vỡ giao thức X25519: ví dụ tìm khóa chia sẻ bí mật chung từ hai khóa cơng khai đánh giá vấn đề khó Tấn cơng vét cạn vào X25519 có độ khó so với cơng vét cạn vào hệ mật khóa bí mật có độ dài khóa 128 bit [16] Tấn cơng vào cấu trúc tốn học (độ khó tốn logarit rời rạc) X25519 có xác xuất thành cơng thấp X25519 sử dụng nhóm nguyên thủy vào khoảng 2252 Hiệu Tốc độ tính tốn nhanh: chương trình cài đặt có tốc độ tính tốn nhanh vào khoảng 832457 cycles máy Pentium III, 957904 cycles Pentium IV, 640838 cycles Pentium M 624768 cycles Athlon Vô hiệu với công kênh kề thời gian timing attacks, cache timing attacks Khóa bí mật ngắn: khóa bí mật sử dụng X25519 dài 32 byte đáp ứng độ an toàn cao Diffie-Hellman Khóa cơng khai ngắn: khóa cơng khai có độ dài 32 bytes phù hợp với giao thức Diffie-Hellman Mã nguồn nhỏ: hàm cài đặt biên dịch chiếm khoảng 16 kilo bytes CPU 3.5 Kết luận chương Chương trình bày lược đồ giao thức Diffie-Hellman đường cong Elliptic Curve25519 chi tiết bước thực bên liên lạc giao thức Từ lược đồ bước tính tốn, đồ án tiến hành cài đặt thực nghiệm giao thức ngơn ngữ lập trình C Qua đưa đánh giá hiệu độ an toàn giao thức thực 58 TÀI LIỆU THAM KHẢO [1] Lý thuyết mật mã An tồn thơng tin – Phan Đình Diệu – Đại Học Quốc Gia Hà Nội ( Khoa Công Nghệ) - NXB Đại Học Quốc Gia Hà Nội năm 2002 [2] Giáo trình sở lý thuyết mật mã - HVKTMM - Chủ Biên GS.Nguyễn Bình & Ths.Hồng Thu Phương – Xuất Bản năm 2013 [3] Giáo Trình Mật Mã Học & An Tồn Thơng Tin – TS Thái Thanh Tùng – NXB Thơng Tin Truyền Thơng [4] Hệ Mật Khóa Công Khai Dựa Trên Đường Cong Elliptic – Đặng Minh Tuấn – Hà Nội 4-2016 [5] Cryptography and Network Security: Principles and Practice (6th Edition) William Stallings [6] M Bellare, P Rogaway Optimal Asymmetric Encryption Padding - How to Encrypt with RSA In Advances in Cryptology | EUROCRYPT '94, pages 92-111, Springer-V erlag, 1994 [7] An Overview of Cryptography Gary C Kessler 22 February 2018 © 19982018 — A much shorter version of this paper first appeared in Handbook on Local Area Networks (Auerbach, Sept 1998) [8] [9] NIST Special Publication 800-57: Recommendation for Key Management, Part 1: General, 2016 R Avanzi, H Cohen, C Doche, G Frey, T Lange, K Nguyen, and F Vercauteren Handbook of Elliptic and Hyperelliptic Curve Cryptography Chapman & Hall/CRC, 2006 [10] Understanding Crytography (A Textbook for Student and Practitioners) – Christof Paar Jan Pelzl [11] Security Issues in the Diffie-Hellman Key Agreement Protocol - JeanFrancois Raymond and Anton Stiglic - Zero-Knowledge Systems Inc [12] Network-Specific Attacks on Diffie-Hellman Key-Exchange in Commercial Protocols - Iraj Fathirad, John Devlin, and Sepidehsadat Atshani International Journal of Computer Theory and Engineering, Vol 8, No 2, April 2016 59 [13] N Koblitz, "Elliptic curve cryptosystems," Mathematics of Computation, vol 48, pp 203-209, January 1987 [14] C Research, "Standards for efficient cryptography," Elliptic Curve Cryptography (Version 1.9), August 22, 2008 [15] Aqeel Khalique, Kuldip Singh, Sandeep Sood ”Implementation of Ellipic Curve Digital Signature Algorithm, IJCA, Vol:2, No-2” May,2010 [16] Curve25519: new Diffie-Hellman speed records - Daniel J Bernstein [17] D Hankerson, A Menezes, and S A Vanstone Guide to Elliptic Curve Cryptography Springer-Verlag New York, 2004 [18] Http://securitybox.vn/2540/an-toan-thong-tin-tai-viet-nam-2017/ - Cơng ty cổ phần An tồn thơng tin MVS – SecurityBox [19] https://vnptcert.vnpt.vn/robot-attack-pha-vo-hoan-toan-su-bao-mat-cua-tlskhi-su-dung-ma-hoa-rsa/ - Trung tâm An tồn thơng tin (Copyright 2017) [20] https://tools.ietf.org/html/rfc7748#appendix-A [21] Ravi Kishore Kodali and Ashwitha Naikoti: ECDH based Security Model for IoT using ESP8266, 2018 60 PHỤ LỤC Mã nguồn tập tin X25519.c /* * implement X25519 diffie-hellman from [1] * [1] Curve25519: new Diffie-Hellman speed records, 2006, Bernstein */ #include #include #include "X25519.h" #include "fld.h" #include "burnstack.h" #include "ed.h" /* * Cấu trúc cho điểm đường cong elip dạng Montgomery * khơng có tọa độ y */ struct mg { fld_t x; fld_t z; }; /* * ctmemswap – Hàm giúp hốn đổi có điều kiện a b */ static void ctmemswap(void *a, void *b, size_t len, uint8_t mask) 61 { uint8_t *pa = (uint8_t*)a; uint8_t *pb = (uint8_t*)b; uint8_t *endp = pa + len; uint8_t delta; while (pa < endp) { delta = (*pa ^ *pb) & mask; *pa++ ^= delta; *pb++ ^= delta; } } /* * montgomery – Cơng thức tính tốn Montgamery Nhân đôi Thêm * * input: A, B, C := A-B with z=1 * output: A z); fld_sq(sqsumA, sumA); fld_sub(subA, A->x, A->z); fld_sq(sqsubA, subA); 62 fld_mul(A->x, sqsubA, sqsumA); fld_sub(T1, sqsumA, sqsubA); fld_scale(T2, T1, 121665); fld_add(T2, T2, sqsumA); fld_mul(A->z, T1, T2); /* calculate A + B */ fld_add(sumB, B->x, B->z); fld_sub(subB, B->x, B->z); fld_mul(T1, subA, sumB); fld_mul(T2, sumA, subB); fld_add(T3, T1, T2); fld_sq(B->x, T3); fld_sub(T3, T1, T2); fld_sq(T3, T3); fld_mul(B->z, T3, C->x); } /* * mg_scale – Tính tốn x*P với cơng thức montgomery * * assumes: * out != P * P->z must be */ static void mg_scale(struct mg *out, const struct mg *P, const uint8_t x[X25519_KEY_LEN]) { struct mg T; 63 int8_t foo; int i, j; fld_set0(out->x, 1); fld_set0(out->z, 0); memcpy(&T, P, sizeof(struct mg)); for (i = X25519_KEY_LEN-1; i >= 0; i ) { foo = x[i]; for (j = 8; j > 0; j , foo 7); montgomery(out, &T, P); ctmemswap(out, &T, sizeof(struct mg), foo >> 7); } } } /* * do_X25519 – Tính tốn X25519 Diffie – Hellman cách sử dụng form Montgomery*/ static void do_X25519(uint8_t out[X25519_KEY_LEN], const uint8_t scalar[X25519_KEY_LEN], const uint8_t point[X25519_KEY_LEN]) { struct mg res, P; uint8_t s[X25519_KEY_LEN]; memcpy(s, scalar, X25519_KEY_LEN); s[0] &= 0xf8; s[31] &= 0x7f; s[31] |= 0x40; fld_import(P.x, point); fld_set0(P.z, 1); 64 mg_scale(&res, &P, s); fld_inv(res.z, res.z); fld_mul(res.x, res.x, res.z); fld_export(out, res.x); } /* * do_X25519_base – Tính tốn X25519 diffie-hellman với giá trị công khai * */ static void do_X25519_base(uint8_t out[X25519_KEY_LEN], const uint8_t scalar[X25519_KEY_LEN]) { uint8_t tmp[X25519_KEY_LEN]; sc_t x; struct ed R; fld_t u, t; /* * clear bits on input and import it as x */ memcpy(tmp, scalar, X25519_KEY_LEN); tmp[0] &= 0xf8; tmp[31] &= 0x7f; tmp[31] |= 0x40; sc_import(x, tmp, sizeof(tmp)); 65 /* * Điểm đường edwards */ ed_scale_base(&R, x); /* * Trích xuất Montgomery kết hợp u từ điểm R edwards */ /* u

Ngày đăng: 17/03/2020, 14:21

Mục lục

  • Chương 1. Vấn đề thỏa thuận khóa trong an toàn thông tin

    • 1.1. Khái quát an toàn thông tin

      • 1.1.1. Vấn đền an toàn thông tin hiện nay

      • 1.1.2. Mật mã và các dịch vụ an toàn thông tin

      • b) Phân phối khóa

      • c) Thỏa thuận khóa

      • 1.2.2. Phân loại khóa

        • a) Hệ thống khóa hữu hạn biến đổi

        • b) Hệ thống khóa ngẫu nhiên

        • 1.2.3. Vai trò của khóa trong an toàn thông tin

        • 1.2.4. An toàn khóa trong các giải pháp bảo mật

        • 1.3. Các giao thức thỏa thuận khóa phổ biến hiện nay

          • 1.3.1. Giao thức thỏa thuận khóa Diffie-Hellman

          • 1.3.2. Giao thức thỏa thuận khóa xác thực (Diffie , Van Oorschot và Wiener)

          • 1.3.3. Giao thức thỏa thuận khóa Matsumoto, Takashima và Imai

          • Chương 2. Nghiên cứu các phiên bản thỏa thuận khóa diffie – hellMAN

            • 2.1. Giao thức thỏa thuận khóa Diffie – Hellman nguyên thủy và các phiên bản cải tiến

              • 2.1.1. Lược đồ giao thức

              • 2.1.2. Tấn công lên giao thức thỏa thuận khóa Diffie – Hellman

                • a) Tấn công lên cấu trúc toán học của Diffie-Hellman nguyên thủy

                • b) Tấn công lên quá trình cài đặt, hoạt động của giao thức Diffie-Hellman trong môi trường mạng thực tế

                • Tấn công từ chối dịch vụ (Denial of Service - DoS)

                • 2.1.3. Các phiên bản cải tiến của giao thức Diffie-Hellman

                • 2.2. Giao thức thỏa thuận khóa Diffie – Hellman trên đường cong Elliptic

                  • 2.2.1. Lược đồ giao thức

                  • 2.2.2. Hoạt động lược đồ giao thức

                  • 2.2.3. Hệ mật trên đường cong Elliptic

                    • a) Định nghĩa

                    • b) Các phép toán trên đường con Elliptic

Tài liệu cùng người dùng

Tài liệu liên quan