1. Trang chủ
  2. » Công Nghệ Thông Tin

Tìm hiểu tấn công Padding Oracle lên chế độ CBC của mã khối

18 1.8K 11

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Đầu tiên, lỗ hổng này không liên quan đến CSDL Oracle hay Oracle company. Trong mật mã học, một “oracle ” là một hệ thống mà việc mã hóa thực hiện bởi việc tham gia vào đầu vào nhất định. Có thể hiểu, oracle là một hộp đen đáp ứng các yêu cầu. Có thể hình dung nó như giao thức dựa trên hàm băm, với một đầu vào ngẫu nhiên, nó sẽ trả về một đầu ra dữ liệu ngẫu nhiên tương ứng. Do đó, “Padding oracle ” là một loại hộp đen mà giải mã thông điệp đầu vào và nói cho bạn biết việc padding là đúng hay sai.

HỌC VIỆN KỸ THUẬT MẬT MÃ KHOA AN TOÀN THÔNG TIN  BÁO CÁO BÀI TẬP LỚN MÔN HỌC MẬT MÃ HỌC NÂNG CAO Chủ đề số 05 TÌM HIỂU TẤN CÔNG PADDING ORACLE LÊN CHẾ ĐỘ CBC CỦA MÃ KHỐI Giảng viên: ThS Phạm Quốc Hoàng KS Nguyễn Văn Nghị Thực hiện: Sinh viên lớp AT8B Nguyễn Thị Thu Hiền Trần Nhật Trường Lê Văn Vũ HÀ NỘI, 2015 MỤC LỤC Danh mục kí hiệu từ viết tắt Danh mục hình vẽ Lời mở đầu Chương khái niệm 1.1 Mã hóa khối - Block Ciphers .4 1.2 Một số kĩ thuật Padding .5 1.1.1 Bit Padding 1.1.2 Byte Padding 1.1.3 Zero Padding 1.3 Giới thiệu CBC mode hoạt động mã khối Chương Padding Oracle attack 2.1 Giới thiệu Padding Oralce attack 2.2 Using Padding Oracle attack 12 1.1.4 Cracking CAPTCHA 12 1.1.5 Giải mã JSF ViewStates 13 2.3 Một số Web Framework dễ bị công Padding Oralce 14 1.1.6 Ruby On Rails .14 1.1.7 OWASP ESAPI 14 Kết luận Tài liệu tham khảo DANH MỤC KÍ HIỆU VÀ TỪ VIẾT TẮT Viết tắt CBC IV Giải thích Cipher Block Channing Initialization Vector Tìm hiểu công Padding Oracle lên chế độ CBC mã khối Tr.1 DANH MỤC CÁC HÌNH VẼ Hình 1.Mã hóa khối Hình 2.Một số ví dụ kỹ thuật Padding với Block size byte Hình 3.Mô hình CBC mã khối Hình 4.Một số ví dụ padding Hình 5.Sơ đồ giải mã CBC mode Hình 6.CBC mode decryption Hình 7.Kết nhận padding byte Hình 8.Kết nhận tăng padding block khởi đầu lên Hình 9.Kết nhận padding Hình 10.Vận dụng để đoán plaintext Tìm hiểu công Padding Oracle lên chế độ CBC mã khối Tr.2 LỜI MỞ ĐẦU Ngày nay, ngành công nghiệp web sử dụng rộng rãi trang web sử dụng mã hóa không xác nên tạo lỗ hổng để kẻ công đọc sửa đổi liệu cần bảo vệ Nó biết đến nhiều năm qua cộng đồng Nếu thông điệp mã hóa không xác thực, tính toàn vẹn liệu đảm bảo mà làm cho hệ thống dễ bị công, số họ bị công kỹ thuật Padding Oracle, kỹ thuật Serge Vaudenay phát minh trình bày EuroCrypt năm 2002 Vì đề tài chúng em vào nghiên cứu để tìm hiểu rõ vè kỹ thuật padding oracle lên chế độ cbc mã khối Chúng em xin cảm ơn! Tìm hiểu công Padding Oracle lên chế độ CBC mã khối Tr.3 CHƯƠNG CÁC KHÁI NIỆM CƠ BẢN 1.1 Mã hóa khối - Block Ciphers Trong mã hóa khối, hàm mã hóa giải mã thường lấy đầu vào block 1 khối liệu có độ dài định (4bytes, 8bytes….) Vì vậy, với đoạn liệu có độ dài lớn, người ta thường chia thành đoạn nhỏ (trùng với độ dài input thuật toán mã hóa) mã hóa Hình Mã hóa khối Với hệ mã dòng (Stream Cipher), đặc điểm chung từng ký tự rõ mã hoá tách biệt Điều làm cho việc phá mã trở nên dễ dàng Trong mã khối, thông điệp chia thành khối (Blocks) có kích thước (VD: DES làm việc với khối 64 bit, AES với khối 128 bit… ) Các khối thông điệp mã hóa gửi Trong kiểu mã hoá này, tham số quan trọng kích thước (độ dài) khối kích thước khoá Điều kiện an toàn mã hóa khối: - Kích thước khối phải đủ lớn để chống lại loại công phá hoại phương pháp thống kê Tuy nhiên điều dẫn đến thời gian mã hóa tăng lên - Không gian khóa phải đủ lớn(tức chiều dài khóa phải đủ lớn) để chống lại tìm kiếm vét cạn.Tuy nhiên, khóa cần phải đủ ngắn để việc làm khóa, phân phối lưu trữ hiệu Hầu hết thuật toán mã hóa khối sử dụng lặp lặp lại hàm đơn giản Phương pháp gọi mã hóa khối lặp Mỗi chu kỳ lặp gọi vòng (round) thông thường thuật toán có từ tới 32 vòng Tìm hiểu công Padding Oracle lên chế độ CBC mã khối Tr.4 Rất nhiều thuật toán mã hóa khối có tính chất mạng Feistel, hay tổng quát hệ thống hoán vị Các thành phần sử dụng thuật toán hàm toán học, hàm lô gíc (đặc biệt hàm XOR), hộp (S-box) hoán vị (P-box) Khi thiết kế mã khối cần đảm bảo hai yêu cầu sau: - Confusion (tính gây lẫn): làm phức tạp hóa mối liên quan mã khóa Do ngăn chặn việc suy lại khóa Tính chất dựa vào sử dụng S-box - Diffusion(tính khuếch tán): Làm khuếch tán mẫu văn mang đặc tính thống kê (gây dư thừa ngôn ngữ) lẫn vào toàn văn Nhờ tạo khó khăn cho kẻ thù việc dò phá mã sở thống kê mẫu lặp lại cao Tính chất có dựa vào sử dụng P-box kết hợp với S-box Mã khối có ưu điểm tốc độ mà hóa nhanh, linh hoạt việc xây dựng số giả ngẫu nhiên, dòng khóa… Mã khối ứng dụng cho thuật toán mã hóa bí mật mã hóa khóa công khai Một số hệ mã tiếng như: Lucifer(1969), DES(1977), AES, RC4, GOST… 1.2 Một số kĩ thuật Padding Trong mã hóa khối, hàm mã hóa giải mã thường lấy đầu vào block 1 khối liệu có độ dài định (4bytes, 8bytes….) Vì vậy, với đoạn liệu có độ dài lớn, người ta thường chia thành đoạn nhỏ (trùng với độ dài input thuật toán mã hóa) má hóa Vì đoạn liệu tách trình mã hóa, gây trường hợp block cuối ngắn kích thước (size) cần, trường hợp người ta thêm vào sau số kí tự, kỹ thuật gọi Padding Hình Một số ví dụ kỹ thuật Padding với Block size byte Tìm hiểu công Padding Oracle lên chế độ CBC mã khối Tr.5 1.1.1 Bit Padding Trong kỹ thuật này, bit thêm vào khối tin Sau bit Ví dụ: Đệm bit vào sau đoạn 23 bit để khối tin 32 bit : …| 1011 1001 1101 0100 0010 0111 0000 0000 | 1.1.2 Byte Padding a) Chuẩn ANSI X.923 Theo tiêu chuẩn ANSI X.923, Các byte thêm vào sau, riêng byte cuối dùng để xác định số byte thêm vào Ví dụ: Trong ví dụ sau kích thước khối byte số byte cần thêm vào byte(trong hệ Hexa): …| DD DD DD DD DD DD DD DD | DD DD DD DD 00 00 00 04 | b) Chuẩn PKCS#5 PKCS#7 Trong PKCS#7, giá trị byte thêm vào số byte thêm vào Phần byte Padding có dạng là: 01 Nếu số byte thêm vào byte 02 02 Nếu số byte thêm vào byte 03 03 03 Nếu số byte thêm vào byte 04 04 04 04 Nếu số byte thêm vào byte Ví dụ: Trong ví dụ sau, kích khốivào 8làbyte, số byte cần thêm byte: 05 05 05 05 05 Nếu số thước byte thêm byte … …| DD DD DD DD DD DD DD DD | DD DD DD DD 04 04 04 04 | PKCS#5 giống hệt PKCS#7, ngoại trừ việc sử dụng cho mật mã khối có kích thước khối 64 bit (8 byte) Trong thực tế, hai chuẩn sử dụng thay cho c) Chuẩn ISO/IEC 7816-4 Theo ISO/IEC 7816-4, byte thêm vào bắt buộc phải có giá trị 80 (trong hệ Hexa) Các byte 00 Ví dụ: Kích thước khối byte, số byte cần thêm vào byte: …| DD DD DD DD DD DD DD DD | DD DD DD DD 80 00 00 00 | 1.1.3 Zero Padding Tất byte thêm vào số 0, kỹ thuật không coi chuẩn để mã hóa Ví dụ: Kích thước khối byte, số byte cần thêm byte: …| DD DD DD DD DD DD DD DD | DD DD DD DD 0 0 | Tìm hiểu công Padding Oracle lên chế độ CBC mã khối Tr.6 1.3 Giới thiệu CBC mode hoạt động mã khối Trong chế độ này, khối tin trước mã hóa XOR với khối mã sinh từ bước trước X1 = X1’ ⊕ IV X2 = X2’ ⊕ Y1 Xi = Xi’ ⊕ Yi-1 Mô hình CBC hình Ci = E(Pj ⊕ Ci-1, K) với i=2,3…N-1 Việc mã hóa khối đầu tiên, người ta dùng khối liệu giả gọi vecter khởi tạo (initialization vecter-IV) chọn ngẫu nhiên: C = E(K,[IV⊕P1]) Để giả mã, tiến hành ngược lại: P1=D(K,C1) ⊕IV Pj= D(K,Cj) ⊕ Cj-1 với j= 2,…,N Hình Mô hình CBC mã khối Như vâỵ khối mã phụ thuộc chặt theo kiểu “móc xích” Người mã hóa giải mã phải sử dụng chúng vector khởi tạo IV Vector khởi tạo không vần giữ bí mật nên thường gán vào trước mã trước truyền thông điệp (IVC 1…Cn -1) Tóm lược, Mã hóa Giải mã CBC C1 = E(K,[IV⊕P1]) Ci = E(Pj ⊕ Ci-1, K) với i=2,3…N-1 P1=D(K,C1) ⊕IV Pj= D(K,Cj) ⊕ Cj-1 với j= 2,…,N Tìm hiểu công Padding Oracle lên chế độ CBC mã khối Tr.7 CHƯƠNG PADDING ORACLE ATTACK 2.1 Giới thiệu Padding Oralce attack Đầu tiên, lỗ hổng không liên quan đến CSDL Oracle hay Oracle company Trong mật mã học, “oracle ” hệ thống mà việc mã hóa thực việc tham gia vào đầu vào định Có thể hiểu, oracle hộp đen đáp ứng yêu cầu Có thể hình dung giao thức dựa hàm băm, với đầu vào ngẫu nhiên, trả đầu liệu ngẫu nhiên tương ứng Do đó, “Padding oracle ” loại hộp đen mà giải mã thông điệp đầu vào nói cho bạn biết việc padding hay sai Tưởng tượng trường hợp A connect đến server B gửi encrypted message (C) với key thỏa thuận từ trước sử dụng CBC, B có ứng dụng (app) làm nhiệm vụ: Nhận cypher text Decrypt cypher text=> plain text Kiểm tra định dạng plain text, padding không đúng=> return ER_PADDING Đọc liệu plain text => return SOMETHING_ELSE Giả sử cách đó, attacker có đoạn encrypted message (C) này, kỹ thuật Padding oracle decrypt đoạn C mà không cần key thông tin thuật toán mã hóa Bạn hiểu đơn giản này, Padding oracle kỹ thuật dựa vào hành động xử lý ngoại lệ chế độ mã khối Dù attacker padding hay sai, trả kết tương ứng, từ đó, attacker dò thông tin bytes hay bít cuối Để hiểu thêm, nhìn vào hai đoạn liệu Chúng có block size Đoạn 1, ta dễ dàng thấy chia thành đoạn với block size (8A + 8B + 8C) Nhưng với đoạn 2, phần cuối rút chữ Vì để apply block size 8, ta phải cần đến padding Đoạn 1: AAAAAAAABBBBBBBBCCCCCCCC Đoạn 2: AAAAAAAABBBBBBBBCCCC Đơn giản padding thêm vào đoạn bit cần thiết trước mã hóa để tạo khối rõ ràng Dưới tình padding khác Tuy nhiên, ta dùng tiêu chuẩn PKCS #5 Ở chuẩn PKCS#5 block cuối đoạn rõ pad với N byte với giá trị N Ví dụ, hình dưới, tất có block size bytes Tại ví dụ 1, có byte thiếu, tất chỗ trống thêm vào giá trị 0x05 Tương tự, ví dụ có byte bị thiếu, chỗ lại điền với giá trị 0x01 Tìm hiểu công Padding Oracle lên chế độ CBC mã khối Tr.8 Hình Một số ví dụ padding Kịch công: Cuối với tất thông tin hữu ích cần phải biết, tập trung tiến hành công Đầu tiên giả sử ta có đoạn URL đây: https://www.example.com/home.asp? UID=8A219A434525535FF324D4G56FC95348 Giả sử thông tin gửi qua tham số UID ( username ) mã hóa CBC mode tiêu chuẩn PKCS#5 Do ứng dụng giã mã giá trị trả kết Nói cách khác, có trường hợp xảy ứng dụng gửi UID khác Trường hợp 1: Đoạn văn mã hóa xác – Hợp lệ load page bình thường Trường hợp Đoạn văn mã hóa không xác( với đoạn padding không ) – Page không hợp lệ ( 404 ) Trường hợp 3: Đoạn văn mã hóa xác padding không hợp lệ - Lỗi Ví dụ tình 1: Bạn gửi giá trị UID 8A219A434525535FF324D4G56FC95348 giải mã để thành ‘tom’ Sau ứng dụng gửi response bình thường ( đoạn URL mà ‘tom’ nhận sau logging in) Ví dụ tình 2: Bạn gửi giá trị UID=998877PA434525535FF324D4G56FC95348 ứng dụng giải mã thành ‘xxx’ ( user không hợp lệ ) Ứng dụng trả 404 message Ví dụng tình 3: Bạn gửi giá trị UID=66IXS7IA434525535FF324D4G56FC95348 giải mã thành ‘sam’ ( user hợp lệ ) với padding không hợp lệ Ứng dụng trả exception Tìm hiểu công Padding Oracle lên chế độ CBC mã khối Tr.9 Do đó, bạn gửi đoạn văn mã hóa khác tìm giải mã giả trị khác với padding padding ta giải mã đoạn mã hóa cho sẵn Khai thác: Hãy nhìn vào mô hình giải mã CBC mode đây: Hình Sơ đồ giải mã CBC mode Trong giải mã CBC, đoạn mã hóa xor với đoạn block trước để plaintext Cho nên ta có: https://www.example.com/home.asp?UID=8A219A43|4525535F|F324D4G5| 6FC95348 Cipher blocks: 8A219A43| 4525535F| F324D4G5| 6FC95348 Hình CBC mode decryption Các bước công: Nếu request với block khởi đầu toàn số 0, ứng dụng khả trả 500 Tìm hiểu công Padding Oracle lên chế độ CBC mã khối Tr.10 Hình Kết nhận padding byte Nhưng bây giờ, gửi request tương tự tăng giá trị block khởi đầu lên https://www.example.com/home.asp?UID=00000001|4525535F|F324D4G5| 6FC95348 Hình Kết nhận tăng padding block khởi đầu lên Chú ý mặc request trả error, giả trị cuối đoạn giải mã thay đổi ta gửi 0x01 request Do đó, ta tang vài byte cuối IV lên vài lần ( lên tới FF ) đạt giá trị padding hợp lệ Hình Kết nhận padding Từ đây, suy " intermediary value " vị trí này, biết XORed với 0x3C, tạo 0x01 Nếu [intermediary Byte] ^ 0x3C == 0x01, sau [intermediary Byte] == 0x3C ^ 0x01, [intermediary Byte] == 0x3D Tìm hiểu công Padding Oracle lên chế độ CBC mã khối Tr.11 Một bạn biết giá trị byte trung gian, suy giá trị thực tế giải mã Chỉ cần XOR với văn mật mã trước Hình sau thể điều Hình 10 Vận dụng để đoán plaintext 2.2 Using Padding Oracle attack 1.1.4 Cracking CAPTCHA CAPTCHA loại kiểm thử dạng hỏi đáp dùng máy tính để xác định xem người dùng có phải người hay không Đây trình máy tính (máy chủ) yêu cầu người dùng hoàn tất kiểm tra đơn giản mà máy tính dễ dàng tạo đánh giá, tự giải Vì máy tính giải CAPTCHA, người dùng nhập vào lời giải xem người Một loại CAPTCHA phổ biến yêu cầu người dùng phải nhập chữ hình méo mó, với dãy số chữ lờ mờ xuất hình Một số hệ thống CAPTCHA dựa mật mã ví dụ đơn giản cho padding oracle attack Một hệ thống CAPTCHA bị tổn thương làm việc sau: Server sinh random code, mã hóa sử dụng CBC-mode với khóa K IV ERC=EK,IV(rand()) ERC sử dụng tham số cho số captcha.jsp mà nhận được, giải mã nó, tạo hình ảnh méo mó Nếu form HTML tương tự với platform ngôn ngữ lập trình khác, sử dụng Java/JSP ví dụ Tìm hiểu công Padding Oracle lên chế độ CBC mã khối Tr.12 để CAPTCHA, đặt giống /captcha.jsp?token=ERC vào thẻ để tải hình ảnh méo mó ERC lưu trữ trường ẩn form CAPTCHA cookie, một người dùng submit, gửi trở lại cho server Sau server vào giải mã ERC, so sánh với mã mà người dùng nhập Nếu nhau, server chấp nhận yêu cầu không từ chối Bởi captcha.jsp giải mã ERC gửi đến nó, nên dễ bị padding oracle attack Bây xem xét padding VALID, không May mắn là, hầu hết hệ thống CAPTCHA gửi lại thông báo lỗi thất bại việc giải mã ERC, chẳng hạn, padding INVALID Một số server gửi phản hồi trống HTML với error mesage Ngoài ra, sửa đổi ERC để padding VALID, captcha.jsp hiển thị hình ảnh với broken code Nếu thứ làm việc theo cách đó, attckers có padding oracle, họ sử dụng giải mã ERC để nhận mã số ngẫu nhiên , hoàn toàn bỏ qua bảo vệ CAPTCHA CAPTCHA với IV bí mật: P0 = IV ⊕ DPaddingOracle(C0) Attacker cần phải biết IV để có P Nói cách khác, IV bí mật giải mã block phá vỡ hệ thống CAPTCHA mà P chứa phần mã ngẫu nhiên Đối với hệ thống CAPTCHA mà tác giả tìm thấy nghiên cứu, IV phục hồi dễ dàng với can thiệp người Hầu hết lần văn hiển thị hình ảnh CAPTCHA xác giống P Vì vậy, attacker biết DPadding Oracle(C0), sau họ tính toán IV bí mật sau: IV = Human ⊕ DPaddingOracle(C0) Ở ký hiệu Human đọc P0 từ hình ảnh CAPTCHA Điều hữu ích để công hệ thống CAPTCHA, khám phá IV lần cho phép attacker giải mã thách thức mới, IV không thay đổi, can thiệp người 1.1.5 Giải mã JSF ViewStates JavaServer Faces (JSF) giới thiệu hệ thống mạnh mẽ linh hoạt để lưu khôi phục lại trạng thái thời điểm request gửi đến server Triển khai JSF hỗ trợ hai chế để lưu trạng thái, dựa giá trị javax.faces tham số khởi STATE_SAVING_METHOD Nếu tham số thiết lập cho client, trạng thái lưu bao gồm việc đánh dấu thời điểm postback gửi cho client (chẳng hạn hidden input cho HTML?) Các thông tin trạng thái phải bao gồm Tìm hiểu công Padding Oracle lên chế độ CBC mã khối Tr.13 yêu cầu tiếp theo, làm cho JSF khôi phục lại mà không cần thông tin lưu server Mặc dù đặc điểm kỹ thuật JSF khuyên thông tin states phải mã hóa giả lộn xộn, biết không thực Một số framework SUN Mojarra and Apache MyFaces có mã hóa thông tin states, họ không bảo vệ toàn vẹn states mã hóa mà làm cho chúng dễ bị công padding oracle Theo mặc định, tất framework JSF hiển thị thông báo lỗi chi tiết giải mã view stste thất bại, điều làm cho việc padding oracle trở lên rõ ràng: thấy javax.crypto.BadPaddingException padding INVALID, không padding VALID Hầu hết JSF framework cho phép tắt chức thông báo lỗi Do đó, attacker sử dụng số thủ thuật sau Nếu attacker muốn giải mã block C i mã hóa view state C0|C1| |Cn – 1, sau gắn thêm random C i để tạo thành C0|C1| |Cn-1|Crandon|Ci gửi thông điệp tới server Vì JSF framework lờ giả mã block thêm vào giải mã deserializing viewstate mà attacker đánh cược việc padding VALID server trả trang giống chưa tác động Nó INVALID padding thấy có thay đổi, thông báo lỗi HTML 500 Viewstates thường không chứa liệu nhạy cảm, ý chứa quản lý liệu bí mật 2.3 Một số Web Framework dễ bị công Padding Oralce 1.1.6 Ruby On Rails Ruby On Rails tạo vào năm 2003, framework phát triển web sử dụng rộng rãi giới Kể từ phiên 2.3, Ruby On Rails giới thiệu ActiveSupport :: MessageEncryptor, tập hợp chức cung cấp cách mã hóa thông tin đơn giản để lưu trữ vị trí không đáng tin cậy (như cookie) Nếu bạn nhìn vào mã nguồn ActiveSupport :: MessageEncryptor, bạn thấy ứng dụng cung cấp chức mã hóa/ giải mã bị công padding oracle Mặc dù vậy, họ giữ 1.1.7 OWASP ESAPI OWASP ESAPI, viết tắt OWASP Enterprise Security API Toolkits, dự án yêu cầu bồi thường để "giúp nhà phát triển phần mềm bảo vệ chống lại an ninh liên quan đến thiết kế thực sai sót" Tuy nhiên, tất OWASP ESAPI cho Java lên đến phiên 2.0 RC2 dễ bị công padding oracle Tìm hiểu công Padding Oracle lên chế độ CBC mã khối Tr.14 KẾT LUẬN Trong đề tài “Tìm hiểu công Padding Oracle lên chế độ CBC mã khối”, nhóm em trình bày phần làm rõ kỹ thuật công padding oracle Các kỹ thuật công nâng cao Tài liệu viết mang tính chất tìm hiểu, trình độ kinh nghiệm ứng dụng thực tế nhóm hạn chế nên chắn tránh khỏi sai sót Mong thầy cô bạn nhiệt tình đóng góp ý kiến để chúng em hoàn thiện tiếp thu kiến thức đắn bổ ích Tìm hiểu công Padding Oracle lên chế độ CBC mã khối Tr.15 TÀI LIỆU THAM KHẢO [1] Nguyễn Đình Vinh, Trần Đức Sự, Vũ Thị Vân, Giáo trình Cơ sở an toàn thông tin, Học viện Kỹ thuật mật mã, 2013 [2] http://robertheaton.com/2013/07/29/padding-oracle-attack/ [3] Juliano Rizzo & Thai Duong, Practical Padding Oracle Attacks [4] http://resources.infosecinstitute.com/padding-oracle-attack-2/ [5] http://www.dotblogs.com.tw/kevintan1983/archive/2010/10/07/18161.aspx , Tìm hiểu công Padding Oracle lên chế độ CBC mã khối Tr.16 [...]... Java lên đến phiên bản 2.0 RC2 đều dễ bị tấn công padding oracle Tìm hiểu tấn công Padding Oracle lên chế độ CBC của mã khối Tr.14 KẾT LUẬN Trong đề tài Tìm hiểu tấn công Padding Oracle lên chế độ CBC của mã khối , nhóm em đã trình bày và phần nào làm rõ được kỹ thuật tấn công padding oracle Các kỹ thuật tấn công cơ bản và nâng cao Tài liệu được viết dưới đây chỉ mang tính chất tìm hiểu, do trình độ. .. 8A219A43| 4525535F| F324D4G5| 6FC95348 Hình 6 CBC mode decryption Các bước tấn công: Nếu request dưới đây với block khởi đầu là toàn số 0, ứng dụng khả năng sẽ trả về 500 Tìm hiểu tấn công Padding Oracle lên chế độ CBC của mã khối Tr.10 Hình 7 Kết quả nhận được khi padding 8 byte 0 Nhưng bây giờ, gửi một request tương tự nhưng tăng giá trị của block khởi đầu lên 1 https://www.example.com/home.asp?UID=00000001|4525535F|F324D4G5|... thuật mật mã, 2013 [2] http://robertheaton.com/2013/07/29 /padding- oracle- attack/ [3] Juliano Rizzo & Thai Duong, Practical Padding Oracle Attacks [4] http://resources.infosecinstitute.com /padding- oracle- attack-2/ [5] http://www.dotblogs.com.tw/kevintan1983/archive/2010/10/07/18161.aspx , Tìm hiểu tấn công Padding Oracle lên chế độ CBC của mã khối Tr.16 ... giải mã thành ‘xxx’ ( user không hợp lệ ) Ứng dụng có thể sẽ trả về 404 message Ví dụng tình huống 3: Bạn gửi đi giá trị UID=66IXS7IA434525535FF324D4G56FC95348 và giải mã thành ‘sam’ ( user hợp lệ ) nhưng với padding không hợp lệ Ứng dụng sẽ trả về một ngoài exception Tìm hiểu tấn công Padding Oracle lên chế độ CBC của mã khối Tr.9 Do đó, nếu bạn có thể gửi các đoạn văn bản mã hóa khác nhau và tìm giải... Byte] == 0x3C ^ 0x01, như vậy [intermediary Byte] == 0x3D Tìm hiểu tấn công Padding Oracle lên chế độ CBC của mã khối Tr.11 Một khi bạn biết giá trị byte trung gian, chúng ta có thể suy ra những gì giá trị thực tế là giải mã Chỉ cần XOR nó với các văn bản mật mã trước đó Hình sau thể hiện điều đó Hình 10 Vận dụng để đoán plaintext 2.2 Using Padding Oracle attack 1.1.4 Cracking CAPTCHA CAPTCHA là một loại... tế của nhóm còn hạn chế nên chắc chắn không thể tránh khỏi những sai sót Mong rằng thầy cô và các bạn nhiệt tình đóng góp ý kiến để chúng em có thể hoàn thiện và tiếp thu những kiến thức đúng đắn và bổ ích Tìm hiểu tấn công Padding Oracle lên chế độ CBC của mã khối Tr.15 TÀI LIỆU THAM KHẢO [1] Nguyễn Đình Vinh, Trần Đức Sự, Vũ Thị Vân, Giáo trình Cơ sở an toàn thông tin, Học viện Kỹ thuật mật mã, ... thái phải bao gồm các Tìm hiểu tấn công Padding Oracle lên chế độ CBC của mã khối Tr.13 yêu cầu tiếp theo, làm cho JSF có thể khôi phục lại mà không cần thông tin được lưu trên server Mặc dù đặc điểm kỹ thuật JSF khuyên rằng thông tin states phải được mã hóa và giả lộn xộn, nhưng như chúng ta biết thì nó không được thực hiện Một số framework như SUN Mojarra and Apache MyFaces có mã hóa thông tin states,... một ví dụ Tìm hiểu tấn công Padding Oracle lên chế độ CBC của mã khối Tr.12 để hiện một CAPTCHA, nó chỉ đặt một cái gì đó giống như /captcha.jsp?token=ERC vào một thẻ để tải một hình ảnh méo mó 3 ERC sẽ được lưu trữ hoặc như là một trường ẩn trong các form CAPTCHA hoặc như một cookie, vì vậy một khi một người dùng submit, nó sẽ được gửi trở lại cho server 4 Sau đó server đi vào giải mã ERC, và... states, nhưng họ không bảo vệ sự toàn vẹn của states được mã hóa mà làm cho chúng dễ bị tấn công padding oracle Theo mặc định, tất cả các framework JSF sẽ hiển thị một thông báo lỗi rất chi tiết nếu giải mã một view stste thất bại, điều này làm cho việc padding oracle trở lên rất rõ ràng: nếu thấy javax.crypto.BadPaddingException thì padding INVALID, nếu không là padding VALID Hầu hết các JSF framework... của mã khối Tr.9 Do đó, nếu bạn có thể gửi các đoạn văn bản mã hóa khác nhau và tìm giải mã các giả trị khác nhau với padding hoặc không có padding ta có thể giải mã các đoạn mã hóa cho sẵn Khai thác: Hãy nhìn vào mô hình giải mã CBC mode dưới đây: Hình 5 Sơ đồ giải mã trong CBC mode Trong giải mã CBC, mỗi đoạn mã hóa được sẽ được xor với đoạn block trước để được plaintext Cho nên ta có: https://www.example.com/home.asp?UID=8A219A43|4525535F|F324D4G5|

Ngày đăng: 26/06/2016, 09:35

Xem thêm: Tìm hiểu tấn công Padding Oracle lên chế độ CBC của mã khối

TỪ KHÓA LIÊN QUAN

Mục lục

    Chương 1. các khái niệm cơ bản

    1.1. Mã hóa khối - Block Ciphers

    1.2. Một số kĩ thuật Padding

    1.3. Giới thiệu CBC mode trong hoạt động mã khối

    2.1. Giới thiệu về Padding Oralce attack

    2.2. Using Padding Oracle attack

    2.3. Một số Web Framework dễ bị tấn công Padding Oralce

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w