T

constant-time-testing

bởi trailofbits

constant-time-testing là một skill thực tế để đánh giá mã mật mã về rò rỉ qua kênh thời gian. Hãy dùng skill constant-time-testing để kiểm tra các nhánh phụ thuộc bí mật, mẫu truy cập bộ nhớ và hành vi vi kiến trúc, rồi áp dụng hướng dẫn constant-time-testing tập trung cho quy trình Security Audit.

Stars5k
Yêu thích0
Bình luận0
Đã thêm7 thg 5, 2026
Danh mụcSecurity Audit
Lệnh cài đặt
npx skills add trailofbits/skills --skill constant-time-testing
Điểm tuyển chọn

Skill này đạt 76/100, tức là một ứng viên khá vững cho người dùng thư mục đang cần hướng dẫn về kiểm thử constant-time trong mã mật mã. Kho lưu trữ cung cấp đủ nội dung quy trình thực tế và bối cảnh chuyên môn để đáng cài đặt, dù người dùng nên chuẩn bị tự lần theo tài liệu vì thiếu script hỗ trợ và tự động hóa lúc cài đặt.

76/100
Điểm mạnh
  • Nhắm trực tiếp vào kiểm thử constant-time cho mã mật mã, nên có ngữ cảnh sử dụng và tín hiệu mục tiêu rất rõ.
  • Nội dung SKILL.md khá dày với 13 H2, 24 H3 và các khối mã, cho thấy đây là một quy trình thực sự chứ không phải tài liệu giữ chỗ.
  • Không có dấu hiệu placeholder hay thử nghiệm; tài liệu có tham chiếu repo/tệp và nhiều tín hiệu về quy trình/ràng buộc.
Điểm cần lưu ý
  • Không có lệnh cài đặt, script hay tệp hỗ trợ, nên tác nhân phải dựa vào hướng dẫn trong markdown thay vì chạy tự động.
  • Metadata mô tả rất ngắn, nên người dùng có thể phải đọc phần thân tài liệu để hiểu chính xác mức độ phù hợp và các giới hạn.
Tổng quan

Tổng quan về skill constant-time-testing

constant-time-testing là một skill thực tế để kiểm tra mã mật mã xem có rò rỉ qua kênh thời gian hay không. Hãy dùng constant-time-testing khi bạn cần xác minh liệu các nhánh phụ thuộc vào secret, mẫu truy cập bộ nhớ, hoặc hành vi vi kiến trúc có thể làm lộ khóa, nonce hay các giá trị nhạy cảm khác.

Ai nên dùng constant-time-testing

Skill này phù hợp nhất với kiểm toán viên bảo mật, kỹ sư crypto, và người review mã mật mã ở mức triển khai. Nó đặc biệt hữu ích khi bạn đã có sẵn code, một test harness, hoặc một đoạn hot path bị nghi ngờ, và cần một hướng dẫn constant-time-testing tập trung thay vì một checklist secure coding chung chung.

Nó giải quyết vấn đề gì

Công việc thực sự không phải là “hiểu timing attacks về mặt lý thuyết,” mà là “xác định xem code này có hành xử khác đi khi secret thay đổi hay không.” constant-time-testing giúp bạn biến câu hỏi đó thành một quy trình review lặp lại được: xác định input nhạy cảm, kiểm tra các đường đi mã mà chúng chi phối, và thiết kế test có thể phát hiện rò rỉ.

Vì sao nó hữu ích

Giá trị lớn nhất nằm ở sự cụ thể. Một skill constant-time-testing tốt sẽ dẫn bạn đến:

  • đúng các vùng code quan trọng nhất,
  • đúng kiểu so sánh và tra cứu thường gây rò rỉ,
  • và đúng bằng chứng cần có trước khi kết luận phát hiện đó có thật hay không.

Cách dùng skill constant-time-testing

Cài đặt và mở các file nguồn

Để cài constant-time-testing, thêm skill từ trailofbits/skills rồi đọc SKILL.md trước. Nếu bạn đang dùng nó trong một workflow với agent, hãy kiểm tra thêm các file lân cận trong repo định nghĩa hành vi hoặc quy ước trước khi viết prompt.

Bắt đầu với đúng dạng input

Skill này hiệu quả nhất khi bạn đưa vào một mục tiêu cụ thể, không phải một yêu cầu mơ hồ. Input tốt bao gồm:

  • repo hoặc đường dẫn file cần review,
  • các giá trị secret hoặc API call phải được giữ kín,
  • threat model, chẳng hạn attacker cục bộ, người quan sát timing từ xa, hoặc nhiễu benchmark,
  • và ngôn ngữ hay nền tảng, vì C, Rust, assembly, và code mức cao rò rỉ theo những cách khác nhau.

Một prompt tốt sẽ như thế này: “Dùng constant-time-testing trên src/crypto.rs để kiểm tra liệu verify_tag() có rẽ nhánh theo secret bytes hay không. Giả sử một attacker từ xa và báo cáo các điểm có khả năng rò rỉ, ý tưởng test, và các false positive.”

Quy trình review đề xuất

Một cách dùng constant-time-testing thực tế là:

  1. Xác định các secret và mọi đường đi code mà chúng ảnh hưởng.
  2. Tìm các nhánh, early return, tra cứu bảng, và các primitive có thời gian chạy biến thiên.
  3. Kiểm tra xem hành vi có thay đổi khi input phụ thuộc vào secret hay không.
  4. Tách rò rỉ thật khỏi nhiễu do compiler, runtime, hoặc đo đạc.
  5. Báo cáo kết quả kèm input cụ thể, vị trí code, và mức độ tin cậy.

Đọc trước để có kết quả tốt hơn

Ưu tiên SKILL.md, rồi đến mọi ví dụ constant-time checks, measurement scripts, hoặc policy notes trong repo. Nếu repo có nhiều target triển khai, hãy đọc target gần với stack production của bạn nhất trước để hướng dẫn constant-time-testing bám sát môi trường của bạn.

FAQ về skill constant-time-testing

constant-time-testing chỉ dành cho thư viện crypto thôi à?

Không. Nó áp dụng cho bất kỳ code nào mà timing phụ thuộc vào secret có thể gây ảnh hưởng, bao gồm kiểm tra xác thực, so sánh khóa, phân tích cú pháp các định dạng chứa secret, và logic giao thức. Trường hợp dùng constant-time-testing cho Security Audit rộng hơn nhiều so với mật mã thuần túy.

Có cần dựng sẵn môi trường benchmark trước khi dùng không?

Không phải lúc nào cũng cần. Bạn có thể bắt đầu bằng review tĩnh và các test có mục tiêu, rồi mới thêm phép đo timing nếu đường code trông đáng ngờ. Với nhiều cuộc audit, vòng đầu tiên chủ yếu là thu hẹp nơi có thể tồn tại rò rỉ.

Nó khác gì một prompt bình thường?

Một prompt bình thường thường chỉ hỏi giải thích chung về timing attacks. constant-time-testing mang tính hành động hơn: nó nhằm dẫn dắt việc review một codebase cụ thể, một secret cụ thể, và một threat model cụ thể, nên thường cho ra kết quả audit tốt hơn.

Khi nào không nên dùng?

Đừng dựa vào nó nếu bạn cần hạ tầng phân tích động đầy đủ, chứng minh hình thức, hoặc chứng nhận phụ thuộc phần cứng. Nó hữu ích nhất như một hướng dẫn review và test tập trung, không phải là vật thay thế cho các phương pháp bảo đảm sâu hơn.

Cách cải thiện skill constant-time-testing

Cung cấp cho skill các secret và invariant

Cách tăng chất lượng lớn nhất là nói rõ cái gì phải giữ bí mật và cái gì không được thay đổi. Hãy cho model biết giá trị nào là nhạy cảm, thao tác nào được phép biến đổi, và các đường code nào là then chốt về bảo mật. Điều đó giúp constant-time-testing chính xác hơn nhiều.

Chia sẻ vị trí code và mẫu đáng ngờ

Nếu bạn đã nghi ngờ một hàm, một nhánh, hay một bảng tra cứu, hãy chỉ thẳng vào đó. Ví dụ: “Kiểm tra verify(), ct_eq(), và phép tra cứu S-box trong src/aes.c.” Điều này giảm phỏng đoán và giúp đầu ra tập trung vào các đường rò rỉ có rủi ro cao nhất.

Hãy yêu cầu bằng chứng, không chỉ phán đoán

Kết quả tốt thường phải có một kế hoạch test cụ thể: các cặp input để so sánh, chỗ cần gắn instrumentation, tiêu chí nào được xem là rò rỉ, và cách diễn giải phép đo có nhiễu. Hãy yêu cầu rõ các đầu ra đó để câu trả lời đi xa hơn “có vẻ constant-time” hoặc “không constant-time.”

Lặp lại sau vòng đầu tiên

Dùng kết quả đầu tiên để tinh chỉnh phạm vi. Nếu nó chỉ ra một nhánh, hãy yêu cầu kiểm tra constant-time-testing hẹp hơn ngay trên hàm đó; nếu trông ổn, hãy kiểm tra các helper lân cận, tác động của compiler, hoặc hành vi đặc thù của nền tảng vẫn có thể làm rò rỉ.

Đánh giá & nhận xét

Chưa có đánh giá nào
Chia sẻ nhận xét của bạn
Đăng nhập để chấm điểm và để lại nhận xét cho skill này.
G
0/10000
Nhận xét mới nhất
Đang lưu...