Dưới đây là một bài báo 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 xác minh giá trị gia tăng (PVV) hacking.
Tôi nghĩ tôi sẽ tái nó vào đây cho tôi địa phương tham khảo.
Như ý kiến đã được thực hiện liên quan đến ngữ pháp được sử dụng trong bản gốc văn bản, tôi đã sửa chữa một số lỗi trong khi duy trì rõ ràng 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 ----
Tựa
Các bạn đã bao giờ tự hỏi điều gì sẽ xảy ra nếu bạn của bạn bị mất thẻ tín dụng hay thẻ ghi nợ và có người tìm thấy nó. Nên người này 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 là người tìm thấy một ai đó của thẻ xin bạn hãy thử đoán mã PIN và có 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ác câu hỏi cần được cả hai "không". Điều này làm việc không đối phó với câu hỏi thứ hai, đó là một vấn đề về đạo đức cá nhân. 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 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 trình, vì vậy chúng tôi có thể tìm hiểu gì đó và có một số thú vị. Tôi không tiết lộ bí mật. Hơn nữa, mục đích (và cuối cùng kết luận) của công việc 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à yếu điểm.
Đ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, được sử dụng bởi nhiều loại thẻ ATM (thẻ tín dụng và thẻ thanh toán) và cố gắng tìm hiểu cách thức kháng là mã PIN đoán cuộc 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 được biết, thông thường chúng tôi là đưa ra 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 rất dễ dàng để deduce rằng các cơ hội ngẫu nhiên cho một mã PIN đoán là 3 / 10000 = 0,0003, có vẻ như thấp đủ để được an toàn: nó có nghĩa là bạn cần phải làm mất thẻ tín dụng của bạn nhiều hơn ba nghìn lần ( hay mất đi hơn ba nghìn thẻ cùng một lúc:) cho đến khi có một hợp lý của cơ mất tiền.
Những gì tôi thực sự có nghĩa là của "đoán" là vi phạm các mã PIN thuật toán để đưa ra bất kỳ thẻ, bạn có thể ngay lập tức có liên quan đến 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à đề nghị một phương pháp cho các cuộc tấn công. Cuối cùng, chúng tôi cung cấp một công cụ nào mà thực hiện các cuộc tấn công và hiện tại, và kết quả ước tính về các cơ hội để vi phạm hệ thống. Lưu ý rằng, cũng như lâu dài như các ngân hàng bảo mật liên quan đến các thuật toán (các mã PIN các định dạng như IBM mã PIN hoặc thẻ xác nhận chữ ký như là CVV hoặc CVC) là tương tự như VISA mã PIN, 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 là thuật toán VISA mã PIN xác minh giá trị gia tăng (PVV). Các khách hàng là cho một mã PIN và một magnetic stripe thẻ. Mã hóa trong magnetic stripe là bốn chữ số, được gọi là PVV. Con số này là một cryptographic chữ ký của các mã PIN và các dữ liệu liên quan đến thẻ. Khi người dùng nhập vào mình mã PIN trên máy ATM đọc những magnetic stripe, 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ủa khách hàng nhập mã PIN và các thông tin thẻ với một cryptographic thuật toán. Phiên tòa PVV là so với các PVV được lưu trữ trong thẻ, nếu họ phù hợp với trung tâm máy tính trả về cho máy ATM cho phép giao dịch. Xem chi tiết hơn.
Bản mô tả của PVV thuật toán có thể được tìm thấy trong hai tài liệu liên kết ở trang trước đó. Trong bản tóm tắt nó bao gồm trong các mật mã của một 8 byte (64 bit) chuỗi dữ liệu, chuyển đổi gọi là an ninh Parameter (TSP), với DES thuật toán (DEA) trong điện tử Mã số Sách của 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 phẩm của mật mã quá trình, mà là một chuỗi ký tự 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 coi như là một 16 hexadecimal ký tự (16-bit x 4 = 64-bit) chuỗi. Nếu không có bốn chữ số thập phân trong 16 ký tự hexadecimal thì PVV được hoàn thành thực hiện (từ trái sang phải) và ký tự không phải 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. Dưới đây là một ví dụ:
Kết quả từ DES: 0FAB9CDEFFE7DCBA
PVV: 0975
Các chiến lược tránh decimalization của các ký tự bỏ qua cho đến khi bốn chữ số thập được tìm thấy (trong đó sẽ xảy ra để được gần như tất cả những lần khi chúng tôi sẽ xem dưới đây) là rất thông minh bởi vì nó rất quan trọng tránh thiên vị trong việc phân phối của các chữ số đã được chứng minh là mang lại gây tử vong cho các hệ thống khác, mặc dù những tác động trên hệ thống này sẽ được số tiền thấp hơn. Xem còn là một vấn đề có liên quan không phải nộp đơn xin VISA PVV.
Các TSP, được xem như là một 16 hexadecimal ký tự (64-bit) chuỗi ký tự, được hình thành (từ trái sang phải) với những bìa phải 11 chữ số của PAN (số thẻ) chưa bao gồm các chữ số cuối cùng (số kiểm tra), một trong những chữ số từ 1 đến 6 mà chọn những bí mật encrypting phím và cuối cùng là bốn chữ số của mã PIN. Dưới đây là một ví dụ:
VNM: 1234 5678 9012 3445
Phím chọn: 1
Mã PIN: 2468
TSP: 5678901234412468
Rõ ràng về vấn đề vi phạm VISA mã PIN bao gồm tìm các bí mật encrypting khoá cho DES. Các phương pháp đó là để làm brute một lực lượng tìm kiếm của chính không gian. Lưu ý rằng đây không phải là chỉ có phương pháp, một trong những cố gắng để có thể tìm thấy một suy DEA, đã cố gắng rất nhiều, nhưng theo tiêu chuẩn cũ này vẫn còn trong sử dụng rộng (nay được thay thế bằng AES và RSA, mặc dù). Điều này được minh chứng mạnh mẽ đủ để brute lực lượng là chỉ hữu hiệu đối với phương pháp (có một số cuộc tấn công tốt hơn nhưng không phải thực tế trong trường hợp của chúng tôi, cho thấy một bản tóm tắt LASEC memo và bẩn cho các thông tin chi tiết xem Biham & Shamir năm 1990, Biham & Shamir 1991, Matsui 1993, Biham & Biryukov 1994 và Heys 2001).
Các phím chọn chữ số đã được giới thiệu rất có khả năng bao phủ được khả năng của một phím compromise. Trong trường hợp đó, họ chỉ cần phát hành thẻ mới bằng cách sử dụng phím chọn khác. Cu hơn thẻ có thể được thay thế bằng những cái mới, hoặc đơn giản chỉ các máy ATM có thể transparently viết mới PVV (tương ứng với các khoá mới và giữ cùng một mã PIN) sau thời gian sử dụng cho khách hàng của mình thẻ. Đối với các lắc của an ninh tất cả các người dùng sẽ được yêu cầu thay đổi của họ PINs, tuy nhiên nó có thể lúng túng cho các ngân hàng để giải thích lý do, do đó, rất có khả năng họ sẽ không thực hiện các yêu cầu như vậy.
Chuẩn bị tấn công
Đáp brute vũ lực tấn công bao gồm trong một encrypting TSP với biết PVV có thể sử dụng tất cả các encrypting phím và so sánh từng đạt PVV với những người biết 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ư chúng tôi đã nói ở trên chính là 64-bit dài, điều này sẽ có nghĩa là chúng tôi đã thử 2 ^ 64 chìa khóa. Tuy nhiên điều này là không đúng sự thật. Hiện nay chỉ có 56 bit có hiệu quả trong việc DES phím bởi vì một chút (ít nhất đáng kể trên) ra khỏi lịch sử đã từng octet reserved như một checksum cho những người khác, trong những người thực hành 8 bit (một cho mỗi của 8 octets) được bỏ qua.
Vì vậy các DES phím không gian bao gồm 2 ^ 56 chìa khóa. Nếu chúng tôi thử tất cả các phím này, chúng tôi sẽ tìm thấy một và chỉ một trận đấu, tương ứng với các ngân hàng, bí quyết quan trọng? 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ì PVV chỉ là một phần nhỏ (một trong những thứ tư) của DES sản lượng. Hơn nữa các PVV là degenerated bởi vì một số các chữ số (những người từ 0 đến 5 sau khi vừa qua, nhìn thấy từ trái sang phải, từ 6 chữ số và 9) có thể đến từ một thập từ một chữ số hoặc chữ số decimalized hexadecimal của DES sản lượng. Vì vậy, nhiều phím sẽ sản xuất một DES sản lượng đó mang lại cho cùng một kết hợp PVV.
Sau đó, những gì chúng tôi có thể làm để tìm được những người thực sự quan trọng giữa các phím tích cực khác sai? Chỉ cần chúng tôi đã để mật mã khác nhau TSP thứ hai, cũng được biết đến với PVV, nhưng chỉ những thí sinh bằng cách sử dụng phím đó đã tích cực kết hợp với đầu tiên TSP-PVV cặp. Tuy nhiên không có gì đảm bảo chúng tôi sẽ không lấy lại nhiều sai tích cực cùng với các phím thật sự. Nếu vậy, chúng tôi sẽ cần có một thứ ba-TSP PVV cặp, lặp lại quá trình, vv.
Trước khi chúng tôi bắt đầu của chúng tôi tấn công, chúng ta phải biết có bao nhiêu TSP-PVV cặp chúng tôi sẽ cần. Cho rằng, chúng ta phải tính toán xác suất cho một ngẫu nhiên DES suất đầu ra để phù hợp với một PVV chỉ của cơ. Có một số cách để tính toán con số này và tại đây, tôi sẽ sử dụng một phương pháp tiếp cận đơn giản, dễ hiểu, nhưng mà đòi hỏi một số nền tảng về toán học của xác suất.
Một xác suất luôn luôn có thể được coi là tỉ lệ thuận lợi cho các trường hợp có thể có trường hợp. Trong vấn đề của chúng tôi có thể có số lượng các trường hợp là do permutation của 16 yếu tố (trên 0 đến F hexadecimal chữ số) trong một nhóm của 16 người trong số họ (trên 16 chữ số hexadecimal của DES sản lượng). Điều này là do 16 ^ 16 ~ 1,8 * 10 ^ 19 trong đó tất nhiên là trùng với 2 ^ 64 (số điện thoại khác nhau của 64 bit). Điều này thiết lập các số điện thoại có thể được chia thành năm loại:
Những người có ít nhất là bốn chữ số thập phân (0 đến 9) trong 16 hexadecimal chữ số (0 to F) của DES sản lượng.
Những người có chính xác chỉ có ba chữ số thập phân.
Những người có chính xác chỉ có 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 không có chữ số thập phân (tất cả giữa A và F).
Hãy tính toán có bao nhiêu con số nằm trong mỗi thể loại. Nếu chúng tôi các nhãn 16 chữ số hexadecimal của DES sản lượng như X1 vào x16 sau đó chúng tôi có thể gắn nhãn là người đầu tiên bốn chữ số thập phân của bất cứ số lượng các danh mục đầu tiên là 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 được dành cho các sản phẩm của 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 A đến F chữ số, trong 10 người đế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ờ trong tổng số điện thoại đầu tiên trong thể loại đơn giản chỉ là do summation của sản phẩm này trên i, j, k, l từ 1 đến 16, nhưng với i <j <k <l. Nếu bạn làm một số việc làm toán, bạn sẽ nhìn thấy bằng này đến sản phẩm của 104 / 6 với các summation qua tôi từ 4 đến 16 / (i-1) * (i-2) * (i-3) * 6i-4 * 16 16-i ~ 1,8 * 1019.
Analogously số trường hợp trong loại thứ hai là do summation trên i, j, k từ 1 đến 16 với i <j <k 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 nó ra để được 16! / (3! * (16-13)!) * 103 * 6 13 = 16 * 15 * 14 / (3 * 2) * 103 * 613 = 56 * 104 * 613 ~ 7,3 * 1015. Tương tự cho loại thứ ba, chúng tôi có hơn summation i, j từ 1 đến 16 với i <j của 6 i-1 * 10 * 6j-i-1 * 10 * 616-j mà bằng đến 16! / (2! * (16-14)!) * 102 * 614 = 2 * 103 * 615 ~ 9,4 * 1014. Một lần nữa, đối với loại thứ tư của chúng tôi có hơn summation i từ 1 đến 16 của 6i-1 * 10 * 616-i = 160 * 615 ~ 7,5 * 1013. Và cuối cùng là số tiền trong trường hợp thứ năm được dành cho thể loại của permutation 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 quý vị theo tính toán đến thời điểm này, các phần cứng được thực hiện. Bây giờ là một bằng chứng rằng tất cả mọi thứ là đúng, bạn có thể tổng số các trường hợp mắc bệnh trong 5 loại và xem nó bằng tổng số các trường hợp, chúng tôi có thể tính toán trước. Do các hoạt động bằng cách sử dụng 64-bit số điện thoại hoặc tròn (cho floats) hoặc tràn (cho integers) lỗi sẽ không cho phép bạn nhận được 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ó trong mỗi năm của các chuyên mục, nhưng chúng tôi đang quan tâm đến việc nhận được số lượng các trường hợp thuận lợi để thay thế. Điều này là hết sức dễ dàng lấy được Sau đó kể từ khi cựu 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ố hexadecimal 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 hành này có nghĩa là số 10 của người lao động trong các công thức trên vào 1 và được yêu cầu số tiền của 6 người vào 1 của nếu không có bốn chữ số thập phân. Tức là, chúng tôi đã chia kết quả đầu tiên của 104, điều thứ hai của 103 * 6, thứ ba của một trong 102 * 62, thứ tư của một trong 10 * 63 và thứ năm của một trong 64. Sau đó, số lượng các trường hợp, thuận lợi trong năm chuyên 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 đầu ra để phù hợp với một PVV của cơ. Chúng tôi chỉ cần thêm các số điện thoại của năm 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 là xác suất là rất hay một trong khoảng 0,0001 ra mười nghìn. Nó là lạ này cũng làm tròn kết quả? Không phải ở tất cả cá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. Đầu tiên thể loại 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. Điều này là khá trực quan như nó có vẻ rõ ràng rằng nó là rất khó không có bốn chữ số thập phân (10 cơ ra là 16 cho mỗi chữ số) trong số 16 chữ số hexadecimal. Chúng tôi đã thấy trước đó rằng các mối quan hệ giữa số lượng và thuận lợi cho các trường hợp có thể có trong các danh mục đầu tiên là một bộ phận của 10 ^ 4, đó là nơi mà kết quả của chúng tôi p = 0,0001 đến từ.
Mục tiêu của chúng tôi cho tất cả các phép tính đã được làm thế nào để tìm hiểu nhiều TSP-PVV đôi chúng ta cần phải mang theo một thành công brute vũ lực tấn công. Bây giờ chúng tôi có thể tính toán ra những sai số trong một tích cực tìm kiếm đầu tiên: nó sẽ được cho số lần thử nghiệm các xác suất cho một ngẫu nhiên sai tích cực, có nghĩa là t * p mà 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. Ra những sai số tích cực trong việc tìm kiếm thứ hai (bị giới hạn để tích cực tìm thấy chìa khóa trong tìm kiếm đầu tiên) sẽ được (t * p) * p, cho một bên thứ ba sẽ được tìm kiếm ((t * p) * p) * p và vv. Vì vậy, cho n tìm kiếm ra những sai số lượng tích cực sẽ được t * p ^ n.
Chúng tôi có thể có được số lượng các yêu cầu để tìm kiếm mong đợi chỉ là một sai ý tích cực của phương trình t * p ^ n = 1 và giải quyết cho n. So n equals to the logarithm in base p of 1/t, which by properties of logarithms it yields n = log(1/t)/log(p) ~ 4.2. Since we cannot do a fractional search it is convenient to round up this number. Therefore what is the expected number of false positives if we perform five searches? It is t * p^5 ~ 0.0007 or approximately 1 out of 1400. Thus using five TSP- PVV pairs is safe to obtain the true secret key with no false positives.
The attack
Once we know we need five TSP- PVV pairs, how do we get them? Of course we need at least one card with known PIN , and due to the nature of the PVV algorithm , that’s the only thing we need. With other PIN systems, such as IBM, we would need five cards, however this is not necessary with VISA PVV algorithm . We just have to read the magnetic stripe and then change the