[MS-PPSEC]:
Peer-to-Peer Grouping Security Protocol

Intellectual Property Rights Notice for Open Specifications Documentation

§  Technical Documentation. Microsoft publishes Open Specifications documentation for protocols, file formats, languages, standards as well as overviews of the interaction among each of these technologies.

§  Copyrights. This documentation is covered by Microsoft copyrights. Regardless of any other terms that are contained in the terms of use for the Microsoft website that hosts this documentation, you may make copies of it in order to develop implementations of the technologies described in the Open Specifications and may distribute portions of it in your implementations using these technologies or your documentation as necessary to properly document the implementation. You may also distribute in your implementation, with or without modification, any schema, IDL’s, or code samples that are included in the documentation. This permission also applies to any documents that are referenced in the Open Specifications.

§  No Trade Secrets. Microsoft does not claim any trade secret rights in this documentation.

§  Patents. Microsoft has patents that may cover your implementations of the technologies described in the Open Specifications. Neither this notice nor Microsoft's delivery of the documentation grants any licenses under those or any other Microsoft patents. However, a given Open Specification may be covered by Microsoft Open Specification Promise or the Community Promise. If you would prefer a written license, or if the technologies described in the Open Specifications are not covered by the Open Specifications Promise or Community Promise, as applicable, patent licenses are available by contacting .

§  Trademarks. The names of companies and products contained in this documentation may be covered by trademarks or similar intellectual property rights. This notice does not grant any licenses under those rights. For a list of Microsoft trademarks, visit www.microsoft.com/trademarks.

§  Fictitious Names. The example companies, organizations, products, domain names, email addresses, logos, people, places, and events depicted in this documentation are fictitious. No association with any real company, organization, product, domain name, email address, logo, person, place, or event is intended or should be inferred.

Reservation of Rights. All other rights are reserved, and this notice does not grant any rights other than specifically described above, whether by implication, estoppel, or otherwise.

Tools. The Open Specifications do not require the use of Microsoft programming tools or programming environments in order for you to develop an implementation. If you have access to Microsoft programming tools and environments you are free to take advantage of them. Certain Open Specifications are intended for use in conjunction with publicly available standard specifications and network programming art, and assumes that the reader either is familiar with the aforementioned material or has immediate access to it.

Revision Summary

Date / Revision History / Revision Class / Comments /
01/29/2010 / 0.1 / Major / First Release.
03/12/2010 / 1.0 / Major / Updated and revised the technical content.
04/23/2010 / 1.0.1 / Editorial / Revised and edited the technical content.
06/04/2010 / 1.0.2 / Editorial / Revised and edited the technical content.
07/16/2010 / 1.1 / Minor / Clarified the meaning of the technical content.
08/27/2010 / 1.2 / Minor / Clarified the meaning of the technical content.
10/08/2010 / 1.2 / No change / No changes to the meaning, language, or formatting of the technical content.
11/19/2010 / 2.0 / Major / Significantly changed the technical content.
01/07/2011 / 2.0 / No change / No changes to the meaning, language, or formatting of the technical content.
02/11/2011 / 3.0 / Major / Significantly changed the technical content.
03/25/2011 / 3.0 / No change / No changes to the meaning, language, or formatting of the technical content.
05/06/2011 / 3.0 / No change / No changes to the meaning, language, or formatting of the technical content.
06/17/2011 / 3.1 / Minor / Clarified the meaning of the technical content.
09/23/2011 / 4.0 / Major / Significantly changed the technical content.
12/16/2011 / 5.0 / Major / Significantly changed the technical content.
03/30/2012 / 5.0 / No change / No changes to the meaning, language, or formatting of the technical content.
07/12/2012 / 5.0 / No change / No changes to the meaning, language, or formatting of the technical content.
10/25/2012 / 5.0 / No change / No changes to the meaning, language, or formatting of the technical content.
01/31/2013 / 5.0 / No change / No changes to the meaning, language, or formatting of the technical content.
08/08/2013 / 6.0 / Major / Significantly changed the technical content.
11/14/2013 / 6.0 / No change / No changes to the meaning, language, or formatting of the technical content.
02/13/2014 / 6.0 / No change / No changes to the meaning, language, or formatting of the technical content.

2/2

[MS-PPSEC] — v20140124

Peer-to-Peer Grouping Security Protocol

Copyright © 2014 Microsoft Corporation.

Release: Thursday, February 13, 2014

Contents

1 Introduction 7

1.1 Glossary 7

1.2 References 8

1.2.1 Normative References 8

1.2.2 Informative References 9

1.3 Overview 9

1.3.1 P2P Graphing Constraints 9

1.3.2 Group Security 9

1.3.2.1 Peer Names 10

1.3.2.2 Certificates 10

1.3.2.3 Roles 10

1.3.2.4 PNRP Publication 10

1.3.2.5 Joining a Group 10

1.3.3 Group Connect Subprotocol 11

1.3.4 Record Subprotocol 11

1.3.4.1 Receiving a Record 11

1.3.4.2 Publishing a Record 11

1.3.4.3 Security Records 11

1.3.5 OOB XML 11

1.4 Relationship to Other Protocols 12

1.5 Prerequisites/Preconditions 12

1.6 Applicability Statement 12

1.7 Versioning and Capability Negotiation 13

1.8 Vendor-Extensible Fields 13

1.9 Standards Assignments 13

2 Messages 14

2.1 Transport 14

2.2 Message Syntax 14

2.2.1 Common Syntax 14

2.2.1.1 PNRP Cloud Name 14

2.2.1.1.1 Global Cloud 14

2.2.1.1.2 Non-global Public Cloud 14

2.2.1.1.3 Private Cloud 14

2.2.1.2 Password Hash String 15

2.2.2 Group Connect 15

2.2.2.1 Hello 16

2.2.2.2 MyGMC 16

2.2.2.3 YourGMC 16

2.2.2.4 Password 17

2.2.3 Records 18

2.2.3.1 Security Properties 18

2.2.3.1.1 Password 21

2.2.3.2 Membership 22

2.2.4 Record Security Data 22

2.2.4.1 Signature Hash 23

2.2.5 X.509 Usage 26

2.2.5.1 Enhanced Key Usage 28

2.2.5.2 Certificate and Certificate Chain Validation 29

2.2.5.2.1 Certificate Signature and Signature validation. 29

2.2.5.2.2 Certificate Validity 29

2.2.5.2.3 Certificate Chain Validity 29

2.2.5.3 Roles 30

2.2.6 Out-of-band XML 30

2.2.6.1 Invitation 30

2.2.6.2 Identity 32

3 Protocol Details 33

3.1 Peer Details 33

3.1.1 Abstract Data Model 33

3.1.2 Timers 34

3.1.3 Initialization 34

3.1.4 Higher-Layer Triggered Events 35

3.1.4.1 Group Creation 35

3.1.4.2 Opening the PNRP Cloud 36

3.1.4.3 Connecting to a Group 37

3.1.4.4 Begin Listening 37

3.1.4.5 Publish New Credentials 38

3.1.4.6 Modify Security Properties 39

3.1.4.7 Record Publication 39

3.1.5 Processing Events and Sequencing Rules 39

3.1.6 Timer Events 39

3.1.7 Other Local Events 40

3.1.7.1 Record Publication 40

3.1.7.2 Record Received 41

3.1.7.3 Database Synchronized 42

3.1.7.4 Long Term Partition Repair 42

3.1.7.5 GMC Chain Creation 42

3.2 Group Connect Requestor Details 43

3.2.1 Abstract Data Model 43

3.2.2 Timers 43

3.2.3 Initialization 44

3.2.4 Higher-Layer Triggered Events 44

3.2.4.1 Connecting to a Group 44

3.2.5 Message Processing Events and Sequencing Rules 44

3.2.5.1 Receiving a Message During TLS Negotiation 44

3.2.5.2 Messages Received After TLS Negotiation Completion 44

3.2.5.2.1 Receiving Data 44

3.2.5.2.2 Receiving a Hello Message 44

3.2.5.2.3 Receiving a Hello + MyGMC Message 45

3.2.5.2.4 Receiving YourGMC Message 45

3.2.6 Timer Events 46

3.2.7 Other Local Events 46

3.2.7.1 TLS Negotiation Complete 46

3.2.7.2 Encrypting a Message 46

3.2.7.3 Decrypting a Message 47

3.3 Group Connect Authenticator Details 47

3.3.1 Abstract Data Model 47

3.3.2 Timers 47

3.3.3 Initialization 47

3.3.4 Higher-Layer Triggered Events 48

3.3.4.1 Group Listening for Incoming Connect 48

3.3.5 Message Processing Events and Sequencing Rules 48

3.3.5.1 Receiving a Message During TLS Negotiation 48

3.3.5.2 Receiving a Message After TLS Negotiation Has Completed 48

3.3.5.2.1 Receiving Data 48

3.3.5.2.2 Receiving a Hello Message 48

3.3.5.2.3 Receive Hello + MyGMC Message 49

3.3.5.2.4 Receive Hello + Password Message 50

3.3.5.2.5 Receive Password Message 50

3.3.6 Timer Events 51

3.3.7 Other Local Events 51

3.3.7.1 Completing TLS Negotiation 51

3.3.7.2 Encrypting a Message 51

3.3.7.3 Decrypting a Message 51

4 Protocol Examples 52

4.1 Establishing a Connection Using GMC Authentication 52

4.2 Establishing a Connection Using Password Authentication 52

5 Security 54

5.1 Security Considerations for Implementers 54

5.2 Index of Security Parameters 54

6 Appendix A: Product Behavior 55

7 Change Tracking 56

8 Index 57

2/2

[MS-PPSEC] — v20140124

Peer-to-Peer Grouping Security Protocol

Copyright © 2014 Microsoft Corporation.

Release: Thursday, February 13, 2014

1 Introduction

This document specifies the Peer-to-Peer Grouping protocol (P2P Grouping), which layers on top of the Peer-to-Peer Graphing Protocol [MS-PPGRH] and adds security and discovery services. Security is provided by way of record signing, group authentication, authorization, and connection encryption. Discovery is provided by the Peer Name Resolution Protocol [MS-PNRP].

Sections 1.8, 2, and 3 of this specification are normative and can contain the terms MAY, SHOULD, MUST, MUST NOT, and SHOULD NOT as defined in RFC 2119. Sections 1.5 and 1.9 are also normative but cannot contain those terms. All other sections and examples in this specification are informative.

1.1 Glossary

The following terms are defined in [MS-GLOS]:

big-endian
Coordinated Universal Time (UTC)
encryption key
enhanced key usage (EKU)
FILETIME
globally unique identifier (GUID)
little-endian
Unicode
UUID

The following terms are defined in [MS-PPGRH]:

Graph

The following terms are defined in [MS-PNRP]:

authority
classifier
cloud
Peer Identity
Peer Name
Secure Peer Name

The following terms are specific to this document:

Group: A Graph in which each node implements the Group security model.

Group Root Certificate (GRC): A self-signed certificate created by the group creator, which is the root of all GMC chains.

Group Membership Certificate (GMC): A certificate for a given identity within the group.

Group Membership Certificate (GMC) Chain: A chain of GMCs leading to the Group's GRC.

Identity Certificate (IDC): A self-signed certificate containing the public key for a given Peer Identity. An Identity Certificate is used for Identity exchange, and does not appear in a GMC chain.

initialization vector: A data block that some modes of AES cipher block operation require as an additional initial data input. See [SP800-38A] for detailed definition and usage.

P2P Graphing: An implementation of the Peer to Peer Graphing Protocol.

P2P Grouping: An implementation of the Peer to Peer Grouping Security Protocol.

PNRP: An implementation of the Peer Name Resolution Protocol [MS-PNRP].

PNRP Cloud Name: A string representing a PNRP cloud.

MAY, SHOULD, MUST, SHOULD NOT, MUST NOT: These terms (in all caps) are used as specified in [RFC2119]. All statements of optional behavior use either MAY, SHOULD, or SHOULD NOT.

1.2 References

References to Microsoft Open Specifications documentation do not include a publishing year because links are to the latest version of the documents, which are updated frequently. References to other documents include a publishing year when one is available.

A reference marked "(Archived)" means that the reference document was either retired and is no longer being maintained or was replaced with a new document that provides current implementation details. We archive our documents online [Windows Protocol].

1.2.1 Normative References

We conduct frequent surveys of the normative references to assure their continued availability. If you have any issue with finding a normative reference, please contact . We will assist you in finding the relevant information.

[FIPS197] FIPS PUBS, "Advanced Encryption Standard (AES)", FIPS PUB 197, November 2001, http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf

[IANAPORT] IANA, "Port Numbers", November 2006, http://www.iana.org/assignments/port-numbers

[MS-PNRP] Microsoft Corporation, "Peer Name Resolution Protocol (PNRP) Version 4.0".

[MS-PPGRH] Microsoft Corporation, "Peer-to-Peer Graphing Protocol".

[RFC1321] Rivest, R., "The MD5 Message-Digest Algorithm", RFC 1321, April 1992, http://www.ietf.org/rfc/rfc1321.txt

[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997, http://www.rfc-editor.org/rfc/rfc2119.txt

[RFC2315] Kaliski, B., "PKCS #7: Cryptographic Message Syntax Version 1.5", RFC 2315, March 1998, http://www.ietf.org/rfc/rfc2315.txt

[RFC2459] Housley, R., Ford, W., Polk, W., and Solo, D., "Internet X.509 Public Key Infrastructure Certificate and CRL Profile", RFC 2459, January 1999, http://www.ietf.org/rfc/rfc2459.txt

[RFC3174] Eastlake III, D., and Jones, P., "US Secure Hash Algorithm 1 (SHA1)", RFC 3174, September 2001, http://www.ietf.org/rfc/rfc3174.txt

[RFC3447] Jonsson, J., and Kaliski, B., "Public-Key Cryptography Standards (PKCS) #1: RSA Cryptography Specifications Version 2.1", RFC 3447, February 2003, http://www.ietf.org/rfc/rfc3447.txt

[RFC3513] Hinden, R., and Deering, S., "Internet Protocol Version 6 (IPv6) Addressing Architecture", RFC 3513, April 2003, http://www.ietf.org/rfc/rfc3513.txt

[RFC4007] Deering, S., Haberman, B., Jinmei, T., et al., "IPv6 Scoped Address Architecture", RFC 4007, March 2005, http://www.ietf.org/rfc/rfc4007.txt

[RFC4346] Dierks, T., and Rescorla, E., "The Transport Layer Security (TLS) Protocol Version 1.1", RFC 4346, April 2006, http://www.ietf.org/rfc/rfc4346.txt

[RFC4648] Josefsson, S., "The Base16, Base32, and Base64 Data Encodings", RFC 4648, October 2006, http://www.ietf.org/rfc/rfc4648.txt

[SP800-38A] National Institute of Standards and Technology. "Special Publication 800-38A, Recommendation for Block Cipher Modes of Operation: Methods and Techniques", December 2001, http://csrc.nist.gov/publications/nistpubs/800-38a/sp800-38a.pdf

1.2.2 Informative References

[MS-GLOS] Microsoft Corporation, "Windows Protocols Master Glossary".

1.3 Overview

P2P Grouping implements Group Security, which is a Graph Security Provider [MS-PPGRH]. Group Security provides two classes of security features: connection security and record security.

Connection security is implemented by the Group Connect subprotocol (see section 1.3.3), which provides authentication and message encryption within a connection secured by TLS [RFC4346].

Record security provides authorization and record integrity, by implementing record validation and record signing.

P2P Grouping adds publication and discovery of nodes by way of Peer Name Resolution Protocol (PNRP, as specified in [MS-PNRP]). When attempting to connect to a group, P2P Grouping uses PNRP to find an existing group member. When a node begins listening for connections from other group members, it publishes itself using PNRP. PNRP is also queried periodically when P2P Graphing notifies P2P Grouping that a new connection is to be formed to repair undetected long-term partitions.