Hệ thống bao gồm những chức năng chính sau (hình 3.6)
Hình 3.6. Mô hình phân cấp chức năng của hệ thống 3.5.4. Chức năng thiết lập kết nối.
Bảo mật thoại
Thiết lập kết nối Quản trị khóa Truyền nhận tín hiệu âm thanh
Mã hóa và giải mã dữ liệu
Tạo khóa công khai/bí mật
Trao đổi khóa công khai
Mỗi lần thực hiện cuộc gọi, các user đều phải thực đăng ký tới máy chủ SIP (hình 3.7) và sau đó SIP Server sẽ tạo phiên làm việc cho các user để thực hiện cuộc gọi (hình 3.8)
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 các user 3.5.5. Chức năng quản trị khóa
Chức năng quản trị khóa đƣợc thực hiện qua 2 quá trình: quá trình tạo khóa và quá trình trao đổi khóa.
Mỗi lần thiết lập cuộc gọi, giữa hai bên thu nhận sẽ phải tạo ra cặp khóa bí mật/công khai của mình và thực hiện quá trình trao đổi khóa cho nhau. Vì thế ta cần xây dựng chức năng quản trị khóa với các quá trình sau:
Để mã hóa và giải mã, chúng ta xây dựng một đƣờng cong Elliptic trên trƣờng hữu hạn, đƣờng cong có dạng: (E) y2
= x3 + ax + b. Với các tham số a, b và điểm cơ sở P(x, y) E đƣợc lựa chọn từ trƣớc.
Ví dụ: Đƣờng cong Elliptic với khóa có kích thƣớc 256 bit
a = 115792089210356248762697446949407573530086143415290314195533631308867097853948 b = 41058363725152142129326129780047268409114441015993725554835256314039467401291 x = 48439561293906451759052585252797914202762949526041747995844080717082404635286 y = 36134250956749795798585127919587881956611106672985015071877198253568414405109
Khóa bí mật của ngƣời sử dụng đƣợc tạo ra một cách ngẫu nhiên sử dụng phƣơng thức tạo số ngẫu nhiên. Khóa công khai đƣợc tạo bằng cách bội k lần điểm cơ sở P(x, y) pk(x, y) = k * P(x, y) Ví dụ: Khóa có kích thƣớc 256 bit – sk, pk(x, y) sk = 111809679588281292028419865137726866135454716029273445329238669915148149018647 x = 107317504824797556370614387232103655718868186078211666892634154570499075964029 y = 19760838829061322597720907248771478187002657505342052311764641955791339620234
Quá trình trao đổi khóa
Quá trình trao đổi khóa công khai đƣợc minh họa nhƣ hình 3.9.
Hình 3.9. Minh họa quá trình trao đổi khóa công khai
Để trao đổi khóa giữa hai ngƣời dùng, ta sử dụng thuật toán trao đổi khóa cho mã hóa đƣờng cong elliptic dựa trên thuật toán RSA. Khóa công khai của ngƣời nhận sẽ đƣợc ngƣời gửi sử dụng để mã hóa dữ liệu, khi đó, ngƣời nhận sẽ sử dụng khóa bí mật của mình để giải mã dữ liệu nhận đƣợc từ ngƣời gửi.
Khi khởi tạo thành công cặp khóa, ngƣời dùng sẽ thực hiện đăng ký khóa bằng phƣơng pháp truy cập tới một tệp dữ liệu dùng chung. Dữ liệu đƣợc lƣu bao gồm tên ngƣời dùng và khóa công khai của ngƣời dùng đó. Ngƣời dùng thực hiện kết nối và truy cập tới tệp đó sử dụng giao thức FTP.
Việc sử dụng mỗi cặp khóa ngẫu nhiên trong mỗi phiên kết nối của cuộc gọi thoại đảm bảo dữ liệu đƣợc mã hóa một cách an toàn hơn khi sử dụng khóa cố định. Khi đó, trƣớc mỗi cuộc gọi đi, chƣơng trình sẽ thực hiện kết nối tới nơi lƣu trữ khóa công khai và nhận khóa công khai của ngƣời nhận cuộc gọi. Nếu thành công, chƣơng trình sẽ thiết lập kết nối cuộc gọi thoại tới ngƣời nhận. Đồng thời, mỗi khi nhận đƣợc
Ngƣời gọi A Máy chủ FTP Ngƣời gọi B
Kết nối, truy cập Kết nối, truy cập
yêu cầu kết nối, chƣơng trình sẽ thực hiện kết nối tới lƣu trữ khóa công khai và nhận khóa công khai của ngƣời gọi.
3.5.6. Chức năng mã hóa và giải mã dữ liệu
Chức năng này chúng ta sẽ đề cập đến việc mã hóa và giải mã dữ liệu âm thanh sử dụng hệ mật đƣờng cong elliptic, với việc mã hóa sử dụng khóa có kích thƣớc 112, 160, 256 bit.
Chức năng mã hóa đƣợc kích hoạt sau khi chức năng kết nối thiết lập thành công kết nối giữa ngƣời gọi tới SIP Server và giữa SIP Server với ngƣời nhận. Công việc của chức năng mã hóa là gọi tới các phƣơng thức mã hóa tiếng nói sử dụng phƣơng pháp mã hóa đƣờng cong elliptic (hình 3.10). Dữ liệu đƣợc chia thành các gói (RTP packet) sau khi mã hóa sẽ đƣợc gửi đi, sử dụng giao thức truyền nhận RTP (hình 3.11).
Hình 3.10. Lƣu đồ giải thuật chức năng mã hóa
Buffer
Running
Mã hóa sử dụng đƣờng cong Elliptic
Kết thúc
Lấy một gói dữ liệu từ buffer
Chép gói dữ liệu vào buffer
Sai
Hình 3.11. Lƣu đồ giải thuật truyền dữ liệu
Chức năng giải mã đƣợc kích hoạt đƣợc kích hoạt tƣơng tự nhƣ chức năng mã hóa. Chƣơng trình sẽ sử dụng giao thức RTP để nhận dữ liệu (hình 3.12). Sau đó chức năng giải mã sẽ xác định phƣơng pháp giải mã tƣơng ứng với phƣơng pháp mã hóa đƣợc sử dụng ở bên ngƣời gửi. Sau khi dữ liệu đƣợc giải mã, dữ liệu đƣợc chuyển vào buffer phát tiếng nói (hình 3.13)
Hình 3.12. Lƣu đồ giải thuật nhận dữ liệu
Bắt đầu
Có gói tin chƣa nhận
Dùng giao thức RTP
Lấy gói tin
Kích hoạt chức năng giải mã Kết thúc Sai Đúng Bắt đầu Buffer truyền có dữ liệu
Lấy một gói dữ liệu từ Buffer truyền
Kích hoạt chức năng mã hóa
Truyền theo giao thức RTP
Kết thúc
Sai
Hình 3.13. Lƣu đồ giải thuật chức năng mã hóa 3.5.7. Phát triển ứng dụng
Do nhu cầu sử dụng VoIP rất lớn nên hiện nay đã có nhiều nhà phát triển các ứng dụng để gọi điện thoại trên nền VoIP, nổi bật trong đó có Sipdroid của nhà phát triển i-p-tel GmbH, ngƣời sử dụng có thể tải ứng dụng về và cài đặt theo địa chỉ:
http://vi.4androidapps.net/developer/i-p-tel-gmbh
Tuy nhiên các cuộc trao đổi thoại qua ứng dụng này chƣa đảm bảo tính năng bảo mật, có thể dẫn đến nguy cơ mất an ninh an toàn thông tin khi các Sip phone thực hiện giao dịch với nhau.
Xuất phát từ nhiệm vụ của đề tài luận văn, tác giả đã vận dụng những kiến thức đã tìm hiểu, nghiên cứu trong quá trình làm đề tài để tích hợp thêm tính năng bảo mật cho ứng dụng.
Trƣớc hết chúng ta vào googlecode để tải mã nguồn của ứng dụng theo địa chỉ
http://sipdroid.googlecode.com/svn/trunk/ , để làm đƣợc điều này thì chúng ta phải check out bằng SVN (Subversion) thông qua bộ cài đặt TortoiseSVN.
Công việc còn lại là chúng ta đi xây dựng các package bao gồm các class đáp ứng các chức năng của hệ thống nhƣ đã trình bày ở mục 3.5.3.
Bảng 3.1. Mô tả các package và các class tƣơng ứng.
Buffer
Running
Giải mã sử dụng đƣờng cong Elliptic
Kết thúc
Lấy một gói dữ liệu từ buffer
Chép gói dữ liệu vào buffer
Sai
package class Ý nghĩa
taovb.ecc.elliptic
EllipticCurve Lớp định nghĩa đường cong Elliptic
CryptElliptic Lớp tạo khóa
ECkey Lớp tạo khóa private và public
taovb.ftp.client FTPUtils Lớp tương tác với Server
org.sipdroid.sipua.ui
sipdroid Lớp cập nhật khóa công khai lên ftp Server và nhận khóa công khai
EncryptElliptic Lớp thực hiện mã hóa
DecryptElliptic Lớp thực hiện giải mã
3.5.8. Cài đặt hệ thống
Để triển khai mô hình, hệ thống bao gồm các thành phần:
Hai thiết bị di động (điện thoại) cài đặt chƣơng trình và một máy tính cài SIP server.
Sử dụng một FTP Server để phân phối khóa công khai của ngƣời dùng.
Kết nối vật lý LAN, Internet...
3.5.8.1. Cài đặt máy chủ SIP
Cài đặt máy chủ SIP sử dụng phần mềm OfficeSIP Server (tải về tại http://www.officesip.com), giao diện nhƣ hình . Khi có một kết nối thành công tới tài khoản SIP, biểu tƣợng kết nối sẽ đƣợc chuyển sang màu xanh.
Hình 3.14. Quản lý tài khoản SIP trong OfficeSIP
Chƣơng trình sử dụng một máy chủ FTP để lƣu trữ tệp khóa công khai dùng chung cho tất cả ngƣời dùng. Mỗi ngƣời dùng sẽ đƣợc cấp tài khoản mặc định và quyền đọc và ghi tệp trên máy chủ.
Tệp khóa công khai đƣợc xây dựng theo định dạng XML (Ngôn ngữ đánh dấu mở rộng), mỗi khi chƣơng trình khởi tạo khóa, sẽ thực hiện thêm (hoặc sửa) vào tệp.
Hình 3.15. Đăng nhập vào máy chủ FTP với tài khoản đƣợc cấp
3.5.8.3. Cài đặt chương trình
Chƣơng trình ứng dụng đƣợc cài đặt thử nghiệm trên Emulator của Android
Khi chƣơng trình ứng dụng đƣợc mở, ngƣời sử dụng nhập thông tin tài khoản SIP trong phần cấu hình.
Nếu tài khoản đúng, một kết nối sẽ đƣợc thực hiện tới máy chủ SIP, biểu tƣợng kết nối sẽ chuyển sang màu xanh.
Hình 3.17. Kết quả việc kết nối tài khoản với máy chủ SIP thành công
a) Chức năng trao đổi khóa
Khi kết nối thành công, ngƣời dùng có thể thực hiện cuộc gọi, khi kết nối đƣợc tới ngƣời nhận cuộc gọi, khóa công khai của ngƣời gọi và ngƣời nhận đƣợc trao đổi với nhau.
Ví dụ:
- Ngƣời gọi có số 5554 gọi sẽ thực hiện cuộc gọi tới ngƣời nhận số 5556 bằng cách nhập thông tin tài khoản ngƣời gọi.
Hình 3.18. Nhập thông tin tài khoản ngƣời nhận
- Tiến hành thực hiện cuộc gọi tới tài khoản 5556
Hình 3.19. Ngƣời có tài khoản 5554 thực hiện cuộc gọi
- Hai bên thực hiện cuộc gọi
Hình 3.20. Hai bên thực hiện cuộc gọi
- Nội dung cuộc gọi sẽ đƣợc mã hóa bằng khóa công khai của ngƣời đàm thoại với mình.
Hình 3.21. Hai bên sử dụng khóa công khai của nhau để 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 có thể xem nội dung file
user.xml lƣu khóa công khai dùng chung cho tất cả ngƣời dùng.
Hình 3.22. Nội dung tệp user.xml lƣu khóa công khai của các tài khoản
b) Chức năng mã hóa, giải mã dữ liệu dạng văn bản (text)
Khi kết nối thành công, ngƣời gọi và ngƣời nhận có thể trao đổi với nhau dữ liệu dạng văn bản (text), dữ liệu ngƣời gửi đƣợc mã hóa và lƣu lên tệp 5554.txt. Ngƣời nhận thực hiện đọc dữ liệu từ tệp 5554.txt giải mã.
Hình 3.23. Minh họa việc mã hóa và giải mã dữ liệu dạng văn bản
- Xem nội dung file 5554.txt lƣu nội dung văn bản đã đƣợc mã hóa.
Hình 3.24. Nội dung văn bản đƣợc mã hóa trong tệp 5554.txt 3.6. Kết luận
Chƣơng 3 đã trình bày tổng quan về vấn đề bảo mật trong mạng di động 3G trên thế giới. Giới thiệu khái quát tình hình triển khai mạng 3G tại Việt Nam. Phân tích nguy cơ mất an ninh an toàn trong mạng và lựa chọn giải pháp bảo mật trên tầng ứng dụng trong mạng thông tin 3G. Phần cuối chƣơng 3, tác giả trình bày các chức năng chính của hệ thống bảo mật, các thuật toán tƣơng ứng và cách thức cài đặt hệ thống, minh họa các chức năng chính của phần mềm bảo mật thoại.
KẾT LUẬN
Trong quá trình thực hiện đề tài, tác giả đã tiếp thu đƣợc những kiến thức cơ bản về công nghệ 3G, các kiến thức liên quan đến vấn đề bảo mật thông tin, về các đe dọa, tấn công mạng, các hàm, thuật toán đƣợc sử dụng để mã hóa và toàn vẹn thông tin, đặc biệt là bảo mật trong mạng 3G. Chỉ ra đƣợc những nguy cơ gây mất an toàn thông tin di động sử dụng công nghệ 3G. Từ đó thấy rằng, việc thực hiện bảo mật thông tin mạng điện thoại di động 3G là rất cần thiết đặc biệt là nhu cầu bảo mật thông tin cá nhân ngƣời sử dụng.
+ Những điểm đạt đƣợc của luận văn là:
- Trình bày tổng quát về công nghệ 3G, kiến trúc mạng 3G. Tổng quát hóa những vấn đề chung về an toàn vào bảo mật thông tin trong mạng di động 3G.
- Tổng hợp các phƣơng pháp mã hóa thông tin, ƣu nhƣợc điểm khi sử dụng các phƣơng pháp mã hóa khác nhau. Đi sâu vào nghiên cứu lý thuyết hệ mật đƣờng cong Eliptic và ứng dụng ECC vào việc mã hóa dữ liệu, trao đổi khóa, là cơ sở cho việc lựa chọn phƣơng pháp mã hóa và bảo mật thông tin di động 3G.
- Nghiên cứu hiện trạng mạng thông tin 3G tại Việt Nam, thực trạng và nguy cơ mất an toàn trong mạng 3G, việc tác giả lựa chọn và nghiên cứu nền tảng công nghệ lập trình ứng dụng trên hệ điều hành Android là một khâu rất quan trọng trong việc xây dựng phần mềm bảo mật thoại.
+ Những điểm tồn tại của luận văn là:
- Phần thực hiện sản phẩm phần mềm mới dừng lại ở việc mô phỏng trên máy ảo quá trình trao đổi khóa giữa hai ngƣời gọi, quá trình mã hóa và giải mã thông tin khi hai ngƣời gọi liên lạc với nhau.
- Tuy nhiên các vấn đề mà luận văn đề cập trên lĩnh vực tƣơng đối rộng, mặc dù đã nỗ lực hết sức, cố gắng vận dụng kiến thức, mọi khả năng, mọi điều kiện, nội dung luận văn chắc chắn còn nhiều thiếu sót và hạn chế. Rất mong nhận đƣợc những góp ý quý báu của các thầy cô giáo, các đồng nghiệp để luận văn đƣợc hoàn thiện hơ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 trên mạng di động 3G nhƣ call video, tích hợp PKI trên thiết bị di động, xây dựng ứng dụng trên một 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õ hơn các giải pháp bảo đảm an toàn và bảo mật cho hệ thống thông tin di động 3G, trên cơ sở đó phát triển các hệ thống thực tế.
TÀI LIỆU THAM KHẢO Tiếng Việt
1. Trƣờng Đại học Hàng Hải (2008), Giáo trình An toàn và Bảo mật thông tin, Hải
Phòng, tr.4-5,
2. Nguyễn Tiến Ban (2007), Kỹ thuật viễn thông, Học viện công nghệ Bƣu chính viễn thông Hà Nội, tr.93-96.
3. 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 chính Viễn thông Hà Nội, tr.7-10,11-17.
4. Trần Văn Dũng (2007), Giáo trình An toàn và 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.
6. Nguyễn Thị Tuyết Mai (2012), Nghiên cứu các giải pháp an toàn bảo mật cho hệ
thống mạng lõi của 3G và ứ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.
7. Phạm Văn Quỳnh (2010), An ninh trong 3G UMTS, đồ án tốt nghiệp đại học, Học
viện công nghệ Bƣu chính viễn thông Hà Nội, tr.4.
8. Trần Minh Triết (2005), Thuật toán và 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, 213- 216.
9. Vũ Anh Tuấn (2009), Giải pháp nâng cao độ an ninh thông tin trong 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ã và An toà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-vu-dien- thoai-di-dong-3G-dau-tien-tai-Viet-Nam
15. http://xahoithongtin.com.vn/20090814085239480p0c112/mobifone-se-cung- cap-dich-vu-3g-vao-thang-122009.htm
16. http://vnn.vietnamnet.vn/cntt/2009/04/840952/ 17. http://mobifone3g.com.vn/index.aspx?s=NDETAIL&AID=155&pages=2 18.http://www.pcworld.com.vn/articles/kinh-doanh/an-toan-thong- tin/2010/09/1220868/bao-mat-tren-mang-3g/ 19. http://voer.edu.vn/module/khoa-hoc-va-cong-nghe/bo-giao-thuc-rtp/rtcp.html 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
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;
publicclass EllipticCurve {
private BigInteger a, b, p, order; private ECPoint generator; private BigInteger ppodbf; privateint pointcmpsize; private String name;
publicstaticfinal BigInteger COEFA = new BigInteger("4"); publicstaticfinal BigInteger COEFB = new BigInteger("27"); publicstaticfinalintPRIMESECURITY = 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()) thrownew
InsecureCurveException(InsecureCurveException.SINGULAR, this);
byte[] pb = p.toByteArray();
if(pb[0] == 0) pointcmpsize = pb.length;
else pointcmpsize = pb.length + 1;