Dấu thời gian không được mã hóa và phải nằm trong tiêu đề xà phòng.
<wsu:Timestamp wsu:Id="timestamp">
<wsu:Created>2014-07-01T11:30:28.123+05:30</wsu:Created>
<wsu:Expires>2014-07-01T11:35:28.123+05:30</wsu:Expires>
</wsu:Timestamp>
Nếu hết hạn thời gian sau thời gian tạo, nó có thể giảm thiểu tấn công phát lại. Thực ra nó không chỉ là dấu thời gian. Bạn nên thêm thông báo của dấu thời gian vào phần SignedInfo.
<ds:Reference URI="#timestamp">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
<InclusiveNamespaces PrefixList="wsse soap" xmlns="http://www.w3.org/2001/10/xml-exc-c14n#"/>
</ds:Transform>
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
<ds:DigestValue>TGgFBvglhb+jZCvjV0+oVnNaivpVBp5iVbJEqkTfaCU=</ds:DigestValue>
</ds:Reference>
Vì vậy, ở phía máy chủ, các thông báo này phải khớp nhau. Thậm chí đó không phải là tất cả, sau đó bạn đăng nhập signInfo toàn bộ với khóa riêng và thêm giá trị chữ ký cho phần tử Signature như sau.
<ds:SignatureValue>jdO5GIZ9v1VTngFZcMpz5hz62RwToq2W24A9KhJ5JNySZW1AHhd3s+eTduZZPD0Ok6Wtgzu5kquK
IinPdi5IbGjlg6mXGDbVkLd79RBdnbzFxsJFBtRr9r3mQZp9xfU7zSJW3kbizz6Jjk3h+S2nNbUu
f7rFrNN53ciRtj9RlKzQzmW7BDaFuq18DUfcr70muSkmd4DIqxYDGScjEjgIqLE2pYwIdDDRUGPD
MuwuIN3DgB051QwcE75SVrKBKsTHmFADmN3nKzmQ/JUQuLot0vW6WUFRMLVlAcl5C09SGPOcpow2
kjbuWx/bI7Aj4nAaAnmAYsWKIA3xVao+nPBOWmM0Lg7kpC4Dr5DwahmjH0/78aVUU23DEiMc0kR0
YDg5CxD8MUuj24w8tAjuzoHrvcsIYw+vWCTKvucnXwTlZ+K3QFB6gkct2zVOyQeYaPpkAnmPYS3W
DDpNmsx3lDcNr+5QWTsUbSQaFDddjHT/zoOJ8+iZKY/RujOI5vfXVwgN</ds:SignatureValue>
Bây giờ chúng tôi có thể đảm bảo rằng không thể thực hiện lại các cuộc tấn công phát lại. Vì bất kỳ ai khác không thể có cùng khóa riêng và do đó không có cách nào để thay đổi dấu thời gian và vẫn có chữ ký hợp lệ.
Giá trị của dấu thời gian được mã hóa chưa? Làm thế nào để máy chủ xác nhận rằng yêu cầu gửi đến có dấu thời gian hợp lệ và nằm trong ngưỡng –
@Kunal - Giống như tôi đã nói, máy khách Hashes các tham số đầu vào và gửi băm cùng với các đầu vào. Các máy chủ băm như một tổng kiểm tra chống giả mạo. Máy chủ sử dụng khóa riêng tương ứng với khóa công khai của người dùng để tính toán giá trị băm của riêng chúng. Nếu hai băm phù hợp, thì bạn biết các giá trị được cung cấp là hợp pháp và không bị giả mạo. – Josh
@Kunal, không có dấu thời gian nào không được mã hóa và phải nằm trong tiêu đề xà phòng. – Don