Dưới đây là một bài viết tôi được tìm thấy trong thời gian gần đây. Điều này một trong những mô tả toàn diện nhất của mã PIN Mã xác nhận giá trị gia tăng (PVV) trộm cắp.
Tôi cứ nghĩ tôi sẽ rộng nó đây cho tôi địa phương tham khảo.
Ý kiến như đã được thực hiện liên quan đến việc sử dụng ngữ pháp trong bản gốc văn bản, tôi đã sửa chữa một số trong các lỗi rõ ràng trong khi duy trì trong bối cảnh của bản gốc tài liệu.
http://69.46.26.132/ ~ biggold1/fastget2you/tutorial.php
--- Original Text ----
Giới thiệu
Các bạn đã bao giờ biết những gì sẽ xảy ra nếu bạn của bạn bị mất thẻ tín dụng hoặc thẻ ghi nợ và một người nào đó tìm thấy nó. Người này sẽ có thể rút tiền mặt từ máy ATM đoán, nào đó, PIN của bạn? Hơn nữa, nếu bạn đã được những người tìm thấy một người nào đó thẻ của bạn sẽ cố gắng để đoán mã PIN và mất cơ hội để dễ dàng nhận được một số tiền? Tất nhiên câu trả lời cho câu hỏi cần được cả hai "không". Điều này làm việc, không có gì không phải đối phó với những câu hỏi thứ hai, đó là một vấn đề của cá nhân đạo đức. Ghim theo đây tôi cố gắng trả lời những câu hỏi đầu tiên.
Tất cả các thông tin được sử dụng cho công việc này là công khai và có thể được tự do được tìm thấy trong Internet. Phần còn lại là một vấn đề của toán học và lập chương trình, như vậy, chúng tôi có thể tìm hiểu gì đó và có một số thú vị. Tôi không có lộ bí mật. Hơn nữa, mục đích (và cuối cùng kết luận) của việc làm này là để chứng minh rằng mã PIN thuật toán vẫn còn đủ mạnh để cung cấp đầy đủ an ninh. Chúng tôi biết tất cả các công nghệ không phải là điểm yếu.
Điều này làm việc phân tích một trong những phổ biến nhất mã PIN thuật toán, VISA PVV, sử dụng nhiều thẻ ATM (thẻ tín dụng và thẻ thanh toán) và cố gắng tìm hiểu làm thế nào để kháng là mã PIN đoán tấn công. Bởi "đoán" Tôi không có nghĩa là lựa chọn ngẫu nhiên một mã PIN và thử nó trong một máy ATM. Nó cũng nổi tiếng, nói chung, chúng tôi được cho ba lần liên tiếp thử nghiệm để nhập đúng mã PIN, nếu chúng ta không thành công máy ATM giữ thẻ. Như VISA mã PIN là bốn chữ số dài sẽ rất dễ dàng deduce rằng các cơ hội cho ngẫu nhiên một mã PIN đoán là 3 / 10.000 = 0,0003, có vẻ như thấp, đủ để được an toàn; điều đó có nghĩa là bạn cần phải mất thẻ của bạn nhiều hơn ba ngàn lần ( hoặc mất hơn ba ngàn thẻ cùng một lúc:) cho đến khi có một cơ hội hợp lý của mất tiền.
Những gì tôi thực sự có nghĩa là do "đoán" phạm đã được mã PIN thuật toán để mà cho bất kỳ thẻ bạn có thể biết ngay lập tức có liên quan mã PIN. Vì vậy, tài liệu này có khả năng nghiên cứu, phân tích các thuật toán và đề xuất một phương pháp cho các tấn công. Cuối cùng, chúng tôi cung cấp cho một công cụ nào mà thực hiện các tấn công và trình bày về các kết quả ước tính cơ hội để break vào hệ thống. Lưu ý rằng, cũng như lâu như các ngân hàng an ninh liên quan đến thuật toán (các mã PIN các định dạng như IBM PIN hay thẻ xác nhận chữ ký như CVV hoặc CVC) là tương tự với VISA mã PIN, trong cùng một phân tích có thể được thực hiện yielding gần giống như kết quả và kết luận.
VISA PVV thuật toán
Một trong những phổ biến nhất mã PIN thuật toán là VISA mã PIN Mã xác nhận giá trị gia tăng (PVV). Cho các khách hàng là một mã PIN và một dải từ thẻ. Mã hoá trong dải từ bốn chữ số là một số điện thoại, gọi là PVV. Con số này là một chữ ký của các Giao thức mật mã PIN và các dữ liệu liên quan đến thẻ. Khi một người sử dụng nhập vào mình mã PIN của máy ATM lần đọc những từ dải, encrypts và gửi cho tất cả các thông tin này đến một trung tâm máy tính. Có một thử nghiệm PVV được tính bằng cách sử dụng các khách hàng nhập vào mã PIN và các thông tin thẻ với một Giao thức mật mã thuật toán. Phiên toà PVV là so với các PVV được lưu trữ trong thẻ, nếu họ có phù hợp với các trung tâm máy tính trở về đến máy ATM cho phép các giao dịch. Xem chi tiết hơn.
Mô tả về các PVV thuật toán có thể được tìm thấy trong hai tài liệu liên kết trong trang trước. Trong đó bao gồm tóm tắt trong mã hóa của một 8 byte (64-bit) chuỗi dữ liệu, chuyển đổi gọi là an ninh Tham số (TSP), với DES thuật toán (DEA) trong điện tử Mã số sách chế độ (ECB) bằng cách sử dụng một chìa khóa bí mật 64-bit. Các PVV là thu được từ các sản lượng của các mã hóa quy trình, đó là một chuỗi 8 byte. Bốn chữ số của PVV (từ trái sang phải) là người đầu tiên tương ứng với bốn chữ số thập phân (từ trái sang phải) của sản lượng từ DES khi được coi như là một thập lục 16 ký tự (16 x 4 bit = 64-bit) chuỗi. Nếu không có bốn chữ số thập phân 16 thập lục trong số các ký tự sau đó PVV được hoàn thành đưa (từ trái sang phải) và ký tự không thập decimalizing chúng bằng cách sử dụng chuyển đổi A-> 0, B-> 1, C-> 2, D -> 3, E-> 4, F-> 5. Đây là một ví dụ:
Sản lượng từ DES: 0FAB9CDEFFE7DCBA
PVV: 0975
Các chiến lược của decimalization tránh skipping ký tự do cho đến khi bốn chữ số thập phân đang được tìm thấy (mà sẽ xảy ra để được gần như tất cả các lần, chúng tôi sẽ xem dưới đây) là rất thông minh bởi vì nó tránh một kỳ thị trong vấn đề quan trọng trong việc phân phối của các chữ số đó đã được chứng minh được tử vong cho các hệ thống khác, dù những tác động ảnh hưởng đến hệ thống này sẽ thấp hơn nhiều. Xem cũng là một vấn đề không liên quan đến ứng dụng VISA PVV.
The TSP, được coi là một thập lục 16 ký tự (64-bit) chuỗi, được hình thành (từ trái sang phải) với 11 phải chữ số của PAN (số thẻ) ngoại trừ các chữ số cuối cùng (kiểm tra chữ số), một trong số từ ngày 1 đến 6 mà sẽ chọn Mã hoá khoá bí mật và cuối cùng là bốn chữ số của mã PIN. Đây là một ví dụ:
PAN: 1234 5678 9012 3445
Khóa chọn: 1
PIN: 2468
TSP: 5678901234412468
Rõ ràng là vấn đề của breaking VISA mã PIN bao gồm trong tìm kiếm của Mã hoá khoá bí mật cho DES. Phương pháp cho rằng là để làm một bạo lực tìm kiếm của các phím không gian. Lưu ý rằng điều này là không chỉ có phương pháp, một trong những cố gắng để có thể tìm thấy một điểm yếu trong DEA, đã có nhiều cố gắng, nhưng tiêu chuẩn cũ này vẫn còn mở rộng toàn trong sử dụng (nay được thay thế bởi AES và RSA, mặc dù). Điều này đã chứng minh điều đó là đủ mạnh mẽ để mà bạo lực là phương pháp hữu hiệu chỉ (có một số cuộc tấn công tốt hơn, nhưng không thực tế của chúng tôi trong trường hợp, cho thấy một tóm tắt LASEC memo và cho các chi tiết bẩn xem Biham & Sa-mia năm 1990, Biham & Sa-mia 1991, Matsui năm 1993, Biham & Biryukov 1994 và Heys 2001).
Phím chọn chữ số đã được giới thiệu rất có khả năng để trang trải ra khả năng của một phím nguy cho. Trong trường hợp đó họ chỉ cần có để vấn đề thẻ mới bằng cách sử dụng một chìa khóa selector. Cu hơn thẻ có thể được thay theá với mới, hoặc đơn giản là các máy ATM có thể minh bạch viết mới PVV (tương ứng với các khoá mới và giữ cùng một mã PIN) thời gian tới các khách hàng sử dụng của mình cho người thẻ. Đối với các lắc của an ninh nên tất cả người dùng sẽ được yêu cầu thay đổi mã PIN của mình, tuy nhiên nó cũng có thể ngăn trở cho các ngân hàng để giải thích lý do, vì vậy rất có khả năng họ sẽ không làm như vậy yêu cầu.
Chuẩn bị tấn công
Một bạo lực tấn công bao gồm trong một TSP Mã hoá được biết đến với PVV có thể sử dụng tất cả các phím Mã hoá và so sánh thu được mỗi PVV được biết đến với các PVV. Khi một kết hợp được tìm thấy là chúng tôi có một ứng cử viên chủ chốt. Nhưng làm thế nào chúng tôi có nhiều phím để thử? Như đã nói ở trên, chúng tôi chìa khóa là 64-bit dài, điều này có nghĩa là chúng tôi đã thử 2 ^ 64 phím. Tuy nhiên điều này là không đúng. Thực sự chỉ có 56 bit có hiệu quả trong DES phím vì một chút (ít nhất là đáng kể) ra của mỗi octet được lịch sử như là một reserved checksum cho những người khác; trong những người thực hành 8 bit (một cho mỗi phòng trong số 8 octets) bị bỏ qua.
Vì vậy, các DES phím không gian bao gồm 2 ^ 56 phím. Nếu chúng tôi thử tất cả các phím, chúng tôi sẽ tìm thấy một và chỉ có một phù hợp với, tương ứng với các ngân hàng bí mật chìa khóa? Chắc chắn không. Chúng tôi sẽ có được nhiều kết hợp phím. Điều này là bởi vì các PVV chỉ là một phần nhỏ (một thứ tư) của DES sản lượng. Hơn nữa các PVV là degenerated bởi vì một số trong các chữ số (những người giữa 0 và 5 sau khi đã qua, nhìn thấy từ trái sang phải, chữ số giữa 6 và 9) có thể đến từ một chữ số thập phân hoặc từ một decimalized chữ số thập lục của DES sản lượng. Vì vậy, nhiều phím sẽ sản xuất một DES mà sản lượng sản lượng cho cùng một đối sánh PVV.
Sau đó, những gì chúng tôi làm để có thể tìm thấy thực sự chủ chốt trong số những sai khác tích cực phím? Đơn giản chỉ để chúng tôi có một mật mã khác nhau TSP thứ hai, cũng được biết đến với PVV, nhưng chỉ bằng cách sử dụng các phím mà ứng viên đã tích cực đầu tiên đối sánh với TSP-PVV đôi. Tuy nhiên không có bảo đảm chúng tôi sẽ không nhận được lại nhiều sai tích cực cùng với các phím true. Nếu vậy, chúng tôi sẽ cần có một thứ ba-TSP PVV đôi, lặp lại quá trình và như vậy trên.
Trước khi chúng tôi bắt đầu của chúng tôi sẽ tấn công chúng tôi đã để biết bao nhiêu TSP-PVV cặp, chúng tôi sẽ cần. Cho rằng chúng tôi đã để tính toán xác suất cho một ngẫu nhiên DES năng suất sản lượng để phù hợp với một PVV chỉ do cơ. Có một số cách để tính toán số này và đây tôi sẽ sử dụng một cách tiếp cận đơn giản dễ hiểu nhưng mà đòi hỏi một số nền tảng trong toán học của xác suất.
Một xác suất luôn luôn có thể được xem như tỷ lệ số trường hợp, thuận lợi để có thể có trường hợp. Trong vấn đề của chúng tôi số lượng các trường hợp có thể là do các permutation / 16 yếu tố (0 đến các chữ số thập lục F) trong một nhóm của 16 người trong số họ (16 chữ số thập lục của DES sản lượng). Điều này là do 16 ^ 16 ~ 1,8 * 10 ^ 19 mà các khóa học trùng với 2 ^ 64 (số điện thoại khác nhau của 64 bit). Bộ số điện thoại này có thể được tách ra vào năm ngành:
Những người có ít nhất bốn chữ số thập phân (0 đến 9) trong số các chữ số thập lục 16 (0 đến F) của DES sản lượng.
Những người chỉ chính xác với ba chữ số thập phân.
Những người chính xác chỉ với hai chữ số thập phân.
Những người có chính xác chỉ có một chữ số thập phân.
Những người mà không có thập chữ số (tất cả giữa A và F).
Hãy tính toán bao nhiêu số điện thoại rơi trong mỗi danh mục. Nếu chúng tôi nhãn các chữ số thập lục 16 của DES sản lượng như X1 để X16 sau đó chúng tôi có thể nhãn là người đầu tiên bốn chữ số thập phân của bất kỳ cho số đầu tiên của các thể loại như Xi, XJ, XK và XL. Số lượng các kết hợp khác nhau với các hồ sơ này là do các sản phẩm 6 i-1 * 10 * 6j-i-1 * 10 * 6k-j-1 * 10 * 6 lk-1 * 10 * 1616-l, nơi 6 ' s đến từ số lượng các khả năng cho một chữ số A đến F, 10's đến từ các khả năng cho một chữ số 0 đến 9, và 16 đến từ các khả năng cho một chữ số 0 đến F. Bây giờ tổng số điện thoại trong danh mục đầu tiên chỉ đơn giản là do tổng kết những sản phẩm này trên i, j, k, l từ 1 đến 16, nhưng với i <j <k <l. If you do some math work you will see this equals to the product of 104/6 with the summation over i from 4 to 16 of (i-1) * (i-2) * (i-3) * 6i-4 * 16 16-i 1,8 ~ * 1019.
Analogously số trường hợp thứ hai trong danh mục là do các summation trên i, j, k từ 1 đến 16 với i <j <k của sản phẩm 6i-1 * 10 * 6j-i-1 * 10 * 6k-j -1 * 10 * 616-k mà bạn có thể làm việc được nó đi đến 16! / (3! * (16-13)!) * 103 * 6 13 = 16 * 15 * 14 / (3 * 2) * 103 * 613 = 56 * 104 * 613 * 7,3 ~ 1015. Tương tự cho thứ ba, chúng tôi có các thể loại summation trên i, j từ 1 đến 16 với i <j / 6 i-1 * 10 * 6j-i-1 * 10 * 616-j tương đương đến 16! / (2! * (16-14)!) * 102 * 614 = 2 * 103 * 615 * 9,4 ~ 1014. Một lần nữa, cho thứ tư, chúng tôi có các thể loại trên summation i từ 1 đến 16 / 6i-1 * 10 * 616-i = 160 * 615 * 7,5 ~ 1013. Và cuối cùng là số tiền của trường hợp thứ năm trong danh mục là do các permutation của sáu yếu tố (A đến F chữ số) trong một nhóm của 16, có nghĩa là, 616 ~ 2,8 * 1012.
Tôi hy vọng bạn theo tính toán cho đến thời điểm này, các phần cứng được thực hiện. Bây giờ như là một bằng chứng rằng tất cả mọi thứ bạn có thể phải là tổng số trường hợp, trong 5 chuyên mục và xem nó bằng tổng số trường hợp, chúng tôi có thể tính toán trước khi. Do các hoạt động bằng cách sử dụng 64-bit số điện thoại hay lam (cho floats) hoặc tràn (cho integers) lỗi sẽ không cho phép bạn đạt được những kết quả chính xác.
Đến nay chúng tôi đã tính toán số lượng các trường hợp có thể có ở mỗi phòng trong số năm chuyên mục, nhưng chúng tôi đang quan tâm có được số trường hợp, thay vì thuận lợi. Nó là rất dễ dàng để derive cái sau từ các cựu như fixing này chỉ là sự kết hợp của bốn chữ số thập phân (hoặc theo yêu cầu chữ số thập lục nếu không có bốn chữ số thập phân) của PVV thay vì cho phép chúng miễn phí. Trong thực tế, điều này có nghĩa trở 10's trong công thức trên vào 1 và số tiền được yêu cầu của 6 của's vào 1 nếu không có bốn chữ số thập phân. Đó là, chúng tôi đã chia kết quả đầu tiên do 104, điều thứ hai do 103 * 6, thứ ba, một trong do 102 * 62, thứ tư bởi một trong 10 * 63 và thứ năm bởi một trong 64. Sau đó, số lượng các trường hợp, thuận lợi trong năm danh mục có khoảng 1,8 * 1015, 1.2 * 1012, 2.6 * 1011, 3.5 * 1010, 2,2 * 109 tương ứng.
Bây giờ chúng tôi có thể để có được những gì là xác suất cho một DES sản lượng để phù hợp với một PVV bởi cơ. Chúng tôi chỉ cần có thêm những năm số trường hợp, thuận lợi và chia cho tổng số các trường hợp có thể có. Làm điều này, chúng tôi có được mà là rất hay khoảng 0,0001 một trong mười ngàn. Nó là lạ này cũng làm tròn kết quả? Không tại tất cả, chỉ cần có một nhìn vào những con số mà chúng tôi tính toán ở trên. Danh mục đầu tiên chi phối bởi một số đơn đặt hàng của magnitude số thuận lợi và có thể có trường hợp. This is rather intuitive as it seems clear that it is very unlikely not having four decimal digits (10 chances out of 16 per digit) among 16 hexadecimal digits. Trước đó, chúng tôi thấy rằng các mối quan hệ giữa số lượng các trường hợp, thuận lợi và có thể có trong danh mục đầu tiên là một bộ phận do 10 ^ 4, đó là kết quả của chúng tôi, nơi p = 0,0001 đến từ.
Mục tiêu của chúng tôi cho tất cả những tính toán đã được làm thế nào để tìm ra nhiều TSP-PVV cặp, chúng tôi cần phải thực hiện thành công là bạo lực tấn công. Bây giờ chúng tôi có thể để tính toán dự kiến sai số tích cực trong một tìm kiếm đầu tiên: nó sẽ là số lần thử nghiệm các xác suất cho một ngẫu nhiên sai tích cực, tức là t * p nơi t = 2 ^ 56, kích cỡ của chìa khóa không gian. Số tiền này vào khoảng 7,2 * 10 ^ 12, một số khá lớn. Dự kiến số sai tích cực trong việc tìm kiếm thứ hai (giới hạn cho các phím tích cực được tìm thấy trong tìm kiếm đầu tiên) sẽ được (t * p) * p, cho một bên thứ ba tìm kiếm sẽ được ((t * p) * p) * p và so on. Vì vậy, cho n tìm kiếm các dự kiến sai số tích cực sẽ được t * p ^ n.
Chúng tôi có thể giành được số tìm kiếm được yêu cầu để chờ chỉ cần một sai tích cực thể hiện bởi các phương trình t * p ^ n = 1 và giải quyết cho n. Vì vậy, n bằng để các logarithm trong cơ sở p của 1 / t, mà do tính của nó logarithms sản lượng đăng nhập n = (1 / t) / log (p) ~ 4.2. Từ khi chúng tôi không thể làm một fractional tìm kiếm đó là thuận lợi để bao chung quanh con số này. Vì vậy, những gì là mong đợi của sai số tích cực, nếu chúng ta thực hiện năm tìm kiếm hay không? Đó là t * p ^ 5 ~ 0,0007 hay khoảng 1 out of 1400. Vì vậy, bằng cách sử dụng năm TSP-PVV cặp được an toàn để có được thật sự bí mật chìa khóa mà không có sai tích cực.
Các tấn công
Sau khi chúng tôi biết chúng tôi cần năm TSP-PVV cặp, làm thế nào để chúng tôi có được chúng? Tất nhiên, chúng tôi cần ít nhất một thẻ được biết đến với mã PIN, và do tính chất của PVV thuật toán, đó là điều duy chúng ta cần. Với các mã PIN hệ thống, chẳng hạn như IBM, chúng tôi cần năm thẻ, tuy nhiên điều này là không cần thiết với VISA PVV thuật toán. Chúng tôi chỉ cần có để đọc được từ dải và sau đó thay đổi mã PIN bốn lần, nhưng đọc thẻ sau mỗi thay đổi.
Nó là cần thiết để đọc các dải từ của thẻ để có được các PVV Mã hoá và các phím chọn. Bạn có thể mua một thương mại từ dải đọc hoặc làm cho mình một trong các hướng dẫn sau đây, bạn có thể tìm thấy trong trang trước và liên kết trong đó. Sau khi bạn có một người đọc xem mô tả của tiêu chuẩn này từ hát để tìm hiểu cách thức để có được các PVV từ các dữ liệu đọc. Trong tài liệu đó các PVV trong lĩnh vực hát 1 và 2, được cho là năm ký tự dài, nhưng thực sự thật sự PVV bao gồm bốn chữ số cuối cùng. Là người đầu tiên của năm chữ số chính là chìa khóa selector. Tôi chỉ có thẻ thấy với một giá trị của 1 trong số này, đó là, phù hợp với những tiêu chuẩn và bí mật với các phím không bao giờ được công (và do đó họ không cần phải di chuyển đến một phím thay đổi chọn).
Tôi đã làm một cách dễ dàng C chương trình, getpvvkey.c, để thực hiện các tấn công. Nó bao gồm một vòng tròn để thử tất cả các phím có thể để mật mã đầu tiên TSP, nếu bắt nguồn PVV khớp với đúng PVV mới TSP là một cố gắng, và như vậy về cho đến khi có một không khớp, trong đó các trường hợp là chìa khóa và loại bỏ một hình mới là cố gắng, hoặc năm bắt nguồn PVVs tương ứng phù hợp với thực PVVs, trong trường hợp mà chúng tôi có thể giả, chúng tôi đã nhận được sự ngân hàng bí mật chìa khóa, tuy nhiên trong vòng tròn cho đến khi nó đi trên exhausts phím không gian. Điều này được thực hiện để bảo đảm chúng tôi tìm thấy thật sự chủ chốt, vì có một cơ hội (mặc dù rất thấp) là người đầu tiên chìa khóa được tìm thấy là một sai tích cực.
Dự kiến, chương trình sẽ có được một thời gian rất dài để kết thúc và để giảm thiểu rủi ro của một cắt điện, máy tính ra khỏi hang, vv nó, không có gì kiểm vào tập tin getpvvkey.dat theo thời gian (thời gian chính xác phụ thuộc vào tốc độ của máy tính, điều đó khoảng một giờ cho các máy tính nhanh nhất hiện nay trong sử dụng). Đối với cùng một lý do gì nếu một tích cực là chìa khóa được tìm thấy nó được ghi vào tập tin getpvvkey.key. Các chương trình chỉ hiển thị một tin nhắn từ đầu, các vị trí bắt đầu lấy từ những trạm kiểm soát tập tin nếu có, sau khi thêm rằng không có gì được hiển thị.
The NGOẠI thuật toán là một điểm then chốt trong chương trình, do đó nó là rất quan trọng để tối ưu hóa tốc độ của nó. Tôi thử nghiệm một số triển khai: libdes, SSLeay, openssl, cryptlib, nss, libgcrypt, catacomb, libtomcrypt, cryptopp, ufc-crypt. The NGOẠI chức năng của bốn đầu tiên là dựa trên cùng một mã do Eric Young và là một trong đó thực hiện tốt nhất (bao gồm C và tối ưu hóa x86 assembler code). Vì vậy, tôi đã chọn libdes đó là việc triển khai thực hiện ban đầu có liên quan và condensed tất cả các mã trong các tập tin encrypt.c (C phiên bản) và x86encrypt.s (x86 assembler phiên bản). Các mã được chỉnh sửa để đạt được một số phụ kiện trong một bạo lực tấn công: ban đầu permutation là một cố định đầu tư phổ biến ở mỗi TSP mã hóa và do đó có thể được thực hiện chỉ trong một thời gian vào đầu. Một cải tiến là tôi đã viết một hoàn toàn mới setkey chức năng (tôi gọi là nó nextkey), là tối ưu cho một vòng tròn bạo lực.
Để có được chương trình làm việc bạn chỉ cần có để loại chỗ tương ứng trong năm TSPs và PVVs của họ và sau đó nó biên soạn. Tôi đã thử nghiệm nó chỉ ở nền tảng UNIX, bằng cách sử dụng makefile Makegetpvvkey để biên soạn (sử dụng lệnh "make-f Makegetpvvkey"). Nó có thể biên soạn trên các hệ thống khác, nhưng bạn có thể cần phải sửa chữa một số điều. Hãy chắc chắn rằng định nghĩa của các loại long64 tương ứng với một số nguyên 64-bit. Về nguyên tắc không có sự phụ thuộc vào các endianness của xử lý. Tôi đã biên soạn thành công và chạy nó trên Pentium-Linux, Alpha-Tru64, Mips-Irix và Sparc Solaris. Nếu bạn không có và không muốn cài đặt Linux (bạn không biết những gì bạn đang thiếu ;-) bạn vẫn còn có sự lựa chọn để chạy Linux trên đĩa CD và sử dụng chương trình của tôi, xem trang web của tôi chạy Linux, không cần cài đặt nó.
Một khi bạn đã được tìm thấy trong bí mật ngân hàng then chốt nếu bạn muốn tìm mã PIN của một arbitrary thẻ bạn chỉ cần phải viết một chương trình tương tự (xin lỗi, tôi không viết nó, tôi đang quá lười:) mà có thử tất cả 10 ^ 4 mã PIN tương ứng bằng cách tạo ra các TSP, Mã hoá nó với (không còn) bí mật chìa khóa, deriving các PVV và so sánh nó với các PVV trong dải từ của thẻ. Bạn sẽ nhận được một kết hợp cho đúng mã PIN. Chỉ có một kết hợp? Ghi nhớ những gì mà chúng ta thấy ở trên, chúng tôi có một cơ hội đó, một 0,0001 ngẫu nhiên mật mã khớp với PVV. Chúng tôi đang cố gắng 10.000 mã PIN (và do đó TSPs) như vậy, chúng tôi mong đợi 10.000 * 0,0001 = 1 sai tích cực trên trung bình.
Đây là một kết quả rất thú vị, điều đó có nghĩa là, trên trung bình, mỗi thẻ có hai mã PIN hợp lệ: các mã PIN Khách hàng và dự kiến sai tích cực. Tôi gọi nó là "sai" nhưng lưu ý rằng là nó tạo ra thật sự PVV nó là một mã PIN như hợp lệ của khách hàng như một. Hơn nữa, không có cách nào để biết là đó, thậm chí cho các máy ATM; chỉ khách hàng biết. Thậm chí, nếu sai tích cực đã không hợp lệ như mã PIN, bạn vẫn còn có ba dùng thử tại các máy ATM, dù đủ trên trung bình. Vì vậy, các xác suất mà chúng tôi tính toán tại đầu của tài liệu này về ngẫu nhiên đoán của các mã PIN đã được sửa chữa. Thực sự nó là hai lần rằng giá trị, tức là, đó là 0,0006 hay một trong nhiều hơn 1600, an toàn vẫn còn thấp.
Kết quả
Điều quan trọng là để tối ưu hóa việc tổng của chương trình và để chạy nó trong nhanh nhất có thể xử lý do sự mong đợi chạy dài thời gian. Tôi thấy rằng các biên tối ưu hóa flag-O được tốt hơn trong hiệu suất, nghĩ là đạt được một số cải tiến thêm-fomit-khung-trỏ cờ trên Pentium-Linux, spike-cờ trên Alpha-Tru64, các-IPA cờ trên Mips-Irix -nhanh và cờ trên Sparc Solaris. Đặc biệt cờ (-DDES_PTR-DDES_RISC1-DDES_RISC2-DDES_UNROLL-DASM) cho DES mã thường có quyền lợi cũng như. Tất cả các cờ đã được thử nghiệm và tôi đã chọn kết hợp tốt nhất cho mỗi xử lý (xem makefile), nhưng bạn có thể thử để tinh chỉnh các cờ.
Theo nhận định của các xét nghiệm của tôi là đạt được hiệu quả tốt nhất với AMD Athlon 1600 MHz xử lý, vượt quá 3,4 triệu phím cho mỗi thứ hai. Thú nó được kết quả tốt hơn Intel Pentium IV 1800 MHz và 2000 MHz (xem số liệu dưới đây, nhấn chuột vào chúng để phóng to). Tôi tin rằng đây là do một số I / O saturation, chắc hẳn bộ nhớ cache hay bộ nhớ truy cập, rằng các bộ xử lý AMD (mà có một nửa trong bộ nhớ cache của Pentium) hay bo mạch chủ, trong đó nó là chạy, quản lý để tránh. Trong lần đầu tiên con số dưới đây, bạn có thể thấy rằng các DES vi phạm tốc độ của tất cả các bộ xử lý có nhiều hơn hoặc ít hơn một linear mối quan hệ với các tốc độ xử lý, ngoại trừ cho hai Intel Pentium tôi đã đề cập ở trên. Đây là hợp lý, nó có nghĩa là cho một đôi tốc độ xử lý bạn sẽ nhận được hai tốc độ vi phạm, nhưng xem ra hiệu ứng cho bão hòa, trong trường hợp này là tốt hơn của AMD Athlon 1600 MHz, mà sẽ được thậm chí rẻ hơn Intel Pentium 1800 MHz hoặc 2000 MHz.
Trong lần thứ hai con số mà chúng tôi có thể xem chi tiết hơn những gì chúng tôi sẽ gọi intrinsic DES break sức mạnh của xử lý. Tôi nhận được giá trị này chỉ đơn giản chia các break tốc độ do tốc độ xử lý, có nghĩa là, chúng tôi nhận được số lượng các DES phím thử cho mỗi thứ hai và cho mỗi MHz. Đây là một chỉ số đo lường hiệu quả hoạt động của bộ xử lý kiểu độc lập của các tốc độ. Các kết quả cho thấy xử lý tốt nhất cho công việc này là AMD Athlon, sau đó đến Alpha và rất gần sau khi nó là Intel Pentium (ngoại trừ cho những người thân mà cao hơn tốc độ thực hiện rất nghèo do ảnh hưởng của bão hòa). Tiếp theo là Mips xử lý và nơi ở cuối cùng là Sparc. Một số Alpha và bộ xử lý Mips đang nằm ở cuối quy mô bởi vì họ là sớm chí không bao gồm các phụ kiện của các phiên bản cuối. Lưu ý rằng tôi bao gồm hiệu quả hoạt động của bộ xử lý x86 cho C và assembler mã như là một lớn, có sự khác biệt. Có vẻ như là không phải là một gcc tốt Máy phát điện của máy tối ưu mã, nhưng tất nhiên là chúng tôi không biết một thủ tối ưu hóa các mã assembler cho các bộ xử lý (Alpha, Mips, Sparc) sẽ thúc đẩy kết quả của họ so với các C compilers (Tôi không sử dụng gcc cho các nền tảng khác) như điều đó xảy ra với các x86, xử lý.
Cập nhật
Đây là một bài viết nơi mà các kỹ thuật có thể có được sử dụng.
http://redtape.msnbc.com/2008/08/could-a-hacker.html