Hiểu các nguyên tắc chung về bảo mật, (tính toàn vẹn, xác thực, quyền hạn) và sau đó đọc một vài cuốn sách về cách mọi người đã lật đổ các trụ cột bảo mật này trong nhiều thiên niên kỷ và bạn sẽ đi được nửa đường.
Sau đó đọc một vài cuốn sách hay về chiến lược thiết kế và thử nghiệm và bạn sẽ học cách thiết kế khả năng kiểm tra vào kiến trúc của mình.
Bây giờ chúng ta đến điểm khi tôi nghĩ về bảo mật. Tôi đang suy nghĩ về cách tôi có thể xác thực nguồn dữ liệu, có vấn đề gì không nếu dữ liệu bị giả mạo, nguồn dữ liệu là ai, tôi chắc chắn về điều đó như thế nào? làm thế nào nó có thể bị thay đổi, v.v ...
Điều này ảnh hưởng đến thiết kế. Các tệp cấu hình có thể được mã hóa các phần chính hoặc các trường cụ thể có thể ở dạng văn bản rõ ràng với trường chữ ký được liên kết. Mọi thứ trở nên phức tạp hơn với các dịch vụ phải đối mặt với internet vì bạn sẽ mong đợi mức độ thù địch lớn hơn ở đó.
Sau đó, tại thử nghiệm, làm thế nào để bạn kiểm tra tất cả điều này. Mục nhập dữ liệu tối đa của bạn là gì, điều gì xảy ra nếu bạn đẩy phần mềm vượt quá các giới hạn đó, làm thế nào để xử lý nó? Nó tin tưởng cái gì? Làm thế nào bạn có thể giả mạo niềm tin đó?