1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

Thuật toán mã hóa Elliptic Curve Cryptography (ECC) và ứng dụng trong xây dựng hệ thống Smart-Auto Parking

19 171 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 19
Dung lượng 1,96 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Bài viết này trình bày một thuật toán mã hóa bất đối xứng mới, ưu việt hơn loại thuật toán đang thông dụng nhất hiện nay là RSA. Qua đó, tác giả nêu lên ý tưởng áp dụng thuật toán này vào việc xây dựng một hệ thống bãi giữ xe thông minh – tự động (Smart-Auto Parking) với độ bảo mật cao hơn so với các hệ thống hiện có trên thị trường.

Trang 1

Thuật toán mã hóa Elliptic Curve Cryptography (ECC)

và ứng dụng trong xây dựng hệ thống

Smart-Auto Parking

Smart-Auto Parking System

Nguyễn Trần Thanh Lâm, Trường Đại học Bách khoa TP.HCM

Nguyen Tran Thanh Lam, Bachkhoa University

TS Lưu Thanh Trà, Trường Đại học Bách khoa Luu Thanh Tra, Ph.D., Bachkhoa University

Tóm tắt

Bài viết này trình bày một thuật toán mã hóa bất đối xứng mới, ưu việt hơn loại thuật toán đang thông dụng nhất hiện nay là RSA Qua đó, tác giả nêu lên ý tưởng áp dụng thuật toán này vào việc xây dựng một hệ thống bãi giữ xe thông minh – tự động (Smart-Auto Parking) với độ bảo mật cao hơn so với các

hệ thống hiện có trên thị trường

Từ khóa: mã hóa bất đối xứng, Elliptic Curve Cryptography (ECC), Smart-Auto parking, QR code,

Android

Abstracts

This paper presents a new asymmetric encryption algorithm, much better than the most commonly used algorithm today - RSA Then, the author proposed an idea of applying this encryption algorithm to build

a Smart – Auto Parking system with higher security than existing system on the market

Keywords: asymmetric encryption algorithm, Elliptic Curve Cryptography (ECC), Smart–Auto Parking

system, QR code, Android

1 Giới thiệu

Ngày nay, trong thời đại số hóa, thông

tin được xem là một nguồn tài nguyên quý

giá, vì vậy việc mã hóa giữ an toàn thông

tin là một yêu cầu thiết yếu Trong các thuật

toán mã hóa bất đối xứng hiện nay, RSA

đang được sử dụng nhiều nhất (theo thống

kê của ECRYPT II) [1] Tuy nhiên, do

được công khai từ những năm 1977 và hết

hạn bản quyền sáng chế vào năm 2000 [2],

nên RSA hiện phải đối mặt với rất nhiều

nguy cơ tấn công Theo thống kê, có 5 cách tiếp cận có thể tấn công RSA:

- Tấn cống vét cạn (brute force) bằng cách thử tất cả các trường hợp của khóa bí mật (private key);

- Imad Khaled Salad và nhóm của mình nêu ra hình thức “Mathematical attack” với nhiều phương pháp như: Integer Factoring attack, Wiener’s attack, Low-public exponent attack,…[3];

- Mark van Cuijk trình bày hình thức

Trang 2

“Timing attack” [4];

- Jame Manger đưa ra hình thức

“Chosen ciphertext attack” [5];

- Đặc biệt, Andrea Pellegrini và các

đồng sự đã có thể phá RSA-1024 chỉ trong

100 giờ bằng hình thức “Fault - Based attack” [6]

Hình 1: Fault – Based attack on RSA [6]

Ngoài ra, Reuters [7] thông tin rằng,

Cục An ninh Quốc gia Hoa Kỳ (NSA) đã

trả 10 triệu USD cho RSA (công ty sở hữu

thuật toán RSA) để tạo ra một hệ thống có

tên Dual EC [8] là một bộ tạo số ngẫu

nhiên cung cấp cho thuật toán RSA, nhưng

chứa lỗ hổng có chủ đích - hay còn gọi là

“back door” cho phép NSA phá mã khi

cần

Bên cạnh đó, các hệ thống bãi giữ xe

thông minh hiện nay đang chủ yếu sử dụng

thẻ RFID để kiểm soát việc gửi và nhận xe

Phương pháp này khá tốn kém, vì phải đầu

tư một số lượng lớn thẻ RFID và không

đảm bảo an toàn Các hệ thống dùng thẻ RFID tồn tại rất nhiều lỗ hổng bảo mật có thể bị khai thác Qinghan Xiao và các đồng

sự [9] đã chỉ ra 7 hình thức tấn công hệ thống RFID, đó là:

- Kỹ thuật đảo ngược (reverse engineering);

- Phân tích công suất (power analysis);

- Nghe trộm (eavesdropping);

- Man-in-the-middle attack;

- Từ chối dịch vụ (Denial of Service);

- Giả mạo (spoofing) và nhân bản (cloning);

- Phát lại (Replay attack)

Trang 3

Hình 2: Các điểm tấn công vào hệ thống dùng RFID [9]

Không những thế, hệ thống RFID sử

dụng 3 loại thẻ (thẻ thụ động, thẻ tích cực

và thẻ bán thụ động) cùng 3 dải tần số (LF

125-134kHz, HF 13.56MHz, UHF

433MHz & 856-960MHz) [10] và tùy

thuộc vào phần cứng mà hệ thống sử dụng,

các thẻ RFID tương ứng cũng khác nhau đã

gây bất tiện cho người dùng, vì ngoài thẻ

dành cho việc gửi xe, người dùng còn sở

hữu nhiều loại thẻ khác như thẻ ngân hàng,

thẻ siêu thị, thẻ nhân viên…

Từ hai thực tế nêu trên, trong bài báo

này, chúng tôi trình bày một thuật toán mã

hóa bất đối xứng có nhiều ưu điểm hơn so

với RSA và áp dụng nó vào việc xây dựng

một hệ thống bãi giữ xe thông minh – tự

động (Smart-Auto parking) với phần mềm

về phía người dùng được triển khai trên

điện thoại thông minh dùng hệ điều hành

Android Làm như vậy sẽ giúp hệ thống bãi

giữ xe trở nên an toàn, tiện dụng hơn, loại

bỏ các thẻ RFID không cần thiết và hơn

nữa, có thể hoạt động độc lập mà không cần

nhân viên trực hệ thống luôn luôn có mặt

trong suốt thời gian vận hành

2 Tổng quan về mã hóa bất đối xứng

A Giới thiệu

Mã hóa đối xứng dù đã phát triển từ cổ

đại đến hiện đại, vẫn tồn tại hai điểm yếu 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 tỏ ra không hợp lý khi 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ư vậy sẽ tốn kém về chi phí và chậm trễ về thời gian

- Tính bí mật của khóa: không có sơ sở quy trách nhiệm nếu khóa bị tiết lộ

Chính vì những điểm yếu trên của mã hóa đối xứng, năm 1976, Whitfield Diffie

và Martin Hellman đã tìm ra một phương pháp mã hóa khác có thể giải quyết được hai vấn đề trên, đó là mã hóa công khai (public key cryptography) hay còn gọi

là mã hóa bất đối xứng (asymetric crytography) Đây có thể được xem là một bước đột phá quan trọng bậc nhất trong lĩnh vực mã hóa

B Mô hình mã hóa bất đối xứng

Một mô hình mã hóa bất đối xứng gồm

6 thành phần:

- Plaintext (bản rõ) là nội dung có thể đọc được hoặc dữ liệu được đưa vào các

Trang 4

thuật toán như đầu vào (input)

- Encryption algorithm (Thuật toán mã

hóa) là những thuật toán mã hóa thực hiện

các phép biến đổi khác nhau trên plaintext

- Public key và private key là một cặp

khóa đã được chọn để một dùng cho mã

hóa và một cho giải mã; các phép biến đổi

chính xác được thưc hiện bởi các thuật toán

phụ thuộc vào public key và private key

được cung cấp như đầu vào (input)

- Ciphertext (bản mã hóa) là bản mã

hóa ở đầu ra (output), phụ thuộc vào

plaintext và key ở đầu vào

- Decryption algorithm (thuật toán giải

mã) là thuật toán dùng ciphertext và khóa

tương ứng để tái tạo plaintext ban đầu

1) Mô hình mã hóa dùng khóa công

khai (public key)

Các bước thực hiện như sau:

- Mỗi user (người dùng) tạo ra một cặp khóa; một được sử dụng để mã hóa và một dùng để giải mã message

- Mỗi user đặt một trong hai khóa ở thư mục có thể truy cập (public register) là public key Khóa còn lại được giữ bí mật là private key Như hình 3, ta thấy, mỗi user

có một tập hợp các public key thu được từ những người khác

- Nếu Bob muốn gửi một message bí mật cho Alice, Bob mã hóa message bằng public key của Alice

- Khi Alice nhận được message, Alice giải mã bằng private key của chính

cô ấy Không người nhận nào khác có thể giải mã message, vì chỉ có Alice biết được private key của chính mình

Bob s public-key ring

Ted Joy

Alice

Plaintext

input

a PU

YE PU X

X

Plaintext output

a, 

a

PR

Alice s public key

Transmitted ciphertext

Encryption algorithm (e.g., ECC)

Decryption algorithm

Alice s private key

Hình 3: Mô hình mã hóa dùng public key [11]

Mô hình ở hình 3 sử dụng public key để

mã hóa và private key dùng để giải mã, điều

này cho phép các ứng dụng sử dụng mô hình

trên cung cấp khả năng bảo mật thông tin

2) Mô hình mã hóa dùng khóa bí mật (private key)

Trang 5

Alice s public-key ring

Ted Joy

Alice

Plaintext

input

b

PU

X

Plaintext output

b, 

X D PU Y

b

key

Transmitted ciphertext

Encryption algorithm (e.g., ECC)

Decryption algorithm

Bob s private key

Hình 4: Mô hình mã hóa dùng private key [11]

Trong trường hợp này, Bob chuẩn bị

một message (X) và mã hóa nó bằng cách

sử dụng private key của mình trước khi gửi

cho Alice

Alice có thể giải mã message bằng

cách sử dụng public key của Bob

Bởi vì message được mã hóa bằng

private key của Bob, do đó có Bob mới có

thể tạo ra message Cho nên, message được

dùng như một chữ ký điện tử (digital

signature) Hơn nữa, không thể sửa đổi

message mà không có private key của Bob

Vì vậy, message được xác thực cả về

nguồn phát và tính toàn vẹn dữ liệu

Điều quan trọng cần nhấn mạnh là quá

trình mã hóa được mô tả trong mô hình trên

không cung cấp tính bảo mật Các message

gửi đi được đảm bảo an toàn trước việc sửa

đổi, nhưng không thể chống lại việc nghe

trộm Điều này là hiển nhiên bởi vì bất kỳ

người nào cũng có thể giải mã message bằng

cách sử dụng public key của người gửi

C Thuật toán mã hóa Elliptic Curve

Cryptography (ECC)

1) Giới thiệu:

Ngày nay, hầu hết các sản phẩm và tiêu chuẩn có sử dụng thuật toán mã hóa công khai để mã hóa cùng chữ ký điện tử thường

sử dụng RSA Nhưng chúng ta nhận thấy rằng chiều dài khóa để đảm bảo an toàn đã tăng lên trong những năm gần đây Điều đó, đặt ra một vấn đề là, mức độ tính toán nặng hơn cho ứng dụng có sử dụng RSA Gánh nặng này có thể gây nghẽn nghiêm trọng, đặc biệt cho các web server, các trang thương mại điện tử cần thực hiện một số lượng lớn giao dịch an toàn đồng thời Theo thống kê của ECRYPT II [1], chúng ta có bảng tóm tắt sau:

Ghi chú:

- Mức độ phổ biến: mức đánh giá ba ngôi sao cho thấy phạm vi triển khai rộng rãi nhất; không có sao nào cho thấy không

có thông tin thuật toán đó được sử dụng

- Mức độ an toàn: mức đánh giá ba ngôi sao chỉ ra rằng ECRYPT hoàn toàn tin tưởng vào sự an toàn của thuật toán và kích thước khóa tương ứng; không có sao nào cho thấy thuật toán và kích thước khóa tương ứng không nên tiếp tục sử dụng

Trang 6

Bảng 1: Độ phổ biến và an toàn của RSA [1]

Thuật toán Kích thước khóa Mức độ phổ biến Mức độ an toàn Public Key Encryption Scheme

RSA PKCS#1 v 1.5

RSA OAEP

RSA OAEP

RSA OAEP

Bất kỳ

1024

2048

≥3072

***

*

*

*

*

*

**

***

Public key Signature Scheme

Chính vì thế, một thuật toán cạnh tranh

thách thức RSA là Elliptic Curve

Cryptography (ECC) ra đời Sự hấp dẫn

chủ yếu của ECC so với RSA là, nó cung

cấp cùng mức độ bảo mật nhưng sử dụng một khóa có kích thước nhỏ hơn nên đã giảm thiểu được mức độ xử lý

Bảng 2: So sánh kích thước khóa RSA và ECC [12]

Kích thước khóa Tỷ lệ kích thước khóa

So sánh thuật toán mã hóa RSA và ECC

- So sánh về độ an toàn và kích thước khóa cần thiết

Trang 7

Bảng 3: Kích thước khóa và thời gian cần thiết để phá mã [13]

ECC key size (bits) RSA key size (bits) Year to attack Protection file time

- So sánh về hiệu suất

Bảng 4: So sánh về hiệu năng của RSA và ECC [14]

Thuật toán Key creator Execution time Verify Sign

3 Triển khai ECC trên nền tảng

Android

Trong phần này sẽ trình bày việc triển

khai thuật toán mã hóa ECC trên nền tảng

điện thoại Android

Chúng tôi chọn nền tảng Android vì đây là nền tảng mở và là hệ điều hành phổ biến nhất dành cho smart phone hiện nay

Hình 5: So sánh mức độ phổ biến của các hệ điều hành smart phone [15]

A Thư viện hỗ trợ

1) Bouncy Castle

Bouncy Castle (BC) là một tập hợp

các APIs (Application Programming

Interfaces) được phát triển để sử dụng cho

các ứng dụng mật mã Ban đầu, nó được phát triển như một phương tiện để giảm thiểu việc phát triển lại các thư mật mã và sẵn sàng như một mã nguồn mở (open source) theo giấy phép MIT X11

Trang 8

Bouncy Castle bao gồm 2 thành phần

hỗ trợ mã hóa cơ bản là “light-weight” API

và JCE provider Tuy nhiên, thư viện này

chỉ hoạt động trên nền tảng Java không phù

hợp với nền tảng Android [16]

2) Spongy Castle

Mặc dù, Java là nền tảng chính để tạo

nên các ứng dụng Android, nhưng thư viện

Bouncy Castle lại không được hỗ trợ thực

thi trên Android Chính vì thế, Spongy

Castle là một biến thể của Bouncy Castle

được đóng gói lại cho phù hợp với Android

[17]

B Đánh giá thực tế tốc độ xử lý của

RSA/ECC

Phần này, trình bày việc viết một ứng

dụng tạo chữ ký điện tử (digital signature)

dùng hai thuật toán mã hóa là ECC và RSA

triển khai trên smartphone android, để từ

đó đánh giá được thực tế tốc độ xử lý của

hai thuật toán này Triển khai tạo chữ ký

điện tử và xác thực chữ ký thực hiện trên cùng một ứng dụng, nhằm bỏ qua thời gian trễ do truyền gói tin trong trường hợp triển khai trên hai ứng dụng khác nhau

Theo Bảng 2, mức độ bảo mật của

RSA-2048 tương đương với ECC-224 nhưng thư viện Spongy Castle chỉ hỗ trợ ECC-256 Vậy việc đánh giá sẽ được thực hiện qua so sánh giữa RSA-2048 và ECC-256

1) Ứng dụng chạy trên Smartphone Android cao cấp

Smartphone sử dụng để kiểm tra trong phần test này là Samsung Galaxy S8, có thông số kỹ thuật như sau:

Bảng 5: Thông số kỹ thuật Galaxy S8

Thông số Chi tiết

Chipset Exynos 8895 CPU 8 core (4 core 2.3GHz + 4 core

1.7GHz), 64 bit, vi xử lý 10nm

- Thuật toán mã hóa RSA-2048

Hình 6: RSA-2048 xử lý trên Galaxy S8

Trang 9

Thực hiện lặp lại 10 lần, ta có bảng kết quả đo như sau:

Bảng 6: Thời gian xử lý RSA-2048 trên Galaxy S8

Lần thực hiện Tạo cặp khóa (ms) Tạo chữ ký (ms) Xác thực chữ ký (ms)

- Thuật toán mã hóa ECC-256

Hình 7: ECC-256 xử lý trên Gaxaly S8

Trang 10

Thực hiện 10 lần kết quả đó, ta có bảng kết quả như sau:

Bảng 7: Thời gian xử lý ECC-256 trên Galaxy S8

Lần thực hiện Tạo cặp khóa (ms) Tạo chữ ký (ms) Xác thực chữ ký (ms)

- Kết quả:

Hình 8: S/sánh hiệu năng RSA-2048 và ECC-256 (Galaxy S8)

2) Ứng dụng chạy trên Smartphone

Android tầm thấp

Smartphone sử dụng để kiểm tra trong

phần test này là Samsung Galaxy J3 Pro,

Bảng 8: Thông số kỹ thuật Galaxy J3 Pro

Thông số Chi tiết

Chipset Exynos 7570

Trang 11

- Thuật toán mã hóa RSA-2048

Hình 9: RSA-2048 xử lý trên Galaxy J3

Thực hiện lặp lại 10 lần, ta có bảng kết quả đo như sau:

Bảng 9: Thời gian xử lý RSA-2048 trên Galaxy J3

Lần thực hiện Tạo cặp khóa (ms) Tạo chữ ký (ms) Xác thực chữ ký (ms)

Trang 12

- Thuật toán mã hóa ECC-256

Hình 10: ECC-256 xử lý trên Galaxy J3

Thực hiện lặp lại 10 lần, ta có bảng kết quả đo như sau:

Bảng 10: Thời gian xử lý ECC-256 trên Galaxy J3 Pro

Lần thực hiện Tạo cặp khóa (ms) Tạo chữ ký (ms) Xác thực chữ ký (ms)

Trang 13

- Kết quả

Hình 11: S/sánh hiệu năng RSA-2048 và ECC-256 (Galaxy J3)

3) Kết luận

Từ so sánh về lý thuyết và thực tế có

thể thấy rằng tuy thuật toán mã hóa ECC

chậm hơn RSA trong việc xác thực chữ ký

điện tử nhưng tổng thời gian trung bình để thực hiện là nhỏ hơn rất nhiều so với RSA, đặc biệt đối với các thiết bị có tài nguyên thấp

Hình 12: Tổng thời gian thực hiện trung bình giữa RSA-2048 và ECC-256 (Galaxy S8)

Ngày đăng: 11/02/2020, 19:29

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w