SlideShare a Scribd company logo
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
Chuyên ngành: ATTT - khoa CNTT
---------------------------------------
Xây dựng ứng dụng mã hóa RSA trên
hệ điều hành di động Android.
Môn học: An ninh mạng
Giảng viên: Đặng Minh Tuấn
Nhóm sinh viên: Phạm Trung Đức
Nguyễn Tuấn
Hà nội, ngày 27 tháng 11 năm 2017
Mục lục
Bảng phân công nhiệm vụ.................................................................................................3
Lời dẫn................................................................................................................................4
Chương 1: Lý thuyết nền tảng về mã hóa RSA ..............................................................2
1.1. Lịch sử, cách hoạt động RSA:.............................................................................2
1.1.1 Mô tả sơ lược .................................................................................................3
1.1.2 Cơ sở toán học của thuật toán......................................................................3
1.1.3 Tạo khóa.........................................................................................................4
1.2. Mã hóa và giải mã:...............................................................................................5
1.3. Tạo chữ kí số cho văn bản:..................................................................................6
1.4. Các vấn đề cần đặt ra về thực tế.........................................................................7
1.4.1 Quá trình tạo khóa........................................................................................7
1.4.2 Tốc độ .............................................................................................................8
1.4.3 Phân phối khóa..............................................................................................9
Chương 2: Lab Demo ứng dụng mã hóa RSA trên Android ......................................10
2.1. Cài đặt .................................................................................................................10
2.2. Tổng quan về hoạt động của phần mềm..........................................................10
2.3. Giới thiệu về các mô đun của chương trình ....................................................11
2.4. Thử nghiệm thực tế............................................................................................14
Tổng kết............................................................................................................................17
Danh mục tài liệu tham khảo .........................................................................................18
Bảng phân công nhiệm vụ
STT
Mã sinh
viên
Họ và tên Phần việc thực hiện
1 B13DCAT056
Phạm Trung
Đức
- Làm slide về app
Android.
- Trình bày Demo trên lớp
- Thực hiện, biên tập,
soạn thảo báo cáo.
- Làm Lab demo.
2 B13DCAT094 Nguyễn Tuấn
- Tìm kiếm thông tin, tài
liệu
- Dịch tài liệu, soạn thảo
báo cáo chương 1.
- Làm slide về mã hóa RSA
Lời dẫn
Trong bối cảnh ngày nay khi mạng Internet càng mở rộng với hàng tỉ thiết bị PC,
Laptop, smart phone, IoT được kết nối chặt chẽ với nhau, yêu cầu mở rộng đầu tư cho an
ninh thông tin, an toàn mạng trở nên thiết thực hơn bao giờ hết. Bên cạnh những nguy cơ
phổ biến như tấn công từ chối dịch vụ DDoS, chèn SQL Injection, khai thác Exploit CVE
thì việc mã hóa thông tin đóng vai trò vô cùng then chốt trong ngành An toàn thông tin.
Các mã hóa hiện đại ngày nay có cơ chế phức tạp, đóng vai trò bảo mật thông tin,
hệ thống trị giá hàng triệu đô la. Tuy nhiên với qui mô nghiên cứu của môn học nói riêng
và sinh viên nói chung, việc ứng dụng mã hóa hiện đại như đường cong Eliptic mang tính
khả thi không cao. Chính vì thế, nhóm chúng em quyết định chọn thuật toán mã hóa RSA
vào ứng dụng Android. Thuật toán mã hóa RSA là thuật toán mang tính kinh điển của
ngành mật mã học, nên bài nghiên cứu sẽ đi sơ lược qua nó và mang tính ứng dụng cho
Android cao hơn.
Trang 2
Chương 1: Lý thuyết nền tảng về mã hóa RSA
1.1. Lịch sử, cách hoạt động RSA:
Trong phần đầu tiên này, chúng ta sẽ tìm hiểu về lý thuyết nền tảng về đặc điểm
thông dụng mã hóa RSA. Bằng những thông tin này, người đọc có thể có cái nhìn tổng quát
về mã hóa RSA.
Hình 1.1: Mô tả chung về mã hóa tin nhắn
Thuật toán được Ron Rivest, Adi Shamir và Len Adleman mô tả lần đầu tiên vào
năm 1977 tại Học viện Công nghệ Massachusetts (MIT). Tên của thuật toán lấy từ 3 chữ
cái đầu của tên 3 tác giả.
Trước đó, vào năm 1973, Clifford Cocks, một nhà toán học người Anh làm việc
tại GCHQ, đã mô tả một thuật toán tương tự. Với khả năng tính toán tại thời điểm đó thì
thuật toán này không khả thi và chưa bao giờ được thực nghiệm. Tuy nhiên, phát minh này
chỉ được công bố vào năm 1997 vì được xếp vào loại tuyệt mật.
Thuật toán RSA được MIT đăng ký bằng sáng chế tại Hoa Kỳ vào năm 1983 (Số
đăng ký 4.405.829). Bằng sáng chế này hết hạn vào ngày 21 tháng 9 năm 2000. Tuy nhiên,
do thuật toán đã được công bố trước khi có đăng ký bảo hộ nên sự bảo hộ hầu như không
có giá trị bên ngoài Hoa Kỳ. Ngoài ra, nếu như công trình của Clifford Cocks đã được công
bố trước đó thì bằng sáng chế RSA đã không thể được đăng ký.
Trang 3
1.1.1 Mô tả sơ lược
Thuật toán RSA có hai khóa: khóa công khai (hay khóa công cộng) và khóa bí
mật (hay khóa cá nhân). Mỗi khóa là những số cố định sử dụng trong quá trình mã hóa và
giải mã. Khóa công khai được công bố rộng rãi cho mọi người và được dùng để mã hóa.
Những thông tin được mã hóa bằng khóa công khai chỉ có thể được giải mã bằng
khóa bí mật tương ứng. Nói cách khác, mọi người đều có thể mã hóa nhưng chỉ có người
biết khóa cá nhân (bí mật) mới có thể giải mã được. Ta có thể mô phỏng trực quan một hệ
mật mã khoá công khai như sau:
 Bob muốn gửi cho Alice một thông tin mật mà Bob muốn duy nhất
Alice có thể đọc được.
 Alice gửi cho Bob một chiếc hộp có khóa đã mở sẵn và giữ lại chìa
khóa. Bob nhận chiếc hộp, cho vào đó một tờ giấy viết thư bình
thường và khóa lại (như loại khoá thông thường chỉ cần sập chốt lại,
sau khi sập chốt khóa ngay cả Bob cũng không thể mở lại được-
không đọc lại hay sửa thông tin trong thư được nữa).
 Bob gửi chiếc hộp lại cho Alice. Alice mở hộp với chìa khóa của
mình và đọc thông tin trong thư. Trong ví dụ này, chiếc hộp với khóa
mở đóng vai trò khóa công khai, chiếc chìa khóa chính là khóa bí
mật.
1.1.2 Cơ sở toán học của thuật toán
Khi mã hóa tin nhắn, RSA nhìn thấy thông điệp gồm các số lớn, và mã hóa bao gồm
chủ yếu là phép nhân số lớn. Để hiểu cách thức hoạt động của RSA, chúng ta cần phải biết
những con số lớn mà nó vận dụng và làm thế nào các phép nhân hoạt động trên những con
số đó. RSA thấy bản rõ mà nó đang mã hóa như một số nguyên dương giữa 1 và n - 1,
trong đó n là một số lớn được gọi là mô đun.
Để tìm số các phần tử trong một nhóm Zn * khi n không phải là số nguyên tố, chúng
ta sử dụng hàm số của Euler, được viết là φ (n), với φ đại diện cho chữ Hy Lạp phi. Hàm
này cho biết số lượng các nguyên tố co-prime với n, đó là số lượng các phần tử trong Zn
*. Theo nguyên tắc, nếu n là một sản phẩm của số nguyên tố n = p1 × p2 ×. . . × chiều, số
phần tử trong nhóm Zn * là như sau:
φ (n) = (p1 - 1) × (p2 - 1) × ... × (pm - 1)
Trang 4
RSA chỉ đề cập đến các số n là sản phẩm của hai số nguyên tố lớn, thường được ghi
nhận là n = pq. Nhóm liên kết ZN * sau đó sẽ chứa các phần tử φ (n) = (p - 1) (q - 1).
Bằng cách mở rộng biểu thức này, chúng ta có được định nghĩa tương đương φ (n)
= n - p - q + 1, hoặc φ (n) = (n + 1) - (p + q), biểu hiện trực quan hơn giá trị của φ (n)
tương ứng với n
Nói cách khác, tất cả các số (p + q) giữa 1 và n - 1 thuộc về ZN * và là "số hợp lệ"
trong các cách tính toán của RSA
1.1.3 Tạo khóa
Hình 1.2: Sơ đồ tạo khóa trên mã hóa RSA
Trang 5
Các khóa cho thuật toán RSA được tạo ra như sau:
Chọn 2 số nguyên tố lớn p và q với p khác q, lựa chọn ngẫu nhiên và độc lập.
 Tính n=pq
 Tính một số giả nguyên tố bằng phi hàm Camichael như sau: λ(n) =
BCNN(λ(p), λ(q)) = BCNN(p − 1, q − 1). Giá trị này sẽ được giữ bí
mật.
 Chọn một số tự nhiên e trong khoảng (1, λ(n)) sao cho ƯCLN(e,
λ(n)) = 1, tức là e và λ(n) nguyên tố cùng nhau.
 Tính toán số d sao cho d ≡ 1/e (mod λ(n)) hay viết dễ hiểu hơn thì de
≡ 1 (mod λ(n)). Số d được gọi là số nghịch đảo modulo của e (theo
modulo mod λ(n)).
 Public key sẽ là bộ số (n, e), và private key sẽ là bộ số (n, d). Chúng
ta cần giữ private key thật cẩn thận cũng như các số nguyên
tố p và q vì từ đó có thể tính toán các khóa rất dễ dàng.
1.2. Mã hóa và giải mã:
Nếu chúng ta có bản rõ M, chúng ta cần chuyển nó thành một số tự nhiên m trong
khoảng (0, n) sao cho m, n nguyên tố cùng nhau. Việc này rất dễ dàng thực hiện bằng cách
thêm một các kỹ thuật padding.
Tiếp theo, chúng ta sẽ má hóa m, thành c như sau:
𝒄 ≡ 𝒎 𝒆
𝒎𝒐𝒅 𝒏
Sau đó giá trị c sẽ được chuyển cho người nhận. Ở phía người nhận, họ sẽ giải mã
từ c để lấy được m như sau:
𝒄 𝒅
≡ 𝒎 𝒅𝒆
≡ 𝒎 𝒎𝒐𝒅 𝒏
Từ m có thể lấy lại được bản tin bằng cách đảo ngược padding. Chúng ta lấy một ví
dụ đơn giản như sau:
 p = 5
 q=7
 n=p*q=35
 => λ(n)=24
 Chọn e = 5 vì ƯCLN(5, 24) = 1, cuối cùng chọn d = 29 vì ed - 1 =
29x5 - 1 chia hết cho 24.
 Giả sử m = 32 (dấu cách), chúng ta sẽ mã hóa m và thu được:
c=32^5%35=2
Trang 6
Giải mã c để thu được m:
 m=2^29%35=32
Đây chính là m ban đầu. Ta có thể thử m với các giá trị khác nhau để thấy thuật toán
hoàn toàn chính xác.
1.3. Tạo chữ kí số cho văn bản:
Hình 1.3 Quy trình tạo chữ kí số cho văn bản
Việc ký tên và xác thực chữ ký số sử dụng hệ mã hóa RSA tương tự như quá trình
mã hóa mà giải mã ở trên. Tuy nhiên vai trò của public key và private thì có thay đổi đôi
chút.
Để tạo chữ ký, người gửi sẽ dùng private key và người nhận sẽ dùng public key để
xác thực chữ ký đó.
Tuy nhiên, vì bản tin rất dài nên việc mã hóa toàn bộ bản tin sẽ rất mất thời gian. Vì
vậy, trong thực hành, chữ ký số thường sử dụng phương pháp mã hóa giá trị hash của bản
tin. Việc này mang lại rất nhiều lợi ích như:
Trang 7
 Các hàm hash là hàm 1 chiều, vì vậy dù có được hash cũng không
thể biết được bản tin gốc như thế nào.
 Độ dài hash là cố định và thường rất nhỏ, vì vậy chữ số sẽ không
chiếm quá nhiều dung lượng.
 Giá trị hash còn có thể dùng để kiểm tra lại bản tin nhận được có
nguyên vẹn hay không?
Chữ ký số đem lại nhiều giá trị hơn chữ ký tay rất nhiều. Có lẽ cũng vì vậy, việc xử
lý chữ ký số phức tạp hơn hẳn chữ ký tay truyền thống.
 Xác định nguồn gốc: Hệ mã hóa bất đối xứng cho phép tạo chữ ký
với private key mà chỉ người chủ mới biết. Khi nhận gói tin, người
nhận xác thực chữ ký bằng cách dùng public key giải mã, sau đó
tính giá trị hash của bản tin gốc và so sánh với hash trong gói tin
nhận được. Hai chuỗi này phải trùng khớp với nhau. Tất nhiêu hệ
mã hóa RSA vẫn có những thách thức về an ninh nhất định nhưng
dù sao thì nó vẫn khá an toàn.
 Dữ liệu được giữ một cách toàn vẹn: Tin nhắn gửi từ chủ private
key rất khó có thể bị giả mạo. Bởi vì nếu thay đổi tin nhắn thì giá trị
hash cũng phải thay đổi theo. Những kẻ nghe lén trong mạng đương
nhiên là có thể tìm cách đọc tin nhắn gốc và cả hash của nó. Nhưng
hắn ta không thể thay đổi tin nhắn được vì hắn không có private key
để sửa đổi chữ ký số cho phù hợp.
 Chữ ký số không thể phủ nhận: Trong giao dịch, một gói tin kèm
chữ ký số rất dễ dàng tìm ra được nguồn gốc của chữ ký đó. Bởi vì
private key là bí mật và chỉ người chủ của nó mới có thể biết, họ
không thể chối cãi rằng chữ ký này không phải do họ phát hành.
Cũng tương tự trường hợp trên, hệ mã hóa RSA hay bất kỳ hệ mã
hóa nào khác cũng đều có những vấn đề về an ninh nên việc này
không thể đảm bảo tuyệt đối chính xác được.
1.4. Các vấn đề cần đặt ra về thực tế
1.4.1 Quá trình tạo khóa
Việc tìm ra 2 số nguyên tố đủ lớn p và q thường được thực hiện bằng cách thử xác
suất các số ngẫu nhiên có độ lớn phù hợp (dùng phép kiểm tra nguyên tố cho phép loại bỏ
hầu hết các hợp số). Hai giá trị p và q còn cần được chọn không quá gần nhau để phòng
trường hợp phân tích n bằng phương pháp phân tích Fermat.
Trang 8
Nếu p-1 hoặc q-1 có thừa số nguyên tố nhỏ thì ncũng có thể dễ dàng bị phân tích và
vì thế p và q cũng cần được thử để tránh khả năng này.
Một điểm nữa cần nhấn mạnh là khóa bí mật d phải đủ lớn. Năm 1990, Wiener chỉ
ra rằng nếu giá trị của p nằm trong khoảng q và 2q (khá phổ biến) và d < n1/4/3 thì có thể
tìm ra được d từ n và e.
Mặc dù e đã từng có giá trị là 3 nhưng hiện nay các số mũ nhỏ không còn được sử
dụng do có thể tạo nên những lỗ hổng (đã đề cập ở phần chuyển đổi văn bản rõ). Giá trị
thường dùng hiện nay là 65537 vì được xem là đủ lớn và cũng không quá lớn ảnh hưởng
tới việc thực hiện hàm mũ.
1.4.2 Tốc độ
Hình 1.4: Biểu đồ thời gian mã hóa của thuật toán RSA dựa vào độ lớn của key
RSA có tốc độ thực hiện chậm hơn đáng kể so với DES và các thuật toán mã hóa
đối xứng khác. Trên thực tế, Bob sử dụng một thuật toán mã hóa đối xứng nào đó để mã
hóa văn bản cần gửi và chỉ sử dụng RSA để mã hóa khóa để giải mã (thông thường khóa
ngắn hơn nhiều so với văn bản).
Trang 9
Phương thức này cũng tạo ra những vấn đề an ninh mới. Một ví dụ là cần phải tạo
ra khóa đối xứng thật sự ngẫu nhiên. Nếu không, kẻ tấn công (thường ký hiệu là Eve) sẽ
bỏ qua RSA và tập trung vào việc đoán khóa đối xứng.
1.4.3 Phân phối khóa
Cũng giống như các thuật toán mã hóa khác, cách thức phân phối khóa công khai là
một trong những yếu tố quyết định đối với độ an toàn của RSA.
 Quá trình phân phối khóa cần chống lại được tấn công ở
giữa (man-in-the-middle attack). Các phương pháp chống
lại dạng tấn công này thường dựa trên các chứng thực khóa
công khai (digital certificate).
 Các thành phần của hạ tầng khóa công khai (public key
infrastructure - PKI).
Trang 10
Chương 2: Lab Demo ứng dụng mã hóa RSA
trên Android
2.1. Cài đặt
 Môi trường soạn thảo chương trình: IDE Android Studio version 3.0.
 Ngôn ngữ cài đặt: ngôn ngữ lập trình Java.
 Hệ cơ sở dữ liệu: Firebase Google.
 Môi trường chạy thử chương trình: giả lập Android Emulator API 22 có thiết lập
kết nối mạng, máy Android version 6.0 có kết nối mạng 3G.
2.2. Tổng quan về hoạt động của phần mềm
Hình 2.1: Sơ đồ hoạt động tổng quan của Apps.
Trang 11
Hai thiết bị Android sẽ đóng vai trò gửi và nhận tin nhắn. Trong đó, thiết bị nhận
tin nhắn (có nhiệm vụ giải mã) sẽ tạo khóa công khai và gửi nó lên cơ sở dữ liệu online của
Firebase. Thiết bị gửi tin nhắn truy vấn lên cơ sở dữ liệu online của Firebase, nhận được
khóa công khai và thực hiện mã hóa tin nhắn. Sau đó, tin nhắn được mã hóa sẽ đẩy lên
server firebase. Máy người nhận sẽ nhận được tin nhắn, sử dụng khóa bí mật đã được tạo
từ ban đầu để giải mã tin nhắn.
2.3. Giới thiệu về các mô đun của chương trình
Hình 2.2: Đường dẫn của Project Apps.
App Android sẽ có bốn class chính bao gồm như hình trên. Trong ngôn ngữ Java,
việc sinh khóa hoàn toàn có thể được rút gọn bằng cách sử dụng các thư viện có sẵn.
Trang 12
Hình 2.3: Các thư viện áp dụng cho mã hóa trong Android
Bằng việc áp dụng các thư viện phong phú trong ngôn ngữ Java, ta tiết kiệm được
thời gian và công sức trong việc tạo các mô đun mã hóa.
Hình 2.3: Hàm sinh khóa công khai và khóa bí mật sử dụng Java.
Khi khóa công khai được sinh và tin nhắn mã hóa được gửi đi, cơ sở dữ liệu của
Firebase sẽ nhận được giá trị của chúng.
Trang 13
Hình 2.4: Thông tin về khóa công khai và tin nhắn mã hóa lưu tại Firebase.
Với mỗi phiên khóa công khai được sinh ra, cơ sở dữ liệu của Firebase được cập
nhập thời gian thực.
Trang 14
2.4. Thử nghiệm thực tế
Hình 2.5: Màn hình lúc đầu khi khởi động App.
Khi khởi động app, ta có hai lựa chọn vào phần Decrypt hoặc vào phần Encrypt.
Trong đó phần Decrypt sẽ đóng vai trò làm người nhận tin nhắn, ngược lại, phần Encrypt
sẽ làm thiết bị đóng vai trò gửi tin nhắn.
Trang 15
Hình 2.6: Màn hình hiển thị tin nhắn nhận được và sinh khóa.
Với thiết bị nhận, trên màn hình hiển thị sẽ có các Button để sinh và hiển thị các
khóa. Các khóa này được sinh ra ngẫu nhiên theo mỗi tiến trình hoạt động.
Trang 16
Hình 2.7: Giá trị khóa bí mật và khóa công khai khi sinh ra phiên.
Trang 17
Hình 2.8: Giá trị các phiên
Thiết bị gửi tin sẽ nhận được thông tin khóa công khai được gửi từ server xuống,
nhấn vào Button Encrypt sẽ hiển thị được tin nhắn đã bị mã hóa. Sau đó có thể gửi đi được
tin nhắn bị mã hóa.
Tổng kết
Việc ứng dụng mã hóa để đảm bảo an toàn thông tin là điều hết sức cần thiết. Trong
ví dụ trên, bằng việc mã hóa tin nhắn và phân phối khóa công khai trong RSA, tính bí mật
và toàn vẹn của thông tin được đảm bảo an toàn. Kẻ tấn công dù có thể đăng nhập vào cơ
sở dữ liệu cloud web Firebase thì cũng chỉ có thể đọc được bản mã của tin nhắn. Ví dụ ứng
dụng mã hóa RSA cơ bản trên Android, nhưng thể hiện được tầm quan trọng của việc đảm
bảo an toàn thông tin cho người dùng.
Trang 18
Danh mục tài liệu tham khảo
[1] Chapter 10 – A Practical Introduction to Modern Encryption by Jean-Philippe
Aumasson – No Starch Press - November 2017, 312 pp.
[2] https://viblo.asia/p/he-ma-hoa-rsa-va-chu-ky-so-6J3ZgkgMZmB
[3] https://sites.google.com/site/mobilesecuritylabware/3-data-location-privacy/lab-
activity/cryptography/cryptography-mobile-labs/encryption-decryption/2-lab-
activity/lab2-rsa-encryption-program-android-studio
[4] https://www.tutorialspoint.com/firebase/

More Related Content

What's hot

Bai tap va loi giai sql
Bai tap va loi giai sqlBai tap va loi giai sql
Bai tap va loi giai sql
. .
 
[123doc] do-an-phan-mem-quan-ly-nhan-su-tien-luong
[123doc]   do-an-phan-mem-quan-ly-nhan-su-tien-luong[123doc]   do-an-phan-mem-quan-ly-nhan-su-tien-luong
[123doc] do-an-phan-mem-quan-ly-nhan-su-tien-luong
DuytPhm8
 
Slide bai giang_an_toan_va_bao_mat_thong_tin
Slide bai giang_an_toan_va_bao_mat_thong_tinSlide bai giang_an_toan_va_bao_mat_thong_tin
Slide bai giang_an_toan_va_bao_mat_thong_tin
Lang Codon
 

What's hot (20)

Bai tap va loi giai sql
Bai tap va loi giai sqlBai tap va loi giai sql
Bai tap va loi giai sql
 
Tổng quan về an toàn và bảo mật thông tin
Tổng quan về an toàn và bảo mật thông tinTổng quan về an toàn và bảo mật thông tin
Tổng quan về an toàn và bảo mật thông tin
 
Chuẩn hóa lược đồ quan hệ
Chuẩn hóa lược đồ quan hệChuẩn hóa lược đồ quan hệ
Chuẩn hóa lược đồ quan hệ
 
Bao cao atbmhttt
Bao cao atbmhtttBao cao atbmhttt
Bao cao atbmhttt
 
Hệ mật mã Elgamal
Hệ mật mã ElgamalHệ mật mã Elgamal
Hệ mật mã Elgamal
 
Kỹ thuật giấu tin dựa trên sự tương quan của miền không gian ảnh
Kỹ thuật giấu tin dựa trên sự tương quan của miền không gian ảnhKỹ thuật giấu tin dựa trên sự tương quan của miền không gian ảnh
Kỹ thuật giấu tin dựa trên sự tương quan của miền không gian ảnh
 
Cơ sở dữ liệu PTIT slide 3
Cơ sở dữ liệu PTIT slide 3Cơ sở dữ liệu PTIT slide 3
Cơ sở dữ liệu PTIT slide 3
 
[123doc] do-an-phan-mem-quan-ly-nhan-su-tien-luong
[123doc]   do-an-phan-mem-quan-ly-nhan-su-tien-luong[123doc]   do-an-phan-mem-quan-ly-nhan-su-tien-luong
[123doc] do-an-phan-mem-quan-ly-nhan-su-tien-luong
 
Luận văn: Tìm hiểu chuẩn mật mã dữ liệu (DES) và ứng dụng, HOT
Luận văn: Tìm hiểu chuẩn mật mã dữ liệu (DES) và ứng dụng, HOTLuận văn: Tìm hiểu chuẩn mật mã dữ liệu (DES) và ứng dụng, HOT
Luận văn: Tìm hiểu chuẩn mật mã dữ liệu (DES) và ứng dụng, HOT
 
Đề tài: Xây dựng điểm kiểm soát truy cập mạng không dây, HAY
Đề tài: Xây dựng điểm kiểm soát truy cập mạng không dây, HAYĐề tài: Xây dựng điểm kiểm soát truy cập mạng không dây, HAY
Đề tài: Xây dựng điểm kiểm soát truy cập mạng không dây, HAY
 
csdl - buoi13-14
csdl - buoi13-14csdl - buoi13-14
csdl - buoi13-14
 
Tìm hiểu MongoDB
Tìm hiểu MongoDBTìm hiểu MongoDB
Tìm hiểu MongoDB
 
(HoaND) giao trinh webservice
(HoaND) giao trinh webservice (HoaND) giao trinh webservice
(HoaND) giao trinh webservice
 
Phân tích mã độc cơ bản - báo cáo thực tập
Phân tích mã độc cơ bản - báo cáo thực tậpPhân tích mã độc cơ bản - báo cáo thực tập
Phân tích mã độc cơ bản - báo cáo thực tập
 
Xây dựng cơ sở dữ liệu trong quản lý nhân sự
Xây dựng cơ sở dữ liệu trong quản lý nhân sựXây dựng cơ sở dữ liệu trong quản lý nhân sự
Xây dựng cơ sở dữ liệu trong quản lý nhân sự
 
ĐỀ TÀI : ĐIỂM DANH BẰNG NHẬN DIỆN KHUÔN MẶT. Giảng viên : PGS.TS. HUỲNH CÔNG ...
ĐỀ TÀI : ĐIỂM DANH BẰNG NHẬN DIỆN KHUÔN MẶT. Giảng viên : PGS.TS. HUỲNH CÔNG ...ĐỀ TÀI : ĐIỂM DANH BẰNG NHẬN DIỆN KHUÔN MẶT. Giảng viên : PGS.TS. HUỲNH CÔNG ...
ĐỀ TÀI : ĐIỂM DANH BẰNG NHẬN DIỆN KHUÔN MẶT. Giảng viên : PGS.TS. HUỲNH CÔNG ...
 
Giáo trình mạng máy tính
Giáo trình mạng máy tínhGiáo trình mạng máy tính
Giáo trình mạng máy tính
 
Slide bai giang_an_toan_va_bao_mat_thong_tin
Slide bai giang_an_toan_va_bao_mat_thong_tinSlide bai giang_an_toan_va_bao_mat_thong_tin
Slide bai giang_an_toan_va_bao_mat_thong_tin
 
Chương 4. Chuẩn hóa cơ sở dữ liệu
Chương 4. Chuẩn hóa cơ sở dữ liệu Chương 4. Chuẩn hóa cơ sở dữ liệu
Chương 4. Chuẩn hóa cơ sở dữ liệu
 
Bai 4 Phan Lop
Bai 4 Phan LopBai 4 Phan Lop
Bai 4 Phan Lop
 

Similar to Báo cáo tốt nghiệp Android RSA mã hóa

Bao cao antoanbaomat-hung
Bao cao antoanbaomat-hungBao cao antoanbaomat-hung
Bao cao antoanbaomat-hung
Luu Tuong
 
75291064 rsa-co-ban
75291064 rsa-co-ban75291064 rsa-co-ban
75291064 rsa-co-ban
Ngo Kiet
 
Chuong 5 - Ma hoa khoa Bat doi xung.pdf
Chuong 5 - Ma hoa khoa Bat doi xung.pdfChuong 5 - Ma hoa khoa Bat doi xung.pdf
Chuong 5 - Ma hoa khoa Bat doi xung.pdf
DuyNguyn856183
 
MATMA - Chuong3matmakhoacongkhai
MATMA - Chuong3matmakhoacongkhaiMATMA - Chuong3matmakhoacongkhai
MATMA - Chuong3matmakhoacongkhai
Sai Lemovom
 
Slide_Chữ ký điện tử của chaum van antwerpen
Slide_Chữ ký điện tử của chaum van antwerpenSlide_Chữ ký điện tử của chaum van antwerpen
Slide_Chữ ký điện tử của chaum van antwerpen
Tai Tran
 

Similar to Báo cáo tốt nghiệp Android RSA mã hóa (20)

Bao cao antoanbaomat-hung
Bao cao antoanbaomat-hungBao cao antoanbaomat-hung
Bao cao antoanbaomat-hung
 
75291064 rsa-co-ban
75291064 rsa-co-ban75291064 rsa-co-ban
75291064 rsa-co-ban
 
Ch09
Ch09Ch09
Ch09
 
Chuong 5 - Ma hoa khoa Bat doi xung.pdf
Chuong 5 - Ma hoa khoa Bat doi xung.pdfChuong 5 - Ma hoa khoa Bat doi xung.pdf
Chuong 5 - Ma hoa khoa Bat doi xung.pdf
 
MATMA - Chuong3matmakhoacongkhai
MATMA - Chuong3matmakhoacongkhaiMATMA - Chuong3matmakhoacongkhai
MATMA - Chuong3matmakhoacongkhai
 
Tìm hiểu hệ mã hoá RSA và cách triển khai vào hệ thống
Tìm hiểu hệ mã hoá RSA và cách triển khai vào hệ thốngTìm hiểu hệ mã hoá RSA và cách triển khai vào hệ thống
Tìm hiểu hệ mã hoá RSA và cách triển khai vào hệ thống
 
Hệ mật mã Mcelice
Hệ mật mã MceliceHệ mật mã Mcelice
Hệ mật mã Mcelice
 
Tiểu+luận+antoan
Tiểu+luận+antoanTiểu+luận+antoan
Tiểu+luận+antoan
 
Slide_Chữ ký điện tử của chaum van antwerpen
Slide_Chữ ký điện tử của chaum van antwerpenSlide_Chữ ký điện tử của chaum van antwerpen
Slide_Chữ ký điện tử của chaum van antwerpen
 
Ma hoa.pdf
Ma hoa.pdfMa hoa.pdf
Ma hoa.pdf
 
Một số thuật toán phân tích số nguyên hiện đại và ứng dụng.doc
Một số thuật toán phân tích số nguyên hiện đại và ứng dụng.docMột số thuật toán phân tích số nguyên hiện đại và ứng dụng.doc
Một số thuật toán phân tích số nguyên hiện đại và ứng dụng.doc
 
Hệ mật mã elgamal
Hệ mật mã elgamalHệ mật mã elgamal
Hệ mật mã elgamal
 
B4-Ma hoa khoa cong khai.ppt
B4-Ma hoa khoa cong khai.pptB4-Ma hoa khoa cong khai.ppt
B4-Ma hoa khoa cong khai.ppt
 
HẠ TẦNG KHÓA CÔNG KHAI(PKI)
HẠ TẦNG KHÓA CÔNG KHAI(PKI)HẠ TẦNG KHÓA CÔNG KHAI(PKI)
HẠ TẦNG KHÓA CÔNG KHAI(PKI)
 
Hoán vị lặp tổ hợp
Hoán vị lặp tổ hợpHoán vị lặp tổ hợp
Hoán vị lặp tổ hợp
 
Chuong 7 bao mat mang
Chuong 7 bao mat mangChuong 7 bao mat mang
Chuong 7 bao mat mang
 
Tổng hợp các tài liệu cryptography thuat toan ma hoa
Tổng hợp các tài liệu cryptography  thuat toan ma hoaTổng hợp các tài liệu cryptography  thuat toan ma hoa
Tổng hợp các tài liệu cryptography thuat toan ma hoa
 
thực hành tấn công tuyến tính des với 4 vòng
thực hành tấn công tuyến tính des với 4 vòngthực hành tấn công tuyến tính des với 4 vòng
thực hành tấn công tuyến tính des với 4 vòng
 
Phân tích Confuser 1.9.0.0 - Constant Protection - Bản dịch
Phân tích Confuser 1.9.0.0 - Constant Protection - Bản dịchPhân tích Confuser 1.9.0.0 - Constant Protection - Bản dịch
Phân tích Confuser 1.9.0.0 - Constant Protection - Bản dịch
 
Một số thuật toán Phân tích số nguyên hiện đại Và ứng dụng.doc
Một số thuật toán Phân tích số nguyên hiện đại Và ứng dụng.docMột số thuật toán Phân tích số nguyên hiện đại Và ứng dụng.doc
Một số thuật toán Phân tích số nguyên hiện đại Và ứng dụng.doc
 

More from Phạm Trung Đức

More from Phạm Trung Đức (9)

Windows Malware Forensic - rà soát gỡ bỏ mã độc
Windows Malware Forensic - rà soát gỡ bỏ mã độcWindows Malware Forensic - rà soát gỡ bỏ mã độc
Windows Malware Forensic - rà soát gỡ bỏ mã độc
 
Rà soát Malware bằng SysInternal Suite
Rà soát Malware bằng SysInternal SuiteRà soát Malware bằng SysInternal Suite
Rà soát Malware bằng SysInternal Suite
 
Phap luat chinh sach ATTT - ITSM
Phap luat chinh sach ATTT - ITSMPhap luat chinh sach ATTT - ITSM
Phap luat chinh sach ATTT - ITSM
 
Kĩ thuật bảo trì phần mềm
Kĩ thuật bảo trì phần mềmKĩ thuật bảo trì phần mềm
Kĩ thuật bảo trì phần mềm
 
Kĩ thuật bảo trì phần mềm
Kĩ thuật bảo trì phần mềmKĩ thuật bảo trì phần mềm
Kĩ thuật bảo trì phần mềm
 
Đường lối của Đảng xây dựng văn hóa thời kì Đổi mới
Đường lối của Đảng xây dựng văn hóa thời kì Đổi mớiĐường lối của Đảng xây dựng văn hóa thời kì Đổi mới
Đường lối của Đảng xây dựng văn hóa thời kì Đổi mới
 
Slide về việc bắt gói tin trên Python2.7
Slide về việc bắt gói tin trên Python2.7Slide về việc bắt gói tin trên Python2.7
Slide về việc bắt gói tin trên Python2.7
 
Lập trình phân tích bắt gói tin mạng bằng Python
Lập trình phân tích bắt gói tin mạng bằng PythonLập trình phân tích bắt gói tin mạng bằng Python
Lập trình phân tích bắt gói tin mạng bằng Python
 
Tấn công Social Engineering
Tấn công Social EngineeringTấn công Social Engineering
Tấn công Social Engineering
 

Recently uploaded

BOSCH FBX-1000 Bộ chống hú Bosch FBX-1000
BOSCH FBX-1000 Bộ chống hú Bosch FBX-1000BOSCH FBX-1000 Bộ chống hú Bosch FBX-1000
BOSCH FBX-1000 Bộ chống hú Bosch FBX-1000
support03
 

Recently uploaded (8)

Google E-E-A-T là gì? Yếu tố giúp Google đánh giá website của bạn
Google E-E-A-T là gì? Yếu tố giúp Google đánh giá website của bạnGoogle E-E-A-T là gì? Yếu tố giúp Google đánh giá website của bạn
Google E-E-A-T là gì? Yếu tố giúp Google đánh giá website của bạn
 
Khoá luận tốt nghiệp Công nghệ sinh học Nghiên cứu tuyển chọn chủng vi sinh v...
Khoá luận tốt nghiệp Công nghệ sinh học Nghiên cứu tuyển chọn chủng vi sinh v...Khoá luận tốt nghiệp Công nghệ sinh học Nghiên cứu tuyển chọn chủng vi sinh v...
Khoá luận tốt nghiệp Công nghệ sinh học Nghiên cứu tuyển chọn chủng vi sinh v...
 
Khóa luận tốt nghiệp Công tác Quản trị Văn phòng tại Công ty than Khe Chàm
Khóa luận tốt nghiệp Công tác Quản trị Văn phòng tại Công ty than Khe ChàmKhóa luận tốt nghiệp Công tác Quản trị Văn phòng tại Công ty than Khe Chàm
Khóa luận tốt nghiệp Công tác Quản trị Văn phòng tại Công ty than Khe Chàm
 
BOSCH FBX-1000 Bộ chống hú Bosch FBX-1000
BOSCH FBX-1000 Bộ chống hú Bosch FBX-1000BOSCH FBX-1000 Bộ chống hú Bosch FBX-1000
BOSCH FBX-1000 Bộ chống hú Bosch FBX-1000
 
BT quy hoạch tuyến tính (có lời giải chi tiết)
BT quy hoạch tuyến tính (có lời giải chi tiết)BT quy hoạch tuyến tính (có lời giải chi tiết)
BT quy hoạch tuyến tính (có lời giải chi tiết)
 
Khóa luận tốt nghiệp Công nghệ kỹ thuật hóa học Xây dựng phương pháp định lượ...
Khóa luận tốt nghiệp Công nghệ kỹ thuật hóa học Xây dựng phương pháp định lượ...Khóa luận tốt nghiệp Công nghệ kỹ thuật hóa học Xây dựng phương pháp định lượ...
Khóa luận tốt nghiệp Công nghệ kỹ thuật hóa học Xây dựng phương pháp định lượ...
 
Checklist SEO để tối ưu website mà bạn cần biết.pdf
Checklist SEO để tối ưu website mà bạn cần biết.pdfChecklist SEO để tối ưu website mà bạn cần biết.pdf
Checklist SEO để tối ưu website mà bạn cần biết.pdf
 
Tín hiệu xếp hạng trên Google là những gì.pdf
Tín hiệu xếp hạng trên Google là những gì.pdfTín hiệu xếp hạng trên Google là những gì.pdf
Tín hiệu xếp hạng trên Google là những gì.pdf
 

Báo cáo tốt nghiệp Android RSA mã hóa

  • 1. HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG Chuyên ngành: ATTT - khoa CNTT --------------------------------------- Xây dựng ứng dụng mã hóa RSA trên hệ điều hành di động Android. Môn học: An ninh mạng Giảng viên: Đặng Minh Tuấn Nhóm sinh viên: Phạm Trung Đức Nguyễn Tuấn Hà nội, ngày 27 tháng 11 năm 2017
  • 2. Mục lục Bảng phân công nhiệm vụ.................................................................................................3 Lời dẫn................................................................................................................................4 Chương 1: Lý thuyết nền tảng về mã hóa RSA ..............................................................2 1.1. Lịch sử, cách hoạt động RSA:.............................................................................2 1.1.1 Mô tả sơ lược .................................................................................................3 1.1.2 Cơ sở toán học của thuật toán......................................................................3 1.1.3 Tạo khóa.........................................................................................................4 1.2. Mã hóa và giải mã:...............................................................................................5 1.3. Tạo chữ kí số cho văn bản:..................................................................................6 1.4. Các vấn đề cần đặt ra về thực tế.........................................................................7 1.4.1 Quá trình tạo khóa........................................................................................7 1.4.2 Tốc độ .............................................................................................................8 1.4.3 Phân phối khóa..............................................................................................9 Chương 2: Lab Demo ứng dụng mã hóa RSA trên Android ......................................10 2.1. Cài đặt .................................................................................................................10 2.2. Tổng quan về hoạt động của phần mềm..........................................................10 2.3. Giới thiệu về các mô đun của chương trình ....................................................11 2.4. Thử nghiệm thực tế............................................................................................14 Tổng kết............................................................................................................................17 Danh mục tài liệu tham khảo .........................................................................................18
  • 3. Bảng phân công nhiệm vụ STT Mã sinh viên Họ và tên Phần việc thực hiện 1 B13DCAT056 Phạm Trung Đức - Làm slide về app Android. - Trình bày Demo trên lớp - Thực hiện, biên tập, soạn thảo báo cáo. - Làm Lab demo. 2 B13DCAT094 Nguyễn Tuấn - Tìm kiếm thông tin, tài liệu - Dịch tài liệu, soạn thảo báo cáo chương 1. - Làm slide về mã hóa RSA
  • 4. Lời dẫn Trong bối cảnh ngày nay khi mạng Internet càng mở rộng với hàng tỉ thiết bị PC, Laptop, smart phone, IoT được kết nối chặt chẽ với nhau, yêu cầu mở rộng đầu tư cho an ninh thông tin, an toàn mạng trở nên thiết thực hơn bao giờ hết. Bên cạnh những nguy cơ phổ biến như tấn công từ chối dịch vụ DDoS, chèn SQL Injection, khai thác Exploit CVE thì việc mã hóa thông tin đóng vai trò vô cùng then chốt trong ngành An toàn thông tin. Các mã hóa hiện đại ngày nay có cơ chế phức tạp, đóng vai trò bảo mật thông tin, hệ thống trị giá hàng triệu đô la. Tuy nhiên với qui mô nghiên cứu của môn học nói riêng và sinh viên nói chung, việc ứng dụng mã hóa hiện đại như đường cong Eliptic mang tính khả thi không cao. Chính vì thế, nhóm chúng em quyết định chọn thuật toán mã hóa RSA vào ứng dụng Android. Thuật toán mã hóa RSA là thuật toán mang tính kinh điển của ngành mật mã học, nên bài nghiên cứu sẽ đi sơ lược qua nó và mang tính ứng dụng cho Android cao hơn.
  • 5. Trang 2 Chương 1: Lý thuyết nền tảng về mã hóa RSA 1.1. Lịch sử, cách hoạt động RSA: Trong phần đầu tiên này, chúng ta sẽ tìm hiểu về lý thuyết nền tảng về đặc điểm thông dụng mã hóa RSA. Bằng những thông tin này, người đọc có thể có cái nhìn tổng quát về mã hóa RSA. Hình 1.1: Mô tả chung về mã hóa tin nhắn Thuật toán được Ron Rivest, Adi Shamir và Len Adleman mô tả lần đầu tiên vào năm 1977 tại Học viện Công nghệ Massachusetts (MIT). Tên của thuật toán lấy từ 3 chữ cái đầu của tên 3 tác giả. Trước đó, vào năm 1973, Clifford Cocks, một nhà toán học người Anh làm việc tại GCHQ, đã mô tả một thuật toán tương tự. Với khả năng tính toán tại thời điểm đó thì thuật toán này không khả thi và chưa bao giờ được thực nghiệm. Tuy nhiên, phát minh này chỉ được công bố vào năm 1997 vì được xếp vào loại tuyệt mật. Thuật toán RSA được MIT đăng ký bằng sáng chế tại Hoa Kỳ vào năm 1983 (Số đăng ký 4.405.829). Bằng sáng chế này hết hạn vào ngày 21 tháng 9 năm 2000. Tuy nhiên, do thuật toán đã được công bố trước khi có đăng ký bảo hộ nên sự bảo hộ hầu như không có giá trị bên ngoài Hoa Kỳ. Ngoài ra, nếu như công trình của Clifford Cocks đã được công bố trước đó thì bằng sáng chế RSA đã không thể được đăng ký.
  • 6. Trang 3 1.1.1 Mô tả sơ lược Thuật toán RSA có hai khóa: khóa công khai (hay khóa công cộng) và khóa bí mật (hay khóa cá nhân). Mỗi khóa là những số cố định sử dụng trong quá trình mã hóa và giải mã. Khóa công khai được công bố rộng rãi cho mọi người và được dùng để mã hóa. Những thông tin được mã hóa bằng khóa công khai chỉ có thể được giải mã bằng khóa bí mật tương ứng. Nói cách khác, mọi người đều có thể mã hóa nhưng chỉ có người biết khóa cá nhân (bí mật) mới có thể giải mã được. Ta có thể mô phỏng trực quan một hệ mật mã khoá công khai như sau:  Bob muốn gửi cho Alice một thông tin mật mà Bob muốn duy nhất Alice có thể đọc được.  Alice gửi cho Bob một chiếc hộp có khóa đã mở sẵn và giữ lại chìa khóa. Bob nhận chiếc hộp, cho vào đó một tờ giấy viết thư bình thường và khóa lại (như loại khoá thông thường chỉ cần sập chốt lại, sau khi sập chốt khóa ngay cả Bob cũng không thể mở lại được- không đọc lại hay sửa thông tin trong thư được nữa).  Bob gửi chiếc hộp lại cho Alice. Alice mở hộp với chìa khóa của mình và đọc thông tin trong thư. Trong ví dụ này, chiếc hộp với khóa mở đóng vai trò khóa công khai, chiếc chìa khóa chính là khóa bí mật. 1.1.2 Cơ sở toán học của thuật toán Khi mã hóa tin nhắn, RSA nhìn thấy thông điệp gồm các số lớn, và mã hóa bao gồm chủ yếu là phép nhân số lớn. Để hiểu cách thức hoạt động của RSA, chúng ta cần phải biết những con số lớn mà nó vận dụng và làm thế nào các phép nhân hoạt động trên những con số đó. RSA thấy bản rõ mà nó đang mã hóa như một số nguyên dương giữa 1 và n - 1, trong đó n là một số lớn được gọi là mô đun. Để tìm số các phần tử trong một nhóm Zn * khi n không phải là số nguyên tố, chúng ta sử dụng hàm số của Euler, được viết là φ (n), với φ đại diện cho chữ Hy Lạp phi. Hàm này cho biết số lượng các nguyên tố co-prime với n, đó là số lượng các phần tử trong Zn *. Theo nguyên tắc, nếu n là một sản phẩm của số nguyên tố n = p1 × p2 ×. . . × chiều, số phần tử trong nhóm Zn * là như sau: φ (n) = (p1 - 1) × (p2 - 1) × ... × (pm - 1)
  • 7. Trang 4 RSA chỉ đề cập đến các số n là sản phẩm của hai số nguyên tố lớn, thường được ghi nhận là n = pq. Nhóm liên kết ZN * sau đó sẽ chứa các phần tử φ (n) = (p - 1) (q - 1). Bằng cách mở rộng biểu thức này, chúng ta có được định nghĩa tương đương φ (n) = n - p - q + 1, hoặc φ (n) = (n + 1) - (p + q), biểu hiện trực quan hơn giá trị của φ (n) tương ứng với n Nói cách khác, tất cả các số (p + q) giữa 1 và n - 1 thuộc về ZN * và là "số hợp lệ" trong các cách tính toán của RSA 1.1.3 Tạo khóa Hình 1.2: Sơ đồ tạo khóa trên mã hóa RSA
  • 8. Trang 5 Các khóa cho thuật toán RSA được tạo ra như sau: Chọn 2 số nguyên tố lớn p và q với p khác q, lựa chọn ngẫu nhiên và độc lập.  Tính n=pq  Tính một số giả nguyên tố bằng phi hàm Camichael như sau: λ(n) = BCNN(λ(p), λ(q)) = BCNN(p − 1, q − 1). Giá trị này sẽ được giữ bí mật.  Chọn một số tự nhiên e trong khoảng (1, λ(n)) sao cho ƯCLN(e, λ(n)) = 1, tức là e và λ(n) nguyên tố cùng nhau.  Tính toán số d sao cho d ≡ 1/e (mod λ(n)) hay viết dễ hiểu hơn thì de ≡ 1 (mod λ(n)). Số d được gọi là số nghịch đảo modulo của e (theo modulo mod λ(n)).  Public key sẽ là bộ số (n, e), và private key sẽ là bộ số (n, d). Chúng ta cần giữ private key thật cẩn thận cũng như các số nguyên tố p và q vì từ đó có thể tính toán các khóa rất dễ dàng. 1.2. Mã hóa và giải mã: Nếu chúng ta có bản rõ M, chúng ta cần chuyển nó thành một số tự nhiên m trong khoảng (0, n) sao cho m, n nguyên tố cùng nhau. Việc này rất dễ dàng thực hiện bằng cách thêm một các kỹ thuật padding. Tiếp theo, chúng ta sẽ má hóa m, thành c như sau: 𝒄 ≡ 𝒎 𝒆 𝒎𝒐𝒅 𝒏 Sau đó giá trị c sẽ được chuyển cho người nhận. Ở phía người nhận, họ sẽ giải mã từ c để lấy được m như sau: 𝒄 𝒅 ≡ 𝒎 𝒅𝒆 ≡ 𝒎 𝒎𝒐𝒅 𝒏 Từ m có thể lấy lại được bản tin bằng cách đảo ngược padding. Chúng ta lấy một ví dụ đơn giản như sau:  p = 5  q=7  n=p*q=35  => λ(n)=24  Chọn e = 5 vì ƯCLN(5, 24) = 1, cuối cùng chọn d = 29 vì ed - 1 = 29x5 - 1 chia hết cho 24.  Giả sử m = 32 (dấu cách), chúng ta sẽ mã hóa m và thu được: c=32^5%35=2
  • 9. Trang 6 Giải mã c để thu được m:  m=2^29%35=32 Đây chính là m ban đầu. Ta có thể thử m với các giá trị khác nhau để thấy thuật toán hoàn toàn chính xác. 1.3. Tạo chữ kí số cho văn bản: Hình 1.3 Quy trình tạo chữ kí số cho văn bản Việc ký tên và xác thực chữ ký số sử dụng hệ mã hóa RSA tương tự như quá trình mã hóa mà giải mã ở trên. Tuy nhiên vai trò của public key và private thì có thay đổi đôi chút. Để tạo chữ ký, người gửi sẽ dùng private key và người nhận sẽ dùng public key để xác thực chữ ký đó. Tuy nhiên, vì bản tin rất dài nên việc mã hóa toàn bộ bản tin sẽ rất mất thời gian. Vì vậy, trong thực hành, chữ ký số thường sử dụng phương pháp mã hóa giá trị hash của bản tin. Việc này mang lại rất nhiều lợi ích như:
  • 10. Trang 7  Các hàm hash là hàm 1 chiều, vì vậy dù có được hash cũng không thể biết được bản tin gốc như thế nào.  Độ dài hash là cố định và thường rất nhỏ, vì vậy chữ số sẽ không chiếm quá nhiều dung lượng.  Giá trị hash còn có thể dùng để kiểm tra lại bản tin nhận được có nguyên vẹn hay không? Chữ ký số đem lại nhiều giá trị hơn chữ ký tay rất nhiều. Có lẽ cũng vì vậy, việc xử lý chữ ký số phức tạp hơn hẳn chữ ký tay truyền thống.  Xác định nguồn gốc: Hệ mã hóa bất đối xứng cho phép tạo chữ ký với private key mà chỉ người chủ mới biết. Khi nhận gói tin, người nhận xác thực chữ ký bằng cách dùng public key giải mã, sau đó tính giá trị hash của bản tin gốc và so sánh với hash trong gói tin nhận được. Hai chuỗi này phải trùng khớp với nhau. Tất nhiêu hệ mã hóa RSA vẫn có những thách thức về an ninh nhất định nhưng dù sao thì nó vẫn khá an toàn.  Dữ liệu được giữ một cách toàn vẹn: Tin nhắn gửi từ chủ private key rất khó có thể bị giả mạo. Bởi vì nếu thay đổi tin nhắn thì giá trị hash cũng phải thay đổi theo. Những kẻ nghe lén trong mạng đương nhiên là có thể tìm cách đọc tin nhắn gốc và cả hash của nó. Nhưng hắn ta không thể thay đổi tin nhắn được vì hắn không có private key để sửa đổi chữ ký số cho phù hợp.  Chữ ký số không thể phủ nhận: Trong giao dịch, một gói tin kèm chữ ký số rất dễ dàng tìm ra được nguồn gốc của chữ ký đó. Bởi vì private key là bí mật và chỉ người chủ của nó mới có thể biết, họ không thể chối cãi rằng chữ ký này không phải do họ phát hành. Cũng tương tự trường hợp trên, hệ mã hóa RSA hay bất kỳ hệ mã hóa nào khác cũng đều có những vấn đề về an ninh nên việc này không thể đảm bảo tuyệt đối chính xác được. 1.4. Các vấn đề cần đặt ra về thực tế 1.4.1 Quá trình tạo khóa Việc tìm ra 2 số nguyên tố đủ lớn p và q thường được thực hiện bằng cách thử xác suất các số ngẫu nhiên có độ lớn phù hợp (dùng phép kiểm tra nguyên tố cho phép loại bỏ hầu hết các hợp số). Hai giá trị p và q còn cần được chọn không quá gần nhau để phòng trường hợp phân tích n bằng phương pháp phân tích Fermat.
  • 11. Trang 8 Nếu p-1 hoặc q-1 có thừa số nguyên tố nhỏ thì ncũng có thể dễ dàng bị phân tích và vì thế p và q cũng cần được thử để tránh khả năng này. Một điểm nữa cần nhấn mạnh là khóa bí mật d phải đủ lớn. Năm 1990, Wiener chỉ ra rằng nếu giá trị của p nằm trong khoảng q và 2q (khá phổ biến) và d < n1/4/3 thì có thể tìm ra được d từ n và e. Mặc dù e đã từng có giá trị là 3 nhưng hiện nay các số mũ nhỏ không còn được sử dụng do có thể tạo nên những lỗ hổng (đã đề cập ở phần chuyển đổi văn bản rõ). Giá trị thường dùng hiện nay là 65537 vì được xem là đủ lớn và cũng không quá lớn ảnh hưởng tới việc thực hiện hàm mũ. 1.4.2 Tốc độ Hình 1.4: Biểu đồ thời gian mã hóa của thuật toán RSA dựa vào độ lớn của key RSA có tốc độ thực hiện chậm hơn đáng kể so với DES và các thuật toán mã hóa đối xứng khác. Trên thực tế, Bob sử dụng một thuật toán mã hóa đối xứng nào đó để mã hóa văn bản cần gửi và chỉ sử dụng RSA để mã hóa khóa để giải mã (thông thường khóa ngắn hơn nhiều so với văn bản).
  • 12. Trang 9 Phương thức này cũng tạo ra những vấn đề an ninh mới. Một ví dụ là cần phải tạo ra khóa đối xứng thật sự ngẫu nhiên. Nếu không, kẻ tấn công (thường ký hiệu là Eve) sẽ bỏ qua RSA và tập trung vào việc đoán khóa đối xứng. 1.4.3 Phân phối khóa Cũng giống như các thuật toán mã hóa khác, cách thức phân phối khóa công khai là một trong những yếu tố quyết định đối với độ an toàn của RSA.  Quá trình phân phối khóa cần chống lại được tấn công ở giữa (man-in-the-middle attack). Các phương pháp chống lại dạng tấn công này thường dựa trên các chứng thực khóa công khai (digital certificate).  Các thành phần của hạ tầng khóa công khai (public key infrastructure - PKI).
  • 13. Trang 10 Chương 2: Lab Demo ứng dụng mã hóa RSA trên Android 2.1. Cài đặt  Môi trường soạn thảo chương trình: IDE Android Studio version 3.0.  Ngôn ngữ cài đặt: ngôn ngữ lập trình Java.  Hệ cơ sở dữ liệu: Firebase Google.  Môi trường chạy thử chương trình: giả lập Android Emulator API 22 có thiết lập kết nối mạng, máy Android version 6.0 có kết nối mạng 3G. 2.2. Tổng quan về hoạt động của phần mềm Hình 2.1: Sơ đồ hoạt động tổng quan của Apps.
  • 14. Trang 11 Hai thiết bị Android sẽ đóng vai trò gửi và nhận tin nhắn. Trong đó, thiết bị nhận tin nhắn (có nhiệm vụ giải mã) sẽ tạo khóa công khai và gửi nó lên cơ sở dữ liệu online của Firebase. Thiết bị gửi tin nhắn truy vấn lên cơ sở dữ liệu online của Firebase, nhận được khóa công khai và thực hiện mã hóa tin nhắn. Sau đó, tin nhắn được mã hóa sẽ đẩy lên server firebase. Máy người nhận sẽ nhận được tin nhắn, sử dụng khóa bí mật đã được tạo từ ban đầu để giải mã tin nhắn. 2.3. Giới thiệu về các mô đun của chương trình Hình 2.2: Đường dẫn của Project Apps. App Android sẽ có bốn class chính bao gồm như hình trên. Trong ngôn ngữ Java, việc sinh khóa hoàn toàn có thể được rút gọn bằng cách sử dụng các thư viện có sẵn.
  • 15. Trang 12 Hình 2.3: Các thư viện áp dụng cho mã hóa trong Android Bằng việc áp dụng các thư viện phong phú trong ngôn ngữ Java, ta tiết kiệm được thời gian và công sức trong việc tạo các mô đun mã hóa. Hình 2.3: Hàm sinh khóa công khai và khóa bí mật sử dụng Java. Khi khóa công khai được sinh và tin nhắn mã hóa được gửi đi, cơ sở dữ liệu của Firebase sẽ nhận được giá trị của chúng.
  • 16. Trang 13 Hình 2.4: Thông tin về khóa công khai và tin nhắn mã hóa lưu tại Firebase. Với mỗi phiên khóa công khai được sinh ra, cơ sở dữ liệu của Firebase được cập nhập thời gian thực.
  • 17. Trang 14 2.4. Thử nghiệm thực tế Hình 2.5: Màn hình lúc đầu khi khởi động App. Khi khởi động app, ta có hai lựa chọn vào phần Decrypt hoặc vào phần Encrypt. Trong đó phần Decrypt sẽ đóng vai trò làm người nhận tin nhắn, ngược lại, phần Encrypt sẽ làm thiết bị đóng vai trò gửi tin nhắn.
  • 18. Trang 15 Hình 2.6: Màn hình hiển thị tin nhắn nhận được và sinh khóa. Với thiết bị nhận, trên màn hình hiển thị sẽ có các Button để sinh và hiển thị các khóa. Các khóa này được sinh ra ngẫu nhiên theo mỗi tiến trình hoạt động.
  • 19. Trang 16 Hình 2.7: Giá trị khóa bí mật và khóa công khai khi sinh ra phiên.
  • 20. Trang 17 Hình 2.8: Giá trị các phiên Thiết bị gửi tin sẽ nhận được thông tin khóa công khai được gửi từ server xuống, nhấn vào Button Encrypt sẽ hiển thị được tin nhắn đã bị mã hóa. Sau đó có thể gửi đi được tin nhắn bị mã hóa. Tổng kết Việc ứng dụng mã hóa để đảm bảo an toàn thông tin là điều hết sức cần thiết. Trong ví dụ trên, bằng việc mã hóa tin nhắn và phân phối khóa công khai trong RSA, tính bí mật và toàn vẹn của thông tin được đảm bảo an toàn. Kẻ tấn công dù có thể đăng nhập vào cơ sở dữ liệu cloud web Firebase thì cũng chỉ có thể đọc được bản mã của tin nhắn. Ví dụ ứng dụng mã hóa RSA cơ bản trên Android, nhưng thể hiện được tầm quan trọng của việc đảm bảo an toàn thông tin cho người dùng.
  • 21. Trang 18 Danh mục tài liệu tham khảo [1] Chapter 10 – A Practical Introduction to Modern Encryption by Jean-Philippe Aumasson – No Starch Press - November 2017, 312 pp. [2] https://viblo.asia/p/he-ma-hoa-rsa-va-chu-ky-so-6J3ZgkgMZmB [3] https://sites.google.com/site/mobilesecuritylabware/3-data-location-privacy/lab- activity/cryptography/cryptography-mobile-labs/encryption-decryption/2-lab- activity/lab2-rsa-encryption-program-android-studio [4] https://www.tutorialspoint.com/firebase/