giải pháp bảo mật tin nhắn SMS
Trang 1MÃ HOÁ TIN NHẮN SMS SỬ DỤNG THUẬT TOÁN AES TRÊN MÔI TRƯỜNG
ANDROID.
TỔNG QUAN
.Giải pháp mã hoá là một trong những giải pháp quan trọng nhất để đảm bảo tính bí mật của dữ liệu khi nó được truyền trên mạng Có nhiều thuật toán mã khác nhau như AES, DES, RC4 … được sử dụng để mã hoá dữ liệu khi nó được truyền trên mạng Tuy nhiên trong các thuật toán trên thì thuật toán AES được sử dụng nhiều nhất Chúng ta phát triển ứng dụng trên nền Android cho phép người dung mã hoá tin nhắn (messege) trước khi nó được truyền trên mạng Chúng ta
sử dụng thuật toán AES cho việc mã hoá và giải mã tin nhắn khi chúng được truyền trên mạng Ứng dụng này có thể chạy trên bất kỳ thiết bị nào sử dụng hệ điều hành Android Ứng dụng đảm bảo an toàn cho tin nhắn truyền trên mạng, với tốc độ mã nhanh và độ an toàn cao Thuật toán
mã này đủ mạnh để gây khó khăn cho hacker khi họ muốn khôi phục lại các tin nhắn được mã hoá Tin nhắn được mã hoá bởi thuật toán mã AES này cho phép chống lại tấn công dạng Brute-Force và các dạng tấn công khác
I GIỚI THIỆU
Ứng dụng được phát triển nhằm đảm bảo an toàn cho tin nhắn (SMS) khi nó được truyền theo phương thức điểm – điểm (end to end) Thuật toán được sử dụng ở đây là thuật toán mã khối AES Ứng dụng này được phát triển cho môi trường Android Bài báo này sẽ đi sâu phân tích cách thức làm việc của SMS, thuật toán mã khối AES và cách sử dụng thuật toán mã này vào việc phát triển ứng dụng để mã hoá tin nhắn SMS nhằm đảm bảo an toàn cho tin nhắn SMS khi
nó được truyền trên mạng
1.1. Sự cần thiết phải đảm bảo an toàn cho dữ liệu khi truyền trên mạng công cộng
An toàn thong tin có nghĩa là chúng ta phải bảo vệ thông tin và hệ thống thong tin khỏi các truy cập trái phép, sử dụng, tiết lộ thông tin, làm gián đoạn thông tin, sửa đổi thông tin, kiểm tra thông tin một cách bất hợp pháp, ghi âm lại thông tin khi truyền trên được truyền một cách bất hợp pháp hoặc phá huỷ thông tin
Đảm bảo tính riêng tư trong các tương tác cá nhân là mong muốn của tất cả người dùng trên mạng
Mã hoá là một giải pháp để đảm bảo tính riêng tư cho người dùng Nó được sử dụng để đảm bảo một số mục đích sau: [5] tin nhắn SMS hiện được sử dụng rộng rãi như một công cụ trong kinh doanh: đảm bảo an toàn cho tin nhắn trở thành mối quan tâm lớn của các công ty
và khách hành của họ Vị vậy nhu cầu mã hoá tin nhắn SMS để đảm bảo an toàn cho các giao dịch trên mạng là vô cùng cần thiết
1.2. Khảo sát
gần đây xu hướng đảm bảo an ninh cho thiết bị di động đang được đẩy mạnh trong các doanh nghiệp cung cấp dịch vụ di động Trong báo cáo của IDC trong năm 2010 lần đầu tiên doanh số bán điện thoại thông minh đã vượt qua doanh số bán máy tính cá nhân Đứng trước
Trang 2xu thế này các tổ chức đang gia tăng việc áp dụng chính sách BYOD (bring - your -own device) cho các thiết bị Theo báo cáo của hãng nghiên cứu J.Gold Associetes khoảng 25% dến 35% các doanh nghiệp đang áp dụng chính sách BYOD, và họ hy vọng việc áp dụng chính sách này sẽ tăng lên thành 50% trong hai năm tới Điều này sẽ mang đến lợi ích rất lớn trong việc phát triển kinh doanh của doanh nghiệp
Tuy nhiên lợi thế cạnh tranh và lợi ích do mạng di động mang lại có thể biến mất nếu điện thoại thông minh và máy tính bảng không được bảo vệ đầy đủ để chống lại các nguy cơ an ninh đe doạ đến vấn đề bảo mật cho thiết bị di động Trong khi thị trường di động vẫn tiếp tục phát triển một cách nhanh chóng, các tổ chức CNTT xác định vấn đề an inh là một trong những mối quan tâm lớn nhất cảu họ đối với việc mở rộng tính năng của môi trường di động
vị vậy Các kỹ thuật mã hoá khác nhau đã được sử dụng
Mã hoá đã được quân đội và các cơ quan chính phủ sử dụng từ lâu để đảm bảo an toàn cho thông tin liên lạc Hiện nay mã hoá đã được sử dụng trong việc bảo một thông tin ở các hệ thống thông tin dân sự Ví dụ, Trong báo cáo của Viện an toàn máy tính trong năm 2007, 71% các công ty được khảo sát sử dụng phương pháp mã hoá để bảo mật dữ liệu của họ khi
nó được truyền trên mạng và 53% sử dụng mã hoá để bảo mật sữ liệu được lưu trữ
Mã hoá cũng được sử dụng để bảo vệ dữ liệu "ở phần còn lại" Ví dụ: các tệp dữ liệu trên máy tính và các thiết bị lưu trữ khác (như thẻ nhớ USB) Trong những năm gần đây, nhiều
sữ liệu bí mật như dữ liệu cá nhân của khách hàng đã bị đánh cắp thông qua việc đánh mất hoặc các máy tính cá nhân bị đánh cắp hoặc sao lưu dữ liệu Mã hoá các tệp dữ liệu giúp bảo
vệ người dùng khi các giải pháp bảo vệ vật lý bị thất bại
Năm 2010 6.1 nghìn tỷ tin nhắm đã được gửi: tính ra có tới 192,tin nhắn SMS được gửi đi mỗi giây SMS trở thành nghành công nghiệp thương mại có giá trị cực lớn, trị giá khoảng
81 triệu đô trên toàn cầu kể từ năm 2006 Giá trị bình quân của mỗi tin nhắn trên toàn cầu là 0.11 $, trong khi các mạng di động tính phí khi kết nối giữa các mạng di động khác nhau ít nhất là 0.04$ Ngành công nghiệp tin nhắn phát triển nhanh như vậy và cũng dẽ dàng bị tấn công đẻ khai thác các điểm yếu Vì vậy vấn đề mã hoá tin nhắn SMS trước khi được gửi đi ngày càng cấp bách
Nhiều thuật toán mã và giãi mã khác nhau đã được đưa ra Trong đó thuật toán mã AES được xem là thuật toán tối ưu nhất
AES yêu cầu không gian bộ nhớ RAM không quá lớn và có tốc độ mã hoá và giải mã nhanh Tốc độ xử lý yêu cầu trên bộ vi xử lý Pentium của thuật toán mã AES là 18 xung nhịp trên một byte tương đương với tốc độ xử lý 11Mib/s cho bộ xử lý 200 MHz Đây là lý do vì sao chúng tôi chọn thuật toán AES cho việc mã hoá và giải mã tin
có rất ít ứng dụng mã hoá tin nhắn trên Google Play sử dụng thuật toán mã AES Chúng tôi xây dựng ứng dụng của mình dựa trên việc xem xét một cách cẩn trọng nhiều yếu tố khác nhằm mục đích tạo ra nhiều lợi ích cho người sử dụng Với dung lượng nhỏ hơn 200Kb giúp cho ứng dụng hoạt động nhanh hơn nó cũng cung cấp chức năng như conversation view, Inbox, Draft, Backup and restore, tất cả các tính năng mà một ứng dụng tin nhắn SMS chuẩn cần có lợi thế lớn nhất của ứng dụng này là nó là một ứng dụng đơn giản, dễ hiểu, và dễ sử
Trang 3dụng Có giao diện người dùng đơn giản, kích thước nhỏ, chức năng mã hoá và giải mã hoạt động hiệu quả
II DỊCH VỤ TIN NHẮN SMS
SMS là một dịch vụ tin nhắn, hiểu một cách đơn giản hơn nó là một phương pháp giao tiếp giữa
2 điện thoại hoặc giữa máy tính với một điện thoại hay một thiết bị kết nối mạng nào đó thông qua một đoạn văn bản “short” ở đây dùng để chỉ chỉ kích thước tối đa của tin nhắn Tin nhắn chỉ chứa tối đa 160 kí tự alphabet (kí tự, số, hoặc biểu tượng trong bảng kí tự alphabet) với các bảng
kí tự khác ví dụ tiếng trung kích thước tối đa của tin nhán là 70 kí tự
Hình 1: Mô hình truyền tin nhắn SMS 2.1 Nguyên lý hoạt động của SMS
Mặc dù SMS là dịch vụ dành cho điện thoại di động nhưng nó có thể hoạt động với bất kì hệ thống nào chấp nhận thẻ SIM được gọi là thẻ thong minh ( smartcard) , nó có CPU, EEPROM
và các mạch điện
2.1.1 Trạm thu phát - BTS
BTS viết tắt cho Base transceiver station trạm thu phát BTS là một thiết bị truyền thông không dây gửi thiết bị người dùng (UE) và mạng UE là các thiết bị như điện thoại di đông, điện thoại WLL, máy tính có kết nối không dây, thiết bị WIFi, WiMAX
2.1.2 Trung tâm chuyển mạch di động - MSC
MSC - Mobile switching center -Trung tâm chuyển mạch di đông MSC () là nút cung cấp dịch
vụ vận chuyển cho GSM/CDMA, chịu trách nhiệm định tuyến các cuộc gọi và SMS cũng như các dịch vụ khác ( chẳng hạn cuọc họi hội nghị truyền hình, FAX, và chuyển mạch dữ liệu)
Trang 4các MSC thiết lập và giải phóng các kết nối điểm - điểm (end to end), xử lý các yêu cầu giao tiếp
di động và điện thoại bàn trong suốt cuộc gọi và theo dõi các tài khoản thực hiện cuộc gọi theo thời gian thực
2.1.3 Trung tâm tin nhắ SMS - SMSC
Khi tin nhắn SMS được truyền đi từ một điện thoại di động, tin nhắn sẽ được tiếp nhận bởi trung tâm tin nhắn của nhà cung cấp dịch vụ SMS (SMSC), trung tâm này sẽ tìm địa chỉ đích để gửi tin nhắn đến, và sau đó gửi tin nhắn này đến điện thoại đích
SMSC là trung tâm tin nhắn và nó đã được cài đặt lên mạng lõi (core Networks) của nàh cung cấp dịch vụ bên cạnh việc chuyển tiếp tin nhắn, SMSC cũng hoạt động với vai trò của thiết bị lưu trữ tạm thời các tin nhắn vì vậy, nếu một điện thoại đích không hoạt động, SMS sẽ lưu lại tin nhắn và sau đó sẽ gửi tin nhắn đi khi điện thoại hoạt động trởi lại Ngoài ra SMSC cũng thông báo cho người gửi là tin nhắn đã được gửi thành công hay không Tuy nhiên SMSC không thể lưu tin nhắn trong một thời gian dài do dung lượng bộ nhớ là có hạn Trong khi gửi tin nhắn SMS, người gửi tin nhắn và SMSC đâng kết nối Vì vậy, nếu điện thoại cảu người nhận đang tắt trở lại trạng thái hoạt động bình thường, SMSC sẽ thông báo đến người gửi rằng thông báo đã được gửi thành công
THIẾT KẾ MÔ HÌNH MÃ HOÁ
Lựa chọn ngôn ngữ lập trình cho điện thoại di động
Mã hoá tin nhắn SMS được xây dựng theo thuật toán mã hoá đối xứng AES Ứng dụng được xây dựng sử dụng ngôn ngữ lập trình Java của hãng Sun Microsystem Hầu hết điện thoại di động đều hỗ trợ ngôn ngữ lập trình này
Mô hình thiết kế
Mô hình mã hoá SMS được thiết kế như là một thành phần trong hệ thống GSM Bất kỳ một tin nhắn nào khi được gửi qua trung tâm SMS (SMSC), sẽ không được chuyển trực tiếp tới nơi nhận
mà nó sẽ được lưu trên SMSC sau đó được chuyển qua MSC, MSC đóng vai trò quan trọng trong việc định tuyến cho tin nhắn, dựa vào các thông tin được cung cấp bởi HLR và VLR
Trang 5Hình: Mô hình kiến trúc của hệ thống mã hoá tin nhắn SMS Ứng dụng mã hoá tin nhắn SMS chỉ làm việc với tin nhắn, tin nhắn được mã hoá ngay bước đầu tin, sau đó được ký sử dụng chữ kí điện tử ở bước thứ hai, và bước cuối cùng là gửi tin nhắn
Hình : Mô hình mã hoá SMS
III THUẬT TOÁN MÃ AES
AES là thuật toán mã hóa được Mỹ đánh giá là chuẩn TOP SECRET vào tháng 6 năm 2003 ( Chuẩn cao nhất )
AES chỉ làm việc với các khối dữ liệu (đầu vào và đầu ra) 128 bít và khóa có độ dài 128, 192
hoặc 256 bít
Mỗi khối dữ liệu 128 bit đầu vào được chia thành 16 byte (mỗi byte 8 bit),có thể xếp thành 4 cột, mỗi cột 4 phần tử hay là một ma trận 4x4 của các byte,nó được gọi là ma trận trạng thái, hay vắn
Trang 6tắt là trạng thái Trong quá trình thực hiện thuật toán các toán tử tác động để biến đổi ma trận trạng thái này
Hình 2: Ma trận trạng thái Quá trình mã hóa gồm 4 bước sau:
3.1 Bước SubBytes
Các byte được thế thông qua bảng tra S-Box Đây chính là quá trình phi tuyến của thuật toán Hộp S-box này được tạo ra từ một phép biến đổi khá nghịch trong trường hữu hạn GF (28) có tính chất phi tuyến Để chống lại các tấn công dựa trên các đặc tính đại số, hộp S-box này được tạo nên bằng cách kết hợp phép nghịch đảo với một phép biến đổi affine khả nghịch Hộp S-box này cũng được chọn để tránh các điểm bất động (fixed point)
3.2 Bước ShiftRows
Các hàng được dịch vòng một số bước nhất định Đối với AES, hàng đầu được giữ nguyên Mỗi byte của hàng thứ 2 được dịch vòng trái một vị trí Tương tự, các hàng thứ 3 và 4 được dịch vòng
2 và 3 vị trí Do vậy, mỗi cột khối đầu ra của bước này sẽ bao gồm các byte ở đủ 4 cột khối đầu vào Đối với Rijndael với độ dài khối khác nhau thì số vị trí dịch chuyển cũng khác nhau
3.3 Bước MixColumns
Bốn byte trong từng cột được kết hợp lại theo một phép biến đổi tuyến tính khả nghịch Mỗi khối
4 byte đầu vào sẽ cho một khối 4 byte ở đầu ra với tính chất là mỗi byte ở đầu vào đều ảnh hưởng tới cả 4 byte đầu ra Cùng với bước ShiftRows, MixColumns đã tạo ra tính chất khuếch tán cho thuật toán Vì thế, bước này có thể được xem là phép nhânma trận trong trường hữu hạn
3.4 Bước AddRoundKey
Tại bước này, khóa con được kết hợp với các khối Khóa con trong mỗi chu trình được tạo ra từ khóa chính với quá trình tạo khóa con Rijndael; mỗi khóa con có độ dài giống như các khối Quá trình kết hợp được thực hiện bằng cách XOR từng bít của khóa con với khối dữ liệu
3.4 Quá trình giải mã của thuật toán AES
Trang 7Các phép biến đổi trong phép mã hóa có thể được đảo ngược và sau đó thực hiện theo chiều ngược lại nhằm tạo ra phép giải mã trực tiếp của thuật toán AES Các phép biến đổi sử dụng trong phép giải mã gồm: InvShiftRows, InvSubBytes, InvMixColumns và AddRoundKey
3.4.1 Bước InvSubBytes
Phép biến đổi InvSubBytes() là nghịch đảo của phép thay thế theo byte SubBytes(), trong đó sử dụng một hộp-S nghịch đảo áp dụng cho mỗi byte của trạng thái
3.4.2 Bước InvShiftRows
Phép biến đổi InvShiftRows là phép biến đổi ngược của ShiftRows Các byte trong ba từ cuối của trạng thái được dịch vòng theo số byte khác nhau Ở hàng đầu tiên (r=0) không thực hiện phép chuyển dịch, ba hàng dưới cùng được dịch vòng Nb-shift(r,Nb) byte
3.4.3 Bước InvMixColumns
Phép biến đổi InvMixColumns() là phép biến đổi ngược của MixColumns() Nó thao tác theo từng cột của trạng thái, xem mỗi cột như một đa thức bốn hạng tử
3.4.4 Biến đổi nghịch AddRoundKey
Phép biến đổi AddRoundKey là phép biến đổi thuận nghịch vì nó chỉ áp dụng một phép toán XOR nên nó được thực hiện như nhau ở cả phép mã hóa và phép giải mã
3.5 Ứng dụng thuật toán AES
Thuật toán AES có thể được viết bằng nhiều ngôn ngữ Thuật toán này cũng được sử dụng trong Việc xử lý ảnh Trong bài báo này chúng tôi sử dụng ngôn ngữ Java để lập trình, Java cho phép thực hiện trong mã nguồn mở và là một ngôn ngữ độc lập với platform các mã nguồn cho các phần của thuật toán được trình bầy dưới đây
3.5.1 Bước Add Round Key
public byte[ ][ ] addRoundKey(byte[ ][ ] state,byte[ ][ ] roundkey)
{
for (int i=0;i<4;i++)
{
for (int j=0;j<4;j++)
{
state [i][j]=doExclusiveOR(state[i][j], roundkey[i][j]);
}
Trang 8}
return state;
}
3.5.2 Bước Sub Bytes
public byte[ ][ ] subBytes(byte[][] state)
{
for (int i=0;i<4;i++)
{
for (int j=0;j<4;j++)
{
int row = getFirstFourBits(state[i][j]);
int column = getSecondFourBit(state[i][j]);
state[i][j] = sBoxSubstitution(row,column);
}
}
return state;
}
3.5.3 Bước MixColumns
public byte[ ][ ] mixColumns(byte[ ][ ] state)
{
for (int c=0;c<4;c++)
{
state [c]=matrixMultiplication(state[c], polynomial);
}
return state;
}
3.5.4 Bước ShiftRows
shiftRows(byte state[][])
{
for(int i=0;i<4;i++)
{
cyclicLeftShift(i);
} }
3.5 Độ an toàn của thuật toán AES
Trang 9Khoá mã đã được sử dụng trong thuật toán có độ dài 128 bit vì vậy, để bẻ khoá attacker cần thực hiện 2128 phép thử, vì vậy, việc bẻ khoá gần như không thể thực hiện thành công trong thực tế
Do vậy, phương pháp tấn công vét cạn không thể thực hiện được trên thuật toán này Các bước của thuật toán rất chặt chẽ không cho phép chèn thêm các mẫu vào trong các bước của thuật toán các thành phần của thuật toán được đề xuất có độ khuếch tấn và xáo trộn lớn vì vậy việc sử dụng kỹ thuật phân tích thông kê và dựa trên mẫu bản mã sẽ không thực hiện được Ưu điểm lớn nhất của thuật toán này là thuật toán sẽ không thể bị phá vỡ bởi phép vi phân (differential) hay tấn công sử dụng lân cận kề (linear attacks)
IV ỨNG DỤNG MÃ HOÁ TIN NHẮN – SMS – TRÊN MÔI TRƯỜNG ANDROID
Ứng dụng thực hiện theo bước sau :
1. Người sử dụng mở phần mềm rồi mở khóa
2. Người sử dụng có thể gõ tin nhắn mới hay trả lời tin nhắn
3. Ở tin nhắn mới có 2 chế độ : Chế độ tin nhắn thường và chế độ tin nhắn mã hóa Chế độ mã hóa sẽ yêu cầu người sử dụng nhập khóa hay tự động điền trước khi gửi tin nhắn Chế độ thường thì sử dụng như bình thường
4. Nếu trả lời tin nhắn hiện tại đã được mã hóa Người sử dụng sẽ phải nhấn và giữ tin nhắn đó để giải mã Phần mềm sẽ yêu cầu khóa khi người dùng trả lời tin nhắn hiện tại
5. Khi nhập khóa m tin nhắn sẽ được gửi và hiển thị dưới dạng mã hóa cho người xem
4.1 Snapshot của Ứng dụng
4.1.1 Mở khoá ứng dụng
Hình 3: Mở khóa ứng dụng
Trang 10Người dùng sẽ phải mở khóa ứng dụng , có thể thay đổi khóa khi mở ứng dụng thành công Khi nhập 5 lần sai, ứng dụng sẽ tự động đóng
4.1.2 Tạo tin nhắn
Các thông tin liên quan đến tin nhắn gồm tên của người gửi, và các thong tin liên quan khác được hiển thị thông qua menu khi người dùng nhập tên người nhận Người sử dụng có thể lựa chọn tên và số điện thoại thông qua menu Ứng dụng cũng hỗ trợ chế độ tìm kiếm ví du: nếu người dung gõ “qu” thì sẽ hiện ra tất cả các tên có kí tự “qu” (ví dụ : quang , quân,quyên) cùng với số điện thoại Người sử dụng có thể lưu tin nhắn như bản nháp (draff) hoặc gửi nó bằng cách nhập khoá mã hoá Người sử dụng có thể chọn liên lạc gần nhất từ danh sách nhật ký cuộc gọi của mình bằng cách chọn mục "Recent"
Hình 4: Tạo tin nhắn mới 4.1.3 Hiển thị tin nhắn
Các tin nhắn trong trong phần inbox được thiết kế dưới dạng popup Khi ấn vào một thuộc tính
sẽ cho phép hiển thị các tuỳ chọn xoá (delete) hoặc mở (open) thông tin liên lạc của tuỳ chọn hoặc thực hiện cuộc gọi từ tuỳ chọn