Tải bản đầy đủ (.doc) (12 trang)

TẤN CÔNG MÃ PIN DỰA VÀO BẢNG CHUYỂN ĐỔI THẬP PHÂN

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (235.33 KB, 12 trang )

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á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.
1
Tuy 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.
2
Tuy 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.
3
Trong 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
4
phí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
5
dễ 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 D

orig
là bảng chuyển đổi gốc ban đầu. Với mỗi ký tự i được cho, bảng chuyển đổi D
i
có giá trị 1 ở vị trí x nếu và chỉ nếu D
orig
có ký tự i ở vị trí đó:
6
1 nếu D
orig
[x] = i,
D
i
[x] =
0 nếu ngược lại
Ví dụ: D
orig
= 0123 4567 8901 2345 thì D
3
= 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 D
i
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.
Các ký tự Các khả năng

A AAAA (1)
AB ABBB (4), AABB (6), AAAB (4)
ABC AABC (12), ABBC (12), ABCC (12)
ABCD ABCD (24)
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
D
v
và một mã pin p
v
). 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 p
orig
là mã PIN gốc (cần
dò). Tại mỗi nút, ta sẽ so sánh D
v
(p
orig
) với p
v
bằng cách kiểm tra điều kiện D
v
(p
orig
) = p
v

.
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 P
v
, sao cho p ∈ P
v
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ạ 00 và 11. Hình vẽ sau minh họa cây nhị phân tìm kiếm:
7
(kí hiệu D
xy
chỉ ra rằng bảng chuyển đổi thập phân sẽ ánh xạ 0x, và 1y)
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 p
orig.
Ví dụ phương pháp này cần 9 lần đoán cho trường hợp p
orig
= 9999 (bởi vì
sau khi thử các ký tự từ 08 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 D
v
và p
v
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à P
v
. Ta xem xét tất cả các cặp (D
v
, p
v
) có thể có và chọn cặp nào
mà xác suất D
v
(p)=p
v
với p ∈ P
v
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
p
orig
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 = D
orig
(p

orig
). 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
p
orig
miễn là các bảng D
v
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ì
8
D
orig
[x] = D
orig
[y] kéo theo D
v
[x] = D
v
[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ừ 16
4
= 65 536 xuống còn 10
4
= 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à p
orig
= 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 D
orig
là 0123 4567 8901 2345, giá trị của D
3
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.
9
Chú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ó.
10

Hình 7: Sự phân phối giữa số lần phỏng đoán và số lượng mã PIN
6. Ngăn chặn
Thực hiện kiểm tra tính hợp lệ của bảng chuyển đổi thập phân thì rất dễ. Một vài phương
pháp xác thực mã PIN sử dụng bảng chuyển đổi thập phân yêu cầu bảng nên cố định là
0123456789012345 để thuật giải chạy đúng, và trong những trường hợp này API chỉ cần
bắt buộc phải thỏa yêu cầu này để củng cố lại tính bảo mật. Tuy nhiên, các phương pháp
xác thực mã PIN hỗ trợ khả năng cung cấp các bảng chuyển đổi thập phân thích nghi thì
khó sửa hơn. Một thủ tục kiểm tra đảm bảo rằng một ánh xạ từ những kết hợp đầu vào
sang một số lượng tối đa những kết hợp đầu ra có thể có sẽ bảo vệ chống lại những tấn
công theo 2 phương pháp đầu, nhưng không chống được những tấn công tận dụng PIN
offset và chỉ sử dụng những thay đổi nhỏ của bảng chuyển đổi thập phân thực sự được sử
dụng. Để khôi phục được tính bảo mật hoàn toàn, bảng chuyển đổi thập phân đầu vào
cũng phải được bảo vệ bằng mã hóa, để chỉ những bảng chuyển đổi của những chủ sở
hữu thật sự mới có thể được sử dụng.
Giải pháp thay thế ngắn hạn (tạm thời) cho các phương thức trên là sử dụng các phương
thức pháp hiện xâm nhập tiên tiến hơn. Tuy nhiên, về lâu dài có thể thấy rõ ràng là việc
tiếp tục hỗ trợ khả năng sử dụng (cung cấp) bảng chuyển đổi thập phân không phải là một
giải pháp vững mạnh đối với xác thực hóa mã PIN. Các mã PIN bất đối xứng được phát
sinh ngẫu nhiên và được lưu trữ dưới dạng mã hóa trong một cơ sở dữ liệu trực tuyến như
đã từng được sử dụng trong một số các ngân hàng là một giải pháp bảo mật tốt hơn rất
nhiều.
7. Kết luận
Các tác giả đang bắt đầu các cuộc thảo luận với các nhà cung cấp HSM về các vấn đề có
liên quan đến nguy cơ bị tấn công. Việc thay đổi phần mềm để tương tác với HSM là khá
11
tốn kém, trong khi việc cập nhật phần mềm HSM thì rẻ hơn, hệ thống vẫn phải cần được
kiểm tra và việc cập nhật có thể bao gồm cả giai đoạn phải cài đặt lại rất tốn kém. Việc
kiểm tra tính hợp lệ của bảng chuyển đổi thập phân thì dễ hiện thực, nhưng việc bảo vệ
hoàn toàn mà vẫn giữ lại tính tương thích với các phần mềm hiện có sẵn của máy tính lớn
(mainframe) là điều rất khó đạt được. Điều này phụ thuộc vào các khả năng phát hiện

xâm nhập được giới thiệu bởi mỗi nhà cung cấp cụ thể. Chúng ta hy vọng rằng sẽ có
được nhận thức đầy đủ về hậu quả của các cuộc tấn công và các phương pháp tối ưu
phòng chống tấn công trong một tương lai gần đây.
Mặc dù HSM đã tồn tại 2 thập kỉ, nhưng việc nghiên cứu những hàm APIs vẫn còn trong
giai đoạn sơ khai. Các công trình trước đây của các tác giả [5, 4] đã không khám phá hết
các khiếm khuyết đa dạng trong các hàm API, một số ở mức độ giao thức, số khác ở các
đặc điểm có thể tận dụng được (để tấn công) của các giải thuật mật mã hóa bên dưới, và
một số do việc thiết kế các phương thức điều khiển quá tồi. Những kỹ thuật đằng sau các
phương pháp tấn công sử dụng bảng chuyển đổi thập phân không chỉ đơn giản là thêm
một dây đàn cho kẻ tấn công, mà nó khẳng định rằng việc thiết kế các API bảo mật là
một trong những thách thức gây cấn nhất trong cộng đồng bảo mật. Thật khó tìm được
bất kỳ phương pháp nào vừa bảo đảm tính đúng đắn, lại vừa đủ tin cậy đối với các kiểu
tấn công phong phú ở mức API. Cần phải có thêm nhiều nghiên cứu về những phương
pháp phân tích API, nhưng hiện nay chúng ta có thể phải thừa nhận rằng việc viết các đặc
tả đúng cho các API cũng khó như việc viết mã nguồn, và chúng ta đang bước vào cuộc
tranh đua giữa tấn công và phòng thủ mà những sản phẩm phần mềm buộc phải cạnh
tranh nhau.
12

×