1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Nghiên cứu giải pháp bảo mật mạng 3g

79 29 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 79
Dung lượng 1,34 MB

Nội dung

1 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƢỜNG ĐẠI HỌC CÔNG NGHỆ VŨ BẢO TẠO NGHIÊN CỨU GIẢI PHÁP BẢO MẬT MẠNG 3G LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN HÀ NỘI - 2013 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƢỜNG ĐẠI HỌC CÔNG NGHỆ VŨ BẢO TẠO NGHIÊN CỨU GIẢI PHÁP BẢO MẬT MẠNG 3G Ngành: Công nghệ thông tin Chuyên ngành: Công nghệ phần mềm Mã số: 60.48.10 LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN NGƢỜI HƢỚNG DẪN KHOA HỌC: PGS.TS NGUYỄN HỮU NGỰ HÀ NỘI - 2013 MỤC LỤC CẢM ƠN LỜI CAM ĐOAN MỤC LỤC DANH MỤC CÁC TỪ VIẾT TẮT DANH MỤC CÁC BẢNG DANH MỤC CÁC HÌNH MỞ ĐẦU CHƢƠNG 1: HỆ THỐNG THÔNG TIN DI ĐỘNG 3G 1.1 1.1.1 Định nghĩa 3G 1.1.2 Lộ trình phát triển thơng tin di động lên 3G 1.1.4 Kiến trúc chung hệ thống thông tin di động 3G 1.1.5 Chuyển mạch kênh (CS), chuyển mạch gói (PS) 1.1.6 Các loại lƣu lƣợng dịch vụ đƣợc 3G WCDMA hỗ trợ 1.2.An ninh thông tin di động 1.2.1 Khái niệm an ninh an tồn thơng tin 1.2.2 Đánh giá vấn đề an toàn, bảo mật hệ thống 1.2.3 Các nguy an ninh an tồn mạng thơng tin di động 1.3.Kết luận CHƢƠNG 2: MÃ HĨA THƠNG TIN 2.1.Giới thiệu chung mật mã 2.1.1 Giới thiệu 2.1.2 Hệ thống mật mã 2.1.3 Phân loại hệ mật mã 2.2.Các hệ mật mã khóa đối xứng 2.3.Các hệ mật mã khóa cơng khai 2.3.1 Hệ mật mã RSA 2.3.2 Hệ mật đƣờng cong Elliptic 2.3.3 So sánh hai phƣơng pháp mã hóa RSA ECC 2.4.Kết luận CHƢƠNG 3: GIẢI PHÁP BẢO MẬT THÔNG TIN TRONG MẠNG 3G 3.1 Bảo mật thông tin di động 3G giới 3.1.1 Tổng quan bảo mật mạng 3G 3.1.2 Kiến trúc bảo mật mạng 3G 3.2.Hiện trạng mạng thông tin di động 3G Việt n 3.2.1 Tình hình triển khai mạng 3G Việt Nam 3.2.2 Thực trạng nguy an toàn mạng 3G Việt Nam 3.2.3 Giải pháp bảo mật thông tin di động 3G 3.3.Phân tích lựa chọn phƣơng pháp mã hóa thơng t 3.4.Các vấn đề bảo mật thoại mạng điện th 3.4.1 Giới thiệu mạng điện thoại IP 3.4.2 Giới thiệu giao thức SIP 3.4.3 Giao thức RTP 3.5.Phân tích thiết kế xây dựng phần mềm bảo m 3.5.1 Cơng nghệ lập trình ứng dụng 3.5.2 Kiến trúc tổng thể hệ thống 3.5.3 Mơ hình phân cấp chức hệ thống 3.5.4 Chức thiết lập kết nối 3.5.5 Chức quản trị khóa 3.5.6 Chức mã hóa giải mã liệu 3.5.7 Phát triển ứng dụng 3.5.8 Cài đặt hệ thống 3.6 Kết luận KẾT LUẬN HƢỚNG PHÁT TRIỂN ĐỀ TÀI TÀI LIỆU THAM KHẢO PHỤ LỤC MÃ NGUỒN MỘT SỐ MODULE CHÍNH TRONG CHƢƠNG TRÌNH 63 DANH MỤC CÁC TỪ VIẾT TẮT Từ viết tắt ATM BSC BTS CDMA CS GPRS GPS GSM HSPDA As Ba Ba Co Cir Ge Gl Gl Co Hi PLMN PS Ac Pu Pa PSTN Pu RAN RNC SMS Ra Ra Sh TDMA Tim UMTS Un WCDMA IMSI Wi Ac Int Ide MSISDN Mo EIR Eq Int IMEI AUC AV Ide Au Au FDMA Fre DSSS Di Fre FHSS THSS SIR Sp Tim Sig DANH MỤC CÁC BẢNG Bảng 1.1 Sự khác W-CDMA CDMA2000 Bảng 1.2 Phân loại dịch vụ 3G WDCMA UMTS Bảng 2.2 Bảng so sánh kích thƣớc khóa RSA ECC với mức độ an tồn Bảng 3.1 Mơ tả package class tƣơng ứng DANH MỤC CÁC HÌNH Hình 1.1 Lộ trình phát triển hệ thống thơng tin di động từ hệ đến hệ Hình 1.2 Kiến trúc tổng quát mạng di động kết hợp CS PS Hình 1.3 Chuyển mạch kênh (CS) chuyển mạch gói (PS) Hình 1.4 Đóng bao tháo bao cho gói IP q trình truyền tunnel Hình 1.5 Thiết lập kết nối tunnel chuyển mạch tunnel Hình 1.6 Các phƣơng thức công bị động Hình 1.7 Phần mềm bắt gói tin Ethereal Hình 1.8 Các phƣơng thức cơng chủ động Hình 1.9 Mơ tả q trình cơng DOS tầng liên kết liệu Hình 1.10 Mơ tả q trình công theo kiểu chèn ép Hình 1.11 Mơ tả q trình cơng theo kiểu thu hút Hình 2.1 Mơ hình mã hóa với khóa mã khóa giải giống Hình 2.2 Mơ hình mã hóa khóa đối xứng Hình 2.3 Mơ hình mã hóa khóa cơng khai Hình 2.4 Sơ đồ bƣớc thực mã hóa theo thuật tốn RSA Hình 2.5 Minh họa việc thực mã hóa giả mã theo thuật tốn RSA Hình 2.6 Đƣờng cong elliptic y2 = x3 - 3x +1 Hình 2.7 Phép cộng đƣờng cong elliptic Hình 2.8 So sánh mức độ bảo mật ECC với RSA / DSA Hình 3.1 Tính bảo mật mạng 3G Hình 3.2 Mơ hình cơng theo kiểu thăm dò Hình 3.3 Sự đa dạng cơng nghệ kết nối thoại thơng qua Internet Hình 3.3 Cấu trúc hệ thống SIP Hình 3.4 Cấu trúc tin SIP Hình 3.5 Kiến trúc tổng thể hệ thống Hình 3.6 Mơ hình phân cấp chức hệ thống Hình 3.7 Quá trình user đăng ký tới máy chủ SIP Hình 3.8 SIP Server tạo phiên làm việc cho user Hình 3.9 Minh họa q trình trao đổi khóa cơng khai Hình 3.10 Lƣu đồ giải thuật chức mã hóa Hình 3.11 Lƣu đồ giải thuật truyền liệu Hình 3.12 Lƣu đồ giải thuật nhận liệu Hình 3.13 Lƣu đồ giải thuật chức mã hóa Hình 3.14 Quản lý tài khoản SIP OfficeSIP Hình 3.15 Đăng nhập vào máy chủ FTP với tài khoản đƣợc cấp Hình 3.16 Cấu hình tài khoản SIP Hình 3.17 Kết việc kết nối tài khoản với máy chủ SIP thành cơng Hình 3.18 Nhập thông tin tài khoản ngƣời nhận Hình 3.19 Ngƣời có tài khoản 5554 thực gọi Hình 3.20 Hai bên thực gọi Hình 3.21 Hai bên sử dụng khóa cơng khai để mã hóa thơng tin Hình 3.22 Nội dung tệp user.xml lƣu khóa cơng khai tài khoản Hình 3.23 Minh họa việc mã hóa giải mã liệu dạng văn Hình 3.24 Nội dung văn đƣợc mã hóa tệp 5554.txt MỞ ĐẦU Hệ thống thông tin di động Việt Nam đƣợc bắt đầu với công nghệ di động GSM, hệ 2G đơn giản, với dịch vụ kèm nhƣ truyền liệu, fax, SMS (tin nhắn)… Để đáp ứng đƣợc dịch vụ truyền thông đa phƣơng tiện phạm vi tồn cầu đồng thời đảm bảo tính kinh tế, hệ thống GSM đƣợc nâng cấp bƣớc lên hệ ba - 3G (The Third Generation) Với cơng nghệ 3G, nhà cung cấp mang đến cho khách hàng dịch vụ đa phƣơng tiện nhƣ: âm nhạc chất lƣợng cao; hình ảnh video chất lƣợng truyền hình số; Email; Video streaming; High-ends games; dịch vụ định vị toàn cầu (GPS) Tuy nhiên, để khách hàng yên tâm tin tƣởng sử dụng dịch vụ vấn đề an ninh, an tồn thơng tin hệ thống thơng tin di động hệ ba phải đƣợc đặc biệt quan tâm Bởi liệu truyền mạng 3G không đơn thoại, mà liệu đa phƣơng tiện Nếu vấn đề an tồn bảo mật thơng tin khơng đƣợc đảm bảo gây thiệt hại vơ to lớn, việc “Nghiên cứu giải pháp bảo mật mạng 3G” thực cần thiết, để từ đƣa giải pháp phù hợp với việc đề xuất xây dựng ứng dụng nhằm đảm bảo an tồn thơng tin bảo mật cho mạng 3G Với lý luận văn tiến hành phân tích, nghiên cứu cơng nảy sinh gây nguy hại nghiêm trọng mà từ đề xuất giải pháp bảo mật mạng 3G Do vấn đề bảo mật hệ thống thông tin di động 3G rộng phức tạp, tác giả chƣa có đủ điều kiện để nghiên cứu sâu rộng toàn vấn đề Nội dung luận văn bao gồm chƣơng:  Chƣơng 1: Hệ thống thông tin di động 3G  Chƣơng 2: Mã hóa thơng tin  Chƣơng 3: Giải pháp bảo mật thông tin mạng 3G Tuy nhiên vấn đề mà luận văn đề cập lĩnh vực tƣơng đối rộng, nỗ lực hết sức, cố gắng vận dụng kiến thức, khả năng, điều kiện, nội dung luận văn chắn cịn nhiều thiếu sót hạn chế Rất mong nhận đƣợc góp ý quý báu thầy cô giáo, đồng nghiệp để luận văn đƣợc hoàn thiện Hà Nội, ngày 22 tháng 03 năm 2013 Tác giả Vũ Bảo Tạo CHƢƠNG 1: HỆ THỐNG THÔNG TIN DI ĐỘNG 3G 1.1 Tổng quan hệ thống thông tin di động 3G 1.1.1 Định nghĩa 3G 3G thuật ngữ dùng để hệ thống thông tin di động hệ thứ (Third Generation) Mạng 3G (Third - generation technology) hệ thứ ba chuẩn công nghệ điện thoại di động, cho phép truyền liệu thoại liệu thoại (tải liệu, gửi email, tin nhắn nhanh, hình ảnh ) Ở hệ thứ hệ thống thơng tin di động có xu hồ nhập thành tiêu chuẩn có khả phục vụ tốc độ bit lên đến Mbit/s Để phân biệt với hệ thống thông tin di động băng hẹp nay, hệ thống thông tin di động hệ gọi hệ thống thông tin di động băng rộng 3G cung cấp hai hệ thống chuyển mạch gói chuyển mạch kênh Điểm mạnh công nghệ so với công nghệ 2G 2.5G cho phép truyền, nhận liệu, âm thanh, hình ảnh chất lƣợng cao cho thuê bao cố định thuê bao di chuyển tốc độ khác 1.1.2 Lộ trình phát triển thơng tin di động lên 3G Để tiến tới hệ ba từ hệ hai phải trải qua giai đoạn trung gian [4], giai đoạn gọi hệ 2,5 Hình 1.1 Lộ trình phát triển hệ thống thơng tin di động từ hệ đến hệ 1.1.3 Các chuẩn công nghệ di động thuộc 3G 3G bao gồm chuẩn chính: W-CDMA, CDMA2000 1.1.3.1 W-CDMA (Wideband Code Division Multiple Access) Là chuẩn liên lạc di động 3G song hành với với chuẩn GSM W-CDMA công nghệ tảng cho công nghệ 3G khác nhƣ UMTS FOMA W-CDMA 57 Hình 3.18 Nhập thơng tin tài khoản ngƣời nhận - Tiến hành thực gọi tới tài khoản 5556 Hình 3.19 Ngƣời có tài khoản 5554 thực gọi - Hai bên thực gọi Hình 3.20 Hai bên thực gọi - Nội dung gọi đƣợc mã hóa khóa cơng khai ngƣời đàm thoại với 58 Hình 3.21 Hai bên sử dụng khóa cơng khai để mã hóa thơng tin - Truy cập vào máy chủ TFP với tài khoản đƣợc cấp ta xem nội dung file user.xml lƣu khóa cơng khai dùng chung cho tất ngƣời dùng Hình 3.22 Nội dung tệp user.xml lƣu khóa cơng khai tài khoản b) Chức mã hóa, giải mã liệu dạng văn (text) Khi kết nối thành công, ngƣời gọi ngƣời nhận trao đổi với liệu dạng văn (text), liệu ngƣời gửi đƣợc mã hóa lƣu lên tệp 5554.txt Ngƣời nhận thực đọc liệu từ tệp 5554.txt giải mã 59 Hình 3.23 Minh họa việc mã hóa giải mã liệu dạng văn - Xem nội dung file 5554.txt lƣu nội dung văn đƣợc mã hóa Hình 3.24 Nội dung văn đƣợc mã hóa tệp 5554.txt 3.6 Kết luận Chƣơng trình bày tổng quan vấn đề bảo mật mạng di động 3G giới Giới thiệu khái quát tình hình triển khai mạng 3G Việt Nam Phân tích nguy an ninh an tồn mạng lựa chọn giải pháp bảo mật tầng ứng dụng mạng thông tin 3G Phần cuối chƣơng 3, tác giả trình bày chức hệ thống bảo mật, thuật toán tƣơng ứng cách thức cài đặt hệ thống, minh họa chức phần mềm bảo mật thoại 60 KẾT LUẬN Trong trình thực đề tài, tác giả tiếp thu đƣợc kiến thức công nghệ 3G, kiến thức liên quan đến vấn đề bảo mật thông tin, đe dọa, cơng mạng, hàm, thuật tốn đƣợc sử dụng để mã hóa tồn vẹn thơng tin, đặc biệt bảo mật mạng 3G Chỉ đƣợc nguy gây an tồn thơng tin di động sử dụng cơng nghệ 3G Từ thấy rằng, việc thực bảo mật thông tin mạng điện thoại di động 3G cần thiết đặc biệt nhu cầu bảo mật thông tin cá nhân ngƣời sử dụng + Những điểm đạt đƣợc luận văn là: Trình bày tổng qt cơng nghệ 3G, kiến trúc mạng 3G Tổng quát hóa vấn đề chung an tồn vào bảo mật thơng tin mạng di động 3G Tổng hợp phƣơng pháp mã hóa thơng tin, ƣu nhƣợc điểm sử dụng phƣơng pháp mã hóa khác Đi sâu vào nghiên cứu lý thuyết hệ mật đƣờng cong Eliptic ứng dụng ECC vào việc mã hóa liệu, trao đổi khóa, sở cho việc lựa chọn phƣơng pháp mã hóa bảo mật thông tin di động 3G Nghiên cứu trạng mạng thông tin 3G Việt Nam, thực trạng nguy an toàn mạng 3G, việc tác giả lựa chọn nghiên cứu tảng cơng nghệ lập trình ứng dụng hệ điều hành Android khâu quan trọng việc xây dựng phần mềm bảo mật thoại + Những điểm tồn luận văn là: Phần thực sản phẩm phần mềm dừng lại việc mô máy ảo q trình trao đổi khóa hai ngƣời gọi, q trình mã hóa giải mã thơng tin hai ngƣời gọi liên lạc với Tuy nhiên vấn đề mà luận văn đề cập lĩnh vực tƣơng đối rộng, nỗ lực hết sức, cố gắng vận dụng kiến thức, khả năng, điều kiện, nội dung luận văn chắn nhiều thiếu sót hạn chế Rất mong nhận đƣợc góp ý q báu thầy giáo, đồng nghiệp để luận văn đƣợc hoàn thiện HƢỚNG PHÁT TRIỂN ĐỀ TÀI Triển khai nghiên cứu xây dựng ứng dụng bảo mật mạng di động 3G nhƣ call video, tích hợp PKI thiết bị di động, xây dựng ứng dụng số hệ điều hành di động khác nhƣ Windows Phone Cần tiếp tục nghiên cứu để làm rõ giải pháp bảo đảm an toàn bảo mật cho hệ thống thơng tin di động 3G, sở phát triển hệ thống thực tế 61 TÀI LIỆU THAM KHẢO Tiếng Việt Trƣờng Đại học Hàng Hải (2008), Giáo trình An tồn Bảo mật thơng tin, Hải Phòng, tr.4-5, Nguyễn Tiến Ban (2007), Kỹ thuật viễn thơng, Học viện cơng nghệ Bƣu viễn thơng Hà Nội, tr.93-96 Nguyễn Phạm Anh Dũng (2009), Bài giảng giới thiệu công nghệ 3G WCDMA UMTS, Học viện Cơng nghệ Bƣu Viễn thơng Hà Nội, tr.7-10,11-17 Trần Văn Dũng (2007), Giáo trình An tồn Bảo mật thông tin, Đại học Giao thông vận tải Hà Nội, tr.14-24, 77-79, 94-96 5.Phan Thị Thu Hiền (2006), Hệ mật đƣờng cong elliptic, đồ án tốt nghiệp đại học, Trƣờng Đại học Dân lập Hải Phòng, tr.15-17 Nguyễn Thị Tuyết Mai (2012), Nghiên cứu giải pháp an toàn bảo mật cho hệ thống mạng lõi 3G ứng dụng cho Vinaphone , luận văn thạc sĩ, Học viện Công Nghệ BCVT, Hà Nội, tr.28-31 Phạm Văn Quỳnh (2010), An ninh 3G UMTS, đồ án tốt nghiệp đại học, Học viện cơng nghệ Bƣu viễn thông Hà Nội, tr.4 Trần Minh Triết (2005), Thuật tốn mã hóa ứng dụng, Trƣờng Đại học Khoa học Tự nhiên, Đại học Quốc gia thành phố Hồ Chí Minh, tr16-17, 21-23, 198-200, 213216 Vũ Anh Tuấn (2009), Giải pháp nâng cao độ an ninh thông tin mạng LAN không dây chuẩn IEEE 802.11ii, luận văn thạc sĩ, Đại học Thái Nguyên, tr.18-22, 25-26 10 Nguyễn Khanh Văn (2000), Mật mã An tồn Thơng tin, Đại học Bách khoa Hà Nội, tr.7-12 Tiếng Anh 11 Keiji Tachikwa (2002), W-CDMA Mobile Communications System, John Wiley & Sons LTD, pp.28-31, 245-250 12 Prentice Hall (1998), Cryptography and Network Security Principles and Practice, pp.165-170, 400-416 13 Wiley(2005) UMTS Networks Architecture Mobility and Services, pp.22-27, 59-63, 207-211,294-297 14.http://vinaphone.com.vn/news/16625/-Thang-10-ra-mat-cac-dich-vudien-thoai-di-dong-3G-dau-tien-tai-Viet-Nam http://xahoithongtin.com.vn/20090814085239480p0c112/mobif one-se-cung-cap-dich-vu-3g-vao-thang-122009.htm 15 62 16 http://vnn.vietnamnet.vn/cntt/2009/04/840952/ http://mobifone3g.com.vn/index.aspx? s=NDETAIL&AID=155&pages=2 17 18.http://www.pcworld.com.vn/articles/kinh-doanh/an-toanthong-tin/2010/09/1220868/bao-mat-tren-mang-3g/ http://voer.edu.vn/module/khoa-hoc-va-cong-nghe/bo-giao-thucrtp/rtcp.html 19 20.http://sandbox.yoyogames.com/extras/user/cv/san2/170/326170/T%C3%AC m_hi%E1%BB%83u_v%E1%BB%81_giao_th%E1%BB%A9c_SIP.doc 63 PHỤ LỤC MÃ NGUỒN MỘT SỐ MODULE CHÍNH TRONG CHƢƠNG TRÌNH Định nghĩa đường cong Eliptic package taovb.ecc.elliptic; import java.io.*; import java.math.BigInteger; public class EllipticCurve { private BigInteger a, b, p, order; private ECPoint generator; private BigInteger ppodbf; private int pointcmpsize; private String name; public static final BigInteger COEFA = new BigInteger("4"); public static final BigInteger COEFB = new BigInteger("27"); public static final int PRIMESECURITY = 500; public EllipticCurve(BigInteger a, BigInteger b, BigInteger p) throws InsecureCurveException { this.a = a; this.b = b; this.p = p; if (!p.isProbablePrime(PRIMESECURITY)) { } if (isSingular()) throw new InsecureCurveException(InsecureCurveException.SINGULAR, this); byte[] pb = p.toByteArray(); if(pb[0] == 0) pointcmpsize = pb.length; else pointcmpsize = pb.length + 1; name = ""; } public EllipticCurve(ECParameters ecp) throws InsecureCurveException { this(ecp.a(),ecp.b(),ecp.p()); order = ecp.order(); name = ecp.toString(); try{ generator = new ECPoint(this, ecp.generatorX(), ecp.generatorY()); generator.fastCache(); } catch (NotOnMotherException e){ System.out.println("Error defining EllipticCurve: generator not on mother!"); } } public void writeCurve(DataOutputStream output) throws IOException { byte[] ab = a.toByteArray(); output.writeInt(ab.length); output.write(ab); byte[] bb = b.toByteArray(); output.writeInt(bb.length); output.write(bb); byte[] pb = p.toByteArray(); output.writeInt(pb.length); output.write(pb); byte[] ob = order.toByteArray(); output.writeInt(ob.length); output.write(ob); 64 } byte[] gb = generator.compress(); output.writeInt(gb.length); output.write(gb); byte[] ppb = getPPODBF().toByteArray(); output.writeInt(ppb.length); output.write(ppb); output.writeInt(pointcmpsize); output.writeUTF(name); protected EllipticCurve(DataInputStream input) throws IOException { byte[] ab = new byte[input.readInt()]; input.read(ab); a = new BigInteger(ab); byte[] bb = new byte[input.readInt()]; input.read(bb); b = new BigInteger(bb); byte[] pb = new byte[input.readInt()]; input.read(pb); p = new BigInteger(pb); byte[] ob = new byte[input.readInt()]; input.read(ob); order = new BigInteger(ob); byte[] gb = new byte[input.readInt()]; input.read(gb); generator = new ECPoint(gb, this); byte[] ppb = new byte[input.readInt()]; input.read(ppb); ppodbf = new BigInteger(ppb); pointcmpsize = input.readInt(); name = input.readUTF(); generator.fastCache(); } public boolean isSingular(){ BigInteger aa = a.pow(3); BigInteger bb = b.pow(2); BigInteger result = ((aa.multiply(COEFA)).add(bb.multiply(COEFB) ) ).mod(p); if ( result.compareTo(BigInteger.ZERO) == ) return true; else return false; } public BigInteger calculateOrder(){ return null; } public ECPoint calculateGenerator(){ return null; } public boolean onCurve(ECPoint q){ if (q.isZero()) return true; BigInteger y_square = (q.gety()).modPow(new BigInteger("2"),p); BigInteger x_cube = (q.getx()).modPow(new BigInteger("3"),p); BigInteger x = q.getx(); BigInteger dum = ((x_cube.add(a.multiply(x))).add(b)).mod(p); if (y_square.compareTo(dum) == 0) return true; else return false; 65 } public BigInteger getOrder(){ return order; } public ECPoint getZero(){ return new ECPoint(this); } public BigInteger geta(){ return a; } public BigInteger getb(){ return b; } public BigInteger getp(){ return p; } public int getPCS() { return pointcmpsize; } public ECPoint getGenerator(){ return generator; } public String toString(){ if (name == null) return "y^2 = x^3 + " + a + "x + " + b + " ( mod " + p + " )"; else if (name.equals("")) return "y^2 = x^3 + " + a + "x + " + b + " ( mod " + p + " )"; else return name; } public BigInteger getPPODBF(){ if(ppodbf == null) { ppodbf = p.add(BigInteger.ONE).shiftRight(2); } return ppodbf; } } Lớp tạo khóa package taovb.ecc.elliptic; import java.math.BigInteger; import java.io.*; public class ECKey implements Key { protected boolean secret; protected BigInteger sk; protected ECPoint beta; protected EllipticCurve mother; public ECKey(EllipticCurve ec) { mother = ec; secret = true; sk = new BigInteger(ec.getp().bitLength() + 17,Rand.om); if (mother.getOrder() != null) sk = sk.mod(mother.getOrder()); beta = (mother.getGenerator()).multiply(sk); beta.fastCache(); } public String toString() { if (secret) return ( "Secret key: "+ sk +" "+ beta +" "+ mother); else return("Public key:"+ beta +" "+ mother); } 66 public boolean isPublic() { return (!secret); } public void writeKey(OutputStream out) throws IOException { DataOutputStream output = new DataOutputStream(out); mother.writeCurve(output); output.writeBoolean(secret); if(secret) { byte[] skb = sk.toByteArray(); output.writeInt(skb.length); output.write(skb); } byte[] betab = beta.compress(); output.writeInt(betab.length); output.write(betab); } public Key readKey(InputStream in) throws IOException { DataInputStream input = new DataInputStream(in); ECKey k = new ECKey(new EllipticCurve(input)); k.secret = input.readBoolean(); if(k.secret) { byte[] skb = new byte[input.readInt()]; input.read(skb); k.sk = new BigInteger(skb); } byte[] betab = new byte[input.readInt()]; input.read(betab); k.beta = new ECPoint(betab, k.mother); return k; } public void setSecretKey(BigInteger x) { sk = x; } public ECKey getPublic() { ECKey temp = new ECKey(mother); ((ECKey)temp).beta = beta; ((ECKey)temp).sk = BigInteger.ZERO; ((ECKey)temp).secret = false; System.gc(); return temp; } public void setPublic(ECPoint beta) { this.beta = beta; } public void setPublic(BigInteger x, BigInteger y) { try { beta = new ECPoint(beta.getMother(), x, y); } catch (NotOnMotherException e) { e.printStackTrace(); } } public BigInteger getSK() { return sk; } public ECPoint getBeta() { return beta; } } Tạo khóa Private Public package taovb.ecc.elliptic; public class CryptElliptic { 67 private EllipticCurve ec; private ECCryptoSystem cs; private ECKey sk; private ECKey pk; private ECPoint publicPoint; public CryptElliptic() { try { ec = new EllipticCurve(new secp256r1()); cs = new ECCryptoSystem(ec); sk = cs.generateKey(); pk = sk.getPublic(); publicPoint = pk.getBeta(); } catch (InsecureCurveException e) { System.out.println("TestCryptoStreams: " + e); } } public ECCryptoSystem getCS() { return cs; } public ECKey getSK() { return sk; } public ECKey getPK() { return pk; } public ECPoint getPublicPoint() { return publicPoint; } } Cập nhật khóa cơng khai lên FTP Server BigInteger pKeyX = myPublicPointKey.getx(); BigInteger pKeyY = myPublicPointKey.gety(); System.out.println(phone_name + ": " + getString(R.string.connect_success)); List userPublicKeyList = ftpUtils.readFileXml(); List upKeyList = new ArrayList(); boolean exists = false; for (UserPublicKey item: userPublicKeyList) { if (item.getUsername().equals(phone_name)) { item.setPublicKeyX(pKeyX.toString()); item.setPublicKeyY(pKeyY.toString()); exists = true; } upKeyList.add(item); } if (exists == false) { UserPublicKey item = new UserPublicKey(); item.setUsername(phone_name); item.setPublicKeyX(pKeyX.toString()); item.setPublicKeyY(pKeyY.toString()); upKeyList.add(item); } if (ftpUtils.writeFileXML(upKeyList)) { System.out.println(getString(R.string.update_success)); } else { System.out.println(getString(R.string.update_not_success)); } Nhận khóa cơng khai 68 void get_public_key(AutoCompleteTextView view) { String target = view.getText().toString(); if (m_AlertDlg != null) { m_AlertDlg.cancel(); } if (target.length() > 0) { int acong = target.indexOf("@"); if (acong != -1) { contact_name = target.substring(0, acong); } else { contact_name = target; } contactPublicKey = getContactPublicKey(contact_name); taovb_demo.setText(contactPublicKey.getBeta().toString()); } } private ECKey getContactPublicKey(String contact_name) { return ftpUtils.getContactPublicKey(cryptElliptic, contact_name); } Mã hóa package org.sipdroid.sipua.ui; import java.io.UnsupportedEncodingException; import org.sipdroid.sipua.R; import taovb.ecc.elliptic.ECKey; import taovb.ftp.client.FTPUtils; import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.view.View; import android.view.Window; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class EncryptElliptic extends Activity { private FTPUtils ftpUtils; private boolean connected; @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.encrypt_elliptic); final EditText crypto_send_to_address = (EditText) findViewById(R.id.crypto_send_to_address); final EditText crypto_key = (EditText) findViewById(R.id.crypto_key); final EditText crypto_content = (EditText) findViewById(R.id.crypto_content); final Button crypto_button_get_key = (Button) findViewById(R.id.crypto_button_get_key); final Button crypto_button_send = (Button) findViewById(R.id.crypto_button_send); final Context context = getApplicationContext(); final int duration = Toast.LENGTH_SHORT; 69 ftpUtils = new FTPUtils("14.160.91.174", "taovb","123456", "/user", "user.xml"); connected = ftpUtils.connectFTP(); if(!connected) { CharSequence text = "Không kết nối tới FTP Server"; Toast toast = Toast.makeText(context, text, duration); toast.show(); } crypto_button_get_key.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { if (crypto_send_to_address.getText().toString().equals("")) { CharSequence text = "Bạn phải nhập địa người nhận"; Toast toast = Toast.makeText(context, text, duration); toast.show(); } else { Sipdroid.contactPublicKey = getContactPublicKey(getName(crypto_send_to_address.getText().toString())); crypto_key.setText(Sipdroid.contactPublicKey.getBeta().toString()); } } }); crypto_button_send.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { String test = crypto_content.getText().toString(); byte[] test1 = null; try { test1 = test.getBytes("UTF-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } ftpUtils.uploadFile("5554.txt", test1, Sipdroid.cryptElliptic.getCS(), Sipdroid.contactPublicKey); CharSequence text = "Giai ma cong"; Toast toast = Toast.makeText(context, text, duration); toast.show(); } }); } private String getName(String address) { String contact_name = ""; int acong = address.indexOf("@"); if (acong != -1) { contact_name = address.substring(0, acong); } else { contact_name = address; } return contact_name; } private ECKey getContactPublicKey(String contact_name) { return Sipdroid.ftpUtils.getContactPublicKey(Sipdroid.cryptElliptic, contact_name); } } Giải mã package org.sipdroid.sipua.ui; 70 import org.sipdroid.sipua.R; import taovb.ftp.client.FTPUtils; import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.view.View; import android.view.Window; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class DecryptElliptic extends Activity { private FTPUtils ftpUtils; private boolean connected; @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.decrypt_elliptic); final EditText crypto_file_address = (EditText) findViewById(R.id.crypto_file_address); final EditText crypto_decrypt_content = (EditText) findViewById(R.id.crypto_decrypt_content); final Button crypto_button_decrypt = (Button) findViewById(R.id.crypto_button_decrypt); final Context context = getApplicationContext(); final int duration = Toast.LENGTH_SHORT; crypto_button_decrypt.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { String file_name = crypto_file_address.getText().toString(); if (file_name.equals("")) { CharSequence text = "Bạn phải nhập tên tệp"; Toast toast = Toast.makeText(context, text, duration); toast.show(); } else { ftpUtils = new FTPUtils("14.160.91.174", "taovb","123456", "/user", file_name); connected = ftpUtils.connectFTP(); if (connected) { String decrypt_content = ftpUtils.decryptFile(Sipdroid.cryptElliptic.getCS(), Sipdroid.cryptElliptic.getSK()); crypto_decrypt_content.setText(decrypt_content); CharSequence text = "Giải mã thành công"; Toast toast = Toast.makeText(context, text, duration); toast.show(); } else { CharSequence text = "Kết nối không thành công"; Toast toast = Toast.makeText(context, text, duration); toast.show(); } } } }); } } ... giải pháp bảo mật, phân tích xây dựng ứng dụng bảo mật thơng tin di động 3G 38 CHƢƠNG 3: GIẢI PHÁP BẢO MẬT THƠNG TIN TRONG MẠNG 3G 3.1 Bảo mật thơng tin di động 3G giới 3.1.1 Tổng quan bảo mật. .. 3G gồm bốn nhóm tính bảo mật sau: Bảo mật truy cập mạng: Thiết lập tính bảo mật để cung cấp cho ngƣời dùng truy cập bảo mật tới dịch vụ mạng 3G loại bỏ công  39 Bảo mật mạng lƣới: Thiết lập... bảo mật mạng 3G 3.1.2 Kiến trúc bảo mật mạng 3G 3.2.Hiện trạng mạng thông tin di động 3G Việt n 3.2.1 Tình hình triển khai mạng 3G Việt Nam 3.2.2 Thực trạng nguy an toàn mạng

Ngày đăng: 11/11/2020, 21:44

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w