TẤN CÔNG MÃ PIN DỰA VÀO BẢNG CHUYỂN ĐỔI THẬP PHÂN CIMALISATION TABLE ATTACKS FOR PIN CRACKING Tóm tắt: Bài báo trình bày một cách tấn công bảo mật phần cứng trong các cấu trúc ATM mà cá
Trang 1TẤN CÔNG MÃ PIN DỰA VÀO BẢNG CHUYỂN
ĐỔI THẬP PHÂN
(CIMALISATION TABLE ATTACKS FOR PIN
CRACKING)
Tóm tắt:
Bài báo trình bày một cách tấn công bảo mật phần cứng trong các cấu trúc ATM mà các chi nhánh ngân hàng sử dụng để lưu trữ bảo mật và xác thực mã PIN của khách hàng Bằng cách sử dụng bảng chuyển đổi số thập phân thích nghi (Adaptive Decimalisation table) và phỏng đoán, một lượng thông tin tối đa về mã PIN thật được khám phá dựa trên mỗi lần đoán Trung bình ta mất khoảng 15 lần phỏng đoán để xác định được 4 ký số của
mã PIN bằng kỹ thuật này Trong 30 phút nghỉ trưa, kẻ tấn công có thể tìm ra được
khoảng 7000 mã PIN bằng kỹ thuật này thay vì 24 nếu thực hiện bằng phương pháp vét cạn Với giới hạn rút được 300 bảng Anh (mỗi ngày) cho mỗi thẻ, số tiền đánh cắp có thể tăng từ 7200 bảng lên tới 2.1 triệu bảng Một kẻ tấn công tích cực có thể rút từ 30.000 đến 50.000 bảng một ngày Cách tấn công này là một mối đe dọa nghiêm trọng cho việc bảo mật của các ngân hàng
1 Giới thiệu
Máy rút tiền tự động (Automatic Teller Machine –ATM) được sử dụng bởi hàng triệu khách hàng mỗi ngày Tuy nhiên, việc lắp đặt các máy ATM rộng khắp, và đôi khi ở các nơi biệt lập đã biến nó thành những công cụ lý tưởng cho những kẻ tội phạm đánh cắp tiền
Mã PIN khách hàng là phương thức bảo mật sơ cấp chống lại sự giả mạo; việc giả mạo các vạch từ trên các thẻ thì dễ hơn so với việc có được mã PIN Thậm chí, ngay cả khi đã đánh cắp được thẻ mà không biết được mã PIN thì tên trộm cũng chỉ có duy nhất 3 cơ hội đoán mã PIN trong số 10.000 mã PIN có thể có, xác suất thành công là rất thấp và hầu như không đáng kể Ngay cả khi tên trộm may mắn thành công, thì kẻ này cũng không thể rút ra được số tiền vượt quá 300 bảng mỗi ngày Tuy nhiên, những lập trình viên ở ngân hàng có thể truy cập vào hệ thống máy tính cộng tác với kho lưu trữ bảo mật các mã PIN, thông thường là một hệ thống bao gồm một máy tính lớn (mainframe) được kết nối với một thiết bị phần cứng bảo mật HSM (Hardware Security Module) có thể chống sự giả mạo và có một giao diện API hạn chế chỉ trả lời YES/NO đối với phỏng đoán của khách hàng
Một cách tấn công thô sơ là mua chuộc một lập trình viên của ngân hàng để viết một chương trình thử tất cả các PIN cho một tài khoản đặc biệt nào đó Tỉ lệ may mắn trung bình là mất khoảng 5000 giao dịch để tìm ra mỗi mã PIN Một HSM mỗi giây có thể kiểm tra khoảng 60 lần thử mã PIN, như vậy một lập trình viên bị mua chuộc thực thi chương trình trong suốt 30 phút nghỉ trưa chỉ có thể thử được 25 mã PIN
Trang 2Tuy nhiên, các HSM cài đặt một vài phương thức sinh mã PIN phổ biến có lổ hổng Các máy ATM thế hệ đầu tiên là dòng IBM 3624s được chào bán rộng khắp ở nước Mỹ vào khoảng năm 1980, và hầu hết các phương thức sinh mã PIN đều dựa trên giải pháp của
họ, theo đó mã PIN được tính toán bằng cách mã hóa số tài khoản được in ở mặt trước của thẻ với một khóa bảo mật DES được gọi là “khóa phát sinh mã PIN” Mã phát sinh được chuyển đổi sang số dạng thập lục phân và chỉ giữ lại 4 chữ số đầu tiên, để chuyển đổi giá trị này sang mã PIN có thể nhập được từ bàn phím thập phân, một bảng chuyển đổi (decimalisation table) được sử dụng, ánh xạ (nhiều sang một) giữa các số thập lục phân và các số thập phân Ví dụ, ta có thể sử dụng các bảng chuyển đổi thập phân sau đây (bảng bên trái là bảng điển hình, rất thường được sử dụng)
Hình 1: Bảng chuyển đổi thập phân
Bảng chuyển đổi không được xem là dữ liệu đầu vào nhạy cảm đối với nhiều HSM, do đó
ta có thể cung cấp một bảng chuyển đổi bất kỳ cho một tài khoản và một mã PIN thử Bằng cách khéo léo thay đổi nội dung của bảng chuyển đổi chúng ta có thể suy diễn được nhiều thông tin của mã PIN chứ không chỉ đơn giản là loại đi một khả năng kết hợp Ví
dụ, nếu bảng chuyển đổi bên phải được sử dụng mà cho kết quả là 0000 thì ta có thể khẳng định rằng trong mã PIN ban đầu không có chứa số 7, và như thế loại được 10% các khả năng kết hợp
Đầu tiên bài báo giới thiệu một phương thức đơn giản có thể suy diễn hầu hết các mã PIN với khoảng 24 lần phỏng đoán, và sau đó trình bày một phương thức sửa đổi (thích nghi) nhằm tối đa hóa lượng thông tin học hỏi được từ mỗi lần phỏng đoán, và mất trung bình khoảng 15 lần đoán để có được mã PIN Cuối cùng, một phương thức thứ 3 được trình bày minh hoạ việc tấn công vẫn có thể thực hiện được cho dù kẻ tấn công không thể kiểm soát được việc chọn lựa một cách thích hợp mã PIN nào dùng để làm giá trị so sánh Phần 2 của bài báo trình bày cách tấn công trong ngữ cảnh của môi trường ngân hàng và giải thích tại sao nó có thể không bị phát hiện bởi các tiêu chuẩn bảo mật thông thường Phần 3 sẽ mô tả phương pháp phát sinh mã PIN và các phương pháp xác thực mã PIN, phần 4 mô tả chi tiết thuật toán mà các tác giả thiết kế Phần 5 trình bày các kết quả thử nghiệm, thảo luận các tiêu chuẩn phòng ngừa, trong phần 6 Phần 7 sẽ là kết luận
2 Bảo mật ở ngân hàng
Các ngân hàng có truyền thống đi đầu trong việc phòng chống gian lận cả từ bên trong lẫn bên ngoài Họ đã phát triển các phương pháo ngăn ngừa gian lận bên trong như: kế toán kép (để so sánh, đối chiếu, kiểm soát chéo, …), phân chia chức năng, các kỳ nghĩ bắt buộc đối với nhân viên, và họ nhận ra rằng kiểm toán định kỳ là một yêu cần cân có Những phương thức này thành công trong việc giảm thiểu gian lận đến mức chấp nhận được đối với các ngân hàng, cùng với với 1 khung luật pháp thích hợp về trách nhiệm pháp lý, họ có thể bảo vệ khách hàng của mình tránh được những hậu quả của việc giả mạo
Trang 3Tuy nhiên, sự gia tăng độ phức tạp của các hệ thống máy tính ngân hàng đã không đi cùng với việcphát triển hiệu quả nhận thức về các phương pháp phòng chống sự giả mạo, gian lận Việc sử dụng các HSM để bảo vệ các mã PIN khách hàng là một hướng phát triển đúng đắn, nhưng thậm chí đến năm 2002, những thiết bị này vẫn chưa được chấp nhận rộng rãi trên toàn cầu và thời gian qua đã chứng tỏ rằng các thiết bị này cũng không phải là không có lổ hỗng để tấn công
Các hoạt động thực tế điển hình của các ngân hàng chỉ là tìm cách giảm thiểu sự gian lận xuống tới mức có thể chấp nhận được, nhưng ý định này đã được diễn dịch một cách nghèo nàn sang các yêu cầu bảo mật Do đó, họ luôn phải đối phó với một sự rủi ro rất khó chấp nhận trong các hệ thống bảo mật hiện đại, ở đó sức mạnh (robustness) được xem như vấn đề sống còn
Tương tự trong việc thiết kế các giải thuật mật mã Các nhà thiết kế chỉ thiết kế các giải thuật “vừa đủ mạnh” do phải hy sinh tính vững mạnh để đánh đổi lấy tốc độ và sự thoả hiệp bên ngoài (với khách hàng), do đó họ đang chơi một trò chơi nguy hiểm Sự phá vỡ mật mã A5 của điện thoại di động GSM là một trong số các ví dụ
Ngay cả khi các giải thuật mật mã “vừa đủ mạnh” tiếp tục được sử dụng thì nguy cơ gian lận từ việc đoán mã PIN theo phương pháp brute force (vét cạn) vẫn được xem là có thể chấp nhận được Cần phải mất 10 phút để đoán 1 mã PIN với tốc độ giao dịch tối đa của các thiết bị điển hình trong những thập niên 80 Hy vọng các khách hàng sẽ phát hiện ra các khoản tiền bị rút vô chủ và báo với ngân hàng trước khi kẻ tấn công có đủ số mã PIN
để gây một lượng nợ đáng kể từ ngân hàng Ngay cả đối với các máy HSM sau này có tốc
độ giao dịch tăng gấp 10 lần thì số tiền bị lấy cắp vẫn được xem là không đáng kể theo quan điểm từ phía ngân hàng
Tuy nhiên hiện nay bảng chuyển đổi thập phân đã được xem như là một danh mục dữ liệu
có liên quan đến bảo mật, và các phương pháp tấn công được mô tả trong bài báo này sẽ cho ta thấy cách thức làm thế nào để tận dụng việc không kiếm soát truy xuất đối với bảng chuyển đổi thập phân Số mã PIN để mở khoá truy nhập cho các tài khoản với giá trị lên đến 2 triệu bảng có thể đánh cắp được chỉ trong vòng 1 giờ nghỉ ăn trưa
Tai hại hơn là các vụ ăn cắp vặt, trong đó các giao dịch được ngụy trang trong các mục kiểm toán của ngân hàng Kiểm chứng mã PIN không được kiểm toán tập trung, và dù cho có đi nữa, thì cũng rất khó cho một kế toán viên phát hiện ra được 15 giao dịch không hợp lệ trong hàng triệu giao dịch Các hệ thống phát hiện xâm nhập cũng không làm việc khá hơn Giả dụ ngân hàng có một hệ thống kiểm toán chặt chẽ theo dõi số lần nhập sai của một tài khoản và phát sinh báo động nếu có 3 lần nhập sai trong một phiên giao dịch, thì kẻ tấn công vẫn có thể dò mã PIN mà không phát sinh báo động bằng cách chèn các giao táo tấn công trước các giao tác xác thực và khởi động lại bộ đếm (để đừng bao giờ đếm tới 3) Dù hệ thống phát hiện xâm nhập có sử dụng chính sách nào đi nữa thì cũng khó giữ bí mật và một lập trình viên lão luyện vẫn có thể lách qua Lý do chủ yếu để các HSM được đưa vào các ngân hàng là các hệ điều hành máy chủ (mainframe) chỉ có
đủ khả năng để bảo vệ tính toàn vẹn dữ liệu, chứ không đủ tin cậy để giữ dữ liệu bí mật trước các lập trình viên
Trang 4Trong khi chờ đợi lợi ích kinh tế có thể mang lại từ việc bịt các lổ hỗng bảo mật phát triển sang một lĩnh vực chín chắn hơn, các ngân hàng cần thiết phải cập nhật các chiến lược quản lý rủi ro của mình có tính đến sự không ổn định của công nghiệp bảo mật Họ phải có trách nhiệm đối với khách hàng trong việc ước tính các khoản nợ do bị lừa lọc trong những tình huống cụ thể trong khi các bước phát triển trong bảo mật máy tính sẽ liên tục vẽ lại bức tranh toàn cảnh nơi diễn ra các cuộc tranh chấp giữa các ngân hàng và các khách hàng của họ
3 Các kỹ thuật phát sinh và kiểm tra mã PIN
Có một số kỹ thuật phát sinh và kiểm tra mã PIN, mỗi kỹ thuật độc quyền gắn kết chặt chẻ giữa các ngân hàng và một nhà sản xuất nào đó nơi được các ngân hàng ủy thác phát triển hệ thống sản sinh mã PIN IBM CCA cho ta 1 ví dụ mẫu điển hình, được minh hoạ trong hình 2 Phương pháp IBM 3624-Offset sẽ được mô tả chi tiết, vì nó điển hình cho cách sử dụng bảng chuyển đổi sang hệ thập phân
Hình 2: Các phương pháp phát sinh mã PIN thông dụng
3.1 Phương pháp phát sinh mã PIN IBM 3624-Offset
Phương pháp IBM 3624-Offset được phát triển để hỗ trợ cho các máy ATM thế hệ đầu tiên và do đó được chấp nhận rộng rãi và được sử dụng lại (nhại lại) bởi các phương pháp khác Phương pháp được thiết kế sao cho các máy ATM offline có thể kiểm tra các mã PIN khách hàng mà không cấn đến khả năng xử lý và lưu trữ để thao tác toàn bộ cơ sở
dữ liệu các mẫu tin tài khoản khách hàng Thay vào đó, một cơ chế được phát triển để có thể tính toán mã PIN từ số tài khoản được mã hóa bằng 1 khoá bí mật Số tài khoản được
in sẵn trên phần mã từ vạch của thẻ, do đó ATM chỉ cẩn lưu trữ 1 khóa bí mật Một ví dụ
về cách tinh mã PIN được trình bày trong hình 4
Số tài khoản được biểu diễn dưới dạng các chữ số ASCII, và được hiểu như là 1 dữ liệu đầu vào dạng hex (hệ thập lục phân) đối với bộ mã hoá DES Sau khi đã được mã hóa bởi
1 khoá tạo mã PIN bí mật, dữ liệu đầu ra được chuyển đổi sang các số hex (hệ thập lục phân), chỉ giữ lại 4 chữ số đầu tiên (các số khác bỏ đi) Tuy nhiên, các số hex có thể chứa các ký số ‘A’ – ‘F’ có thể gây nhầm lẫn đối với khách hàng và không có sẵn trên bàn
Trang 5phím thập phân, do đó nó sẽ được ánh xạ ngược trở lại các con số thập phân bằng cách sử dụng 1 bảng chuyển đổi sang hệ thâp phân (decimalisation table) (Hình 3)
Hình 3: Bảng chuyển đổi thập phân điển hình
Hình 4: Phương pháp sinh mã PIN IBM 3624-Offset
Mã PIN mẫu 3F7C qua bảng chuyển đổi trở thành 3572 Cuối cùng, để cho phép những chủ sở hữu thẻ ATM có thể thay đổi mã PIN, một độ dời (offset) được thêm vào và được lưu trữ trong cơ sở dữ liệu của máy tính lớn (mainframe) cùng với số tài khoản Khi máy ATM kiểm tra mã PIN nhập, nó chỉ đơn giản trừ đi độ dời từ số trên thẻ trước khi so sánh với kết quả mã hóa của số đã được chuyển đổi sang số thập phân
3.2 Hardware Security Module (HSM) APIs
HSM được dùng để bảo vệ khóa của mã PIN khỏi những nhân viên có mưu đồ xấu và những kẻ tấn công ở bên trong HSM là một bộ xử lý đồng hành ngăn chặn sự giả mạo bằng cách chạy phần mềm cung cấp chức năng mật mã hoá và các dịch vụ có liên quan Các API của nó được thiết kế để bảo vệ các dữ liệu mật cá nhân và tính toàn vẹn dữ liệu, nhưng vẫn cho phép truy xuất tùy theo chính sách người dùng (cho phép người dùng truy cập vào máy chủ và thực hiện các lệnh như: xác nhận mã PIN, nhưng vẫn đảm bảo các chức năng nhạy cảm như tải khóa mới chỉ có thể được thực hiện bởi các nhân viên được tin tưởng) được cấu hình trước Các API về tài chính tiêu biểu chứa các giao tác dùng để phát sinh ra và kiểm tra mã PIN, diễn dịch các mã PIN phỏng đoán giữa các khóa mã hóa khác nhau khi chúng được truyền giữa các ngân hàng, đồng thời hỗ trợ các chức năng quản lý khóa
CCA (Common, Cryptographic Architecture) của IBM là một API về tài chính được cài đặt bởi một loạt các HSM của IBM, bao gồm 4758 và bộ đồng xử lý mã hóa CMOS dùng cho PCs và các mainframes)
Trong hàm xác nhận mã PIN CCA thì đầu vào là bảng chuyển đổi số thập, số tài khoản
và khối mã hóa PIN Hai thành phần đầu được cung cấp một cách tường minh do đó rất
Trang 6dễ bị hacker thao túng, nhưng để có được khối mã hóa PIN đặc trưng cho mã PIN được chọn để thử thì khó hơn nhiều
3.3 Lấy mã pin đã được mã hóa để thử
Lệnh CCA thích hợp được dùng là Clear_PIN_Encrypt, lệnh này sẽ tạo ra một khối mã PIN đã được mã hóa từ mã PIN được chọn Cũng cần phải chú ý rằng lệnh này cũng có khả năng đem lại những rủi ro khác làm cho chúng ta bị tấn công
Nếu không đệm dữ liệu thêm mã PIN một cách ngẫu nhiên trước khi chúng được đem đi
mã hóa thì kẻ tấn công có thể tạo ra một danh sách các mã PIN thử đã mã hóa đã được biết trước, so sánh mỗi mã PIN đã được mã hóa đang đến với danh sách này và dễ dàng xác định được giá trị của nó
Nếu cần thiết phải dùng mã PIN thực mà không đệm ngẫu nhiên, một số hệ thống sẽ bắt buộc là mã PIN thực chỉ được mã hóa bởi một khóa khi chuyển sang ngân hàng khác để
kẻ tấn công không thể đoán được
Vì thế, với giả sử rằng kẻ tấn công không có được mã PIN thực thì lựa chọn thứ hai sẽ là nhập vào máy ATM những mã PIN phỏng đoán, và chặn khối mã PIN được mã hóa do ngân hàng trả lại tương ứng với mỗi mã PIN phỏng đoán Kỹ thuật tấn công theo lược đồ thích nghi chỉ cần 5 mã PIN thử khác nhau – 0000, 0001, 0010, 0100 và 1000 Tuy nhiên
kẻ tấn công chỉ có thể nhận được các mã PIN đã được mã hóa dưới dạng một khối như ISO-0 đã có nhúng số tài khoản vào Điều này bắt buộc anh ta phải nhập 5 mã PIN cho mỗi tài khoản mà hắn định tấn công tại máy ATM, khối lượng công việc phải làm sẽ làm phá sản kế hoạch của hắn
Lựa chọn thứ 3 được xem là mạnh nhất của kẻ tấn công là dùng khả năng của để đổi từ một mã PIN duy nhất đã biết thành các phỏng đoán cần thiết Mã PIN có trước này có thể
có được bằng cách chỉ đơn giản là mở một tài khoản tại ngân hàng
Mặc dù có những phương pháp để lấy được các mã PIN thử đã được mã hóa, vẫn còn tranh cãi là không thể khai thác được cách tấn công dùng bảng chuyển đổi số thập phân, trừ phi nó được thực hiện mà không cần mã PIN thử có trước Để giải quyết những mối
lo ngại này, một thuật toán thứ 3 đã được tạo ra có tốc độ tương đương với những phương pháp khác và không yêu cầu phải biết trước bất kỳ mã PIN thử nào
4 Tấn công dò tìm mã PIN bằng bảng chuyển đổi số
thập phân
4.1 Lược đồ sơ khởi (ban đầu)
Bao gồm 2 giai đoạn Giai đoạn đầu tiên xác định những ký tự nào có xuất hiện trong mã PIN Giai đoạn thứ hai là thử các mã PIN có thể có được từ các ký tự này (tổ hợp các khả năng)
Gọi Dorig là bảng chuyển đổi gốc ban đầu Với mỗi ký tự i được cho, bảng chuyển đổi Di
có giá trị 1 ở vị trí x nếu và chỉ nếu Dorig có ký tự i ở vị trí đó:
Trang 71 nếu Dorig[x] = i,
Di[x] =
0 nếu ngược lại
Ví dụ: Dorig= 0123 4567 8901 2345 thì D3 = 0001 0000 0000 0100
Ở giai đoạn 1, với mỗi ký tự i, ta so sánh kết quả của mã PIN gốc ban đầu sau khi đã qua bảng chuyển đổi thập phân Di với mã PIN thăm dò 0000 Dễ dàng thấy rằng, kết quả so sánh sẽ không khớp khi mã PIN ban đầu chứa ký tự i (do đó chắc chắn sẽ có xuất hiện số 1) Vì thế, chỉ cần đoán 10 lần chúng ta sẽ xác định được tất cả các ký tự có trong mã PIN gốc ban đầu
Ở giai đoạn 2, chúng ta sẽ thử tất cả các kết hợp có thể có từ những ký tự có xuất hiện này Số lượng các kết hợp thực tế sẽ tùy thuộc vào việc có bao nhiêu ký tự xuất hiện trong mã PIN gốc ban đầu
ABC AABC (12), ABBC (12), ABCC (12)
Bảng trên chỉ ra rằng giai đoạn 2 cần tối đa 36 lần phỏng đoán khi mã PIN ban đầu có chứa 3 ký tự khác nhau
(A, B, C, D: tượng trưng cho 1 ký tự bất kỳ)
4.2 Lược đồ thích nghi (Adaptive Scheme)
Tiến trình dò tìm (bẻ khóa) mã PIN có thể được miêu tả bởi một cây nhị phân tìm kiếm Mỗi nút v biểu diễn cho một lần phỏng đoán, (ví dụ, chọn một bảng chuyển đổi thập phân
Dv và một mã pin pv) Ta bắt đầu duyệt cây từ nút gốc, và rẽ nhánh (sang cây con bên trái hoặc cây con bên phải) tùy thuộc vào kết quả phỏng đoán Gọi porig là mã PIN gốc (cần dò) Tại mỗi nút, ta sẽ so sánh Dv(porig) với pv bằng cách kiểm tra điều kiện Dv(porig) = pv Nếu kết quả là ‘Yes’ (trùng nhau) thì sẽ rẽ nhánh sang cây con bên phải, ngược lại sẽ rẽ nhánh sang cây con bên trái
Mỗi nút v trong cây được liên kết với danh sách các mã PIN Pv, sao cho p ∈ Pv nếu và chỉ nếu có thể duyệt đến nút v bằng tiến trình được mô tả ở trên, nếu ta chọn p là mã PIN gốc Trường hợp đặc biệt, danh sách liên kết với nút gốc là toàn bộ mã PIN có thể có, và danh sách liên kết với nút lá chỉ chứa 1 phần tử duy nhất: một PIN gốc nào đó
Lấy ví dụ trường hợp của lược đồ sơ khởi như đã miêu tả ở phần trên, để cho đơn giản ta giả sử rằng mã PIN gốc chỉ chứa 2 số thập phân, và bảng chuyển đổi thập phân là tầm thường, ánh xạ 00 và 11 Hình vẽ sau minh họa cây nhị phân tìm kiếm:
Trang 8(kí hiệu Dxy chỉ ra rằng bảng chuyển đổi thập phân sẽ ánh xạ 0x, và 1y)
Hình 5: cây tìm kiếm nhị phân
Một hạn chế của lược đồ sơ khởi, đó là số lượng các lần đoán phụ thuộc rất lớn vào mã PIN gốc porig Ví dụ phương pháp này cần 9 lần đoán cho trường hợp porig = 9999 (bởi vì sau khi thử các ký tự từ 08 không xuất hiện, thì chỉ còn có 1 trường hợp kết hợp duy nhất là 9999), nhưng có những trường hợp phải cần tới 46 lần phỏng đoán, sở dĩ như thế
là do cây nhị phân là không cân bằng và do đó không tối ưu
Một cách để tạo ra cây tìm kiếm tối ưu (ví dụ, cây đòi hỏi số lần phỏng đoán là nhỏ nhất trong trường hợp xấu nhất) là xem xét tất cả các cây tìm kiếm có thể có, và chọn cây tốt nhất Tuy nhiên, cách tiếp cận này là không hiệu quả bởi vì độ phức tạp tăng theo hàm
mũ, tương ứng với số lượng mã PIN và các bảng chuyển đổi thập phân có thể có
Thay vì cách tiếp cận theo phương pháp vét cạn ở trên, chúng ta có thể sử dụng các heuristics đơn giản Chúng ta sẽ chọn Dv và pv cho mỗi nút v theo cách sau đây Gọi danh sách liên kết với nút v là Pv Ta xem xét tất cả các cặp (Dv, pv) có thể có và chọn cặp nào
mà xác suất Dv(p)=pv với p ∈ Pv càng gần ½ càng tốt Điều này đảm bảo rằng cây con trái
và cây con phải có kích thước gần bằng nhau, do đó cây sẽ cây bằng
Lược đồ này còn có thể cải thiện hơn nữa bởi nhận xét sau đây Nhắc lại rằng, PIN gốc porig là 1 số gồm có 4 chữ số hệ thập lục phân Tuy nhiên, chúng ta không cần xác định nó một cách chính xác Điều chúng ta cần là xác định giá trị p = Dorig(porig) Ví dụ, chúng ta không cần phân biệt 012D và ABC3, bởi vì 2 mã PIN này đều có p = 0123 Dễ dàng chứng minh rằng chúng ta có thể xây dựng cây tìm kiếm dựa trên giá trị của p thay vì của porig miễn là các bảng Dv không phân biệt giữa 0 và A, 1 và B, … Một cách tổng quát, chúng ta cần chọn Dv thỏa mãn tính chất sau: với mỗi cặp ký số hệ thập lục phân x, y thì
Trang 9Dorig[x] = Dorig[y] kéo theo Dv[x] = Dv[y] Tính chất này không khó để thoả mãn, và chúng
ta có thể giảm số mã PIN có thể có từ 164 = 65 536 xuống còn 104= 10 000 Bảng sau trình bày một ví dụ minh hoạ khi chạy thử thuật toán với mã PIN gốc là porig = 3491
Hình 6: Kết quả chạy thử nghiệm chương trình
4.3 Lược đồ thích nghi PIN Offset
Khi kẻ tấn công không biết bất kỳ mã PIN đã mã hóa nào để thử, và cũng không thể mã hóa các mã PIN giả định của mình, anh ta vẫn có thể thành công bằng cách thao tác trên tham số offset (độ dời) được sử dụng để cung cấp yêu cầu thay đổi mã PIN của khách hàng Phương pháp này cũng có 2 giai đoạn giống như phương pháp sơ khởi, vì thế công việc đầu tiên là cũng là xác định các số có xuất hiện trong mã PIN
Giả sử rằng một khối PIN đã mã hóa có chứa đựng số PIN thực cho một tài khoản bị chặn lại (phần lớn các khối PIN mã hóa di chuyển đến sẽ thỏa giả định này), và để cho đơn giản ta giả sử rằng chủ tài khoản không thay đổi mã PIN và do đó offset thực có giá trị là
0000 Bằng việc dùng tập các bảng chuyển đổi sang số thập phân (decimalisation tables),
kẻ tấn công có thể xác định những số nào có xuất hiện trong mã PIN thực
Ví dụ, với Dorig là 0123 4567 8901 2345, giá trị của D3 sẽ là 0124 4567 8901 2445 Mỗi lần như vậy anh ta đưa vào khối PIN mã hóa đúng và offset đúng
Giống như phương pháp ban đầu, giai đoạn thứ hai xác định các vị trí của các số có xuất hiện trong mã PIN, và lần nữa lại phụ thuộc vào số lượng các số bị lặp lại trong mã PIN gốc Xét trường hợp phổ biến là tất cả các số trong mã PIN là khác nhau, ví dụ 1583
Trang 10Chúng ta hãy thử xác định vị trí của số 8 duy nhất bằng cách áp dụng một offset trên mỗi
ký số khác nhau và đối sánh
Guess
Offset Guess Decimalisation Table Customer Guess Customer Guess + Guess Offset Decimalised Original PIN Verify Result
0001 0123 4567 9901 2345 1583 1584 1593 No
0010 0123 4567 9901 2345 1583 1593 1593 yes
0100 0123 4567 9901 2345 1583 1683 1593 No
1000 0123 4567 9901 2345 1583 2583 1593 No
Mỗi offset giả định khác nhau sẽ ánh xạ số PIN đúng của khách hàng sang một số PIN mới mà có thể khớp hoặc không khớp với mã PIN gốc sau khi nó đã được chuyển đổi sang số thập phân bằng bảng chuyển đổi thập phân có thay đổi (modified table) Thủ tục này sẽ được lặp lại cho đến khi vị trí của tất cả các số được nhận biết Những trường hợp với tất cả các số khác nhau cần nhiều nhất là 6 giao dịch để xác định tất cả các thông tin
về vị trí Ba số khác nhau sẽ cần nhiều nhất 9 lần thử, hai số khác nhau lên đến 13 lần thử, và nếu tất cả các số là giống nhau thì không cần phải thử, vì không có hoán vị nào Kết hợp các phần khác nhau của phương pháp này ta sẽ có trung bình khoảng 16,5 lần phỏng đoán (thử) để xác định được 1 mã PIN
5 Các kết quả
Các tác giả đã thử nghiệm thuật toán thích nghi (adaptive algorithm) trên tất cả các
trường hợp có thể có của mã PIN Kết quả đạt được minh họa ở hình 8 Trường hợp xấu nhất giảm từ 45 xuống còn 24 lần phỏng đoán, trường hợp trung bình thì giảm từ 24 xuống còn 15 lần đoán Các tác giả đã thực hiện việc tấn công trên cấu trúc CCA
(Common Cryptographic Architecture - kiến trúc mã hóa thông dụng) của IBM (phiên bản 2.41, IBM 4758), và rút trích thành công các mã PIN được tạo ra bằng cách sử dụng phương pháp IBM 3624 Các tác giả cũng đã thử nghiệm các cuộc tấn công dựa trên các API đặc tả của kiến trúc bảo mật VISA (VSM) và thấy rằng chúng cũng rất hiệu quả VSM là thiết bị kỹ thuật dẫn đầu của toàn bộ chủng loại các thiết bị an ninh phần cứng xử
lý trên mã PIN, và các tác giả cũng tin tưởng rằng kỹ thuật tấn công này cũng sẽ hiệu quả đối với các thế hệ sau của nó