3.5.1. Công nghệ lập trình ứng dụng
- Ngôn ngữ lập trình: Có nhiều ngôn ngữ lập trình cho điện thoại di động, một trong những ngôn ngữ thông dụng nhất và đƣợc hỗ trợ nhiều nhất bởi các hãng điện thoại di động đó là Java, bởi vì Java có những ƣu điểm:
Là ngôn ngữ thông dụng cho việc phát triển ứng dụng phần mềm trên điện thoại di động
Đảm bảo tính an ninh an toàn cho ứng dụng phần mềm đƣợc cài đặt trên điện thoại do Java đã đƣợc trang bị công cụ chống dịch ngƣợc. Điều này đảm bảo ứng dụng phần mềm khi cài đặt sẽ không bị dịch ngƣợc để lấy mật khẩu hoặc thông tin cá nhân.
- Hệ điều hành: Theo cùng xu hƣớng sử dụng mã nguồn mở trong xây dựng
ứng dụng. Chƣơng trình phần mềm bảo mật đƣợc viết trên hệ điều hành Android (Google).
3.5.2. Kiến trúc tổng thể hệ thống
Xây dựng hệ thống thực hiện cuộc gọi thoại sử dụng giao thức SIP, gồm một số quy luật và nguyên tắc mà các thiết bị trên mạng có thể kết nối và làm việc với nhau.
Giao thức sử dụng các kết nối vật lý của mạng để truyền dữ liệu. Chúng ta sẽ đi xây dựng một hệ thống với mô hình kiến trúc nhƣ sau:
Hình 3.5. Kiến trúc tổng thể hệ thống
Quy trình diễn ra trong hệ thống nhƣ sau:
- Khi đã thiết lập cuộc gọi, chƣơng trình bảo mật thoại thực hiện trao đổi khóa công khai giữa hai ngƣời gọi, khóa này sẽ đƣợc sử dụng để giải mã các gói thông tin mã hóa nhận đƣợc từ ngƣời gửi. Việc trao đổi khóa công khai giữa hai ngƣời đƣợc thực hiện thông qua việc đọc một tệp XML trên máy chủ FTP.
- Trong quá trình thoại, các khối dữ liệu âm thanh đƣợc mã hóa sử dụng hệ mật mã đƣờng cong elliptic, sau đó đóng gói và truyền thông tin tới ngƣời nhận. Các gói đƣợc truyền và gửi tới phía ngƣời nhận sẽ thực hiện giải mã thành các khối dữ liệu ban đầu, cuối cùng là phát ra âm thanh thoại.
- Khi một trong hai bên ngắt cuộc gọi thì hệ thống kết thúc cuộc thoại.
Ứng dụng đƣợc xây bởi các hàm API (Application Programming Interface) của Android (Google hỗ trợ và cung cấp). Việc tạo lập kết nối truyền nhận thông tin đƣợc xây dựng trên các hàm API.
3.5.3. Mô hình phân cấp chức năng của hệ thống
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.