ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
***************
BÁO CÁO BÀI TẬP LỚN MÔN:
AN NINH CƠ SỞ DỮ LIỆU
Đề tài 5.2: Trình bày công nghệ TLS
Giảng viên:PGS. T.S. Trịnh Nhật Tiến
Học viên: Nguyễn Thị Hoàn
Mã học viên: 100201052
Lớp: K17_CHTTT
Hà Nội – 12/2013
Công nghệ TLS
Như chúng ta đã biết có hai giao thức bảo mật quan trọng lớp vận chuyển (Layer
Transport) có tầm quan trọng cao nhất đối với sự bảo mật của các trình ứng dụng trên
Web: đó là hai giao thức SSL và TLS.
SSL (Secure Socket Layer) là giao thức được phát triển bởi Netscape. Phiên bản 1.0
không được công khai, phiên bản 2.0 được phát hành tháng 2 năm 1995 nhưng vẫn có
nhiều lỗ hổng về bảo mật nên SSL phiên bản 3.0 được phát hành vào năm 1996.
SSL: là một giao thức sử dụng rộng rãi cho truyền đạt thông tin trong mạng. Giao thức
SSL dự phòng dịch vụ tiếp theo cho ứng dụng của mạng:
+ Data privacy: Client/Server session thành các mật mã.
+ Client authentication: Server có thể kiểm tra sự đồng nhất của Client.
+ Server authentication: Client có thể kiểm tra sự đồng nhất của Server.
+ Message integrity(tính nguyên vẹn của gói tin) : Dữ liệu không thể sửa trong khi
truyền.
TLS 1.0 (Transport Layer Security) lần đầu tiên được định nghĩa trong RFC2246
tháng 1 năm 1999 như là một nâng cấp từ SSL v3.0. Như đã nêu trong RFC, sự khác biệt
này giữa các giao thức SSL 3.0 là không đáng kể. Nó dùng nhiều các thuật toán
“cryptographic”.TLS phiên bản 1.1 đã được cập nhật từ phiên bản 1.0 trong RFC 4346
trong tháng 4 năm 2006. Phiên bản này có 1 số khác biệt:
chủ như là một chứng chỉ hợp lệ phát hành bởi một CA tin cậy.Các khách hàng xác minh
rằng CA phát hành là vào danh sách các CAs tin cậy.Các khách hàng sẽ kiểm tra giấy
chứng nhận thời gian hiệu lực của máy chủ. Quá trình thẩm định dừng lại nếu ngày hiện
tại và thời gian vượt quá thờihạn hiệu lực.Đánh số tất cả các bản ghi ứng dụng với một
trình tự và sử dụng dãy sốnày trong Message Authentication Codes (MACs).Một gói thư
trao đổi thông tin kết thúc bắng việc bắt tay trả lời “Finished”giữa cả hai đối tượng
trao đổi thông tin với nhau.Một hàm ngẫu nhiên chia dữ liệu đầu vào ra một nửa và mỗi
một bộ xử lývới độ khó hàm hashing(MD5 và SHA-1), thì XORs của chúng sẽ cùng
nhautạo MAC.Chúng sẽ có bảo vệ dự phòng nếu thuật toán ở đây có thể bị côngkích
được.SSL v3 được cải tiến trên SSLv2 nhờ được thêm vào cơ sở mã hóa củaSHA-1,và
nâng cấp them xác thực của chứng chỉ(CA).Cải tiến thêm trongSSLv3 bao gồm luồng
giao thức bắt tay và tăng thêm việc chống đỡ lại việctấn công “man-in-the-middle”
4. Cách viết mật mã (Cryptography) :
Mật mã là thuật ngữ ám chỉ để chuyển một thông điệp mà chỉ có ngườinhận mới có thể
độc tin nhắn. Mật mã học cũng được sử dụng để xác minhngười gửi tin nhắn, và để xác
Nguyễn Thị Hoàn – K17HTTT Page 4
Công nghệ TLS
minh một tin nhắn không được sửa đổi trongquá trình truyền.SSL sử dụng thuật toán mã
hóa khác nhau để đảm bảo thông tin liên lạcan toàn. Có bốn khái niệm mã hóa được sử
dụng bởi SSL:Mã hóa khóa đối xứng ( khóa bí mật) Mã hóa khóa không đối xứng (khóa
công khai) Gói tin vắn tắt và chữ kí điện tử.
5-Mã hóa khóa đối xứng( secret key)
Khoá mật mã đối xứng sử dụng một chìa khóa duy nhất cho cả hai mã hóa và giải mã dữ
liệu.Như thể hiện trong hình bên dưới các gói tin “plain text”đơn giản là thông qua các
thuật toán mã hóa “ciphertext”, chúng không thể đọc, và do đó an toàn. Kết quả là thông
tin an toàn đến người nhận. Những người nhận giải mã thông điệp trở lại “plaintext” bằng
cách sử dụng cùng một khóa
Thuật toán mã hóa đối xứng có hai loại: mã hóa khối và mã hóa luồng.Mã hóa khối theo
truyền thống phổ biến nhất. Chúng hoạt động bằng cáchchia dữ liệu thành các khối có
kích thước cố định, và sau đó mã hóa từng khốiriêng. Phần dữ liệu còn lại độ dài của
Công nghệ TLS
9- Lỗ hổng bảo mật của SSL:
SSL (Secure Sockets Layer) là giao thức dùng để đảm bảo an toàn chothông tin liên lạc
trên Internet. Các nhà nghiên cứu đã tiết lộ một số kiểu tấncông có thể được dùng để
làm thương tổn việc trao đổi thông tin an toàn giữawebsite và trình duyệt (tấn công có thể
cho phép tin tặc đánh cắp mật khẩu,chiếm đoạt 1 phiên giao dịch ngân hàng trực tuyến
hay thậm chí là đưa ra một bản cập nhật trình duyệt Firefox có chứa mã độc). Vấn đề
nằm trong cách nhiều trình duyệt thực thi SSL và trong hệ thống hạ tầng khóa công
khaiX.509 (dùng để quản lý các chứng thức số được SSL sử dụng để quyết địnhxem
website có đáng tin cậy hay không). Nhà nghiên cứu bảo mật có nickname là Moxie
Marlinspike giới thiệukiểu tấn công “null-termination certificate” làm gián đoạn phiên
duyệt SSLgiữa client và server (trong kiểu tấn công này, nếu
viết“www.paypal.com\0.thoughtcrime.org” sẽ được hiểu thành“www.paypal.com”). Loại
tấn công kiểu “man-in-the-middle” này không thểphát hiện được, nếu lan rộng sẽ ảnh
hưởng tới Internet Explorer, Firefox 3.0,phần mềm mạng riêng ảo VPN (virtual private
network), các trình e-mailclient và IM (instant messaging). Để bịt lỗ hổng này thì cần cập
nhật, sửa chữacho hệ thống X.509.
Tổng quan thì lỗ hổng này nằm ở sự thiếu "ăn rơ" giữa TLS/SSL và cácprotocol trên nó
như HTTP hay SMTP. Khai thác lỗ hổng này thì kẻ tấn công có thể chèn thêm một đoạn
plaintext bất kỳ vào TLS/SSL encryptedstream giữa client và server mà cả client và
server đều không thể pháthiện được
. Giả định:
Nguyễn Thị Hoàn – K17HTTT Page 7
Công nghệ TLS
Ngân hàng A có cung cấp dịch vụ Internet Banking ở địa chỉ
https://www.ebank.com.Máy chủ của của họ chạy phần mềm có lỗ hổng mà chúng ta
đang bàn ở đây. Chúng ta gọi máy chủ này là server.* Để tăng cường an ninh, ngân hàng
A yêu cầu khi khách hàng (gọi làclient) sử dụng các tính năng có liên quan đến giao dịch
tài chính nằmtrong khu vựchttps://www.ebank.com/account/,thì (browser của) họphải có
cài đặt client certificate cho ngân hàng A cung cấp. Lưu ý lànhiều ngân hàng ở VN thực
nhận từ client thì gửi qua server và ngược lại.* Bước 4: quá trình xác thực client
certificate đã kết thúc thành công, server tiếp tục xử lý cái request của attacker ở trên,
và trả kết quả lại cho attacker (lưu ý là attacker sẽ không đọc được kết quả này).Điểm yếu
là ở đây. Như chúng ta thấy, khi attacker gửi request ở bước 3, lúcđó hắn chưa được xác
thực. Nói cách khác, lúc này request của hắn là unauthenticated request. Việc xác thực
diễn ra sau đó, và sau khi xác thực rồithì server lại quay lại xử lý tiếp cái unauthenticated
Nguyễn Thị Hoàn – K17HTTT Page 9
Công nghệ TLS
request của attacker.Lưu ý, ở bước này, để tránh bị tình nghi, attacker có thể tiếp tục trả
kết quả vềcho client để đóng kết nối lại một cách êm đẹp.
B-Hướng tấn công số 2 :tất cả 3 hướng tấn công này đều hướng đến chôm credential của
client đểgửi các authenticated request đến server. Credential ở đây có thể làcertificate
(như ở hướng số 1) hay cookie/session (như ở hướng số 2 và số3).
Nếu chỉ áp dụng cho HTTPS, nhìn ở một góc độ nào đó, các hướng tấncông này rất giống
với tấn công CSRF(Cross Site Request Forgery
)
. Nên nếuứng dụng của bạn đã có các phương thức phòng chống CSRF
rồi hay nếu ứngdụng của bạn không chấp nhận thay đổi state bằng GET, thì tạm thời
cũngkhông phải có gì lo lắng
Đối với hướng số 1, lợi dụng client certificate để gửi một authenticatedrequest. Ở trường
hợp các server không xác thực bằng certificate sẽ sử dụnghướng tấn cống số 2.Hướng tấn
công này cũng có 4 bước:* Bước số 1: tương tự như hướng tấn công số 1.* Bước 2:
attacker mở kết nối đến server thật. Hai bên sẽ bắt tay theo giaothức TLS/SSL để tạo
thành một session.Sau khi hoàn tất bắt tay, attacker gửi một HTTP request, đại loại
như:GET /iphone/login HTTP/1.1\r\nHost: ebank.com\r\nConnection: keep-
alive\r\n\r\nGET /account/transfer?amount=1000&receiver=attacker HTTP/1.1\r\nHost:
Nguyễn Thị Hoàn – K17HTTT Page 10
Công nghệ TLS
ebank.com\r\nConnection: close\r\nX-ignore-this:* Bước số 3: server thấy có request đến
sau khi gửi cái request đó, attacker sẽ forward cái CLIENT_HELLO thuđược ở bước 1
sang cho phía server để bắt đầu quy trình renegotiation. Khi đãrenegotiate xong, client sẽ
gửi request ban đầu của mình đến server, lúc nàytoàn bộ request sẽ trông như sau (phần
màu cam của attacker gửi, phần màuxanh của client gửi):GET /account/transfer?
amount=1000&receiver=attacker HTTP/1.1\r\nHost: ebank.com\r\nConnection:
close\r\nX-ignore-this:GET /index HTTP/1.1\r\nCookie: AuthMe=Now\r\
Tương tự ở trên, X-ignore-this đã vô hiệu hóa request của client và chômcookie để biến
request của attacker thành authenticated. Không cần keep-alive, không cần server phải có
cấu hình đặc biệt gì cả!
II. Chương trình mã hóa RSA.
Nguyễn Thị Hoàn – K17HTTT Page 12
Công nghệ TLS
- Chương trình mô phỏng mã hóa RSA được ứng dụng trong TLS.
- import java.io.*;
- import java.util.*;
- import java.math.*;
- import java.lang.*;
-
- class nhapdulieu
- {
- @SuppressWarnings("deprecation")
- public static String nhapxau()
- {
- DataInputStream str = new DataInputStream(System.in);
- String st="";
- try { st = str.readLine(); }
- catch(IOException e){System.out.print("loi "+e);}
- return st;
- }
- @SuppressWarnings("deprecation")
- {
- int k;
- k=0;
- if(x==1)
- k=k+1;
- else
Nguyễn Thị Hoàn – K17HTTT Page 13
Công nghệ TLS
- for(int i=1;i<x;i++)
- if((x%i==0))
- k=k+1;
- return k;
- }
- public int UCLN(int a,int b)
- {
- if(a<0)
- a=-a;
- while(a!=b)
- if(a>b)
- a=a-b;
- else b=b-a;
- return a;
- }
- public void nhap()
- {
- System.out.print("moi ban nhap so nguyen to p :");
- do
- {
- p=nhapdulieu.nhapnguyen();
- if(ktngto(p)!=1)
- }
- public int mod(int a,int b)
Nguyễn Thị Hoàn – K17HTTT Page 14
Công nghệ TLS
- {
- int [] x,y,u,v;
- int i,d;
- d=0;
- x = new int[100];
- y = new int[100];
- u = new int[100];
- v = new int[100];
- x[0]=a;
- x[1]=b;
- u[0]=1;
- u[1]=0;
- v[0]=0;
- v[1]=1;
- i=1;
- while(x[i]!=0)
- {
- y[i]=x[i-1]/x[i];
- i++;
- x[i]=x[i-2]%x[i-1];
- u[i]=u[i-2]-(u[i-1]*y[i-1]);
- v[i]=v[i-2]-(v[i-1]*y[i-1]);
- }
- if(x[i-1]==1)
- { if (v[i-1]>0)
- d=v[i-1];
- for(int i=0;i<b.length;i++)
- c[i]=(int)b[i];
- /* System.out.println("dang so ban ro :");
- for(int i=0;i<c.length;i++)
- System.out.print(c[i]+" ");*/
- int k;
- for(int i=0;i<c.length;i++)
- {
- k=c[i]+l-32;
- c[i]=(k%96)+32;
- }
- /*System.out.println();//commment
- System.out.println("dang so 2 ban ma :");
- for(int i=0;i<c.length;i++)
- System.out.print(c[i]+" ");*/
- str=new char[c.length];
- for(int i=0;i<c.length;i++)
-
- str[i]=(char)c[i];
- System.out.println("Noi dung ma hoa: "+str);
- z=String.valueOf(str);
-
- }
- public void gaima(int a)
- {
- char [] b,str;
- int [] c;
- String h;
- //qua trinh gia ma
- b =z.toCharArray();
import java.io.*;
import java.util.*;
import java.math.*;
import java.lang.*;
class thuattoan
{
public static void main(String args[])
{
int a;
rsa tt = new rsa();
System.out.println("******************************
*****************************************");
System.out.println(" moi ban nhap du lieu can thiet gui");
tt.nhap();
System.out.println("
");
System.out.println();
System.out.println("=>nguoi A chuan bi gui du lieu cho nguoi B ");
System.out.println();
tt.mod(tt.o,tt.e);
System.out.print("=>A nhan khoa cong khai cua B (n,e)
la :"+"("+tt.n+","+tt.e+")");
System.out.println();
System.out.print("=>A nhap khoa k : ");
a=nhapdulieu.nhapnguyen();
tt.rsa1(a);
System.out.println("=>A gui 2 ban ma sang cho B ");
System.out.println();
System.out.print(" ban ma khoa:"+tt.model(a,tt.e));
System.out.println();