320 likes | 334 Views
WS-SecureConversation. Xiuduan Fang. Agenda. Introduction Security Context Token Establishing Security Context Deriving Keys SecureCoversation in Action Conclusion References. Introduction to WS-SecureConversation. Why introduce WS-SecureConversation?.
E N D
WS-SecureConversation Xiuduan Fang
Agenda • Introduction • Security Context Token • Establishing Security Context • Deriving Keys • SecureCoversation in Action • Conclusion • References
Introduction to WS-SecureConversation • Why introduce WS-SecureConversation? • Consider the functions of WS-Security • message integrity • message confidentiality • single message authentication
Introduction to WS-SecureConversation • What if senders and receivers need to exchange multiple messages?
Introduction to WS-SecureConversation • A Feasible Solution • Encrypt all messages with a security token issued by a token issuing service. • Drawback: the size of each message can become a performance bottleneck.
Introduction to WS-SecureConversation • A Better Solution • WS-SecureConvsation • Similar to SSL • Introduce a security context • A SecurityContextToken is applied. Once created, the messages are smaller and can be processed faster by both ends.
Introduction to WS-SecureConversation • Goals • Define how security contexts are established • Specify how derived keys are computed and passed • Non-Goals • Define how trust is established or determined—that is done by WS-Trust
Introduction • Introduction • Security Context Token • Establishing Security Context • Deriving Keys • SecureConversation in Action • Conclusion • References
Security Context Token <SecurityContextToken> describes a security context.
Syntax of Security Context Token <wsse:SecurityContextToken wsu:Id="..."> <wsu:Identifier>...</wsu:Identifier> <wsu:Created>...</wsu:Created> <wsu:Expires>...</wsu:Expires> <wsse:Keys> <xenc:EncryptedKey Id=“…”>… </xenc:EncryptedKey> <wsse:SecurityTokenReference>... </wsse:SecurityTokenReference> ... </wsse:Keys> </wsse:SecurityContextToken>
Security Context Token Example <wsse:SecurityContextToken wsu:Id="SecurityToken- f3dfe69f-4bd6-41f9-b198-bb6247d14780"><wsu:Identifier>uuid:f1971e12-f402-433d-bf7d- 29c78a0a81eb </wsu:Identifier> <wsu:Created>2003-07-08T02:52:55Z</wsu:Created><wsu:Expires>2003-07-08T06:52:55Z</wsu:Expires> </wsse:SecurityContextToken>
Agenda • Introduction • Security Context Token • Establishing Security Context • Deriving Keys • SecureCoversation in Action • Conclusion • References
Establishing Security Context • A security context needs to be created and shared by the communicating parties before being used. • How? • created by a security token service (STS) • created by one of the communicating parties and propagated with a message • created through negotiation
<RequestSecurityToken> Example <S:Body wsu:Id="req"> <RequestSecurityToken> <TokenType>wsse:SecurityContextToken</TokenType> <RequestType>wsse:ReqIssue</RequestType> </RequestSecurityToken> </S:Body>
<RequestSecurityTokenResponse> Example <S:Body> <RequestSecurityTokenResponse> <RequestedSecurityToken> <wsse:SecurityContextToken> <wsu:Identifier>uuid:...</wsu:Identifier> </wsse:SecurityContextToken> </RequestedSecurityToken> <RequestedProofToken> <xenc:EncryptedKey Id="newProof"> ... </xenc:EncryptedKey> </RequestedProofToken> </RequestSecurityTokenResponse> </S:Body>
Way 2: Created by One of The Communicating Parties • Process • The initiator creates a security context token and sends it to the other parties in a message • The recipient can then choose whether or not to accept the security context token • Application • This model works when the sender is trusted to always create a new security context token.
Way 3: Created through Negotiation • Process • The initiating party sends a <RequestSecurityToken> request to the other party • A <RequestSecurityTokenResponse> is returned. • Repeat the above 2 steps until a final response containing a <SecurityTokenReference> and a <ProofTokenReference> is received. • Application • There is a need to negotiate among the participants on the contents of the security context token, such as the shared secret
Agenda • Introduction • Security Context Token • Establishing Security Context • Deriving Keys • SecureCoversation in Action • Conclusion • References
Deriving Keys • Once the context and secret have been established (authenticated), Derived Keys Mechanism can be used to compute derived keys for each key usage in the secure context. • Example • Four keys may be derived so that two parties can sign and encrypt using separate keys.
Deriving Keys • Algorithms • Using a common secret, parties may define different key derivations to use • Default: P_SHA-1 function (referred to as wsse:PSHA1) P_SHA1 (secret, label + seed)
Deriving Keys • The <DerivedKeyToken> element is used to indicate that the key for a specific security token is generated from the function of P_SHA-1. • Example <DerivedKeyToken> <SecurityTokenReference> <Reference URI=".../ctx1"/> </SecurityTokenReference> <Generation>2</Generation> </DerivedKeyToken>
Subsequent Derivation Example <DerivedKeyToken> <Properties> <Name>.../derivedKeySource</Name> <Label>NewLabel</Label> <Nonce>FHFE...</Nonce> </Properties> <Generation>3</Generation> </DerivedKeyToken> <DerivedKeyToken wsu:Id="newKey"> <SecurityTokenReference> <Reference URI=".../derivedKeySource"/> </SecurityTokenReference> <Generation>0</Generation> </DerivedKeyToken>
Agenda • Introduction • Security Context Token • Establishing Security Context • Deriving Keys • SecureCoversation in Action • Conclusion • References
SecureConversation In Action • Web Service Enhancements (WSE) 2.0 for .NET 2.0 improves the implementation of secure conversations in Web services architecture. • Demonstration
Agenda • Introduction • Security Context Token • Establishing Security Context • Deriving Keys • SecureCoversation in Action • Conclusion • References
Conclusion of WS-SecureConversation • The WS-SecureConversation specification defines extensions to allow security context establishment and sharing, and session key derivation.
Agenda • Introduction • Security Context Token • Establishing Security Context • Deriving Keys • SecureCoversation in Action • Conclusion • References
Primary References http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnglobspec/html/ws-secureconversation.asp Official specification describing WS-SecureConversation http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnwse/html/wssecdrill.asp A good reference that explains how to use Web Services Enhancements 2.0 to implement security, trust, and secure conversations in Web services architecture.
Secondary References http://www.microsoft.com/downloads/details.aspx?FamilyId=21FB9B9A-C5F6-4C95-87B7-FC7AB49B3EDD&displaylang=en The WSE 2.0 technology preview provides early access to new advanced Web services capabilities. http://msdn.microsoft.com/webservices/building/wse/default.aspx The latest advanced Web services capabilities to keep pace with the evolving Web services protocol specifications.