Tư duy Feynman • Trực quan hình họa • Java / Spring Boot

Chương 12: Secret Management & Protection

Quản trị an toàn vòng đời bí mật hệ thống: Loại bỏ Hardcoded Secrets, bảo vệ Database Credentials, tích hợp Vault và quét tự động trong CI/CD.

#01 Hard-coded Secrets (Mã hóa cứng bí mật trong mã nguồn)

💡 BƯỚC 1: ẨN DỤ ĐỜI THƯỜNG (FEYNMAN ANALOGY)
Bạn xây một ngôi biệt thự triệu đô nhưng lại lấy chiếc bút dạ vẽ luôn chìa khóa và mật mã két sắt lên ngay trên cánh cửa ra vào phòng khách. Bất kỳ ai nhìn vào bản thiết kế ngôi nhà hoặc người lau dọn đi qua (kể cả thực tập sinh hay nhà thầu phụ) đều có thể nhìn thấy mật mã đó và mang đi sao chép.
📊 HÌNH HỌA MINH HỌA (VISUAL FLOW): Hard-coded Secrets (Mã hóa cứng bí mật trong mã nguồn)
Source Code Không lưu Secret Vault / KMS Quản lý khóa tập trung Spring Boot Inject lúc Runtime Application Thực thi an toàn 🛡️ Quản trị bí mật: Hard-coded Secrets (Mã hóa cứng bí mật t
🧪 BƯỚC 2: PHÒNG THÍ NGHIỆM TƯƠNG TÁC (SANDBOX)
Mẫu thử nghiệm: Hardcode trong file .jsCommit file .env lên GitĐọc từ biến môi trường máy chủ
⚠️ Lộ mật khẩu trong mã nguồn: Chuỗi mật khẩu nhạy cảm nằm lộ thiên trong commit Git, bị công khai khi đẩy code lên kho lưu trữ!
⚖️ BƯỚC 3: SO SÁNH CODE LỖI VS CODE CHUẨN (JAVA / SPRING BOOT)
❌ Vulnerable Java Code (Không an toàn)
// THẢM HỌA: Viết cứng mật khẩu trong mã nguồn Java
public class DatabaseConfig {
    public static final String DB_PASSWORD = "SuperSecretPassword123!"; // Lộ trên Git!
}
✅ Secure Java Code (Chuẩn bảo mật)
// CHUẨN AN TOÀN: Đọc bí mật từ biến môi trường hoặc Vault
@Configuration
public class DatabaseConfig {
    @Value("${SPRING_DATASOURCE_PASSWORD}")
    private String dbPassword;
}
🎯 BƯỚC 4: THỬ TÀI THẤU HIỂU (ACTIVE CHECK)
Công cụ nào sau đây thường được cài đặt vào Git Hook (Pre-commit) để tự động quét và ngăn chặn lập trình viên vô tình commit API Key hoặc mật khẩu lên Git?
A. Gitleaks và TruffleHog
B. Photoshop
C. VLC Media Player
D. Excel
📝 Tóm tắt nhanh bằng lời của bạn (Feynman Notebook): (Tự động lưu vào trình duyệt)

#02 Secret Exposure (Các kênh rò rỉ bí mật phổ biến)

💡 BƯỚC 1: ẨN DỤ ĐỜI THƯỜNG (FEYNMAN ANALOGY)
Bạn cất tiền vào ví rất cẩn thận, nhưng mỗi khi thanh toán, bạn lại làm rơi hóa đơn có in đầy đủ số thẻ tín dụng ra sàn nhà (ghi log nhạy cảm), hoặc để tiền lòi ra ngoài mép túi áo (hiển thị trên trang lỗi web). Kẻ xấu không cần móc ví bạn, chỉ cần đi sau lưng nhặt những mẩu giấy bạn đánh rơi.
📊 HÌNH HỌA MINH HỌA (VISUAL FLOW): Secret Exposure (Các kênh rò rỉ bí mật phổ biến)
Source Code Không lưu Secret Vault / KMS Quản lý khóa tập trung Spring Boot Inject lúc Runtime Application Thực thi an toàn 🛡️ Quản trị bí mật: Secret Exposure (Các kênh rò rỉ bí mật p
🧪 BƯỚC 2: PHÒNG THÍ NGHIỆM TƯƠNG TÁC (SANDBOX)
Mẫu thử nghiệm: In token ra console.logHiển thị trong Stack Trace lỗi 500Lưu secret trong Docker Image build
⚠️ Rò rỉ qua Log: Token bí mật bị ghi vào file log tập trung (Datadog/Elasticsearch), hàng trăm nhân viên nội bộ có thể đọc được!
⚖️ BƯỚC 3: SO SÁNH CODE LỖI VS CODE CHUẨN (JAVA / SPRING BOOT)
❌ Vulnerable Java Code (Không an toàn)
// NGUY HIỂM: Ghi bí mật ra log hệ thống
log.info("Xác thực người dùng: {} với mật khẩu: {}", username, rawPassword);
✅ Secure Java Code (Chuẩn bảo mật)
// CHUẨN AN TOÀN: Mặt nạ hóa dữ liệu nhạy cảm trong Logback
log.info("Xác thực người dùng: {}", username); // Tuyệt đối không log credentials!
🎯 BƯỚC 4: THỬ TÀI THẤU HIỂU (ACTIVE CHECK)
Biện pháp nào sau đây giúp loại bỏ nguy cơ để lộ Secret trong các tầng (Layers) của Docker Image?
A. Sử dụng tính năng Docker Multi-stage Builds và cờ '--mount=type=secret' trong BuildKit để không lưu bí mật vào lịch sử image.
B. Dùng lệnh RUN rm /secret sau khi sử dụng.
C. Đổi tên file bí mật thành file ảnh.
D. Chỉ dùng Docker trên máy tính xách tay.
📝 Tóm tắt nhanh bằng lời của bạn (Feynman Notebook): (Tự động lưu vào trình duyệt)

#03 Secret Storage (Kho lưu trữ bí mật an toàn)

💡 BƯỚC 1: ẨN DỤ ĐỜI THƯỜNG (FEYNMAN ANALOGY)
Thay vì nhét chìa khóa dưới tấm thảm chùi chân (file .env trên máy chủ), bạn mang toàn bộ chìa khóa gửi vào chiếc két sắt thông minh của ngân hàng Thụy Sĩ (HashiCorp Vault, AWS Secrets Manager). Khi nào cần dùng chìa khóa, ứng dụng của bạn phải xuất trình giấy chứng nhận danh tính mã hóa để mượn chìa khóa trong vòng vài phút.
📊 HÌNH HỌA MINH HỌA (VISUAL FLOW): Secret Storage (Kho lưu trữ bí mật an toàn)
Source Code Không lưu Secret Vault / KMS Quản lý khóa tập trung Spring Boot Inject lúc Runtime Application Thực thi an toàn 🛡️ Quản trị bí mật: Secret Storage (Kho lưu trữ bí mật an to
🧪 BƯỚC 2: PHÒNG THÍ NGHIỆM TƯƠNG TÁC (SANDBOX)
Mẫu thử nghiệm: Lưu trong file .env không mã hóaHashiCorp Vault / AWS Secrets ManagerKubernetes Secret mã hóa KMS
⚠️ Lưu bí mật trong file .env phân tán: File nằm trên ổ đĩa máy chủ không được mã hóa, bất kỳ ai có quyền SSH đều đọc được!
⚖️ BƯỚC 3: SO SÁNH CODE LỖI VS CODE CHUẨN (JAVA / SPRING BOOT)
❌ Vulnerable Java Code (Không an toàn)
// NGUY HIỂM: Lưu mật khẩu dưới dạng plaintext trong application.properties
✅ Secure Java Code (Chuẩn bảo mật)
// CHUẨN AN TOÀN: Tích hợp HashiCorp Vault hoặc AWS Secrets Manager
// pom.xml: spring-cloud-starter-vault-config
// bootstrap.yml:
spring.cloud.vault:
  uri: https://vault.company.com:8200
  authentication: TOKEN
  token: ${VAULT_TOKEN}
🎯 BƯỚC 4: THỬ TÀI THẤU HIỂU (ACTIVE CHECK)
Tính năng mã hóa mặc định của đối tượng 'Secret' trong Kubernetes thuần (vanilla K8s) là gì?
A. Chỉ được mã hóa dạng Base64 (tức là không hề được bảo vệ mật mã và có thể giải mã ngay lập tức). Bắt buộc phải tích hợp thêm KMS Encryption Provider để mã hóa thực sự.
B. Được mã hóa bằng thuật toán RSA-4096 bất khả xâm phạm.
C. Được bảo vệ bằng mật khẩu sinh trắc học vân tay.
D. Tự động tiêu hủy sau 5 giây.
📝 Tóm tắt nhanh bằng lời của bạn (Feynman Notebook): (Tự động lưu vào trình duyệt)

#04 Secret Rotation (Xoay vòng bí mật định kỳ)

💡 BƯỚC 1: ẨN DỤ ĐỜI THƯỜNG (FEYNMAN ANALOGY)
Nếu bạn giữ nguyên một chiếc chìa khóa nhà trong suốt 20 năm, rất có thể chiếc chìa đó đã từng bị ai đó lén in dấu lại khi bạn gửi xe hay đưa cho thợ sửa ống nước. Secret Rotation là quy trình đổi ổ khóa và chìa mới định kỳ 30 ngày/lần. Dù kẻ gian có nhặt được chiếc chìa khóa cũ của tháng trước, chiếc chìa đó giờ đây chỉ là một mẩu kim loại vô dụng.
📊 HÌNH HỌA MINH HỌA (VISUAL FLOW): Secret Rotation (Xoay vòng bí mật định kỳ)
Source Code Không lưu Secret Vault / KMS Quản lý khóa tập trung Spring Boot Inject lúc Runtime Application Thực thi an toàn 🛡️ Quản trị bí mật: Secret Rotation (Xoay vòng bí mật định k
🧪 BƯỚC 2: PHÒNG THÍ NGHIỆM TƯƠNG TÁC (SANDBOX)
Mẫu thử nghiệm: Khóa dùng 5 năm không đổiXoay vòng thủ công bằng tayXoay vòng tự động không gián đoạn (Zero Downtime Rotation)
⚠️ Mật khẩu 3 năm chưa từng đổi: Khi một vụ rò rỉ dữ liệu cũ xảy ra, mật khẩu này vẫn mở được hệ thống của bạn ở thời điểm hiện tại!
⚖️ BƯỚC 3: SO SÁNH CODE LỖI VS CODE CHUẨN (JAVA / SPRING BOOT)
❌ Vulnerable Java Code (Không an toàn)
// NGUY HIỂM: Sử dụng khóa API cố định trong 5 năm không bao giờ đổi
✅ Secure Java Code (Chuẩn bảo mật)
// CHUẨN AN TOÀN: Hỗ trợ nạp động mật khẩu mới không cần restart ứng dụng
@RefreshScope
@Component
public class PaymentGatewayClient {
    @Value("${payment.api.key}")
    private String currentApiKey;
}
🎯 BƯỚC 4: THỬ TÀI THẤU HIỂU (ACTIVE CHECK)
Chiến lược 'Dual-key' (Hai khóa song song) giải quyết bài toán gì trong quy trình xoay vòng bí mật?
A. Cho phép hệ thống chấp nhận cả Token ký bằng khóa cũ và Token ký bằng khóa mới trong thời gian chuyển tiếp mà không làm gián đoạn trải nghiệm người dùng (Zero Downtime).
B. Bắt buộc người dùng phải gõ 2 mật khẩu cùng lúc.
C. Làm cho máy chủ chạy nhanh hơn 2 lần.
D. Nhân đôi dung lượng ổ đĩa.
📝 Tóm tắt nhanh bằng lời của bạn (Feynman Notebook): (Tự động lưu vào trình duyệt)

#05 Database Credentials & Dynamic Secrets (Thông tin kết nối CSDL)

💡 BƯỚC 1: ẨN DỤ ĐỜI THƯỜNG (FEYNMAN ANALOGY)
Thay vì cấp cho mỗi nhân viên một chiếc thẻ ra vào vĩnh viễn, bạn lắp chiếc máy in thẻ tự động. Mỗi khi nhân viên cần vào kho, máy in sinh ra một chiếc thẻ tạm thời chỉ sống đúng 1 tiếng đồng hồ rồi tự động hủy trên hệ thống. Dù nhân viên đó có mang thẻ về nhà hay làm mất thẻ, kho hàng vẫn an toàn tuyệt đối.
📊 HÌNH HỌA MINH HỌA (VISUAL FLOW): Database Credentials & Dynamic Secrets (Thông tin kết nối CSDL)
Source Code Không lưu Secret Vault / KMS Quản lý khóa tập trung Spring Boot Inject lúc Runtime Application Thực thi an toàn 🛡️ Quản trị bí mật: Database Credentials & Dynamic Secrets (
🧪 BƯỚC 2: PHÒNG THÍ NGHIỆM TƯƠNG TÁC (SANDBOX)
Mẫu thử nghiệm: User root dùng chung cho 20 appsMật khẩu database đổi 6 tháng/lầnDynamic Secret sinh tạm thời có TTL
⚠️ Dùng chung tài khoản database: 10 microservices cùng dùng chung user 'postgres_admin', một dịch vụ bị hack là toàn bộ database sụp đổ!
⚖️ BƯỚC 3: SO SÁNH CODE LỖI VS CODE CHUẨN (JAVA / SPRING BOOT)
❌ Vulnerable Java Code (Không an toàn)
// NGUY HIỂM: Dùng tài khoản 'root' hoặc 'sa' cho ứng dụng Spring Boot
✅ Secure Java Code (Chuẩn bảo mật)
// CHUẨN AN TOÀN: Dùng tài khoản tối thiểu đặc quyền & IAM DB Authentication
// AWS RDS IAM Authentication: Tự động xin token có hạn dùng 15 phút
🎯 BƯỚC 4: THỬ TÀI THẤU HIỂU (ACTIVE CHECK)
Lợi ích đột phá của cơ chế 'Dynamic Secrets' do các công cụ như HashiCorp Vault cung cấp là gì?
A. Tự động sinh tài khoản cơ sở dữ liệu độc nhất theo yêu cầu, có thời hạn sống ngắn (TTL), và tự động xóa bỏ khi hết hạn mà không cần con người can thiệp.
B. Tự động viết code SQL cho lập trình viên.
C. Không cần cài đặt cơ sở dữ liệu.
D. Biến cơ sở dữ liệu MySQL thành MongoDB.
📝 Tóm tắt nhanh bằng lời của bạn (Feynman Notebook): (Tự động lưu vào trình duyệt)

#06 Private Keys & Certificate Security (Bảo mật khóa riêng tư)

💡 BƯỚC 1: ẨN DỤ ĐỜI THƯỜNG (FEYNMAN ANALOGY)
Private Key giống như con dấu mộc bằng vàng ròng của Hoàng đế dùng để đóng dấu sắc lệnh quốc gia. Nếu con dấu mộc đó bị một vị tướng làm mất hoặc để quên ở quán rượu, kẻ thù có thể tự đóng dấu lên lệnh xuất quân để tiêu diệt đất nước. Con dấu mộc đó phải được cất trong căn hầm bất khả xâm phạm gọi là HSM (Hardware Security Module).
📊 HÌNH HỌA MINH HỌA (VISUAL FLOW): Private Keys & Certificate Security (Bảo mật khóa riêng tư)
Source Code Không lưu Secret Vault / KMS Quản lý khóa tập trung Spring Boot Inject lúc Runtime Application Thực thi an toàn 🛡️ Quản trị bí mật: Private Keys & Certificate Security (Bảo
🧪 BƯỚC 2: PHÒNG THÍ NGHIỆM TƯƠNG TÁC (SANDBOX)
Mẫu thử nghiệm: id_rsa cấp quyền chmod 777Lưu Private Key trong GitBảo vệ bằng Hardware Security Module (HSM)
⚠️ File Private Key cấp quyền 777: Bất kỳ tiến trình hoặc người dùng nào trên máy chủ cũng có thể sao chép chiếc khóa riêng tư tối mật này!
⚖️ BƯỚC 3: SO SÁNH CODE LỖI VS CODE CHUẨN (JAVA / SPRING BOOT)
❌ Vulnerable Java Code (Không an toàn)
// NGUY HIỂM: Để file private.key trong thư mục src/main/resources
✅ Secure Java Code (Chuẩn bảo mật)
// CHUẨN AN TOÀN: Lưu khóa riêng tư trong Java KeyStore (PKCS12) có mật khẩu
KeyStore ks = KeyStore.getInstance("PKCS12");
ks.load(new FileInputStream("/etc/ssl/app.p12"), keystorePass.toCharArray());
PrivateKey privateKey = (PrivateKey) ks.getKey("app-key", keyPass.toCharArray());
🎯 BƯỚC 4: THỬ TÀI THẤU HIỂU (ACTIVE CHECK)
Tiêu chuẩn phần cứng bảo mật quốc tế phổ biến nào được sử dụng để đánh giá độ an toàn của các thiết bị lưu trữ khóa bí mật (HSM)?
A. FIPS 140-2 / FIPS 140-3
B. ISO 9001
C. IEEE 802.11
D. Bluetooth 5.0
📝 Tóm tắt nhanh bằng lời của bạn (Feynman Notebook): (Tự động lưu vào trình duyệt)

#07 API Key Lifecycle & Permissions (Vòng đời & Phạm vi API Key)

💡 BƯỚC 1: ẨN DỤ ĐỜI THƯỜNG (FEYNMAN ANALOGY)
Nếu bạn đưa cho người giúp việc chìa khóa phòng khách để họ dọn dẹp, bạn không nên cho phép chiếc chìa đó mở được cả két sắt và tài khoản chứng khoán của bạn. API Key phải được thu hẹp phạm vi quyền hạn (Scoping) và gắn liền với địa chỉ IP nhà bạn.
📊 HÌNH HỌA MINH HỌA (VISUAL FLOW): API Key Lifecycle & Permissions (Vòng đời & Phạm vi API Key)
Source Code Không lưu Secret Vault / KMS Quản lý khóa tập trung Spring Boot Inject lúc Runtime Application Thực thi an toàn 🛡️ Quản trị bí mật: API Key Lifecycle & Permissions (Vòng đờ
🧪 BƯỚC 2: PHÒNG THÍ NGHIỆM TƯƠNG TÁC (SANDBOX)
Mẫu thử nghiệm: API Key Full Quyền AdminAPI Key không giới hạn IPAPI Key giới hạn Scope + IP Whitelist
⚠️ API Key không giới hạn: Nếu bị lộ, hacker có thể xóa sạch cơ sở dữ liệu và kích hoạt thanh toán toàn bộ tài khoản!
⚖️ BƯỚC 3: SO SÁNH CODE LỖI VS CODE CHUẨN (JAVA / SPRING BOOT)
❌ Vulnerable Java Code (Không an toàn)
// NGUY HIỂM: Tạo API key không có thời hạn hết hạn và không thể thu hồi
✅ Secure Java Code (Chuẩn bảo mật)
// CHUẨN AN TOÀN: API Key gắn thời hạn TTL và trạng thái is_revoked trong CSDL
🎯 BƯỚC 4: THỬ TÀI THẤU HIỂU (ACTIVE CHECK)
Biện pháp phòng hộ nào giúp giảm thiểu tối đa thiệt hại khi một API Key vô tình bị lộ ra ngoài internet?
A. Giới hạn quyền hạn (Scope) ở mức tối thiểu cần thiết và giới hạn danh sách địa chỉ IP (IP Whitelisting) được phép sử dụng khóa đó.
B. Đổi màu giao diện trang web.
C. Khởi động lại máy tính người dùng.
D. Tắt nguồn điện của màn hình.
📝 Tóm tắt nhanh bằng lời của bạn (Feynman Notebook): (Tự động lưu vào trình duyệt)

#08 Access Token Storage Patterns (Mô hình lưu trữ Access Token)

💡 BƯỚC 1: ẨN DỤ ĐỜI THƯỜNG (FEYNMAN ANALOGY)
Bạn vừa nhận được một thỏi vàng nhỏ (Access Token). Nếu bạn để thỏi vàng ở bệ cửa sổ ngoài hiên nhà (localStorage của trình duyệt), bất kỳ đứa trẻ nào thò tay qua khe cửa (lỗ hổng XSS) cũng nhặt được thỏi vàng đó. Nơi an toàn nhất là gửi thỏi vàng vào két sắt âm tường chỉ có ngân hàng nhìn thấy qua khe nhỏ (Cookie HttpOnly + Secure).
📊 HÌNH HỌA MINH HỌA (VISUAL FLOW): Access Token Storage Patterns (Mô hình lưu trữ Access Token)
Source Code Không lưu Secret Vault / KMS Quản lý khóa tập trung Spring Boot Inject lúc Runtime Application Thực thi an toàn 🛡️ Quản trị bí mật: Access Token Storage Patterns (Mô hình l
🧪 BƯỚC 2: PHÒNG THÍ NGHIỆM TƯƠNG TÁC (SANDBOX)
Mẫu thử nghiệm: Lưu trong LocalStorage (Dễ dính XSS)Lưu trong JS In-MemoryLưu trong HttpOnly Cookie
⚠️ Lưu Token trong LocalStorage: Một lỗ hổng XSS nhỏ xíu từ thư viện bên thứ 3 cũng đủ để hacker gọi localStorage.getItem('token') và đánh cắp tài khoản!
⚖️ BƯỚC 3: SO SÁNH CODE LỖI VS CODE CHUẨN (JAVA / SPRING BOOT)
❌ Vulnerable Java Code (Không an toàn)
// NGUY HIỂM: Lưu JWT Access Token trong localStorage (bị XSS đánh cắp)
✅ Secure Java Code (Chuẩn bảo mật)
// CHUẨN AN TOÀN: Lưu Access/Refresh Token trong Cookie HttpOnly, Secure, SameSite=Strict
🎯 BƯỚC 4: THỬ TÀI THẤU HIỂU (ACTIVE CHECK)
Vì sao khuyến nghị bảo mật OWASP hiện đại phản đối kịch liệt việc lưu trữ Authentication Token trong LocalStorage của trình duyệt?
A. Vì LocalStorage có thể được đọc bởi bất kỳ mã JavaScript nào chạy trên cùng tên miền; nếu website dính một lỗ hổng XSS (kể cả từ mã quảng cáo bên thứ 3), token sẽ bị đánh cắp tức thì.
B. Vì LocalStorage chỉ chứa được tối đa 10 ký tự.
C. Vì LocalStorage tự động xóa dữ liệu mỗi khi người dùng tắt máy tính.
D. Vì LocalStorage bị tính phí sử dụng theo tháng.
📝 Tóm tắt nhanh bằng lời của bạn (Feynman Notebook): (Tự động lưu vào trình duyệt)

#09 Secret Detection & CI/CD Pipeline Scanning (Quét bí mật tự động)

💡 BƯỚC 1: ẨN DỤ ĐỜI THƯỜNG (FEYNMAN ANALOGY)
Trước khi một chiếc máy bay cất cánh (triển khai ứng dụng lên Production), các cổng kiểm tra an ninh quét X-quang toàn bộ hành lý để phát hiện xem có ai vô tình hay cố ý mang vũ khí/chất nổ (khóa bí mật) lên khoang hay không. Quy trình CI/CD tích hợp công cụ quét bí mật sẽ tự động từ chối bản build và gửi cảnh báo ngay nếu phát hiện chuỗi secret rò rỉ.
📊 HÌNH HỌA MINH HỌA (VISUAL FLOW): Secret Detection & CI/CD Pipeline Scanning (Quét bí mật tự động)
Source Code Không lưu Secret Vault / KMS Quản lý khóa tập trung Spring Boot Inject lúc Runtime Application Thực thi an toàn 🛡️ Quản trị bí mật: Secret Detection & CI/CD Pipeline Scanni
🧪 BƯỚC 2: PHÒNG THÍ NGHIỆM TƯƠNG TÁC (SANDBOX)
Mẫu thử nghiệm: Push không qua kiểm traPipeline tích hợp TruffleHogGitHub Secret Scanning Alerts
⚠️ Pipeline không quét secret: Lập trình viên vô tình commit file private_key.pem và hệ thống tự động đẩy thẳng lên Production công khai!
⚖️ BƯỚC 3: SO SÁNH CODE LỖI VS CODE CHUẨN (JAVA / SPRING BOOT)
❌ Vulnerable Java Code (Không an toàn)
// THIẾU KIỂM SOÁT: Không có công cụ kiểm tra tự động trước khi git commit
✅ Secure Java Code (Chuẩn bảo mật)
// CHUẨN AN TOÀN: Cấu hình pre-commit hook với Gitleaks hoặc TruffleHog
# .pre-commit-config.yaml
repos:
  - repo: https://github.com/gitleaks/gitleaks
    rev: v8.18.2
    hooks:
      - id: gitleaks
🎯 BƯỚC 4: THỬ TÀI THẤU HIỂU (ACTIVE CHECK)
Kỹ thuật 'Entropy Scanning' mà các công cụ quét bí mật sử dụng hoạt động dựa trên nguyên lý nào?
A. Đo độ ngẫu nhiên hỗn loạn của chuỗi ký tự (Shannon Entropy); các mật khẩu mạnh hoặc mã hóa mật mã thường có độ ngẫu nhiên rất cao khác biệt hoàn toàn so với ngôn ngữ tiếng Anh tự nhiên.
B. Đếm số dòng của file code.
C. Đo nhiệt độ của CPU máy tính.
D. Kiểm tra màu sắc của logo dự án.
📝 Tóm tắt nhanh bằng lời của bạn (Feynman Notebook): (Tự động lưu vào trình duyệt)