Tải bản đầy đủ (.pdf) (25 trang)

Đường Cong Elliptic Và Ứng Dụng Trong Blockchain Báo Cáo Bài Tập Lớn An Toàn Phần Mềm Và Hệ Thống.pdf

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (329.15 KB, 25 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

<b>ĐẠI HỌC BÁCH KHOA HÀ NỘI</b>

<b>TRƯỜNG CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG</b>

<b>BÁO CÁO BÀI TẬP LỚN</b>

Mơn học: An tồn phần mềm và hệ thốngGiảng viên hướng dẫn: PGS. Nguyễn Khanh VănHọc viên: Hoàng Việt Bách – 20212236M

<b>Hà Nội – 2022</b>

</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">

<b>Hệ mật trên đường cong Elliptic và ứng dụngtrong Blockchain</b>

<i>Để giải quyết tình hình trên, các vấn đề liên quan đến an toàn và bảo mật trở nênquan trọng hơn bao giờ hết. Các ý tưởng về an toàn, bảo mật dẫn đến sự pháttriển của ngành mật mã học. Kỹ thuật này đã có từ xa xưa nhưng thời điểm đó nócịn rất thơ sơ, ngày nay khi mạng máy tính trở nên phổ biến, người ta sử dụng mậtmã học hiện đại. Các chuyên gia trong lĩnh vực này đã nghiên cứu, phát minh ranhiều hệ mật mã khác nhau với mục đích che dấu thơng tin để tránh việc kẻ xấu cốtình đánh cắp, phá hoại, ví dụ như RSA, Elgamal,…. Các phương pháp này rất antoàn, tuy nhiên độ dài khóa lớn nên trong một vài trường hợp nhất định sẽ khôngthể đáp ứng được.</i>

<i>Hiện nay, hệt mật trên đường cong Elliptic (Elliptic Curve Cryptography, viết tắtlà ECC) là một trong những loại mật mã mạnh nhất hiện nay. Phương pháp nàyđược sử dụng rộng rãi trong nhiều công ty tại Mỹ, như CloudFlare, đã sử dụngrộng rãi phương pháp đường cong Elliptic để bảo mật trên nhiều phương diện, từcác kết nối Https đến cách thức chuyển dữ liệu giữa các trung tâm dữ liệu. Đặcbiệt, ECC được ứng dụng rất nhiều trong Blockchain.</i>

<small>Từ khóa: Đường cong Elliptic; ECC</small>

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

<b>I. CƠ SỞ LÝ THUYẾT1. Hệ mật mã</b>

Mật mã là một lĩnh vực khoa học chuyên nghiên cứu về các phương pháp và kỹthuật đảm bảo an toàn và bảo mật trong truyền tin liên lạc với mục đích đảm bảocác thế lực thù địch không thể ăn cắp thông tin để lợi dụng, phá hoại.

Một hệ mật mã bao gồm 4 thành phần cơ bản:

- Bản rõ (hay plaintext, là thông tin ở dạng đọc được)

- Thuật tốn mã hóa (là một phép biến đổi với bản rõ là đầu vào, sử dụng mộtkhóa để cho ra một bản mã)

- Bản mã (hay ciphertext, là thông tin ở dạng không thể đọc được)

- Thuật toán giải mã (là phép biến đổi cho phép người nhận thu được bản rõ từbản mã bằng cách sử dụng một khóa)

Mục đích của mật mã là làm cho kẻ thù không thể tái tạo lại bản rõ từ bản mã.Hệ mật mã có khóa dùng chung cho cả thuật tốn mã hóa và giải mã gọi là hệ mậtmã đối xứng, cịn hệ mật mã có khóa dùng cho thuật tốn mã hóa khác với khóadùng cho thuật tốn giải mã gọi là hệ mật mã khóa phi đối xứng, hay cịn gọi là hệmật mã khóa cơng khai

<b>2. Hệ mật mã khóa đối xứng</b>

Hệ mật má khóa đối xứng hay hệ mật mã khóa bí mật, là mơ hình mà trong đó,khóa của hai thuật tốn sinh mã và giải mã là giống nhau và ví mật đối với tất cảngười khác, nói cách khác, hai bên gửi và nhận chia sẻ chung một khóa bí mật duynhất. Vai trò của hai bên gửi và nhận giống nhau và có thể hốn đổi vai trị chonhau.

Các thuật tốn thơng dụng được dùng trong hệ mật mã khóa đối xứng có thể kể đếnnhư DES, AES,…

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

Ưu điểm:

- Mơ hình khá đơn giản

- Dễ dàng tạo ra thuật tốn mã hóa đối xứng cho cá nhân- Dễ cài đặt, hoạt động hiệu quả

- Hoạt động nhanh do tốc độ mã hóa, giải mã cao

Tuy nhiên, hệ mật mã đối xứng cũng có những nhược điểm lớn như:

- Quản lý khóa: Số lượng khóa bí mật mà mỗi công ty hay cá nhân cần thiếtlập với các đối tác khác có thể khá lớn, do đó việc quản lý lưu trữ gặp nhiềukhó khăn

- Phân phối khóa: nếu hai bên gửi và nhận ở xa nhau và chỉ có thể liên lạc quamột kênh truyền tin thơng thường, việc trao đổi khóa có thể bị nghe trộm

<b>3. Hệ mật mã khóa cơng khai</b>

Vấn đề phát sinh trong các hệ thống mã hóa đối xứng là việc quy ước chung mãkhóa k giữa người gửi A (Alice) và người nhận B (Bob). Trên thực tế, nhu cầu thayđổi nội dung của mã khóa k là cần thiết, do đó, cần có sự trao đổi thơng tin về mãkhóa k giữa A và B. Để bảo mật mã khóa k, A và B phải trao đổi với nhau trên mộtkênh liên lạc thật sự an tồn và bí mật. Tuy nhiên, rất khó có thể bảo đảm được sựan tồn của kênh liên lạc nên mã khóa k vẫn có thể bị phát hiện bởi người C.Một hệ thống khóa cơng khai sử dụng hai loại khóa trong cùng một cặp khóa: khóacơng khai (public key) được cơng bố rộng rãi và được sử dụng trong mã hóa thơngtin, khóa riêng (private key) chỉ do một người nắm giữ và được sử dụng để giải mãthông tin đã được mã hóa bằng khóa cơng cộng. Các phương pháp mã hóa này khaithác những ánh xạ f mà việc thực hiện ánh xạ ngược f rất khó so với việc thực<small>-1</small>

hiện ánh xạ f. Chỉ khi biết được mã khóa riêng thì mới có thể thực hiện được ánhxạ ngược f .<small>-1</small>

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">

Khi áp dụng hệ thống mã hóa khóa cơng cộng, người A sử dụng mã khóa cơngcộng để mã hóa thơng điệp và gửi cho người B. Do biết được mã khóa riêng nên Bmới có thể giải mã thơng điệp mà A đã mã hóa. Người C nếu phát hiện được thôngđiệp mà A gửi cho B, kết hợp với thơng tin về mã khóa cơng cộng đã được cơngbố, cũng rất khó có khả năng giải mã được thơng điệp này do khơng nắm được mãkhóa riêng của B.

<b>3.1. Hệ mật mã RSA</b>

Phương pháp RSA là một phương pháp mã hóa cơng khai phổ biến hiện nay. RSAđược xem là phương pháp an tồn và có khả năng ứng dụng rộng rãi trong các lĩnhvực. Dựa vào nền tảng lý thuyết về phân tích thừa số nguyên tố của số nguyên lớn,phương pháp RSA được ứng dụng các mơ hình mã hóa, mơ hình truyền nhận khóavà mơ hình chữ ký điện tử. Phương pháp RSA địi hỏi mỗi thực thể sở hữu một cặpkhóa cơng khai - khóa riêng để sử dụng cho tất cả mơ hình mã hóa<small>.</small>

<b>3.1.1. Khởi tạo khóa RSA</b>

Chọn các tham số:

- Chọn hai số nguyên tố lớn p và q. Tính n = pq và m = (n) = (p-1)(q-1)- Chọn e, 1 e m -1, sao cho gcd (e, m) = 1

- Tìm d sao cho e * d = 1 (mod m), tức là tính d = e (mod m)<small>-1</small>

Khóa cơng khai (Public key) là (e, n) Khoá dùng riêng (Private key) là (d, p, q)

<b>3.1.2. Sử dụng RSA</b>

Để mã hóa bản rõ, người gửi:

- Lấy khóa cơng khai của người nhận (e, n)

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

- Tính C = M mod n (trong đó, 0 <= M < n)Để giải mã, người nhận:

- Sử dụng khóa riêng (d, p, q)- Tính M = C mod n (với n = pq)<small>d</small>

<b>3.1.3. An toàn của RSA</b>

Độ bảo mật của RSA dựa vào độ khó của bài tốn phân tích một số lớn ra các thừasố nguyên tố.

- Để có thể giải mã cần phải có được các giá trị p, q tạo nên giá trị n

- Với các thuật toán hiện nay, thời gian cần thiết để phân tích một số lớn rathừa số nguyên tố tăng theo hàm mũ với số đó

- Với n đủ lớn, việc giải mã là không dễ ngay cả với các máy tính có tốc độtính tốn cực lớn

Như vậy, hệ mật RSA có thể coi là an toàn.

<b>3.1.4. Vấn đề của RSA</b>

Vấn đề chọn p và q:

- p và q phải là những số nguyên tố lớn, ít nhất là 100 chữ số- Độ dài p và q phải xấp xỉ nhau

Tốc độ thuật toán trong cài đặt:

- Nếu so sánh với DES, RSA có tốc độ chậm hơn rất nhiều. Trung bình, RSAchậm ít nhất 100 lần khi cài đặt bằng phần mềm và có thể chậm hơn 1000đến 10000 lần khi cài đặt bằng phần cứng (tùy theo cách cài đặt)

- Kích thước của khóa mật lớn hơn rất nhiều

<b>3.2. Hệ mật trên đường cong Elliptic</b>

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">

Hệ mật mã khóa cơng khai dựa trên việc sử dụng các bài tốn khó giải quyết, cácbài tồn này u cầu số lượng phép tính cần thiết để tìm ra lời giải là rất lớn. Tronglịch sử 20 năm của ngành mã hóa bất đối xứng đã có nhiều đề xuất khác nhau chodạng bài tốn như vậy, tuy nhiên chỉ có hai trong số các đề xuất đó cịn tồn tại đếnngày nay. Hai bài tốn đó bao gồm: bài tốn logarit rời rạc và bài tốn phân tíchthừa số ngun tố.

Năm 1985, Neal Koblitz và Victor S.Miller đã nghiên cứu và đưa ra đề xuất ứngdụng đường cong elliptic trên trường hữu hạn.

<b>3.2.1. Cơ sở toán học</b>

Đường cong elip là tập hợp các điểm thỏa mãn một phương trình tốn học cụ thể.Phương trình cho một đường cong elip:

y<small>2</small> = x + Ax + B<small>3</small>

Với điều kiện 4A + 27B # 0.<small>32</small>

Đồ thị được biểu diễn như sau:

Tính chất:

- Đồ thị đối xứng qua trục hồnh, vì vậy các điểm nằm trên đường cong khi lấy đốixứng qua Ox vẫn sẽ nằm trên đường cong

- Một đường thẳng bất kỳ có thể cắt đường cong tại tối đa 3 điểm

Dựa trên những tính chất nói trên, người ta đã nghiên cứu và phát hiện ra mộtphương pháp mới cho kỹ thuật mã hóa nói chung và chứng thực nói riêng, kỹ thuậtmã hóa dựa trên đường cong elliptic.

<b>3.2.2. Các phép toán trên đường cong elliptic</b>

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

<b>Phép cộng</b>

Đường cong Elliptic có một tính chất: "Nếu hai điểm P và Q nằm trên đường cong,thì điểm P+Q cũng sẽ nằm trên đường cong".

Điểm này được xác định như sau:

- Vẽ đường thẳng nối 2 điểm P và Q, đường thẳng này sẽ cắt đường cong tạimột điểm –R = -(P+Q)

- Lấy đối xứng của điểm này qua trục hồnh, ta sẽ có được điểm R = P + Q

<i>Chú ý: Nếu 3 điểm trên đường cong Elliptic là thẳng hàng, thì tổng của chúngbằng 0.</i>

Trong trường hợp 2 điểm P và Q trùng nhau, đường thẳng A là tiếp tuyến vớiđường cong tại điểm P. Thực hiện tương tự ta được điểm 2P.

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">

Do cách tính tốn trên, ta có thể dễ dàng tính tốn được phép nhân k*P khibiết k và P, nhưng hoàn tồn khơng thể tính tốn được theo chiều ngược lại, tứcphép chia. Đó cũng chính là tính chất đặc trưng của mã hoá bất đối xứng.Đường cong elliptic trên trường hữu hạn có thể được dùng để thực hiện lược đồtrao đổi khóa Diffie-Hellman, ElGamal và chữ ký NIST. Những hệ thống này cókhả năng cung cấp tính an tồn tương đương với các hệ mật mã khóa cơng khaihiện tại nhưng với kích thước khóa nhỏ hơn (Ví dụ như một khóa trên ECC có độdài 160 bit thì tương ứng với khóa có độ dài 1024 bit trong RSA). Việc dùng khóacó kích thước nhỏ hơn sẽ giúp giảm băng thông và bộ nhớ yêu cầu.

<b>3.2.3. Bài tốn logarith rời rạc trên đường cong elliptic</b>

Độ khó của bài toán logarit rời rác trên đường cong Elliptic (ECDLP) là yếu tốquyết định cho mức độ an toàn của tất cả các lược đồ hệ mật đường cong Elliptic.Định nghĩa: Cho đường cong elliptic E. Ta xét một điểm P và một điểm khác T.Bài toán logarigh rời rạc nhằm tìm số ngun d thỏa mãn:

Hay nói cách khác, d = log<small>P</small>T.Số điểm của EC:

Theo định lý Hass, cho đường cong E modun p, số điểm trên đường cong ký hiệu bởi #E và bị chặn bởi:

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

Khi đó, #E p. Nếu ta cần một đường cong với số điểm 2 , ta phải sử dụng số <small>≈ </small>

ngun tố cỡ 160 bitTính an tồn:

- Mọi giao thức EC dựa trên tính khó giải của bài toán ECDLP

- Nếu EC được chọn cẩn thận, thuật tốn tốt nhất để tính ECDLP cần xấp xỉ <small>√</small>pbước. Ví dụ, với p <small>≈ </small>2<small>160</small>, kẻ tấn cơng cần thực hiện <small>≈ </small>2<small>80</small> bước.

<b>3.3.3. So sánh giữa hai phương pháp mã hóa RSA và ECC</b>

Mã hóa khóa cơng cộng dựa trên hai vấn đề lớn của toán học là bài tốn logarit rờirạc và bài tốn phân tích thừa số của số nguyên. Phương pháp RSA dựa trên bàitoán phân tích thừa số của số nguyên tố. Trong khi đó, phương pháp ECC dựa trênbài tốn logarit rời rạc trên trường số của đường cong elliptic (ECDLP).

Một ưu điểm của ECC là khả năng bảo mật cao với kích thước khóa nhỏ dựa vàomức độ khó giải quyết của vấn đề ECDLP. Đây chính là một tính chất rất hữu íchđối với xu hướng hiện nay là tìm ra phương pháp tăng độ bảo mật của mã hóa khóacơng khai với kích thước khóa được rút gọn. Kích thước khóa nhỏ giúp các hệthống bảo mật dựa trên ECC giảm thời gian tạo khóa. Thời gian tạo khóa thườngrất lớn ở các hệ thống RSA. Ngoài ra, việc mã hóa và giải mã trong ECC cũngđược thực hiện nhanh hơn.

<b>Thời gian cần đểtấn công vào</b>

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">

<i>Biểu đồ so sánh kích thước khóa và mức độ bảo mật giữa ECC với RSA/DSA</i>

Như bảng trên, có thể thấy được mặc dù cùng một mức độ bảo mật nhưng độ dàicủa khóa sử dụng thuật tốn ECDSA lại nhỏ hơn rất nhiều so với khóa sử dụngthuật tốn RSA. Đối với các doanh nghiệp lớn, họ cần lưu trữ lại rất nhiều khóa,khi đó địi hỏi doanh nghiệp cần có đủ nguồn lực về hạ tầng để đáp ứng nhu cầulưu trữ trên. Giả sử, có 1 thiết bị lưu trữ với dung lượng 2048 bit, nếu sử dụngRSA, ta chỉ có thể lưu trữ được 1 khóa duy nhất, cịn đối với ECDSA, ta có thể lưutới 9 khóa cùng mức độ bảo mật, mở rộng khơng gian lưu trữ gấp 9 lần và còn tiếtkiệm được chi phí.

Đối với thuật tốn ECDSA, q trình mã hóa và giải mã được rút ngắn, đồng thờicũng giảm bớt năng lượng cần sử dụng trong quá trình, hơn hẳn so với việc sửdụng thuật tốn RSA. Cụ thể, khóa của ECDSA nhỏ, nên việc tạo chữ ký số sẽnhanh hơn, giảm tải chu kỳ xử lý của CPU, không chỉ vậy, với việc sử dụng khóacủa thuật tốn ECDSA, chứng chỉ an tồn sẽ nhỏ và ít dữ liệu hơn, điều này hỗ trợđẩy nhanh quá trình kết nối, cải thiện tốc độ internet.

Do vậy, ECC rất được quan tâm để áp dụng cho các ứng dụng trên môi trường giớihạn về thông lượng truyền dữ liệu, khả năng tính tốn, khả năng lưu trữ. ECC thíchhợp với các thiết bị di động kỹ thuật số, điện thoại di động và thẻ thông minh.

<b>III. ECDSA - Chữ ký số dựa trên đường cong Elliptic1. Giới thiệu</b>

</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">

ECDSA là viết tắt của Elliptic Curve Digital Signature Algorithm - thuật toán chữký số dựa trên đường cong Elliptic. ECDSA được sử dụng để tạo chữ kí số cho dữliệu, giúp chống lại sự giả mạo cũng như làm sai lệch dữ liệu, cung cấp mộtphương pháp xác thực mà khơng ảnh hưởng đến tính bảo mật của dữ liệu gốc.ECDSA được ứng dụng rộng rãi trong rất nhiều lĩnh vực cần tính bảo mật và sựriêng tư dữ liệu, đặc biệt như trong Blockchain.

<b>2. Cặp khóa ECDSA2.1. Tạo cặp khóa</b>

Tham số miền được sử dụng để tạo cặp khóa bao gồm: G là điểm sinh, n là sốdương nhỏ nhất sao cho nG = <b>∞. </b>n thường là số nguyên tố

Các bước tạo cặp khóa:

- Chọn một số ngẫu nhiên d nằm trong khoảng [1, n-1]. Trên đường cong elliptic<small>A</small>

ta chọn một điểm G, gọi là điểm sinh (generator point).

- Tính public key Q = d .G. Theo tính chất đã nêu trên, Q cũng sẽ là một điểm<small>AAA</small>

nằm tên đường cong Elliptic. Với Bitcoin hay Ethereum, giá trị của G được xácđịnh theo tiêu chuẩn secp256k1 như sau:

<i>G = 04 79BE667E F9DCBBAC 55A06295 CE870B07 029BFCDB 2DCE28D959F2815B 16F81798 483ADA77 26A3C465 5DA4FBFC 0E1108A8 FD17B448A6855419 9C47D08F FB10D4B8</i>

- Ta thu được cặp khóa (d , Q ). Trong đó d là khóa bí mật, Q là khóa cơng khai.<small>AAAA</small>

Mối quan hệ giữa d và Q là một chiều, ta chỉ có thể tính được Q từ d . Đó cũng<small>AAAA</small>

là lý do tại sao ta có thể sinh ra khóa cơng khai từ khóa bí mật và có thể chia sẻkhóa cơng khai này với người khác do khơng thể dùng khóa cơng khai để tìmngược ra khóa bí mật.

<b>2.2. Tạo chữ ký</b>

Tham số miền được sử dụng để tạo chữ ký bao gồm: h là hàm băm SHA-1, G làđiểm sinh và d là khóa bí mật, m là thơng điệp cần ký.

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">

Bước 1: Chọn một số ngẫu nhiên k trong khoảng [1, n-1]

Bước 2: Tính kG = (x , y ) và r = x mod n. Nếu r = 0, quay lại bước 1<small>111</small>

Bước 3: Tính k mod n<small>-1</small>

Bước 4: Tính s = k (h(m) + d.r) mod n<small>-1</small>

Bước 5: Nếu s = 0, quay trở lại bước 1

Bước 6: Ta thu được chữ ký cho thông điệp m (r, s)

<b>2.3. Xác minh chữ ký</b>

Khi người nhận nhận một thông điệp m có kèm theo chữ ký (r, s), để xác minhthơng điệp m có phải của người gửi hay khơng, người nhận phải có được tham sốmiền và khóa công khai của người gửi. Các bước thực hiện như sau:

Bước 1: Kiếm tra xem r, s có phải là các số nguyên nằm trong khoảng [1, n-1] haykhông.

</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">

- Hàm logarith rời rạc trong miền E(F ) là đủ khó<small>q</small>

- Hàm băm SHA-1 là hàm một chiều

- Hàm băm 1 là hàm chống xung đột, tức là không thể tồn tại 1(M<small>1</small>) = SHA-1(M )<small>2</small>

SHA-- Việc tạo k là khơng thể đốn được

Các hình thức tấn cơng trên ECDSA có thể kể đến như:

- Tấn cơng dựa trên vấn đề logaith rời rạc của đường cong elliptic- Tấn cơng lên hàm băm

- Các hình thức tần công khác

<b>2.5. Đề xuất ứng dụng ECDSA </b>

Với những ưu điểm như với độ dài khóa ngắn (tức bộ nhớ được dùng để lưu trữthơng tin là ít hơn) nhưng vẫn giữ được độ an tồn cao (ví dụ với độ dài khóa 160bit tương đương với khóa có độ dài 1024 bit trong thuật tốn RSA), tốc độ tínhtốn cao, thuật tốn ECDSA được cho là thích hợp cho việc thực hiện ký và xácthực trên các thiết bị có tài ngun hạn chế trong các cơng nghệ như NFC (NearField Communication), RFID (Radio Frequency Identification) hay IoT (Internet ofThings).

Ngoài ra, ECDSA cũng được ứng dụng rộng rãi trong rất nhiều lĩnh vực cần tínhbảo mật và sự riêng tư dữ liệu, và đặc biệt trong Blockchain.

<b>IV. Ứng dụng chữ ký số trong việc xây dựng ứng dụng xổ số bằng Blockchain1. Đặt vấn đề</b>

Xổ số là một loại hình cờ bạc bằng việc chọn ra các con số cụ thể để giành đượccác giải thưởng lớn. Người chơi xổ số bỏ ra một số tiền nhỏ với tỷ lệ trúng thưởngrất nhỏ để giành được giải thưởng. Lợi nhuận thu được được dùng để trả thưởngcho người trúng, đóng góp cho ngân sách nhà nước để đầu tư nâng cấp về giáo dục,giao thông, ý tế,... Theo The Business Research Company, thị trường cờ bạc toàn

</div>

×