Hệ mật mã khóa bất đối xứng mình thấy được dùng nhiều nhất là RSA Hệ mật sẽ bao gồm: Bản rõ plaintext-M: bản tin được sinh ra bởi bên gửi Bản mật ciphertext-C: bản tin che giấu thông
Trang 1NHÓM 12: Nguyễn Tiến Phúc
Đỗ Trọng Phú Phan Nguyên Phạm Hoàng Nam Ngô Hùng Phương Phạm Ngọc Nghĩa
I Tìm hiểu về mã hóa bất đối xứng.
Ở hệ mật này thay vì nguời dùng dùng chung 1 khóa như ở hệ mật mã khóa đối xứng thì ở đây sẽ dùng 1 cặp khóa có tên là public key và private key
Hệ mật mã khóa bất đối xứng mình thấy được dùng nhiều nhất là RSA
Hệ mật sẽ bao gồm:
Bản rõ (plaintext-M): bản tin được sinh ra bởi bên gửi
Bản mật (ciphertext-C): bản tin che giấu thông tin của bản rõ, được gửi tới bên nhận qua một kênh không bí mật
Khóa: Bên nhận có 1 cặp khóa:
o Khóa công khai (Kub) : công bố cho tất cả mọi người biết (kể cả hacker)
Trang 2o Khóa riêng (Krb) : bên nhận giữ bí mật, không chia sẻ cho bất kỳ ai
Mã hóa (encrypt-E): C = E(Kub, M)
Giải mã (decrypt): M = D(Krb, C) = D(Krb, E(Kub, M))
Yêu cầu đối với cặp khóa (Kub, Krb) là:
Hoàn toàn ngẫu nhiên
Có quan hệ về mặt toán học 1-1
Nếu chỉ có giá trị của Kub không thể tính được Krb
Krb phải được giữ mật hoàn toàn
Cơ chế hoạt động
Người gửi(A) gửi thông tin đã được mã hóa bằng khóa công khai (Kub) của người nhận(B) thông qua kênh truyền tin không bí mật
Người nhận(B) nhận được thông tin đó sẽ giải mã bằng khóa riêng (Krb) của mình
Hacker cũng sẽ biết khóa công khai (Kub) của B tuy nhiên do không có khóa riêng (Krb) nên Hacker không thể xem được thông tin gửi
Ưu điểm của hệ mật này đó là
Không cần chia sẻ khóa mã hóa(khóa công khai) một cách bí mật => Dễ dàng ứng dụng trong các hệ thống mở
Khóa giải mã(khóa riêng) chỉ có B biết => An toàn hơn, có thể xác thực nguồn gốc thông tin
n phần tử chỉ cần n cặp khóa
Nhược điểm:
Chưa có kênh an toàn để chia sẻ khóa => Khả năng bị tấn công dạng tấn công người đứng giữa(man in the middle attack )
Tấn công người đứng giữa: kẻ tấn công lợi dụng việc phân phối khóa công khai
để thay đổi khóa công khai Sau khi đã giả mạo được khóa công khai, kẻ tấn công đứng ở giữa 2 bên để nhận các gói tin, giải mã rồi lại mã hóa với khóa đúng và gửi đến nơi nhận để tránh bị phát hiện
Trang 3Dạng tấn công kiểu này có thể phòng ngừa bằng các phương pháp Trao đổi khóa Diffie-Hellman nhằm đảm bảo nhận thực người gửi và toàn vẹn thông tin
II Tìm hiểu về thư viện mã hóa với ngôn ngữ C#.
1 Mã hóa một chiều và mã hóa hai chiều
1.1.
Mã hóa 1 chiều
Ưu điểm
Mã hóa 1 chiều được sử dụng rộng rãi để mã hóa mật khẩu, đảm bảo tính bảo mật cao của dữ liệu Với mã hóa 1 chiều, dữ liệu được mã hóa trở thành một chuỗi dữ liệu đầu ra bất khả giải mã, không thể giải mã trở lại thành dữ liệu gốc Mã hóa 1 chiều cũng đảm bảo tính duy nhất của dữ liệu, đảm bảo rằng cùng một dữ liệu đầu vào luôn cho ra cùng một kết quả đầu ra
Nhược điểm
Mã hóa 1 chiều không cho phép giải mã dữ liệu trở lại thành dữ liệu gốc, điều này đôi khi là không tiện lợi cho người dùng Nếu bạn muốn sử dụng dữ liệu đã được
mã hóa để thực hiện các tính năng phức tạp, bạn sẽ cần giải mã dữ liệu đó bằng một phương pháp khác
Trang 4Mã hóa 2 chiều
Ưu điểm
Mã hóa 2 chiều cho phép giải mã dữ liệu ngược lại thành dữ liệu gốc, giúp cho người dùng dễ dàng sử dụng dữ liệu mà không phải giải mã bằng tay Ngoài ra, mã hóa 2 chiều cũng cho phép người dùng thực hiện các tính năng phức tạp như mã hóa dữ liệu với mật khẩu
Nhược điểm
Mã hóa 2 chiều không an toàn cho việc mã hóa mật khẩu và thông tin nhạy cảm
Vì dữ liệu có thể được giải mã trở lại, bất kỳ ai có quyền truy cập vào mã hóa dữ liệu đó đều có thể truy cập được dữ liệu gốc Hơn nữa, các thuật toán mã hóa 2 chiều không phải là an toàn tuyệt đối, vì vậy dữ liệu của bạn có thể bị tấn công bởi các hacker chuyên nghiệp
2 Mã hóa mật khẩu một chiều Bcrypt trong C#
Trang 5BCrypt là một thư viện mã hóa dùng để mã hóa mật khẩu hoặc các thông tin nhạy
cảm khác trong ứng dụng BCrypt được sử dụng phổ biến trong nhiều ngôn ngữ lập trình, trong đó bao gồm cả C#
BCrypt cung cấp phương thức mã hóa 1 chiều (one-way hashing), có nghĩa là mật khẩu hoặc thông tin nhập vào sẽ được mã hóa thành chuỗi ký tự không thể giải mã ngược trở lại Tức là, người dùng không thể phục hồi mật khẩu ban đầu từ chuỗi
mã hóa được lưu trữ trong cơ sở dữ liệu
Một trong những ưu điểm lớn của BCrypt là khả năng đối phó với các cuộc tấn công từ điển (dictionary attacks) hoặc tấn công brute-force (thử tất cả các mật khẩu
có thể) Điều này được đảm bảo bởi tính chất của thuật toán mã hóa BCrypt, với việc sử dụng hàm salt (muối) và việc thêm vào một độ khó tính toán
(computational complexity) vào quá trình mã hóa
Hàm salt được sử dụng để thêm dữ liệu ngẫu nhiên vào chuỗi đầu vào trước khi mã hóa Điều này giúp tăng tính bảo mật bằng cách đảm bảo rằng mỗi mật khẩu có thể
mã hóa thành chuỗi khác nhau Do đó, các tấn công từ điển sẽ không hiệu quả vì các chuỗi mã hóa của các mật khẩu khác nhau sẽ không giống nhau
Ngoài ra, BCrypt còn sử dụng một giá trị “cost factor” để tăng độ phức tạp tính toán trong quá trình mã hóa Điều này đảm bảo rằng các tấn công brute-force sẽ trở nên rất khó khăn vì nó sẽ yêu cầu nhiều thời gian tính toán để thử hết các mật khẩu
có thể
III Tìm hiểu về lập trình Android Application với Xamarin.
1.Các bước chuẩn bị:
Phần mềm Microsoft Visual Studio 2012 Professional hoặc cao hơn
Phần mềm Xamarin
2.Các b ư ớc cài đặt
Trang 61 Cài đặt Microsoft Visual Studio
2 Cài đặt Xamarin
Chạy tập tin XamarinInstaller.exe để tiến hành cài đặt Xamarin; khi màn hình xuất hiện -> chọn Continue
Trang 7Sau khi trình cài đặt phát hiện những thành phần cần thiết -> chọn Next
Lựa chọn thư mục chứa Android SDK hoặc để mặc định -> chọn Next
Trang 8Tại màn hình kế tiếp -> chọn Next -> chờ trình cài đặt tải và cài đặt các thành phần mềm cần thiết
Trang 9Sau khi cài đặt hoàn thành -> chọn Close
Trang 103 Tạo một ứng dụng đơn giản
Sau khi chúng ta đã cài đặt tất cả các phần mềm cần thiết (Microsoft Visual Studio, Xamarin for Visual Studio), chúng ta khởi động Microsoft Visual Studio và tạo một solution, cụ thể như sau:
Tại màn hình Start Page -> chọn New Project
Trang 11Chọn Android -> chọn Blank App (Android); nhập tên; lựa chọn nơi chứa ->
chọn OK
Một project được tạo như hình bên dưới
Trang 12Build và run ứng dụng
Ứng dụng được hiển thị trên thiết bị giả lập (Android Emulator)