# XI. Cryptographic Attacks

## 1. Cryptanalysis and Attack Types

Cryptanalysis là một nhánh của khoa học thuộc mật mã học. Những người quan tâm đến nhánh khoa học này kiểm tra độ tin cậy của các thuật toán mật mã được thiết kế bởi các chuyên gia mật mã.&#x20;

Bài kiểm tra ở đây rất khác so với bài kiểm tra thông thường. Bằng cách khám phá các phương thức tấn công dành riêng cho Crypto algorithm, điểm yếu trong thuật toán sẽ được khai thác và độ tin cậy của thuật toán mật mã được kiểm tra theo cách này.&#x20;

Phân tích mật mã về cơ bản được xem xét dưới 3 tiêu đề:

* Classical Cryptanalysis (Phân tích mật mã cổ điển)
* Implementation Attacks (Tấn công triển khai)
* Social Engineering (Kỹ thuật xã hội)

<figure><img src="/files/DTEWdqQ3jl66Roxd7d0W" alt=""><figcaption></figcaption></figure>

## 2. Classical Cryptanalysis

Phân tích mật mã cổ điển cố gắng lấy plaintext từ ciphertext hoặc lấy key từ ciphertext.&#x20;

Với phương pháp này, các phương pháp đơn giản thường được sử dụng khi tìm ra điểm yếu của thuật toán mật mã.&#x20;

Các điểm yếu về cấu trúc của thuật toán Crypto có thể được sử dụng hoặc có thể thử tất cả các khả năng bằng kỹ thuật **brute-force**.

Nói chung, các máy tính yêu cầu sức mạnh xử lý cao không cần thiết phải sử dụng cho kiểu tấn công này.&#x20;

Các cuộc tấn công chống lại Historic Ciphers nằm trong nhóm này.

### Brute-Force Attacks

Trong các cuộc tấn công Brute-Force, kẻ tấn công cố gắng xác định giá trị khóa chính xác bằng cách thử tất cả các khả năng khóa có thể có trên dữ liệu được mã hóa mà hắn đã thu thập được.&#x20;

Bằng cách kiểm tra xem dữ liệu thu được sau mỗi lần thử khóa có ý nghĩa hay không, anh ta có thể biết liệu mình đã lấy được khóa hay chưa.

Mặc dù có nhiều tiêu chí khác nhau trong kiểu tấn công này nhưng **độ dài khóa** và **khả năng xử lý** của kẻ tấn công rất quan trọng.&#x20;

Nếu độ dài của khóa không đủ dài và kẻ tấn công có đủ khả năng xử lý để thực hiện cuộc tấn công này thì có thể lấy được khóa trong thời gian ngắn.&#x20;

Để ngăn chặn các cuộc tấn công như vậy bằng mật mã, độ dài của giá trị khóa của thuật toán mật mã phải sao cho không thể tìm thấy bằng các kỹ thuật brute-force.&#x20;

Thuật toán mật mã, được phát triển với giả định rằng kẻ tấn công có sức mạnh xử lý cao, có thể biến nó thành thuật toán mật mã đáng tin cậy hơn.&#x20;

Một ví dụ đơn giản là the brute-force attack:

<figure><img src="/files/6ZcD3G88FHfgsHbQzila" alt=""><figcaption></figcaption></figure>

Giả sử có một bảng đăng nhập như hình trên. Cần có mật khẩu để truy cập bảng này.&#x20;

Giả sử mật khẩu dài 1 ký tự và chỉ bao gồm các số. Trong trường hợp này, khả năng sẽ rất nhỏ. Tất cả các mật khẩu có thể có như sau: "0,1,2,3,4,5,6,7,8,9" Bằng cách thử 10 khả năng này, có thể xác định được cái nào là mật khẩu chính xác.&#x20;

Ví dụ: mật khẩu đúng là "9". Có thể tìm ra nó bằng cách thử tất cả các giá trị từ 0 đến 9, không thành công đối với các giá trị trong khoảng "0-8", nhưng đối với giá trị "9".&#x20;

Kết quả thành công ở ví dụ này là có thể đăng nhập vào hệ thống. Một ví dụ như vậy được đưa ra để giải thích chủ đề tốt hơn, nhưng kết quả của một cuộc tấn công vũ phu vào dữ liệu được mã hóa là dữ liệu vô nghĩa trở nên có ý nghĩa.

### Letter Frequency Analysis

Nếu chúng ta đã sử dụng brute-force attack trong tiêu đề trước về mật mã Caesar, thì số xác suất của các giá trị khóa sẽ là 26, tức là nó sẽ bằng số lượng chữ cái trong bảng chữ cái.&#x20;

Nếu một phương pháp mã hóa được sử dụng làm mật mã thay thế thay vì mật mã Caesar dưới dạng một chữ cái khác nhau cho mỗi chữ cái, thì có thể sử dụng phương pháp tấn công hiệu quả hơn a brute-force attack: "Letter Frequency Analysis".&#x20;

Phương pháp phân tích này giúp có thể thu được plaintext bằng cách sử dụng các điểm yếu của thuật toán mật mã.&#x20;

Trong substitution cipher (mật mã thay thế), mỗi chữ cái tương ứng với một chữ cái cố định.&#x20;

Điều này cho thấy một điểm yếu phân tích.&#x20;

Ví dụ, một trong những chữ cái được sử dụng nhiều nhất trong tiếng Anh theo thống kê là chữ "E" (khoảng 13%). Chữ cái được sử dụng nhiều thứ hai là chữ "T" (khoảng 9%).&#x20;

Nếu một phân tích chữ cái được thực hiện trong văn bản được mã hóa, nằm trong tay kẻ tấn công, thì có thể dễ dàng thấy mỗi chữ cái có giá trị bao nhiêu. Chữ cái tương ứng với chữ “E” sẽ là chữ cái có số cao nhất trong văn bản.&#x20;

Ví dụ, chúng ta hãy xem xét plaintext và ciphertext sau:

Plaintext: Having a certification is one of the popular factors that affect the recruitment process. Human resources specialists or the hiring managers who are authorized in the recruitment process consider the certificates of the candidates. Having a certificate or multiple certificates will be advantageous in order to stand out among other applicants. In some cases, having a certificate(s) may be mandatory depending on the requirements posted on the open position.

Ciphertext: Kdylqj d fhuwlilfdwh lv rqh ri wkh srsxodu idfwruv wkdw diihfw wkh uhfuxlwphqw surfhvv. Kxpdq uhvrxufhv vshfldolvwv ru wkh klulqj pdqdjhuv zkr duh dxwkrulchg lq wkh uhfuxlwphqw surfhvv frqvlghu wkh fhuwlilfdwhv ri wkh fdqglgdwhv. Kdylqj d fhuwlilfdwh ru pxowlsoh fhuwlilfdwhv zloo eh dgydqwdjhrxv lq rughu wr vwdqg rxw dprqj rwkhu dssolfdqwv. Lq vrph fdvhv kdylqj fhuwlilfdwh(v) pdb eh pdqgdwrub ghshqglqj rq wkh uhtxluhphqwv srvwhg rq wkh rshq srvlwlrq.

Khi nhìn vào số lượng chữ cái trong bản rõ, chúng ta thấy bảng như sau:

<figure><img src="/files/p99U5Tktdnbip8zvJiah" alt=""><figcaption></figcaption></figure>

Lưu ý: có thể sử dụng công cụ sau để xem số lượng ký tự trong đầu vào:

```python
# -*- coding: cp1254 -*-

print("Character Counter Tool")

a = input("Input : ")
def uniq(input):
  output = []
  for x in input:
    if x not in output:
      output.append(x)
  return output
c = uniq(a)
for b in c:
    print(b , "=====>" , a.count(b) , "found.")


```

Khi nhìn vào số lượng chữ cái trong ciphertext, chúng ta thấy một bảng như sau:

<figure><img src="/files/4JJg6ZhB5Sc5G6kJsouc" alt=""><figcaption></figcaption></figure>

Lưu ý: Các ký tự không phải 26 chữ cái sẽ bị bỏ qua (dấu cách, dấu ngoặc đơn và dấu câu).

So sánh 3 chữ cái đầu của cả 2 bảng theo thứ tự:&#x20;

* Plaintext: e, t, a
* Ciphertext: h, w, d

Có thể thấy, đã có một kết quả phù hợp với số liệu thống kê nêu trên.&#x20;

Chữ "h" là chữ "e" được sử dụng nhiều nhất.&#x20;

Chữ cái được sử dụng thường xuyên thứ hai là chữ "w" so với chữ "t".&#x20;

Nếu một phân tích được thực hiện trên bảng chữ cái:

<figure><img src="/files/kvyXZxXJMPx5DTtsO8n7" alt=""><figcaption></figcaption></figure>

Như đã thấy trong hình trên, cả 3 chữ cái được kiểm tra đều có cùng giá trị dịch chuyển: "3".&#x20;

Do đó, qua kết quả phân tích mật mã, người ta xác định rằng toàn bộ văn bản trên đã được mã hóa bằng "Mật mã Caesar(ROT 3)".&#x20;

Với công cụ Cyberchef, bạn có thể kiểm soát thông qua liên kết bên dưới: <https://tinyurl.com/bdzjvep5>

## 3. Implementation Attacks

Tấn công triển khai là một loại tấn công nâng cao đòi hỏi kiến ​​thức kỹ thuật để thực hiện.&#x20;

Ví dụ: thu (obtaining) the secret key theo phép đo mức tiêu thụ điện năng của bộ xử lý bằng secret key là một cuộc tấn công như vậy.

Trong một cuộc tấn công như vậy, có thể lấy được secret key bằng các kỹ thuật xử lý tín hiệu bằng cách tuân theo nguồn điện.&#x20;

Nói cách khác, các cuộc tấn công như vậy được gọi là "Side Channel Attacks".

## 4. Social Engineering

Social Engineering là tên chung của một loại tấn công gây ra bởi lỗ hổng của chính con người.&#x20;

Ngoài Mật mã học, chủ đề này rất phổ biến và có nhiều kỹ thuật sáng tạo.&#x20;

Nó chủ yếu được sử dụng về mặt mật mã, được đề cập dưới tiêu đề này.&#x20;

Ví dụ: phương pháp "social engineering" có thể được sử dụng để lấy secret key cần thiết để lấy văn bản được mã hóa.&#x20;

Các phương pháp hối lộ (Bribery), tống tiền (blackmail) và gián điệp cổ điển có thể được đưa ra làm ví dụ.&#x20;

Việc sử dụng vũ lực để tìm hiểu secert key cũng được bao gồm trong các phương pháp này.&#x20;

Một trong những phương pháp thường được sử dụng là thuyết phục người đó qua điện thoại.&#x20;

Xung quanh một kịch bản, kẻ tấn công có thể đạt được mục tiêu dựa trên lý do hợp lý.&#x20;

Ví dụ: kẻ tấn công nói rằng anh ta đến từ bộ phận CNTT có thể yêu cầu người đó cung cấp secert key hoặc direct password (mật khẩu trực tiếp) để cập nhật phần mềm.&#x20;

Để kẻ tấn công thành công trong cuộc tấn công này, việc thuyết phục bên kia thường là đủ.&#x20;

Mặc dù đây là một phương pháp (non-technical) phi kỹ thuật và đơn giản nhưng nhiều người vẫn có thể bị thuyết phục bởi kiểu nói chuyện này.&#x20;

Đó là một trong những phương pháp vẫn còn phổ biến cho đến ngày nay.&#x20;

Để được bảo vệ khỏi cuộc tấn công như vậy, mọi người cần được đầu tư (invest) và nâng cao nhận thức của nhân viên.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://viettaliii.gitbook.io/home/self-learning/introduction-to-cryptology/xi.-cryptographic-attacks.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
