Công cụ dành cho nhà phát triển · Máy tính hàm băm SHA
Dán bí mật vào các công cụ băm trực tuyến: Tại sao thông báo nên mang tính cục bộ
· Tại sao nó quan trọng
sha-256 bảo vệ quyền riêng tư browser-apis
Nếu một công cụ băm gửi thông tin đầu vào của bạn đến máy chủ của nó thì bí mật mà bạn đang băm đã rời khỏi máy của bạn. Bài đăng này giải thích rủi ro, cách Web Crypto khiến máy chủ trở nên không cần thiết và cách xác minh một công cụ là cục bộ.
Khóa API bạn đã băm để so sánh với tệp cấu hình — và nó đã đi đâu
Nhà phát triển cần băm khóa API để so sánh khóa đó với giá trị được lưu trữ trong cấu hình để họ tìm đến công cụ băm trực tuyến gần nhất. Họ dán khóa, nhấp vào nút và nhận thông báo. Hàm băm khớp nhau nên bài kiểm tra đã vượt qua. Điều họ có thể không nhận ra là khóa API đã rời khỏi máy của họ. Bất kỳ công cụ băm nào chạy trên máy chủ đều nhận được đầu vào văn bản gốc trước khi tính toán bất kỳ thông báo nào. Máy chủ có thể đăng nhập, lưu trữ, bán hoặc chuyển tiếp cho đối thủ cạnh tranh.
Sự lừa dối này rất tinh vi vì công cụ băm thực sự có thể tạo ra đầu ra chính xác và vẫn gửi đầu vào đến máy chủ. Hoạt động toán học của hàm băm không phụ thuộc vào vị trí, do đó, hàm băm phía máy chủ có tính chính xác về mặt mật mã ngay cả khi kiến trúc không an toàn. Kẻ tấn công không cần phải làm hỏng tính toán băm để giành chiến thắng; họ chỉ cần đầu vào văn bản gốc. Một nhà phát triển cho rằng công cụ băm là cục bộ vì kết quả đầu ra đúng là tin cậy sai thuộc tính.
Những gì một công cụ băm phía máy chủ nhận được - theo định nghĩa, đầu vào văn bản gốc đầy đủ trước khi bất kỳ thông báo nào được tính toán
Theo định nghĩa, một công cụ băm phía máy chủ yêu cầu đầu vào văn bản gốc làm đầu vào. Máy chủ nhận được nó qua HTTPS, điều này bảo vệ nó trong quá trình truyền nhưng chỉ cho đến khi đạt được máy chủ. Sau đó, bản rõ được máy chủ ghi lại, lưu trữ trong bộ nhớ trong quá trình băm, có khả năng được ghi vào đĩa và được đưa vào mọi bản sao lưu hoặc dấu vết giám sát mà máy chủ lưu giữ. Công ty điều hành máy chủ có thể đọc nhật ký và xem mọi bí mật đã từng được băm ở đó.
Cách khác là sử dụng Web Crypto, đây là cách triển khai mật mã của chính trình duyệt. Trên nguồn gốc an toàn, có nghĩa là HTTPS hoặc localhost, trình duyệt hiển thị crypto.subtle.digest, một hàm tính toán SHA-1, SHA-256, SHA-384 và SHA-512 tổng hợp hoàn toàn trong quy trình trình duyệt. Đầu vào không bao giờ rời khỏi thiết bị và không có máy chủ nào tham gia. Việc triển khai trình duyệt được kiểm tra bởi các nhà cung cấp trình duyệt, vá lỗi bởi các nhà cung cấp trình duyệt và chạy dưới dạng mã gốc được tối ưu hóa thay vì được cung cấp JavaScript.
Tại sao máy chủ không cần thiết — Web Crypto của chính trình duyệt tính toán mọi thông báo SHA-2 cục bộ
Việc xác minh rằng công cụ băm là cục bộ chỉ cần mở bảng điều khiển mạng DevTools và xem những gì công cụ này gửi qua mạng. Trong hầu hết các trình duyệt, DevTools mở bằng F12 hoặc Cmd+Option+I và tab Mạng là nơi để xem lưu lượng mạng. Khi tab mạng đang mở và công cụ băm hiển thị, hãy dán văn bản gốc, nhấp vào nút băm và xem điều gì sẽ xảy ra. Nếu sử dụng công cụ cục bộ, bảng mạng sẽ không hiển thị yêu cầu mới.
Phương pháp xác minh này hoạt động vì trình duyệt thực hiện hạn chế về cùng nguồn gốc. Trang có thể gửi yêu cầu đến nguồn gốc của chính nó mà không gây ra sự cố CORS, do đó, một công cụ cục bộ có thể gửi yêu cầu tới máy chủ trên cùng một miền nếu muốn. Khi một yêu cầu mạng xuất hiện trong bảng DevTools, điều đó chứng tỏ rằng công cụ này đang gửi dữ liệu đi đâu đó. Nhà phát triển kiểm tra điều này và thấy không có lưu lượng truy cập mạng có sự đảm bảo chắc chắn rằng đầu vào sẽ không rời khỏi trình duyệt. Công cụ tính hàm băm ToolAcre SHA tạo ra một bảng điều khiển mạng luôn trống khi băm.
Xác minh bằng bảng điều khiển mạng - dán, băm và xem không có yêu cầu nào
Chính sách bảo mật nội dung nghiêm ngặt có thể cung cấp sự đảm bảo bổ sung ngoài việc kiểm tra bảng điều khiển mạng. Chính sách bảo mật nội dung là tiêu đề HTTP mà máy chủ gửi, khai báo miền nào trình duyệt sẽ cho phép tải tập lệnh và thực hiện yêu cầu. Chính sách không cho phép tất cả các tập lệnh bên ngoài, tất cả các bảng định kiểu bên ngoài và tất cả các lần gửi biểu mẫu tới nguồn gốc bên ngoài sẽ hạn chế những gì một trang bị xâm phạm có thể thực hiện. Kẻ tấn công không thể gửi mã độc để gửi đầu vào đến máy chủ bên ngoài nếu chính sách cấm các yêu cầu bên ngoài.
Tiêu đề Chính sách bảo mật nội dung được gửi cùng với phản hồi HTTP và có thể được kiểm tra trong phần Tiêu đề phản hồi của tab Mạng DevTools. Một dòng như Content-Security-Policy: default-src 'self'; script-src 'self' tuyên bố rằng các tập lệnh chỉ có thể đến từ cùng một nguồn gốc. Chính sách chặt chẽ hơn bao gồm 'không có' tổ tiên khung sẽ ngăn trang được nhúng vào iframe, điều này sẽ chặn một vectơ tấn công nếu iframe độc hại cố gắng lấy cắp tiêu điểm. Những chi tiết này rất hữu ích để hiểu các biện pháp phòng vệ, nhưng việc kiểm tra bảng điều khiển mạng vẫn là xác minh chính.
CSP là phòng thủ có chiều sâu; các nguồn kho lưu trữ được đọc ở đây không thiết lập tiêu đề được triển khai
Một ví dụ hoạt động: dán khóa API từ AWS hoặc Azure vào máy tính hàm băm ToolAcre SHA để xác minh khóa đó dựa trên dấu vân tay được lưu trữ. Mở DevTools, chọn tab Mạng và đảm bảo nó đang ghi. Dán khóa API vào công cụ băm, chọn SHA-256 và nhấp vào hàm băm. Thông báo xuất hiện trong công cụ và bảng điều khiển mạng không hiển thị yêu cầu mới. Vectơ kiểm tra có sẵn trong tài liệu của công cụ để kiểm tra chéo độ chính xác của hàm băm nếu cần. Điểm mấu chốt là khóa API không bao giờ rời khỏi trình duyệt và giờ đây, thông báo tóm tắt có thể được so sánh với giá trị được lưu trữ mà không bao giờ tiết lộ bí mật.
Quy trình công việc này không đề cập đến việc tiện ích mở rộng của trình duyệt có bị xâm phạm hay không hoặc bản thân trình duyệt có bị xâm phạm hay không. Tiện ích mở rộng độc hại có quyền rộng rãi có thể xem tất cả lưu lượng truy cập, chặn nội dung trong bảng tạm và quan sát nội dung người dùng nhập. Một trình duyệt bị xâm nhập, do lỗ hổng zero-day hoặc do cài đặt độc hại, có thể bị buộc phải gửi dữ liệu đầu vào đi bất cứ đâu. Đối với những mối đe dọa này, không có công cụ web nào có thể bảo vệ được. Cách bảo vệ thích hợp là tin tưởng vào cài đặt trình duyệt, cập nhật trình duyệt và xem lại các tiện ích mở rộng đã cài đặt.
Ví dụ hoạt động: sử dụng điểm đánh dấu vô hại và kiểm tra các yêu cầu thay vì dán khóa API trực tiếp
Lời khuyên dành cho bất kỳ ai dán bí mật vào công cụ là hãy xác minh rằng công cụ đó là cục bộ trước khi dán. Đây là một bước đơn giản giúp loại bỏ rủi ro lớn nhất: người vận hành máy chủ, nhân viên, bản sao lưu và nhật ký của họ đều nhìn thấy bản rõ. Sử dụng bảng điều khiển mạng DevTools, theo dõi các yêu cầu bằng 0 và sau đó tin cậy vào công cụ để cung cấp bí mật. Công cụ tính hàm băm ToolAcre SHA được thiết kế để sử dụng theo cách này. Nó không lưu trữ gì, không tải lên gì và bảng Mạng vẫn trống.
Đối với các nhà phát triển đã dán bí mật vào các công cụ phía máy chủ, bước tiếp theo là xoay vòng các bí mật đó. Khóa API được gửi đến máy chủ không xác định sẽ được cho là đã bị xâm phạm. Nó nên được thu hồi và một cái mới nên được ban hành. Mật khẩu nên được thay đổi. Các phím SSH nên được thay thế. Đối với các bí mật tĩnh như khóa API cơ sở hạ tầng, đây là thao tác một lần. Đối với mã thông báo phiên hoặc thông tin xác thực tạm thời, việc xoay vòng sẽ tự động diễn ra khi mã thông báo hết hạn.
Điều này không bao gồm - tiện ích mở rộng trình duyệt và máy bị xâm nhập mà không công cụ web nào có thể chống lại
Xây dựng niềm tin vào các công cụ trực tuyến bắt đầu bằng việc hiểu nơi diễn ra tính toán và xác minh sự hiểu biết đó bằng các công cụ dành cho nhà phát triển trình duyệt. Bảng mạng là một tín hiệu rõ ràng: nếu dữ liệu rời khỏi trình duyệt, nó sẽ xuất hiện ở đó. Nếu không có yêu cầu nào chứa đầu vào thử nghiệm đặc biệt thì phiên đó sẽ cung cấp bằng chứng cho đường dẫn chuyển đổi cục bộ. Đây không phải là sự đảm bảo về các tiện ích mở rộng, mã trình duyệt bị xâm phạm hoặc việc triển khai trong tương lai. Việc kết hợp việc kiểm tra này với việc xem lại mã nguồn, nếu có, sẽ mang lại sự tin cậy.
Đối với các tổ chức đánh giá các công cụ mật mã để sử dụng với dữ liệu nhạy cảm, nguyên tắc vẫn giữ nguyên: xác minh rằng quá trình tính toán diễn ra ở nơi bạn kiểm soát nó. Đối với các cá nhân băm khóa API hoặc xác minh tệp, trước tiên hãy sử dụng kiểm tra bảng mạng. Đối với hệ thống sản xuất, hãy sử dụng HMAC hoặc chữ ký thay vì hàm băm đơn giản để xác thực. Công cụ tính hàm băm ToolAcre SHA là một công cụ để học tập và tính toán tổng hợp cục bộ. Nó không thích hợp để xác thực sản xuất.
Bài học rút ra: xác minh, sau đó tin cậy — máy tính băm ToolAcre SHA chạy trong trình duyệt của bạn, không tải lên gì và không lưu trữ gì giữa các lần truy cập
Nguyên tắc minh bạch là trọng tâm của phương pháp ToolAcre: mọi công cụ đều ghi lại những gì nó làm, những gì trình duyệt cung cấp và những gì nhà phát triển phải làm. Công cụ tính băm SHA ghi lại rằng nó sử dụng triển khai Web Crypto của trình duyệt cho SHA-256, SHA-384 và SHA-512 và nó không triển khai HMAC hoặc dẫn xuất khóa. Để băm, công cụ này rất chính xác. Để xác thực, các nhà phát triển phải tìm nơi khác. Sự rõ ràng này ngăn chặn sự nhầm lẫn phát sinh khi một công cụ duy nhất cố gắng làm quá nhiều việc.
Khi nhà phát triển thấy bảng điều khiển mạng trống và mã nguồn mở, mối quan hệ tin cậy đang có nền tảng vững chắc. Công cụ này thực hiện những gì nó tuyên bố: tính toán các hàm băm cục bộ bằng cách triển khai riêng của trình duyệt. Sau đó, nhà phát triển có thể đưa ra quyết định sáng suốt về việc liệu công cụ này có phù hợp với trường hợp sử dụng của họ hay không. Để xác minh khóa API, nó hoàn toàn phù hợp. Để xác thực sản phẩm, cần có HMAC. Để lưu trữ mật khẩu, cần có chức năng phái sinh khóa như Argon2id. Biết được những ranh giới này là bước đầu tiên để xây dựng hệ thống an toàn.