Lời nói đầu Sercure Socket Layer (SSL) hiện nay là giao thức bảo mật rất phổ biến trên Internet và đặc biệt là trong các hoạt động thương mại điện tử (ECommerce). Việt Nam đang trên đường hội nhập với nền công nghệ thông tin thế giới, nên nay mai, các hoạt động giao dịch trên mạng ở Việt Nam cũng sẽ diễn ra sôi nổi, khi đó vấn đề bảo mật trở nên quan trọng, việc triển khai SSL là điều thiết yếu. Nhận thức được tầm quan trọng đó, nhóm chúng em làm báo cáo này để trình bày về SSL và tấn công CRIME lên giao thức SSLTLS. Do lượng kiến thức có hạn nên không tránh khỏi sai sót. Mong thầy xem và đóng góp ý kiến cho bài báo cáo cũng như những tìm hiểu của chúng em được trọn vẹn
BAN CƠ YẾU CHÍNH PHỦ HỌC VIỆN KỸ THUẬT MẬT MÃ BÁO CÁO BÀI TẬP LỚN Tìm hiểu cơng CRIME lên giao thức SSL/TLS giải pháp phòng chống Các thành viên: Bùi Thị Thu Giang Nguyễn Thị Hồng Vân Nguyễn Đức Duy Hoàng Hữu Cương Lớp: AT9A Giảng viên hướng dẫn: Đỗ Quang Trung Hà Nội, tháng 06 năm 2016 Mục lục Danh mục từ viết tắt Tên viết tắt 3-DES AES CA DES HTTP HTTPS MAC PCT SSL TLS Giải thích ý nghĩa Triple DES Advanced Encryption Standard certificate authority Data Encryption Standard HyperText Transfer Protocol HTTP Secure Medium Access Control Private Communication Technology Secure Sockets Layer Transport Layer Security Danh mục bảng Danh mục hình vẽ Hình Cấu trúc SSL giao thức SSL Hình 2 Hình minh họa quá trình trao đởi thơng tin Hình Các bước SSL Record Protocol Hình Minh họa đoạn thơng điệp chứa thông tin về khóa quy định thuật toán Lời nói đầu Sercure Socket Layer (SSL) hiện giao thức bảo mật phổ biến Internet đặc biệt các hoạt động thương mại điện tử (E-Commerce) Việt Nam đường hội nhập với nền công nghệ thông tin thế giới, nên mai, các hoạt động giao dịch mạng ở Việt Nam cũng sẽ diễn sôi nổi, đó vấn đề bảo mật trở nên quan trọng, việc triển khai SSL điều thiết yếu Nhận thức được tầm quan trọng đó, nhóm chúng em làm báo cáo để trình bày về SSL cơng CRIME lên giao thức SSL/TLS Do lượng kiến thức có hạn nên không tránh khỏi sai sót Mong thầy xem đóng góp ý kiến cho báo cáo cũng tìm hiểu chúng em được trọn vẹn Chương 1: Tìm hiểu Giao thức SSL/TLS 1.1 SSL gì? Việc kết nối một Web browser tới điểm mạng Internet qua nhiều các hệ thống độc lập mà không có bảo vệ các thông tin đường truyền Kể cả người sử dụng lẫn Web server đều không có kiểm soát đường liệu hay có thể kiểm soát được liệu có đó thâm nhập vào thông tin đường truyền Để bảo vệ thông tin mật mạng Internet hay mạng TCP/IP nào, SSL kết hợp yếu tố sau để thiết lập được mợt giao dịch an tồn: Xác thực: Đảm bảo tính xác thực trang mà bạn sẽ làm việc ở đầu kết nối Cũng vậy, các trang Web cũng cần phải kiểm tra tính xác thực người sử dụng Mã hố: Đảm bảo thơng tin không thể bị truy cập bởi đối tượng thứ ba Để loại trừ việc nghe trộm thông tin “ nhạy cảm” nó được truyền qua Internet, liệu phải được mã hoá để không thể bị đọc được bởi người khác người gửi người nhận Tồn vẹn liệu: Đảm bảo thơng tin khơng bị sai lệch nó phải thể hiện xác nợi dung thông tin gốc gửi đến Với việc sử dụng SSL, các Web site có thể cung cấp khả bảo mật thơng tin, xác thực tồn vẹn liệu đến người dùng SSL được tích hợp sẵn vào các browser Web server, cho phép người sử dụng làm việc với các trang Web ở chế độ an toàn Khi Web browser sử dụng kết nối SSL tới server, biểu tượng ổ khóa sẽ xuất hiện trạng thái cửa sở browser dòng “http” hộp nhập địa URL sẽ đổi thành “https” Một phiên giao dịch HTTPS sử dụng cởng 443 thay sử dụng cổng 80 dùng cho HTTP SSL không phải một giao thức đơn lẻ, mà một tập các thủ tục được chuẩn hoá để thực hiện các nhiệm vụ bảo mật sau: Xác thực server: Cho phép người sử dụng xác thực được server muốn kết nối Lúc này, phía browser sử dụng các kỹ thuật mã hoá khóa công khai để chắn certificate public ID server có giá trị được cấp phát bởi một CA (certificate authority) danh sách các CA đáng tin cậy client Điều quan trọng người dùng Ví dụ gửi mã số credit card qua mạng người dùng thực muốn kiểm tra liệu server sẽ nhận thông tin có server mà họ định gửi đến không Xác thực Client: Cho phép phía server xác thực người sử dụng muốn kết nối Phía server cũng sử dụng các kỹ thuật mã hoá khóa công khai để kiểm tra xem certificate public ID server có giá trị hay không được cấp phát bởi một CA (certificate authority) danh sách các CA đáng tin cậy server không Điều quan trọng các nhà cung cấp Ví dụ một ngân hàng định gửi các thông tin tài mang tính bảo mật tới khách hàng họ muốn kiểm tra định danh người nhận Mã hố kết nối: Tất cả các thơng tin trao đổi client server được mã hoá đường truyền nhằm nâng cao khả bảo mật Điều quan trọng cả hai bên có các giao dịch mang tính riêng tư Ngồi ra, tất cả các liệu được gửi một kết nối SSL được mã hoá được bảo vệ nhờ chế tự động phát hiện các xáo trộn, thay đổi liệu ( đó các thuật toán băm – hash algorithm) 1.2 TLS gì? Transport Layer Security (TLS) kế thừa Secure Sockets Layer (SSL), phổ biến được sử dụng rộng rãi các ứng dụng mật mã học thực tế thế giới Việc phổ biến sử dụng để đảm bảo cho các phiên trình duyệt web, nó cũng có các nhiệm vụ khác, chẳng hạn bảo vệ các máy chủ email hay loại giao dịch client-server TLS cũng có thể được sử dụng để cung cấp xác thực mã hóa Session Initiation Protocol (SIP) SSL / TLS có thể được sử dụng để cung cấp xác thực mạnh mẽ cả hai bên một phiên truyền thông, mã hóa mạnh mẽ liệu chuyển tiếp chúng, đảm bảo tính tồn vẹn liệu chuyển tiếp Trong vài năm qua, các cuộc công khác được thiết kế để tận dụng lợi thế tính chọn lựa SSL / TLS Thiết kế các bộ mã hoá được sử dụng SSL / TLS để mã hóa tạo khóa Chương 2: Cấu trúc cách hoạt động của SSL 2.1 Cấu trúc giao thức SSL: Cấu trúc SSL giao thức SSL tương ứng được minh họa hình 2.1(Cấu trúc SSL giao thức SSL) Theo hình này, SSL ám mợt lớp (bảo mật) trung gian lớp vận chuyển (Transport Layer) lớp ứng dụng (Application Layer) SSL được xếp lớp một dịch vụ vận chuyển định hướng kết nối đáng tin cậy, chẳng hạn được cung cấp bởi TCP Về khả năng, nó có thể cung cấp các dịch vụ bảo mật cho các giao thức ứng dụng tùy ý dựa vào TCP không HTTP Thực tế, mợt ưu điểm các giao thức bảo mật lớp vận chuyển (Transport layer) nói chung giao thức SSL nói riêng chúng độc lập với ứng dụng theo nghĩa chúng có thể được sử dụng để bảo vệ giao thức ứng dụng được xếp lớp TCP mợt cách suốt Hình 2.1 minh họa mợt số giao thức ứng dụng điển hình bao gồm NSIIOP, HTTP, FTP, Telnet, IMAP, IRC, POP3 Tất cả chúng có thể được bảo vệ cách xếp lớn chúng SSL (mẫu tự S được thêm vào các từ ghép giao thức tương ứng định việc sử dụng SSL) Tuy nhiên, SSL có một định hướng clientserver mạnh mẽ không đáp ứng các yêu cầu các giao thức ứng dụng ngang hàng 10 Kết luận Sau tìm hiểu đề tài: ”Tìm hiểu công CRIME lên giao thức SSL/TLS giải pháp phòng chống”, nhóm chúng em nắm được cách thức khai thác các phiên liên lạc web được bảo vệ bởi bộ giao thức SSL/TLS sử dụng một hai phương pháp nén liệu Đồng thời nắm được biện pháp chống lại cơng Crime Vì thời gian làm tập cũng khả hạn chế, chúng em mong được đóng góp ý kiến thầy cô giáo để đạt kết quả tốt nhất.Chúng em xin chân thành cảm ơn thầy cô 37 Tài liệu tham khảo [1] ThS Nguyễn Thanh Sơn CN Nguyễn Thị Tuyết Trinh Học viện kỹ thuật Mật mã, Ban CYCP, Tấn công CRIME lên các giao dịch web sử dụng bộ giao thức SSL/TLS, [2] Pratik Guha Sarkar, Shawn Fitzgerald, Attacks on SSL – A comprehensive study of BEAST, CRIME, TIME, BREACH, LUCKY 13 & RC4 BIASES, https://www.isecpartners.com, 2013 [3] C Meyer, 20 Years of SSL/TLS Research An Analysis of the Internet’s Security Foundation, 2014 [4] G V Bard, The Vulnerability of SSL to Chosen Plaintext Attack, IACR Cryptology ePrint Archive, 2004 [5] P Deutsch, DEFLATE Compressed Data Format Specification version 1.3, RFC 1951, IETF, 1996 [6] Achin K, CrimeCheck, 38 Phụ lục Tấn công Crime mạng Phần mềm sử dụng: • • • Wireshark Python 2.7 cho windows Chương trình python crimecheck.py được phát triển bởi Achin K, có chia sẻ https://github.com Bước Truy cập website mạng có sử dụng https, ở trang https://www.aynax.com/ , tiếp đến sử dụng wireshark bắt các gói tin lưu thành file aynax.pcap để phục vụ bước phân tích lỗ hởng crime Bước Thực hiện kiểm tra xem trang web có sử dụng hàm nén TLS Compression hay không, nếu sử dụng có thể áp dụng cơng Crime lên trang web Sử dụng chương trình crimecheck.py lệnh: + Checking HTTP Compression crimecheck.py -s 39 + Checking TLS Compression crimecheck.py -s -p + Verbose crimecheck.py -v -s -p Thực thi lệnh: crimecheck.py -s aynax.com -p aynax.pcap Ta nhận được kết quả: HTTP Compression – ENABLED TLS Compression – DISABLED Cho thấy website thực hiện tắt hàm nén TLS nên không thể thực hiên cơng Crime được Sau quá trình tìm kiếm các website mạng, sử dụng tool để check lỗ hổng Crime, nhóm nhận thấy đa số các website có bản vá lỗi, hàm nén TLS khơng được sử dụng, nên quá trình cơng Crime không được thực hiện trọn vẹn 40 Phụ lục Mã nguồn chương trình crimecheck.py #!/usr/bin/env python """ CrimeCheck - A Tool to check if the server is vulnerable to Compression Based Attacks(BREACH/CRIME) usage: PROGRAM [options] < > -v Verbose logging -l log_file Log output to logfile -s Server URL -p Pcap File (Live Capture is not supported currently) Copyright (C) 2013 Achin K, mail: achinkul@gmail.com Thanks to Paul Querna for the amazing parser """ import urllib2 import logging, getopt import os import sys import socket 41 p = os.path.join(os.path.dirname(os.path.abspath( file )), 'third_party', 'dpkt') if p not in sys.path: sys.path.insert(0, p) import dpkt from collections import defaultdict capture="" def sendRequest(serverAddr): req = urllib2.Request("https://"+serverAddr) req.add_header('Accept-Encoding', 'gzip,deflate') resp = urllib2.urlopen(req) content = resp.read() logger.debug("%s", resp.info()) return resp.info().getheader('Content-Encoding') def checkIfVulnerable(respCode,serverAddr): 42 if respCode: logger.info("HTTP Compression for Server %s is ENABLED ",serverAddr) else: logger.info("HTTP Compression for Server %s is DISABLED",serverAddr) def pcap_reader(fp): return dpkt.pcap.Reader(fp) def as_percent(a, b): if a == 0: return "0%" if a > b: assert('invalid percentage') val = float(a) / float(b) return "%.2f%%" % (val * 100) TLS_HANDSHAKE = 22 def gather_statistics(cap,serverAddr): 43 counters = defaultdict(int) known_extensions = set() count_extensions = set() pkt_count = for ts, buf in cap: pkt_count += eth = dpkt.ethernet.Ethernet(buf) #print 'pkt: %d' % (pkt_count) if not isinstance(eth.data, dpkt.ip.IP): continue ip = eth.data if not isinstance(ip.data, dpkt.tcp.TCP): continue # TODO: consider doing TCP streams, so multipacket things can be parsed right "meh" tcp = ip.data if tcp.dport != 443 and tcp.sport != 443: continue if socket.gethostbyname(serverAddr) != socket.inet_ntoa(ip.src): 44 continue if len(tcp.data)